当前位置: 技术问答>linux和unix
问一下关于Elisp的问题(各位可任答一个或几个)
来源: 互联网 发布时间:2017-01-04
本文导语: 1.已知multiply-by-seven函数的代码如下: (defun multiply-by-seven (number) (interactive "p") (message "The result is %d" (* 7 number))) 书里面说:“在上面的例子中,multiply-by-seven函数使用"p"作为交互命令interactive的参量。这个参量...
1.已知multiply-by-seven函数的代码如下:
(defun multiply-by-seven (number)
(interactive "p")
(message "The result is %d" (* 7 number)))
书里面说:“在上面的例子中,multiply-by-seven函数使用"p"作为交互命令interactive的参量。这个参量告诉Emacs将你正在键入的C-u加上一个数字或META加上一个数字解释为一个命令,用来将这个数字作为参量传送给函数。”
==>如按文字所说,在定义了multiply-by-seven函数后,键入"C-u+数字"或"META+数字"后,什么都没反应,回显区也没有任何显示。是书里面解释错了呢,还是自己操作错了呢?
2.书里面说:“字符"r"是Emacs将位点所在区域的开始值和结束值作为函数的两个参量。用法如下:
(interactive "r")
==>所谓位点所在区域的开始值和结束值,是不是指编辑区的第一个字符的值(1),光标所在位置的值为结束值?
3.假如定义函数如下:
(defun append-to-buffer (buffer start end)
(interactive "BAppend to buffer:nr")
(let ((oldbuf (current-buffer)))
(save-excursion
(set-buffer (get-buffer-create buffer))
(insert-buffer-substring oldbuf start end))))
此append-to-buffer函数有3个参量:buffer、start、end==>(interactive "r")如何知道要将开始与结束值绑定于3个参量中的其中哪两个?
(defun multiply-by-seven (number)
(interactive "p")
(message "The result is %d" (* 7 number)))
书里面说:“在上面的例子中,multiply-by-seven函数使用"p"作为交互命令interactive的参量。这个参量告诉Emacs将你正在键入的C-u加上一个数字或META加上一个数字解释为一个命令,用来将这个数字作为参量传送给函数。”
==>如按文字所说,在定义了multiply-by-seven函数后,键入"C-u+数字"或"META+数字"后,什么都没反应,回显区也没有任何显示。是书里面解释错了呢,还是自己操作错了呢?
2.书里面说:“字符"r"是Emacs将位点所在区域的开始值和结束值作为函数的两个参量。用法如下:
(interactive "r")
==>所谓位点所在区域的开始值和结束值,是不是指编辑区的第一个字符的值(1),光标所在位置的值为结束值?
3.假如定义函数如下:
(defun append-to-buffer (buffer start end)
(interactive "BAppend to buffer:nr")
(let ((oldbuf (current-buffer)))
(save-excursion
(set-buffer (get-buffer-create buffer))
(insert-buffer-substring oldbuf start end))))
此append-to-buffer函数有3个参量:buffer、start、end==>(interactive "r")如何知道要将开始与结束值绑定于3个参量中的其中哪两个?
|
再看看吧 - =
“键入"C-u+数字"或"META+数字"后,什么都没反应”
键入数字前缀后面可以跟一个动作,你只"C-u+数字"或"META+数字"当然什么都没有了
只是考诉做事情做几遍,但你还没有考诉它要做什么事
比如 "C-u 8" + "C-b" 是向后移动8个字符,如果你没有"C-b"当没有操作了
命令等价的操作 "C-u 8" "M-x backward-char"
"M-x set-mark-command" 可以认为是区域的起始位置,当前点为结束位置
我是这么认为的
“键入"C-u+数字"或"META+数字"后,什么都没反应”
键入数字前缀后面可以跟一个动作,你只"C-u+数字"或"META+数字"当然什么都没有了
只是考诉做事情做几遍,但你还没有考诉它要做什么事
比如 "C-u 8" + "C-b" 是向后移动8个字符,如果你没有"C-b"当没有操作了
命令等价的操作 "C-u 8" "M-x backward-char"
"M-x set-mark-command" 可以认为是区域的起始位置,当前点为结束位置
我是这么认为的