2013-02-23 4 views
0

Я новичок. Теперь я хочуemacs режимы автозагрузки

авто запуска yasnippet автозаполнения gtags flymake режимы

, когда я открытии (/ PHP/Java эл/...) файл.

Что мне помещать в файл конфигурации emacs?

ответ

2

Как говорит Лиу, вы используете add-hook, чтобы указать, что действие будет выполняться, когда определенный режим запускается. Документация here. Крючки аналогичны событиям в C# или схеме наблюдателя в ООП.

Каждый режим должен определять крючок, который запускается при запуске этого режима, например. для режима с именем 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-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.

+0

+1 благодарит за вас совет про flycheck – jilen

+0

prog-mode-hook - это то, что я ищу – jilen

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))) 
+0

Если я хочу, чтобы авто запускать gtags для java, должен ли я также добавить (hook-hook-java-mode-hook xxxx)? В любом случае, чтобы включить любой файл (java/php/...) Я открываю? – jilen

+0

Да, только настройка в соответствии с режимом-крюком. – ryu

Смежные вопросы