2

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)

谢谢

4

1 回答 1

5

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

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

为了让您了解 elisp,强烈建议您进行介绍。它随 emacs 一起提供,可以从 info system: 访问C-h i,然后查找 Elisp Introduction。

于 2012-04-18T16:41:22.697 回答