Існує кілька способів визначити основний режим для файлу, який не покладається на розширення, див. Вибір режимів файлів у посібнику.
Залежно від типу файлів, з якими ви маєте справу, можливо, ви могли б використовувати magic-mode-alist
. Також зауважте, що auto-mode-alist
не обмежується збігом розширень: ви можете відповідати будь-якій частині імені файлу або шляху.
Якщо файли, з якими ви маєте справу, недостатньо сумісні для цих механізмів, один із варіантів - додати auto-mode-alist
записи, які відповідають всьому імені файлу, або відповідати кореневому шляху певного проекту та викликати спеціальну функцію, щоб відповідати імена режимам.
Якщо всі файли в даному каталозі одного типу, ви також можете використати змінну локального каталогу для встановлення режиму. Змінні каталоги можна встановити у вашому файлі init, а не у файлі .dir-localals - детальну інформацію див. У змінних каталогів .
Оновлення
Ось швидка спроба управління власним списком абсолютних імен файлів та основних режимів.
(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
. Якщо їх небагато, і ви можете зіставити їх за допомогою регулярного вираження, ви можете додати регулярне вираженняautomode-alist
.