我是新手。 現在我想emacs自動加載模式
自動啓動yasnippet自動完成gtags flymake模式
當我打開(PHP/JAVA/EL/...)文件。
我應該在我的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