2011-07-30 3 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) 

(orgtbl प्रत्यय .cat साथ फ़ाइलों के लिए नाबालिग मोड सेट और पाठ सम्मिलित "ठीक है", यह यानी चाहिए न केवल एक मोड सेट प्रश्न) । दुर्भाग्य से यह काम नहीं करता है।

उत्तर

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

@ बेनील आप लैम्बडा में मनमानी कोड डाल सकते हैं, इससे कोई फर्क नहीं पड़ता कि यह प्रमुख मोड, मामूली मोड सेट करता है या कुछ और चीज करता है। –

+0

मैं एक दिए गए फ़ाइल प्रकार के लिए एक बार में दो मोड चालू करने का एक तरीका ढूंढ रहा था, और जब मुझे 'ऑटो-मोड-एलीस्ट' के बारे में पता था, मुझे नहीं पता था कि आप इसके साथ 'लैम्ब्डा' का उपयोग कर सकते हैं। यह मेरे लिए काम किया, धन्यवाद! –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^