2011-07-30 27 views
16

Belirli dosya uzantıları için (örneğin, modlar değil) bir kanca çalıştırmak istiyorum. Ben elisp sıfır deneyime sahip, bu yüzden kargo-kült bu kodlanmış:Dosya uzantısı kancası Emacs

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

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

(sonek .cat ile dosyalar için küçük modunu orgtbl ayarlamak Should ve bu kadar yani "Tamam" metin eklemek sadece bir mod ayar soru) . Maalesef çalışmıyor.

cevap

17

bu deneyin:

(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

Sen auto-mode-alist lambda kullanabilirsiniz: Gerçi küçük modunu ayarlamak için çalışıyor

(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

, sadece maalesef büyük modlar için çalışır sen yöntem konum. – bneil

+1

Eğer büyük mod, küçük mod ayarlarsa veya başka bir şey yaparsa, lambda rasgele kod koyabilirsiniz. –

+0

Belirli bir dosya türü için bir kerede iki modu açmanın bir yolunu arıyordum ve "auto-mode-alist" hakkında bilgi sahibi olurken, lambda'yı onunla kullanabileceğinizi bilmiyordum. Bu benim için çalıştı, teşekkürler! –