Bir uzantıya dayanmayan bir dosyanın ana modunu tanımlamanın birkaç yolu vardır, kılavuzdaki Dosya Modlarını Seçme konusuna bakın .
Karşılaştığınız dosya türlerine bağlı olarak, belki de kullanabilirsiniz magic-mode-alist
. Ayrıca auto-mode-alist
, eşleşen uzantılarla sınırlı olmadığını unutmayın : dosya adının veya yolunun herhangi bir bölümü ile eşleşebilirsiniz.
Karşılaştığınız dosyalar bu mekanizmalar için yeterince tutarlı değilse, bir seçenek auto-mode-alist
tüm dosya adıyla eşleşen girişler eklemek veya bazı projelerin kök yoluyla eşleşmek ve adları modlarla eşleştirmek için özel bir işlev çağırmaktır.
Belirli bir dizindeki tüm dosyalar aynı türdeyse, modu ayarlamak için bir dizin-yerel değişkeni de kullanabilirsiniz. Dizin değişkenleri, .dir-locals dosyası yerine init dosyanızda ayarlanabilir; ayrıntılar için bkz. Dizin Değişkenleri .
Güncelleme
İşte mutlak dosya adları ve ana modlardan oluşan kendi listenizi yönetmeye yönelik hızlı bir girişim.
(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 -*-
ve Emacs'ı kullanmak için ipucu verirconf-mode
. Bunlardan azı varsa ve bunları normal ifade ile eşleştirebiliyorsanız, regexp öğesini ekleyebilirsinizautomode-alist
.