Es gibt verschiedene Möglichkeiten, den Hauptmodus für eine Datei zu ermitteln, die nicht auf einer Erweiterung basiert. Weitere Informationen finden Sie unter Auswählen von Dateimodi im Handbuch.
Abhängig von der Art der Dateien, mit denen Sie sich befassen, können Sie möglicherweise die verwenden magic-mode-alist
. Beachten Sie auch, dass dies auto-mode-alist
nicht auf übereinstimmende Erweiterungen beschränkt ist: Sie können einen beliebigen Teil des Dateinamens oder Pfads abgleichen.
Wenn die Dateien, mit denen Sie sich befassen, für diese Mechanismen nicht konsistent genug sind, können Sie auto-mode-alist
Einträge hinzufügen , die mit dem gesamten Dateinamen oder dem Stammpfad eines Projekts übereinstimmen, und eine benutzerdefinierte Funktion aufrufen, um Namen mit Modi abzugleichen.
Wenn alle Dateien in einem bestimmten Verzeichnis vom gleichen Typ sind, können Sie auch eine verzeichnislokale Variable verwenden, um den Modus festzulegen. Verzeichnisvariablen können in Ihrer Init-Datei und nicht in einer DIR-Locals-Datei festgelegt werden. Weitere Informationen finden Sie unter Verzeichnisvariablen .
Aktualisieren
Hier ist ein kurzer Versuch, Ihre eigene Liste absoluter Dateinamen und Hauptmodi zu verwalten.
(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 -*-
, und das würde Emacs zur Verwendung verleitenconf-mode
. Wenn es nur wenige davon gibt und Sie sie über reguläre Ausdrücke abgleichen können, können Sie den regulären Ausdruck hinzufügenautomode-alist
.