มีหลายวิธีในการระบุโหมดหลักสำหรับไฟล์ที่ไม่ต้องใช้นามสกุลดูที่การเลือกโหมดไฟล์ในคู่มือ
magic-mode-alist
ทั้งนี้ขึ้นอยู่กับชนิดของไฟล์ที่คุณกำลังเผชิญกับบางทีคุณสามารถใช้ โปรดทราบว่าauto-mode-alist
ไม่ จำกัด เฉพาะส่วนขยายที่ตรงกัน: คุณสามารถจับคู่ส่วนใด ๆ ของชื่อไฟล์หรือพา ธ
หากไฟล์ที่คุณจัดการไม่สอดคล้องกันเพียงพอสำหรับกลไกเหล่านั้นตัวเลือกหนึ่งคือเพิ่มauto-mode-alist
รายการที่ตรงกับชื่อไฟล์ทั้งหมดหรือจับคู่รูทพา ธ ของบางโครงการและเรียกใช้ฟังก์ชันที่กำหนดเองเพื่อจับคู่ชื่อกับโหมด
หากไฟล์ทั้งหมดในไดเรกทอรีที่กำหนดเป็นประเภทเดียวกันคุณสามารถใช้ตัวแปรไดเรกทอรีท้องถิ่นเพื่อตั้งค่าโหมด ตัวแปรไดเรกทอรีสามารถตั้งค่าได้ในไฟล์ init แทนที่จะเป็นไฟล์ .dir-locals - ดูรายละเอียดตัวแปรไดเรกทอรี
ปรับปรุง
นี่คือความพยายามอย่างรวดเร็วในการจัดการ alist ของคุณเองของชื่อไฟล์และโหมดหลัก
(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
ได้ หากมีกี่ของพวกเขาและคุณสามารถตรงกับพวกเขาผ่านการแสดงออกปกติคุณสามารถเพิ่ม regexpautomode-alist
ไป