Emacs Init: Set Default Major Mode
Set Default Major Mode for New Empty Buffer
This works for setting default mode for scratch buffer too.
Put this in your Emacs Init File:
;; example of setting a default major mode for new buffer (setq initial-major-mode 'python-mode) ;; other sample values ;; 'text-mode (for plain text) ;; 'emacs-lisp-mode ;; 'lisp-interaction-mode (the lisp mode used in scratch buffer) ;; 'python ;; 'js (JavaScript)
Remap a Default Major Mode to Another
- major-mode-remap-alist
-
an
Association List
for changing a default major mode to another.
In each element, key is the old mode symbol, value is the new symbol.
new in Emacs 29 (Released 2023-07)
(when (>= emacs-major-version 29) (push '(css-mode . xah-css-mode) major-mode-remap-alist))
Associate Major Mode by File Name Extension
Use auto-mode-alist to associate a major mode with file name extension.
auto-mode-alist is a built-in variable. Its value is a Association List . Each key is a Regular Expression string, and value is mode name symbol. 〔see Emacs: Show Variable Value〕
;; setup files ending in .html to open in xah-html-mode (push '("\\.html?\\'" . xah-html-mode) auto-mode-alist)
Remove File Extension Association
;; remove any file name suffix associated with js-mode (setq auto-mode-alist (rassq-delete-all 'js-mode auto-mode-alist))
;; check if js-mode is in the list (rassoc 'js-mode auto-mode-alist)
〔see Evaluate Emacs Lisp Code〕
💡 TIP:
There is really no need to remove items in
auto-mode-alist.
you can always just add items to the front by
push
.
Items in front have priority.
Associate Major Mode by First Line in File
The magic-mode-alist is variable with value a Association List, for associating first line of a file with a mode. 〔see Emacs: Show Variable Value〕 Use it like this:
;; example of associate a major mode by first line of file ;; case matters (push '("<!doctype html>" . xah-html-mode) magic-mode-alist) (push '("<!DOCTYPE html>" . xah-html-mode) magic-mode-alist)
How Emacs Determines Which Major Mode to Load
Emacs determines what mode to activate by the following mechanisms, in order. If a match is found, the process stops.
- Look for a special emacs-specific syntax in the file.
e.g. if first line in the file contains
-*- mode: xx-*-
, emacs loadsxx-mode
. (File Variables (Emacs Manual)) - Check the first line in the file for unix “shebang” syntax (e.g.
#!/usr/bin/perl
) and match it with interpreter-mode-alist. - Try to match first line text with magic-mode-alist.
- Match the file name with auto-mode-alist.