फ़ाइल के लिए प्रमुख मोड की पहचान करने के कई तरीके हैं जो किसी एक्सटेंशन पर भरोसा नहीं करते हैं, मैनुअल में फ़ाइल मोड चुनना चुनना देखें ।
आप जिस प्रकार की फ़ाइलों के साथ काम कर रहे हैं, उसके आधार पर, शायद आप इसका उपयोग कर सकते हैं magic-mode-alist
। यह भी ध्यान दें कि auto-mode-alist
मिलान एक्सटेंशन तक सीमित नहीं है: आप फ़ाइल नाम या पथ के किसी भी भाग से मेल खा सकते हैं।
यदि आप जिन फ़ाइलों के साथ काम कर रहे हैं, वे उन तंत्रों के लिए पर्याप्त रूप से संगत नहीं हैं, तो एक विकल्प auto-mode-alist
प्रविष्टियों को जोड़ना है जो पूरे फ़ाइल नाम से मेल खाते हैं, या कुछ प्रोजेक्ट के रूट पथ से मेल खाते हैं और नामों के साथ मोड के लिए एक कस्टम फ़ंक्शन को कॉल करते हैं।
यदि दी गई डायरेक्टरी की सभी फाइलें एक ही प्रकार की हैं तो आप मोड को सेट करने के लिए डायरेक्टरी-लोकल वैरिएबल का भी उपयोग कर सकते हैं। निर्देशिका चर को एक .dir- स्थानीय फ़ाइल के बजाय आपकी init फ़ाइल में सेट किया जा सकता है - विवरण के लिए निर्देशिका चर देखें।
अपडेट करें
यहां निरपेक्ष फ़ाइल नामों और प्रमुख-मोडों के अपने स्वयं के मुट्ठी को प्रबंधित करने का एक त्वरित प्रयास है।
(defvar my-custom-mode-alist '())
(defvar my-custom-mode-alist-file (expand-file-name "custom-file-assoc" user-emacs-directory))
;; command to save the file->mode association of the current buffer
(defun save-file-mode-association ()
(interactive)
(when buffer-file-name
(add-to-list 'my-custom-mode-alist (cons buffer-file-name major-mode))
(write-custom-mode-alist my-custom-mode-alist-file)))
(defun write-custom-mode-alist (file)
(with-current-buffer (get-buffer-create " *Custom File Assocations*")
(goto-char (point-min))
(delete-region (point-min) (point-max))
(pp my-custom-mode-alist (current-buffer))
(condition-case nil
(write-region (point-min) (point-max) file)
(file-error (message "Can't write %s" file)))
(kill-buffer (current-buffer))
(message "Wrote custom file associations to file %s" file)))
(defun load-custom-mode-alist (file)
(when (file-exists-p file)
(with-current-buffer
(let ((enable-local-variables nil))
(find-file-noselect file))
(goto-char (point-min))
(setq my-custom-mode-alist (read (current-buffer)))
(setq auto-mode-alist (append auto-mode-alist my-custom-mode-alist))
(kill-buffer (current-buffer)))))
;; Load any custom file associations and add them to auto-mode-alist
(load-custom-mode-alist my-custom-mode-alist-file)
# -*- mode: conf -*-
और वह Emacs को उपयोग करने के लिए बंद कर देगाconf-mode
। यदि उनमें से कुछ हैं, और आप नियमित अभिव्यक्ति के माध्यम से उनका मिलान कर सकते हैं, तो आप regexp को जोड़ सकते हैंautomode-alist
।