1

我以前从未编写过 emacs 函数,想知道是否有人可以帮助我入门。我想要一个函数,它需要一个突出显示的区域来解析它(通过“,”),然后使用已经内置在 emacs 中的另一个函数来评估每个块。

突出显示的代码可能看起来像这样:x <- function(w=NULL,y=1,z=20){}(r 代码),我想刮掉w=NULL, y=1z=20然后将每个已包含在 emacs 中的函数传递给每个。关于如何开始的任何建议?

4

1 回答 1

9

lisp 函数是使用定义的defun(你真的应该阅读elisp 介绍,它会为你节省很多时间——“一品脱的汗水可以节省一加仑的血”)。

要将单纯的功能转变为交互式命令(可以使用键调用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 缓冲区,将点(光标)放在一个函数上,比如说,mapcsplit-string,然后点击C-h f RET,您将看到一个*Help*缓冲区解释函数的作用。

您可以通过点击来评估函数定义C-M-x(不要忘记the-emacs-function-you-want-to-call-on-each-arg用有意义的东西替换),然后通过选择w=NULL,y=1,z=20和点击来测试M-x my-command RET

顺便说一句,C-h f my-command RET现在将显示Operate on each word in the region*Help*缓冲区中。

于 2013-06-13T02:50:51.283 回答