2011-07-30 9 views
16

特定のファイル拡張子(つまりモードではない)に対してフックを実行したいと思います。私はelispのゼロ経験を持っているので、私は貨物カルトはこれをコード化:Emacsのファイル拡張フック

(defun set_tab_mode() 
    (when (looking-at-p "\\.cat") 
    (insert "OK") 
    (orgtbl-mode))) 

(add-hook 'find-file-hook 'set_tab_mode) 

(接尾辞の.catを持つファイルのマイナーモードをorgtbl設定する必要があり、それはのIE、「OK」テキストを挿入するだけでなく、モード設定の問題) 。 残念ながら、それは動作しません。

答えて

17

はこれを試してみてください:

(defun my-set-tab-mode() 
    (when (and (stringp buffer-file-name) 
      (string-match "\\.cat\\'" buffer-file-name)) 
    (insert "OK") 
    (orgtbl-mode))) 

(add-hook 'find-file-hook 'my-set-tab-mode) 
21

あなたはauto-mode-alistでラムダを使用することができます。

(add-to-list 'auto-mode-alist 
      '("\\.cat\\'" . (lambda() 
           ;; add major mode setting here, if needed, for example: 
           ;; (text-mode) 
           (insert "OK") 
           (turn-on-orgtbl)))) 
+1

彼はしかしマイナーモードを設定しようとしている、あなただけ残念なのメジャーモードのために働く方法です。 – bneil

+1

@bneilメジャーモード、マイナーモードなどを設定していても、ラムダに任意のコードを置くことができます。 –

+0

私はあるファイルタイプに対して2つのモードを一度に有効にする方法を探していました。私は 'auto-mode-alist'について知っていましたが、' lambda'を使うことはできませんでした。これは私のために働いた、ありがとう! –

関連する問題