emacs如何解释以下语句

时间:2012-04-18 16:26:51

标签: emacs

https://stackoverflow.com/a/663636/391104

(defun my-c++-mode-hook ()
  (setq c-basic-offset 4)
  (c-set-offset 'substatement-open 0))
(add-hook 'c++-mode-hook 'my-c++-mode-hook)

根据我的调查,我只需要将上面的代码添加到我的.emacs中,然后它就会神奇地工作。

Q1> defun my-c++-mode-hook ()是什么意思? lisp中的函数定义?

Q2>以下行的用法是什么?我应该在哪里触发它,或者由emacs自动运行

(add-hook 'c++-mode-hook 'my-c++-mode-hook)

谢谢

1 个答案:

答案 0 :(得分:5)

Q1:是的,这是一个函数定义(因此defun)。第二个符号是名称,后缀为“-hook”,用于向人类表明它打算用作钩子。它可以(几乎)给出任意名称而不改变其行为。空()表示该函数不带参数。其他一切都是功能的主体。

Q2:基本上,这会将前一个函数的指针添加到启动c++-mode时调用的函数列表中。无论何时启动模式,Emacs都会查找模式挂钩,并运行其中的所有功能。函数定义和加号挂钩行都需要放在你的.emacs中,当你启动emacs时它们会自动运行。

为了包围elisp,强烈建议引入。它附带了emacs,可以从信息系统访问:C-h i,然后查找Elisp简介。