aboutsummaryrefslogtreecommitdiffstats
path: root/doc/lispref
diff options
context:
space:
mode:
authorJoakim Verona2011-08-30 09:50:25 +0200
committerJoakim Verona2011-08-30 09:50:25 +0200
commitb72c6fe2ac5f148b00ceed70a910c7c9ee6a669e (patch)
tree7c64545ae0d8f0d99b82134e04e43b0759d776bc /doc/lispref
parent9fb7b0cab34a48a4c7b66abb6b8edc4ee20467b4 (diff)
parent393aa9d403dda96b2fa061311cc76bbad40489cf (diff)
downloademacs-b72c6fe2ac5f148b00ceed70a910c7c9ee6a669e.tar.gz
emacs-b72c6fe2ac5f148b00ceed70a910c7c9ee6a669e.zip
upstream
Diffstat (limited to 'doc/lispref')
-rw-r--r--doc/lispref/ChangeLog25
-rw-r--r--doc/lispref/debugging.texi19
-rw-r--r--doc/lispref/display.texi55
-rw-r--r--doc/lispref/elisp.texi5
-rw-r--r--doc/lispref/files.texi64
-rw-r--r--doc/lispref/frames.texi17
-rw-r--r--doc/lispref/modes.texi337
-rw-r--r--doc/lispref/objects.texi10
-rw-r--r--doc/lispref/os.texi68
-rw-r--r--doc/lispref/vol1.texi7
-rw-r--r--doc/lispref/vol2.texi7
11 files changed, 328 insertions, 286 deletions
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index ca9c93b563d..57dde5ac4cb 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,28 @@
12011-08-29 Chong Yidong <cyd@stupidchicken.com>
2
3 * modes.texi (Basic Major Modes): New node. Callers updated.
4 (Major Modes): Document fundamental-mode and major-mode.
5 (Major Mode Basics): Node deleted; text moved to Major Modes.
6 (Derived Modes): Document derived-mode-p.
7
82011-08-28 Chong Yidong <cyd@stupidchicken.com>
9
10 * files.texi (Changing Files, Create/Delete Dirs): Document new
11 arguments for delete-file, delete-directory, and copy-directory.
12 (Visiting Functions): Remove view-file; it is documented in the
13 Emacs manual.
14
15 * frames.texi (Layout Parameters): The defaults for the
16 menu-bar-lines and tool-bar-lines parameters depend on the mode.
17
18 * display.texi (Progress): Document spinner functionality.
19
20 * os.texi (Killing Emacs): Note that kill-emacs can be called by
21 operating system signals. Refer to save-buffers-kill-terminal
22 instead of save-buffers-kill-emacs.
23
24 * objects.texi (Symbol Type): Document ## print representation.
25
12011-08-25 Eli Zaretskii <eliz@gnu.org> 262011-08-25 Eli Zaretskii <eliz@gnu.org>
2 27
3 * display.texi (Specified Space): Mention that `space' specs 28 * display.texi (Specified Space): Mention that `space' specs
diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi
index d9e807afb88..757906f286e 100644
--- a/doc/lispref/debugging.texi
+++ b/doc/lispref/debugging.texi
@@ -596,25 +596,6 @@ forms are elided.
596@end smallexample 596@end smallexample
597@end deffn 597@end deffn
598 598
599@ignore @c Not worth mentioning
600@defopt stack-trace-on-error
601@cindex stack trace
602This variable controls whether Lisp automatically displays a
603backtrace buffer after every error that is not handled. A quit signal
604counts as an error for this variable. If it is non-@code{nil} then a
605backtrace is shown in a pop-up buffer named @samp{*Backtrace*} on every
606error. If it is @code{nil}, then a backtrace is not shown.
607
608When a backtrace is shown, that buffer is not selected. If either
609@code{debug-on-quit} or @code{debug-on-error} is also non-@code{nil}, then
610a backtrace is shown in one buffer, and the debugger is popped up in
611another buffer with its own backtrace.
612
613We consider this feature to be obsolete and superseded by the debugger
614itself.
615@end defopt
616@end ignore
617
618@defvar debug-on-next-call 599@defvar debug-on-next-call
619@cindex @code{eval}, and debugging 600@cindex @code{eval}, and debugging
620@cindex @code{apply}, and debugging 601@cindex @code{apply}, and debugging
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index bf7cd126a26..cfe4b8298fb 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -367,10 +367,9 @@ echo area, or @code{nil} if there is none.
367 When an operation can take a while to finish, you should inform the 367 When an operation can take a while to finish, you should inform the
368user about the progress it makes. This way the user can estimate 368user about the progress it makes. This way the user can estimate
369remaining time and clearly see that Emacs is busy working, not hung. 369remaining time and clearly see that Emacs is busy working, not hung.
370A convenient way to do this is to use a @dfn{progress reporter}.
370 371
371 Functions listed in this section provide simple and efficient way of 372 Here is a working example that does nothing useful:
372reporting operation progress. Here is a working example that does
373nothing useful:
374 373
375@smallexample 374@smallexample
376(let ((progress-reporter 375(let ((progress-reporter
@@ -382,11 +381,11 @@ nothing useful:
382 (progress-reporter-done progress-reporter)) 381 (progress-reporter-done progress-reporter))
383@end smallexample 382@end smallexample
384 383
385@defun make-progress-reporter message min-value max-value &optional current-value min-change min-time 384@defun make-progress-reporter message &optional min-value max-value current-value min-change min-time
386This function creates and returns a @dfn{progress reporter}---an 385This function creates and returns a progress reporter object, which
387object you will use as an argument for all other functions listed 386you will use as an argument for the other functions listed below. The
388here. The idea is to precompute as much data as possible to make 387idea is to precompute as much data as possible to make progress
389progress reporting very fast. 388reporting very fast.
390 389
391When this progress reporter is subsequently used, it will display 390When this progress reporter is subsequently used, it will display
392@var{message} in the echo area, followed by progress percentage. 391@var{message} in the echo area, followed by progress percentage.
@@ -394,24 +393,28 @@ When this progress reporter is subsequently used, it will display
394on a filename, for instance, use @code{format} before calling this 393on a filename, for instance, use @code{format} before calling this
395function. 394function.
396 395
397@var{min-value} and @var{max-value} arguments stand for starting and 396The arguments @var{min-value} and @var{max-value} should be numbers
398final states of your operation. For instance, if you scan a buffer, 397standing for the starting and final states of the operation. For
399they should be the results of @code{point-min} and @code{point-max} 398instance, an operation that ``scans'' a buffer should set these to the
400correspondingly. It is required that @var{max-value} is greater than 399results of @code{point-min} and @code{point-max} correspondingly.
401@var{min-value}. If you create progress reporter when some part of 400@var{max-value} should be greater than @var{min-value}.
402the operation has already been completed, then specify 401
403@var{current-value} argument. But normally you should omit it or set 402Alternatively, you can set @var{min-value} and @var{max-value} to
404it to @code{nil}---it will default to @var{min-value} then. 403@code{nil}. In that case, the progress reporter does not report
405 404process percentages; it instead displays a ``spinner'' that rotates a
406Remaining arguments control the rate of echo area updates. Progress 405notch each time you update the progress reporter.
407reporter will wait for at least @var{min-change} more percents of the 406
408operation to be completed before printing next message. 407If @var{min-value} and @var{max-value} are numbers, you can give the
409@var{min-time} specifies the minimum time in seconds to pass between 408argument @var{current-value} a numerical value specifying the initial
410successive prints. It can be fractional. Depending on Emacs and 409progress; if omitted, this defaults to @var{min-value}.
411system capabilities, progress reporter may or may not respect this 410
412last argument or do it with varying precision. Default value for 411The remaining arguments control the rate of echo area updates. The
413@var{min-change} is 1 (one percent), for @var{min-time}---0.2 412progress reporter will wait for at least @var{min-change} more
414(seconds.) 413percents of the operation to be completed before printing next
414message; the default is one percent. @var{min-time} specifies the
415minimum time in seconds to pass between successive prints; the default
416is 0.2 seconds. (On some operating systems, the progress reporter may
417handle fractions of seconds with varying precision).
415 418
416This function calls @code{progress-reporter-update}, so the first 419This function calls @code{progress-reporter-update}, so the first
417message is printed immediately. 420message is printed immediately.
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index bb05f1b4a0b..a19af903027 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -765,8 +765,7 @@ Major and Minor Modes
765* Major Modes:: Defining major modes. 765* Major Modes:: Defining major modes.
766* Minor Modes:: Defining minor modes. 766* Minor Modes:: Defining minor modes.
767* Mode Line Format:: Customizing the text that appears in the mode line. 767* Mode Line Format:: Customizing the text that appears in the mode line.
768* Imenu:: How a mode can provide a menu 768* Imenu:: Providing a menu of definitions made in a buffer.
769 of definitions in the buffer.
770* Font Lock Mode:: How modes can highlight text according to syntax. 769* Font Lock Mode:: How modes can highlight text according to syntax.
771* Desktop Save Mode:: How modes can have buffer state saved between 770* Desktop Save Mode:: How modes can have buffer state saved between
772 Emacs sessions. 771 Emacs sessions.
@@ -778,12 +777,12 @@ Hooks
778 777
779Major Modes 778Major Modes
780 779
781* Major Mode Basics::
782* Major Mode Conventions:: Coding conventions for keymaps, etc. 780* Major Mode Conventions:: Coding conventions for keymaps, etc.
783* Auto Major Mode:: How Emacs chooses the major mode automatically. 781* Auto Major Mode:: How Emacs chooses the major mode automatically.
784* Mode Help:: Finding out how to use a mode. 782* Mode Help:: Finding out how to use a mode.
785* Derived Modes:: Defining a new major mode based on another major 783* Derived Modes:: Defining a new major mode based on another major
786 mode. 784 mode.
785* Basic Major Modes:: Modes that other modes are often derived from.
787* Generic Modes:: Defining a simple major mode that supports 786* Generic Modes:: Defining a simple major mode that supports
788 comment syntax and Font Lock mode. 787 comment syntax and Font Lock mode.
789* Mode Hooks:: Hooks run at the end of major mode functions. 788* Mode Hooks:: Hooks run at the end of major mode functions.
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi
index 4d992bd2c51..bd904bf49c0 100644
--- a/doc/lispref/files.texi
+++ b/doc/lispref/files.texi
@@ -203,17 +203,6 @@ When this command is called interactively, it prompts for
203@var{filename}. 203@var{filename}.
204@end deffn 204@end deffn
205 205
206@deffn Command view-file filename
207This command visits @var{filename} using View mode, returning to the
208previous buffer when you exit View mode. View mode is a minor mode that
209provides commands to skim rapidly through the file, but does not let you
210modify the text. Entering View mode runs the normal hook
211@code{view-mode-hook}. @xref{Hooks}.
212
213When @code{view-file} is called interactively, it prompts for
214@var{filename}.
215@end deffn
216
217@defopt find-file-wildcards 206@defopt find-file-wildcards
218If this variable is non-@code{nil}, then the various @code{find-file} 207If this variable is non-@code{nil}, then the various @code{find-file}
219commands check for wildcard characters and visit all the files that 208commands check for wildcard characters and visit all the files that
@@ -1529,19 +1518,26 @@ This function is not available on systems that don't support symbolic
1529links. 1518links.
1530@end deffn 1519@end deffn
1531 1520
1532@deffn Command delete-file filename 1521@cindex trash
1522@vindex delete-by-moving-to-trash
1523@deffn Command delete-file filename &optional trash
1533@pindex rm 1524@pindex rm
1534This command deletes the file @var{filename}, like the shell command 1525This command deletes the file @var{filename}. If the file has
1535@samp{rm @var{filename}}. If the file has multiple names, it continues 1526multiple names, it continues to exist under the other names. If
1536to exist under the other names. 1527@var{filename} is a symbolic link, @code{delete-file} deletes only the
1537 1528symbolic link and not its target (though it does follow symbolic links
1538A suitable kind of @code{file-error} error is signaled if the file does 1529at all levels of parent directories).
1539not exist, or is not deletable. (On Unix and GNU/Linux, a file is 1530
1540deletable if its directory is writable.) 1531A suitable kind of @code{file-error} error is signaled if the file
1541 1532does not exist, or is not deletable. (On Unix and GNU/Linux, a file
1542If @var{filename} is a symbolic link, @code{delete-file} does not 1533is deletable if its directory is writable.)
1543replace it with its target, but it does follow symbolic links at all 1534
1544levels of parent directories. 1535If the optional argument @var{trash} is non-@code{nil} and the
1536variable @code{delete-by-moving-to-trash} is non-@code{nil}, this
1537command moves the file into the system Trash instead of deleting it.
1538@xref{Misc File Ops,,Miscellaneous File Operations, emacs, The GNU
1539Emacs Manual}. When called interactively, @var{trash} is @code{t} if
1540no prefix argument is given, and @code{nil} otherwise.
1545 1541
1546See also @code{delete-directory} in @ref{Create/Delete Dirs}. 1542See also @code{delete-directory} in @ref{Create/Delete Dirs}.
1547@end deffn 1543@end deffn
@@ -2507,7 +2503,7 @@ if they don't already exist.
2507@code{mkdir} is an alias for this. 2503@code{mkdir} is an alias for this.
2508@end deffn 2504@end deffn
2509 2505
2510@deffn Command copy-directory dirname newname &optional keep-time parents 2506@deffn Command copy-directory dirname newname &optional keep-time parents copy-contents
2511This command copies the directory named @var{dirname} to 2507This command copies the directory named @var{dirname} to
2512@var{newname}. If @var{newname} names an existing directory, 2508@var{newname}. If @var{newname} names an existing directory,
2513@var{dirname} will be copied to a subdirectory there. 2509@var{dirname} will be copied to a subdirectory there.
@@ -2515,16 +2511,23 @@ This command copies the directory named @var{dirname} to
2515It always sets the file modes of the copied files to match the 2511It always sets the file modes of the copied files to match the
2516corresponding original file. 2512corresponding original file.
2517 2513
2518The third arg @var{keep-time} non-@code{nil} means to preserve the 2514The third argument @var{keep-time} non-@code{nil} means to preserve the
2519modification time of the copied files. A prefix arg makes 2515modification time of the copied files. A prefix arg makes
2520@var{keep-time} non-@code{nil}. 2516@var{keep-time} non-@code{nil}.
2521 2517
2522Noninteractively, the last argument @var{parents} says whether to 2518The fourth argument @var{parents} says whether to
2523create parent directories if they don't exist. Interactively, 2519create parent directories if they don't exist. Interactively,
2524this happens by default. 2520this happens by default.
2521
2522The fifth argument @var{copy-contents}, if non-@code{nil}, means to
2523copy the contents of @var{dirname} directly into @var{newname} if the
2524latter is an existing directory, instead of copying @var{dirname} into
2525it as a subdirectory.
2525@end deffn 2526@end deffn
2526 2527
2527@deffn Command delete-directory dirname &optional recursive 2528@cindex trash
2529@vindex delete-by-moving-to-trash
2530@deffn Command delete-directory dirname &optional recursive trash
2528This command deletes the directory named @var{dirname}. The function 2531This command deletes the directory named @var{dirname}. The function
2529@code{delete-file} does not work for files that are directories; you 2532@code{delete-file} does not work for files that are directories; you
2530must use @code{delete-directory} for them. If @var{recursive} is 2533must use @code{delete-directory} for them. If @var{recursive} is
@@ -2533,6 +2536,13 @@ must use @code{delete-directory} for them. If @var{recursive} is
2533 2536
2534@code{delete-directory} only follows symbolic links at the level of 2537@code{delete-directory} only follows symbolic links at the level of
2535parent directories. 2538parent directories.
2539
2540If the optional argument @var{trash} is non-@code{nil} and the
2541variable @code{delete-by-moving-to-trash} is non-@code{nil}, this
2542command moves the file into the system Trash instead of deleting it.
2543@xref{Misc File Ops,,Miscellaneous File Operations, emacs, The GNU
2544Emacs Manual}. When called interactively, @var{trash} is @code{t} if
2545no prefix argument is given, and @code{nil} otherwise.
2536@end deffn 2546@end deffn
2537 2547
2538@node Magic File Names 2548@node Magic File Names
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index b6012a4dd53..e799cfa6b7f 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -695,20 +695,19 @@ right fringe. However, you can force one fringe or the other to a
695precise width by specifying that width as a negative integer. If both 695precise width by specifying that width as a negative integer. If both
696widths are negative, only the left fringe gets the specified width. 696widths are negative, only the left fringe gets the specified width.
697 697
698@vindex menu-bar-lines, a frame parameter 698@vindex menu-bar-lines frame parameter
699@item menu-bar-lines 699@item menu-bar-lines
700The number of lines to allocate at the top of the frame for a menu 700The number of lines to allocate at the top of the frame for a menu
701bar. The default is 1. A value of @code{nil} means don't display a 701bar. The default is 1 if Menu Bar mode is enabled, and 0 otherwise.
702menu bar. @xref{Menu Bar}. (The X toolkit and GTK allow at most one 702@xref{Menu Bars,,,emacs, The GNU Emacs Manual}.
703menu bar line; they treat larger values as 1.)
704 703
705@vindex tool-bar-lines, a frame parameter 704@vindex tool-bar-lines frame parameter
706@item tool-bar-lines 705@item tool-bar-lines
707The number of lines to use for the tool bar. A value of @code{nil} 706The number of lines to use for the tool bar. The default is 1 if Tool
708means don't display a tool bar. (GTK and Nextstep allow at most one 707Bar mode is enabled, and 0 otherwise. @xref{Tool Bars,,,emacs, The
709tool bar line; they treat larger values as 1.) 708GNU Emacs Manual}.
710 709
711@vindex tool-bar-position, a frame parameter 710@vindex tool-bar-position frame parameter
712@item tool-bar-position 711@item tool-bar-position
713The position of the tool bar. Currently only for the GTK tool bar. 712The position of the tool bar. Currently only for the GTK tool bar.
714Value can be one of @code{top}, @code{bottom} @code{left}, @code{right}. 713Value can be one of @code{top}, @code{bottom} @code{left}, @code{right}.
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index a354265b365..586fc0bbbfb 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -19,16 +19,15 @@ user. For related topics such as keymaps and syntax tables, see
19@ref{Keymaps}, and @ref{Syntax Tables}. 19@ref{Keymaps}, and @ref{Syntax Tables}.
20 20
21@menu 21@menu
22* Hooks:: How to use hooks; how to write code that provides hooks. 22* Hooks:: How to use hooks; how to write code that provides hooks.
23* Major Modes:: Defining major modes. 23* Major Modes:: Defining major modes.
24* Minor Modes:: Defining minor modes. 24* Minor Modes:: Defining minor modes.
25* Mode Line Format:: Customizing the text that appears in the mode line. 25* Mode Line Format:: Customizing the text that appears in the mode line.
26* Imenu:: How a mode can provide a menu 26* Imenu:: Providing a menu of definitions made in a buffer.
27 of definitions in the buffer. 27* Font Lock Mode:: How modes can highlight text according to syntax.
28* Font Lock Mode:: How modes can highlight text according to syntax. 28* Auto-Indentation:: How to teach Emacs to indent for a major mode.
29* Auto-Indentation:: How to teach Emacs to indent for a major mode. 29* Desktop Save Mode:: How modes can have buffer state saved between
30* Desktop Save Mode:: How modes can have buffer state saved between 30 Emacs sessions.
31 Emacs sessions.
32@end menu 31@end menu
33 32
34@node Hooks 33@node Hooks
@@ -48,12 +47,12 @@ convention, whenever the hook name ends in @samp{-hook}, that tells
48you it is normal. We try to make all hooks normal, as much as 47you it is normal. We try to make all hooks normal, as much as
49possible, so that you can use them in a uniform way. 48possible, so that you can use them in a uniform way.
50 49
51 Every major mode function is supposed to run a normal hook called 50 Every major mode command is supposed to run a normal hook called the
52the @dfn{mode hook} as the one of the last steps of initialization. 51@dfn{mode hook} as the one of the last steps of initialization. This
53This makes it easy for a user to customize the behavior of the mode, 52makes it easy for a user to customize the behavior of the mode, by
54by overriding the buffer-local variable assignments already made by 53overriding the buffer-local variable assignments already made by the
55the mode. Most minor mode functions also run a mode hook at the end. 54mode. Most minor mode functions also run a mode hook at the end. But
56But hooks are used in other contexts too. For example, the hook 55hooks are used in other contexts too. For example, the hook
57@code{suspend-hook} runs just before Emacs suspends itself 56@code{suspend-hook} runs just before Emacs suspends itself
58(@pxref{Suspending Emacs}). 57(@pxref{Suspending Emacs}).
59 58
@@ -78,8 +77,8 @@ convention.
78its value is just a single function, not a list of functions. 77its value is just a single function, not a list of functions.
79 78
80@menu 79@menu
81* Running Hooks:: How to run a hook. 80* Running Hooks:: How to run a hook.
82* Setting Hooks:: How to put functions on a hook, or remove them. 81* Setting Hooks:: How to put functions on a hook, or remove them.
83@end menu 82@end menu
84 83
85@node Running Hooks 84@node Running Hooks
@@ -195,115 +194,98 @@ from the buffer-local hook list instead of from the global hook list.
195@section Major Modes 194@section Major Modes
196@cindex major mode 195@cindex major mode
197 196
197@cindex major mode command
198 Major modes specialize Emacs for editing particular kinds of text. 198 Major modes specialize Emacs for editing particular kinds of text.
199Each buffer has only one major mode at a time. For each major mode 199Each buffer has one major mode at a time. Every major mode is
200there is a function to switch to that mode in the current buffer; its 200associated with a @dfn{major mode command}, whose name should end in
201name should end in @samp{-mode}. These functions work by setting 201@samp{-mode}. This command takes care of switching to that mode in the
202buffer-local variable bindings and other data associated with the 202current buffer, by setting various buffer-local variables such as a
203buffer, such as a local keymap. The effect lasts until you switch 203local keymap. @xref{Major Mode Conventions}.
204to another major mode in the same buffer. 204
205 The least specialized major mode is called @dfn{Fundamental mode},
206which has no mode-specific definitions or variable settings.
207
208@deffn Command fundamental-mode
209This is the major mode command for Fundamental mode. Unlike other mode
210commands, it does @emph{not} run any mode hooks (@pxref{Major Mode
211Conventions}), since you are not supposed to customize this mode.
212@end deffn
213
214 The easiest way to write a major mode is to use the macro
215@code{define-derived-mode}, which sets up the new mode as a variant of
216an existing major mode. @xref{Derived Modes}. We recommend using
217@code{define-derived-mode} even if the new mode is not an obvious
218derivative of another mode, as it automatically enforces many coding
219conventions for you. @xref{Basic Major Modes}, for common modes to
220derive from.
221
222 The standard GNU Emacs Lisp directory tree contains the code for
223several major modes, in files such as @file{text-mode.el},
224@file{texinfo.el}, @file{lisp-mode.el}, and @file{rmail.el}. You can
225study these libraries to see how modes are written.
226
227@defopt major-mode
228The buffer-local value of this variable is a symbol naming the buffer's
229current major mode. Its default value holds the default major mode for
230new buffers. The standard default value is @code{fundamental-mode}.
231
232If the default value is @code{nil}, then whenever Emacs creates a new
233buffer via a command such as @kbd{C-x b} (@code{switch-to-buffer}), the
234new buffer is put in the major mode of the previously current buffer.
235As an exception, if the major mode of the previous buffer has a
236@code{mode-class} symbol property with value @code{special}, the new
237buffer is put in Fundamental mode (@pxref{Major Mode Conventions}).
238@end defopt
205 239
206@menu 240@menu
207* Major Mode Basics:: 241* Major Mode Conventions:: Coding conventions for keymaps, etc.
208* Major Mode Conventions:: Coding conventions for keymaps, etc. 242* Auto Major Mode:: How Emacs chooses the major mode automatically.
209* Auto Major Mode:: How Emacs chooses the major mode automatically. 243* Mode Help:: Finding out how to use a mode.
210* Mode Help:: Finding out how to use a mode. 244* Derived Modes:: Defining a new major mode based on another major
211* Derived Modes:: Defining a new major mode based on another major
212 mode. 245 mode.
213* Generic Modes:: Defining a simple major mode that supports 246* Basic Major Modes:: Modes that other modes are often derived from.
247* Generic Modes:: Defining a simple major mode that supports
214 comment syntax and Font Lock mode. 248 comment syntax and Font Lock mode.
215* Mode Hooks:: Hooks run at the end of major mode functions. 249* Mode Hooks:: Hooks run at the end of major mode commands.
216* Example Major Modes:: Text mode and Lisp modes. 250* Example Major Modes:: Text mode and Lisp modes.
217@end menu 251@end menu
218 252
219@node Major Mode Basics
220@subsection Major Mode Basics
221@cindex Fundamental mode
222
223 The least specialized major mode is called @dfn{Fundamental mode}.
224This mode has no mode-specific definitions or variable settings, so each
225Emacs command behaves in its default manner, and each option is in its
226default state. All other major modes redefine various keys and options.
227For example, Lisp Interaction mode provides special key bindings for
228@kbd{C-j} (@code{eval-print-last-sexp}), @key{TAB}
229(@code{lisp-indent-line}), and other keys.
230
231 When you need to write several editing commands to help you perform a
232specialized editing task, creating a new major mode is usually a good
233idea. In practice, writing a major mode is easy (in contrast to
234writing a minor mode, which is often difficult).
235
236 If the new mode is similar to an old one, it is often unwise to
237modify the old one to serve two purposes, since it may become harder
238to use and maintain. Instead, copy and rename an existing major mode
239definition and alter the copy---or use the @code{define-derived-mode}
240macro to define a @dfn{derived mode} (@pxref{Derived Modes}). For
241example, Rmail Edit mode is a major mode that is very similar to Text
242mode except that it provides two additional commands. Its definition
243is distinct from that of Text mode, but uses that of Text mode.
244
245 Even if the new mode is not an obvious derivative of any other mode,
246we recommend to use @code{define-derived-mode}, since it automatically
247enforces the most important coding conventions for you.
248
249 For a very simple programming language major mode that handles
250comments and fontification, you can use @code{define-generic-mode}.
251@xref{Generic Modes}.
252
253 Rmail Edit mode offers an example of changing the major mode
254temporarily for a buffer, so it can be edited in a different way (with
255ordinary Emacs commands rather than Rmail commands). In such cases, the
256temporary major mode usually provides a command to switch back to the
257buffer's usual mode (Rmail mode, in this case). You might be tempted to
258present the temporary redefinitions inside a recursive edit and restore
259the usual ones when the user exits; but this is a bad idea because it
260constrains the user's options when it is done in more than one buffer:
261recursive edits must be exited most-recently-entered first. Using an
262alternative major mode avoids this limitation. @xref{Recursive
263Editing}.
264
265 The standard GNU Emacs Lisp library directory tree contains the code
266for several major modes, in files such as @file{text-mode.el},
267@file{texinfo.el}, @file{lisp-mode.el}, @file{c-mode.el}, and
268@file{rmail.el}. They are found in various subdirectories of the
269@file{lisp} directory. You can study these libraries to see how modes
270are written. Text mode is perhaps the simplest major mode aside from
271Fundamental mode. Rmail mode is a complicated and specialized mode.
272
273@node Major Mode Conventions 253@node Major Mode Conventions
274@subsection Major Mode Conventions 254@subsection Major Mode Conventions
275@cindex major mode conventions 255@cindex major mode conventions
276@cindex conventions for writing major modes 256@cindex conventions for writing major modes
277 257
278 The code for existing major modes follows various coding conventions, 258 The code for every major mode should follow various coding
279including conventions for local keymap and syntax table initialization, 259conventions, including conventions for local keymap and syntax table
280global names, and hooks. Please follow these conventions when you 260initialization, function and variable names, and hooks.
281define a new major mode. (Fundamental mode is an exception to many 261
282of these conventions, because its definition is to present the global 262 If you use the @code{define-derived-mode} macro, it will take care of
283state of Emacs.) 263many of these conventions automatically. @xref{Derived Modes}. Note
264also that fundamental mode is an exception to many of these conventions,
265because its definition is to present the global state of Emacs.
284 266
285 This list of conventions is only partial, because each major mode 267 The following list of conventions is only partial. Each major mode
286should aim for consistency in general with other Emacs major modes. 268should aim for consistency in general with other Emacs major modes, as
287This makes Emacs as a whole more coherent. It is impossible to list 269this makes Emacs as a whole more coherent. It is impossible to list
288here all the possible points where this issue might come up; if the 270here all the possible points where this issue might come up; if the
289Emacs developers point out an area where your major mode deviates from 271Emacs developers point out an area where your major mode deviates from
290the usual conventions, please make it compatible. 272the usual conventions, please make it compatible.
291 273
292@itemize @bullet 274@itemize @bullet
293@item 275@item
294Define a command whose name ends in @samp{-mode}, with no arguments, 276Define a major mode command whose name ends in @samp{-mode}. When
295that switches to the new mode in the current buffer. This command 277called with no arguments, this command should switch to the new mode in
296should set up the keymap, syntax table, and buffer-local variables in an 278the current buffer by setting up the keymap, syntax table, and
297existing buffer, without changing the buffer's contents. 279buffer-local variables in an existing buffer. It should not change the
280buffer's contents.
298 281
299@item 282@item
300Write a documentation string for this command that describes the 283Write a documentation string for this command that describes the special
301special commands available in this mode. @kbd{C-h m} 284commands available in this mode. @xref{Mode Help}.
302(@code{describe-mode}) in your mode will display this string.
303 285
304The documentation string may include the special documentation 286The documentation string may include the special documentation
305substrings, @samp{\[@var{command}]}, @samp{\@{@var{keymap}@}}, and 287substrings, @samp{\[@var{command}]}, @samp{\@{@var{keymap}@}}, and
306@samp{\<@var{keymap}>}, which enable the documentation to adapt 288@samp{\<@var{keymap}>}, which allow the help display to adapt
307automatically to the user's own key bindings. @xref{Keys in 289automatically to the user's own key bindings. @xref{Keys in
308Documentation}. 290Documentation}.
309 291
@@ -527,10 +509,9 @@ mode when creating new buffers (@pxref{Auto Major Mode}), but with such
527Dired, Rmail, and Buffer List use this feature. 509Dired, Rmail, and Buffer List use this feature.
528 510
529The @code{define-derived-mode} macro automatically marks the derived 511The @code{define-derived-mode} macro automatically marks the derived
530mode as special if the parent mode is special. The special mode 512mode as special if the parent mode is special. Special mode is a
531@code{special-mode} provides a convenient parent for other special 513convenient parent for such modes to inherit from; @xref{Basic Major
532modes to inherit from; it sets @code{buffer-read-only} to @code{t}, 514Modes}.
533and does little else.
534 515
535@item 516@item
536If you want to make the new mode the default for files with certain 517If you want to make the new mode the default for files with certain
@@ -564,16 +545,6 @@ Even if you never load the file more than once, someone else will.
564automatically selects a major mode for the new buffer when a file is 545automatically selects a major mode for the new buffer when a file is
565visited. It also processes local variables specified in the file text. 546visited. It also processes local variables specified in the file text.
566 547
567@deffn Command fundamental-mode
568 Fundamental mode is a major mode that is not specialized for anything
569in particular. Other major modes are defined in effect by comparison
570with this one---their definitions say what to change, starting from
571Fundamental mode. The @code{fundamental-mode} function does @emph{not}
572run any mode hooks; you're not supposed to customize it. (If you want Emacs
573to behave differently in Fundamental mode, change the @emph{global}
574state of Emacs.)
575@end deffn
576
577@deffn Command normal-mode &optional find-file 548@deffn Command normal-mode &optional find-file
578This function establishes the proper major mode and buffer-local variable 549This function establishes the proper major mode and buffer-local variable
579bindings for the current buffer. First it calls @code{set-auto-mode} 550bindings for the current buffer. First it calls @code{set-auto-mode}
@@ -599,23 +570,22 @@ by the default value of @code{major-mode} (see below).
599 570
600@cindex file mode specification error 571@cindex file mode specification error
601@code{normal-mode} uses @code{condition-case} around the call to the 572@code{normal-mode} uses @code{condition-case} around the call to the
602major mode function, so errors are caught and reported as a @samp{File 573major mode command, so errors are caught and reported as a @samp{File
603mode specification error}, followed by the original error message. 574mode specification error}, followed by the original error message.
604@end deffn 575@end deffn
605 576
606@defun set-auto-mode &optional keep-mode-if-same 577@defun set-auto-mode &optional keep-mode-if-same
607@cindex visited file mode 578@cindex visited file mode
608 This function selects the major mode that is appropriate for the 579 This function selects the major mode that is appropriate for the
609current buffer. It bases its decision (in order of precedence) on 580current buffer. It bases its decision (in order of precedence) on the
610the @w{@samp{-*-}} line, on any @samp{mode:} local variable near the 581@w{@samp{-*-}} line, on any @samp{mode:} local variable near the end of
611end of a file, on the @w{@samp{#!}} line (using 582a file, on the @w{@samp{#!}} line (using @code{interpreter-mode-alist}),
612@code{interpreter-mode-alist}), on the text at the beginning of the 583on the text at the beginning of the buffer (using
613buffer (using @code{magic-mode-alist}), and finally on the visited 584@code{magic-mode-alist}), and finally on the visited file name (using
614file name (using @code{auto-mode-alist}). @xref{Choosing Modes, , How 585@code{auto-mode-alist}). @xref{Choosing Modes, , How Major Modes are
615Major Modes are Chosen, emacs, The GNU Emacs Manual}. 586Chosen, emacs, The GNU Emacs Manual}. If @code{enable-local-variables}
616If @code{enable-local-variables} is @code{nil}, @code{set-auto-mode} 587is @code{nil}, @code{set-auto-mode} does not check the @w{@samp{-*-}}
617does not check the @w{@samp{-*-}} line, or near the end of the file, 588line, or near the end of the file, for any mode tag.
618for any mode tag.
619 589
620If @var{keep-mode-if-same} is non-@code{nil}, this function does not 590If @var{keep-mode-if-same} is non-@code{nil}, this function does not
621call the mode command if the buffer is already in the proper major 591call the mode command if the buffer is already in the proper major
@@ -624,21 +594,6 @@ mode. For instance, @code{set-visited-file-name} sets this to
624have set. 594have set.
625@end defun 595@end defun
626 596
627@defopt major-mode
628The buffer-local value of this variable holds the major mode
629currently active. The default value of this variable holds the
630default major mode for new buffers. The standard default value is
631@code{fundamental-mode}.
632
633If the default value of @code{major-mode} is @code{nil}, Emacs uses
634the (previously) current buffer's major mode as the default major mode
635of a new buffer. However, if that major mode symbol has a @code{mode-class}
636property with value @code{special}, then it is not used for new buffers;
637Fundamental mode is used instead. The modes that have this property are
638those such as Dired and Rmail that are useful only with text that has
639been specially prepared.
640@end defopt
641
642@defun set-buffer-major-mode buffer 597@defun set-buffer-major-mode buffer
643This function sets the major mode of @var{buffer} to the default value of 598This function sets the major mode of @var{buffer} to the default value of
644@code{major-mode}; if that is @code{nil}, it uses the 599@code{major-mode}; if that is @code{nil}, it uses the
@@ -745,18 +700,17 @@ init file.)
745@cindex help for major mode 700@cindex help for major mode
746@cindex documentation for major mode 701@cindex documentation for major mode
747 702
748 The @code{describe-mode} function is used to provide information 703 The @code{describe-mode} function is provides information about major
749about major modes. It is normally called with @kbd{C-h m}. The 704modes. It is normally bound to @kbd{C-h m}. It uses the value of the
750@code{describe-mode} function uses the value of @code{major-mode}, 705variable @code{major-mode} (which is why every major mode command needs
751which is why every major mode function needs to set the 706to set this variable).
752@code{major-mode} variable.
753 707
754@deffn Command describe-mode 708@deffn Command describe-mode
755This function displays the documentation of the current major mode. 709This function displays the documentation of the current major mode.
756 710
757The @code{describe-mode} function calls the @code{documentation} 711The @code{describe-mode} function calls the @code{documentation}
758function using the value of @code{major-mode} as an argument. Thus, it 712function using the value of @code{major-mode} as an argument. Thus, it
759displays the documentation string of the major mode function. 713displays the documentation string of the major mode command.
760(@xref{Accessing Documentation}.) 714(@xref{Accessing Documentation}.)
761@end deffn 715@end deffn
762 716
@@ -772,11 +726,12 @@ documentation of the major mode.
772@subsection Defining Derived Modes 726@subsection Defining Derived Modes
773@cindex derived mode 727@cindex derived mode
774 728
775 The recommended way to define a new major mode is to derive it 729 The recommended way to define a new major mode is to derive it from an
776from an existing one using @code{define-derived-mode}. If there is no 730existing one using @code{define-derived-mode}. If there is no closely
777closely related mode, you can inherit from @code{text-mode}, 731related mode, you should inherit from either @code{text-mode},
778@code{special-mode}, @code{prog-mode}, or in the worst case 732@code{special-mode}, or @code{prog-mode}. @xref{Basic Major Modes}. If
779@code{fundamental-mode}. 733none of these are suitable, you can inherit from @code{fundamental-mode}
734(@pxref{Major Modes}).
780 735
781@defmac define-derived-mode variant parent name docstring keyword-args@dots{} body@dots{} 736@defmac define-derived-mode variant parent name docstring keyword-args@dots{} body@dots{}
782This macro defines @var{variant} as a major mode command, using 737This macro defines @var{variant} as a major mode command, using
@@ -877,6 +832,64 @@ Do not write an @code{interactive} spec in the definition;
877@code{define-derived-mode} does that automatically. 832@code{define-derived-mode} does that automatically.
878@end defmac 833@end defmac
879 834
835@defun derived-mode-p &rest modes
836This function returns non-@code{nil} if the current major mode is
837derived from any of the major modes given by the symbols @var{modes}.
838@end defun
839
840@node Basic Major Modes
841@subsection Basic Major Modes
842
843 Apart from Fundamental mode, there are three major modes that other
844major modes commonly derive from: Text mode, Prog mode, and Special
845mode. While Text mode is useful in its own right (e.g. for editing
846files ending in @file{.txt}), Prog mode and Special mode exist mainly to
847let other modes derive from them.
848
849@vindex prog-mode-hook
850 As far as possible, new major modes should be derived, either directly
851or indirectly, from one of these three modes. One reason is that this
852allows users to customize a single mode hook
853(e.g. @code{prog-mode-hook}) for an entire family of relevant modes
854(e.g. all programming language modes).
855
856@deffn Command text-mode
857Text mode is a major mode for editing human languages. It defines the
858@samp{"} and @samp{\} characters as having punctuation syntax
859(@pxref{Syntax Class Table}), and binds @kbd{M-@key{TAB}} to
860@code{ispell-complete-word} (@pxref{Spelling,,, emacs, The GNU Emacs
861Manual}).
862
863An example of a major mode derived from Text mode is HTML mode.
864@xref{HTML Mode,,SGML and HTML Modes, emacs, The GNU Emacs Manual}.
865@end deffn
866
867@deffn Command prog-mode
868Prog mode is a basic major mode for buffers containing programming
869language source code. Most of the programming language major modes
870built into Emacs are derived from it.
871
872Prog mode binds @code{parse-sexp-ignore-comments} to @code{t}
873(@pxref{Motion via Parsing}) and @code{bidi-paragraph-direction} to
874@code{left-to-right} (@pxref{Bidirectional Display}).
875@end deffn
876
877@deffn Command special-mode
878Special mode is a basic major mode for buffers containing text that is
879produced specially by Emacs, rather than from a file. Major modes
880derived from Special mode are given a @code{mode-class} property of
881@code{special} (@pxref{Major Mode Conventions}).
882
883Special mode sets the buffer to read-only. Its keymap defines several
884common bindings, including @kbd{q} for @code{quit-window}, @kbd{z} for
885@code{kill-this-buffer}, and @kbd{g} for @code{revert-buffer}
886(@pxref{Reverting}).
887
888An example of a major mode derived from Special mode is Buffer Menu
889mode, which is used by the @samp{*Buffer List*} buffer. @xref{List
890Buffers,,Listing Existing Buffers, emacs, The GNU Emacs Manual}.
891@end deffn
892
880@node Generic Modes 893@node Generic Modes
881@subsection Generic Modes 894@subsection Generic Modes
882@cindex generic mode 895@cindex generic mode
@@ -921,7 +934,7 @@ before it runs the mode hook variable @code{@var{mode}-hook}.
921@node Mode Hooks 934@node Mode Hooks
922@subsection Mode Hooks 935@subsection Mode Hooks
923 936
924 Every major mode function should finish by running its mode hook and 937 Every major mode command should finish by running its mode hook and
925the mode-independent normal hook @code{after-change-major-mode-hook}. 938the mode-independent normal hook @code{after-change-major-mode-hook}.
926It does this by calling @code{run-mode-hooks}. If the major mode is a 939It does this by calling @code{run-mode-hooks}. If the major mode is a
927derived mode, that is if it calls another major mode (the parent mode) 940derived mode, that is if it calls another major mode (the parent mode)
@@ -966,7 +979,7 @@ construct.
966 979
967@defvar after-change-major-mode-hook 980@defvar after-change-major-mode-hook
968This is a normal hook run by @code{run-mode-hooks}. It is run at the 981This is a normal hook run by @code{run-mode-hooks}. It is run at the
969very end of every properly-written major mode function. 982very end of every properly-written major mode command.
970@end defvar 983@end defvar
971 984
972@node Example Major Modes 985@node Example Major Modes
@@ -1194,8 +1207,8 @@ And here is the code to set up the keymap for Lisp mode:
1194@end group 1207@end group
1195@end smallexample 1208@end smallexample
1196 1209
1197 Finally, here is the complete major mode function definition for 1210 Finally, here is the complete major mode command definition for Lisp
1198Lisp mode. 1211mode.
1199 1212
1200@smallexample 1213@smallexample
1201@group 1214@group
@@ -2752,10 +2765,10 @@ highlighting patterns. See the variables
2752@code{c-font-lock-extra-types}, @code{c++-font-lock-extra-types}, 2765@code{c-font-lock-extra-types}, @code{c++-font-lock-extra-types},
2753and @code{java-font-lock-extra-types}, for example. 2766and @code{java-font-lock-extra-types}, for example.
2754 2767
2755@strong{Warning:} major mode functions must not call 2768@strong{Warning:} major mode commands must not call
2756@code{font-lock-add-keywords} under any circumstances, either directly 2769@code{font-lock-add-keywords} under any circumstances, either directly
2757or indirectly, except through their mode hooks. (Doing so would lead 2770or indirectly, except through their mode hooks. (Doing so would lead to
2758to incorrect behavior for some minor modes.) They should set up their 2771incorrect behavior for some minor modes.) They should set up their
2759rules for search-based fontification by setting 2772rules for search-based fontification by setting
2760@code{font-lock-keywords}. 2773@code{font-lock-keywords}.
2761@end defun 2774@end defun
diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi
index 6d63bb7b750..26def7858b7 100644
--- a/doc/lispref/objects.texi
+++ b/doc/lispref/objects.texi
@@ -597,6 +597,7 @@ FOO ; @r{A symbol named @samp{FOO}, different from @samp{foo}.}
597@end group 597@end group
598@end example 598@end example
599 599
600@cindex @samp{##} read syntax
600@ifinfo 601@ifinfo
601@c This uses ``colon'' instead of a literal `:' because Info cannot 602@c This uses ``colon'' instead of a literal `:' because Info cannot
602@c cope with a `:' in a menu 603@c cope with a `:' in a menu
@@ -605,9 +606,12 @@ FOO ; @r{A symbol named @samp{FOO}, different from @samp{foo}.}
605@ifnotinfo 606@ifnotinfo
606@cindex @samp{#:} read syntax 607@cindex @samp{#:} read syntax
607@end ifnotinfo 608@end ifnotinfo
608 Normally the Lisp reader interns all symbols (@pxref{Creating 609 As an exception to the rule that a symbol's name serves as its
609Symbols}). To prevent interning, you can write @samp{#:} before the 610printed representation, @samp{##} is the printed representation for an
610name of the symbol. 611interned symbol whose name is an empty string. Furthermore,
612@samp{#:@var{foo}} is the printed representation for an uninterned
613symbol whose name is @var{foo}. (Normally, the Lisp reader interns
614all symbols; @pxref{Creating Symbols}.)
611 615
612@node Sequence Type 616@node Sequence Type
613@subsection Sequence Types 617@subsection Sequence Types
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index 8533b77b219..7d05f8f3468 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -544,10 +544,11 @@ parent process normally resumes control. The low-level primitive for
544killing Emacs is @code{kill-emacs}. 544killing Emacs is @code{kill-emacs}.
545 545
546@deffn Command kill-emacs &optional exit-data 546@deffn Command kill-emacs &optional exit-data
547This command exits the Emacs process and kills it. 547This command calls the hook @code{kill-emacs-hook}, then exits the
548Emacs process and kills it.
548 549
549If @var{exit-data} is an integer, then it is used as the exit status 550If @var{exit-data} is an integer, that is used as the exit status of
550of the Emacs process. (This is useful primarily in batch operation; see 551the Emacs process. (This is useful primarily in batch operation; see
551@ref{Batch Mode}.) 552@ref{Batch Mode}.)
552 553
553If @var{exit-data} is a string, its contents are stuffed into the 554If @var{exit-data} is a string, its contents are stuffed into the
@@ -555,35 +556,44 @@ terminal input buffer so that the shell (or whatever program next reads
555input) can read them. 556input) can read them.
556@end deffn 557@end deffn
557 558
558 All the information in the Emacs process, aside from files that have 559@cindex SIGTERM
559been saved, is lost when the Emacs process is killed. Because killing 560@cindex SIGHUP
560Emacs inadvertently can lose a lot of work, Emacs queries for 561@cindex SIGINT
561confirmation before actually terminating if you have buffers that need 562@cindex operating system signal
562saving or subprocesses that are running. This is done in the function 563 The @code{kill-emacs} function is normally called via the
563@code{save-buffers-kill-emacs}, the higher level function from which 564higher-level command @kbd{C-x C-c}
564@code{kill-emacs} is usually called. 565(@code{save-buffers-kill-terminal}). @xref{Exiting,,, emacs, The GNU
566Emacs Manual}. It is also called automatically if Emacs receives a
567@code{SIGTERM} or @code{SIGHUP} operating system signal (e.g. when the
568controlling terminal is disconnected), or if it receives a
569@code{SIGINT} signal while running in batch mode (@pxref{Batch Mode}).
565 570
566@defvar kill-emacs-query-functions 571@defvar kill-emacs-hook
567After asking the standard questions, @code{save-buffers-kill-emacs} 572This normal hook is run by @code{kill-emacs}, before it kills Emacs.
568calls the functions in the list @code{kill-emacs-query-functions}, in 573
569order of appearance, with no arguments. These functions can ask for 574Because @code{kill-emacs} can be called in situations where user
570additional confirmation from the user. If any of them returns 575interaction is impossible (e.g. when the terminal is disconnected),
571@code{nil}, @code{save-buffers-kill-emacs} does not kill Emacs, and 576functions on this hook should not attempt to interact with the user.
572does not run the remaining functions in this hook. Calling 577If you want to interact with the user when Emacs is shutting down, use
573@code{kill-emacs} directly does not run this hook. 578@code{kill-emacs-query-functions}, described below.
574@end defvar 579@end defvar
575 580
576@defvar kill-emacs-hook 581 When Emacs is killed, all the information in the Emacs process,
577This variable is a normal hook; once @code{save-buffers-kill-emacs} is 582aside from files that have been saved, is lost. Because killing Emacs
578finished with all file saving and confirmation, it calls 583inadvertently can lose a lot of work, the
579@code{kill-emacs} which runs the functions in this hook. 584@code{save-buffers-kill-terminal} command queries for confirmation if
580 585you have buffers that need saving or subprocesses that are running.
581@code{kill-emacs} may be invoked directly (that is not via 586It also runs the abnormal hook @code{kill-emacs-query-functions}:
582@code{save-buffers-kill-emacs}) if the terminal is disconnected, or in 587
583similar situations where interaction with the user is not possible. 588@defvar kill-emacs-query-functions
584Thus, if your hook needs to interact with the user, put it on 589When @code{save-buffers-kill-terminal} is killing Emacs, it calls the
585@code{kill-emacs-query-functions}; if it needs to run regardless of 590functions in this hook, after asking the standard questions and before
586how Emacs is killed, put it on @code{kill-emacs-hook}. 591calling @code{kill-emacs}. The functions are called in order of
592appearance, with no arguments. Each function can ask for additional
593confirmation from the user. If any of them returns @code{nil},
594@code{save-buffers-kill-emacs} does not kill Emacs, and does not run
595the remaining functions in this hook. Calling @code{kill-emacs}
596directly does not run this hook.
587@end defvar 597@end defvar
588 598
589@node Suspending Emacs 599@node Suspending Emacs
diff --git a/doc/lispref/vol1.texi b/doc/lispref/vol1.texi
index 3b7718814b5..c192e3bf4b7 100644
--- a/doc/lispref/vol1.texi
+++ b/doc/lispref/vol1.texi
@@ -786,8 +786,7 @@ Major and Minor Modes
786* Major Modes:: Defining major modes. 786* Major Modes:: Defining major modes.
787* Minor Modes:: Defining minor modes. 787* Minor Modes:: Defining minor modes.
788* Mode Line Format:: Customizing the text that appears in the mode line. 788* Mode Line Format:: Customizing the text that appears in the mode line.
789* Imenu:: How a mode can provide a menu 789* Imenu:: Providing a menu of definitions made in a buffer.
790 of definitions in the buffer.
791* Font Lock Mode:: How modes can highlight text according to syntax. 790* Font Lock Mode:: How modes can highlight text according to syntax.
792* Desktop Save Mode:: How modes can have buffer state saved between 791* Desktop Save Mode:: How modes can have buffer state saved between
793 Emacs sessions. 792 Emacs sessions.
@@ -799,15 +798,15 @@ Hooks
799 798
800Major Modes 799Major Modes
801 800
802* Major Mode Basics::
803* Major Mode Conventions:: Coding conventions for keymaps, etc. 801* Major Mode Conventions:: Coding conventions for keymaps, etc.
804* Auto Major Mode:: How Emacs chooses the major mode automatically. 802* Auto Major Mode:: How Emacs chooses the major mode automatically.
805* Mode Help:: Finding out how to use a mode. 803* Mode Help:: Finding out how to use a mode.
806* Derived Modes:: Defining a new major mode based on another major 804* Derived Modes:: Defining a new major mode based on another major
807 mode. 805 mode.
806* Basic Major Modes:: Modes that other modes are often derived from.
808* Generic Modes:: Defining a simple major mode that supports 807* Generic Modes:: Defining a simple major mode that supports
809 comment syntax and Font Lock mode. 808 comment syntax and Font Lock mode.
810* Mode Hooks:: Hooks run at the end of major mode functions. 809* Mode Hooks:: Hooks run at the end of major mode commands.
811* Example Major Modes:: Text mode and Lisp modes. 810* Example Major Modes:: Text mode and Lisp modes.
812 811
813Minor Modes 812Minor Modes
diff --git a/doc/lispref/vol2.texi b/doc/lispref/vol2.texi
index 22a51d3235c..8e78a5fb5ca 100644
--- a/doc/lispref/vol2.texi
+++ b/doc/lispref/vol2.texi
@@ -785,8 +785,7 @@ Major and Minor Modes
785* Major Modes:: Defining major modes. 785* Major Modes:: Defining major modes.
786* Minor Modes:: Defining minor modes. 786* Minor Modes:: Defining minor modes.
787* Mode Line Format:: Customizing the text that appears in the mode line. 787* Mode Line Format:: Customizing the text that appears in the mode line.
788* Imenu:: How a mode can provide a menu 788* Imenu:: Providing a menu of definitions made in a buffer.
789 of definitions in the buffer.
790* Font Lock Mode:: How modes can highlight text according to syntax. 789* Font Lock Mode:: How modes can highlight text according to syntax.
791* Desktop Save Mode:: How modes can have buffer state saved between 790* Desktop Save Mode:: How modes can have buffer state saved between
792 Emacs sessions. 791 Emacs sessions.
@@ -798,15 +797,15 @@ Hooks
798 797
799Major Modes 798Major Modes
800 799
801* Major Mode Basics::
802* Major Mode Conventions:: Coding conventions for keymaps, etc. 800* Major Mode Conventions:: Coding conventions for keymaps, etc.
803* Auto Major Mode:: How Emacs chooses the major mode automatically. 801* Auto Major Mode:: How Emacs chooses the major mode automatically.
804* Mode Help:: Finding out how to use a mode. 802* Mode Help:: Finding out how to use a mode.
805* Derived Modes:: Defining a new major mode based on another major 803* Derived Modes:: Defining a new major mode based on another major
806 mode. 804 mode.
805* Basic Major Modes:: Modes that other modes are often derived from.
807* Generic Modes:: Defining a simple major mode that supports 806* Generic Modes:: Defining a simple major mode that supports
808 comment syntax and Font Lock mode. 807 comment syntax and Font Lock mode.
809* Mode Hooks:: Hooks run at the end of major mode functions. 808* Mode Hooks:: Hooks run at the end of major mode commands.
810* Example Major Modes:: Text mode and Lisp modes. 809* Example Major Modes:: Text mode and Lisp modes.
811 810
812Minor Modes 811Minor Modes