emacs自动加载模式
问题描述:
我是新手。 现在我想emacs自动加载模式
自动启动yasnippet自动完成gtags flymake模式
当我打开(PHP/JAVA/EL/...)文件。
我应该在我的emacs配置文件中放什么?
答
刘说,你用add-hook
指定动作被当特定模式下运行开始。文档here。挂钩类似于C#中的事件或OOP中的观察者模式。
每种模式都应该定义一个在该模式启动时运行的钩子,例如。对于模式名为的java模式有一个对应的钩子叫做java-mode-hook。 add-hook
让您连线的行动,这个钩子:
(add-hook 'java-mode-hook 'my-action)
您可以使用匿名lambda
功能来定义,动作到位,像这样:
(add-hook 'java-mode-hook (lambda() (message "hello from java-mode")))
每次启动这将打印信息java模式。
为此目的定义一个命名函数通常会更好。如果您使用命名函数,add-hook
将确保相同的函数不会被多次调用。
(defun hello()
(message "hello from java-mode"))
(add-hook 'java-mode-hook 'hello)
语言编辑模式从编程模式派生。如果您想在启动任何编程语言模式时运行动作,请将函数添加到prog-mode-hook
。
您需要手动配置自动完成模式要在使用它的每个模式对于每种模式,该模式添加到ac-modes
列表:
(add-to-list 'ac-modes 'java-mode)
作为一个侧面说明,你会想要使用flyspell-prog-mode
编程语言模式,所以您只能收到评论和字符串文字的拼写建议。
(defun on-prog-mode()
(flyspell-prog-mode t))
(add-hook 'prog-mode-hook 'on-prog-mode)
而且你可能会想使用flycheck来代替旧的flymake。 Flycheck正处于积极的发展阶段,并且有php的跳棋。
答
您可以添加,就像下面:
(global-auto-complete-mode t)
(yas-global-mode 1)
然后在下面相应的更新:
(add-hook 'php-mode-hook (lambda() (flyspell-mode 1)))
(add-hook 'php-mode-hook (lambda()(gtags-mode 1)))
+1谢谢您关于flycheck的建议 – jilen 2013-02-24 12:52:35
prog-mode-hook是我正在寻找的 – jilen 2013-02-26 01:49:30