2011-07-30 24 views
16

Tôi muốn chạy một móc cho các phần mở rộng tệp cụ thể (tức là không phải chế độ). Tôi có zero kinh nghiệm với elisp, vì vậy tôi chuyển hàng hóa-giáo phái mã này:Đuôi mở rộng tệp trong Emacs

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

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

(nên đặt orgtbl chế độ nhỏ cho các tập tin với hậu tố .cat và chèn văn bản "OK", tức là nó không phải chỉ là vấn đề thiết lập chế độ) . Thật không may nó không hoạt động.

Trả lời

17

Hãy thử điều này:

(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

Bạn có thể sử dụng lambda trong 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

Ông đang cố gắng thiết lập một chế độ nhỏ mặc dù, bạn phương pháp duy nhất làm việc cho chế độ chính không may. – bneil

+1

@bneil bạn có thể đặt mã tùy ý trong lambda, không có vấn đề gì nếu nó đặt chế độ chính, chế độ nhỏ hoặc thực hiện một số việc khác. –

+0

Tôi đang tìm cách bật hai chế độ cùng một lúc cho một loại tệp nhất định và trong khi tôi biết về 'chế độ tự động-alist', tôi không biết bạn có thể sử dụng' lambda's với nó. Điều này làm việc cho tôi, cảm ơn! –

Các vấn đề liên quan