| [ < ] | [ > ] | [ << ] | [ 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] | [ ? ] |