aboutsummaryrefslogtreecommitdiffstats
path: root/doc
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
parent9fb7b0cab34a48a4c7b66abb6b8edc4ee20467b4 (diff)
parent393aa9d403dda96b2fa061311cc76bbad40489cf (diff)
downloademacs-b72c6fe2ac5f148b00ceed70a910c7c9ee6a669e.tar.gz
emacs-b72c6fe2ac5f148b00ceed70a910c7c9ee6a669e.zip
upstream
Diffstat (limited to 'doc')
-rw-r--r--doc/emacs/ChangeLog24
-rw-r--r--doc/emacs/buffers.texi10
-rw-r--r--doc/emacs/cal-xtra.texi8
-rw-r--r--doc/emacs/dired.texi10
-rw-r--r--doc/emacs/display.texi23
-rw-r--r--doc/emacs/emacs.texi7
-rw-r--r--doc/emacs/files.texi181
-rw-r--r--doc/emacs/help.texi4
-rw-r--r--doc/emacs/misc.texi5
-rw-r--r--doc/emacs/modes.texi13
-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
21 files changed, 485 insertions, 414 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index 50eb89fe488..2407d7dd18f 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,27 @@
12011-08-29 Chong Yidong <cyd@stupidchicken.com>
2
3 * modes.texi (Choosing Modes): auto-mode-case-fold is now t.
4
52011-08-28 Chong Yidong <cyd@stupidchicken.com>
6
7 * files.texi (File Archives):
8 * cal-xtra.texi (Diary Display):
9 * help.texi (Help Mode): Add xref to View Mode.
10
112011-08-28 Chong Yidong <cyd@stupidchicken.com>
12
13 * display.texi (View Mode): New node. Move view-file here from
14 Misc File Ops. Move view-buffer here from Misc Buffer.
15
16 * buffers.texi (Misc Buffer): Move view-buffer to View Mode.
17
18 * files.texi (Misc File Ops): Document new
19 delete-by-moving-to-trash behavior. Remove view-file.
20
21 * dired.texi (Dired Deletion): Shorten description of Trash.
22
23 * misc.texi (emacsclient Options): Document server-port.
24
12011-08-27 Eli Zaretskii <eliz@gnu.org> 252011-08-27 Eli Zaretskii <eliz@gnu.org>
2 26
3 * frames.texi (Frame Commands): Advise setting focus-follows-mouse 27 * frames.texi (Frame Commands): Advise setting focus-follows-mouse
diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi
index d4cc4f7bb6a..c4880af2b5d 100644
--- a/doc/emacs/buffers.texi
+++ b/doc/emacs/buffers.texi
@@ -285,16 +285,6 @@ buffers with particular names. (With some of these features, such as
285switch to some other buffer before using the command, in order for it 285switch to some other buffer before using the command, in order for it
286to make a different buffer.) 286to make a different buffer.)
287 287
288@findex view-buffer
289 @kbd{M-x view-buffer} is much like @kbd{M-x view-file} (@pxref{Misc
290File Ops}) except that it examines an already existing Emacs buffer.
291View mode provides commands for scrolling through the buffer
292conveniently but not for changing it. When you exit View mode with
293@kbd{q}, that switches back to the buffer (and the position) which was
294previously displayed in the window. Alternatively, if you exit View
295mode with @kbd{e}, the buffer and the value of point that resulted from
296your perusal remain in effect.
297
298 The commands @kbd{M-x append-to-buffer} and @kbd{M-x insert-buffer} 288 The commands @kbd{M-x append-to-buffer} and @kbd{M-x insert-buffer}
299can be used to copy text from one buffer to another. @xref{Accumulating 289can be used to copy text from one buffer to another. @xref{Accumulating
300Text}. 290Text}.
diff --git a/doc/emacs/cal-xtra.texi b/doc/emacs/cal-xtra.texi
index 52898efc268..6d20c92a6d9 100644
--- a/doc/emacs/cal-xtra.texi
+++ b/doc/emacs/cal-xtra.texi
@@ -538,13 +538,7 @@ are no diary entries, even if that day is a holiday. If you want such
538days to be shown in the fancy diary buffer, set the variable 538days to be shown in the fancy diary buffer, set the variable
539@code{diary-list-include-blanks} to @code{t}.@refill 539@code{diary-list-include-blanks} to @code{t}.@refill
540 540
541@c View mode does not seem to be described in the manual. 541 The fancy diary buffer enables View mode (@pxref{View Mode}).
542@c buffers.texi has a brief mention.
543 The fancy diary buffer enables View mode, a minor mode that provides
544commands for scrolling and searching the text. For example, @key{SPC}
545and @key{DEL} scroll forward and backward, and @key{s} starts an
546incremental search. See the documentation of the function
547@code{view-mode} for more information.
548 542
549 The alternative display method @code{diary-simple-display} shows the 543 The alternative display method @code{diary-simple-display} shows the
550actual diary buffer, and uses invisible text to hide entries that don't 544actual diary buffer, and uses invisible text to hide entries that don't
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi
index d536547e293..eb2bcc109e8 100644
--- a/doc/emacs/dired.texi
+++ b/doc/emacs/dired.texi
@@ -201,12 +201,10 @@ delete nonempty directories including all their contents. That can
201be somewhat risky. 201be somewhat risky.
202 202
203@vindex delete-by-moving-to-trash 203@vindex delete-by-moving-to-trash
204 On some systems, there is a facility called the ``Trash'' or 204 If you change the variable @code{delete-by-moving-to-trash} to
205``Recycle Bin'', but Emacs does @emph{not} use it by default. Thus, 205@code{t}, the above deletion commands will move the affected files or
206when you delete a file in Dired, it is gone forever. However, you can 206directories into the operating system's Trash, instead of deleting
207tell Emacs to use the Trash for file deletion, by changing the 207them outright. @xref{Misc File Ops}.
208variable @code{delete-by-moving-to-trash} to @code{t}. @xref{Misc
209File Ops}, for more information about the Trash.
210 208
211@node Flagging Many Files 209@node Flagging Many Files
212@section Flagging Many Files at Once 210@section Flagging Many Files at Once
diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi
index cc7f70cf574..09e365d9d5f 100644
--- a/doc/emacs/display.texi
+++ b/doc/emacs/display.texi
@@ -17,6 +17,7 @@ want to see, and how to display it.
17* Horizontal Scrolling:: Moving text left and right in a window. 17* Horizontal Scrolling:: Moving text left and right in a window.
18* Narrowing:: Restricting display and editing to a portion 18* Narrowing:: Restricting display and editing to a portion
19 of the buffer. 19 of the buffer.
20* View Mode:: Viewing read-only buffers.
20* Follow Mode:: Follow mode lets two windows scroll as one. 21* Follow Mode:: Follow mode lets two windows scroll as one.
21* Faces:: How to change the display style using faces. 22* Faces:: How to change the display style using faces.
22* Standard Faces:: Emacs' predefined faces. 23* Standard Faces:: Emacs' predefined faces.
@@ -368,6 +369,28 @@ this command asks for confirmation and gives you the option of enabling it;
368if you enable the command, confirmation will no longer be required for 369if you enable the command, confirmation will no longer be required for
369it. @xref{Disabling}. 370it. @xref{Disabling}.
370 371
372@node View Mode
373@section View Mode
374@cindex View mode
375@cindex mode, View
376
377 View mode is a minor mode that lets you scan a buffer by sequential
378screenfuls. It provides commands for scrolling through the buffer
379conveniently but not for changing it. Apart from the usual Emacs
380cursor motion commands, you can type @key{SPC} to scroll forward one
381windowful, @key{DEL} to scroll backward, and @kbd{s} to start an
382incremental search.
383
384 Typing @kbd{q} disables View mode, and switches back to the buffer
385and position before View mode was enabled. Alternatively, typing
386@kbd{e} disables View mode, keeping the current buffer and position.
387
388@findex view-buffer
389@findex view-file
390 @kbd{M-x view-buffer} prompts for an existing Emacs buffer, switches
391to it, and enables View mode. @kbd{M-x view-file} prompts for a file
392and visits it with View mode enabled.
393
371@node Follow Mode 394@node Follow Mode
372@section Follow Mode 395@section Follow Mode
373@cindex Follow mode 396@cindex Follow mode
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index 060f939fa7a..2ba4af712af 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -345,6 +345,7 @@ Controlling the Display
345* Horizontal Scrolling:: Moving text left and right in a window. 345* Horizontal Scrolling:: Moving text left and right in a window.
346* Narrowing:: Restricting display and editing to a portion 346* Narrowing:: Restricting display and editing to a portion
347 of the buffer. 347 of the buffer.
348* View Mode:: Viewing read-only buffers.
348* Follow Mode:: Follow mode lets two windows scroll as one. 349* Follow Mode:: Follow mode lets two windows scroll as one.
349* Faces:: How to change the display style using faces. 350* Faces:: How to change the display style using faces.
350* Standard Faces:: Emacs' predefined faces. 351* Standard Faces:: Emacs' predefined faces.
@@ -1054,6 +1055,12 @@ Hyperlinking and Navigation Features
1054* Goto Address mode:: Activating URLs. 1055* Goto Address mode:: Activating URLs.
1055* FFAP:: Finding files etc. at point. 1056* FFAP:: Finding files etc. at point.
1056 1057
1058Emacs Lisp Packages
1059
1060* Package Menu:: Buffer for viewing and managing packages.
1061* Package Installation:: Options for package installation.
1062* Package Files:: Where packages are installed.
1063
1057Customization 1064Customization
1058 1065
1059* Easy Customization:: Convenient way to browse and change settings. 1066* Easy Customization:: Convenient way to browse and change settings.
diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi
index 793a11e62ed..2672c30363b 100644
--- a/doc/emacs/files.texi
+++ b/doc/emacs/files.texi
@@ -1272,11 +1272,11 @@ this, it runs the program specified by
1272 The command @kbd{M-x delete-directory} prompts for a directory name 1272 The command @kbd{M-x delete-directory} prompts for a directory name
1273using the minibuffer, and deletes the directory if it is empty. If 1273using the minibuffer, and deletes the directory if it is empty. If
1274the directory is not empty, you will be asked whether you want to 1274the directory is not empty, you will be asked whether you want to
1275delete it recursively. On systems that have a ``Trash'' or ``Recycle 1275delete it recursively. On systems that have a ``Trash'' (or ``Recycle
1276Bin'' feature, you can make this command move the specified directory 1276Bin'') feature, you can make this command move the specified directory
1277to the Trash or Recycle Bin, instead of deleting it outright, by 1277to the Trash instead of deleting it outright, by changing the variable
1278changing the variable @code{delete-by-moving-to-trash} to @code{t}. 1278@code{delete-by-moving-to-trash} to @code{t}. @xref{Misc File Ops},
1279@xref{Misc File Ops}, for more information about using the Trash. 1279for more information about using the Trash.
1280 1280
1281@node Comparing Files 1281@node Comparing Files
1282@section Comparing Files 1282@section Comparing Files
@@ -1503,23 +1503,78 @@ patch syntax (@pxref{Useless Whitespace}).
1503 Emacs has commands for performing many other operations on files. 1503 Emacs has commands for performing many other operations on files.
1504All operate on one file; they do not accept wildcard file names. 1504All operate on one file; they do not accept wildcard file names.
1505 1505
1506@findex view-file 1506@findex delete-file
1507@cindex viewing 1507@cindex deletion (of files)
1508@cindex View mode 1508 @kbd{M-x delete-file} prompts for a file and deletes it. If you are
1509@cindex mode, View 1509deleting many files in one directory, it may be more convenient to use
1510 @kbd{M-x view-file} allows you to scan or read a file by sequential 1510Dired rather than @code{delete-file}. @xref{Dired Deletion}.
1511screenfuls. It reads a file name argument using the minibuffer. After 1511
1512reading the file into an Emacs buffer, @code{view-file} displays the 1512@cindex trash
1513beginning. You can then type @key{SPC} to scroll forward one windowful, 1513@cindex recycle bin
1514or @key{DEL} to scroll backward. Various other commands are provided 1514 @kbd{M-x move-file-to-trash} moves a file into the system
1515for moving around in the file, but none for changing it; type @kbd{?} 1515@dfn{Trash} (or @dfn{Recycle Bin}). This is a facility available on
1516while viewing for a list of them. They are mostly the same as normal 1516most operating systems; files that are moved into the Trash can be
1517Emacs cursor motion commands. To exit from viewing, type @kbd{q}. 1517brought back later if you change your mind.
1518The commands for viewing are defined by a special minor mode called View 1518
1519mode. 1519@vindex delete-by-moving-to-trash
1520 1520 By default, Emacs deletion commands do @emph{not} use the Trash. To
1521 A related command, @kbd{M-x view-buffer}, views a buffer already present 1521use the Trash (when it is available) for common deletion commands,
1522in Emacs. @xref{Misc Buffer}. 1522change the variable @code{delete-by-moving-to-trash} to @code{t}.
1523This affects the commands @kbd{M-x delete-file} and @kbd{M-x
1524delete-directory} (@pxref{Directories}), as well as the deletion
1525commands in Dired (@pxref{Dired Deletion}). Supplying a prefix
1526argument to @kbd{M-x delete-file} or @kbd{M-x delete-directory} makes
1527them delete outright, instead of using the Trash, regardless of
1528@code{delete-by-moving-to-trash}.
1529
1530@findex copy-file
1531@cindex copying files
1532 @kbd{M-x copy-file} reads the file @var{old} and writes a new file
1533named @var{new} with the same contents.
1534
1535@findex copy-directory
1536 @kbd{M-x copy-directory} copies directories, similar to the
1537@command{cp -r} shell command. It prompts for a directory @var{old}
1538and a destination @var{new}. If @var{new} is an existing directory,
1539it creates a copy of the @var{old} directory and puts it in @var{new}.
1540If @var{new} is not an existing directory, it copies all the contents
1541of @var{old} into a new directory named @var{new}.
1542
1543@findex rename-file
1544 @kbd{M-x rename-file} reads two file names @var{old} and @var{new}
1545using the minibuffer, then renames file @var{old} as @var{new}. If
1546the file name @var{new} already exists, you must confirm with
1547@kbd{yes} or renaming is not done; this is because renaming causes the
1548old meaning of the name @var{new} to be lost. If @var{old} and
1549@var{new} are on different file systems, the file @var{old} is copied
1550and deleted. If the argument @var{new} is just a directory name, the
1551real new name is in that directory, with the same non-directory
1552component as @var{old}. For example, @kbd{M-x rename-file RET ~/foo
1553RET /tmp RET} renames @file{~/foo} to @file{/tmp/foo}. The same rule
1554applies to all the remaining commands in this section. All of them
1555ask for confirmation when the new file name already exists, too.
1556
1557@findex add-name-to-file
1558@cindex hard links (creation)
1559 @kbd{M-x add-name-to-file} adds an additional name to an existing
1560file without removing its old name. The new name is created as a
1561``hard link'' to the existing file. The new name must belong on the
1562same file system that the file is on. On MS-Windows, this command
1563works only if the file resides in an NTFS file system. On MS-DOS, it
1564works by copying the file.
1565
1566@findex make-symbolic-link
1567@cindex symbolic links (creation)
1568 @kbd{M-x make-symbolic-link} reads two file names @var{target} and
1569@var{linkname}, then creates a symbolic link named @var{linkname},
1570which points at @var{target}. The effect is that future attempts to
1571open file @var{linkname} will refer to whatever file is named
1572@var{target} at the time the opening is done, or will get an error if
1573the name @var{target} is nonexistent at that time. This command does
1574not expand the argument @var{target}, so that it allows you to specify
1575a relative name as the target of the link. Not all systems support
1576symbolic links; on systems that don't support them, this command is
1577not defined.
1523 1578
1524@kindex C-x i 1579@kindex C-x i
1525@findex insert-file 1580@findex insert-file
@@ -1544,74 +1599,6 @@ specified file. @xref{Accumulating Text}. The variable
1544@code{write-region-inhibit-fsync} applies to these commands, as well 1599@code{write-region-inhibit-fsync} applies to these commands, as well
1545as saving files; see @ref{Customize Save}. 1600as saving files; see @ref{Customize Save}.
1546 1601
1547@findex delete-file
1548@cindex deletion (of files)
1549@vindex delete-by-moving-to-trash
1550 @kbd{M-x delete-file} deletes the specified file, like the @code{rm}
1551command in the shell. If you are deleting many files in one
1552directory, it may be more convenient to use Dired rather than
1553@code{delete-file}. @xref{Dired}.
1554
1555@cindex trash
1556@cindex recycle bin
1557 On some systems, there is a facility called the ``Trash'' (or
1558``Recycle Bin''); ``deleting'' a file normally means moving it into
1559the Trash, and you can bring the file back from the Trash if you later
1560change your mind. By default, Emacs does @emph{not} use the Trash for
1561file deletion---when Emacs deletes a file, it is gone forever. You
1562can tell Emacs to use the Trash by changing the variable
1563@code{delete-by-moving-to-trash} to @code{t}. This applies to file
1564deletion via @kbd{M-x delete-file}, as well as @kbd{M-x
1565delete-directory} (@pxref{Directories}) and file deletion in Dired
1566(@pxref{Dired Deletion}). In addition, you can explicitly move a file
1567into the Trash with the command @kbd{M-x move-file-to-trash}.
1568
1569@findex rename-file
1570 @kbd{M-x rename-file} reads two file names @var{old} and @var{new} using
1571the minibuffer, then renames file @var{old} as @var{new}. If the file name
1572@var{new} already exists, you must confirm with @kbd{yes} or renaming is not
1573done; this is because renaming causes the old meaning of the name @var{new}
1574to be lost. If @var{old} and @var{new} are on different file systems, the
1575file @var{old} is copied and deleted.
1576
1577 If the argument @var{new} is just a directory name, the real new
1578name is in that directory, with the same non-directory component as
1579@var{old}. For example, @kbd{M-x rename-file RET ~/foo RET /tmp RET}
1580renames @file{~/foo} to @file{/tmp/foo}. The same rule applies to all
1581the remaining commands in this section. All of them ask for
1582confirmation when the new file name already exists, too.
1583
1584@findex add-name-to-file
1585@cindex hard links (creation)
1586 The similar command @kbd{M-x add-name-to-file} is used to add an
1587additional name to an existing file without removing its old name.
1588The new name is created as a ``hard link'' to the existing file.
1589The new name must belong on the same file system that the file is on.
1590On MS-Windows, this command works only if the file resides in an NTFS
1591file system. On MS-DOS, it works by copying the file.
1592
1593@findex copy-file
1594@findex copy-directory
1595@cindex copying files
1596 @kbd{M-x copy-file} reads the file @var{old} and writes a new file
1597named @var{new} with the same contents. @kbd{M-x copy-directory} does
1598the same for directories, by recursive copying all files and
1599subdirectories.
1600
1601@findex make-symbolic-link
1602@cindex symbolic links (creation)
1603 @kbd{M-x make-symbolic-link} reads two file names @var{target} and
1604@var{linkname}, then creates a symbolic link named @var{linkname},
1605which points at @var{target}. The effect is that future attempts to
1606open file @var{linkname} will refer to whatever file is named
1607@var{target} at the time the opening is done, or will get an error if
1608the name @var{target} is nonexistent at that time. This command does
1609not expand the argument @var{target}, so that it allows you to specify
1610a relative name as the target of the link.
1611
1612 Not all systems support symbolic links; on systems that don't
1613support them, this command is not defined.
1614
1615@findex set-file-modes 1602@findex set-file-modes
1616@cindex file modes 1603@cindex file modes
1617@cindex file permissions 1604@cindex file permissions
@@ -1670,13 +1657,13 @@ Tar mode is used also for compressed archives---files with extensions
1670 The keys @kbd{e}, @kbd{f} and @key{RET} all extract a component file 1657 The keys @kbd{e}, @kbd{f} and @key{RET} all extract a component file
1671into its own buffer. You can edit it there, and if you save the 1658into its own buffer. You can edit it there, and if you save the
1672buffer, the edited version will replace the version in the Tar buffer. 1659buffer, the edited version will replace the version in the Tar buffer.
1673@kbd{v} extracts a file into a buffer in View mode. @kbd{o} extracts 1660@kbd{v} extracts a file into a buffer in View mode (@pxref{View
1674the file and displays it in another window, so you could edit the file 1661Mode}). @kbd{o} extracts the file and displays it in another window,
1675and operate on the archive simultaneously. @kbd{d} marks a file for 1662so you could edit the file and operate on the archive simultaneously.
1676deletion when you later use @kbd{x}, and @kbd{u} unmarks a file, as in 1663@kbd{d} marks a file for deletion when you later use @kbd{x}, and
1677Dired. @kbd{C} copies a file from the archive to disk and @kbd{R} 1664@kbd{u} unmarks a file, as in Dired. @kbd{C} copies a file from the
1678renames a file within the archive. @kbd{g} reverts the buffer from 1665archive to disk and @kbd{R} renames a file within the archive.
1679the archive on disk. 1666@kbd{g} reverts the buffer from the archive on disk.
1680 1667
1681 The keys @kbd{M}, @kbd{G}, and @kbd{O} change the file's permission 1668 The keys @kbd{M}, @kbd{G}, and @kbd{O} change the file's permission
1682bits, group, and owner, respectively. 1669bits, group, and owner, respectively.
diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi
index bf93892c0db..9ff995138f5 100644
--- a/doc/emacs/help.texi
+++ b/doc/emacs/help.texi
@@ -405,8 +405,8 @@ the variable @code{apropos-documentation-sort-by-scores} is
405@node Help Mode 405@node Help Mode
406@section Help Mode Commands 406@section Help Mode Commands
407 407
408 Help buffers provide the same commands as View mode (@pxref{Misc File 408 Help buffers provide the same commands as View mode (@pxref{View
409Ops}), plus a few special commands of their own. 409Mode}), plus a few special commands of their own.
410 410
411@table @kbd 411@table @kbd
412@item @key{SPC} 412@item @key{SPC}
diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index 2dab70c512a..598f495784f 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -1596,6 +1596,11 @@ runs, and (ii) provide @command{emacsclient} with the server file.
1596(One convenient way to do the latter is to put the server file on a 1596(One convenient way to do the latter is to put the server file on a
1597networked file system such as NFS.) 1597networked file system such as NFS.)
1598 1598
1599@vindex server-port
1600 When the Emacs server is using TCP, the variable @code{server-port}
1601determines the port number to listen on; the default value,
1602@code{nil}, means to choose a random port when the server starts.
1603
1599@item -n 1604@item -n
1600@itemx --no-wait 1605@itemx --no-wait
1601Let @command{emacsclient} exit immediately, instead of waiting until 1606Let @command{emacsclient} exit immediately, instead of waiting until
diff --git a/doc/emacs/modes.texi b/doc/emacs/modes.texi
index 314d5d4347e..d82423a73b4 100644
--- a/doc/emacs/modes.texi
+++ b/doc/emacs/modes.texi
@@ -353,12 +353,13 @@ the element has the form @code{(@var{regexp} @var{mode-function}
353@var{regexp} and searches the list again for another match. 353@var{regexp} and searches the list again for another match.
354 354
355@vindex auto-mode-case-fold 355@vindex auto-mode-case-fold
356 On systems with case-insensitive file names, such as Microsoft 356 On GNU/Linux and other systems with case-sensitive file names, Emacs
357Windows, Emacs performs a single case-insensitive search through 357performs a case-sensitive search through @code{auto-mode-alist}; if
358@code{auto-mode-alist}. On other systems, Emacs normally performs a 358this search fails, it performs a second case-insensitive search
359single case-sensitive search through the alist. However, if you 359through the alist. To suppress the second search, change the variable
360change the variable @code{auto-mode-case-fold} to @code{t}, Emacs 360@code{auto-mode-case-fold} to @code{nil}. On systems with
361performs a second case-insensitive search if the first search fails. 361case-insensitive file names, such as Microsoft Windows, Emacs performs
362a single case-insensitive search through @code{auto-mode-alist}.
362 363
363@vindex magic-fallback-mode-alist 364@vindex magic-fallback-mode-alist
364 Finally, if Emacs @emph{still} hasn't found a major mode to use, it 365 Finally, if Emacs @emph{still} hasn't found a major mode to use, it
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