在emacs中使用当前缓冲区?

时间:2010-04-05 18:00:00

标签: emacs elisp

我正在使用emacs而且我编写了一个使用“current-buffer”的脚本。但是,emacs系统无法识别“当前缓冲区”。当我尝试“M - x current-buffer”时,我得到了回复:

不匹配

:知道我做错了吗?

3 个答案:

答案 0 :(得分:6)

current-buffer不是互动功能。也就是说,不能像您尝试的那样通过M-x以交互方式调用。您可以使用eval-expression直接执行非交互式lisp代码,如下所示:

M-: (current-buffer) RET

请注意,您必须输入正确的lisp表达式。如果你想捕获变量中的值,就像这样

M-: (setq xyzzy (current-buffer)) RET

会将当前缓冲区存储到变量xyzzy

答案 1 :(得分:2)

我是否正确地解释您已创建了一个名为current-buffer的函数,并希望M-x current-buffer可以使用该函数?

要使M-x function-name调用函数,需要将函数标记为交互式。

来自emacs manual的示例:

(defun multiply-by-seven (number)       ; Interactive version.
       "Multiply NUMBER by seven."
       (interactive "p")
       (message "The result is %d" (* 7 number)))

(interactive "p")部分使迷你缓冲区中的函数可以调用(通过M-x)。

答案 2 :(得分:0)

我听起来你也想知道如何以交互方式获取当前缓冲区的名称。使用M-: (buffer-name)