aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiles Bader2006-04-02 01:10:03 +0000
committerMiles Bader2006-04-02 01:10:03 +0000
commite6335dc16c9c8fad7dc630e9a8261e4178d8e2fa (patch)
tree176c338a29f14341f266ef50f2a211fa13082575
parent91b7e4a6fdd600278a3dd3fd5a7962ef0c2a9b72 (diff)
parent5af68e282f359dbe09565f690d3f6920a593fb0e (diff)
downloademacs-e6335dc16c9c8fad7dc630e9a8261e4178d8e2fa.tar.gz
emacs-e6335dc16c9c8fad7dc630e9a8261e4178d8e2fa.zip
Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-51
Merge from emacs--devo--0 Patches applied: * emacs--devo--0 (patch 188-189) - Update from CVS - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 73) - Update from CVS
-rw-r--r--ChangeLog15
-rw-r--r--INSTALL2
-rwxr-xr-xconfigure3
-rw-r--r--configure.in5
-rw-r--r--etc/NEWS9
-rw-r--r--etc/images/README92
-rw-r--r--etc/images/redo.xpm69
-rw-r--r--lib-src/README2
-rw-r--r--lisp/ChangeLog44
-rw-r--r--lisp/erc/ChangeLog2
-rw-r--r--lisp/gnus/ChangeLog5
-rw-r--r--lisp/gnus/gnus-group.el7
-rw-r--r--lisp/ido.el85
-rw-r--r--lisp/mh-e/ChangeLog7
-rw-r--r--lisp/mh-e/mh-e.el134
-rw-r--r--lisp/pcomplete.el4
-rw-r--r--lisp/pcvs-util.el12
-rw-r--r--lisp/shell.el6
-rw-r--r--lisp/speedbar.el2
-rw-r--r--man/ChangeLog37
-rw-r--r--man/custom.texi327
-rw-r--r--man/dired.texi410
-rw-r--r--man/emacs.texi1
-rw-r--r--man/gnus.texi24
-rw-r--r--man/help.texi8
-rw-r--r--man/message.texi2
-rw-r--r--man/misc.texi202
-rw-r--r--src/ChangeLog4
-rw-r--r--src/config.in4
29 files changed, 908 insertions, 616 deletions
diff --git a/ChangeLog b/ChangeLog
index d10a3aef1a4..80a9ba99a56 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
12006-04-01 Eli Zaretskii <eliz@gnu.org>
2
3 * configure: Regenerated.
4
52006-04-01 Emanuele Giaquinta <emanuele.giaquinta@gmail.com> (tiny change)
6
7 * configure.in (HAVE_XAW3D): Disable Xaw3d check if
8 --without-toolkit-scroll-bars was specified.
9
102006-04-01 Christoph Bauer <Christoph.Bauer@lms-gmbh.de> (tiny change)
11
12 * configure.in (hppa*-hp-hpux1[1-9]*): Add
13 -D_INCLUDE__STDC_A1_SOURCE to CFLAGS. Update Copyright years
14 written to src/config.in.
15
12006-03-18 Claudio Fontana <claudio@gnu.org> 162006-03-18 Claudio Fontana <claudio@gnu.org>
2 17
3 * Makefile.in (INFO_FILES): New variable, contains all Info file names. 18 * Makefile.in (INFO_FILES): New variable, contains all Info file names.
diff --git a/INSTALL b/INSTALL
index f4dac28b547..5f998159ade 100644
--- a/INSTALL
+++ b/INSTALL
@@ -260,7 +260,7 @@ availability).
260 260
261If `--with-x-toolkit=gtk' is specified, you can tell configure where 261If `--with-x-toolkit=gtk' is specified, you can tell configure where
262to search for GTK by specifying `--with-pkg-config-prog=PATH' where 262to search for GTK by specifying `--with-pkg-config-prog=PATH' where
263PATH is the pathname to pkg-config. Note that GTK version 2.0 or 263PATH is the pathname to pkg-config. Note that GTK version 2.4 or
264newer is required for Emacs. 264newer is required for Emacs.
265 265
266The `--with-gcc' option specifies that the build process should 266The `--with-gcc' option specifies that the build process should
diff --git a/configure b/configure
index 5f92af4c021..d06ab5d0511 100755
--- a/configure
+++ b/configure
@@ -2093,6 +2093,7 @@ _ACEOF
2093 ;; 2093 ;;
2094 hppa*-hp-hpux1[1-9]* ) 2094 hppa*-hp-hpux1[1-9]* )
2095 machine=hp800 opsys=hpux11 2095 machine=hp800 opsys=hpux11
2096 CFLAGS="-D_INCLUDE__STDC_A1_SOURCE $CFLAGS"
2096 ;; 2097 ;;
2097 2098
2098 hppa*-*-linux-gnu* ) 2099 hppa*-*-linux-gnu* )
@@ -11412,7 +11413,7 @@ fi
11412### Is -lXaw3d available? 11413### Is -lXaw3d available?
11413HAVE_XAW3D=no 11414HAVE_XAW3D=no
11414if test "${HAVE_X11}" = "yes"; then 11415if test "${HAVE_X11}" = "yes"; then
11415 if test "${USE_X_TOOLKIT}" != "none"; then 11416 if test "${USE_X_TOOLKIT}" != "none" && test "${with_toolkit_scroll_bars}" != "no"; then
11416 echo "$as_me:$LINENO: checking for X11/Xaw3d/Scrollbar.h" >&5 11417 echo "$as_me:$LINENO: checking for X11/Xaw3d/Scrollbar.h" >&5
11417echo $ECHO_N "checking for X11/Xaw3d/Scrollbar.h... $ECHO_C" >&6 11418echo $ECHO_N "checking for X11/Xaw3d/Scrollbar.h... $ECHO_C" >&6
11418if test "${ac_cv_header_X11_Xaw3d_Scrollbar_h+set}" = set; then 11419if test "${ac_cv_header_X11_Xaw3d_Scrollbar_h+set}" = set; then
diff --git a/configure.in b/configure.in
index 1e1c2e93a09..86a8de19843 100644
--- a/configure.in
+++ b/configure.in
@@ -611,6 +611,7 @@ dnl see the `changequote' comment above.
611 ;; 611 ;;
612 hppa*-hp-hpux1[1-9]* ) 612 hppa*-hp-hpux1[1-9]* )
613 machine=hp800 opsys=hpux11 613 machine=hp800 opsys=hpux11
614 CFLAGS="-D_INCLUDE__STDC_A1_SOURCE $CFLAGS"
614 ;; 615 ;;
615 616
616 hppa*-*-linux-gnu* ) 617 hppa*-*-linux-gnu* )
@@ -2179,7 +2180,7 @@ fi
2179### Is -lXaw3d available? 2180### Is -lXaw3d available?
2180HAVE_XAW3D=no 2181HAVE_XAW3D=no
2181if test "${HAVE_X11}" = "yes"; then 2182if test "${HAVE_X11}" = "yes"; then
2182 if test "${USE_X_TOOLKIT}" != "none"; then 2183 if test "${USE_X_TOOLKIT}" != "none" && test "${with_toolkit_scroll_bars}" != "no"; then
2183 dnl Fixme: determine what Scrollbar.h needs to avoid compilation 2184 dnl Fixme: determine what Scrollbar.h needs to avoid compilation
2184 dnl errors from the test without the `-'. 2185 dnl errors from the test without the `-'.
2185 AC_CHECK_HEADER(X11/Xaw3d/Scrollbar.h, 2186 AC_CHECK_HEADER(X11/Xaw3d/Scrollbar.h,
@@ -2840,7 +2841,7 @@ if test "${REL_ALLOC}" = "yes" ; then
2840fi 2841fi
2841 2842
2842AH_TOP([/* GNU Emacs site configuration template file. 2843AH_TOP([/* GNU Emacs site configuration template file.
2843 Copyright (C) 1988, 1993, 1994, 1999, 2000, 2002, 2004 2844 Copyright (C) 1988, 1993, 1994, 1999, 2000, 2002, 2004, 2005, 2006
2844 Free Software Foundation, Inc. 2845 Free Software Foundation, Inc.
2845 2846
2846This file is part of GNU Emacs. 2847This file is part of GNU Emacs.
diff --git a/etc/NEWS b/etc/NEWS
index 29f7269a44e..2e7a8592695 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -3545,6 +3545,15 @@ the command `undefined'. (In earlier Emacs versions, it used
3545`risky-local-variable' property is nil. 3545`risky-local-variable' property is nil.
3546 3546
3547--- 3547---
3548The function `comint-send-input' now accepts 3 optional arguments:
3549
3550 (comint-send-input &optional no-newline artificial)
3551
3552Callers sending input not from the user should use bind the 3rd
3553argument `artificial' to a non-nil value, to prevent Emacs from
3554deleting the part of subprocess output that matches the input.
3555
3556---
3548** Support for Mocklisp has been removed. 3557** Support for Mocklisp has been removed.
3549 3558
3550+++ 3559+++
diff --git a/etc/images/README b/etc/images/README
index 0f74a900109..57450d7f92f 100644
--- a/etc/images/README
+++ b/etc/images/README
@@ -1,43 +1,71 @@
1All of the following icons are not part of Emacs, but distributed and 1The following icons are from GNOME 2.6:
2used by Emacs.
3 2
4* The following icons are from GTK+ 2.x: 3 attach.xpm (stock_attach)
4 connect.xpm (stock_connect)
5 contact.xpm (stock_contact)
6 delete.xpm (stock_delete)
7 describe.xpm (stock_properties)
8 disconnect.xpm (stock_disconnect)
9 exit.xpm (stock_exit)
10 lock-broken.xpm (stock_lock_broken)
11 lock-ok.xpm (stock_lock_ok)
12 lock.xpm (stock_lock)
13 next-page.xpm (stock_next-page)
14 refresh.xpm (stock_refresh)
15 sort-ascending.xpm (stock_sort-ascending)
16 sort-column-ascending.xpm (stock_sort-column-ascending)
17 sort-criteria.xpm (stock_sort-criteria)
18 sort-descending.xpm (stock_sort-descending)
19 sort-row-ascending.xpm (stock_sort-row-ascending)
5 20
6 close.xpm copy.xpm cut.xpm find-replace.xpm help.xpm home.xpm 21 gnus/toggle-subscription.xpm (stock_task-recurring)
7 index.xpm jump-to.xpm left-arrow.xpm new.xpm open.xpm paste.xpm
8 preferences.xpm print.xpm refresh.xpm right-arrow.xpm save.xpm
9 saveas.xpm search.xpm sort-ascending.xpm sort-descending.xpm
10 spell.xpm undo.xpm up-arrow.xpm
11 22
12 back-arrow.xpm and fwd-arrow.xpm are slightly modified undo and redo. 23 mail/compose.xpm (stock_mail-compose)
24 mail/copy.xpm (stock_mail-copy)
25 mail/forward.xpm (stock_mail-forward)
26 mail/inbox.xpm (stock_inbox)
27 mail/move.xpm (stock_mail-move)
28 mail/not-spam.xpm (stock_not-spam)
29 mail/outbox.xpm (stock_outbox)
30 mail/reply-all.xpm (stock_mail-reply-to-all)
31 mail/reply.xpm (stock_mail-reply)
32 mail/save-draft.xpm (stock_mail-handling)
33 mail/send.xpm (stock_mail-send)
34 mail/spam.xpm (stock_spam)
13 35
14 diropen.xpm is file-manager.png from Gnome hicolor theme.
15 36
16* The following icons are from GNOME 2.x: 37The following icons were contributed by Adam Sjøgren <asjo@koldfront.dk>:
17 38
18 attach.xpm connect.xpm contact.xpm data-save.xpm delete.xpm 39 mail/preview.xpm (combining stock_mail and stock_zoom)
19 describe.xpm disconnect.xpm exit.xpm gnus/toggle-subscription.xpm 40 mail/save.xpm (combining stock_mail, stock_save and stock_convert)
20 lock-broken.xpm lock-ok.xpm lock.xpm mail/compose.xpm
21 mail/copy.xpm mail/flag-for-followup.xpm mail/forward.xpm
22 mail/inbox.xpm mail/move.xpm mail/not-spam.xpm mail/outbox.xpm
23 mail/preview.xpm mail/reply-all.xpm mail/reply.xpm
24 mail/save-draft.xpm mail/save.xpm mail/send.xpm mail/spam.xpm
25 next-page.xpm refresh.xpm separator.xpm sort-ascending.xpm
26 sort-column-ascending.xpm sort-criteria.xpm sort-descending.xpm
27 sort-row-ascending.xpm zoom-in.xpm zoom-out.xpm
28 41
29* Note that the default GTK icons were not overridden by the GNOME theme
30due to a bug which was fixed in GNOME 2.15. Once GNOME 2.16 is in wide
31circulation, then the GTK icons should be replaced with the equivalent
32GNOME icons.
33 42
34* Recipe for Creating PBM Versions 43The folling icon are duplicated from Emacs 22. They are either not present in
44Emacs 21 or look different there.
35 45
361. Edit .xpm image in GIMP. 46 cancel.xpm
372. Image > Mode > Indexed. Check Use Black/White Palette and No 47 copy.xpm
38 Color Dithering. 48 diropen.xpm
393. File > Save As file.xbm. 49 help.xpm
404. Run xbmtopbm < file.xbm > file.pbm. 50 left-arrow.xpm
51 paste.xpm
52 print.xpm
53 redo.xpm
54 right-arrow.xpm
55 save.xpm
56 search.xpm
57 separator.xpm
41 58
42Thanks to jan.h.d@swipnet.se for the help. 59The GNOME's stock_*.png files were converted to XPM using the following GIMP
60script:
43 61
62;; -*- scheme -*-
63;; Put this file in ~/.gimp-*/scripts/
64;; gimp -i -b '(rs-save-as-xpm "foo.png" "foo.xpm" 127)' '(gimp-quit 0)'
65(define (rs-save-as-xpm filename filename2 threshold)
66 (let* ((image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
67 (drawable (car (gimp-image-get-active-layer image))))
68 (file-xpm-save RUN-NONINTERACTIVE image drawable
69 filename2 filename2 threshold)
70 (gimp-image-delete image)))
71;; end
diff --git a/etc/images/redo.xpm b/etc/images/redo.xpm
new file mode 100644
index 00000000000..273aec58572
--- /dev/null
+++ b/etc/images/redo.xpm
@@ -0,0 +1,69 @@
1/* XPM */
2static char * stock_redo_xpm[] = {
3"24 24 42 1",
4" c None",
5". c #000000",
6"+ c #939A8D",
7"@ c #BAD09D",
8"# c #92998C",
9"$ c #818F71",
10"% c #ADBDA0",
11"& c #C2D5AA",
12"* c #D1DFBE",
13"= c #BED2A3",
14"- c #99A28F",
15"; c #A8BCA6",
16"> c #D5E1C6",
17", c #CDDCBC",
18"' c #D2E0BF",
19") c #C5D7AE",
20"! c #919889",
21"~ c #8C9A7F",
22"{ c #D4E0C5",
23"] c #D3E0C1",
24"^ c #BFD3A6",
25"/ c #9BAA87",
26"( c #B5C3A9",
27"_ c #92AD62",
28": c #7C9B40",
29"< c #59702D",
30"[ c #7F8E6B",
31"} c #C8D9B2",
32"| c #85A24D",
33"1 c #53692A",
34"2 c #A4B690",
35"3 c #9BB572",
36"4 c #6D8839",
37"5 c #95A77E",
38"6 c #8BA859",
39"7 c #657255",
40"8 c #98AF74",
41"9 c #AFC394",
42"0 c #6D7A5B",
43"a c #9CAF84",
44"b c #748261",
45"c c #879772",
46" ",
47" ",
48" ",
49" . ",
50" .. ",
51" .+. ",
52" ....@#. ",
53" .$%&*=@-. ",
54" .;>,')@@@!. ",
55" .~{]*^@@@@@/. ",
56" .(>_::::::<. ",
57" .[}|::::::1. ",
58" .23:<...:1. ",
59" .@:4. .<. ",
60" .@:.. .. ",
61" .56. . ",
62" .78. ",
63" .9. ",
64" .0a. ",
65" .bc. ",
66" ... ",
67" ",
68" ",
69" "};
diff --git a/lib-src/README b/lib-src/README
index 4d29931a6e9..693b5be74cb 100644
--- a/lib-src/README
+++ b/lib-src/README
@@ -1,3 +1,3 @@
1This directory contains the source code for the architecture-dependent 1This directory contains the source code for the architecture-dependent
2files that go in ${archlibdir}. At present, these are mostly utility 2files that go in ${archlibdir}. At present, these are mostly utility
3programs used by Emacs. 3programs used by GNU Emacs.
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 48ead8f51ff..52486191495 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,40 @@
12006-04-02 Drew Adams <drew.adams@oracle.com> (tiny change)
2
3 * speedbar.el (speedbar-after-create-hook): Doc fix.
4
52006-04-02 Michael Ernst <mernst@alum.mit.edu>
6
7 * shell.el (shell-directory-tracker)
8 (shell-dynamic-complete-command): Doc fixes.
9
102006-04-01 Matt Hodges <MPHodges@member.fsf.org>
11
12 * pcomplete.el (pcomplete-show-completions): Recognize TAB on text
13 terminals.
14
152006-04-01 Kim F. Storm <storm@cua.dk>
16
17 * ido.el (ido-unc-hosts-cache): New defvar.
18 (ido-unc-hosts): If value of defcustom is a function, call it to
19 get list of UNC hosts. Add function-item choices to specify
20 ido-unc-hosts-net-view or user function.
21 (ido-ignore-unc-host-regexps): New defcustom.
22 (ido-unc-hosts-net-view, ido-unc-hosts): New functions.
23 (ido-is-unc-root, ido-is-unc-host, ido-file-name-all-completions)
24 (ido-exhibit): Call ido-unc-hosts to get list of UNC hosts.
25
262006-03-13 Stefan Monnier <monnier@iro.umontreal.ca>
27
28 * pcvs-util.el (cvs-insert-strings): Fix bug with strings longer than
29 wwidth.
30
312006-03-31 Juanma Barranquero <lekktu@gmail.com>
32
33 * ido.el (ido-cache-unc-host-shares-time, ido-report-no-match)
34 (ido-max-work-file-list, ido-switch-buffer)
35 (ido-read-file-name-as-directory-commands):
36 Fix typos in docstrings.
37
12006-03-30 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 382006-03-30 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
2 39
3 * term/mac-win.el (mac-system-coding-system): Define and use after 40 * term/mac-win.el (mac-system-coding-system): Define and use after
@@ -433,11 +470,6 @@
433 * tree-widget.el (tree-widget-themes-load-path) 470 * tree-widget.el (tree-widget-themes-load-path)
434 (tree-widget-themes-directory, tree-widget-theme): Doc fix. 471 (tree-widget-themes-directory, tree-widget-theme): Doc fix.
435 472
4362006-03-13 Stefan Monnier <monnier@iro.umontreal.ca>
437
438 * pcvs-util.el (cvs-insert-strings): Fix bug with strings longer than
439 wwidth.
440
4412006-03-13 Ryan Yeske <rcyeske@gmail.com> 4732006-03-13 Ryan Yeske <rcyeske@gmail.com>
442 474
443 * net/rcirc.el (rcirc) <defgroup>: Add link to manual. 475 * net/rcirc.el (rcirc) <defgroup>: Add link to manual.
@@ -15172,7 +15204,7 @@
15172 * add-log.el (change-log-font-lock-keywords): Make the regexp for 15204 * add-log.el (change-log-font-lock-keywords): Make the regexp for
15173 date lines stricter. 15205 date lines stricter.
15174 15206
151752005-06-10 Zhang Wei <id.brep@gmail.com> (tiny change) 152072005-06-10 Zhang Wei <id.brep@gmail.com>
15176 15208
15177 * term/x-win.el (x-clipboard-yank): Use x-selection-value instead 15209 * term/x-win.el (x-clipboard-yank): Use x-selection-value instead
15178 of x-get-selection. 15210 of x-get-selection.
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index 5781a442c08..67799d73049 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -197,7 +197,7 @@
197 197
198 * erc.el (erc-version-string): Release ERC 5.1.1. 198 * erc.el (erc-version-string): Release ERC 5.1.1.
199 199
2002006-02-03 Zhang Wei <id.brep@gmail.com> (tiny change) 2002006-02-03 Zhang Wei <id.brep@gmail.com>
201 201
202 * erc.el (erc-version-string): Don't hard-code Emacs version. 202 * erc.el (erc-version-string): Don't hard-code Emacs version.
203 (erc-version): Use emacs-version. 203 (erc-version): Use emacs-version.
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 71940cac0db..d39ab0a1455 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,8 @@
12006-03-31 Reiner Steib <Reiner.Steib@gmx.de>
2
3 * gnus-group.el (gnus-group-update-tool-bar): Add :initialize and
4 :set.
5
12006-03-23 Katsumi Yamaoka <yamaoka@jpl.org> 62006-03-23 Katsumi Yamaoka <yamaoka@jpl.org>
2 7
3 * mml.el (mml-insert-mime): Ignore cached contents of 8 * mml.el (mml-insert-mime): Ignore cached contents of
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 0ed72433115..24e4df14712 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -1389,6 +1389,13 @@ if it is a string, only list groups matching REGEXP."
1389 "Force updating the group buffer tool bar." 1389 "Force updating the group buffer tool bar."
1390 :group 'gnus-group 1390 :group 'gnus-group
1391 :version "22.1" 1391 :version "22.1"
1392 :initialize 'custom-initialize-default
1393 :set (lambda (symbol value)
1394 (set-default symbol value)
1395 (when (gnus-alive-p)
1396 (with-current-buffer gnus-group-buffer
1397 ;; FIXME: Is there a better way to redraw the group buffer?
1398 (gnus-group-get-new-news 0))))
1392 :type 'boolean) 1399 :type 'boolean)
1393 1400
1394(defun gnus-group-insert-group-line (gnus-tmp-group gnus-tmp-level 1401(defun gnus-group-insert-group-line (gnus-tmp-group gnus-tmp-level
diff --git a/lisp/ido.el b/lisp/ido.el
index 6bc2f45709f..e4ec2be700d 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -630,22 +630,41 @@ equivalent function, e.g. `find-file' rather than `ido-find-file'."
630 :type '(repeat regexp) 630 :type '(repeat regexp)
631 :group 'ido) 631 :group 'ido)
632 632
633(defvar ido-unc-hosts-cache t
634 "Cached value from ido-unc-hosts function.")
635
633(defcustom ido-unc-hosts nil 636(defcustom ido-unc-hosts nil
634 "*List of known UNC host names to complete after initial //." 637 "*List of known UNC host names to complete after initial //.
635 :type '(repeat string) 638If value is a function, that function is called to search network for
639hosts on first use of UNC path."
640 :type '(choice (repeat :tag "List of UNC host names" string)
641 (function-item :tag "Use `NET VIEW'"
642 :value ido-unc-hosts-net-view)
643 (function :tag "Your own function"))
644 :set #'(lambda (symbol value)
645 (set symbol value)
646 (setq ido-unc-hosts-cache t))
647 :group 'ido)
648
649(defcustom ido-ignore-unc-host-regexps nil
650 "*List of regexps matching UNC hosts to ignore."
651 :type '(repeat regexp)
652 :set #'(lambda (symbol value)
653 (set symbol value)
654 (setq ido-unc-hosts-cache t))
636 :group 'ido) 655 :group 'ido)
637 656
638(defcustom ido-cache-unc-host-shares-time 8.0 657(defcustom ido-cache-unc-host-shares-time 8.0
639 "*Maximum time to cache shares of an UNC host (in hours). 658 "*Maximum time to cache shares of an UNC host (in hours).
640Use C-l in prompt to refresh list. 659Use C-l in prompt to refresh list.
641If zero, unc host shares are not cached." 660If zero, UNC host shares are not cached."
642 :type 'number 661 :type 'number
643 :group 'ido) 662 :group 'ido)
644 663
645(defcustom ido-max-work-file-list 10 664(defcustom ido-max-work-file-list 10
646 "*Maximum number of names of recently opened files to record. 665 "*Maximum number of names of recently opened files to record.
647This is the list the file names (sans directory) which have most recently 666This is the list the file names (sans directory) which have most recently
648been opened. See `ido-work-file-list' and `ido-save-directory-list-file'." 667been opened. See `ido-work-file-list' and `ido-save-directory-list-file'."
649 :type 'integer 668 :type 'integer
650 :group 'ido) 669 :group 'ido)
651 670
@@ -891,7 +910,7 @@ Must be set before enabling ido mode."
891 :group 'ido) 910 :group 'ido)
892 911
893(defcustom ido-read-file-name-as-directory-commands '() 912(defcustom ido-read-file-name-as-directory-commands '()
894 "List of commands which uses read-file-name to read a directory name. 913 "List of commands which uses `read-file-name' to read a directory name.
895When `ido-everywhere' is non-nil, the commands in this list will read 914When `ido-everywhere' is non-nil, the commands in this list will read
896the directory using `ido-read-directory-name'." 915the directory using `ido-read-directory-name'."
897 :type '(repeat symbol) 916 :type '(repeat symbol)
@@ -988,7 +1007,7 @@ Copied from `icomplete-eoinput'.")
988 "List of files currently matching `ido-text'.") 1007 "List of files currently matching `ido-text'.")
989 1008
990(defvar ido-report-no-match t 1009(defvar ido-report-no-match t
991 "Report [No Match] when no completions matches ido-text.") 1010 "Report [No Match] when no completions matches `ido-text'.")
992 1011
993(defvar ido-exit nil 1012(defvar ido-exit nil
994 "Flag to monitor how `ido-find-file' exits. 1013 "Flag to monitor how `ido-find-file' exits.
@@ -1111,18 +1130,58 @@ it doesn't interfere with other minibuffer usage.")
1111 (pop-to-buffer b t t) 1130 (pop-to-buffer b t t)
1112 (setq truncate-lines t))))) 1131 (setq truncate-lines t)))))
1113 1132
1133(defun ido-unc-hosts (&optional query)
1134 "Return list of UNC host names."
1135 (cond
1136 ((listp ido-unc-hosts)
1137 ido-unc-hosts) ;; static list or nil
1138 ((listp ido-unc-hosts-cache)
1139 ido-unc-hosts-cache) ;; result of net search
1140 ((and query (fboundp ido-unc-hosts))
1141 (message "Searching for UNC hosts...")
1142 (let ((hosts (funcall ido-unc-hosts)) host re-list re)
1143 (setq ido-unc-hosts-cache nil)
1144 (while hosts
1145 (setq host (downcase (car hosts))
1146 hosts (cdr hosts)
1147 re-list ido-ignore-unc-host-regexps)
1148 (while re-list
1149 (setq re (car re-list)
1150 re-list (cdr re-list))
1151 (if (string-match re host)
1152 (setq re-list nil
1153 host nil)))
1154 (if host
1155 (setq ido-unc-hosts-cache (cons host ido-unc-hosts-cache)))))
1156 (message nil)
1157 (setq ido-unc-hosts-cache
1158 (sort ido-unc-hosts-cache #'string<)))
1159 (query
1160 (setq ido-unc-hosts-cache nil))
1161 (t (fboundp ido-unc-hosts))))
1162
1163(defun ido-unc-hosts-net-view ()
1164 "Query network for list of UNC host names using `NET VIEW'."
1165 (let (hosts)
1166 (with-temp-buffer
1167 (shell-command "net view" t)
1168 (goto-char (point-min))
1169 (while (re-search-forward "^\\\\\\\\\\([[:graph:]]+\\)" nil t)
1170 (setq hosts (cons (match-string 1) hosts))))
1171 hosts))
1172
1114(defun ido-is-tramp-root (&optional dir) 1173(defun ido-is-tramp-root (&optional dir)
1115 (and ido-enable-tramp-completion 1174 (and ido-enable-tramp-completion
1116 (string-match "\\`/[^/]+[@:]\\'" 1175 (string-match "\\`/[^/]+[@:]\\'"
1117 (or dir ido-current-directory)))) 1176 (or dir ido-current-directory))))
1118 1177
1119(defun ido-is-unc-root (&optional dir) 1178(defun ido-is-unc-root (&optional dir)
1120 (and ido-unc-hosts 1179 (and (ido-unc-hosts)
1121 (string-equal "//" 1180 (string-equal "//"
1122 (or dir ido-current-directory)))) 1181 (or dir ido-current-directory))))
1123 1182
1124(defun ido-is-unc-host (&optional dir) 1183(defun ido-is-unc-host (&optional dir)
1125 (and ido-unc-hosts 1184 (and (ido-unc-hosts)
1126 (string-match "\\`//[^/]+/\\'" 1185 (string-match "\\`//[^/]+/\\'"
1127 (or dir ido-current-directory)))) 1186 (or dir ido-current-directory))))
1128 1187
@@ -1699,7 +1758,7 @@ With ARG, turn ido speed-up on if arg is positive, off otherwise."
1699;; the relevant function is called (find-file, write-file, etc). 1758;; the relevant function is called (find-file, write-file, etc).
1700 1759
1701(defun ido-read-internal (item prompt history &optional default require-match initial) 1760(defun ido-read-internal (item prompt history &optional default require-match initial)
1702 "Perform the ido-read-buffer and ido-read-file-name functions. 1761 "Perform the `ido-read-buffer' and `ido-read-file-name' functions.
1703Return the name of a buffer or file selected. 1762Return the name of a buffer or file selected.
1704PROMPT is the prompt to give to the user. 1763PROMPT is the prompt to give to the user.
1705DEFAULT if given is the default directory to start with. 1764DEFAULT if given is the default directory to start with.
@@ -3238,7 +3297,7 @@ for first matching file."
3238 (mapcar 3297 (mapcar
3239 (lambda (host) 3298 (lambda (host)
3240 (if (string-match "/\\'" host) host (concat host "/"))) 3299 (if (string-match "/\\'" host) host (concat host "/")))
3241 ido-unc-hosts)) 3300 (ido-unc-hosts t)))
3242 ((and (numberp ido-max-dir-file-cache) (> ido-max-dir-file-cache 0) 3301 ((and (numberp ido-max-dir-file-cache) (> ido-max-dir-file-cache 0)
3243 (stringp dir) (> (length dir) 0) 3302 (stringp dir) (> (length dir) 0)
3244 (ido-may-cache-directory dir)) 3303 (ido-may-cache-directory dir))
@@ -3734,7 +3793,7 @@ default is to show it in the same window, unless it is already visible
3734in another frame. 3793in another frame.
3735 3794
3736As you type in a string, all of the buffers matching the string are 3795As you type in a string, all of the buffers matching the string are
3737displayed if substring-matching is used \(default). Look at 3796displayed if substring-matching is used \(default). Look at
3738`ido-enable-prefix' and `ido-toggle-prefix'. When you have found the 3797`ido-enable-prefix' and `ido-toggle-prefix'. When you have found the
3739buffer you want, it can then be selected. As you type, most keys have 3798buffer you want, it can then be selected. As you type, most keys have
3740their normal keybindings, except for the following: \\<ido-buffer-completion-map> 3799their normal keybindings, except for the following: \\<ido-buffer-completion-map>
@@ -3757,7 +3816,7 @@ in a separate window.
3757\\[ido-toggle-prefix] Toggle between substring and prefix matching. 3816\\[ido-toggle-prefix] Toggle between substring and prefix matching.
3758\\[ido-toggle-case] Toggle case-sensitive searching of buffer names. 3817\\[ido-toggle-case] Toggle case-sensitive searching of buffer names.
3759\\[ido-completion-help] Show list of matching buffers in separate window. 3818\\[ido-completion-help] Show list of matching buffers in separate window.
3760\\[ido-enter-find-file] Drop into ido-find-file. 3819\\[ido-enter-find-file] Drop into `ido-find-file'.
3761\\[ido-kill-buffer-at-head] Kill buffer at head of buffer list. 3820\\[ido-kill-buffer-at-head] Kill buffer at head of buffer list.
3762\\[ido-toggle-ignore] Toggle ignoring buffers listed in `ido-ignore-buffers'." 3821\\[ido-toggle-ignore] Toggle ignoring buffers listed in `ido-ignore-buffers'."
3763 (interactive) 3822 (interactive)
@@ -4026,7 +4085,7 @@ For details of keybindings, do `\\[describe-function] ido-find-file'."
4026 ((and (ido-is-tramp-root) (string-equal contents "/")) 4085 ((and (ido-is-tramp-root) (string-equal contents "/"))
4027 (ido-set-current-directory ido-current-directory contents) 4086 (ido-set-current-directory ido-current-directory contents)
4028 (setq refresh t)) 4087 (setq refresh t))
4029 ((and ido-unc-hosts (string-equal contents "/") 4088 ((and (ido-unc-hosts) (string-equal contents "/")
4030 (let ((ido-enable-tramp-completion nil)) 4089 (let ((ido-enable-tramp-completion nil))
4031 (ido-is-root-directory))) 4090 (ido-is-root-directory)))
4032 (ido-set-current-directory "//") 4091 (ido-set-current-directory "//")
diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog
index 64876717392..fa66eaca664 100644
--- a/lisp/mh-e/ChangeLog
+++ b/lisp/mh-e/ChangeLog
@@ -1,3 +1,10 @@
12006-03-31 Bill Wohler <wohler@newt.com>
2
3 * mh-e.el (mh-strip-package-version): Move before use to avoid
4 compiler error. Make macro, also to avoid compiler error.
5 (mh-defface-compat): Incorporate body into mh-face-data and
6 delete.
7
12006-03-30 Bill Wohler <wohler@newt.com> 82006-03-30 Bill Wohler <wohler@newt.com>
2 9
3 * mh-e.el (mh-defcustom, mh-defface, mh-defgroup): Macros to 10 * mh-e.el (mh-defcustom, mh-defface, mh-defgroup): Macros to
diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el
index ce2db4fb66e..5f1c66e58d8 100644
--- a/lisp/mh-e/mh-e.el
+++ b/lisp/mh-e/mh-e.el
@@ -895,6 +895,19 @@ necessary and can actually cause problems."
895 895
896;; Temporary function and data structure used customization. 896;; Temporary function and data structure used customization.
897;; These will be unbound after the options are defined. 897;; These will be unbound after the options are defined.
898(defmacro mh-strip-package-version (args)
899 "Strip :package-version keyword and its value from ARGS.
900In Emacs versions that support the :package-version keyword,
901ARGS is returned unchanged."
902 `(if (boundp 'customize-package-emacs-version-alist)
903 ,args
904 (let (seen)
905 (loop for keyword in ,args
906 if (cond ((eq keyword ':package-version) (setq seen t) nil)
907 (seen (setq seen nil) nil)
908 (t t))
909 collect keyword))))
910
898(defmacro mh-defgroup (symbol members doc &rest args) 911(defmacro mh-defgroup (symbol members doc &rest args)
899 "Declare SYMBOL as a customization group containing MEMBERS. 912 "Declare SYMBOL as a customization group containing MEMBERS.
900See documentation for `defgroup' for a description of the arguments 913See documentation for `defgroup' for a description of the arguments
@@ -925,19 +938,6 @@ keyword, introduced in Emacs 22."
925 `(defface ,face ,spec ,doc ,@(mh-strip-package-version args))) 938 `(defface ,face ,spec ,doc ,@(mh-strip-package-version args)))
926(put 'mh-defface 'lisp-indent-function 'defun) 939(put 'mh-defface 'lisp-indent-function 'defun)
927 940
928(defun mh-strip-package-version (args)
929 "Strip :package-version keyword and its value from ARGS.
930In Emacs versions that support the :package-version keyword,
931ARGS is returned unchanged."
932 (if (boundp 'customize-package-emacs-version-alist)
933 args
934 (let (seen)
935 (loop for keyword in args
936 if (cond ((eq keyword ':package-version) (setq seen t) nil)
937 (seen (setq seen nil) nil)
938 (t t))
939 collect keyword))))
940
941 941
942 942
943;;; MH-E Customization 943;;; MH-E Customization
@@ -3115,46 +3115,12 @@ sequence."
3115(if (boundp 'facemenu-unlisted-faces) 3115(if (boundp 'facemenu-unlisted-faces)
3116 (add-to-list 'facemenu-unlisted-faces "^mh-")) 3116 (add-to-list 'facemenu-unlisted-faces "^mh-"))
3117 3117
3118;; Temporary function and data structure used for defining faces. 3118;; To add a new face:
3119;; These will be unbound after the faces are defined. 3119;; 1. Add entry to variable mh-face-data.
3120(defvar mh-min-colors-defined-flag (and (not mh-xemacs-flag) 3120;; 2. Create face using mh-defface (which removes min-color spec and
3121 (>= emacs-major-version 22)) 3121;; :package-version keyword where these are not supported),
3122 "Non-nil means `defface' supports min-colors display requirement.") 3122;; accessing face data with function mh-face-data.
3123 3123;; 3. Add inherit argument to function mh-face-data if applicable.
3124(defun mh-defface-compat (spec)
3125 "Convert SPEC for defface if necessary to run on older platforms.
3126Modifies SPEC in place and returns it. See `defface' for the spec definition.
3127
3128When `mh-min-colors-defined-flag' is nil, this function finds
3129display entries with \"min-colors\" requirements and either
3130removes the \"min-colors\" requirement or strips the display
3131entirely if the display does not support the number of specified
3132colors."
3133 (if mh-min-colors-defined-flag
3134 spec
3135 (let ((cells (mh-display-color-cells))
3136 new-spec)
3137 ;; Remove entries with min-colors, or delete them if we have fewer colors
3138 ;; than they specify.
3139 (loop for entry in (reverse spec) do
3140 (let ((requirement (if (eq (car entry) t)
3141 nil
3142 (assoc 'min-colors (car entry)))))
3143 (if requirement
3144 (when (>= cells (nth 1 requirement))
3145 (setq new-spec (cons (cons (delq requirement (car entry))
3146 (cdr entry))
3147 new-spec)))
3148 (setq new-spec (cons entry new-spec)))))
3149 new-spec)))
3150
3151(require 'cus-face)
3152
3153(defvar mh-inherit-face-flag (assq :inherit custom-face-attributes)
3154 "Non-nil means that the `defface' :inherit keyword is available.
3155The :inherit keyword is available on all supported versions of
3156GNU Emacs and XEmacs from at least 21.5.23 on.")
3157
3158(defvar mh-face-data 3124(defvar mh-face-data
3159 '((mh-folder-followup 3125 '((mh-folder-followup
3160 ((((class color) (background light)) 3126 ((((class color) (background light))
@@ -3297,19 +3263,61 @@ GNU Emacs and XEmacs from at least 21.5.23 on.")
3297 (((class color) (background dark)) 3263 (((class color) (background dark))
3298 (:foreground "red1" :underline t)) 3264 (:foreground "red1" :underline t))
3299 (t 3265 (t
3300 (:underline t)))))) 3266 (:underline t)))))
3267 "MH-E face data.
3268Used by function `mh-face-data' which returns spec that is
3269consumed by `mh-defface'.")
3270
3271(require 'cus-face)
3272
3273(defvar mh-inherit-face-flag (assq :inherit custom-face-attributes)
3274 "Non-nil means that the `defface' :inherit keyword is available.
3275The :inherit keyword is available on all supported versions of
3276GNU Emacs and XEmacs from at least 21.5.23 on.")
3277
3278(defvar mh-min-colors-defined-flag (and (not mh-xemacs-flag)
3279 (>= emacs-major-version 22))
3280 "Non-nil means `defface' supports min-colors display requirement.")
3301 3281
3302(defun mh-face-data (face &optional inherit) 3282(defun mh-face-data (face &optional inherit)
3303 "Return spec for FACE. 3283 "Return spec for FACE.
3304If INHERIT is non-nil and `defface' supports the :inherit 3284See `defface' for the spec definition.
3305keyword, return INHERIT literally; otherwise, return spec for FACE.
3306 3285
3307This isn't a perfect implementation. In the case that 3286If INHERIT is non-nil and `defface' supports the :inherit
3308the :inherit keyword is not supported, any additional attributes 3287keyword, return INHERIT literally; otherwise, return spec for
3309in the inherit parameter are not added to the returned spec." 3288FACE from the variable `mh-face-data'. This isn't a perfect
3310 (if (and inherit mh-inherit-face-flag) 3289implementation. In the case that the :inherit keyword is not
3311 inherit 3290supported, any additional attributes in the inherit parameter are
3312 (mh-defface-compat (cadr (assoc face mh-face-data))))) 3291not added to the returned spec.
3292
3293Furthermore, when `mh-min-colors-defined-flag' is nil, this
3294function finds display entries with \"min-colors\" requirements
3295and either removes the \"min-colors\" requirement or strips the
3296display entirely if the display does not support the number of
3297specified colors."
3298 (let ((spec
3299 (if (and inherit mh-inherit-face-flag)
3300 inherit
3301 (or (cadr (assq face mh-face-data))
3302 (error "Could not find %s in mh-face-data" face)))))
3303
3304 (if mh-min-colors-defined-flag
3305 spec
3306 (let ((cells (mh-display-color-cells))
3307 new-spec)
3308 ;; Remove entries with min-colors, or delete them if we have
3309 ;; fewer colors than they specify.
3310 (loop for entry in (reverse spec) do
3311 (let ((requirement (if (eq (car entry) t)
3312 nil
3313 (assq 'min-colors (car entry)))))
3314 (if requirement
3315 (when (>= cells (nth 1 requirement))
3316 (setq new-spec (cons (cons (delq requirement (car entry))
3317 (cdr entry))
3318 new-spec)))
3319 (setq new-spec (cons entry new-spec)))))
3320 new-spec))))
3313 3321
3314(mh-defface mh-folder-address 3322(mh-defface mh-folder-address
3315 (mh-face-data 'mh-folder-subject '((t (:inherit mh-folder-subject)))) 3323 (mh-face-data 'mh-folder-subject '((t (:inherit mh-folder-subject))))
@@ -3520,9 +3528,9 @@ The background and foreground are used in the image."
3520;; Get rid of temporary functions and data structures. 3528;; Get rid of temporary functions and data structures.
3521(fmakunbound 'mh-defcustom) 3529(fmakunbound 'mh-defcustom)
3522(fmakunbound 'mh-defface) 3530(fmakunbound 'mh-defface)
3523(fmakunbound 'mh-defface-compat)
3524(fmakunbound 'mh-defgroup) 3531(fmakunbound 'mh-defgroup)
3525(fmakunbound 'mh-face-data) 3532(fmakunbound 'mh-face-data)
3533(fmakunbound 'mh-strip-package-version)
3526(makunbound 'mh-face-data) 3534(makunbound 'mh-face-data)
3527(makunbound 'mh-inherit-face-flag) 3535(makunbound 'mh-inherit-face-flag)
3528(makunbound 'mh-min-colors-defined-flag) 3536(makunbound 'mh-min-colors-defined-flag)
diff --git a/lisp/pcomplete.el b/lisp/pcomplete.el
index 36878d2dff9..0f970c5191a 100644
--- a/lisp/pcomplete.el
+++ b/lisp/pcomplete.el
@@ -978,7 +978,9 @@ Typing SPC flushes the help buffer."
978 (set-window-configuration pcomplete-last-window-config) 978 (set-window-configuration pcomplete-last-window-config)
979 (setq pcomplete-last-window-config nil) 979 (setq pcomplete-last-window-config nil)
980 (throw 'done nil)) 980 (throw 'done nil))
981 ((event-matches-key-specifier-p event 'tab) 981 ((or (event-matches-key-specifier-p event 'tab)
982 ;; Needed on a terminal
983 (event-matches-key-specifier-p event 9))
982 (save-selected-window 984 (save-selected-window
983 (select-window (get-buffer-window "*Completions*")) 985 (select-window (get-buffer-window "*Completions*"))
984 (if (pos-visible-in-window-p (point-max)) 986 (if (pos-visible-in-window-p (point-max))
diff --git a/lisp/pcvs-util.el b/lisp/pcvs-util.el
index 9ff40d09494..b04f3c121a1 100644
--- a/lisp/pcvs-util.el
+++ b/lisp/pcvs-util.el
@@ -157,10 +157,11 @@ Uses columns to keep the listing readable but compact."
157 (setq tab-width colwidth) 157 (setq tab-width colwidth)
158 ;; The insertion should be "sensible" no matter what choices were made. 158 ;; The insertion should be "sensible" no matter what choices were made.
159 (dolist (str strings) 159 (dolist (str strings)
160 (unless (bolp) (insert " \t")) 160 (unless (bolp)
161 (when (< wwidth (+ (max colwidth (length str)) (current-column))) 161 (insert " \t")
162 (delete-char -2) (insert "\n")) 162 (when (< wwidth (+ (max colwidth (length str)) (current-column)))
163 (insert str))))) 163 (delete-char -2) (insert "\n")))
164 (insert str)))))
164 165
165 166
166(defun cvs-file-to-string (file &optional oneline args) 167(defun cvs-file-to-string (file &optional oneline args)
@@ -357,7 +358,8 @@ If ARG is nil toggle the PREFIX's value between its 0th default and nil
357 and reset the persistence." 358 and reset the persistence."
358 (let* ((prefix (symbol-value (cvs-prefix-sym sym))) 359 (let* ((prefix (symbol-value (cvs-prefix-sym sym)))
359 (numarg (if (integerp arg) arg 0)) 360 (numarg (if (integerp arg) arg 0))
360 (defs (cvs-flags-defaults prefix))) 361 ;; (defs (cvs-flags-defaults prefix))
362 )
361 363
362 ;; set persistence if requested 364 ;; set persistence if requested
363 (when (> (prefix-numeric-value arg) 9) 365 (when (> (prefix-numeric-value arg) 9)
diff --git a/lisp/shell.el b/lisp/shell.el
index f7eaeb84341..71b5862feb6 100644
--- a/lisp/shell.el
+++ b/lisp/shell.el
@@ -574,7 +574,7 @@ Otherwise, one argument `-i' is passed to the shell.
574;;; 2. It cannot infallibly deal with command sequences, though it does well 574;;; 2. It cannot infallibly deal with command sequences, though it does well
575;;; with these and with ignoring commands forked in another shell with ()s. 575;;; with these and with ignoring commands forked in another shell with ()s.
576;;; 3. More generally, any complex command is going to throw it. Otherwise, 576;;; 3. More generally, any complex command is going to throw it. Otherwise,
577;;; you'd have to build an entire shell interpreter in emacs lisp. Failing 577;;; you'd have to build an entire shell interpreter in Emacs Lisp. Failing
578;;; that, there's no way to catch shell commands where cd's are buried 578;;; that, there's no way to catch shell commands where cd's are buried
579;;; inside conditional expressions, aliases, and so forth. 579;;; inside conditional expressions, aliases, and so forth.
580;;; 580;;;
@@ -608,7 +608,7 @@ It watches for cd, pushd and popd commands and sets the buffer's
608default directory to track these commands. 608default directory to track these commands.
609 609
610You may toggle this tracking on and off with M-x dirtrack-mode. 610You may toggle this tracking on and off with M-x dirtrack-mode.
611If emacs gets confused, you can resync with the shell with M-x dirs. 611If Emacs gets confused, you can resync with the shell with M-x dirs.
612 612
613See variables `shell-cd-regexp', `shell-chdrive-regexp', `shell-pushd-regexp', 613See variables `shell-cd-regexp', `shell-chdrive-regexp', `shell-pushd-regexp',
614and `shell-popd-regexp', while `shell-pushd-tohome', `shell-pushd-dextract', 614and `shell-popd-regexp', while `shell-pushd-tohome', `shell-pushd-dextract',
@@ -929,7 +929,7 @@ See `shell-command-regexp'."
929(defun shell-dynamic-complete-command () 929(defun shell-dynamic-complete-command ()
930 "Dynamically complete the command at point. 930 "Dynamically complete the command at point.
931This function is similar to `comint-dynamic-complete-filename', except that it 931This function is similar to `comint-dynamic-complete-filename', except that it
932searches `exec-path' (minus the trailing emacs library path) for completion 932searches `exec-path' (minus the trailing Emacs library path) for completion
933candidates. Note that this may not be the same as the shell's idea of the 933candidates. Note that this may not be the same as the shell's idea of the
934path. 934path.
935 935
diff --git a/lisp/speedbar.el b/lisp/speedbar.el
index 2e55c4929d5..4b83f08d89d 100644
--- a/lisp/speedbar.el
+++ b/lisp/speedbar.el
@@ -503,7 +503,7 @@ hierarchy would be replaced with the new directory."
503 :type 'hook) 503 :type 'hook)
504 504
505(defcustom speedbar-after-create-hook '(speedbar-frame-reposition-smartly) 505(defcustom speedbar-after-create-hook '(speedbar-frame-reposition-smartly)
506 "*Hooks called before popping up the speedbar frame." 506 "*Hooks called after popping up the speedbar frame."
507 :group 'speedbar 507 :group 'speedbar
508 :type 'hook) 508 :type 'hook)
509 509
diff --git a/man/ChangeLog b/man/ChangeLog
index e192728c43c..aec9693d1f9 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,36 @@
12006-03-31 Romain Francoise <romain@orebokech.com>
2
3 * gnus.texi (Virtual Groups): `nnvirtual-always-rescan' defaults
4 to t, not nil (and has for the past eight years).
5
62006-03-31 Richard Stallman <rms@gnu.org>
7
8 * emacs.texi (Top): Update subnode menu.
9
10 * help.texi (Help Mode): Cleanup.
11
12 * dired.texi: Many cleanups.
13 (Dired Deletion): Describe dired-recursive-deletes.
14 (Operating on Files): dired-create-directory moved.
15 (Misc Dired Features): Moved to here.
16 (Tumme): Node moved to misc.texi.
17
18 * custom.texi: Many cleanups.
19 (Minor Modes): Don't mention ISO Accents Mode.
20 (Examining): Update C-h v output example.
21 (Hooks): Add index and xref for add-hook.
22 (Locals): Delete list of vars that are always per-buffer. Rearrange.
23 (Local Keymaps): Don't mention lisp-mode-map, c-mode-map.
24
25 * misc.texi: Many cleanups.
26 (beginning): Add to summary of topics.
27 (Shell): Put eshell xref at the end. Remove eshell from table.
28 (Thumbnails): New node.
29
302006-03-31 Reiner Steib <Reiner.Steib@gmx.de>
31
32 * message.texi, gnus.texi: Bump version to 5.11.
33
12006-03-29 Reiner Steib <Reiner.Steib@gmx.de> 342006-03-29 Reiner Steib <Reiner.Steib@gmx.de>
2 35
3 * gnus.texi (Top): Add comment about version line. 36 * gnus.texi (Top): Add comment about version line.
@@ -131,6 +164,10 @@
131 164
132 * org.texi (Clean view): Document new startup options. 165 * org.texi (Clean view): Document new startup options.
133 166
1672006-03-12 Richard Stallman <rms@gnu.org>
168
169 * calendar.texi: Various cleanups.
170
1342006-03-11 Bill Wohler <wohler@newt.com> 1712006-03-11 Bill Wohler <wohler@newt.com>
135 172
136 * mh-e.texi (Preface, More About MH-E, Options, HTML, Folders) 173 * mh-e.texi (Preface, More About MH-E, Options, HTML, Folders)
diff --git a/man/custom.texi b/man/custom.texi
index db88f64f839..8429ddaae74 100644
--- a/man/custom.texi
+++ b/man/custom.texi
@@ -7,7 +7,7 @@
7@cindex customization 7@cindex customization
8 8
9 This chapter talks about various topics relevant to adapting the 9 This chapter talks about various topics relevant to adapting the
10behavior of Emacs in minor ways. 10behavior of Emacs in ways we have anticipated.
11@iftex 11@iftex
12See @cite{The Emacs Lisp Reference Manual} 12See @cite{The Emacs Lisp Reference Manual}
13@end iftex 13@end iftex
@@ -15,14 +15,14 @@ See @cite{The Emacs Lisp Reference Manual}
15@xref{Top, Emacs Lisp, Emacs Lisp, elisp, The Emacs Lisp 15@xref{Top, Emacs Lisp, Emacs Lisp, elisp, The Emacs Lisp
16Reference Manual}, 16Reference Manual},
17@end ifnottex 17@end ifnottex
18for how to make more far-reaching changes. @xref{X Resources}, 18for how to make more far-reaching and open-ended changes. @xref{X
19for information on using X resources to customize Emacs. 19Resources}, for information on using X resources to customize Emacs.
20 20
21 Customization that you do within Emacs normally affects only the 21 Customization that you do within Emacs normally affects only the
22particular Emacs session that you do it in---it does not persist 22particular Emacs session that you do it in---it does not persist
23between sessions unless you save the customization in a file such as 23between sessions unless you save the customization in a file such as
24@file{.emacs} or @file{.Xdefaults} that will affect future sessions. 24your init file (@file{.emacs}) that will affect future sessions.
25@xref{Init File}. In the customization buffer, when you save 25(@xref{Init File}.) When you tell the customization buffer to save
26customizations for future sessions, this actually works by editing 26customizations for future sessions, this actually works by editing
27@file{.emacs} for you. 27@file{.emacs} for you.
28 28
@@ -55,17 +55,19 @@ replay sequences of keys.
55example, Auto Fill mode is a minor mode in which @key{SPC} breaks lines 55example, Auto Fill mode is a minor mode in which @key{SPC} breaks lines
56between words as you type. All the minor modes are independent of each 56between words as you type. All the minor modes are independent of each
57other and of the selected major mode. Most minor modes say in the mode 57other and of the selected major mode. Most minor modes say in the mode
58line when they are on; for example, @samp{Fill} in the mode line means 58line when they are enabled; for example, @samp{Fill} in the mode line means
59that Auto Fill mode is on. 59that Auto Fill mode is enabled.
60 60
61 Append @code{-mode} to the name of a minor mode to get the name of a 61 You should append @code{-mode} to the name of a minor mode to
62command that turns the mode on or off. Thus, the command to 62produce the name of the command that turns the mode on or off. Thus,
63enable or disable Auto Fill mode is called @code{auto-fill-mode}. These 63the command to enable or disable Auto Fill mode is called
64commands are usually invoked with @kbd{M-x}, but you can bind keys to them 64@code{auto-fill-mode}. These commands are usually invoked with
65if you wish. With no argument, the function turns the mode on if it was 65@kbd{M-x}, but you can bind keys to them if you wish.
66off and off if it was on. This is known as @dfn{toggling}. A positive 66
67argument always turns the mode on, and an explicit zero argument or a 67 With no argument, the minor mode function turns the mode on if it
68negative argument always turns it off. 68was off, and off if it was on. This is known as @dfn{toggling}. A
69positive argument always turns the mode on, and an explicit zero
70argument or a negative argument always turns it off.
69 71
70 Some minor modes are global: while enabled, they affect everything 72 Some minor modes are global: while enabled, they affect everything
71you do in the Emacs session, in all buffers. Other minor modes are 73you do in the Emacs session, in all buffers. Other minor modes are
@@ -94,8 +96,8 @@ a matter of user preference---other users editing the same file might
94not want the same minor modes you prefer. 96not want the same minor modes you prefer.
95 97
96 The most useful buffer-local minor modes include Abbrev mode, Auto 98 The most useful buffer-local minor modes include Abbrev mode, Auto
97Fill mode, Auto Save mode, Font-Lock mode, Glasses mode, ISO Accents 99Fill mode, Auto Save mode, Font-Lock mode, Glasses mode, Outline minor
98mode, Outline minor mode, Overwrite mode, and Binary Overwrite mode. 100mode, Overwrite mode, and Binary Overwrite mode.
99 101
100 Abbrev mode allows you to define abbreviations that automatically expand 102 Abbrev mode allows you to define abbreviations that automatically expand
101as you type them. For example, @samp{amd} might expand to @samp{abbrev 103as you type them. For example, @samp{amd} might expand to @samp{abbrev
@@ -105,9 +107,8 @@ mode}. @xref{Abbrevs}, for full information.
105explicitly. Emacs inserts newlines as necessary to prevent lines from 107explicitly. Emacs inserts newlines as necessary to prevent lines from
106becoming too long. @xref{Filling}. 108becoming too long. @xref{Filling}.
107 109
108 Auto Save mode causes the contents of a buffer to be saved 110 Auto Save mode saves the buffer contents periodically to reduce the
109periodically to reduce the amount of work you can lose in case of a 111amount of work you can lose in case of a crash. @xref{Auto Save}.
110system crash. @xref{Auto Save}.
111 112
112 Enriched mode enables editing and saving of formatted text. 113 Enriched mode enables editing and saving of formatted text.
113@xref{Formatted Text}. 114@xref{Formatted Text}.
@@ -115,16 +116,18 @@ system crash. @xref{Auto Save}.
115 Flyspell mode automatically highlights misspelled words. 116 Flyspell mode automatically highlights misspelled words.
116@xref{Spelling}. 117@xref{Spelling}.
117 118
118 Font-Lock mode automatically highlights certain textual units found in 119 Font-Lock mode automatically highlights certain textual units found
119programs, such as comments, strings, and function names being defined. 120in programs, such as comments, strings, and function names being
120This requires a graphical display that can show multiple fonts. 121defined. This requires a display that can show multiple fonts or
121@xref{Faces}. 122colors. @xref{Faces}.
122 123
124@ignore
123 ISO Accents mode makes the characters @samp{`}, @samp{'}, @samp{"}, 125 ISO Accents mode makes the characters @samp{`}, @samp{'}, @samp{"},
124@samp{^}, @samp{/} and @samp{~} combine with the following letter, to 126@samp{^}, @samp{/} and @samp{~} combine with the following letter, to
125produce an accented letter in the ISO Latin-1 character set. The 127produce an accented letter in the ISO Latin-1 character set. The
126newer and more general feature of input methods more or less 128newer and more general feature of input methods more or less
127supersedes ISO Accents mode. @xref{Unibyte Mode}. 129supersedes ISO Accents mode. @xref{Unibyte Mode}.
130@end ignore
128 131
129 Outline minor mode provides the same facilities as the major mode 132 Outline minor mode provides the same facilities as the major mode
130called Outline mode; but since it is a minor mode instead, you can 133called Outline mode; but since it is a minor mode instead, you can
@@ -286,15 +289,15 @@ settings. This command creates a special customization buffer which
286shows only the names of groups and settings, and puts them in a 289shows only the names of groups and settings, and puts them in a
287structure. 290structure.
288 291
289 In this buffer, you can show the contents of a group by invoking 292 In this buffer, you can show the contents of a group by invoking the
290@samp{[+]}. When the group contents are visible, this button changes to 293@samp{[+]} button. When the group contents are visible, this button
291@samp{[-]}; invoking that hides the group contents. 294changes to @samp{[-]}; invoking that hides the group contents again.
292 295
293 Each setting in this buffer has a link which says @samp{[Group]}, 296 Each group or setting in this buffer has a link which says
294@samp{[Option]} or @samp{[Face]}. Invoking this link creates an 297@samp{[Group]}, @samp{[Option]} or @samp{[Face]}. Invoking this link
295ordinary customization buffer showing just that group and its 298creates an ordinary customization buffer showing just that group and
296contents, just that user option, or just that face. This is the way 299its contents, just that user option, or just that face. This is the
297to change settings that you find with @kbd{M-x customize-browse}. 300way to change settings that you find with @kbd{M-x customize-browse}.
298 301
299 If you can guess part of the name of the settings you are interested 302 If you can guess part of the name of the settings you are interested
300in, @kbd{M-x customize-apropos} is another way to search for settings. 303in, @kbd{M-x customize-apropos} is another way to search for settings.
@@ -343,6 +346,8 @@ value:
343 save it. 346 save it.
344@end smallexample 347@end smallexample
345 348
349@cindex user options, how to set
350@cindex variables, how to set
346@cindex settings, how to set 351@cindex settings, how to set
347 Editing the value does not actually set the variable. To do that, 352 Editing the value does not actually set the variable. To do that,
348you must @dfn{set} the variable. To do this, invoke the 353you must @dfn{set} the variable. To do this, invoke the
@@ -415,8 +420,8 @@ instance, to specify a function instead of a pair of coding systems.
415To delete an association from the list, invoke the @samp{[DEL]} button 420To delete an association from the list, invoke the @samp{[DEL]} button
416for that item. To add an association, invoke @samp{[INS]} at the 421for that item. To add an association, invoke @samp{[INS]} at the
417position where you want to add it. There is an @samp{[INS]} button 422position where you want to add it. There is an @samp{[INS]} button
418between each pair of association, another at the beginning and another 423between each pair of associations, another at the beginning and another
419at the end, so you can add the new association at any position in the 424at the end, so you can add a new association at any position in the
420list. 425list.
421 426
422@kindex TAB @r{(customization buffer)} 427@kindex TAB @r{(customization buffer)}
@@ -469,7 +474,7 @@ and then reset it, which discards the customized value,
469you can get the customized value back again with this operation. 474you can get the customized value back again with this operation.
470@end table 475@end table
471 476
472@cindex comments on customized options 477@cindex comments on customized settings
473 Sometimes it is useful to record a comment about a specific 478 Sometimes it is useful to record a comment about a specific
474customization. Use the @samp{Add Comment} item from the 479customization. Use the @samp{Add Comment} item from the
475@samp{[State]} menu to create a field for entering the comment. The 480@samp{[State]} menu to create a field for entering the comment. The
@@ -494,13 +499,17 @@ buffer according to the setting of the option
494Each of the other buttons performs an operation---set, save or 499Each of the other buttons performs an operation---set, save or
495reset---on each of the settings in the buffer that could meaningfully 500reset---on each of the settings in the buffer that could meaningfully
496be set, saved or reset. They do not operate on settings whose values 501be set, saved or reset. They do not operate on settings whose values
497are hidden, nor on subgroups not visible in the buffer. 502are hidden, nor on subgroups which are hidden or not visible in the buffer.
498 503
499@node Saving Customizations 504@node Saving Customizations
500@subsection Saving Customizations 505@subsection Saving Customizations
501 506
507 Saving customizations from the customization buffer works by writing
508code that future sessions will read, code to set up those
509customizations again.
510
502@vindex custom-file 511@vindex custom-file
503 The customization buffer normally saves customizations in 512 Normally this saves customizations in your init file,
504@file{~/.emacs}. If you wish, you can save customizations in another 513@file{~/.emacs}. If you wish, you can save customizations in another
505file instead. To make this work, your @file{~/.emacs} should set 514file instead. To make this work, your @file{~/.emacs} should set
506@code{custom-file} to the name of that file. Then you should load the 515@code{custom-file} to the name of that file. Then you should load the
@@ -511,8 +520,8 @@ file by calling @code{load}. For example:
511(load custom-file) 520(load custom-file)
512@end example 521@end example
513 522
514 You can also use @code{custom-file} to specify different 523 You can use @code{custom-file} to specify different customization
515customization files for different Emacs versions, like this: 524files for different Emacs versions, like this:
516 525
517@example 526@example
518(cond ((< emacs-major-version 21) 527(cond ((< emacs-major-version 21)
@@ -650,9 +659,9 @@ on the character after point.
650@findex customize-group 659@findex customize-group
651 You can also set up the customization buffer with a specific group, 660 You can also set up the customization buffer with a specific group,
652using @kbd{M-x customize-group}. The immediate contents of the chosen 661using @kbd{M-x customize-group}. The immediate contents of the chosen
653group, including variables, faces, and other groups, all appear 662group, including settings (variables and faces), and other groups, all
654as well (even if not already loaded). However, the subgroups' own 663appear as well (even if not already loaded). However, the subgroups'
655contents are not included. 664own contents are not included.
656 665
657@findex customize-apropos 666@findex customize-apropos
658 To control more precisely what to customize, you can use @kbd{M-x 667 To control more precisely what to customize, you can use @kbd{M-x
@@ -663,13 +672,13 @@ specify an empty regular expression, this includes @emph{all} loaded
663groups and settings---which takes a long time to set up. 672groups and settings---which takes a long time to set up.
664 673
665@findex customize-changed 674@findex customize-changed
666 When you upgrade to a new Emacs version, you might want to customize 675 When you upgrade to a new Emacs version, you might want to consider
667new settings and settings whose meanings or default values have 676customizing new settings, and settings whose meanings or default
668changed. To do this, use @kbd{M-x customize-changed} and 677values have changed. To do this, use @kbd{M-x customize-changed} and
669specify a previous Emacs version number using the minibuffer. It 678specify a previous Emacs version number using the minibuffer. It
670creates a customization buffer which shows all the settings and groups 679creates a customization buffer which shows all the settings and groups
671whose definitions have been changed since the specified version, loading 680whose definitions have been changed since the specified version,
672them if necessary. 681loading them if necessary.
673 682
674@findex customize-saved 683@findex customize-saved
675@findex customize-customized 684@findex customize-customized
@@ -712,7 +721,7 @@ by visiting the ``special'' theme named @samp{user}. This theme, which
712records all the options that you set in the ordinary customization 721records all the options that you set in the ordinary customization
713buffer, is always enabled, and always takes precedence over all other 722buffer, is always enabled, and always takes precedence over all other
714enabled Custom themes. Additionally, the @samp{user} theme is 723enabled Custom themes. Additionally, the @samp{user} theme is
715recorded in your @file{.emacs} file, rather than a 724recorded with code in your @file{.emacs} file, rather than a
716@file{user-theme.el} file. 725@file{user-theme.el} file.
717 726
718@vindex custom-enabled-themes 727@vindex custom-enabled-themes
@@ -734,7 +743,7 @@ theme occurring earlier in @code{custom-enabled-themes} takes effect.
734 You can temporarily enable a Custom theme with @kbd{M-x 743 You can temporarily enable a Custom theme with @kbd{M-x
735enable-theme}. This prompts for a theme name in the minibuffer, loads 744enable-theme}. This prompts for a theme name in the minibuffer, loads
736the theme from the theme file if necessary, and enables the theme. 745the theme from the theme file if necessary, and enables the theme.
737You can @dfn{disabled} any enabled theme with the command @kbd{M-x 746You can @dfn{disable} any enabled theme with the command @kbd{M-x
738disable-theme}; this returns the options specified in the theme to 747disable-theme}; this returns the options specified in the theme to
739their original values. To re-enable the theme, type @kbd{M-x 748their original values. To re-enable the theme, type @kbd{M-x
740enable-theme} again. If a theme file is changed during your Emacs 749enable-theme} again. If a theme file is changed during your Emacs
@@ -755,7 +764,7 @@ have a documentation string which describes what kind of value it should
755have and how the value will be used. 764have and how the value will be used.
756 765
757 Emacs Lisp allows any variable (with a few exceptions) to have any 766 Emacs Lisp allows any variable (with a few exceptions) to have any
758kind of value, but most variables that Emacs uses need a value of a 767kind of value, but most variables that Emacs uses expect a value of a
759certain type. Often the value should always be a string, or should 768certain type. Often the value should always be a string, or should
760always be a number. Sometimes we say that a certain feature is turned 769always be a number. Sometimes we say that a certain feature is turned
761on if a variable is ``non-@code{nil},'' meaning that if the variable's 770on if a variable is ``non-@code{nil},'' meaning that if the variable's
@@ -766,11 +775,11 @@ variable---is @code{t}.
766 775
767 Emacs uses many Lisp variables for internal record keeping, but the 776 Emacs uses many Lisp variables for internal record keeping, but the
768most interesting variables for a non-programmer user are those meant 777most interesting variables for a non-programmer user are those meant
769for users to change---the @dfn{user options}. 778for users to change---these are called @dfn{user options}.
770 779
771 Each user option that you can set with the customization buffer is 780 Each user option that you can set with the customization buffer is
772in fact a Lisp variable. Emacs does not (usually) change the values 781in fact a Lisp variable. Emacs does not (usually) change the values
773of these variables; instead, you set the values, and thereby alter and 782of these variables on its own; instead, you set the values in order to
774control the behavior of certain Emacs commands. Use of the 783control the behavior of certain Emacs commands. Use of the
775customization buffer is explained above (@pxref{Easy Customization}); 784customization buffer is explained above (@pxref{Easy Customization});
776here we describe other aspects of Emacs variables. 785here we describe other aspects of Emacs variables.
@@ -808,21 +817,27 @@ C-h v fill-column @key{RET}
808displays something like this: 817displays something like this:
809 818
810@smallexample 819@smallexample
820fill-column is a variable defined in `C source code'.
811fill-column's value is 70 821fill-column's value is 70
822Local in buffer custom.texi; global value is 70
823Automatically becomes buffer-local when set in any fashion.
812 824
813Documentation: 825Documentation:
814*Column beyond which automatic line-wrapping should happen. 826*Column beyond which automatic line-wrapping should happen.
815Automatically becomes buffer-local when set in any fashion. 827Interactively, you can set the buffer local value using C-x f.
828
829You can customize this variable.
816@end smallexample 830@end smallexample
817 831
818@noindent 832@noindent
819The star at the beginning of the documentation indicates that this 833The line that says you can customize the variable indicates that this
820variable is a user option. @kbd{C-h v} is not restricted to user 834variable is a user option. (The star also indicates this, but it is
821options; it allows any variable name. 835an obsolete indicator that may eventually disappear.) @kbd{C-h v} is
836not restricted to user options; it allows any variable name.
822 837
823@findex set-variable 838@findex set-variable
824 The most convenient way to set a specific user option variable is 839The most convenient way to set a specific user option variable is with
825with @kbd{M-x set-variable}. This reads the variable name with the 840@kbd{M-x set-variable}. This reads the variable name with the
826minibuffer (with completion), and then reads a Lisp expression for the 841minibuffer (with completion), and then reads a Lisp expression for the
827new value using the minibuffer a second time (you can insert the old 842new value using the minibuffer a second time (you can insert the old
828value into the minibuffer for editing via @kbd{M-n}). For example, 843value into the minibuffer for editing via @kbd{M-n}). For example,
@@ -889,13 +904,11 @@ as soon as one hook function returns a non-@code{nil} value, the rest
889are not called at all. The documentation of each abnormal hook variable 904are not called at all. The documentation of each abnormal hook variable
890explains in detail what is peculiar about it. 905explains in detail what is peculiar about it.
891 906
907@findex add-hook
892 You can set a hook variable with @code{setq} like any other Lisp 908 You can set a hook variable with @code{setq} like any other Lisp
893variable, but the recommended way to add a hook function to a hook 909variable, but the recommended way to add a hook function to a hook
894(either normal or abnormal) is by calling @code{add-hook}. You can 910(either normal or abnormal) is by calling @code{add-hook}.
895specify any valid Lisp function as the hook function, provided it can 911@xref{Hooks,,, elisp, The Emacs Lisp Reference Manual}.
896handle the proper number of arguments (zero arguments, in the case of
897a normal hook). Of course, not every Lisp function is @emph{useful}
898in any particular hook.
899 912
900 For example, here's how to set up a hook to turn on Auto Fill mode 913 For example, here's how to set up a hook to turn on Auto Fill mode
901when entering Text mode and other modes based on Text mode: 914when entering Text mode and other modes based on Text mode:
@@ -936,11 +949,12 @@ they are executed does not matter. Any dependence on the order is
936``asking for trouble.'' However, the order is predictable: the most 949``asking for trouble.'' However, the order is predictable: the most
937recently added hook functions are executed first. 950recently added hook functions are executed first.
938 951
952@findex remove-hook
939 If you play with adding various different versions of a hook 953 If you play with adding various different versions of a hook
940function by calling @code{add-hook} over and over, remember that all 954function by calling @code{add-hook} over and over, remember that all
941the versions you added will remain in the hook variable together. You 955the versions you added will remain in the hook variable together. You
942can clear out individual functions with @code{remove-hook}, or do 956can clear out individual functions by calling @code{remove-hook}, or
943@code{(setq @var{hook-variable} nil)} to remove everything. 957do @code{(setq @var{hook-variable} nil)} to remove everything.
944 958
945@node Locals 959@node Locals
946@subsection Local Variables 960@subsection Local Variables
@@ -963,46 +977,41 @@ buffer. Every other Emacs variable has a @dfn{global} value which is in
963effect in all buffers that have not made the variable local. 977effect in all buffers that have not made the variable local.
964 978
965@findex make-local-variable 979@findex make-local-variable
966 @kbd{M-x make-local-variable} reads the name of a variable and makes it 980 @kbd{M-x make-local-variable} reads the name of a variable and makes
967local to the current buffer. Further changes in this buffer will not 981it local to the current buffer. Changing its value subsequently in
968affect others, and further changes in the global value will not affect this 982this buffer will not affect others, and changes in its global value
969buffer. 983will not affect this buffer.
970 984
971@findex make-variable-buffer-local 985@findex make-variable-buffer-local
972@cindex per-buffer variables 986@cindex per-buffer variables
973 @kbd{M-x make-variable-buffer-local} reads the name of a variable and 987 @kbd{M-x make-variable-buffer-local} marks a variable so it will
974changes the future behavior of the variable so that it will become local 988become local automatically whenever it is set. More precisely, once a
975automatically when it is set. More precisely, once a variable has been 989variable has been marked in this way, the usual ways of setting the
976marked in this way, the usual ways of setting the variable automatically 990variable automatically do @code{make-local-variable} first. We call
977do @code{make-local-variable} first. We call such variables 991such variables @dfn{per-buffer} variables. Many variables in Emacs
978@dfn{per-buffer} variables. 992are normally per-buffer; the variable's document string tells you when
993this is so. A per-buffer variable's global value is normally never
994effective in any buffer, but it still has a meaning: it is the initial
995value of the variable for each new buffer.
979 996
980 Major modes (@pxref{Major Modes}) always make variables local to the 997 Major modes (@pxref{Major Modes}) always make variables local to the
981buffer before setting the variables. This is why changing major modes 998buffer before setting the variables. This is why changing major modes
982in one buffer has no effect on other buffers. Minor modes also work by 999in one buffer has no effect on other buffers. Minor modes also work
983setting variables---normally, each minor mode has one controlling 1000by setting variables---normally, each minor mode has one controlling
984variable which is non-@code{nil} when the mode is enabled (@pxref{Minor 1001variable which is non-@code{nil} when the mode is enabled
985Modes}). For most minor modes, the controlling variable is per buffer. 1002(@pxref{Minor Modes}). For many minor modes, the controlling variable
986 1003is per buffer, and thus always buffer-local. Otherwise, you can make
987 Emacs contains a number of variables that are always per-buffer. 1004it local in a specific buffer like any other variable.
988These include @code{abbrev-mode}, @code{auto-fill-function},
989@code{case-fold-search}, @code{comment-column}, @code{ctl-arrow},
990@code{fill-column}, @code{fill-prefix}, @code{indent-tabs-mode},
991@code{left-margin}, @code{mode-line-format}, @code{overwrite-mode},
992@code{selective-display-ellipses}, @code{selective-display},
993@code{tab-width}, and @code{truncate-lines}. Some other variables are
994always local in every buffer, but they are used for internal
995purposes.@refill
996 1005
997 A few variables cannot be local to a buffer because they are always 1006 A few variables cannot be local to a buffer because they are always
998local to each display instead (@pxref{Multiple Displays}). If you try to 1007local to each display instead (@pxref{Multiple Displays}). If you try to
999make one of these variables buffer-local, you'll get an error message. 1008make one of these variables buffer-local, you'll get an error message.
1000 1009
1001@findex kill-local-variable 1010@findex kill-local-variable
1002 @kbd{M-x kill-local-variable} reads the name of a variable and makes 1011 @kbd{M-x kill-local-variable} makes a specified variable cease to be
1003it cease to be local to the current buffer. The global value of the 1012local to the current buffer. The global value of the variable
1004variable henceforth is in effect in this buffer. Setting the major mode 1013henceforth is in effect in this buffer. Setting the major mode kills
1005kills all the local variables of the buffer except for a few variables 1014all the local variables of the buffer except for a few variables
1006specially marked as @dfn{permanent locals}. 1015specially marked as @dfn{permanent locals}.
1007 1016
1008@findex setq-default 1017@findex setq-default
@@ -1082,9 +1091,9 @@ the first line as well.
1082 1091
1083@cindex shell scripts, and local file variables 1092@cindex shell scripts, and local file variables
1084 In shell scripts, the first line is used to identify the script 1093 In shell scripts, the first line is used to identify the script
1085interpreter, so you cannot put any local variables there. To accommodate 1094interpreter, so you cannot put any local variables there. To
1086for this, when Emacs visits a shell script, it looks for local variable 1095accommodate this, Emacs looks for local variable specifications in the
1087specifications in the @emph{second} line. 1096@emph{second} line when the first line specifies an interpreter.
1088 1097
1089 A @dfn{local variables list} goes near the end of the file, in the 1098 A @dfn{local variables list} goes near the end of the file, in the
1090last page. (It is often best to put it on a page by itself.) The local 1099last page. (It is often best to put it on a page by itself.) The local
@@ -1108,9 +1117,9 @@ variables list afterward.
1108;;; End: *** 1117;;; End: ***
1109@end example 1118@end example
1110 1119
1111 As you see, each line starts with the prefix @samp{;;; } and each line 1120 Each line starts with the prefix @samp{;;; } and each line ends with
1112ends with the suffix @samp{ ***}. Emacs recognizes these as the prefix 1121the suffix @samp{ ***}. Emacs recognizes these as the prefix and
1113and suffix based on the first line of the list, by finding them 1122suffix based on the first line of the list, by finding them
1114surrounding the magic string @samp{Local Variables:}; then it 1123surrounding the magic string @samp{Local Variables:}; then it
1115automatically discards them from the other lines of the list. 1124automatically discards them from the other lines of the list.
1116 1125
@@ -1155,8 +1164,7 @@ as part of their initialization.
1155as the major modes; in fact, you can use it more than once, first to 1164as the major modes; in fact, you can use it more than once, first to
1156set the major mode and then to set minor modes which are specific to 1165set the major mode and then to set minor modes which are specific to
1157particular buffers. But most minor modes should not be specified in 1166particular buffers. But most minor modes should not be specified in
1158the file at all, regardless of how, because they represent user 1167the file at all, because they represent user preferences.
1159preferences.
1160 1168
1161 For example, you may be tempted to try to turn on Auto Fill mode with 1169 For example, you may be tempted to try to turn on Auto Fill mode with
1162a local variable list. That is a mistake. The choice of Auto Fill mode 1170a local variable list. That is a mistake. The choice of Auto Fill mode
@@ -1197,10 +1205,10 @@ answer @samp{n}.
1197 1205
1198 Emacs normally recognizes certain variables/value pairs as safe. 1206 Emacs normally recognizes certain variables/value pairs as safe.
1199For instance, it is safe to give @code{comment-column} or 1207For instance, it is safe to give @code{comment-column} or
1200@code{fill-column} any integer value. If a file specifies only safe 1208@code{fill-column} any integer value. If a file specifies only
1201variable/value pairs, Emacs does not ask for confirmation before 1209known-safe variable/value pairs, Emacs does not ask for confirmation
1202setting them. Otherwise, you can tell Emacs to record that all the 1210before setting them. Otherwise, you can tell Emacs to record all the
1203variable/value pairs in the file are safe, by typing @kbd{!} at the 1211variable/value pairs in this file as safe, by typing @kbd{!} at the
1204confirmation prompt. When Emacs encounters these variable/value pairs 1212confirmation prompt. When Emacs encounters these variable/value pairs
1205subsequently, in the same file or others, it will assume they are 1213subsequently, in the same file or others, it will assume they are
1206safe. 1214safe.
@@ -1232,9 +1240,10 @@ is neither @code{t} nor @code{nil}, so normally Emacs does ask for
1232confirmation about processes @code{eval} variables. 1240confirmation about processes @code{eval} variables.
1233 1241
1234@vindex safe-local-eval-forms 1242@vindex safe-local-eval-forms
1235 The @code{safe-local-eval-forms} is a customizable list of eval 1243 But there is an exception. The @code{safe-local-eval-forms} is a
1236forms which are safe to eval, so Emacs should not ask for 1244customizable list of eval forms which are safe. Emacs does not ask
1237confirmation to evaluate these forms. 1245for confirmation when it finds these forms for the @code{eval}
1246variable.
1238 1247
1239@node Key Bindings 1248@node Key Bindings
1240@section Customizing Key Bindings 1249@section Customizing Key Bindings
@@ -1246,7 +1255,7 @@ to customize key bindings.
1246 1255
1247 Recall that a command is a Lisp function whose definition provides for 1256 Recall that a command is a Lisp function whose definition provides for
1248interactive use. Like every Lisp function, a command has a function 1257interactive use. Like every Lisp function, a command has a function
1249name which usually consists of lower-case letters and hyphens. 1258name, which usually consists of lower-case letters and hyphens.
1250 1259
1251@menu 1260@menu
1252* Keymaps:: Generalities. The global keymap. 1261* Keymaps:: Generalities. The global keymap.
@@ -1405,19 +1414,6 @@ mode.
1405in effect, the definitions in its keymap override both the major 1414in effect, the definitions in its keymap override both the major
1406mode's local keymap and the global keymap. 1415mode's local keymap and the global keymap.
1407 1416
1408@vindex c-mode-map
1409@vindex lisp-mode-map
1410 The local keymaps for Lisp mode and several other major modes always
1411exist even when not in use. These are kept in variables named
1412@code{lisp-mode-map} and so on. For major modes less often used, the
1413local keymap is normally constructed only when the mode is used for the
1414first time in a session. This is to save space. If you wish to change
1415one of these keymaps, you must use the major mode's @dfn{mode
1416hook}---see below.
1417
1418 All minor mode keymaps are created in advance. There is no way to
1419defer their creation until the first time the minor mode is enabled.
1420
1421 A local keymap can locally redefine a key as a prefix key by defining 1417 A local keymap can locally redefine a key as a prefix key by defining
1422it as a prefix keymap. If the key is also defined globally as a prefix, 1418it as a prefix keymap. If the key is also defined globally as a prefix,
1423then its local and global definitions (both keymaps) effectively 1419then its local and global definitions (both keymaps) effectively
@@ -1433,17 +1429,16 @@ sequence by looking in several keymaps, one by one, for a binding of the
1433whole key sequence. First it checks the minor mode keymaps for minor 1429whole key sequence. First it checks the minor mode keymaps for minor
1434modes that are enabled, then it checks the major mode's keymap, and then 1430modes that are enabled, then it checks the major mode's keymap, and then
1435it checks the global keymap. This is not precisely how key lookup 1431it checks the global keymap. This is not precisely how key lookup
1436works, but it's good enough for understanding ordinary circumstances. 1432works, but it's good enough for understanding the results in ordinary
1433circumstances.
1437 1434
1438@cindex rebinding major mode keys 1435@cindex rebinding major mode keys
1439@findex define-key 1436 Most major modes construct their keymaps when the mode is used for
1440 To change the local bindings of a major mode, you must change the 1437the first time in a session. If you wish to change one of these
1441mode's local keymap. Normally you must wait until the first time the 1438keymaps, you must use the major mode's @dfn{mode hook}
1442mode is used, because most major modes don't create their keymaps until 1439(@pxref{Hooks}).
1443then. If you want to specify something in your @file{~/.emacs} file to
1444change a major mode's bindings, you must use the mode's mode hook to
1445delay the change until the mode is first used.
1446 1440
1441@findex define-key
1447 For example, the command @code{texinfo-mode} to select Texinfo mode 1442 For example, the command @code{texinfo-mode} to select Texinfo mode
1448runs the hook @code{texinfo-mode-hook}. Here's how you can use the hook 1443runs the hook @code{texinfo-mode-hook}. Here's how you can use the hook
1449to add local bindings (not very useful, we admit) for @kbd{C-c n} and 1444to add local bindings (not very useful, we admit) for @kbd{C-c n} and
@@ -1458,8 +1453,6 @@ to add local bindings (not very useful, we admit) for @kbd{C-c n} and
1458 'forward-paragraph))) 1453 'forward-paragraph)))
1459@end example 1454@end example
1460 1455
1461 @xref{Hooks}.
1462
1463@node Minibuffer Maps 1456@node Minibuffer Maps
1464@subsection Minibuffer Keymaps 1457@subsection Minibuffer Keymaps
1465 1458
@@ -1545,10 +1538,10 @@ key to rebind.
1545 You can rebind a key that contains more than one event in the same 1538 You can rebind a key that contains more than one event in the same
1546way. Emacs keeps reading the key to rebind until it is a complete key 1539way. Emacs keeps reading the key to rebind until it is a complete key
1547(that is, not a prefix key). Thus, if you type @kbd{C-f} for 1540(that is, not a prefix key). Thus, if you type @kbd{C-f} for
1548@var{key}, that's the end; the minibuffer is entered immediately to 1541@var{key}, that's the end; it enters the minibuffer immediately to
1549read @var{cmd}. But if you type @kbd{C-x}, another character is read; 1542read @var{cmd}. But if you type @kbd{C-x}, since that's a prefix, it
1550if that is @kbd{4}, another character is read, and so on. For 1543reads another character; if that is @kbd{4}, another prefix character,
1551example, 1544it reads one more character, and so on. For example,
1552 1545
1553@example 1546@example
1554M-x global-set-key @key{RET} C-x 4 $ spell-other-window @key{RET} 1547M-x global-set-key @key{RET} C-x 4 $ spell-other-window @key{RET}
@@ -1572,9 +1565,9 @@ definition (or lack of one) come back into effect in that major mode.
1572 If you have redefined (or undefined) a key and you subsequently wish 1565 If you have redefined (or undefined) a key and you subsequently wish
1573to retract the change, undefining the key will not do the job---you need 1566to retract the change, undefining the key will not do the job---you need
1574to redefine the key with its standard definition. To find the name of 1567to redefine the key with its standard definition. To find the name of
1575the standard definition of a key, go to a Fundamental mode buffer and 1568the standard definition of a key, go to a Fundamental mode buffer in a
1576use @kbd{C-h c}. The documentation of keys in this manual also lists 1569fresh Emacs and use @kbd{C-h c}. The documentation of keys in this
1577their command names. 1570manual also lists their command names.
1578 1571
1579 If you want to prevent yourself from invoking a command by mistake, it 1572 If you want to prevent yourself from invoking a command by mistake, it
1580is better to disable the command than to undefine the key. A disabled 1573is better to disable the command than to undefine the key. A disabled
@@ -1669,8 +1662,8 @@ rewrite the first six examples above to use vectors:
1669 1662
1670@noindent 1663@noindent
1671As you see, you represent a multi-character key sequence with a vector 1664As you see, you represent a multi-character key sequence with a vector
1672by listing all of the characters in order within the square brackets that 1665by listing all of the characters, in order, within the square brackets
1673delimit the vector. 1666that delimit the vector.
1674 1667
1675 Language and coding systems can cause problems with key bindings 1668 Language and coding systems can cause problems with key bindings
1676for non-@acronym{ASCII} characters. @xref{Non-ASCII Rebinding}. 1669for non-@acronym{ASCII} characters. @xref{Non-ASCII Rebinding}.
@@ -1819,10 +1812,10 @@ because the terminal sends the same character in both cases.
1819@cindex rebinding non-@acronym{ASCII} keys 1812@cindex rebinding non-@acronym{ASCII} keys
1820@cindex non-@acronym{ASCII} keys, binding 1813@cindex non-@acronym{ASCII} keys, binding
1821 1814
1822If your keyboard has keys that send non-@acronym{ASCII} 1815 If your keyboard has keys that send non-@acronym{ASCII}
1823characters, such as accented letters, rebinding these keys 1816characters, such as accented letters, rebinding these keys
1824must be done by using a vector like this@footnote{Note that 1817must be done by using a vector like this@footnote{You must
1825you should avoid the string syntax for binding 1818avoid the string syntax for binding
1826non-@acronym{ASCII} characters, since they will be 1819non-@acronym{ASCII} characters, since they will be
1827interpreted as meta keys. @xref{Strings of Events,,,elisp, 1820interpreted as meta keys. @xref{Strings of Events,,,elisp,
1828The Emacs Lisp Reference Manual}.}: 1821The Emacs Lisp Reference Manual}.}:
@@ -1834,11 +1827,11 @@ The Emacs Lisp Reference Manual}.}:
1834@noindent 1827@noindent
1835Type @kbd{C-q} followed by the key you want to bind, to insert @var{char}. 1828Type @kbd{C-q} followed by the key you want to bind, to insert @var{char}.
1836 1829
1837Since this puts a non-@acronym{ASCII} character in the @file{.emacs}, 1830 Since this puts a non-@acronym{ASCII} character in the @file{.emacs},
1838you should specify a coding system for that file that supports the 1831you should specify a coding system for that file that supports the
1839character in question. @xref{Init Syntax}. 1832character in question. @xref{Init Non-ASCII}.
1840 1833
1841@strong{Warning:} if you change the keyboard encoding, or change 1834 @strong{Warning:} if you change the keyboard encoding, or change
1842between multibyte and unibyte mode, or anything that would alter which 1835between multibyte and unibyte mode, or anything that would alter which
1843code @kbd{C-q} would insert for that character, you'll need to edit 1836code @kbd{C-q} would insert for that character, you'll need to edit
1844the Lisp expression accordingly, to use the character code generated 1837the Lisp expression accordingly, to use the character code generated
@@ -1980,19 +1973,19 @@ usual to do so.
1980@subsection Disabling Commands 1973@subsection Disabling Commands
1981@cindex disabled command 1974@cindex disabled command
1982 1975
1983 Disabling a command marks the command as requiring confirmation before it 1976 Disabling a command menas it requires confirmation before it can be
1984can be executed. The purpose of disabling a command is to prevent 1977executed. The purpose of disabling a command is to prevent users from
1985beginning users from executing it by accident and being confused. 1978executing it by accident and being confused.
1986 1979
1987 An attempt to invoke a disabled command interactively in Emacs 1980 An attempt to invoke a disabled command interactively in Emacs
1988displays a window containing the command's name, its documentation, and 1981displays a window containing the command's name, its documentation,
1989some instructions on what to do immediately; then Emacs asks for input 1982and some instructions on what to do immediately; then Emacs asks for
1990saying whether to execute the command as requested, enable it and 1983input saying whether to execute the command as requested, enable it
1991execute it, or cancel. If you decide to enable the command, you are 1984and execute it, or cancel. If you decide to enable the command, you
1992asked whether to do this permanently or just for the current session. 1985must then answer another question---whether to do this permanently, or
1993(Enabling permanently works by automatically editing your @file{.emacs} 1986just for the current session. (Enabling permanently works by
1994file.) You can also type @kbd{!} to enable @emph{all} commands, 1987automatically editing your @file{.emacs} file.) You can also type
1995for the current session only. 1988@kbd{!} to enable @emph{all} commands, for the current session only.
1996 1989
1997 The direct mechanism for disabling a command is to put a 1990 The direct mechanism for disabling a command is to put a
1998non-@code{nil} @code{disabled} property on the Lisp symbol for the 1991non-@code{nil} @code{disabled} property on the Lisp symbol for the
@@ -2013,15 +2006,14 @@ is included in the message displayed when the command is used:
2013@findex disable-command 2006@findex disable-command
2014@findex enable-command 2007@findex enable-command
2015 You can make a command disabled either by editing the @file{.emacs} 2008 You can make a command disabled either by editing the @file{.emacs}
2016file directly or with the command @kbd{M-x disable-command}, which edits 2009file directly, or with the command @kbd{M-x disable-command}, which edits
2017the @file{.emacs} file for you. Likewise, @kbd{M-x enable-command} 2010the @file{.emacs} file for you. Likewise, @kbd{M-x enable-command}
2018edits @file{.emacs} to enable a command permanently. @xref{Init File}. 2011edits @file{.emacs} to enable a command permanently. @xref{Init File}.
2019 2012
2020 If Emacs was invoked with the @option{-q} or @option{--no-init-file} 2013 If Emacs was invoked with the @option{-q} or @option{--no-init-file}
2021options (@pxref{Initial Options}), it will not edit your 2014options (@pxref{Initial Options}), it will not edit your
2022@file{~/.emacs} init file. This is because editing the init file from 2015@file{~/.emacs} init file. Doing so could lose information
2023such a session might overwrite the lines you might have on your init 2016because Emacs has not read your init file.
2024file which enable and disable commands.
2025 2017
2026 Whether a command is disabled is independent of what key is used to 2018 Whether a command is disabled is independent of what key is used to
2027invoke it; disabling also applies if the command is invoked using 2019invoke it; disabling also applies if the command is invoked using
@@ -2040,7 +2032,7 @@ one of fifteen-odd @dfn{syntax classes}. In some cases it specifies
2040some additional information also. 2032some additional information also.
2041 2033
2042 Each major mode has its own syntax table (though related major modes 2034 Each major mode has its own syntax table (though related major modes
2043sometimes share one syntax table) which it installs in each buffer 2035sometimes share one syntax table), which it installs in each buffer
2044that uses the mode. The syntax table installed in the current buffer 2036that uses the mode. The syntax table installed in the current buffer
2045is the one that all commands use, so we call it ``the'' syntax table. 2037is the one that all commands use, so we call it ``the'' syntax table.
2046 2038
@@ -2048,7 +2040,7 @@ is the one that all commands use, so we call it ``the'' syntax table.
2048@findex describe-syntax 2040@findex describe-syntax
2049 To display a description of the contents of the current syntax 2041 To display a description of the contents of the current syntax
2050table, type @kbd{C-h s} (@code{describe-syntax}). The description of 2042table, type @kbd{C-h s} (@code{describe-syntax}). The description of
2051each character includes both the string you would have to give to 2043each character includes the string you would have to give to
2052@code{modify-syntax-entry} to set up that character's current syntax, 2044@code{modify-syntax-entry} to set up that character's current syntax,
2053starting with the character which designates its syntax class, plus 2045starting with the character which designates its syntax class, plus
2054some English text to explain its meaning. 2046some English text to explain its meaning.
@@ -2176,7 +2168,8 @@ a Meta character, as in @samp{\M-a} for @kbd{Meta-A} or @samp{\M-\C-a} for
2176 2168
2177@cindex international characters in @file{.emacs} 2169@cindex international characters in @file{.emacs}
2178@cindex non-@acronym{ASCII} characters in @file{.emacs} 2170@cindex non-@acronym{ASCII} characters in @file{.emacs}
2179If you want to include non-@acronym{ASCII} characters in strings in your init 2171@anchor{Init Non-ASCII}If you want to include non-@acronym{ASCII}
2172characters in strings in your init
2180file, you should consider putting a @w{@samp{-*-coding: 2173file, you should consider putting a @w{@samp{-*-coding:
2181@var{coding-system}-*-}} tag on the first line which states the coding 2174@var{coding-system}-*-}} tag on the first line which states the coding
2182system used to save your @file{.emacs}, as explained in @ref{Recognize 2175system used to save your @file{.emacs}, as explained in @ref{Recognize
@@ -2241,7 +2234,7 @@ is not what you probably want to do in an init file.
2241Specify your own email address, if Emacs can't figure it out correctly. 2234Specify your own email address, if Emacs can't figure it out correctly.
2242 2235
2243@example 2236@example
2244(setq user-mail-address "coon@@yoyodyne.com") 2237(setq user-mail-address "rumsfeld@@torture.gov")
2245@end example 2238@end example
2246 2239
2247Various Emacs packages that need your own email address use the value of 2240Various Emacs packages that need your own email address use the value of
diff --git a/man/dired.texi b/man/dired.texi
index 13bd5115f1f..5face67a7b3 100644
--- a/man/dired.texi
+++ b/man/dired.texi
@@ -13,11 +13,12 @@ Emacs commands to move around in this buffer, and special Dired commands
13to operate on the files listed. 13to operate on the files listed.
14 14
15 The Dired buffer is ``read-only,'' and inserting text in it is not 15 The Dired buffer is ``read-only,'' and inserting text in it is not
16useful, so ordinary printing characters such as @kbd{d} and @kbd{x} are 16useful, so ordinary printing characters such as @kbd{d} and @kbd{x}
17used for special Dired commands. Some Dired commands @dfn{mark} or 17are redefined for special Dired commands. Some Dired commands
18@dfn{flag} the @dfn{current file} (that is, the file on the current 18@dfn{mark} or @dfn{flag} the @dfn{current file} (that is, the file on
19line); other commands operate on the marked files or on the flagged 19the current line); other commands operate on the marked files or on
20files. 20the flagged files. You first mark certain files in order to operate
21on all of them with on command.
21 22
22 The Dired-X package provides various extra features for Dired mode. 23 The Dired-X package provides various extra features for Dired mode.
23@xref{Top, Dired-X,,dired-x, Dired Extra Version 2 User's Manual}. 24@xref{Top, Dired-X,,dired-x, Dired Extra Version 2 User's Manual}.
@@ -40,8 +41,6 @@ files.
40* Updating: Dired Updating. Discarding lines for files of no interest. 41* Updating: Dired Updating. Discarding lines for files of no interest.
41* Find: Dired and Find. Using `find' to choose the files for Dired. 42* Find: Dired and Find. Using `find' to choose the files for Dired.
42* Wdired:: Operating on files by editing the Dired buffer. 43* Wdired:: Operating on files by editing the Dired buffer.
43* Tumme:: Image file and thumbnail viewing and
44 manipulation from the Dired buffer.
45* Misc: Misc Dired Features. Various other features. 44* Misc: Misc Dired Features. Various other features.
46@end menu 45@end menu
47 46
@@ -53,18 +52,20 @@ files.
53@vindex dired-listing-switches 52@vindex dired-listing-switches
54 To invoke Dired, do @kbd{C-x d} or @kbd{M-x dired}. The command 53 To invoke Dired, do @kbd{C-x d} or @kbd{M-x dired}. The command
55reads a directory name or wildcard file name pattern as a minibuffer 54reads a directory name or wildcard file name pattern as a minibuffer
56argument to specify which files to list. @kbd{C-x C-f} given a 55argument to specify the files to list. @kbd{C-x C-f} given a
57directory name also invokes Dired. Where @code{dired} differs from 56directory name also invokes Dired. Where @code{dired} differs from
58@code{list-directory} is that it puts the buffer into Dired mode, so 57@code{list-directory} is that it puts the buffer into Dired mode, so
59that the special commands of Dired are available. 58that the special commands of Dired are available.
60 59
61 The variable @code{dired-listing-switches} specifies the options to 60 The variable @code{dired-listing-switches} specifies the options to
62give to @code{ls} for listing the directory; this string @emph{must} contain 61give to @code{ls} for listing the directory; this string @emph{must}
63@samp{-l}. If you use a numeric prefix argument with the @code{dired} 62contain @samp{-l}. If you use a numeric prefix argument with the
64command, you can specify the @code{ls} switches with the minibuffer 63@code{dired} command, you can specify the @code{ls} switches with the
65before you enter the directory specification. No matter how they are 64minibuffer before you enter the directory specification. No matter
66specified, the @code{ls} switches should all be short options (that 65how they are specified, the @code{ls} switches can include short
67is, single characters) requiring no arguments. 66options (that is, single characters) requiring no arguments, and long
67options (starting with @samp{--}) whose arguments are specified with
68@samp{=}.
68 69
69@findex dired-other-window 70@findex dired-other-window
70@kindex C-x 4 d 71@kindex C-x 4 d
@@ -81,10 +82,9 @@ separate frame to display the Dired buffer.
81@kindex C-n @r{(Dired)} 82@kindex C-n @r{(Dired)}
82@kindex C-p @r{(Dired)} 83@kindex C-p @r{(Dired)}
83 All the usual Emacs cursor motion commands are available in Dired 84 All the usual Emacs cursor motion commands are available in Dired
84buffers. Some special-purpose cursor motion commands are also 85buffers. The keys @kbd{C-n} and @kbd{C-p} are redefined to put the
85provided. The keys @kbd{C-n} and @kbd{C-p} are redefined to put the 86cursor at the beginning of the file name on the line, rather than at
86cursor at the beginning of the file name on the line, rather than at the 87the beginning of the line.
87beginning of the line.
88 88
89@kindex SPC @r{(Dired)} 89@kindex SPC @r{(Dired)}
90 For extra convenience, @key{SPC} and @kbd{n} in Dired are equivalent 90 For extra convenience, @key{SPC} and @kbd{n} in Dired are equivalent
@@ -121,42 +121,47 @@ Delete the files that are flagged for deletion.
121 121
122@kindex d @r{(Dired)} 122@kindex d @r{(Dired)}
123@findex dired-flag-file-deletion 123@findex dired-flag-file-deletion
124 You can flag a file for deletion by moving to the line describing the 124 You can flag a file for deletion by moving to the line describing
125file and typing @kbd{d} (@code{dired-flag-file-deletion}). The deletion flag is visible as a @samp{D} at 125the file and typing @kbd{d} (@code{dired-flag-file-deletion}). The
126the beginning of the line. This command moves point to the next line, 126deletion flag is visible as a @samp{D} at the beginning of the line.
127so that repeated @kbd{d} commands flag successive files. A numeric 127This command moves point to the next line, so that repeated @kbd{d}
128argument serves as a repeat count. 128commands flag successive files. A numeric argument serves as a repeat
129 129count.
130@cindex recursive deletion
131@vindex dired-recursive-deletes
132 The variable @code{dired-recursive-deletes} controls whether the
133delete command will delete non-empty directories (including their
134contents). The default is to delete only empty directories.
135 130
136@kindex u @r{(Dired deletion)} 131@kindex u @r{(Dired deletion)}
137@kindex DEL @r{(Dired)} 132@kindex DEL @r{(Dired)}
138 The files are flagged for deletion rather than deleted immediately to 133 The reason for flagging files for deletion, rather than deleting
139reduce the danger of deleting a file accidentally. Until you direct 134files immediately, is to reduce the danger of deleting a file
140Dired to delete the flagged files, you can remove deletion flags using 135accidentally. Until you direct Dired to delete the flagged files, you
141the commands @kbd{u} and @key{DEL}. @kbd{u} (@code{dired-unmark}) works 136can remove deletion flags using the commands @kbd{u} and @key{DEL}.
142just like @kbd{d}, but removes flags rather than making flags. 137@kbd{u} (@code{dired-unmark}) works just like @kbd{d}, but removes
143@key{DEL} (@code{dired-unmark-backward}) moves upward, removing flags; 138flags rather than making flags. @key{DEL}
144it is like @kbd{u} with argument @minus{}1. 139(@code{dired-unmark-backward}) moves upward, removing flags; it is
140like @kbd{u} with argument @minus{}1.
145 141
146@kindex x @r{(Dired)} 142@kindex x @r{(Dired)}
147@findex dired-do-flagged-delete 143@findex dired-do-flagged-delete
148@cindex expunging (Dired) 144@cindex expunging (Dired)
149 To delete the flagged files, type @kbd{x} (@code{dired-do-flagged-delete}). 145 To delete the flagged files, type @kbd{x}
150(This is also known as @dfn{expunging}.) 146(@code{dired-do-flagged-delete}). (This is also known as
151This command first displays a list of all the file names flagged for 147@dfn{expunging}.) This command first displays a list of all the file
152deletion, and requests confirmation with @kbd{yes}. If you confirm, 148names flagged for deletion, and requests confirmation with @kbd{yes}.
153Dired deletes the flagged files, then deletes their lines from the text 149If you confirm, Dired deletes the flagged files, then deletes their
154of the Dired buffer. The shortened Dired buffer remains selected. 150lines from the text of the Dired buffer. The Dired buffer, with
151somewhat fewer lines, remains selected.
155 152
156 If you answer @kbd{no} or quit with @kbd{C-g} when asked to confirm, you 153 If you answer @kbd{no} or quit with @kbd{C-g} when asked to confirm, you
157return immediately to Dired, with the deletion flags still present in 154return immediately to Dired, with the deletion flags still present in
158the buffer, and no files actually deleted. 155the buffer, and no files actually deleted.
159 156
157@cindex recursive deletion
158@vindex dired-recursive-deletes
159 You can delete empty directories just like other files, but normally
160Dired cannot delete directories that are nonempty. If the variable
161@code{dired-recursive-deletes} is non-@code{nil}, then Dired can
162delete nonempty directories including all their contents. That can
163be somewhat risky.
164
160@node Flagging Many Files 165@node Flagging Many Files
161@section Flagging Many Files at Once 166@section Flagging Many Files at Once
162@cindex flagging many files for deletion (in Dired) 167@cindex flagging many files for deletion (in Dired)
@@ -171,8 +176,8 @@ Flag all backup files (files whose names end with @samp{~}) for deletion
171(@pxref{Backup}). 176(@pxref{Backup}).
172 177
173@item & 178@item &
174Flag for deletion all files with certain kinds of names, names that 179Flag for deletion all files with certain kinds of names which suggest
175suggest you could easily create the files again. 180you could easily create those files again.
176 181
177@item .@: @r{(Period)} 182@item .@: @r{(Period)}
178Flag excess numeric backup files for deletion. The oldest and newest 183Flag excess numeric backup files for deletion. The oldest and newest
@@ -204,14 +209,14 @@ files produced by @TeX{}, @samp{.bak} files, and the @samp{.orig} and
204@findex dired-flag-auto-save-files 209@findex dired-flag-auto-save-files
205@cindex deleting auto-save files 210@cindex deleting auto-save files
206 @kbd{#} (@code{dired-flag-auto-save-files}) flags for deletion all 211 @kbd{#} (@code{dired-flag-auto-save-files}) flags for deletion all
207files whose names look like auto-save files (@pxref{Auto Save})---that 212files whose names look like auto-save files---that is, files whose
208is, files whose names begin and end with @samp{#}. 213names begin and end with @samp{#}. @xref{Auto Save}.
209 214
210@kindex ~ @r{(Dired)} 215@kindex ~ @r{(Dired)}
211@findex dired-flag-backup-files 216@findex dired-flag-backup-files
212 @kbd{~} (@code{dired-flag-backup-files}) flags for deletion all files 217 @kbd{~} (@code{dired-flag-backup-files}) flags for deletion all
213whose names say they are backup files (@pxref{Backup})---that is, files 218files whose names say they are backup files---that is, files whose
214whose names end in @samp{~}. 219names end in @samp{~}. @xref{Backup}.
215 220
216@kindex . @r{(Dired)} 221@kindex . @r{(Dired)}
217@vindex dired-kept-versions 222@vindex dired-kept-versions
@@ -235,8 +240,9 @@ specify the number of oldest versions of each file to keep.
235 The @kbd{% d} command flags all files whose names match a specified 240 The @kbd{% d} command flags all files whose names match a specified
236regular expression (@code{dired-flag-files-regexp}). Only the 241regular expression (@code{dired-flag-files-regexp}). Only the
237non-directory part of the file name is used in matching. You can use 242non-directory part of the file name is used in matching. You can use
238@samp{^} and @samp{$} to anchor matches. You can exclude subdirectories 243@samp{^} and @samp{$} to anchor matches. You can exclude certain
239by hiding them (@pxref{Hiding Subdirectories}). 244subdirectories from marking by hiding them while you use @kbd{% d}.
245@xref{Hiding Subdirectories}.
240 246
241@node Dired Visiting 247@node Dired Visiting
242@section Visiting Files in Dired 248@section Visiting Files in Dired
@@ -301,8 +307,8 @@ Ops, View File, Miscellaneous File Operations}.
301@kindex ^ @r{(Dired)} 307@kindex ^ @r{(Dired)}
302@findex dired-up-directory 308@findex dired-up-directory
303Visit the parent directory of the current directory 309Visit the parent directory of the current directory
304(@code{dired-up-directory}). This is more convenient than moving to 310(@code{dired-up-directory}). This is equivalent to moving to the line
305the parent directory's line and typing @kbd{f} there. 311for @file{..} and typing @kbd{f} there.
306@end table 312@end table
307 313
308@node Marks vs Flags 314@node Marks vs Flags
@@ -311,12 +317,13 @@ the parent directory's line and typing @kbd{f} there.
311@cindex marking many files (in Dired) 317@cindex marking many files (in Dired)
312 Instead of flagging a file with @samp{D}, you can @dfn{mark} the 318 Instead of flagging a file with @samp{D}, you can @dfn{mark} the
313file with some other character (usually @samp{*}). Most Dired 319file with some other character (usually @samp{*}). Most Dired
314commands to operate on files use the files marked with @samp{*}, the 320commands to operate on files use the files marked with @samp{*}. The
315exception being @kbd{x} which deletes the flagged files. 321only command that operates on flagged flies is @kbd{x}, which expunges
322them.
316 323
317 Here are some commands for marking with @samp{*}, or for unmarking or 324 Here are some commands for marking with @samp{*}, for unmarking, and
318operating on marks. (@xref{Dired Deletion}, for commands to flag and 325for operating on marks. (@xref{Dired Deletion}, for commands to flag
319unflag files.) 326and unflag files.)
320 327
321@table @kbd 328@table @kbd
322@item m 329@item m
@@ -348,7 +355,7 @@ With a numeric argument, unmark all those files.
348@kindex * / @r{(Dired)} 355@kindex * / @r{(Dired)}
349@findex dired-mark-directories 356@findex dired-mark-directories
350@cindex marking subdirectories (in Dired) 357@cindex marking subdirectories (in Dired)
351Mark with @samp{*} all files which are actually directories, except for 358Mark with @samp{*} all files which are directories, except for
352@file{.} and @file{..} (@code{dired-mark-directories}). With a numeric 359@file{.} and @file{..} (@code{dired-mark-directories}). With a numeric
353argument, unmark all those files. 360argument, unmark all those files.
354 361
@@ -455,11 +462,12 @@ This assumes that no files were already marked with @samp{t}.
455Mark (with @samp{*}) all files whose names match the regular expression 462Mark (with @samp{*}) all files whose names match the regular expression
456@var{regexp} (@code{dired-mark-files-regexp}). This command is like 463@var{regexp} (@code{dired-mark-files-regexp}). This command is like
457@kbd{% d}, except that it marks files with @samp{*} instead of flagging 464@kbd{% d}, except that it marks files with @samp{*} instead of flagging
458with @samp{D}. @xref{Flagging Many Files}. 465with @samp{D}.
459 466
460Only the non-directory part of the file name is used in matching. Use 467Only the non-directory part of the file name is used in matching. Use
461@samp{^} and @samp{$} to anchor matches. Exclude subdirectories by 468@samp{^} and @samp{$} to anchor matches. You can exclude
462hiding them (@pxref{Hiding Subdirectories}). 469subdirectories by temporarily hiding them (@pxref{Hiding
470Subdirectories}).
463 471
464@item % g @var{regexp} @key{RET} 472@item % g @var{regexp} @key{RET}
465@findex dired-mark-files-containing-regexp 473@findex dired-mark-files-containing-regexp
@@ -471,16 +479,21 @@ the regular expression @var{regexp}
471@kbd{% m}, except that it searches the file contents instead of the file 479@kbd{% m}, except that it searches the file contents instead of the file
472name. 480name.
473 481
474@item C-_ 482@item C-x u
483@itemx C-_
484@itemx C-/
475@kindex C-_ @r{(Dired)} 485@kindex C-_ @r{(Dired)}
476@findex dired-undo 486@findex dired-undo
477Undo changes in the Dired buffer, such as adding or removing 487Undo changes in the Dired buffer, such as adding or removing
478marks (@code{dired-undo}). @emph{This command does not revert the 488marks (@code{dired-undo}). @emph{This command does not revert the
479actual file operations, nor recover lost files!} It just undoes 489actual file operations, nor recover lost files!} It just undoes
480changes in the buffer itself. For example, if used after renaming one 490changes in the buffer itself.
481or more files, @code{dired-undo} restores the original names, which 491
482will get the Dired buffer out of sync with the actual contents of the 492In some cases, using this after commands that operate on files can
483directory. 493cause trouble. For example, after renaming one or more files,
494@code{dired-undo} restores the original names in the Dired buffer,
495which gets the Dired buffer out of sync with the actual contents of
496the directory.
484@end table 497@end table
485 498
486@node Operating on Files 499@node Operating on Files
@@ -490,8 +503,8 @@ directory.
490 This section describes the basic Dired commands to operate on one file 503 This section describes the basic Dired commands to operate on one file
491or several files. All of these commands are capital letters; all of 504or several files. All of these commands are capital letters; all of
492them use the minibuffer, either to read an argument or to ask for 505them use the minibuffer, either to read an argument or to ask for
493confirmation, before they act. All of them give you several ways to 506confirmation, before they act. All of them let you specify the
494specify which files to manipulate: 507files to manipulate in these ways:
495 508
496@itemize @bullet 509@itemize @bullet
497@item 510@item
@@ -508,6 +521,10 @@ on all those files.
508Otherwise, the command operates on the current file only. 521Otherwise, the command operates on the current file only.
509@end itemize 522@end itemize
510 523
524@noindent
525Certain other Dired commands, such as @kbd{!} and the @samp{%}
526commands, use the same conventions to decide which files to work on.
527
511@vindex dired-dwim-target 528@vindex dired-dwim-target
512@cindex two directories (in Dired) 529@cindex two directories (in Dired)
513 Commands which ask for a destination directory, such as those which 530 Commands which ask for a destination directory, such as those which
@@ -517,9 +534,7 @@ buffer's default directory, but if the variable @code{dired-dwim-target}
517is non-@code{nil}, and if there is another Dired buffer displayed in the 534is non-@code{nil}, and if there is another Dired buffer displayed in the
518next window, that other buffer's directory is suggested instead. 535next window, that other buffer's directory is suggested instead.
519 536
520 Here are the file-manipulating commands that operate on files in this 537 Here are the file-manipulating Dired commands that operate on files.
521way. (Some other Dired commands, such as @kbd{!} and the @samp{%}
522commands, also use these conventions to decide which files to work on.)
523 538
524@table @kbd 539@table @kbd
525@findex dired-do-copy 540@findex dired-do-copy
@@ -531,15 +546,15 @@ is the directory to copy into, or (if copying a single file) the new
531name. 546name.
532 547
533@vindex dired-copy-preserve-time 548@vindex dired-copy-preserve-time
534If @code{dired-copy-preserve-time} is non-@code{nil}, then copying with 549If @code{dired-copy-preserve-time} is non-@code{nil}, then copying
535this command sets the modification time of the new file to be the same 550with this command preserves the modification time of the old file in
536as that of the old file. 551the copy.
537 552
538@vindex dired-recursive-copies 553@vindex dired-recursive-copies
539@cindex recursive copying 554@cindex recursive copying
540The variable @code{dired-recursive-copies} controls whether 555The variable @code{dired-recursive-copies} controls whether to copy
541directories are copied recursively. The default is to not copy 556directories recursively. The default is @code{nil}, which means that
542recursively, which means that directories cannot be copied. 557directories cannot be copied.
543 558
544@item D 559@item D
545@findex dired-do-delete 560@findex dired-do-delete
@@ -608,7 +623,8 @@ different places).
608@kindex T @r{(Dired)} 623@kindex T @r{(Dired)}
609@cindex changing file time (in Dired) 624@cindex changing file time (in Dired)
610@item T @var{timestamp} @key{RET} 625@item T @var{timestamp} @key{RET}
611Change the time of the specified files (@code{dired-do-touch}). 626Touch the specified files (@code{dired-do-touch}). This means
627updating their modification times to the present time.
612 628
613@findex dired-do-print 629@findex dired-do-print
614@kindex P @r{(Dired)} 630@kindex P @r{(Dired)}
@@ -625,7 +641,7 @@ suitable guess made using the variables @code{lpr-command} and
625@cindex compressing files (in Dired) 641@cindex compressing files (in Dired)
626@item Z 642@item Z
627Compress the specified files (@code{dired-do-compress}). If the file 643Compress the specified files (@code{dired-do-compress}). If the file
628appears to be a compressed file already, it is uncompressed instead. 644appears to be a compressed file already, uncompress it instead.
629 645
630@findex dired-do-load 646@findex dired-do-load
631@kindex L @r{(Dired)} 647@kindex L @r{(Dired)}
@@ -666,12 +682,6 @@ query replace loop, you can use @kbd{M-,} to resume the scan and replace
666more matches. @xref{Tags Search}. 682more matches. @xref{Tags Search}.
667@end table 683@end table
668 684
669@kindex + @r{(Dired)}
670@findex dired-create-directory
671 One special file-operation command is @kbd{+}
672(@code{dired-create-directory}). This command reads a directory name and
673creates the directory if it does not already exist.
674
675@node Shell Commands in Dired 685@node Shell Commands in Dired
676@section Shell Commands in Dired 686@section Shell Commands in Dired
677@cindex shell commands, Dired 687@cindex shell commands, Dired
@@ -679,12 +689,16 @@ creates the directory if it does not already exist.
679@findex dired-do-shell-command 689@findex dired-do-shell-command
680@kindex ! @r{(Dired)} 690@kindex ! @r{(Dired)}
681@kindex X @r{(Dired)} 691@kindex X @r{(Dired)}
682The Dired command @kbd{!} (@code{dired-do-shell-command}) reads a shell 692The Dired command @kbd{!} (@code{dired-do-shell-command}) reads a
683command string in the minibuffer and runs that shell command on all the 693shell command string in the minibuffer and runs that shell command on
684specified files. @kbd{X} is a synonym for @kbd{!}. You can specify the 694all the specified files. (@kbd{X} is a synonym for @kbd{!}.) You can
685files to operate on in the usual ways for Dired commands 695specify the files to operate on in the usual ways for Dired commands
686(@pxref{Operating on Files}). There are two ways of applying a shell 696(@pxref{Operating on Files}).
687command to multiple files: 697
698 The working directory for the shell command is the top-level directory
699of the Dired buffer.
700
701 There are two ways of applying a shell command to multiple files:
688 702
689@itemize @bullet 703@itemize @bullet
690@item 704@item
@@ -711,12 +725,12 @@ file.
711 725
712@item 726@item
713However, if the command string contains @samp{?} surrounded by 727However, if the command string contains @samp{?} surrounded by
714whitespace, the current file name is substituted for @samp{?} (rather 728whitespace, the current file name is substituted for @samp{?} (rather
715than added at the end). You can use @samp{?} this way more than once 729than added at the end). You can use @samp{?} this way more than once
716in the command, and the same file name replaces each occurrence. 730in the command, and the same file name replaces each occurrence.
717@end itemize 731@end itemize
718 732
719To iterate over the file names in a more complicated fashion, use an 733 To iterate over the file names in a more complicated fashion, use an
720explicit shell loop. For example, here is how to uuencode each file, 734explicit shell loop. For example, here is how to uuencode each file,
721making the output file name by appending @samp{.uu} to the input file 735making the output file name by appending @samp{.uu} to the input file
722name: 736name:
@@ -725,11 +739,8 @@ name:
725for file in * ; do uuencode "$file" "$file" >"$file".uu; done 739for file in * ; do uuencode "$file" "$file" >"$file".uu; done
726@end example 740@end example
727 741
728The working directory for the shell command is the top-level directory 742 The @kbd{!} command does not attempt to update the Dired buffer to
729of the Dired buffer. 743show new or modified files, because it doesn't understand shell
730
731The @kbd{!} command does not attempt to update the Dired buffer to show
732new or modified files, because it doesn't really understand shell
733commands, and does not know what files the shell command changed. Use 744commands, and does not know what files the shell command changed. Use
734the @kbd{g} command to update the Dired buffer (@pxref{Dired 745the @kbd{g} command to update the Dired buffer (@pxref{Dired
735Updating}). 746Updating}).
@@ -738,7 +749,8 @@ Updating}).
738@section Transforming File Names in Dired 749@section Transforming File Names in Dired
739 750
740 This section describes Dired commands which alter file names in a 751 This section describes Dired commands which alter file names in a
741systematic way. 752systematic way. Each command operates on some or all of the marked
753files, using a new name made by transforming the existing name.
742 754
743 Like the basic Dired file-manipulation commands (@pxref{Operating on 755 Like the basic Dired file-manipulation commands (@pxref{Operating on
744Files}), the commands described here operate either on the next 756Files}), the commands described here operate either on the next
@@ -750,7 +762,7 @@ Flags}.)
750@emph{interactively}: they ask you to confirm the operation for each 762@emph{interactively}: they ask you to confirm the operation for each
751candidate file. Thus, you can select more files than you actually 763candidate file. Thus, you can select more files than you actually
752need to operate on (e.g., with a regexp that matches many files), and 764need to operate on (e.g., with a regexp that matches many files), and
753then refine the selection by typing @kbd{y} or @kbd{n} when the 765then filter the selected names by typing @kbd{y} or @kbd{n} when the
754command prompts for confirmation. 766command prompts for confirmation.
755 767
756@table @kbd 768@table @kbd
@@ -787,17 +799,16 @@ in each case computing the new name by regular-expression substitution
787from the name of the old file. 799from the name of the old file.
788@end table 800@end table
789 801
790 The four regular-expression substitution commands effectively perform 802 The four regular-expression substitution commands effectively
791a search-and-replace on the selected file names in the Dired buffer. 803perform a search-and-replace on the selected file names. They read
792They read two arguments: a regular expression @var{from}, and a 804two arguments: a regular expression @var{from}, and a substitution
793substitution pattern @var{to}. 805pattern @var{to}; they match each ``old'' file name against
794 806@var{from}, and then replace the matching part with @var{to}. You can
795 The commands match each ``old'' file name against the regular 807use @samp{\&} and @samp{\@var{digit}} in @var{to} to refer to all or
796expression @var{from}, and then replace the matching part with @var{to}. 808part of what the pattern matched in the old file name, as in
797You can use @samp{\&} and @samp{\@var{digit}} in @var{to} to refer to 809@code{replace-regexp} (@pxref{Regexp Replace}). If the regular
798all or part of what the pattern matched in the old file name, as in 810expression matches more than once in a file name, only the first match
799@code{replace-regexp} (@pxref{Regexp Replace}). If the regular expression 811is replaced.
800matches more than once in a file name, only the first match is replaced.
801 812
802 For example, @kbd{% R ^.*$ @key{RET} x-\& @key{RET}} renames each 813 For example, @kbd{% R ^.*$ @key{RET} x-\& @key{RET}} renames each
803selected file by prepending @samp{x-} to its name. The inverse of this, 814selected file by prepending @samp{x-} to its name. The inverse of this,
@@ -809,15 +820,16 @@ matches that should span the whole filename.)
809 Normally, the replacement process does not consider the files' 820 Normally, the replacement process does not consider the files'
810directory names; it operates on the file name within the directory. If 821directory names; it operates on the file name within the directory. If
811you specify a numeric argument of zero, then replacement affects the 822you specify a numeric argument of zero, then replacement affects the
812entire absolute file name including directory name. (Non-zero 823entire absolute file name including directory name. (A non-zero
813argument specifies the number of files to operate on.) 824argument specifies the number of files to operate on.)
814 825
815 Often you will want to select the set of files to operate on using the 826 You may want to select the set of files to operate on using the same
816same @var{regexp} that you will use to operate on them. To do this, 827regexp @var{from} that you will use to operate on them. To do this,
817mark those files with @kbd{% m @var{regexp} @key{RET}}, then use the 828mark those files with @kbd{% m @var{from} @key{RET}}, then use the
818same regular expression in the command to operate on the files. To make 829same regular expression in the command to operate on the files. To
819this easier, the @kbd{%} commands to operate on files use the last 830make this more convenient, the @kbd{%} commands to operate on files
820regular expression specified in any @kbd{%} command as a default. 831use the last regular expression specified in any @kbd{%} command as a
832default.
821 833
822@node Comparison in Dired 834@node Comparison in Dired
823@section File Comparison with Dired 835@section File Comparison with Dired
@@ -825,19 +837,20 @@ regular expression specified in any @kbd{%} command as a default.
825@cindex compare files (in Dired) 837@cindex compare files (in Dired)
826 838
827 Here are two Dired commands that compare specified files using 839 Here are two Dired commands that compare specified files using
828@code{diff}. 840@code{diff}. They show the output in a buffer using Diff mode
841(@pxref{Comparing Files}).
829 842
830@table @kbd 843@table @kbd
831@item = 844@item =
832@findex dired-diff 845@findex dired-diff
833@kindex = @r{(Dired)} 846@kindex = @r{(Dired)}
834Compare the current file (the file at point) with another file (the file 847Compare the current file (the file at point) with another file (the
835at the mark) using the @code{diff} program (@code{dired-diff}). The 848file at the mark) using the @code{diff} program (@code{dired-diff}).
836file at the mark is the first argument of @code{diff}, and the file at 849The file at the mark is the first argument of @code{diff}, and the
837point is the second argument. Use @kbd{C-@key{SPC}} 850file at point is the second argument. This refers to the ordinary
851Emacs mark, not Dired marks; use @kbd{C-@key{SPC}}
838(@code{set-mark-command}) to set the mark at the first file's line 852(@code{set-mark-command}) to set the mark at the first file's line
839(@pxref{Setting Mark}), since @code{dired-diff} ignores the files marked 853(@pxref{Setting Mark}).
840with the Dired's @kbd{m} command.
841 854
842@findex dired-backup-diff 855@findex dired-backup-diff
843@kindex M-= @r{(Dired)} 856@kindex M-= @r{(Dired)}
@@ -845,7 +858,7 @@ with the Dired's @kbd{m} command.
845Compare the current file with its latest backup file 858Compare the current file with its latest backup file
846(@code{dired-backup-diff}). If the current file is itself a backup, 859(@code{dired-backup-diff}). If the current file is itself a backup,
847compare it with the file it is a backup of; this way, you can compare 860compare it with the file it is a backup of; this way, you can compare
848a file with any backup version of your choice. 861a file with any one of its backups.
849 862
850The backup file is the first file given to @code{diff}. 863The backup file is the first file given to @code{diff}.
851@end table 864@end table
@@ -864,9 +877,8 @@ numeric argument when you run Dired, then you can specify these options
864in the minibuffer.) That produces a recursive directory listing showing 877in the minibuffer.) That produces a recursive directory listing showing
865all subdirectories at all levels. 878all subdirectories at all levels.
866 879
867 But usually all the subdirectories are too many; usually you will 880 More often, you will want to show only specific subdirectories. You
868prefer to include specific subdirectories only. You can do this with 881can do this with the @kbd{i} command:
869the @kbd{i} command:
870 882
871@table @kbd 883@table @kbd
872@findex dired-maybe-insert-subdir 884@findex dired-maybe-insert-subdir
@@ -950,7 +962,7 @@ Move down to the next directory-file line (@code{dired-prev-dirline}).
950 962
951@cindex hiding in Dired (Dired) 963@cindex hiding in Dired (Dired)
952 @dfn{Hiding} a subdirectory means to make it invisible, except for its 964 @dfn{Hiding} a subdirectory means to make it invisible, except for its
953header line, via selective display (@pxref{Selective Display}). 965header line.
954 966
955@table @kbd 967@table @kbd
956@item $ 968@item $
@@ -974,7 +986,8 @@ subdirectories far away.
974subdirectory. For example, the commands to operate on marked files 986subdirectory. For example, the commands to operate on marked files
975ignore files in hidden directories even if they are marked. Thus you 987ignore files in hidden directories even if they are marked. Thus you
976can use hiding to temporarily exclude subdirectories from operations 988can use hiding to temporarily exclude subdirectories from operations
977without having to remove the markers. 989without having to remove the Dired marks on files in those
990subdirectories.
978 991
979@node Dired Updating 992@node Dired Updating
980@section Updating the Dired Buffer 993@section Updating the Dired Buffer
@@ -990,7 +1003,8 @@ part of the Dired buffer.
990Update the entire contents of the Dired buffer (@code{revert-buffer}). 1003Update the entire contents of the Dired buffer (@code{revert-buffer}).
991 1004
992@item l 1005@item l
993Update the specified files (@code{dired-do-redisplay}). 1006Update the specified files (@code{dired-do-redisplay}). You specify the
1007files for @kbd{l} in the same way as for file operations.
994 1008
995@item k 1009@item k
996Delete the specified @emph{file lines}---not the files, just the lines 1010Delete the specified @emph{file lines}---not the files, just the lines
@@ -1034,9 +1048,9 @@ current file as a last resort.
1034 1048
1035 If you use @kbd{k} with a numeric prefix argument to kill the line 1049 If you use @kbd{k} with a numeric prefix argument to kill the line
1036for a file that is a directory, which you have inserted in the Dired 1050for a file that is a directory, which you have inserted in the Dired
1037buffer as a subdirectory, then this deletes that subdirectory from the 1051buffer as a subdirectory, it deletes that subdirectory from the buffer
1038buffer as well. Typing @kbd{C-u k} on the header line for a subdirectory 1052as well. Typing @kbd{C-u k} on the header line for a subdirectory
1039is another way to delete a subdirectory from the Dired buffer. 1053also deletes the subdirectory from the Dired buffer.
1040 1054
1041 The @kbd{g} command brings back any individual lines that you have 1055 The @kbd{g} command brings back any individual lines that you have
1042killed in this way, but not subdirectories---you must use @kbd{i} to 1056killed in this way, but not subdirectories---you must use @kbd{i} to
@@ -1068,7 +1082,7 @@ flexibly by using the @code{find} utility to choose the files.
1068@var{pattern}, and chooses all the files in @var{directory} or its 1082@var{pattern}, and chooses all the files in @var{directory} or its
1069subdirectories whose individual names match @var{pattern}. 1083subdirectories whose individual names match @var{pattern}.
1070 1084
1071 The files thus chosen are displayed in a Dired buffer in which the 1085 The files thus chosen are displayed in a Dired buffer, in which the
1072ordinary Dired commands are available. 1086ordinary Dired commands are available.
1073 1087
1074@findex find-grep-dired 1088@findex find-grep-dired
@@ -1101,10 +1115,10 @@ may need to change the value of this variable.
1101@cindex file database (locate) 1115@cindex file database (locate)
1102@vindex locate-command 1116@vindex locate-command
1103 @kbd{M-x locate} provides a similar interface to the @code{locate} 1117 @kbd{M-x locate} provides a similar interface to the @code{locate}
1104program. @kbd{M-x locate-with-filter} is similar, but keeps only lines 1118program. @kbd{M-x locate-with-filter} is similar, but keeps only files
1105matching a given regular expression. 1119whose names match a given regular expression.
1106 1120
1107 These buffers don't work entirely like ordinary Dired buffers. File 1121 These buffers don't work entirely like ordinary Dired buffers: file
1108operations work, but do not always automatically update the buffer. 1122operations work, but do not always automatically update the buffer.
1109Reverting the buffer with @kbd{g} deletes all inserted subdirectories, 1123Reverting the buffer with @kbd{g} deletes all inserted subdirectories,
1110and erases all flags and marks. 1124and erases all flags and marks.
@@ -1131,104 +1145,26 @@ back to ordinary Dired mode.
1131 Apart from simply renaming files, you can move a file to another 1145 Apart from simply renaming files, you can move a file to another
1132directory by typing in the new file name (either absolute or 1146directory by typing in the new file name (either absolute or
1133relative). To mark a file for deletion, delete the entire filename. 1147relative). To mark a file for deletion, delete the entire filename.
1134To change the target of a symbolic link, just edit the target name 1148To change the target of a symbolic link, edit the link target name
1135displayed next to the link name. 1149which appears next to the link name.
1136 1150
1137 The rest of the text in the buffer, such as the file sizes and 1151 The rest of the text in the buffer, such as the file sizes and
1138modification dates, is marked read-only, so you can't edit it. 1152modification dates, is marked read-only, so you can't edit it.
1139However, if you set @code{wdired-allow-to-change-permissions} to 1153However, if you set @code{wdired-allow-to-change-permissions} to
1140@code{t}, the file permission bits can also be edited. For example, 1154@code{t}, you can edit the file permissions. For example, you can
1141you can change @samp{-rw-r--r--} to @samp{-rw-rw-rw-} to make a file 1155change @samp{-rw-r--r--} to @samp{-rw-rw-rw-} to make a file
1142world-writable. These changes also take effect when you type @kbd{C-c 1156world-writable. These changes also take effect when you type @kbd{C-c
1143C-c}. 1157C-c}.
1144 1158
1145@node Tumme
1146@section Thumbnail and image file viewing and manipulation
1147
1148@cindex tumme mode
1149
1150 Tumme provides for simple viewing of thumbnails of image files. It
1151provides viewing of the original file, sized or in full size, inside
1152Emacs or in an external viewer.
1153
1154 Tumme aims to be both easy to use for a beginner but also powerful
1155and useful to an experienced user.
1156
1157 The quickest way to try out Tumme is to use the command
1158@code{tumme}. It will prompt for a directory where there are images
1159files. All images in that directory will get thumbnail files created
1160for them, and the thumbnails will be displayed in the ``thumbnail
1161buffer''.
1162
1163 If the directory contains many image files and becayse thumbnails
1164are created on the fly before they can be displayed, the above command
1165might take a long time, especially the first time (consecutive
1166viewings will use the cached thumbnail files). Also, if the number of
1167image files is higher than @code{tumme-show-all-from-dir-max-files},
1168the command will be aborted. To work around this you can instead mark
1169the files you want to look at, using @kbd{m} as usual in Dired, and
1170then type @kbd{C-t d} (@code{tumme-display-thumbs}).
1171
1172 Regardless of which command you chose to display the thumbnails, a
1173new buffer will open up, displaying thumbnail images of the files that
1174were marked in dired. The new buffer will be the active one.
1175
1176 With point in the thumbnail buffer, type @kbd{RET}
1177(@code{tumme-display-thumbnail-original-image}) to display a sized
1178version of it in another window. The image will be sized to fit the
1179window. Use the arrow keys to move around in the buffer. For easy
1180browing, type @kbd{SPC} (@code{tumme-display-next-thumbnail-original})
1181to advance and display the next image. Typing @kbd{DEL}
1182(@code{tumme-display-previous-thumbnail-original}) backs up to the
1183previous thumbnail and displays that instead.
1184
1185 If you want to see the image in its original size, either provide a
1186prefix argument (@kbd{C-u}) before pressing @kbd{RET}, or type
1187@kbd{C-return} (@code{tumme-thumbnail-display-external}) to display
1188the image in an external viewer. To use the latter,
1189@code{tumme-external-viewer} must be configured.
1190
1191 If you find in image that you want to delete, type @kbd{d}
1192(@code{tumme-flag-thumb-original-file}) and the file will be flagged
1193for deletion in the dired buffer. If you just want visually to delete
1194the thumbnail image from the thumbnail buffer, type @kbd{C-d}
1195(@code{tumme-delete-char}).
1196
1197 More advanced features include commands for using ``tags''. ``Tag''
1198is just another word for ``keyword'', ``label'' or ``category''. In
1199short, it is meta data used to categorize an image file. Commands
1200exist to add tags for one or many image files from dired, to mark
1201files having a certain tag in Dired and to remove tags from files.
1202The tags put on image files are stored in a database file (currently a
1203plain text file).
1204
1205 To tag image files, mark them in the dired buffer and type @kbd{C-t
1206t} (@code{tumme-tag-files}). You will be prompted for a tag. To mark
1207files having a certain tag, type @kbd{C-t f}
1208(@code{tumme-mark-tagged-files}). After marking image files with a
1209certain tag, they can be viewed as explained earlier, by typing
1210@key{C-t d}.
1211
1212 You can also tag a file from the thumbnail buffer by typing @kbd{t
1213t} and remove it by typing @kbd{t r}. There is also a special ``tag''
1214called ``comment'' for each file (it is not a tag in the exact same
1215sense as the other tags, it is handled slightly different). That is
1216used to enter a comment or description about the image. You comment a
1217file from the thumbnail buffer by typing @kbd{c}. You will be
1218prompted for a comment. Comments can also be added from Dired, and
1219then also to multiple files at once, by typing @kbd{C-t c}
1220(@code{tumme-dired-comment-files}).
1221
1222 Tumme also provides simple image manipulation commands, like
1223rotating thumbnails and original image files. In the thumbnail
1224buffer, type @kbd{L} to rotate the original image 90 degrees anti
1225clockwise, and @kbd{R} to rotate it 90 degrees clockwise. This
1226rotation will be done lossless (the image quality will not be reduced)
1227and needs an external utility called JpegTRAN to work.
1228
1229@node Misc Dired Features 1159@node Misc Dired Features
1230@section Other Dired Features 1160@section Other Dired Features
1231 1161
1162@kindex + @r{(Dired)}
1163@findex dired-create-directory
1164 An unusual Dired file-operation command is @kbd{+}
1165(@code{dired-create-directory}). This command reads a directory name,
1166and creates the directory if it does not already exist.
1167
1232@cindex Adding to the kill ring in Dired. 1168@cindex Adding to the kill ring in Dired.
1233@kindex w @r{(Dired)} 1169@kindex w @r{(Dired)}
1234@findex dired-copy-filename-as-kill 1170@findex dired-copy-filename-as-kill
@@ -1236,16 +1172,18 @@ and needs an external utility called JpegTRAN to work.
1236names of the marked (or next @var{n}) files into the kill ring, as if 1172names of the marked (or next @var{n}) files into the kill ring, as if
1237you had killed them with @kbd{C-w}. The names are separated by a space. 1173you had killed them with @kbd{C-w}. The names are separated by a space.
1238 1174
1175 With a zero prefix argument, this uses the absolute file name of
1176each marked file. With just @kbd{C-u} as the prefix argument, it uses
1177file names relative to the Dired buffer's default directory. (This
1178can still contain slashes if in a subdirectory.) As a special case,
1179if point is on a directory headerline, @kbd{w} gives you the absolute
1180name of that directory. Any prefix argument or marked files are
1181ignored in this case.
1182
1239 The main purpose of this command is so that you can yank the file 1183 The main purpose of this command is so that you can yank the file
1240names into arguments for other Emacs commands. It also displays what 1184names into arguments for other Emacs commands. It also displays what
1241was pushed onto the kill ring, so you can use it to display the list 1185it added to the kill ring, so you can use it to display the list of
1242of currently marked files in the echo area. With a zero prefix 1186currently marked files in the echo area.
1243argument, this uses the absolute file name of each marked file. With
1244just @kbd{C-u} as the prefix argument, it uses file names relative to
1245the Dired buffer's default directory. (This can still contain slashes
1246if in a subdirectory.) As a special case, if point is on a directory
1247headerline, @kbd{w} gives you the absolute name of that directory.
1248Any prefix argument or marked files are ignored in this case.
1249 1187
1250@findex dired-compare-directories 1188@findex dired-compare-directories
1251 The command @kbd{M-x dired-compare-directories} is used to compare 1189 The command @kbd{M-x dired-compare-directories} is used to compare
diff --git a/man/emacs.texi b/man/emacs.texi
index 306518765c8..4cde551bb00 100644
--- a/man/emacs.texi
+++ b/man/emacs.texi
@@ -201,6 +201,7 @@ Advanced Features
201 "recursive editing level". 201 "recursive editing level".
202* Emulation:: Emulating some other editors with Emacs. 202* Emulation:: Emulating some other editors with Emacs.
203* Hyperlinking:: Following links in buffers. 203* Hyperlinking:: Following links in buffers.
204* Thumbnails:: Browsing images using thumbnails.
204* Dissociated Press:: Dissociating text for fun. 205* Dissociated Press:: Dissociating text for fun.
205* Amusements:: Various games and hacks. 206* Amusements:: Various games and hacks.
206* Customization:: Modifying the behavior of Emacs. 207* Customization:: Modifying the behavior of Emacs.
diff --git a/man/gnus.texi b/man/gnus.texi
index 165f74ec499..203287b3a48 100644
--- a/man/gnus.texi
+++ b/man/gnus.texi
@@ -50,7 +50,7 @@ license to the document, as described in section 6 of the license.
50\begin{document} 50\begin{document}
51 51
52% Adjust ../Makefile.in if you change the following line: 52% Adjust ../Makefile.in if you change the following line:
53\newcommand{\gnusversionname}{Gnus v5.10.6} 53\newcommand{\gnusversionname}{Gnus v5.11}
54\newcommand{\gnuschaptername}{} 54\newcommand{\gnuschaptername}{}
55\newcommand{\gnussectionname}{} 55\newcommand{\gnussectionname}{}
56 56
@@ -360,7 +360,7 @@ spool or your mbox file. All at the same time, if you want to push your
360luck. 360luck.
361 361
362@c Adjust ../Makefile.in if you change the following line: 362@c Adjust ../Makefile.in if you change the following line:
363This manual corresponds to Gnus v5.10.6. 363This manual corresponds to Gnus v5.11.
364 364
365@end ifinfo 365@end ifinfo
366 366
@@ -17540,16 +17540,16 @@ group have to be alive (i.e., subscribed or unsubscribed). Killed or
17540zombie groups can't be component groups for @code{nnvirtual} groups. 17540zombie groups can't be component groups for @code{nnvirtual} groups.
17541 17541
17542@vindex nnvirtual-always-rescan 17542@vindex nnvirtual-always-rescan
17543If the @code{nnvirtual-always-rescan} is non-@code{nil}, 17543If the @code{nnvirtual-always-rescan} variable is non-@code{nil} (which
17544@code{nnvirtual} will always scan groups for unread articles when 17544is the default), @code{nnvirtual} will always scan groups for unread
17545entering a virtual group. If this variable is @code{nil} (which is the 17545articles when entering a virtual group. If this variable is @code{nil}
17546default) and you read articles in a component group after the virtual 17546and you read articles in a component group after the virtual group has
17547group has been activated, the read articles from the component group 17547been activated, the read articles from the component group will show up
17548will show up when you enter the virtual group. You'll also see this 17548when you enter the virtual group. You'll also see this effect if you
17549effect if you have two virtual groups that have a component group in 17549have two virtual groups that have a component group in common. If
17550common. If that's the case, you should set this variable to @code{t}. 17550that's the case, you should set this variable to @code{t}. Or you can
17551Or you can just tap @code{M-g} on the virtual group every time before 17551just tap @code{M-g} on the virtual group every time before you enter
17552you enter it---it'll have much the same effect. 17552it---it'll have much the same effect.
17553 17553
17554@code{nnvirtual} can have both mail and news groups as component groups. 17554@code{nnvirtual} can have both mail and news groups as component groups.
17555When responding to articles in @code{nnvirtual} groups, @code{nnvirtual} 17555When responding to articles in @code{nnvirtual} groups, @code{nnvirtual}
diff --git a/man/help.texi b/man/help.texi
index 84a3656ad57..35470551862 100644
--- a/man/help.texi
+++ b/man/help.texi
@@ -512,11 +512,11 @@ the help text. @key{TAB} (@code{help-next-ref}) moves point down to the
512next cross reference. Use @kbd{S-@key{TAB}} to move point up to the 512next cross reference. Use @kbd{S-@key{TAB}} to move point up to the
513previous cross reference (@code{help-previous-ref}). 513previous cross reference (@code{help-previous-ref}).
514 514
515To view all documentation about a symbol, whether quoted or not, move 515 You can view all documentation about any symbol name that appears in
516point over the symbol and type @kbd{C-c C-c} 516the text, by moving point to the symbol name and typing @kbd{C-c C-c}
517(@code{help-follow-symbol}). This shows all available documentation 517(@code{help-follow-symbol}). This shows all available documentation
518about the symbol as a variable, function or face. Just like for 518about the symbol as a variable, function and/or face. @kbd{C-c C-b}
519quoted cross references, you can use @kbd{C-c C-b} to retrace your steps. 519works in this case also, to retrace your steps.
520 520
521@node Misc Help 521@node Misc Help
522@section Other Help Commands 522@section Other Help Commands
diff --git a/man/message.texi b/man/message.texi
index a099748f1c4..c282d5c1bdd 100644
--- a/man/message.texi
+++ b/man/message.texi
@@ -70,7 +70,7 @@ Message mode buffers.
70@c Adjust ../Makefile.in if you change the following lines: 70@c Adjust ../Makefile.in if you change the following lines:
71Message is distributed with Gnus. The Gnus distribution 71Message is distributed with Gnus. The Gnus distribution
72@c 72@c
73corresponding to this manual is Gnus v5.10.6. 73corresponding to this manual is Gnus v5.11.
74 74
75 75
76@node Interface 76@node Interface
diff --git a/man/misc.texi b/man/misc.texi
index d5b69eebf26..ba760a0a361 100644
--- a/man/misc.texi
+++ b/man/misc.texi
@@ -9,9 +9,10 @@
9else: reading netnews, running shell commands and shell subprocesses, 9else: reading netnews, running shell commands and shell subprocesses,
10using a single shared Emacs for utilities that expect to run an editor 10using a single shared Emacs for utilities that expect to run an editor
11as a subprocess, printing hardcopy, sorting text, narrowing display to 11as a subprocess, printing hardcopy, sorting text, narrowing display to
12part of the buffer, editing double-column files and binary files, saving 12part of the buffer, editing double-column files and binary files,
13an Emacs session for later resumption, emulating other editors, and 13saving an Emacs session for later resumption, following hyperlinks,
14various diversions and amusements. 14browsing images, emulating other editors, and various diversions and
15amusements.
15 16
16@end iftex 17@end iftex
17 18
@@ -49,15 +50,15 @@ To start Gnus, type @kbd{M-x gnus @key{RET}}.
49@node Buffers of Gnus 50@node Buffers of Gnus
50@subsection Gnus Buffers 51@subsection Gnus Buffers
51 52
52As opposed to most normal Emacs packages, Gnus uses a number of 53Unlike most Emacs packages, Gnus uses several buffers to display
53different buffers to display information and to receive commands. The 54information and to receive commands. The three Gnus buffers users use
54three buffers users spend most of their time in are the @dfn{group 55most are the @dfn{group buffer}, the @dfn{summary buffer} and the
55buffer}, the @dfn{summary buffer} and the @dfn{article buffer}. 56@dfn{article buffer}.
56 57
57The @dfn{group buffer} contains a list of groups. This is the first 58The @dfn{group buffer} contains a list of newsgroups. This is the
58buffer Gnus displays when it starts up. It normally displays only the 59first buffer Gnus displays when it starts up. It normally displays
59groups to which you subscribe and that contain unread articles. Use 60only the groups to which you subscribe and that contain unread
60this buffer to select a specific group. 61articles. Use this buffer to select a specific group.
61 62
62The @dfn{summary buffer} lists one line for each article in a single 63The @dfn{summary buffer} lists one line for each article in a single
63group. By default, the author, the subject and the line number are 64group. By default, the author, the subject and the line number are
@@ -67,9 +68,10 @@ in the group buffer, and is killed when you exit the group. Use this
67buffer to select an article. 68buffer to select an article.
68 69
69The @dfn{article buffer} displays the article. In normal Gnus usage, 70The @dfn{article buffer} displays the article. In normal Gnus usage,
70you don't select this buffer---all useful article-oriented commands work 71you see this buffer but you don't select it---all useful
71in the summary buffer. But you can select the article buffer, and 72article-oriented commands work in the summary buffer. But you can
72execute all Gnus commands from that buffer, if you want to. 73select the article buffer, and execute all Gnus commands from that
74buffer, if you want to.
73 75
74@node Gnus Startup 76@node Gnus Startup
75@subsection When Gnus Starts Up 77@subsection When Gnus Starts Up
@@ -111,9 +113,9 @@ displayed in the article buffer in a large window, below the summary
111buffer in its small window. 113buffer in its small window.
112@end enumerate 114@end enumerate
113 115
114 Each Gnus buffer has its own special commands; however, the meanings 116 Each Gnus buffer has its own special commands; the meanings of any
115of any given key in the various Gnus buffers are usually analogous, even 117given key in the various Gnus buffers are usually analogous, even if
116if not identical. Here are commands for the group and summary buffers: 118not identical. Here are commands for the group and summary buffers:
117 119
118@table @kbd 120@table @kbd
119@kindex q @r{(Gnus Group mode)} 121@kindex q @r{(Gnus Group mode)}
@@ -315,9 +317,6 @@ processes; it can also run a shell interactively with input and output
315to an Emacs buffer named @samp{*shell*} or run a shell inside a terminal 317to an Emacs buffer named @samp{*shell*} or run a shell inside a terminal
316emulator window. 318emulator window.
317 319
318There is a shell implemented entirely in Emacs, documented in a separate
319manual. @xref{Top,Eshell,Eshell, eshell, Eshell: The Emacs Shell}.
320
321@table @kbd 320@table @kbd
322@item M-! @var{cmd} @key{RET} 321@item M-! @var{cmd} @key{RET}
323Run the shell command line @var{cmd} and display the output 322Run the shell command line @var{cmd} and display the output
@@ -333,11 +332,12 @@ You can then give commands interactively.
333Run a subshell with input and output through an Emacs buffer. 332Run a subshell with input and output through an Emacs buffer.
334You can then give commands interactively. 333You can then give commands interactively.
335Full terminal emulation is available. 334Full terminal emulation is available.
336@item M-x eshell
337@findex eshell
338Start the Emacs shell.
339@end table 335@end table
340 336
337 @kbd{M-x eshell} invokes a shell implemented entirely in Emacs. It
338is documented in a separate manual. @xref{Top,Eshell,Eshell, eshell,
339Eshell: The Emacs Shell}.
340
341@menu 341@menu
342* Single Shell:: How to run one shell command and return. 342* Single Shell:: How to run one shell command and return.
343* Interactive Shell:: Permanent shell taking input via Emacs. 343* Interactive Shell:: Permanent shell taking input via Emacs.
@@ -379,37 +379,38 @@ uncompressed equivalent of @file{foo.gz} into the current buffer.
379For a synchronous shell command, @code{shell-command} returns the 379For a synchronous shell command, @code{shell-command} returns the
380command's exit status (0 means success), when it is called from a Lisp 380command's exit status (0 means success), when it is called from a Lisp
381program. You do not get any status information for an asynchronous 381program. You do not get any status information for an asynchronous
382command, since it hasn't finished yet. 382command, since it hasn't finished yet when @code{shell-command} returns.
383 383
384@kindex M-| 384@kindex M-|
385@findex shell-command-on-region 385@findex shell-command-on-region
386 @kbd{M-|} (@code{shell-command-on-region}) is like @kbd{M-!} but 386 @kbd{M-|} (@code{shell-command-on-region}) is like @kbd{M-!} but
387passes the contents of the region as the standard input to the shell 387passes the contents of the region as the standard input to the shell
388command, instead of no input. If a numeric argument is used, meaning 388command, instead of no input. With a numeric argument, meaning insert
389insert the output in the current buffer, then the old region is deleted 389the output in the current buffer, it deletes the old region and the
390first and the output replaces it as the contents of the region. It 390output replaces it as the contents of the region. It returns the
391returns the command's exit status when it is called from a Lisp program. 391command's exit status, like @kbd{M-!}.
392 392
393 One use for @kbd{M-|} is to run @code{gpg} to see what keys are in 393 One use for @kbd{M-|} is to run @code{gpg} to see what keys are in
394the buffer. For instance, if the buffer contains a GPG key, type 394the buffer. For instance, if the buffer contains a GPG key, type
395@kbd{C-x h M-| gpg @key{RET}} to feed the entire buffer contents 395@kbd{C-x h M-| gpg @key{RET}} to feed the entire buffer contents to
396to the @code{gpg} program. That program will ignore everything except 396the @code{gpg} program. That program will ignore everything except
397the encoded keys, and will output a list of the keys it contains. 397the encoded keys, and will output a list of the keys the buffer
398contains.
398 399
399@vindex shell-file-name 400@vindex shell-file-name
400 Both @kbd{M-!} and @kbd{M-|} use @code{shell-file-name} to specify the 401 Both @kbd{M-!} and @kbd{M-|} use @code{shell-file-name} to specify
401shell to use. This variable is initialized based on your @env{SHELL} 402the shell to use. This variable is initialized based on your
402environment variable when Emacs is started. If the file name does not 403@env{SHELL} environment variable when Emacs is started. If the file
403specify a directory, the directories in the list @code{exec-path} are 404name is relative, Emacs searches the directories in the list
404searched; this list is initialized based on the environment variable 405@code{exec-path}; this list is initialized based on the environment
405@env{PATH} when Emacs is started. Your @file{.emacs} file can override 406variable @env{PATH} when Emacs is started. Your @file{.emacs} file
406either or both of these default initializations.@refill 407can override either or both of these default initializations.
407 408
408 Both @kbd{M-!} and @kbd{M-|} wait for the shell command to complete, 409 Both @kbd{M-!} and @kbd{M-|} wait for the shell command to complete,
409unless you end the command with @samp{&} to make it asynchronous. To 410unless you end the command with @samp{&} to make it asynchronous. To
410stop waiting, type @kbd{C-g} to quit; that terminates the shell 411stop waiting, type @kbd{C-g} to quit; that terminates the shell
411command with the signal @code{SIGINT}---the same signal that @kbd{C-c} 412command with the signal @code{SIGINT}---the same signal that @kbd{C-c}
412normally generates in the shell. Emacs waits until the command 413normally generates in the shell. Emacs then waits until the command
413actually terminates. If the shell command doesn't stop (because it 414actually terminates. If the shell command doesn't stop (because it
414ignores the @code{SIGINT} signal), type @kbd{C-g} again; this sends 415ignores the @code{SIGINT} signal), type @kbd{C-g} again; this sends
415the command a @code{SIGKILL} signal which is impossible to ignore. 416the command a @code{SIGKILL} signal which is impossible to ignore.
@@ -422,10 +423,11 @@ buffer regardless of whether it is visible in a window.
422@kbd{C-x @key{RET} c} immediately beforehand. @xref{Communication Coding}. 423@kbd{C-x @key{RET} c} immediately beforehand. @xref{Communication Coding}.
423 424
424@vindex shell-command-default-error-buffer 425@vindex shell-command-default-error-buffer
425 Error output from the command is normally intermixed with the regular 426 Error output from these commands is normally intermixed with the
426output. If you set the variable 427regular output. But if the variable
427@code{shell-command-default-error-buffer} to a string, which is a buffer 428@code{shell-command-default-error-buffer} has a string as value, and
428name, error output is inserted before point in the buffer of that name. 429it's the name of a buffer, @kbd{M-!} and @kbd{M-|} insert error output
430before point in that buffer.
429 431
430@node Interactive Shell 432@node Interactive Shell
431@subsection Interactive Inferior Shell 433@subsection Interactive Inferior Shell
@@ -456,8 +458,8 @@ previous input lines in the buffer. @xref{Faces}.
456prefix argument (e.g. @kbd{C-u M-x shell}), which will read a buffer 458prefix argument (e.g. @kbd{C-u M-x shell}), which will read a buffer
457name and create (or reuse) a subshell in that buffer. You can also 459name and create (or reuse) a subshell in that buffer. You can also
458rename the @samp{*shell*} buffer using @kbd{M-x rename-uniquely}, then 460rename the @samp{*shell*} buffer using @kbd{M-x rename-uniquely}, then
459create a new @samp{*shell*} buffer using plain @kbd{M-x shell}. All the 461create a new @samp{*shell*} buffer using plain @kbd{M-x shell}.
460subshells in different buffers run independently and in parallel. 462Subshells in different buffers run independently and in parallel.
461 463
462@vindex explicit-shell-file-name 464@vindex explicit-shell-file-name
463@cindex environment variables for subshells 465@cindex environment variables for subshells
@@ -479,9 +481,10 @@ from. For example, if you use bash, the file sent to it is
479@file{~/.emacs_bash}. 481@file{~/.emacs_bash}.
480 482
481 To specify a coding system for the shell, you can use the command 483 To specify a coding system for the shell, you can use the command
482@kbd{C-x @key{RET} c} immediately before @kbd{M-x shell}. You can also 484@kbd{C-x @key{RET} c} immediately before @kbd{M-x shell}. You can
483specify a coding system after starting the shell by using @kbd{C-x 485also change the coding system for a running subshell by typing
484@key{RET} p} in the shell buffer. @xref{Communication Coding}. 486@kbd{C-x @key{RET} p} in the shell buffer. @xref{Communication
487Coding}.
485 488
486@cindex @env{EMACS} environment variable 489@cindex @env{EMACS} environment variable
487 Unless the environment variable @env{EMACS} is already defined, 490 Unless the environment variable @env{EMACS} is already defined,
@@ -505,10 +508,10 @@ of the special key bindings of Shell mode:
505@kindex RET @r{(Shell mode)} 508@kindex RET @r{(Shell mode)}
506@findex comint-send-input 509@findex comint-send-input
507At end of buffer send line as input; otherwise, copy current line to 510At end of buffer send line as input; otherwise, copy current line to
508end of buffer and send it (@code{comint-send-input}). When a line is 511end of buffer and send it (@code{comint-send-input}). Copying a line
509copied, any prompt at the beginning of the line (text output by 512in this way omits any prompt at the beginning of the line (text output
510programs preceding your input) is omitted. @xref{Shell Prompts}, for 513by programs preceding your input). @xref{Shell Prompts}, for how
511how Shell mode recognizes prompts. 514Shell mode recognizes prompts.
512 515
513@item @key{TAB} 516@item @key{TAB}
514@kindex TAB @r{(Shell mode)} 517@kindex TAB @r{(Shell mode)}
@@ -2185,7 +2188,7 @@ not use it.
2185key bindings. 2188key bindings.
2186@end table 2189@end table
2187 2190
2188@node Hyperlinking, Dissociated Press, Emulation, Top 2191@node Hyperlinking, Thumbnails, Emulation, Top
2189@section Hyperlinking and Navigation Features 2192@section Hyperlinking and Navigation Features
2190 2193
2191@cindex hyperlinking 2194@cindex hyperlinking
@@ -2351,7 +2354,77 @@ Display a menu of files and URLs mentioned in current buffer, then
2351find the one you select (@code{ffap-menu}). 2354find the one you select (@code{ffap-menu}).
2352@end table 2355@end table
2353 2356
2354@node Dissociated Press, Amusements, Hyperlinking, Top 2357@node Thumbnails, Dissociated Press, Hyperlinking, Top
2358@section Viewing Images as Thumbnails
2359@cindex tumme mode
2360@cindex thumbnails
2361
2362 Tumme is a facility for browsing image files. It provides viewing
2363of the original file, either as a thumbnail or in full size, inside
2364Emacs or in an external viewer.
2365
2366 To enter Tumme, type @kbd{M-x tumme}. It prompts for a directory;
2367specify one that has images files. This creates thumbnails for all
2368the images in that directory, and displays them all in the ``thumbnail
2369buffer''. This takes a long time if the directory contains many image
2370files, and it won't operate if the number of image files exceeds
2371@code{tumme-show-all-from-dir-max-files}.
2372
2373@kindex C-t d @r{(Tumme)}
2374@findex tumme-display-thumbs
2375 You can also enter Tumme through Dired. Mark the image files you
2376want to look at, using @kbd{m} as usual, then type @kbd{C-t d}
2377(@code{tumme-display-thumbs}). This too creates and switches to
2378a buffer containing thumbnails, corresponding to the marked files.
2379
2380 With point in the thumbnail buffer, type @kbd{RET}
2381(@code{tumme-display-thumbnail-original-image}) to display a sized
2382version of it in another window. This sizes the image to fit the
2383window. Use the arrow keys to move around in the buffer. For easy
2384browing, type @kbd{SPC} (@code{tumme-display-next-thumbnail-original})
2385to advance and display the next image. Typing @kbd{DEL}
2386(@code{tumme-display-previous-thumbnail-original}) backs up to the
2387previous thumbnail and displays that instead.
2388
2389@vindex tumme-external-viewer
2390 To view and the image in its original size, either provide a prefix
2391argument (@kbd{C-u}) before pressing @kbd{RET}, or type @kbd{C-@key{RET}}
2392(@code{tumme-thumbnail-display-external}) to display the image in an
2393external viewer. You must first configure
2394@code{tumme-external-viewer}.
2395
2396 You can delete images through Tumme also. Type @kbd{d}
2397(@code{tumme-flag-thumb-original-file}) to flag the image file for
2398deletion in the Dired buffer. You can also delete the thumbnail image
2399from the thumbnail buffer with @kbd{C-d} (@code{tumme-delete-char}).
2400
2401 More advanced features include @dfn{image tags}, which are metadata
2402used to categorize image files. The tags are stored in a plain text
2403file.
2404@c ??? What is the file name?
2405
2406 To tag image files, mark them in the dired buffer and type @kbd{C-t
2407t} (@code{tumme-tag-files}). You will be prompted for a tag. To mark
2408files having a certain tag, type @kbd{C-t f}
2409(@code{tumme-mark-tagged-files}). After marking image files with a
2410certain tag, you can use @kbd{C-t d} to view them.
2411
2412@c ??? Remove what? The tag?
2413 You can also tag a file from the thumbnail buffer by typing @kbd{t
2414t} and remove it by typing @kbd{t r}. There is also a special ``tag''
2415called ``comment'' for each file (it is not a tag in the exact same
2416sense as the other tags, it is handled slightly different). That is
2417used to enter a comment or description about the image. You comment a
2418file from the thumbnail buffer by typing @kbd{c}. You will be
2419prompted for a comment. Type @kbd{C-t c} to add a comment from Dired
2420(@code{tumme-dired-comment-files}).
2421
2422 Tumme also provides simple image manipulation. In the thumbnail
2423buffer, type @kbd{L} to rotate the original image 90 degrees anti
2424clockwise, and @kbd{R} to rotate it 90 degrees clockwise. This
2425rotation is lossless, and uses an external utility called JpegTRAN.
2426
2427@node Dissociated Press, Amusements, Thumbnails, Top
2355@section Dissociated Press 2428@section Dissociated Press
2356 2429
2357@findex dissociated-press 2430@findex dissociated-press
@@ -2376,12 +2449,13 @@ That is, if it has just output `president' and then decides to jump
2376to a different point in the file, it might spot the `ent' in `pentagon' 2449to a different point in the file, it might spot the `ent' in `pentagon'
2377and continue from there, producing `presidentagon'.@footnote{This 2450and continue from there, producing `presidentagon'.@footnote{This
2378dissociword actually appeared during the Vietnam War, when it was very 2451dissociword actually appeared during the Vietnam War, when it was very
2379appropriate.} Long sample texts produce the best results. 2452appropriate. Bush has made it appropriate again.} Long sample texts
2453produce the best results.
2380 2454
2381@cindex againformation 2455@cindex againformation
2382 A positive argument to @kbd{M-x dissociated-press} tells it to operate 2456 A positive argument to @kbd{M-x dissociated-press} tells it to operate
2383character by character, and specifies the number of overlap characters. A 2457character by character, and specifies the number of overlap characters. A
2384negative argument tells it to operate word by word and specifies the number 2458negative argument tells it to operate word by word, and specifies the number
2385of overlap words. In this mode, whole words are treated as the elements to 2459of overlap words. In this mode, whole words are treated as the elements to
2386be permuted, rather than characters. No argument is equivalent to an 2460be permuted, rather than characters. No argument is equivalent to an
2387argument of two. For your againformation, the output goes only into the 2461argument of two. For your againformation, the output goes only into the
@@ -2390,13 +2464,13 @@ buffer @samp{*Dissociation*}. The buffer you start with is not changed.
2390@cindex Markov chain 2464@cindex Markov chain
2391@cindex ignoriginal 2465@cindex ignoriginal
2392@cindex techniquitous 2466@cindex techniquitous
2393 Dissociated Press produces nearly the same results as a Markov chain 2467 Dissociated Press produces results fairly like those of a Markov
2394based on a frequency table constructed from the sample text. It is, 2468chain based on a frequency table constructed from the sample text. It
2395however, an independent, ignoriginal invention. Dissociated Press 2469is, however, an independent, ignoriginal invention. Dissociated Press
2396techniquitously copies several consecutive characters from the sample 2470techniquitously copies several consecutive characters from the sample
2397between random choices, whereas a Markov chain would choose randomly for 2471between random choices, whereas a Markov chain would choose randomly
2398each word or character. This makes for more plausible sounding results, 2472for each word or character. This makes for more plausible sounding
2399and runs faster. 2473results, and runs faster.
2400 2474
2401@cindex outragedy 2475@cindex outragedy
2402@cindex buggestion 2476@cindex buggestion
@@ -2405,7 +2479,7 @@ and runs faster.
2405@cindex developediment 2479@cindex developediment
2406@cindex userenced 2480@cindex userenced
2407 It is a mustatement that too much use of Dissociated Press can be a 2481 It is a mustatement that too much use of Dissociated Press can be a
2408developediment to your real work. Sometimes to the point of outragedy. 2482developediment to your real work, sometimes to the point of outragedy.
2409And keep dissociwords out of your documentation, if you want it to be well 2483And keep dissociwords out of your documentation, if you want it to be well
2410userenced and properbose. Have fun. Your buggestions are welcome. 2484userenced and properbose. Have fun. Your buggestions are welcome.
2411 2485
@@ -2429,7 +2503,7 @@ which plays the game Go Moku with you.
2429@findex mpuz 2503@findex mpuz
2430@findex 5x5 2504@findex 5x5
2431@cindex puzzles 2505@cindex puzzles
2432 @kbd{M-x blackbox}, @kbd{M-x mpuz} and @kbd{M-x 5x5} are kinds of puzzles. 2506 @kbd{M-x blackbox}, @kbd{M-x mpuz} and @kbd{M-x 5x5} are puzzles.
2433@code{blackbox} challenges you to determine the location of objects 2507@code{blackbox} challenges you to determine the location of objects
2434inside a box by tomography. @code{mpuz} displays a multiplication 2508inside a box by tomography. @code{mpuz} displays a multiplication
2435puzzle with letters standing for digits in a code that you must 2509puzzle with letters standing for digits in a code that you must
diff --git a/src/ChangeLog b/src/ChangeLog
index 2c048043058..3c309679cdb 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,7 @@
12006-04-01 Eli Zaretskii <eliz@gnu.org>
2
3 * configure: Regenerated.
4
12006-03-31 Kenichi Handa <handa@m17n.org> 52006-03-31 Kenichi Handa <handa@m17n.org>
2 6
3 * xfns.c (xg_set_icon): Delete superfluous UNGCPRO. 7 * xfns.c (xg_set_icon): Delete superfluous UNGCPRO.
diff --git a/src/config.in b/src/config.in
index 11b842c3d00..2bc4ba56e79 100644
--- a/src/config.in
+++ b/src/config.in
@@ -1,8 +1,8 @@
1/* src/config.in. Generated from configure.in by autoheader. */ 1/* src/config.in. Generated from configure.in by autoheader. */
2 2
3/* GNU Emacs site configuration template file. 3/* GNU Emacs site configuration template file.
4 Copyright (C) 1988, 1993, 1994, 1999, 2000, 2002, 2004, 2005, 4 Copyright (C) 1988, 1993, 1994, 1999, 2000, 2002, 2004, 2005, 2006
5 2006 Free Software Foundation, Inc. 5 Free Software Foundation, Inc.
6 6
7This file is part of GNU Emacs. 7This file is part of GNU Emacs.
8 8