我是新手。 现在我想
自动启动yasnippet自动完成gtags flymake模式
当我打开(php / java / el / ...)文件时。
我应该在emacs配置文件中添加什么内容?
答案 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)))