Ada sejumlah cara untuk mengidentifikasi mode utama untuk file yang tidak bergantung pada ekstensi, lihat Memilih Mode File di manual.
Tergantung pada jenis file yang Anda hadapi, mungkin Anda bisa menggunakan magic-mode-alist
. Perhatikan juga bahwa auto-mode-alist
tidak terbatas pada ekstensi yang cocok: Anda dapat mencocokkan bagian mana pun dari nama file atau jalur.
Jika file yang Anda hadapi tidak cukup konsisten untuk mekanisme tersebut, satu opsi adalah menambahkan auto-mode-alist
entri yang cocok dengan seluruh nama file, atau mencocokkan jalur root dari beberapa proyek dan memanggil fungsi kustom untuk mencocokkan nama dengan mode.
Jika semua file dalam direktori yang diberikan adalah tipe yang sama Anda juga bisa menggunakan variabel direktori-lokal untuk mengatur mode. Variabel direktori dapat diatur dalam file init Anda alih-alih dalam file .dir-locals - lihat Variabel Direktori untuk detailnya.
Memperbarui
Berikut adalah upaya cepat untuk mengelola daftar nama file absolut dan mode utama Anda sendiri.
(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 -*-
dan itu akan memberi tip pada Emacs untuk digunakanconf-mode
. Jika ada beberapa dari mereka, dan Anda dapat mencocokkannya melalui ekspresi reguler, Anda dapat menambahkan regexp keautomode-alist
.