我之前从未编写过emacs函数,并且想知道是否有人可以帮我入门。我希望有一个函数,它将突出显示的区域解析它(通过“,”),然后用已经内置到emacs中的另一个函数计算每个块。
突出显示的代码可能如下所示:x <- function(w=NULL,y=1,z=20){}
(r代码),我想抓取w=NULL
,y=1
和z=20
然后传递每个代码一个已包含在emacs中的功能。有关如何入门的任何建议?
答案 0 :(得分:9)
使用defun
定义了一个lisp函数(你真的应该读the elisp intro,它会为你节省很多时间 - “一滴汗水可以节省一加仑血“)。
要将一个单纯的函数转换为interactive command(可以使用 M-x 调用或绑定到某个键),可以使用interactive
。
要将区域(选择)传递给函数,请使用"r"
代码:
(defun my-command (beg end)
"Operate on each word in the region."
(interactive "r")
(mapc #'the-emacs-function-you-want-to-call-on-each-arg
;; split the string on any sequence of spaces and commas
(split-string (buffer-substring-no-properties beg end) "[ ,]+")))
现在,将上面的表单复制到*scratch*
emacs buffer,将点(光标)放在一个函数上,比如mapc
或split-string
,然后点击 Ch f RET < / kbd>,你会看到*Help*
buffer解释函数的功能。
您可以通过点到 CMx 来评估函数定义,同时点上它(不要忘记用有意义的东西替换the-emacs-function-you-want-to-call-on-each-arg
),然后选择{{ 1}}并点击 Mx my-command RET 。
顺便说一下, C-h f my-command RET 现在会在w=NULL,y=1,z=20
缓冲区中显示Operate on each word in the region
。