annotate man/emacs-xtra.texi @ 56459:718cf6b0289c

*** empty log message ***
author Jonathan Yavner <jyavner@member.fsf.org>
date Sat, 17 Jul 2004 17:06:26 +0000
parents 6ad083598109
children ca944d885fe6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
56119
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
1 \input texinfo @c -*-texinfo-*-
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
2 @comment %**start of header
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
3 @setfilename ../info/emacs-xtra
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
4 @settitle Specialized Emacs Features
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
5 @syncodeindex fn cp
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
6 @syncodeindex vr cp
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
7 @syncodeindex ky cp
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
8 @comment %**end of header
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
9
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
10 @copying
56160
6ad083598109 (Supporting additional buffers): Minor change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56149
diff changeset
11 This manual describes specialized features of Emacs.
56119
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
12
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
13 Copyright (C) 2004
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
14 Free Software Foundation, Inc.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
15
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
16 @quotation
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
17 Permission is granted to copy, distribute and/or modify this document
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
18 under the terms of the GNU Free Documentation License, Version 1.1 or
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
19 any later version published by the Free Software Foundation; with no
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
20 Invariant Sections, with the Front-Cover texts being ``A GNU
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
21 Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
22 license is included in the section entitled ``GNU Free Documentation
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
23 License'' in the Emacs manual.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
24
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
25 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
26 this GNU Manual, like GNU software. Copies published by the Free
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
27 Software Foundation raise funds for GNU development.''
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
28
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
29 This document is part of a collection distributed under the GNU Free
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
30 Documentation License. If you want to distribute this document
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
31 separately from the collection, you can do so by adding a copy of the
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
32 license to the document, as described in section 6 of the license.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
33 @end quotation
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
34 @end copying
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
35
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
36 @dircategory Emacs
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
37 @direntry
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
38 * Emacs-Xtra: (emacs-xtra). Specialized Emacs features.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
39 @end direntry
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
40
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
41 @titlepage
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
42 @title Specialized Emacs Features
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
43 @page
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
44 @vskip 0pt plus 1filll
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
45 @insertcopying
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
46 @end titlepage
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
47
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
48 @contents
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
49
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
50 @ifnottex
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
51 @node Top
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
52 @top Specialized Emacs Features
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
53
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
54 @insertcopying
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
55
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
56 @end ifnottex
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
57
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
58 @menu
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
59 * Introduction:: What documentation belongs here?
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
60 * Autorevert:: Auto Reverting non-file buffers.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
61 * Subdir switches:: Subdirectory switches in Dired.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
62 * Index::
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
63 @end menu
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
64
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
65 @node Introduction
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
66 @unnumbered Introduction
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
67
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
68 This manual contains detailed information about various features that
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
69 are too specialized to be included in the Emacs manual. It is
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
70 intended to be readable by anyone having a basic knowledge of Emacs.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
71 However, certain sections may be intended for a more specialized
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
72 audience, such as Elisp authors. This should be clearly pointed out
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
73 at the beginning of these sections.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
74
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
75 This manual is intended as a complement, rather than an alternative,
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
76 to other ways to gain a more detailed knowledge of Emacs than the
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
77 Emacs manual can provide, such as browsing packages using @kbd{C-h p},
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
78 accessing mode documentation using @kbd{C-h m} and browsing user
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
79 options using Custom. Also, certain packages, or collections of
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
80 related features, have their own manuals. The present manual is
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
81 mainly intended to be a collection of smaller specialized features,
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
82 too small to get their own manual.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
83
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
84 Sections intended specifically for Elisp programmers can follow the
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
85 style of the Elisp manual. Other sections should follow the style of
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
86 the Emacs manual.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
87
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
88 @node Autorevert
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
89 @chapter Auto Reverting non-file Buffers
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
90
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
91 Normally Global Auto Revert Mode only reverts file buffers. There are
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
92 two ways to auto-revert certain non-file buffers: enabling Auto Revert
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
93 Mode in those buffers (using @kbd{M-x auto-revert-mode}) and setting
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
94 @code{global-auto-revert-non-file-buffers} to @code{t}. The latter
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
95 enables Auto Reverting for all types of buffers for which it is
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
96 implemented, that is, for the types of buffers listed in the menu
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
97 below.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
98
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
99 Like file buffers, non-file buffers should normally not revert while
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
100 you are working on them, or while they contain information that might
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
101 get lost after reverting. Therefore, they do not revert if they are
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
102 ``modified''. This can get tricky, because deciding when a non-file
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
103 buffer should be marked modified is usually more difficult than for
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
104 file buffers.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
105
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
106 Another tricky detail is that, for efficiency reasons, Auto Revert
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
107 often does not try to detect all possible changes in the buffer, only
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
108 changes that are ``major'' or easy to detect. Hence, enabling
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
109 auto-reverting for a non-file buffer does not always guarantee that
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
110 all information in the buffer is up to date and does not necessarily
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
111 make manual reverts useless.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
112
56128
cf2e292bf084 (Autorevert, Supporting additional buffers): Explain special treatment
Luc Teirlinck <teirllm@auburn.edu>
parents: 56119
diff changeset
113 At the other extreme, certain buffers automatically auto-revert every
cf2e292bf084 (Autorevert, Supporting additional buffers): Explain special treatment
Luc Teirlinck <teirllm@auburn.edu>
parents: 56119
diff changeset
114 @code{auto-revert-interval} seconds. (This currently only applies to
cf2e292bf084 (Autorevert, Supporting additional buffers): Explain special treatment
Luc Teirlinck <teirllm@auburn.edu>
parents: 56119
diff changeset
115 the Buffer Menu.) In this case, Auto Revert does not print any
cf2e292bf084 (Autorevert, Supporting additional buffers): Explain special treatment
Luc Teirlinck <teirllm@auburn.edu>
parents: 56119
diff changeset
116 messages while reverting, even when @code{auto-revert-verbose} is
cf2e292bf084 (Autorevert, Supporting additional buffers): Explain special treatment
Luc Teirlinck <teirllm@auburn.edu>
parents: 56119
diff changeset
117 non-@code{nil}.
cf2e292bf084 (Autorevert, Supporting additional buffers): Explain special treatment
Luc Teirlinck <teirllm@auburn.edu>
parents: 56119
diff changeset
118
56119
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
119 The details depend on the particular types of buffers and are
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
120 explained in the corresponding sections.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
121
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
122 @menu
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
123 * Auto Reverting the Buffer Menu::
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
124 * Auto Reverting Dired::
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
125 * Supporting additional buffers::
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
126 @end menu
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
127
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
128 @node Auto Reverting the Buffer Menu
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
129 @section Auto Reverting the Buffer Menu
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
130
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
131 If auto-reverting of non-file buffers is enabled, the Buffer Menu
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
132 automatically reverts every @code{auto-revert-interval} seconds,
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
133 whether there is a need for it or not. (It would probably take longer
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
134 to check whether there is a need than to actually revert.)
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
135
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
136 If the Buffer Menu inappropriately gets marked modified, just revert
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
137 it manually using @kbd{g} and auto-reverting will resume. However, if
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
138 you marked certain buffers to get deleted or to be displayed, you have
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
139 to be careful, because reverting erases all marks. The fact that
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
140 adding marks sets the buffer's modified flag prevents Auto Revert from
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
141 automatically erasing the marks.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
142
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
143 @node Auto Reverting Dired
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
144 @section Auto Reverting Dired buffers
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
145
56149
0e86f3e9a45d (Auto Reverting Dired): Minor changes.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56131
diff changeset
146 Auto-reverting Dired buffers currently works on GNU or Unix style
0e86f3e9a45d (Auto Reverting Dired): Minor changes.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56131
diff changeset
147 operating systems. It may not work satisfactorily on some other
0e86f3e9a45d (Auto Reverting Dired): Minor changes.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56131
diff changeset
148 systems.
56119
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
149
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
150 Dired buffers only auto-revert when the file list of the buffer's main
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
151 directory changes. They do not auto-revert when information about a
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
152 particular file changes or when inserted subdirectories change. To be
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
153 sure that @emph{all} listed information is up to date, you have to
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
154 manually revert using @kbd{g}, @emph{even} if auto-reverting is
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
155 enabled in the Dired buffer. Sometimes, you might get the impression
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
156 that modifying or saving files listed in the main directory actually
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
157 does cause auto-reverting. This is because making changes to a file,
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
158 or saving it, very often causes changes in the directory itself, for
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
159 instance, through backup files or auto-save files. However, this is
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
160 not guaranteed.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
161
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
162 If the Dired buffer is marked modified and there are no changes you
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
163 want to protect, then most of the time you can make auto-reverting
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
164 resume by manually reverting the buffer using @kbd{g}. There is one
56149
0e86f3e9a45d (Auto Reverting Dired): Minor changes.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56131
diff changeset
165 exception. If you flag or mark files, you can safely revert the
0e86f3e9a45d (Auto Reverting Dired): Minor changes.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56131
diff changeset
166 buffer. This will not erase the flags or marks (unless the marked
0e86f3e9a45d (Auto Reverting Dired): Minor changes.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56131
diff changeset
167 file has been deleted, of course). However, the buffer will stay
0e86f3e9a45d (Auto Reverting Dired): Minor changes.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56131
diff changeset
168 modified, even after reverting, and auto-reverting will not resume.
0e86f3e9a45d (Auto Reverting Dired): Minor changes.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56131
diff changeset
169 This is because, if you flag or mark files, you may be working on the
0e86f3e9a45d (Auto Reverting Dired): Minor changes.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56131
diff changeset
170 buffer and you might not want the buffer to change without warning.
0e86f3e9a45d (Auto Reverting Dired): Minor changes.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56131
diff changeset
171 If you want auto-reverting to resume in the presence of marks and
0e86f3e9a45d (Auto Reverting Dired): Minor changes.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56131
diff changeset
172 flags, mark the buffer non-modified using @kbd{M-~}. However, adding,
0e86f3e9a45d (Auto Reverting Dired): Minor changes.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56131
diff changeset
173 deleting or changing marks or flags will mark it modified again.
56119
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
174
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
175 Remote Dired buffers are not auto-reverted. Neither are Dired buffers
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
176 for which you used shell wildcards or file arguments to list only some
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
177 of the files. @samp{*Find*} and @samp{*Locate*} buffers do not
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
178 auto-revert either.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
179
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
180 @node Supporting additional buffers
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
181 @section Adding Support for Auto-Reverting additional Buffers.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
182
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
183 This section is intended for Elisp programmers who would like to add
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
184 support for auto-reverting new types of buffers.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
185
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
186 To support auto-reverting the buffer must first of all have a
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
187 @code{revert-buffer-function}. @xref{Definition of
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
188 revert-buffer-function,, Reverting, elisp, the Emacs Lisp Reference Manual}.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
189
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
190 In addition, it @emph{must} have a @code{buffer-stale-function}.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
191
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
192 @defvar buffer-stale-function
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
193 The value of this variable is a function to check whether a non-file
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
194 buffer needs reverting. This should be a function with one optional
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
195 argument @var{noconfirm}. The function should return non-@code{nil}
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
196 if the buffer should be reverted. The buffer is current when this
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
197 function is called.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
198
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
199 While this function is mainly intended for use in auto-reverting, it
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
200 could be used for other purposes as well. For instance, if
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
201 auto-reverting is not enabled, it could be used to warn the user that
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
202 the buffer needs reverting. The idea behind the @var{noconfirm}
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
203 argument is that it should be @code{t} if the buffer is going to be
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
204 reverted without asking the user and @code{nil} if the function is
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
205 just going to be used to warn the user that the buffer is out of date.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
206 In particular, for use in auto-reverting, @var{noconfirm} is @code{t}.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
207 If the function is only going to be used for auto-reverting, you can
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
208 ignore the @var{noconfirm} argument.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
209
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
210 If you just want to automatically auto-revert every
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
211 @code{auto-revert-interval} seconds, use:
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
212
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
213 @example
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
214 (set (make-local-variable 'buffer-stale-function)
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
215 #'(lambda (&optional noconfirm) 'fast))
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
216 @end example
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
217
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
218 @noindent
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
219 in the buffer's mode function.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
220
56128
cf2e292bf084 (Autorevert, Supporting additional buffers): Explain special treatment
Luc Teirlinck <teirllm@auburn.edu>
parents: 56119
diff changeset
221 The special return value @samp{fast} tells the caller that the need
cf2e292bf084 (Autorevert, Supporting additional buffers): Explain special treatment
Luc Teirlinck <teirllm@auburn.edu>
parents: 56119
diff changeset
222 for reverting was not checked, but that reverting the buffer is fast.
cf2e292bf084 (Autorevert, Supporting additional buffers): Explain special treatment
Luc Teirlinck <teirllm@auburn.edu>
parents: 56119
diff changeset
223 It also tells Auto Revert not to print any revert messages, even if
cf2e292bf084 (Autorevert, Supporting additional buffers): Explain special treatment
Luc Teirlinck <teirllm@auburn.edu>
parents: 56119
diff changeset
224 @code{auto-revert-verbose} is non-@code{nil}. This is important, as
cf2e292bf084 (Autorevert, Supporting additional buffers): Explain special treatment
Luc Teirlinck <teirllm@auburn.edu>
parents: 56119
diff changeset
225 getting revert messages every @code{auto-revert-interval} seconds can
cf2e292bf084 (Autorevert, Supporting additional buffers): Explain special treatment
Luc Teirlinck <teirllm@auburn.edu>
parents: 56119
diff changeset
226 be very annoying. The information provided by this return value could
cf2e292bf084 (Autorevert, Supporting additional buffers): Explain special treatment
Luc Teirlinck <teirllm@auburn.edu>
parents: 56119
diff changeset
227 also be useful if the function is consulted for purposes other than
cf2e292bf084 (Autorevert, Supporting additional buffers): Explain special treatment
Luc Teirlinck <teirllm@auburn.edu>
parents: 56119
diff changeset
228 auto-reverting.
56119
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
229 @end defvar
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
230
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
231 Once the buffer has a @code{revert-buffer-function} and a
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
232 @code{buffer-stale-function}, several problems usually remain.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
233
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
234 The buffer will only auto-revert if it is marked unmodified. Hence,
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
235 you will have to make sure that various functions mark the buffer
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
236 modified if and only if either the buffer contains information that
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
237 might be lost by reverting or there is reason to believe that the user
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
238 might be inconvenienced by auto-reverting, because he is actively
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
239 working on the buffer. The user can always override this by manually
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
240 adjusting the modified status of the buffer. To support this, calling
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
241 the @code{revert-buffer-function} on a buffer that is marked
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
242 unmodified should always keep the buffer marked unmodified.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
243
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
244 It is important to assure that point does not continuously jump around
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
245 as a consequence of auto-reverting. Of course, moving point might be
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
246 inevitable if the buffer radically changes.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
247
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
248 You should make sure that the @code{revert-buffer-function} does not
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
249 print messages that unnecessarily duplicate Auto Revert's own messages
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
250 if @code{auto-revert-verbose} is @code{t} and effectively override a
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
251 @code{nil} value for @code{auto-revert-verbose}. Hence, adapting a
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
252 mode for auto-reverting often involves getting rid of such messages.
56128
cf2e292bf084 (Autorevert, Supporting additional buffers): Explain special treatment
Luc Teirlinck <teirllm@auburn.edu>
parents: 56119
diff changeset
253 This is especially important for buffers that automatically
cf2e292bf084 (Autorevert, Supporting additional buffers): Explain special treatment
Luc Teirlinck <teirllm@auburn.edu>
parents: 56119
diff changeset
254 auto-revert every @code{auto-revert-interval} seconds.
56119
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
255
56160
6ad083598109 (Supporting additional buffers): Minor change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56149
diff changeset
256 Also, you may want to update the documentation string of
6ad083598109 (Supporting additional buffers): Minor change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56149
diff changeset
257 @code{global-auto-revert-non-file-buffers}.
6ad083598109 (Supporting additional buffers): Minor change.
Luc Teirlinck <teirllm@auburn.edu>
parents: 56149
diff changeset
258
56119
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
259 @ifinfo
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
260 Finally, you should add a node to this chapter's menu. This node
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
261 @end ifinfo
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
262 @ifnotinfo
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
263 Finally, you should add a section to this chapter. This section
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
264 @end ifnotinfo
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
265 should at the very least make clear whether enabling auto-reverting
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
266 for the buffer reliably assures that all information in the buffer is
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
267 completely up to date (or will be after @code{auto-revert-interval}
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
268 seconds).
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
269
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
270 @node Subdir switches
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
271 @chapter Subdirectory Switches in Dired
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
272
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
273 You can insert subdirectories with specified @code{ls} switches in
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
274 Dired buffers, using @kbd{C-u i}. You can change the @code{ls}
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
275 switches of an already inserted subdirectory using @kbd{C-u l}.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
276
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
277 In Emacs versions 21.4 and later, Dired remembers the switches, so
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
278 that reverting the buffer will not change them back to the main
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
279 directory's switches. Deleting a subdirectory forgets about its
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
280 switches.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
281
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
282 Using @code{dired-undo} (usually bound to @kbd{C-_} and @kbd{C-x u})
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
283 to reinsert or delete subdirectories, that were inserted with explicit
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
284 switches, can bypass Dired's machinery for remembering (or forgetting)
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
285 switches. Deleting a subdirectory using @code{dired-undo} does not
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
286 forget its switches. When later reinserted using @kbd{i}, it will be
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
287 reinserted using its old switches. Using @code{dired-undo} to
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
288 reinsert a subdirectory that was deleted using the regular
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
289 Dired commands (not @code{dired-undo}) will originally insert it with
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
290 its old switches. However, reverting the buffer will relist it using
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
291 the buffer's default switches. If any of this yields problems, you
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
292 can easily correct the situation using @kbd{C-u i} or @kbd{C-u l}.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
293
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
294 The buffer's default switches do not affect subdirectories that were
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
295 inserted using explicitly specified switches. In particular,
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
296 commands such as @kbd{s}, that change the buffer's switches do not
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
297 affect such subdirectories. (They do affect subdirectories without
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
298 explicitly assigned switches, however.)
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
299
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
300 You can make Dired forget about all subdirectory switches and relist
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
301 all subdirectories with the buffer's default switches using
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
302 @kbd{M-x dired-reset-subdir-switches}. This also reverts the Dired buffer.
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
303
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
304 @node Index
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
305 @unnumbered Index
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
306
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
307 @printindex cp
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
308
23a626038a46 New file.
Luc Teirlinck <teirllm@auburn.edu>
parents:
diff changeset
309 @bye
56131
0806d31e3c9c Changes from arch/CVS synchronization
Miles Bader <miles@gnu.org>
parents: 56128
diff changeset
310
0806d31e3c9c Changes from arch/CVS synchronization
Miles Bader <miles@gnu.org>
parents: 56128
diff changeset
311 @ignore
0806d31e3c9c Changes from arch/CVS synchronization
Miles Bader <miles@gnu.org>
parents: 56128
diff changeset
312 arch-tag: 75c33f13-32c6-41b6-9537-847a312e2e49
0806d31e3c9c Changes from arch/CVS synchronization
Miles Bader <miles@gnu.org>
parents: 56128
diff changeset
313 @end ignore