| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Based on information in the file name or in the file itself, Emacs automatically selects a major mode for the new buffer when a file is visited. It also processes local variables specified in the file text.
fundamental-mode function does not
run any hooks; you're not supposed to customize it. (If you want Emacs
to behave differently in Fundamental mode, change the global
state of Emacs.)
set-auto-mode,
then it runs hack-local-variables to parse, and bind or
evaluate as appropriate, the file's local variables.
If the find-file argument to normal-mode is non-nil,
normal-mode assumes that the find-file function is calling
it. In this case, it may process a local variables list at the end of
the file and in the `-*-' line. The variable
enable-local-variables controls whether to do so. See section `Local Variables in Files' in The GNU Emacs Manual, for
the syntax of the local variables section of a file.
If you run normal-mode interactively, the argument
find-file is normally nil. In this case,
normal-mode unconditionally processes any local variables list.
normal-mode uses condition-case around the call to the
major mode function, so errors are caught and reported as a `File
mode specification error', followed by the original error message.
auto-mode-alist), on the
`#!' line (using interpreter-mode-alist), or on the
file's local variables list. However, this function does not look for
the `mode:' local variable near the end of a file; the
hack-local-variables function does that. See section `How Major Modes are Chosen' in The GNU Emacs Manual.
fundamental-mode.
If the value of default-major-mode is nil, Emacs uses
the (previously) current buffer's major mode for the major mode of a new
buffer. However, if that major mode symbol has a mode-class
property with value special, then it is not used for new buffers;
Fundamental mode is used instead. The modes that have this property are
those such as Dired and Rmail that are useful only with text that has
been specially prepared.
default-major-mode. If that variable is nil, it uses
the current buffer's major mode (if that is suitable).
The low-level primitives for creating buffers do not use this function,
but medium-level commands such as switch-to-buffer and
find-file-noselect use it whenever they create buffers.
lisp-interaction-mode.
(regexp .
mode-function).
For example,
(("\\`/tmp/fol/" . text-mode)
("\\.texinfo\\'" . texinfo-mode)
("\\.texi\\'" . texinfo-mode)
("\\.el\\'" . emacs-lisp-mode)
("\\.c\\'" . c-mode)
("\\.h\\'" . c-mode)
...)
|
When you visit a file whose expanded file name (see section 25.8.4 Functions that Expand Filenames) matches a regexp, set-auto-mode calls the
corresponding mode-function. This feature enables Emacs to select
the proper major mode for most files.
If an element of auto-mode-alist has the form (regexp
function t), then after calling function, Emacs searches
auto-mode-alist again for a match against the portion of the file
name that did not match before. This feature is useful for
uncompression packages: an entry of the form ("\\.gz\\'"
function t) can uncompress the file and then put the uncompressed
file in the proper mode according to the name sans `.gz'.
Here is an example of how to prepend several pattern pairs to
auto-mode-alist. (You might use this sort of expression in your
init file.)
(setq auto-mode-alist
(append
;; File name (within directory) starts with a dot.
'(("/\\.[^/]*\\'" . fundamental-mode)
;; File name has no dot.
("[^\\./]*\\'" . fundamental-mode)
;; File name ends in `.C'.
("\\.C\\'" . c++-mode))
auto-mode-alist))
|
(interpreter . mode); for
example, ("perl" . perl-mode) is one element present by default.
The element says to use mode mode if the file specifies
an interpreter which matches interpreter. The value of
interpreter is actually a regular expression.
This variable is applicable only when the auto-mode-alist does
not indicate which major mode to use.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |