emacs的基本功能

时间:2013-06-12 22:45:34

标签: emacs elisp

我之前从未编写过emacs函数,并且想知道是否有人可以帮我入门。我希望有一个函数,它将突出显示的区域解析它(通过“,”),然后用已经内置到emacs中的另一个函数计算每个块。

突出显示的代码可能如下所示:x <- function(w=NULL,y=1,z=20){}(r代码),我想抓取w=NULLy=1z=20然后传递每个代码一个已包含在emacs中的功能。有关如何入门的任何建议?

1 个答案:

答案 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,将点(光标)放在一个函数上,比如mapcsplit-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