2010-10-04 45 views
1

我有一個emacs模式鉤碼如何在Emacs

(defun php-mode-hook() 
    (setq tab-width 4 
     c-basic-offset 4 
     c-hanging-comment-ender-p nil 
     indent-tabs-mode 
      (not 
      (and (string-match "/\\(PEAR\\|pear\\)/" (buffer-file-name)) 
       (string-match "\.php$" (buffer-file-name)))))) 

我需要確保每當我打開的Emacs內的PHP文件來調用這個函數.. 我已經安裝了PHP模式添加PHP模式掛鉤爲emacs以及在.emacs文件中添加此代碼,但它似乎沒有工作..誰能告訴我如何添加這樣的定製代碼爲emacs?

注:我最近遷移到Emacs的..請在回答更具描述性.. :)

更新代碼1

(add-hook 'php-mode-hook 
    '(lambda() 
    (setq tab-width 4 
     c-basic-offset 4 
     c-hanging-comment-ender-p nil 
     indent-tabs-mode 
     (not 
     (and (string-match "/\\(PEAR\\|pear\\)/" (buffer-file-name)) 
      (string-match "\.php$" (buffer-file-name))))))) 

回答

2

添加掛鉤,通過各種模式通常工作使用add-hook提供場所功能。你用你想要使用的鉤子的名字定義了一個函數。相反,你應該定義一個函數與另一個名稱,添加add-hook是到php-mode-hook

(defun my-php-settings() 
    ...) 

(add-hook 'php-mode-hook 'my-php-settings) 

事實上,你甚至不需要再創建一個命名函數:

(add-hook 'php-mode-hook 
      (lambda() 
      (setq tab-width 4 ...))) 
+0

喜RAFL !感謝您的回覆!我已經用你告訴的指導方針更新了代碼..但它似乎並沒有工作。我在哪裏錯了?我被要求將上面的代碼添加到emacs,以遵循PHP PEAR指南,我沒有編碼它..我也不知道lisp。 :| – 2010-10-04 05:12:12

+0

首先,沒有必要引用lambda。看看我給你的例子。另外,它不起作用?它整天坐在沙發上嗎?它會讓你面對面嗎? ;-)如果你沒有收到任何錯誤消息,你可能首先要檢查你的鉤子是否被執行。你可以通過執行'(message「鉤子調用」)'來檢查'* Messages *'緩衝區中的外觀。 – rafl 2010-10-04 05:16:27

+0

是啊!鉤子正在執行..但我看不到預期的行爲從鉤子..當我打開一個PHP文件和問題選項卡然後標籤寬度爲0,雖然它預計是4 – 2010-10-04 05:31:48