emacs自动加载模式

时间:2013-02-23 15:55:58

标签: emacs global yasnippet

我是新手。 现在我想

  

自动启动yasnippet自动完成gtags flymake模式

当我打开(php / java / el / ...)文件时。

  

我应该在emacs配置文件中添加什么内容?

2 个答案:

答案 0 :(得分:2)

正如liu所说,您使用add-hook指定在启动特定模式时运行操作。文档here。钩子类似于C#中的事件,或者OOP中的观察者模式

每个模式都应该定义一个在该模式启动时运行的钩子,例如。对于名为 java-mode 的模式,有一个名为 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模式。如果要在启动任何编程语言模式时运行操作,请将功能添加到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的检查器。

答案 1 :(得分:0)

你可以像下面一样添加:

(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)))