aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaroly Lorentey2004-09-10 13:06:10 +0000
committerKaroly Lorentey2004-09-10 13:06:10 +0000
commitfd15a4daca3b32487b751006a5e7be7732fdf9ea (patch)
treeb53e804e340b981462b1cba73be9a1ccd8667f0e
parentd8d26438090eae0b8f518ad740ab4b821efdf540 (diff)
parentcbd5542a3ccf044c601318f288d9b022f53b1de2 (diff)
downloademacs-fd15a4daca3b32487b751006a5e7be7732fdf9ea.tar.gz
emacs-fd15a4daca3b32487b751006a5e7be7732fdf9ea.zip
Merged in changes from CVS trunk.
Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-529 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-530 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-531 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-532 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-533 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-534 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-535 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-536 sync-tree with gnus--rel--5.10 * miles@gnu.org--gnu-2004/gnus--devo--0--patch-2 Add {arch}/=cvs-sync-make-log * miles@gnu.org--gnu-2004/gnus--rel--5.8--base-0 Import from Gnus CVS branch V5-8 * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-1 {arch}/=tagging-method: Add CVS and autoconf grot to junk regexp * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-2 Use explicit tags for autoconf input files * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-3 Remove RCS keywords * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-4 Fix copied explicit id-tags * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-5 Add {arch}/=cvs-sync-make-log * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-6 configure.in: Use ifelse instead of m4_if for arch-tag: comment * miles@gnu.org--gnu-2004/gnus--rel--5.10--base-0 tag of miles@gnu.org--gnu-2004/gnus--rel--5.8--base-0 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-1 Gnus 5.10, from CVS branch v5-10 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-2 Merge from gnus--rel--5.8 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-3 Use explicit tags for autoconf input files * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-4 sync-tree with gnus--rel--5.8 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-5 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-6 Merge from gnus--rel--5.8 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-7 Remove RCS keywords * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-8 Merge from gnus--rel--5.8 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-9 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-10 Add {arch}/=cvs-sync-make-log * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-11 Merge from gnus--rel--5.8 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-12 Update from CVS: make.bat: Fix line endings around arch-tag. * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-13 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-14 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-15 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-16 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-17 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-242
-rw-r--r--etc/ChangeLog9
-rw-r--r--etc/MORE.STUFF4
-rw-r--r--etc/NEWS107
-rw-r--r--etc/TODO2
-rw-r--r--etc/e/etermbin1205 -> 1091 bytes
-rw-r--r--etc/e/eterm.ti2
-rw-r--r--etc/etags.13
-rw-r--r--lib-src/ChangeLog5
-rw-r--r--lib-src/etags.c37
-rw-r--r--lisp/ChangeLog151
-rw-r--r--lisp/bs.el4
-rw-r--r--lisp/buff-menu.el13
-rw-r--r--lisp/composite.el12
-rw-r--r--lisp/cus-start.el1
-rw-r--r--lisp/desktop.el168
-rw-r--r--lisp/diff-mode.el2
-rw-r--r--lisp/emacs-lisp/authors.el33
-rw-r--r--lisp/emacs-lisp/autoload.el4
-rw-r--r--lisp/emacs-lisp/bytecomp.el11
-rw-r--r--lisp/emacs-lisp/lisp-mode.el3
-rw-r--r--lisp/emulation/cua-rect.el1
-rw-r--r--lisp/format.el3
-rw-r--r--lisp/gnus/ChangeLog32
-rw-r--r--lisp/gnus/flow-fill.el2
-rw-r--r--lisp/gnus/gnus-salt.el16
-rw-r--r--lisp/gnus/gnus-sum.el2
-rw-r--r--lisp/gnus/gnus.el4
-rw-r--r--lisp/gnus/message.el10
-rw-r--r--lisp/gnus/mml-sec.el1
-rw-r--r--lisp/gnus/mml2015.el1
-rw-r--r--lisp/gnus/nntp.el5
-rw-r--r--lisp/info.el4
-rw-r--r--lisp/isearch.el39
-rw-r--r--lisp/kmacro.el47
-rw-r--r--lisp/mh-e/ChangeLog26
-rw-r--r--lisp/mh-e/mh-inc.el12
-rw-r--r--lisp/newcomment.el307
-rw-r--r--lisp/pcvs-info.el8
-rw-r--r--lisp/pcvs-util.el10
-rw-r--r--lisp/play/blackbox.el57
-rw-r--r--lisp/progmodes/compile.el4
-rw-r--r--lisp/progmodes/grep.el36
-rw-r--r--lisp/ps-mule.el18
-rw-r--r--lisp/replace.el6
-rw-r--r--lisp/simple.el2
-rw-r--r--lisp/startup.el37
-rw-r--r--lisp/subr.el2
-rw-r--r--lisp/term.el4
-rw-r--r--lisp/term/xterm.el14
-rw-r--r--lisp/vc-arch.el19
-rw-r--r--lisp/vc-rcs.el7
-rw-r--r--lisp/vc-sccs.el7
-rw-r--r--lisp/vc.el93
-rw-r--r--lispref/ChangeLog13
-rw-r--r--lispref/files.texi2
-rw-r--r--lispref/internals.texi3
-rw-r--r--lispref/locals.texi3
-rw-r--r--lispref/minibuf.texi8
-rw-r--r--man/ChangeLog17
-rw-r--r--man/kmacro.texi6
-rw-r--r--man/makefile.w32-in16
-rw-r--r--man/mini.texi6
-rw-r--r--src/ChangeLog73
-rw-r--r--src/buffer.c10
-rw-r--r--src/buffer.h3
-rw-r--r--src/fileio.c14
-rw-r--r--src/minibuf.c11
-rw-r--r--src/w32fns.c32
-rw-r--r--src/w32menu.c5
-rw-r--r--src/w32term.h5
-rw-r--r--src/window.c4
-rw-r--r--src/xdisp.c48
-rw-r--r--src/xmenu.c8
73 files changed, 1094 insertions, 600 deletions
diff --git a/etc/ChangeLog b/etc/ChangeLog
index c3e082a096f..5bc0ae4cfb9 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,12 @@
12004-09-09 Thien-Thi Nguyen <ttn@gnu.org>
2
3 * MORE.STUFF (EDB): Update entry.
4
52004-09-07 Dan Nicolaescu <dann@ics.uci.edu>
6
7 * e/eterm.ti: Add `op' entry to enable colors in term.
8 * e/eterm: Regenerate.
9
12004-09-04 Eric S. Raymond <esr@thyrsus.com> 102004-09-04 Eric S. Raymond <esr@thyrsus.com>
2 11
3 * PROBLEMS: More reorganization to exile old stuff to the 12 * PROBLEMS: More reorganization to exile old stuff to the
diff --git a/etc/MORE.STUFF b/etc/MORE.STUFF
index 8cd1443d8c0..4dcdafe8152 100644
--- a/etc/MORE.STUFF
+++ b/etc/MORE.STUFF
@@ -140,9 +140,7 @@ Several are for Debian GNU/Linux in particular.
140 * Dismal: spreadsheet: 140 * Dismal: spreadsheet:
141 <URL:http://acs.ist.psu.edu/dismal/dismal.html> 141 <URL:http://acs.ist.psu.edu/dismal/dismal.html>
142 142
143 * EDB: database: 143 * EDB: database: <URL:http://www.glug.org/people/ttn/software/edb/>
144 <URL:http://sdg.lcs.mit.edu/%7Emernst/software/edb-mrp.tar.gz>
145 Not maintained?
146 144
147 * Ee: categorizing information manager: 145 * Ee: categorizing information manager:
148 <URL:http://www.jurta.org/emacs/ee/> 146 <URL:http://www.jurta.org/emacs/ee/>
diff --git a/etc/NEWS b/etc/NEWS
index 54ed3814819..a2012b29093 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -242,11 +242,47 @@ that configure outputs and -o options so you see at a glance where you are.
242 242
243The new file etc/compilation.txt gives examples of each type of message. 243The new file etc/compilation.txt gives examples of each type of message.
244 244
245** M-x grep has been adapted to new compile 245** Compilation mode enhancements:
246
247*** New user option `compilation-environment'.
248This option allows you to specify environment variables for inferior
249compilation processes without affecting the environment that all
250subprocesses inherit.
251
252** Grep has been decoupled from compilation mode setup.
253
254*** There's a new separate package grep.el.
255
256*** M-x grep has been adapted to new compile
246 257
247Hits are fontified in green, and hits in binary files in orange. Grep buffers 258Hits are fontified in green, and hits in binary files in orange. Grep buffers
248can be saved and automatically revisited with the new Grep mode. 259can be saved and automatically revisited with the new Grep mode.
249 260
261*** Grep commands now have their own submenu and customization group.
262
263*** The new variables `grep-window-height', `grep-auto-highlight', and
264`grep-scroll-output' can be used to override the corresponding
265compilation mode settings for grep commands.
266
267*** New option `grep-highlight-matches' highlightes matches in *grep*
268buffer. It uses a special feature of some grep programs which accept
269--color option to output markers around matches. When going to the next
270match with `next-error' the exact match is highlighted in the source
271buffer. Otherwise, if `grep-highlight-matches' is nil, the whole
272source line is highlighted.
273
274*** New key bindings in grep output window:
275SPC and DEL scrolls window up and down. C-n and C-p moves to next and
276previous match in the grep window. RET jumps to the source line of
277the current match. `n' and `p' shows next and previous match in
278other window, but does not switch buffer. `{' and `}' jumps to the
279previous or next file in the grep output. TAB also jumps to the next
280file.
281
282** New options `next-error-highlight' and `next-error-highlight-no-select'
283specify the method of highlighting of the corresponding source line
284in new face `next-error'.
285
250** A new minor mode `next-error-follow-minor-mode' can be used in 286** A new minor mode `next-error-follow-minor-mode' can be used in
251compilation-mode, grep-mode, occur-mode, and diff-mode (i.e. all the 287compilation-mode, grep-mode, occur-mode, and diff-mode (i.e. all the
252modes that can use `next-error'). In this mode, cursor motion in the 288modes that can use `next-error'). In this mode, cursor motion in the
@@ -1136,6 +1172,16 @@ and to type `C-f' at the end of the search string in the minibuffer.
1136search string used as the string to replace. 1172search string used as the string to replace.
1137 1173
1138+++ 1174+++
1175** New user option `isearch-resume-enabled'.
1176This option can be disabled, to avoid the normal behavior of isearch
1177which puts calls to `isearch-resume' in the command history.
1178
1179+++
1180** New user option `history-delete-duplicates'.
1181If set to t when adding a new history element, all previous identical
1182elements are deleted.
1183
1184+++
1139** Yanking text now discards certain text properties that can 1185** Yanking text now discards certain text properties that can
1140be inconvenient when you did not expect them. The variable 1186be inconvenient when you did not expect them. The variable
1141`yank-excluded-properties' specifies which ones. Insertion 1187`yank-excluded-properties' specifies which ones. Insertion
@@ -1803,11 +1849,6 @@ from the file name or buffer contents.
1803+++ 1849+++
1804** `xml-mode' is now an alias for `sgml-mode', which has XML support. 1850** `xml-mode' is now an alias for `sgml-mode', which has XML support.
1805 1851
1806+++
1807** New user option `isearch-resume-enabled'.
1808This option can be disabled, to avoid the normal behavior of isearch
1809which puts calls to `isearch-resume' in the command history.
1810
1811--- 1852---
1812** Lisp mode now uses font-lock-doc-face for the docstrings. 1853** Lisp mode now uses font-lock-doc-face for the docstrings.
1813 1854
@@ -1873,42 +1914,6 @@ parts is, by contrast, slightly highlighted.
1873When loading many files, for instance with `emacs *', Emacs normally 1914When loading many files, for instance with `emacs *', Emacs normally
1874displays a buffer menu. This option turns the buffer menu off. 1915displays a buffer menu. This option turns the buffer menu off.
1875 1916
1876** Compilation mode enhancements:
1877
1878*** New user option `compilation-environment'.
1879This option allows you to specify environment variables for inferior
1880compilation processes without affecting the environment that all
1881subprocesses inherit.
1882
1883*** New options `next-error-highlight' and `next-error-highlight-no-select'
1884specify the method of highlighting of the corresponding source line
1885in new face `next-error'.
1886
1887** Grep has been decoupled from compilation mode setup.
1888
1889*** There's a new separate package grep.el.
1890
1891*** Grep commands now have their own submenu and customization group.
1892
1893*** The new variables `grep-window-height', `grep-auto-highlight', and
1894`grep-scroll-output' can be used to override the corresponding
1895compilation mode settings for grep commands.
1896
1897*** New option `grep-highlight-matches' highlightes matches in *grep*
1898buffer. It uses a special feature of some grep programs which accept
1899--color option to output markers around matches. When going to the next
1900match with `next-error' the exact match is highlighted in the source
1901buffer. Otherwise, if `grep-highlight-matches' is nil, the whole
1902source line is highlighted.
1903
1904*** New key bindings in grep output window:
1905SPC and DEL scrolls window up and down. C-n and C-p moves to next and
1906previous match in the grep window. RET jumps to the source line of
1907the current match. `n' and `p' shows next and previous match in
1908other window, but does not switch buffer. `{' and `}' jumps to the
1909previous or next file in the grep output. TAB also jumps to the next
1910file.
1911
1912--- 1917---
1913** Rmail now displays 5-digit message ids in its summary buffer. 1918** Rmail now displays 5-digit message ids in its summary buffer.
1914 1919
@@ -2227,6 +2232,10 @@ configuration files.
2227* Lisp Changes in Emacs 21.4 2232* Lisp Changes in Emacs 21.4
2228 2233
2229+++ 2234+++
2235** `auto-save-file-format' has been renamed to
2236`buffer-auto-save-file-format' and made into a permanent local.
2237
2238+++
2230** Both the variable and the function `disabled-command-hook' have 2239** Both the variable and the function `disabled-command-hook' have
2231been renamed to `disabled-command-function'. The variable 2240been renamed to `disabled-command-function'. The variable
2232`disabled-command-hook' has been kept as an obsolete alias. 2241`disabled-command-hook' has been kept as an obsolete alias.
@@ -2402,6 +2411,11 @@ height) of the specified image.
2402The form `(+ EXPR ...)' adds up the value of the expressions. 2411The form `(+ EXPR ...)' adds up the value of the expressions.
2403The form `(- EXPR ...)' negates or subtracts the value of the expressions. 2412The form `(- EXPR ...)' negates or subtracts the value of the expressions.
2404 2413
2414** Normally, the cursor is displayed at the end of any overlay and
2415text property string that may be present at the current window
2416position. The cursor may now be placed on any character of such
2417strings by giving that character a non-nil `cursor' text property.
2418
2405** New macro with-local-quit temporarily sets inhibit-quit to nil for use 2419** New macro with-local-quit temporarily sets inhibit-quit to nil for use
2406around potentially blocking or long-running code in timers 2420around potentially blocking or long-running code in timers
2407and post-command-hooks. 2421and post-command-hooks.
@@ -2877,6 +2891,15 @@ can start with this line:
2877 2891
2878 #!/usr/bin/emacs --script 2892 #!/usr/bin/emacs --script
2879 2893
2894** The option --directory DIR now modifies `load-path' immediately.
2895Directories are added to the front of `load-path' in the order they
2896appear on the command line. For example, with this command line:
2897
2898 emacs -batch -L .. -L /tmp --eval "(require 'foo)"
2899
2900Emacs looks for library `foo' in the parent directory, then in /tmp, then
2901in the other directories in `load-path'. (-L is short for --directory.)
2902
2880+++ 2903+++
2881** A function's docstring can now hold the function's usage info on 2904** A function's docstring can now hold the function's usage info on
2882its last line. It should match the regexp "\n\n(fn.*)\\'". 2905its last line. It should match the regexp "\n\n(fn.*)\\'".
diff --git a/etc/TODO b/etc/TODO
index 17d1a1d0766..fdefd670f7c 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -270,8 +270,6 @@ to the FSF.
270 list in a menu, let you select one of the values, and put it into some 270 list in a menu, let you select one of the values, and put it into some
271 other variable, without changing the value of `values'. 271 other variable, without changing the value of `values'.
272 272
273** Fix skip-chars-{for,back}ward to allow character classes.
274
275** (Controlled by a flag) make open and close syntax match exactly, 273** (Controlled by a flag) make open and close syntax match exactly,
276 i.e. `(' doesn't match `]'. 274 i.e. `(' doesn't match `]'.
277 275
diff --git a/etc/e/eterm b/etc/e/eterm
index f75543ddb6b..f16d63a1c22 100644
--- a/etc/e/eterm
+++ b/etc/e/eterm
Binary files differ
diff --git a/etc/e/eterm.ti b/etc/e/eterm.ti
index 914fbf8b6e3..16c3878955c 100644
--- a/etc/e/eterm.ti
+++ b/etc/e/eterm.ti
@@ -15,7 +15,7 @@ eterm,
15 smso=\E[7m,rmso=\E[m, 15 smso=\E[7m,rmso=\E[m,
16 smul=\E[4m,rmul=\E[m, 16 smul=\E[4m,rmul=\E[m,
17 rev=\E[7m,bold=\E[1m,sgr0=\E[m, 17 rev=\E[7m,bold=\E[1m,sgr0=\E[m,
18 invis=\E[8m, 18 invis=\E[8m,op=\E[39;49m,
19 setab=\E[%p1%{40}%+%dm, setaf=\E[%p1%{30}%+%dm, 19 setab=\E[%p1%{40}%+%dm, setaf=\E[%p1%{30}%+%dm,
20 bel=^G,xenl,am, 20 bel=^G,xenl,am,
21 21
diff --git a/etc/etags.1 b/etc/etags.1
index 5b95b6c10ce..8aa2fd51750 100644
--- a/etc/etags.1
+++ b/etc/etags.1
@@ -266,7 +266,8 @@ Instead of generating a tag file, write a cross reference (in
266\fBcxref\fP format) to standard output. Only \fBctags\fP accepts this option. 266\fBcxref\fP format) to standard output. Only \fBctags\fP accepts this option.
267.TP 267.TP
268.B \-h, \-H, \-\-help 268.B \-h, \-H, \-\-help
269Print usage information. 269Print usage information. Followed by one or more \-\-language=LANG
270prints detailed information about how tags are created for LANG.
270.TP 271.TP
271.B \-V, \-\-version 272.B \-V, \-\-version
272Print the current version of the program (same as the version of the 273Print the current version of the program (same as the version of the
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index 4764871fa54..909a5717bcc 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,8 @@
12004-09-08 Francesco Potort,Al(B <pot@gnu.org>
2
3 * etags.c: [LONG_OPTIONS]: make it TRUE (ifdef) or FALSE (ifndef)
4 for ease of use.
5
12004-07-17 Richard M. Stallman <rms@gnu.org> 62004-07-17 Richard M. Stallman <rms@gnu.org>
2 7
3 * emacsclient.c (quote_file_name): Pass COPY thru %s to output it. 8 * emacsclient.c (quote_file_name): Pass COPY thru %s to output it.
diff --git a/lib-src/etags.c b/lib-src/etags.c
index 829fc97fbfd..094c81e91a0 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -35,7 +35,7 @@
35 * 35 *
36 */ 36 */
37 37
38char pot_etags_version[] = "@(#) pot revision number is 16.56"; 38char pot_etags_version[] = "@(#) pot revision number is 16.58";
39 39
40#define TRUE 1 40#define TRUE 1
41#define FALSE 0 41#define FALSE 0
@@ -76,6 +76,13 @@ char pot_etags_version[] = "@(#) pot revision number is 16.56";
76# define _GNU_SOURCE 1 /* enables some compiler checks on GNU */ 76# define _GNU_SOURCE 1 /* enables some compiler checks on GNU */
77#endif 77#endif
78 78
79#ifdef LONG_OPTIONS
80# undef LONG_OPTIONS
81# define LONG_OPTIONS TRUE
82#else
83# define LONG_OPTIONS FALSE
84#endif
85
79/* WIN32_NATIVE is for Xemacs. 86/* WIN32_NATIVE is for Xemacs.
80 MSDOS, WINDOWSNT, DOS_NT are for Emacs. */ 87 MSDOS, WINDOWSNT, DOS_NT are for Emacs. */
81#ifdef WIN32_NATIVE 88#ifdef WIN32_NATIVE
@@ -147,7 +154,7 @@ char pot_etags_version[] = "@(#) pot revision number is 16.56";
147# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) 154# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
148#endif 155#endif
149 156
150#ifdef LONG_OPTIONS 157#if LONG_OPTIONS
151# include <getopt.h> 158# include <getopt.h>
152#else 159#else
153# define getopt_long(argc,argv,optstr,lopts,lind) getopt (argc, argv, optstr) 160# define getopt_long(argc,argv,optstr,lopts,lind) getopt (argc, argv, optstr)
@@ -465,7 +472,7 @@ static bool need_filebuf; /* some regexes are multi-line */
465# define need_filebuf FALSE 472# define need_filebuf FALSE
466#endif /* ETAGS_REGEXPS */ 473#endif /* ETAGS_REGEXPS */
467 474
468#ifdef LONG_OPTIONS 475#if LONG_OPTIONS
469static struct option longopts[] = 476static struct option longopts[] =
470{ 477{
471 { "packages-only", no_argument, &packages_only, TRUE }, 478 { "packages-only", no_argument, &packages_only, TRUE },
@@ -845,12 +852,11 @@ print_help (argbuffer)
845 printf ("Usage: %s [options] [[regex-option ...] file-name] ...\n\ 852 printf ("Usage: %s [options] [[regex-option ...] file-name] ...\n\
846\n\ 853\n\
847These are the options accepted by %s.\n", progname, progname); 854These are the options accepted by %s.\n", progname, progname);
848#ifdef LONG_OPTIONS 855 if (LONG_OPTIONS)
849 puts ("You may use unambiguous abbreviations for the long option names."); 856 puts ("You may use unambiguous abbreviations for the long option names.");
850#else 857 else
851 puts ("Long option names do not work with this executable, as it is not\n\ 858 puts ("Long option names do not work with this executable, as it is not\n\
852linked with GNU getopt."); 859linked with GNU getopt.");
853#endif /* LONG_OPTIONS */
854 puts (" A - as file name means read names from stdin (one per line).\n\ 860 puts (" A - as file name means read names from stdin (one per line).\n\
855Absolute names are stored in the output file as they are.\n\ 861Absolute names are stored in the output file as they are.\n\
856Relative ones are stored relative to the output file's directory.\n"); 862Relative ones are stored relative to the output file's directory.\n");
@@ -1158,9 +1164,8 @@ main (argc, argv)
1158#ifdef ETAGS_REGEXPS 1164#ifdef ETAGS_REGEXPS
1159 optstring = "-r:Rc:"; 1165 optstring = "-r:Rc:";
1160#endif /* ETAGS_REGEXPS */ 1166#endif /* ETAGS_REGEXPS */
1161#ifndef LONG_OPTIONS 1167 if (LONG_OPTIONS)
1162 optstring = optstring + 1; 1168 optstring += 1;
1163#endif /* LONG_OPTIONS */
1164 optstring = concat (optstring, 1169 optstring = concat (optstring,
1165 "Cf:Il:o:SVhH", 1170 "Cf:Il:o:SVhH",
1166 (CTAGS) ? "BxdtTuvw" : "aDi:"); 1171 (CTAGS) ? "BxdtTuvw" : "aDi:");
@@ -6475,14 +6480,8 @@ pfatal (s1)
6475static void 6480static void
6476suggest_asking_for_help () 6481suggest_asking_for_help ()
6477{ 6482{
6478 6483 fprintf (stderr, "\tTry `%s %s' for a complete list of options.\n",
6479#ifdef LONG_OPTIONS 6484 progname, LONG_OPTIONS ? "--help" : "-h");
6480fprintf (stderr, "\tTry `%s %s' for a complete list of options.\n",
6481 progname, "--help");
6482#else
6483fprintf (stderr, "\tTry `%s %s' for a complete list of options.\n",
6484 progname, "-h");
6485#endif
6486 exit (EXIT_FAILURE); 6485 exit (EXIT_FAILURE);
6487} 6486}
6488 6487
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index dbc91232333..6d466b5a791 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,151 @@
12004-09-09 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * progmodes/grep.el (grep-mode): Remove unnecessary autoload.
4
52004-09-09 Kim F. Storm <storm@cua.dk>
6
7 * kmacro.el (kmacro-bind-to-key): Associate dedicated macro
8 counter and format with binding.
9 (kmacro-name-last-macro): New defun. Like name-last-kbd-macro, but
10 the declared macro uses own macro counter and format. Give symbol
11 kmacro property.
12 (kmacro-keymap): Bind kmacro-name-last-macro to n.
13 (kmacro-start-macro, kmacro-end-macro, kmacro-call-macro)
14 (kmacro-end-and-call-macro): Doc fix.
15
162004-09-09 Lars Hansen <larsh@math.ku.dk>
17
18 * desktop.el (desktop-clear-preserve-buffers):
19 Remove make-obsolete-variable.
20
212004-09-08 Stefan <monnier@iro.umontreal.ca>
22
23 * vc-arch.el (vc-arch-state): Fix parsing for `names' method.
24
252004-09-08 Juri Linkov <juri@jurta.org>
26
27 * replace.el (perform-replace): Use `query-replace-descr'.
28
29 * cus-start.el (history-delete-duplicates): Specify customization.
30
31 * diff-mode.el (diff-mode-map):
32 * progmodes/compile.el (compilation-mode-map):
33 * progmodes/grep.el (grep-mode-map):
34 * replace.el (occur-mode-map): Rename `next-error-follow-mode'
35 to `next-error-follow-minor-mode'.
36
372004-09-08 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
38
39 * isearch.el (isearch-lazy-highlight-update): Take into account
40 the case of zero-length match at the search bound.
41
422004-09-08 Kim F. Storm <storm@cua.dk>
43
44 * emulation/cua-rect.el (cua--highlight-rectangle): Fix last
45 change. Use zero width overlays when necessary.
46
472004-09-08 Thien-Thi Nguyen <ttn@gnu.org>
48
49 * subr.el (split-string): Docfix.
50
512004-09-08 Thien-Thi Nguyen <ttn@gnu.org>
52
53 * emacs-lisp/bytecomp.el (byte-compile-generate-call-tree): Doc fix.
54 (display-call-tree): Ensure newline after caller/calls blocks.
55
562004-09-08 Thien-Thi Nguyen <ttn@gnu.org>
57
58 * startup.el (command-line-1): Make option
59 --directory/-L modify `load-path' straight away.
60
612004-09-08 Thien-Thi Nguyen <ttn@gnu.org>
62
63 * progmodes/grep.el (grep-mode): Use normal autoload cookie.
64
652004-09-08 Thien-Thi Nguyen <ttn@gnu.org>
66
67 * emacs-lisp/autoload.el (make-autoload):
68 Handle `define-compilation-mode'.
69
70 * emacs-lisp/lisp-mode.el (define-compilation-mode):
71 Specify `doc-string-elt' property.
72
732004-09-08 Thien-Thi Nguyen <ttn@gnu.org>
74
75 * bs.el (bs-mode): Doc fix.
76
772004-09-08 Thien-Thi Nguyen <ttn@gnu.org>
78
79 * info.el (Info-insert-dir): Fix temp buffer leak bug.
80
812004-09-08 Thien-Thi Nguyen <ttn@gnu.org>
82
83 * play/blackbox.el (bb-trace-ray): Avoid double tracing.
84
852004-09-08 Kenichi Handa <handa@m17n.org>
86
87 * ps-mule.el: Fix old function calls (ps-mule-chars-in-string ->
88 length, ps-mule-string-char -> aref, ps-mule-next-index -> 1+,
89 ps-mule-next-point -> 1+).
90
91 * composite.el (encode-composition-rule): Add autoload cooky.
92
932004-09-07 Luc Teirlinck <teirllm@auburn.edu>
94
95 * format.el (buffer-auto-save-file-format): Make it permanent local.
96
972004-09-07 Kim F. Storm <storm@cua.dk>
98
99 * emacs-lisp/authors.el (authors-aliases): Add more aliases.
100 (authors-fixed-entries): Fix typo.
101 (authors-canonical-author-name): Compact multiple spaces.
102 Ignore trivial names (e.g. only first name).
103
104 * term.el (term-window-width): Only use full window width on
105 window system if overflow-newline-into-fringe is enabled.
106 (term-mode): Don't disable overflow-newline-into-fringe.
107
1082004-09-07 Stefan <monnier@iro.umontreal.ca>
109
110 * term/xterm.el (function-key-map): Add bindings for C- and S- cursor
111 motion as seen on my Mac OS X xterms.
112
113 * newcomment.el (uncomment-region-default, comment-region-default):
114 New functions extracted from uncomment-region and comment-region.
115 (comment-region, comment-region-function, uncomment-region)
116 (uncomment-region-function): Use them.
117
118 * pcvs-util.el (cvs-string-prefix-p): Use compare-strings.
119
120 * pcvs-info.el (cvs-states): Allow `ignore' on NEED-UPDATE.
121 It's not crucial but can make sense at times.
122
123 * vc-arch.el (vc-arch-workfile-version): Handle the special case before
124 the first commit.
125
126 * vc.el (vc-buffer-context, vc-restore-buffer-context):
127 Disable obsolete code.
128
1292004-09-07 Juri Linkov <juri@jurta.org>
130
131 * progmodes/grep.el (grep-highlight-matches): Change default from
132 `t' to `auto-detect', and type from `boolean' to `choice'. Doc fix.
133 (grep-compute-defaults): Set `grep-highlight-matches' to `t'
134 if grep option `--color' is available, or to `nil' otherwise.
135 (grep-process-setup): Call `grep-compute-defaults' if
136 `grep-highlight-matches' is not computed. Set env-vars only
137 if `grep-highlight-matches' is `t'.
138 (grep-use-null-device): Remove redundant type `boolean' (`choice'
139 is already defined).
140
141 * progmodes/compile.el (compilation-start): Use copy of
142 `process-environment' created by `copy-sequence' to not
143 modify env-vars in the global `process-environment'.
144
1452004-09-06 Eli Zaretskii <eliz@gnu.org>
146
147 * simple.el (next-error-follow-minor-mode): Fix last change.
148
12004-09-05 Luc Teirlinck <teirllm@auburn.edu> 1492004-09-05 Luc Teirlinck <teirllm@auburn.edu>
2 150
3 * textmodes/paragraphs.el (use-hard-newlines): Make it into a 151 * textmodes/paragraphs.el (use-hard-newlines): Make it into a
@@ -45,8 +193,7 @@
45 (next-error-follow-mode-post-command-hook): New functions. 193 (next-error-follow-mode-post-command-hook): New functions.
46 (next-error-follow-last-line): New defvar. 194 (next-error-follow-last-line): New defvar.
47 195
48 * diff-mode.el (diff-mode-map): Bind 196 * diff-mode.el (diff-mode-map): Bind next-error-follow-mode.
49 toggle-next-error-follow-mode.
50 * progmodes/compile.el (compilation-mode-map): Likewise. 197 * progmodes/compile.el (compilation-mode-map): Likewise.
51 * progmodes/grep.el (grep-mode-map): Likewise. 198 * progmodes/grep.el (grep-mode-map): Likewise.
52 * replace.el (occur-mode-map): Likewise. 199 * replace.el (occur-mode-map): Likewise.
diff --git a/lisp/bs.el b/lisp/bs.el
index 29258119974..76d8d25051f 100644
--- a/lisp/bs.el
+++ b/lisp/bs.el
@@ -628,8 +628,8 @@ For faster navigation each digit key is a digit argument.
628\\[bs-tmp-select-other-window] -- make another window display that buffer and 628\\[bs-tmp-select-other-window] -- make another window display that buffer and
629 remain in Buffer Selection Menu. 629 remain in Buffer Selection Menu.
630\\[bs-mouse-select] -- select current line's buffer and other marked buffers. 630\\[bs-mouse-select] -- select current line's buffer and other marked buffers.
631\\[bs-save] -- save current line's buffer immediatly. 631\\[bs-save] -- save current line's buffer immediately.
632\\[bs-delete] -- kill current line's buffer immediatly. 632\\[bs-delete] -- kill current line's buffer immediately.
633\\[bs-toggle-readonly] -- toggle read-only status of current line's buffer. 633\\[bs-toggle-readonly] -- toggle read-only status of current line's buffer.
634\\[bs-clear-modified] -- clear modified-flag on that buffer. 634\\[bs-clear-modified] -- clear modified-flag on that buffer.
635\\[bs-mark-current] -- mark current line's buffer to be displayed. 635\\[bs-mark-current] -- mark current line's buffer to be displayed.
diff --git a/lisp/buff-menu.el b/lisp/buff-menu.el
index 1ccaab1c6a3..33a8c3ec3f5 100644
--- a/lisp/buff-menu.el
+++ b/lisp/buff-menu.el
@@ -638,14 +638,11 @@ For more information, see the function `buffer-menu'."
638 (mapcar 638 (mapcar
639 (lambda (buffer) 639 (lambda (buffer)
640 (with-current-buffer buffer 640 (with-current-buffer buffer
641 (save-window-excursion 641 (setq name (buffer-name)
642 (setq name (buffer-name) 642 mode (concat (format-mode-line mode-name nil nil buffer)
643 mode (progn 643 (if mode-line-process
644 (set-window-buffer (selected-window) buffer) 644 (format-mode-line mode-line-process nil nil buffer)))
645 (concat (format-mode-line mode-name) 645 file (buffer-file-name))
646 (if mode-line-process
647 (format-mode-line mode-line-process))))
648 file (buffer-file-name)))
649 (cond 646 (cond
650 ;; Don't mention internal buffers. 647 ;; Don't mention internal buffers.
651 ((and (string= (substring name 0 1) " ") (null file))) 648 ((and (string= (substring name 0 1) " ") (null file)))
diff --git a/lisp/composite.el b/lisp/composite.el
index 8361e2ad9e3..4f9faf2ccfa 100644
--- a/lisp/composite.el
+++ b/lisp/composite.el
@@ -77,12 +77,16 @@ follows (the point `*' corresponds to both reference points):
77 +----+-----+ <--- new descent 77 +----+-----+ <--- new descent
78") 78")
79 79
80;; Encode composition rule RULE into an integer value. RULE is a cons
81;; of global and new reference point symbols.
82;; This must be compatible with C macro COMPOSITION_ENCODE_RULE
83;; defined in composite.h.
84 80
81;;;###autoload
85(defun encode-composition-rule (rule) 82(defun encode-composition-rule (rule)
83 "Encode composition rule RULE into an integer value.
84RULE is a cons of global and new reference point symbols
85\(see reference-point-alist)."
86
87 ;; This must be compatible with C macro COMPOSITION_ENCODE_RULE
88 ;; defined in composite.h.
89
86 (if (and (integerp rule) (< rule 144)) 90 (if (and (integerp rule) (< rule 144))
87 ;; Already encoded. 91 ;; Already encoded.
88 rule 92 rule
diff --git a/lisp/cus-start.el b/lisp/cus-start.el
index c9ce8f8474c..e764a70c9a2 100644
--- a/lisp/cus-start.el
+++ b/lisp/cus-start.el
@@ -168,6 +168,7 @@
168 (history-length minibuffer 168 (history-length minibuffer
169 (choice (const :tag "Infinite" t) 169 (choice (const :tag "Infinite" t)
170 integer)) 170 integer))
171 (history-delete-duplicates minibuffer boolean)
171 (minibuffer-prompt-properties 172 (minibuffer-prompt-properties
172 minibuffer 173 minibuffer
173 (list 174 (list
diff --git a/lisp/desktop.el b/lisp/desktop.el
index 3888262f02f..64e8770ffd0 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -171,13 +171,13 @@ This is useful for truncating history lists, for example."
171 :type 'hook 171 :type 'hook
172 :group 'desktop) 172 :group 'desktop)
173 173
174(defcustom desktop-globals-to-save '( 174(defcustom desktop-globals-to-save
175 desktop-missing-file-warning 175 '(desktop-missing-file-warning
176 tags-file-name 176 tags-file-name
177 tags-table-list 177 tags-table-list
178 search-ring 178 search-ring
179 regexp-search-ring 179 regexp-search-ring
180 register-alist) 180 register-alist)
181 "List of global variables saved by `desktop-save'. 181 "List of global variables saved by `desktop-save'.
182An element may be variable name (a symbol) or a cons cell of the form 182An element may be variable name (a symbol) or a cons cell of the form
183\(VAR . MAX-SIZE), which means to truncate VAR's value to at most 183\(VAR . MAX-SIZE), which means to truncate VAR's value to at most
@@ -186,13 +186,13 @@ Feature: Saving `kill-ring' implies saving `kill-ring-yank-pointer'."
186 :type '(repeat (restricted-sexp :match-alternatives (symbolp consp))) 186 :type '(repeat (restricted-sexp :match-alternatives (symbolp consp)))
187 :group 'desktop) 187 :group 'desktop)
188 188
189(defcustom desktop-globals-to-clear '( 189(defcustom desktop-globals-to-clear
190 kill-ring 190 '(kill-ring
191 kill-ring-yank-pointer 191 kill-ring-yank-pointer
192 search-ring 192 search-ring
193 search-ring-yank-pointer 193 search-ring-yank-pointer
194 regexp-search-ring 194 regexp-search-ring
195 regexp-search-ring-yank-pointer) 195 regexp-search-ring-yank-pointer)
196 "List of global variables to clear by `desktop-clear'. 196 "List of global variables to clear by `desktop-clear'.
197An element may be variable name (a symbol) or a cons cell of the form 197An element may be variable name (a symbol) or a cons cell of the form
198\(VAR . FORM). Symbols are set to nil and for cons cells VAR is set 198\(VAR . FORM). Symbols are set to nil and for cons cells VAR is set
@@ -202,29 +202,27 @@ to the value obtained by evaluateing FORM."
202 202
203(defcustom desktop-clear-preserve-buffers-regexp 203(defcustom desktop-clear-preserve-buffers-regexp
204 "^\\(\\*scratch\\*\\|\\*Messages\\*\\|\\*tramp/.+\\*\\)$" 204 "^\\(\\*scratch\\*\\|\\*Messages\\*\\|\\*tramp/.+\\*\\)$"
205 "Regexp identifying buffers that `desktop-clear' should not delete." 205 "Regexp identifying buffers that `desktop-clear' should not delete.
206See also `desktop-clear-preserve-buffers'."
206 :type 'regexp 207 :type 'regexp
207 :group 'desktop) 208 :group 'desktop)
208 209
209;; Maintained for backward compatibility
210(defcustom desktop-clear-preserve-buffers nil 210(defcustom desktop-clear-preserve-buffers nil
211 "*List of buffer names that `desktop-clear' should not delete. 211 "*List of buffer names that `desktop-clear' should not delete.
212This variable is maintained for backward compatibility only." 212See also `desktop-clear-preserve-buffers-regexp'."
213 :type '(repeat string) 213 :type '(repeat string)
214 :group 'desktop) 214 :group 'desktop)
215(make-obsolete-variable 'desktop-clear-preserve-buffers 215
216 'desktop-clear-preserve-buffers-regexp) 216(defcustom desktop-locals-to-save
217 217 '(desktop-locals-to-save ; Itself! Think it over.
218(defcustom desktop-locals-to-save '( 218 truncate-lines
219 desktop-locals-to-save ; Itself! Think it over. 219 case-fold-search
220 truncate-lines 220 case-replace
221 case-fold-search 221 fill-column
222 case-replace 222 overwrite-mode
223 fill-column 223 change-log-default-name
224 overwrite-mode 224 line-number-mode
225 change-log-default-name 225 buffer-file-coding-system)
226 line-number-mode
227 buffer-file-coding-system)
228 "List of local variables to save for each buffer. 226 "List of local variables to save for each buffer.
229The variables are saved only when they really are local." 227The variables are saved only when they really are local."
230 :type '(repeat symbol) 228 :type '(repeat symbol)
@@ -282,11 +280,11 @@ DESKTOP-BUFFER-MISC.")
282(make-obsolete-variable 'desktop-buffer-misc-functions 280(make-obsolete-variable 'desktop-buffer-misc-functions
283 'desktop-save-buffer) 281 'desktop-save-buffer)
284 282
285(defcustom desktop-buffer-mode-handlers '( 283(defcustom desktop-buffer-mode-handlers
286 (dired-mode . dired-restore-desktop-buffer) 284 '((dired-mode . dired-restore-desktop-buffer)
287 (rmail-mode . rmail-restore-desktop-buffer) 285 (rmail-mode . rmail-restore-desktop-buffer)
288 (mh-folder-mode . mh-restore-desktop-buffer) 286 (mh-folder-mode . mh-restore-desktop-buffer)
289 (Info-mode . Info-restore-desktop-buffer)) 287 (Info-mode . Info-restore-desktop-buffer))
290 "Alist of major mode specific functions to restore a desktop buffer. 288 "Alist of major mode specific functions to restore a desktop buffer.
291Functions are called by `desktop-read'. List elements must have the form 289Functions are called by `desktop-read'. List elements must have the form
292\(MAJOR-MODE . RESTORE-BUFFER-FUNCTION). 290\(MAJOR-MODE . RESTORE-BUFFER-FUNCTION).
@@ -580,8 +578,7 @@ See also `desktop-base-file-name'."
580 (let ((filename (expand-file-name desktop-base-file-name dirname)) 578 (let ((filename (expand-file-name desktop-base-file-name dirname))
581 (info 579 (info
582 (mapcar 580 (mapcar
583 (function 581 #'(lambda (b)
584 (lambda (b)
585 (set-buffer b) 582 (set-buffer b)
586 (list 583 (list
587 (desktop-file-name (buffer-file-name) dirname) 584 (desktop-file-name (buffer-file-name) dirname)
@@ -618,7 +615,7 @@ See also `desktop-base-file-name'."
618 (when (member (car locals) loclist) 615 (when (member (car locals) loclist)
619 (setq ll (cons (car locals) ll))))) 616 (setq ll (cons (car locals) ll)))))
620 (setq locals (cdr locals))) 617 (setq locals (cdr locals)))
621 ll)))) 618 ll)))
622 (buffer-list))) 619 (buffer-list)))
623 (buf (get-buffer-create "*desktop*"))) 620 (buf (get-buffer-create "*desktop*")))
624 (set-buffer buf) 621 (set-buffer buf)
@@ -639,19 +636,15 @@ See also `desktop-base-file-name'."
639 " kill-ring))\n")) 636 " kill-ring))\n"))
640 637
641 (insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n") 638 (insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n")
642 (mapcar 639 (mapcar #'(lambda (l)
643 (function 640 (if (apply 'desktop-save-buffer-p l)
644 (lambda (l) 641 (progn
645 (if (apply 'desktop-save-buffer-p l) 642 (insert "(desktop-create-buffer " desktop-file-version)
646 (progn 643 (mapcar #'(lambda (e)
647 (insert "(desktop-create-buffer " desktop-file-version) 644 (insert "\n " (desktop-value-to-string e)))
648 (mapcar 645 l)
649 (function 646 (insert ")\n\n"))))
650 (lambda (e) 647 info)
651 (insert "\n " (desktop-value-to-string e))))
652 l)
653 (insert ")\n\n")))))
654 info)
655 (setq default-directory dirname) 648 (setq default-directory dirname)
656 (when (file-exists-p filename) (delete-file filename)) 649 (when (file-exists-p filename) (delete-file filename))
657 (let ((coding-system-for-write 'emacs-mule)) 650 (let ((coding-system-for-write 'emacs-mule))
@@ -816,18 +809,18 @@ directory DIRNAME."
816 (defvar desktop-first-buffer) ;; Dynamically bound in `desktop-read' 809 (defvar desktop-first-buffer) ;; Dynamically bound in `desktop-read'
817) 810)
818 811
819(defun desktop-create-buffer ( 812(defun desktop-create-buffer
820 desktop-file-version 813 (desktop-file-version
821 desktop-buffer-file-name 814 desktop-buffer-file-name
822 desktop-buffer-name 815 desktop-buffer-name
823 desktop-buffer-major-mode 816 desktop-buffer-major-mode
824 desktop-buffer-minor-modes 817 desktop-buffer-minor-modes
825 desktop-buffer-point 818 desktop-buffer-point
826 desktop-buffer-mark 819 desktop-buffer-mark
827 desktop-buffer-read-only 820 desktop-buffer-read-only
828 desktop-buffer-misc 821 desktop-buffer-misc
829 &optional 822 &optional
830 desktop-buffer-locals) 823 desktop-buffer-locals)
831 ;; Just to silence the byte compiler. Bound locally in `desktop-read'. 824 ;; Just to silence the byte compiler. Bound locally in `desktop-read'.
832 (eval-when-compile 825 (eval-when-compile
833 (defvar desktop-buffer-ok-count) 826 (defvar desktop-buffer-ok-count)
@@ -835,21 +828,21 @@ directory DIRNAME."
835 ;; To make desktop files with relative file names possible, we cannot 828 ;; To make desktop files with relative file names possible, we cannot
836 ;; allow `default-directory' to change. Therefore we save current buffer. 829 ;; allow `default-directory' to change. Therefore we save current buffer.
837 (save-current-buffer 830 (save-current-buffer
838 (let ( 831 (let ((buffer-list (buffer-list))
839 (buffer-list (buffer-list)) 832 (result
840 (result 833 (condition-case err
841 (condition-case err 834 (funcall (or (cdr (assq desktop-buffer-major-mode
842 (funcall (or (cdr (assq desktop-buffer-major-mode desktop-buffer-mode-handlers)) 835 desktop-buffer-mode-handlers))
843 'desktop-restore-file-buffer) 836 'desktop-restore-file-buffer)
844 desktop-buffer-file-name 837 desktop-buffer-file-name
845 desktop-buffer-name 838 desktop-buffer-name
846 desktop-buffer-misc) 839 desktop-buffer-misc)
847 (error 840 (error
848 (message "Desktop: Can't load buffer %s: %s" 841 (message "Desktop: Can't load buffer %s: %s"
849 desktop-buffer-name (error-message-string err)) 842 desktop-buffer-name
850 (when desktop-missing-file-warning (sit-for 1)) 843 (error-message-string err))
851 nil))) 844 (when desktop-missing-file-warning (sit-for 1))
852 ) 845 nil))))
853 (if (bufferp result) 846 (if (bufferp result)
854 (setq desktop-buffer-ok-count (1+ desktop-buffer-ok-count)) 847 (setq desktop-buffer-ok-count (1+ desktop-buffer-ok-count))
855 (setq desktop-buffer-fail-count (1+ desktop-buffer-fail-count)) 848 (setq desktop-buffer-fail-count (1+ desktop-buffer-fail-count))
@@ -867,17 +860,14 @@ directory DIRNAME."
867 (unless (equal (buffer-name) desktop-buffer-name) 860 (unless (equal (buffer-name) desktop-buffer-name)
868 (rename-buffer desktop-buffer-name)) 861 (rename-buffer desktop-buffer-name))
869 ;; minor modes 862 ;; minor modes
870 (cond ( 863 (cond ((equal '(t) desktop-buffer-minor-modes) ; backwards compatible
871 ;; backwards compatible 864 (auto-fill-mode 1))
872 (equal '(t) desktop-buffer-minor-modes) 865 ((equal '(nil) desktop-buffer-minor-modes) ; backwards compatible
873 (auto-fill-mode 1))( 866 (auto-fill-mode 0))
874 (equal '(nil) desktop-buffer-minor-modes) 867 (t
875 (auto-fill-mode 0))( 868 (mapcar #'(lambda (minor-mode)
876 t 869 (when (functionp minor-mode) (funcall minor-mode 1)))
877 (mapcar 870 desktop-buffer-minor-modes)))
878 #'(lambda (minor-mode)
879 (when (functionp minor-mode) (funcall minor-mode 1)))
880 desktop-buffer-minor-modes)))
881 ;; Even though point and mark are non-nil when written by `desktop-save' 871 ;; Even though point and mark are non-nil when written by `desktop-save'
882 ;; they may be modified by handlers wanting to set point or mark themselves. 872 ;; they may be modified by handlers wanting to set point or mark themselves.
883 (when desktop-buffer-point 873 (when desktop-buffer-point
diff --git a/lisp/diff-mode.el b/lisp/diff-mode.el
index f31ab092189..21b1c6446e5 100644
--- a/lisp/diff-mode.el
+++ b/lisp/diff-mode.el
@@ -140,7 +140,7 @@ when editing big diffs)."
140 ("\C-c\C-s" . diff-split-hunk) 140 ("\C-c\C-s" . diff-split-hunk)
141 ("\C-c\C-a" . diff-apply-hunk) 141 ("\C-c\C-a" . diff-apply-hunk)
142 ("\C-c\C-t" . diff-test-hunk) 142 ("\C-c\C-t" . diff-test-hunk)
143 ("\C-c\C-f" . next-error-follow-mode)) 143 ("\C-c\C-f" . next-error-follow-minor-mode))
144 "Keymap for `diff-mode'. See also `diff-mode-shared-map'.") 144 "Keymap for `diff-mode'. See also `diff-mode-shared-map'.")
145 145
146(easy-menu-define diff-mode-menu diff-mode-map 146(easy-menu-define diff-mode-menu diff-mode-map
diff --git a/lisp/emacs-lisp/authors.el b/lisp/emacs-lisp/authors.el
index 3d0936a8c46..5ab42c06e8e 100644
--- a/lisp/emacs-lisp/authors.el
+++ b/lisp/emacs-lisp/authors.el
@@ -52,18 +52,23 @@ files.")
52 ("David Gillespie" "Dave Gillespie") 52 ("David Gillespie" "Dave Gillespie")
53 ("David K,Ae(Bgedal" "David K..edal") 53 ("David K,Ae(Bgedal" "David K..edal")
54 ("David M. Koppelman" "David M. Koppelman, Koppel@Ee.Lsu.Edu") 54 ("David M. Koppelman" "David M. Koppelman, Koppel@Ee.Lsu.Edu")
55 ("David M. Smith" "David Smith") 55 ("David M. Smith" "David Smith" "David M Smith")
56 ("Ed L. Cashin" "Ed L Cashin")
56 ("Edward M. Reingold" "Ed Reingold" "Edward M Reingold" 57 ("Edward M. Reingold" "Ed Reingold" "Edward M Reingold"
57 "Reingold Edward M") 58 "Reingold Edward M")
58 ("Eli Zaretskii" "eliz") 59 ("Eli Zaretskii" "eliz")
60; ("Emilio C. Lopes" "Emilio Lopes")
61 ("Era Eriksson" "Era@Iki.Fi")
59 ("Eric M. Ludlam" "Eric Ludlam") 62 ("Eric M. Ludlam" "Eric Ludlam")
60 ("Eric S. Raymond" "Eric Raymond") 63 ("Eric S. Raymond" "Eric Raymond")
61 ("Eric Youngdale" "(Eric Youngdale at youngdale@v6550c.nrl.navy.mil)") 64 ("Eric Youngdale" "(Eric Youngdale at youngdale@v6550c.nrl.navy.mil)")
65 ("Francis J. Wright" "Dr Francis J. Wright" "Francis Wright")
62 ("Fran,Ag(Bois Pinard" "Francois Pinard") 66 ("Fran,Ag(Bois Pinard" "Francois Pinard")
63 ("Francesco Potort,Al(B" "Francesco Potorti" "Francesco Potorti`") 67 ("Francesco Potort,Al(B" "Francesco Potorti" "Francesco Potorti`")
64 ("Frederic Pierresteguy" "Fred Pierresteguy") 68 ("Frederic Pierresteguy" "Fred Pierresteguy")
65 ("Geoff Voelker" "voelker") 69 ("Geoff Voelker" "voelker")
66 ("Hallvard B. Furuseth" "Hallvard B Furuseth") 70 ("Hallvard B. Furuseth" "Hallvard B Furuseth")
71 ("Hrvoje Nik,B9(Bi,Bf(B" "Hrvoje Niksic")
67 (nil "(afs@hplb.hpl.hp.com)") 72 (nil "(afs@hplb.hpl.hp.com)")
68 (nil "<Use-Author-Address-Header@\\[127.1\\]>") 73 (nil "<Use-Author-Address-Header@\\[127.1\\]>")
69 (nil "Code Extracted") 74 (nil "Code Extracted")
@@ -71,25 +76,33 @@ files.")
71 (nil "ISO-2022-JP") 76 (nil "ISO-2022-JP")
72 ("Jaeyoun Chung" "Jae-youn Chung" "Jae-you Chung" "Chung Jae-youn") 77 ("Jaeyoun Chung" "Jae-youn Chung" "Jae-you Chung" "Chung Jae-youn")
73 ("Jan Dj,Ad(Brv" "Jan D." "Jan Djarv") 78 ("Jan Dj,Ad(Brv" "Jan D." "Jan Djarv")
74 ("Jay K. Adams" "jka@ece.cmu.edu") 79 ("Jay K. Adams" "jka@ece.cmu.edu" "Jay Adams")
75 ("Jay R. Adams" "Jay Adams") 80 ("J,Ai(Br,At(Bme Marant" "J,bi(Br,bt(Bme Marant" "Jerome Marant")
76 ("Jens-Ulrik Holger Petersen" "Jens-Ulrik Petersen") 81 ("Jens-Ulrik Holger Petersen" "Jens-Ulrik Petersen")
77 ("Jonathan I. Kamens" "Jonathan Kamens") 82 ("Jonathan I. Kamens" "Jonathan Kamens")
78 ("Joseph Arceneaux" "Joe Arceneaux") 83 ("Joseph Arceneaux" "Joe Arceneaux")
79 ("K. Shane Hartman" "Shane Hartman") 84 ("K. Shane Hartman" "Shane Hartman")
80 ("Kai Gro,A_(Bjohann" "Kai Grossjohann" "Kai Gro,b_(Bjohann" 85 ("Kai Gro,A_(Bjohann" "Kai Grossjohann" "Kai Gro,b_(Bjohann"
81 "Kai.Grossjohann@Cs.Uni-Dortmund.De") 86 "Kai.Grossjohann@Cs.Uni-Dortmund.De"
87 "Kai.Grossjohann@Gmx.Net")
82 ("Karl Berry" "K. Berry") 88 ("Karl Berry" "K. Berry")
89 ("Kazushi Marukawa" "Kazushi")
83 ("Ken Manheimer" "Kenneth Manheimer") 90 ("Ken Manheimer" "Kenneth Manheimer")
84 ("Kenichi Handa" "Ken'ichi Handa" "Kenichi HANDA") 91 ("Kenichi Handa" "Ken'ichi Handa" "Kenichi HANDA")
85 ("Kim F. Storm" "Kim Storm") 92 ("Kim F. Storm" "Kim Storm")
93 ("Kyle Jones" "Kyle E. Jones")
86 ("Marcus G. Daniels" "Marcus Daniels") 94 ("Marcus G. Daniels" "Marcus Daniels")
95 ("Mark D. Baushke" "Mark D Baushke")
96 ("Martin Lorentzon" "Martin Lorentzson")
97 ("Matt Swift" "Matthew Swift")
87 ("Michael D. Ernst" "Michael Ernst") 98 ("Michael D. Ernst" "Michael Ernst")
88 ("Michael I. Bushnell" "Michael I Bushnell" "Michael I. Bushnell, P/Bsg") 99 ("Michael I. Bushnell" "Michael I Bushnell" "Michael I. Bushnell, P/Bsg")
89 ("Paul Eggert" "eggert") 100 ("Paul Eggert" "eggert")
90 ("Paul Reilly" "(pmr@legacy.pajato.com)") 101 ("Paul Reilly" "(pmr@legacy.pajato.com)")
91 ("Pavel Jan,Bm(Bk" "Pavel Jan,Am(Bk Ml.") 102 ("Pavel Jan,Bm(Bk" "Pavel Jan,Am(Bk Ml." "Pavel Jan,Am(Bk" "Pavel@Janik.Cz")
92 ("Per Abrahamsen" "Per Abhiddenware") 103 ("Per Abrahamsen" "Per Abhiddenware")
104 ("Peter S. Galbraith" "Peter Galbraith")
105 ("Peter Runestig" "Peter 'luna' Runestig")
93 ("Peter S. Galbraith" "Peter S Galbraith") 106 ("Peter S. Galbraith" "Peter S Galbraith")
94 ("Richard M. Stallman" "Richard M. Stallman,,," "Richard Stallman" 107 ("Richard M. Stallman" "Richard M. Stallman,,," "Richard Stallman"
95 "rms" "rms@gnu.org") 108 "rms" "rms@gnu.org")
@@ -97,9 +110,11 @@ files.")
97 ("Roland B. Roberts" "Roland B Roberts" "Roland Roberts") 110 ("Roland B. Roberts" "Roland B Roberts" "Roland Roberts")
98 ("Rui-Tao Dong" "Rui-Tao Dong ~{6-Hpln~}") 111 ("Rui-Tao Dong" "Rui-Tao Dong ~{6-Hpln~}")
99 ("Sam Steingold" "Sam Shteingold") 112 ("Sam Steingold" "Sam Shteingold")
113 ("Stefan Monnier" "Stefan")
100 ("Stephen A. Wood" "(saw@cebaf.gov)") 114 ("Stephen A. Wood" "(saw@cebaf.gov)")
101 ("Steven L. Baur" "SL Baur" "Steven L Baur") 115 ("Steven L. Baur" "SL Baur" "Steven L Baur")
102 ("Takaaki Ota" "Tak Ota") 116 ("Takaaki Ota" "Tak Ota")
117 ("Teodor Zlatanov" "Ted Zlatanov")
103 ("Torbj,Av(Brn Axelsson" "Torbjvrn Axelsson") 118 ("Torbj,Av(Brn Axelsson" "Torbjvrn Axelsson")
104 ("Torbj,Av(Brn Einarsson" "Torbj.*rn Einarsson") 119 ("Torbj,Av(Brn Einarsson" "Torbj.*rn Einarsson")
105 ("Toru Tomabechi" "Toru Tomabechi,") 120 ("Toru Tomabechi" "Toru Tomabechi,")
@@ -207,7 +222,7 @@ listed.")
207 ("Frederic Pierresteguy" :wrote "widget.c") 222 ("Frederic Pierresteguy" :wrote "widget.c")
208 ("Michael D. Prange" :changed "tex-mode.el") 223 ("Michael D. Prange" :changed "tex-mode.el")
209 ("Paul Reilly" :wrote "gux5-4r2.h" "dgux5-4r3.h") 224 ("Paul Reilly" :wrote "gux5-4r2.h" "dgux5-4r3.h")
210 ("Roland B Roberts" :changed "files.el" "sort.el" "vmsproc.el" 225 ("Roland B. Roberts" :changed "files.el" "sort.el" "vmsproc.el"
211 "buffer.h" "callproc.c" "dired.c" "process.c" "sysdep.c" "systty.h" 226 "buffer.h" "callproc.c" "dired.c" "process.c" "sysdep.c" "systty.h"
212 "vmspaths.h" "build.com" "compile.com" "kepteditor.com" "precomp.com" 227 "vmspaths.h" "build.com" "compile.com" "kepteditor.com" "precomp.com"
213 :wrote "logout.com" "mailemacs.com") 228 :wrote "logout.com" "mailemacs.com")
@@ -405,11 +420,13 @@ words in the author's name."
405 (setq regexps (cdr regexps)))))) 420 (setq regexps (cdr regexps))))))
406 (when author 421 (when author
407 (setq author (replace-regexp-in-string "[ \t]*[(<].*$" "" author)) 422 (setq author (replace-regexp-in-string "[ \t]*[(<].*$" "" author))
408 (setq author (replace-regexp-in-string "^[ \t]+" "" author)) 423 (setq author (replace-regexp-in-string "\`[ \t]+" "" author))
409 (setq author (replace-regexp-in-string "[ \t]+$" "" author)) 424 (setq author (replace-regexp-in-string "[ \t]+$" "" author))
425 (setq author (replace-regexp-in-string "[ \t]+" " " author))
426 (unless (string-match "[-, \t]" author)
427 (setq author ""))
410 (capitalize author))) 428 (capitalize author)))
411 429
412
413(defun authors-scan-change-log (log-file table) 430(defun authors-scan-change-log (log-file table)
414 "Scan change log LOG-FILE for author information. 431 "Scan change log LOG-FILE for author information.
415 432
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el
index 21843c9601d..5a5eb55a2a2 100644
--- a/lisp/emacs-lisp/autoload.el
+++ b/lisp/emacs-lisp/autoload.el
@@ -86,6 +86,7 @@ or macro definition or a defcustom)."
86 86
87 ;; For special function-like operators, use the `autoload' function. 87 ;; For special function-like operators, use the `autoload' function.
88 ((memq car '(defun define-skeleton defmacro define-derived-mode 88 ((memq car '(defun define-skeleton defmacro define-derived-mode
89 define-compilation-mode
89 define-generic-mode easy-mmode-define-minor-mode 90 define-generic-mode easy-mmode-define-minor-mode
90 easy-mmode-define-global-mode 91 easy-mmode-define-global-mode
91 define-minor-mode defun* defmacro*)) 92 define-minor-mode defun* defmacro*))
@@ -94,7 +95,8 @@ or macro definition or a defcustom)."
94 (args (case car 95 (args (case car
95 ((defun defmacro defun* defmacro*) (nth 2 form)) 96 ((defun defmacro defun* defmacro*) (nth 2 form))
96 ((define-skeleton) '(&optional str arg)) 97 ((define-skeleton) '(&optional str arg))
97 ((define-generic-mode define-derived-mode) nil) 98 ((define-generic-mode define-derived-mode
99 define-compilation-mode) nil)
98 (t))) 100 (t)))
99 (body (nthcdr (get car 'doc-string-elt) form)) 101 (body (nthcdr (get car 'doc-string-elt) form))
100 (doc (if (stringp (car body)) (pop body)))) 102 (doc (if (stringp (car body)) (pop body))))
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 0a12f6fae9f..2b0a8e698a6 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -354,7 +354,7 @@ Elements of the list may be be:
354 354
355(defcustom byte-compile-generate-call-tree nil 355(defcustom byte-compile-generate-call-tree nil
356 "*Non-nil means collect call-graph information when compiling. 356 "*Non-nil means collect call-graph information when compiling.
357This records functions were called and from where. 357This records which functions were called and from where.
358If the value is t, compilation displays the call graph when it finishes. 358If the value is t, compilation displays the call graph when it finishes.
359If the value is neither t nor nil, compilation asks you whether to display 359If the value is neither t nor nil, compilation asks you whether to display
360the graph. 360the graph.
@@ -3878,15 +3878,18 @@ invoked interactively."
3878 (mapconcat 'symbol-name callers ", ") 3878 (mapconcat 'symbol-name callers ", ")
3879 "<top level>")) 3879 "<top level>"))
3880 (let ((fill-prefix " ")) 3880 (let ((fill-prefix " "))
3881 (fill-region-as-paragraph p (point))))) 3881 (fill-region-as-paragraph p (point)))
3882 (unless (= 0 (current-column))
3883 (insert "\n"))))
3882 (if calls 3884 (if calls
3883 (progn 3885 (progn
3884 (insert " calls:\n") 3886 (insert " calls:\n")
3885 (setq p (point)) 3887 (setq p (point))
3886 (insert " " (mapconcat 'symbol-name calls ", ")) 3888 (insert " " (mapconcat 'symbol-name calls ", "))
3887 (let ((fill-prefix " ")) 3889 (let ((fill-prefix " "))
3888 (fill-region-as-paragraph p (point))))) 3890 (fill-region-as-paragraph p (point)))
3889 (insert "\n") 3891 (unless (= 0 (current-column))
3892 (insert "\n"))))
3890 (setq rest (cdr rest))) 3893 (setq rest (cdr rest)))
3891 3894
3892 (message "Generating call tree...(finding uncalled functions...)") 3895 (message "Generating call tree...(finding uncalled functions...)")
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index e2aac327ddc..700fc5f80a8 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -129,6 +129,7 @@
129(put 'defsubst 'doc-string-elt 3) 129(put 'defsubst 'doc-string-elt 3)
130(put 'define-skeleton 'doc-string-elt 2) 130(put 'define-skeleton 'doc-string-elt 2)
131(put 'define-derived-mode 'doc-string-elt 4) 131(put 'define-derived-mode 'doc-string-elt 4)
132(put 'define-compilation-mode 'doc-string-elt 3)
132(put 'easy-mmode-define-minor-mode 'doc-string-elt 2) 133(put 'easy-mmode-define-minor-mode 'doc-string-elt 2)
133(put 'define-minor-mode 'doc-string-elt 2) 134(put 'define-minor-mode 'doc-string-elt 2)
134(put 'define-generic-mode 'doc-string-elt 7) 135(put 'define-generic-mode 'doc-string-elt 7)
@@ -489,7 +490,7 @@ If CHAR is not a character, return nil."
489 (and string 490 (and string
490 (= (car (read-from-string string)) char) 491 (= (car (read-from-string string)) char)
491 string)))) 492 string))))
492 493
493 494
494(defun eval-last-sexp-1 (eval-last-sexp-arg-internal) 495(defun eval-last-sexp-1 (eval-last-sexp-arg-internal)
495 "Evaluate sexp before point; print value in minibuffer. 496 "Evaluate sexp before point; print value in minibuffer.
diff --git a/lisp/emulation/cua-rect.el b/lisp/emulation/cua-rect.el
index 3270b7fd62c..10d369fa042 100644
--- a/lisp/emulation/cua-rect.el
+++ b/lisp/emulation/cua-rect.el
@@ -778,7 +778,6 @@ If command is repeated at same position, delete the rectangle."
778 '(lambda (s e l r v) 778 '(lambda (s e l r v)
779 (let ((rface (if v 'cua-rectangle-face 'cua-rectangle-noselect-face)) 779 (let ((rface (if v 'cua-rectangle-face 'cua-rectangle-noselect-face))
780 overlay bs ms as) 780 overlay bs ms as)
781 (if (= s e) (setq e (1+ e)))
782 (when (cua--rectangle-virtual-edges) 781 (when (cua--rectangle-virtual-edges)
783 (let ((lb (line-beginning-position)) 782 (let ((lb (line-beginning-position))
784 (le (line-end-position)) 783 (le (line-end-position))
diff --git a/lisp/format.el b/lisp/format.el
index f3a5ae2d581..62b957452b0 100644
--- a/lisp/format.el
+++ b/lisp/format.el
@@ -37,7 +37,7 @@
37;; change this variable, or use `format-write-file'. 37;; change this variable, or use `format-write-file'.
38;; 38;;
39;; Auto-save files are normally created in the same format as the visited 39;; Auto-save files are normally created in the same format as the visited
40;; file, but the variable `auto-save-file-format' can be set to a 40;; file, but the variable `buffer-auto-save-file-format' can be set to a
41;; particularly fast or otherwise preferred format to be used for 41;; particularly fast or otherwise preferred format to be used for
42;; auto-saving (or nil to do no encoding on auto-save files, but then you 42;; auto-saving (or nil to do no encoding on auto-save files, but then you
43;; risk losing any text-properties in the buffer). 43;; risk losing any text-properties in the buffer).
@@ -62,6 +62,7 @@
62;;; Code: 62;;; Code:
63 63
64(put 'buffer-file-format 'permanent-local t) 64(put 'buffer-file-format 'permanent-local t)
65(put 'buffer-auto-save-file-format 'permanent-local t)
65 66
66(defvar format-alist 67(defvar format-alist
67 '((text/enriched "Extended MIME text/enriched format." 68 '((text/enriched "Extended MIME text/enriched format."
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 83c74fe118d..0f0f4697c47 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,7 +1,35 @@
12004-09-08 Reiner Steib <Reiner.Steib@gmx.de>
2
3 * nntp.el (nntp): New customization group.
4 (nntp-authinfo-file): Added customization group.
5
6 * mml2015.el (mml2015-unabbrev-trust-alist): Added customization
7 group.
8
9 * mml-sec.el (mml-signencrypt-style-alist): Ditto.
10
11 * gnus.el (to-address, to-list, subscribed)
12 (large-newsgroup-initial): Ditto.
13
14 * flow-fill.el (fill-flowed-display-column)
15 (fill-flowed-encode-column): Ditto.
16
172004-09-06 Stefan <monnier@iro.umontreal.ca>
18
19 * message.el (message-tokenize-header, message-send-mail-with-qmail):
20 Use point-min rather than 1.
21 (message-send-mail): Use buffer-size rather than point-max.
22
23 * gnus-sum.el (gnus-summary-search-article-forward):
24 Signal a specific `search-failed' rather than a generic `error'.
25
26 * gnus-salt.el (gnus-pick-mouse-pick-region): Switch 1 => point-min.
27 (gnus-generate-vertical-tree): Usue `bobp' rather than compare to 1.
28 (gnus-highlight-selected-tree): Use point-min rather than 1 and 2.
29
12004-09-03 Katsumi Yamaoka <yamaoka@jpl.org> 302004-09-03 Katsumi Yamaoka <yamaoka@jpl.org>
2 31
3 * gnus-sum.el (gnus-summary-insert-subject): Remove list 32 * gnus-sum.el (gnus-summary-insert-subject): Remove list identifiers.
4 identifiers.
5 33
6 From Hiroshi Fujishima <pooh@nature.tsukuba.ac.jp> (tiny change). 34 From Hiroshi Fujishima <pooh@nature.tsukuba.ac.jp> (tiny change).
7 * spam-stat.el (spam-stat-reduce-size): Set spam-stat-dirty. 35 * spam-stat.el (spam-stat-reduce-size): Set spam-stat-dirty.
diff --git a/lisp/gnus/flow-fill.el b/lisp/gnus/flow-fill.el
index c3602cc9b44..9f2ae5c98bd 100644
--- a/lisp/gnus/flow-fill.el
+++ b/lisp/gnus/flow-fill.el
@@ -56,6 +56,7 @@
56(defcustom fill-flowed-display-column 'fill-column 56(defcustom fill-flowed-display-column 'fill-column
57 "Column beyond which format=flowed lines are wrapped, when displayed. 57 "Column beyond which format=flowed lines are wrapped, when displayed.
58This can be a Lisp expression or an integer." 58This can be a Lisp expression or an integer."
59 :group 'mime-display
59 :type '(choice (const :tag "Standard `fill-column'" fill-column) 60 :type '(choice (const :tag "Standard `fill-column'" fill-column)
60 (const :tag "Fit Window" (- (window-width) 5)) 61 (const :tag "Fit Window" (- (window-width) 5))
61 (sexp) 62 (sexp)
@@ -65,6 +66,7 @@ This can be a Lisp expression or an integer."
65 "Column beyond which format=flowed lines are wrapped, in outgoing messages. 66 "Column beyond which format=flowed lines are wrapped, in outgoing messages.
66This can be a Lisp expression or an integer. 67This can be a Lisp expression or an integer.
67RFC 2646 suggests 66 characters for readability." 68RFC 2646 suggests 66 characters for readability."
69 :group 'mime-display
68 :type '(choice (const :tag "Standard fill-column" fill-column) 70 :type '(choice (const :tag "Standard fill-column" fill-column)
69 (const :tag "RFC 2646 default (66)" 66) 71 (const :tag "RFC 2646 default (66)" 66)
70 (sexp) 72 (sexp)
diff --git a/lisp/gnus/gnus-salt.el b/lisp/gnus/gnus-salt.el
index d9720c819b2..0f4984112f5 100644
--- a/lisp/gnus/gnus-salt.el
+++ b/lisp/gnus/gnus-salt.el
@@ -230,7 +230,7 @@ This must be bound to a button-down mouse event."
230 (let* ((echo-keystrokes 0) 230 (let* ((echo-keystrokes 0)
231 (start-posn (event-start start-event)) 231 (start-posn (event-start start-event))
232 (start-point (posn-point start-posn)) 232 (start-point (posn-point start-posn))
233 (start-line (1+ (count-lines 1 start-point))) 233 (start-line (1+ (count-lines (point-min) start-point)))
234 (start-window (posn-window start-posn)) 234 (start-window (posn-window start-posn))
235 (bounds (gnus-window-edges start-window)) 235 (bounds (gnus-window-edges start-window))
236 (top (nth 1 bounds)) 236 (top (nth 1 bounds))
@@ -266,17 +266,18 @@ This must be bound to a button-down mouse event."
266 ;; Are we moving within the original window? 266 ;; Are we moving within the original window?
267 ((and (eq (posn-window end) start-window) 267 ((and (eq (posn-window end) start-window)
268 (integer-or-marker-p end-point)) 268 (integer-or-marker-p end-point))
269 ;; Go to START-POINT first, so that when we move to END-POINT, 269 ;; Go to START-POINT first, so that when we move to END-POINT,
270 ;; if it's in the middle of intangible text, 270 ;; if it's in the middle of intangible text,
271 ;; point jumps in the direction away from START-POINT. 271 ;; point jumps in the direction away from START-POINT.
272 (goto-char start-point) 272 (goto-char start-point)
273 (goto-char end-point) 273 (goto-char end-point)
274 (gnus-pick-article) 274 (gnus-pick-article)
275 ;; In case the user moved his mouse really fast, pick 275 ;; In case the user moved his mouse really fast, pick
276 ;; articles on the line between this one and the last one. 276 ;; articles on the line between this one and the last one.
277 (let* ((this-line (1+ (count-lines 1 end-point))) 277 (let* ((this-line (1+ (count-lines (point-min) end-point)))
278 (min-line (min this-line start-line)) 278 (min-line (min this-line start-line))
279 (max-line (max this-line start-line))) 279 (max-line (max this-line start-line)))
280 ;; Why not use `forward-line'? --Stef
280 (while (< min-line max-line) 281 (while (< min-line max-line)
281 (goto-line min-line) 282 (goto-line min-line)
282 (gnus-pick-article) 283 (gnus-pick-article)
@@ -787,7 +788,7 @@ Two predefined functions are available:
787 (setq beg (point)) 788 (setq beg (point))
788 (forward-char -1) 789 (forward-char -1)
789 ;; Draw "-" lines leftwards. 790 ;; Draw "-" lines leftwards.
790 (while (and (> (point) 1) 791 (while (and (not (bobp))
791 (eq (char-after (1- (point))) ? )) 792 (eq (char-after (1- (point))) ? ))
792 (delete-char -1) 793 (delete-char -1)
793 (insert (car gnus-tree-parent-child-edges)) 794 (insert (car gnus-tree-parent-child-edges))
@@ -858,7 +859,8 @@ Two predefined functions are available:
858 (gnus-extent-detached-p gnus-selected-tree-overlay)) 859 (gnus-extent-detached-p gnus-selected-tree-overlay))
859 ;; Create a new overlay. 860 ;; Create a new overlay.
860 (gnus-overlay-put 861 (gnus-overlay-put
861 (setq gnus-selected-tree-overlay (gnus-make-overlay 1 2)) 862 (setq gnus-selected-tree-overlay
863 (gnus-make-overlay (point-min) (1+ (point-min))))
862 'face gnus-selected-tree-face)) 864 'face gnus-selected-tree-face))
863 ;; Move the overlay to the article. 865 ;; Move the overlay to the article.
864 (gnus-move-overlay 866 (gnus-move-overlay
@@ -1062,5 +1064,5 @@ The following commands are available:
1062 1064
1063(provide 'gnus-salt) 1065(provide 'gnus-salt)
1064 1066
1065;;; arch-tag: 35449164-77b3-4398-bcbd-a2e3e998f810 1067;; arch-tag: 35449164-77b3-4398-bcbd-a2e3e998f810
1066;;; gnus-salt.el ends here 1068;;; gnus-salt.el ends here
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index af5a2362194..77d5037b32d 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -8341,7 +8341,7 @@ If BACKWARD, search backward instead."
8341 (let ((gnus-last-article gnus-last-article)) 8341 (let ((gnus-last-article gnus-last-article))
8342 (if (gnus-summary-search-article regexp backward) 8342 (if (gnus-summary-search-article regexp backward)
8343 (gnus-summary-show-thread) 8343 (gnus-summary-show-thread)
8344 (error "Search failed: \"%s\"" regexp)))) 8344 (signal 'search-failed (list regexp)))))
8345 8345
8346(defun gnus-summary-search-article-backward (regexp) 8346(defun gnus-summary-search-article-backward (regexp)
8347 "Search for an article containing REGEXP backward." 8347 "Search for an article containing REGEXP backward."
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index 5d09c4b5c3c..eaa77f02e90 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -1599,6 +1599,7 @@ to be desirable; see the manual for further details."
1599 "Return GROUP's to-address." 1599 "Return GROUP's to-address."
1600 :variable-document 1600 :variable-document
1601 "*Alist of group regexps and correspondent to-addresses." 1601 "*Alist of group regexps and correspondent to-addresses."
1602 :variable-group gnus-group-parameter
1602 :parameter-type '(gnus-email-address :tag "To Address") 1603 :parameter-type '(gnus-email-address :tag "To Address")
1603 :parameter-document "\ 1604 :parameter-document "\
1604This will be used when doing followups and posts. 1605This will be used when doing followups and posts.
@@ -1625,6 +1626,7 @@ address was listed in gnus-group-split Addresses (see below).")
1625 "Return GROUP's to-list." 1626 "Return GROUP's to-list."
1626 :variable-document 1627 :variable-document
1627 "*Alist of group regexps and correspondent to-lists." 1628 "*Alist of group regexps and correspondent to-lists."
1629 :variable-group gnus-group-parameter
1628 :parameter-type '(gnus-email-address :tag "To List") 1630 :parameter-type '(gnus-email-address :tag "To List")
1629 :parameter-document "\ 1631 :parameter-document "\
1630This address will be used when doing a `a' in the group. 1632This address will be used when doing a `a' in the group.
@@ -1643,6 +1645,7 @@ address was listed in gnus-group-split Addresses (see below).")
1643 "Return GROUP's subscription status." 1645 "Return GROUP's subscription status."
1644 :variable-document 1646 :variable-document
1645 "*Groups which are automatically considered subscribed." 1647 "*Groups which are automatically considered subscribed."
1648 :variable-group gnus-group-parameter
1646 :parameter-type '(const :tag "Subscribed" t) 1649 :parameter-type '(const :tag "Subscribed" t)
1647 :parameter-document "\ 1650 :parameter-document "\
1648Gnus assumed that you are subscribed to the To/List address. 1651Gnus assumed that you are subscribed to the To/List address.
@@ -1749,6 +1752,7 @@ posting an article."
1749 "Return GROUP's initial input of the number of articles." 1752 "Return GROUP's initial input of the number of articles."
1750 :variable-document 1753 :variable-document
1751 "*Alist of group regexps and its initial input of the number of articles." 1754 "*Alist of group regexps and its initial input of the number of articles."
1755 :variable-group gnus-group-parameter
1752 :parameter-type '(choice :tag "Initial Input for Large Newsgroup" 1756 :parameter-type '(choice :tag "Initial Input for Large Newsgroup"
1753 (const :tag "All" nil) 1757 (const :tag "All" nil)
1754 (integer)) 1758 (integer))
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index bd98cf0eac8..0e74da73b7d 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -1588,7 +1588,7 @@ is used by default."
1588 (if (not header) 1588 (if (not header)
1589 nil 1589 nil
1590 (let ((regexp (format "[%s]+" (or separator ","))) 1590 (let ((regexp (format "[%s]+" (or separator ",")))
1591 (beg 1) 1591 (beg (point-min))
1592 (first t) 1592 (first t)
1593 quoted elems paren) 1593 quoted elems paren)
1594 (with-temp-buffer 1594 (with-temp-buffer
@@ -3722,13 +3722,13 @@ It should typically alter the sending method in some way or other."
3722 "content-transfer-encoding"))))))) 3722 "content-transfer-encoding")))))))
3723 (message-insert-courtesy-copy)) 3723 (message-insert-courtesy-copy))
3724 (if (or (not message-send-mail-partially-limit) 3724 (if (or (not message-send-mail-partially-limit)
3725 (< (point-max) message-send-mail-partially-limit) 3725 (< (buffer-size) message-send-mail-partially-limit)
3726 (not (message-y-or-n-p 3726 (not (message-y-or-n-p
3727 "The message size is too large, split? " 3727 "The message size is too large, split? "
3728 t 3728 t
3729 "\ 3729 "\
3730The message size, " 3730The message size, "
3731 (/ (point-max) 1000) "KB, is too large. 3731 (/ (buffer-size) 1000) "KB, is too large.
3732 3732
3733Some mail gateways (MTA's) bounce large messages. To avoid the 3733Some mail gateways (MTA's) bounce large messages. To avoid the
3734problem, answer `y', and the message will be split into several 3734problem, answer `y', and the message will be split into several
@@ -3839,8 +3839,8 @@ to find out how to use this."
3839 (case 3839 (case
3840 (let ((coding-system-for-write message-send-coding-system)) 3840 (let ((coding-system-for-write message-send-coding-system))
3841 (apply 3841 (apply
3842 'call-process-region 1 (point-max) message-qmail-inject-program 3842 'call-process-region (point-min) (point-max)
3843 nil nil nil 3843 message-qmail-inject-program nil nil nil
3844 ;; qmail-inject's default behaviour is to look for addresses on the 3844 ;; qmail-inject's default behaviour is to look for addresses on the
3845 ;; command line; if there're none, it scans the headers. 3845 ;; command line; if there're none, it scans the headers.
3846 ;; yes, it does The Right Thing w.r.t. Resent-To and it's kin. 3846 ;; yes, it does The Right Thing w.r.t. Resent-To and it's kin.
diff --git a/lisp/gnus/mml-sec.el b/lisp/gnus/mml-sec.el
index f726013dc2c..c9f5cb80190 100644
--- a/lisp/gnus/mml-sec.el
+++ b/lisp/gnus/mml-sec.el
@@ -83,6 +83,7 @@ Note that the output generated by using a `combined' mode is NOT
83understood by all PGP implementations, in particular PGP version 83understood by all PGP implementations, in particular PGP version
842 does not support it! See Info node `(message)Security' for 842 does not support it! See Info node `(message)Security' for
85details." 85details."
86 :group 'message
86 :type '(repeat (list (choice (const :tag "S/MIME" "smime") 87 :type '(repeat (list (choice (const :tag "S/MIME" "smime")
87 (const :tag "PGP" "pgp") 88 (const :tag "PGP" "pgp")
88 (const :tag "PGP/MIME" "pgpmime") 89 (const :tag "PGP/MIME" "pgpmime")
diff --git a/lisp/gnus/mml2015.el b/lisp/gnus/mml2015.el
index 995e113e02f..6c89cfbe798 100644
--- a/lisp/gnus/mml2015.el
+++ b/lisp/gnus/mml2015.el
@@ -83,6 +83,7 @@
83 ("TRUST_FULLY" . t) 83 ("TRUST_FULLY" . t)
84 ("TRUST_ULTIMATE" . t)) 84 ("TRUST_ULTIMATE" . t))
85 "Map GnuPG trust output values to a boolean saying if you trust the key." 85 "Map GnuPG trust output values to a boolean saying if you trust the key."
86 :group 'mime-security
86 :type '(repeat (cons (regexp :tag "GnuPG output regexp") 87 :type '(repeat (cons (regexp :tag "GnuPG output regexp")
87 (boolean :tag "Trust key")))) 88 (boolean :tag "Trust key"))))
88 89
diff --git a/lisp/gnus/nntp.el b/lisp/gnus/nntp.el
index 6b312de24e4..8a10600fcb8 100644
--- a/lisp/gnus/nntp.el
+++ b/lisp/gnus/nntp.el
@@ -34,6 +34,10 @@
34 34
35(eval-when-compile (require 'cl)) 35(eval-when-compile (require 'cl))
36 36
37(defgroup nntp nil
38 "NNTP access for Gnus."
39 :group 'gnus)
40
37(defvoo nntp-address nil 41(defvoo nntp-address nil
38 "Address of the physical nntp server.") 42 "Address of the physical nntp server.")
39 43
@@ -182,6 +186,7 @@ server there that you can connect to. See also
182 186
183(defcustom nntp-authinfo-file "~/.authinfo" 187(defcustom nntp-authinfo-file "~/.authinfo"
184 ".netrc-like file that holds nntp authinfo passwords." 188 ".netrc-like file that holds nntp authinfo passwords."
189 :group 'nntp
185 :type 190 :type
186 '(choice file 191 '(choice file
187 (repeat :tag "Entries" 192 (repeat :tag "Entries"
diff --git a/lisp/info.el b/lisp/info.el
index 802fcf1642e..b779bb41ca6 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -1062,8 +1062,8 @@ a case-insensitive match is tried."
1062 ;; into the menu in the like-named node in the main buffer. 1062 ;; into the menu in the like-named node in the main buffer.
1063 (apply 'insert-buffer-substring (cdr node)))) 1063 (apply 'insert-buffer-substring (cdr node))))
1064 (Info-dir-remove-duplicates) 1064 (Info-dir-remove-duplicates)
1065 ;; Kill all the buffers we just made. 1065 ;; Kill all the buffers we just made, including the special one excised.
1066 (mapc 'kill-buffer buffers) 1066 (mapc 'kill-buffer (cons buffer buffers))
1067 (goto-char (point-min)) 1067 (goto-char (point-min))
1068 (if problems 1068 (if problems
1069 (message "Composing main Info directory...problems encountered, see `*Messages*'") 1069 (message "Composing main Info directory...problems encountered, see `*Messages*'")
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 572553d816a..2398d56ab5f 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -2402,7 +2402,17 @@ Attempt to do the search exactly the way the pending isearch would."
2402 (let ((mb (match-beginning 0)) 2402 (let ((mb (match-beginning 0))
2403 (me (match-end 0))) 2403 (me (match-end 0)))
2404 (if (= mb me) ;zero-length match 2404 (if (= mb me) ;zero-length match
2405 (forward-char 1) 2405 (if isearch-forward
2406 (if (= mb (if isearch-lazy-highlight-wrapped
2407 isearch-lazy-highlight-start
2408 (window-end)))
2409 (setq found nil)
2410 (forward-char 1))
2411 (if (= mb (if isearch-lazy-highlight-wrapped
2412 isearch-lazy-highlight-end
2413 (window-start)))
2414 (setq found nil)
2415 (forward-char -1)))
2406 2416
2407 ;; non-zero-length match 2417 ;; non-zero-length match
2408 (let ((ov (make-overlay mb me))) 2418 (let ((ov (make-overlay mb me)))
@@ -2412,19 +2422,20 @@ Attempt to do the search exactly the way the pending isearch would."
2412 (push ov isearch-lazy-highlight-overlays))) 2422 (push ov isearch-lazy-highlight-overlays)))
2413 (if isearch-forward 2423 (if isearch-forward
2414 (setq isearch-lazy-highlight-end (point)) 2424 (setq isearch-lazy-highlight-end (point))
2415 (setq isearch-lazy-highlight-start (point)))) 2425 (setq isearch-lazy-highlight-start (point)))))
2416 2426
2417 ;; not found 2427 ;; not found or zero-length match at the search bound
2418 (if isearch-lazy-highlight-wrapped 2428 (if (not found)
2419 (setq looping nil 2429 (if isearch-lazy-highlight-wrapped
2420 nomore t) 2430 (setq looping nil
2421 (setq isearch-lazy-highlight-wrapped t) 2431 nomore t)
2422 (if isearch-forward 2432 (setq isearch-lazy-highlight-wrapped t)
2423 (progn 2433 (if isearch-forward
2424 (setq isearch-lazy-highlight-end (window-start)) 2434 (progn
2425 (goto-char (window-start))) 2435 (setq isearch-lazy-highlight-end (window-start))
2426 (setq isearch-lazy-highlight-start (window-end)) 2436 (goto-char (window-start)))
2427 (goto-char (window-end))))))) 2437 (setq isearch-lazy-highlight-start (window-end))
2438 (goto-char (window-end)))))))
2428 (unless nomore 2439 (unless nomore
2429 (setq isearch-lazy-highlight-timer 2440 (setq isearch-lazy-highlight-timer
2430 (run-at-time isearch-lazy-highlight-interval nil 2441 (run-at-time isearch-lazy-highlight-interval nil
diff --git a/lisp/kmacro.el b/lisp/kmacro.el
index a129ab53cef..9e3271d01cc 100644
--- a/lisp/kmacro.el
+++ b/lisp/kmacro.el
@@ -204,7 +204,7 @@ macro to be executed before appending to it."
204 204
205 ;; naming and binding 205 ;; naming and binding
206 (define-key map "b" 'kmacro-bind-to-key) 206 (define-key map "b" 'kmacro-bind-to-key)
207 (define-key map "n" 'name-last-kbd-macro) 207 (define-key map "n" 'kmacro-name-last-macro)
208 map) 208 map)
209 "Keymap for keyboard macro commands.") 209 "Keymap for keyboard macro commands.")
210(defalias 'kmacro-keymap kmacro-keymap) 210(defalias 'kmacro-keymap kmacro-keymap)
@@ -539,8 +539,8 @@ Displays the selected macro in the echo area."
539The commands are recorded even as they are executed. 539The commands are recorded even as they are executed.
540Use \\[kmacro-end-macro] to finish recording and make the macro available. 540Use \\[kmacro-end-macro] to finish recording and make the macro available.
541Use \\[kmacro-end-and-call-macro] to execute the macro. 541Use \\[kmacro-end-and-call-macro] to execute the macro.
542Use \\[name-last-kbd-macro] to give it a permanent name. 542
543Non-nil arg (prefix arg) means append to last macro defined; 543Non-nil arg (prefix arg) means append to last macro defined.
544 544
545With \\[universal-argument] prefix, append to last keyboard macro 545With \\[universal-argument] prefix, append to last keyboard macro
546defined. Depending on `kmacro-execute-before-append', this may begin 546defined. Depending on `kmacro-execute-before-append', this may begin
@@ -551,7 +551,10 @@ defining the macro.
551 551
552Use \\[kmacro-insert-counter] to insert (and increment) the macro counter. 552Use \\[kmacro-insert-counter] to insert (and increment) the macro counter.
553The counter value can be set or modified via \\[kmacro-set-counter] and \\[kmacro-add-counter]. 553The counter value can be set or modified via \\[kmacro-set-counter] and \\[kmacro-add-counter].
554The format of the counter can be modified via \\[kmacro-set-format]." 554The format of the counter can be modified via \\[kmacro-set-format].
555
556Use \\[kmacro-name-last-macro] to give it a permanent name.
557Use \\[kmacro-bind-to-key] to bind it to a key sequence."
555 (interactive "P") 558 (interactive "P")
556 (if (or defining-kbd-macro executing-kbd-macro) 559 (if (or defining-kbd-macro executing-kbd-macro)
557 (message "Already defining keyboard macro.") 560 (message "Already defining keyboard macro.")
@@ -585,7 +588,7 @@ The format of the counter can be modified via \\[kmacro-set-format]."
585 "Finish defining a keyboard macro. 588 "Finish defining a keyboard macro.
586The definition was started by \\[kmacro-start-macro]. 589The definition was started by \\[kmacro-start-macro].
587The macro is now available for use via \\[kmacro-call-macro], 590The macro is now available for use via \\[kmacro-call-macro],
588or it can be given a name with \\[name-last-kbd-macro] and then invoked 591or it can be given a name with \\[kmacro-name-last-macro] and then invoked
589under that name. 592under that name.
590 593
591With numeric arg, repeat macro now that many times, 594With numeric arg, repeat macro now that many times,
@@ -609,7 +612,7 @@ command. See `kmacro-call-repeat-key' and `kmacro-call-repeat-with-arg'
609for details on how to adjust or disable this behaviour. 612for details on how to adjust or disable this behaviour.
610 613
611To make a macro permanent so you can call it even after defining 614To make a macro permanent so you can call it even after defining
612others, use \\[name-last-kbd-macro]." 615others, use \\[kmacro-name-last-macro]."
613 (interactive "p") 616 (interactive "p")
614 (let ((repeat-key (and (null no-repeat) 617 (let ((repeat-key (and (null no-repeat)
615 (> (length (this-single-command-keys)) 1) 618 (> (length (this-single-command-keys)) 1)
@@ -707,7 +710,7 @@ With numeric prefix ARG, repeat macro that many times.
707Zero argument means repeat until there is an error. 710Zero argument means repeat until there is an error.
708 711
709To give a macro a permanent name, so you can call it 712To give a macro a permanent name, so you can call it
710even after defining other macros, use \\[name-last-kbd-macro]." 713even after defining other macros, use \\[kmacro-name-last-macro]."
711 (interactive "P") 714 (interactive "P")
712 (if defining-kbd-macro 715 (if defining-kbd-macro
713 (kmacro-end-macro nil)) 716 (kmacro-end-macro nil))
@@ -771,10 +774,38 @@ may be shaded by a local key binding."
771 (yes-or-no-p (format "%s runs command %S. Bind anyway? " 774 (yes-or-no-p (format "%s runs command %S. Bind anyway? "
772 (format-kbd-macro key-seq) 775 (format-kbd-macro key-seq)
773 cmd)))) 776 cmd))))
774 (define-key global-map key-seq last-kbd-macro) 777 (define-key global-map key-seq
778 `(lambda (&optional arg)
779 "Keyboard macro."
780 (interactive "p")
781 (kmacro-exec-ring-item ',(kmacro-ring-head) arg)))
775 (message "Keyboard macro bound to %s" (format-kbd-macro key-seq)))))) 782 (message "Keyboard macro bound to %s" (format-kbd-macro key-seq))))))
776 783
777 784
785(defun kmacro-name-last-macro (symbol)
786 "Assign a name to the last keyboard macro defined.
787Argument SYMBOL is the name to define.
788The symbol's function definition becomes the keyboard macro string.
789Such a \"function\" cannot be called from Lisp, but it is a valid editor command."
790 (interactive "SName for last kbd macro: ")
791 (or last-kbd-macro
792 (error "No keyboard macro defined"))
793 (and (fboundp symbol)
794 (not (get symbol 'kmacro))
795 (not (stringp (symbol-function symbol)))
796 (not (vectorp (symbol-function symbol)))
797 (error "Function %s is already defined and not a keyboard macro"
798 symbol))
799 (if (string-equal symbol "")
800 (error "No command name given"))
801 (fset symbol
802 `(lambda (&optional arg)
803 "Keyboard macro."
804 (interactive "p")
805 (kmacro-exec-ring-item ',(kmacro-ring-head) arg)))
806 (put symbol 'kmacro t))
807
808
778(defun kmacro-view-macro (&optional arg) 809(defun kmacro-view-macro (&optional arg)
779 "Display the last keyboard macro. 810 "Display the last keyboard macro.
780If repeated, it shows previous elements in the macro ring." 811If repeated, it shows previous elements in the macro ring."
diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog
index dd1062da816..e48186d8b3b 100644
--- a/lisp/mh-e/ChangeLog
+++ b/lisp/mh-e/ChangeLog
@@ -1,16 +1,20 @@
12004-09-07 Stefan <monnier@iro.umontreal.ca>
2
3 * mh-inc.el (mh-inc-spool-list): Correctly declare the external var.
4
12004-08-21 Bill Wohler <wohler@newt.com> 52004-08-21 Bill Wohler <wohler@newt.com>
2 6
3 * Released MH-E version 7.82. 7 * Released MH-E version 7.82.
4 8
5 * MH-E-NEWS, README: Updated for release 7.82. 9 * MH-E-NEWS, README: Updated for release 7.82.
6 10
7 * mh-e.el (Version, mh-version): Updated for release 7.82. 11 * mh-e.el (Version, mh-version): Update for release 7.82.
8 12
92004-08-24 Bill Wohler <wohler@newt.com> 132004-08-24 Bill Wohler <wohler@newt.com>
10 14
11 * mh-init.el (mh-variant-set): Changed MH to mh as that's what is 15 * mh-init.el (mh-variant-set): Change MH to mh as that's what is
12 emitted by `mh-variant-mh-info' (closes SF #1014781). 16 emitted by `mh-variant-mh-info' (closes SF #1014781).
13 (mh-variant-p): Added mu-mh to docstring. 17 (mh-variant-p): Add mu-mh to docstring.
14 18
152004-08-23 Satyaki Das <satyaki@theforce.stanford.edu> 192004-08-23 Satyaki Das <satyaki@theforce.stanford.edu>
16 20
@@ -31,21 +35,21 @@
31 35
322004-08-21 Bill Wohler <wohler@newt.com> 362004-08-21 Bill Wohler <wohler@newt.com>
33 37
34 * mh-e.el (Version, mh-version): Added +cvs to release number. 38 * mh-e.el (Version, mh-version): Add +cvs to release number.
35 39
362004-08-21 Bill Wohler <wohler@newt.com> 402004-08-21 Bill Wohler <wohler@newt.com>
37 41
38 * Released MH-E version 7.81. 42 * Released MH-E version 7.81.
39 43
40 * MH-E-NEWS, README: Updated for release 7.81. 44 * MH-E-NEWS, README: Updated for release 7.81.
41 45
42 * mh-e.el (Version, mh-version): Updated for release 7.81. 46 * mh-e.el (Version, mh-version): Update for release 7.81.
43 47
442004-08-21 Bill Wohler <wohler@newt.com> 482004-08-21 Bill Wohler <wohler@newt.com>
45 49
46 * release-utils (variable_changes): Check for checked-out 50 * release-utils (variable_changes): Check for checked-out
47 directory before proceeding. Remove temporary files. Renamed 51 directory before proceeding. Remove temporary files.
48 --variable-update flag to --variable-changes. 52 Rename --variable-update flag to --variable-changes.
49 53
502004-08-16 Mark D. Baushke <mdb@gnu.org> 542004-08-16 Mark D. Baushke <mdb@gnu.org>
51 55
diff --git a/lisp/mh-e/mh-inc.el b/lisp/mh-e/mh-inc.el
index 42ca018506f..682b8aa7c53 100644
--- a/lisp/mh-e/mh-inc.el
+++ b/lisp/mh-e/mh-inc.el
@@ -74,7 +74,7 @@
74 "] inc " folder " folder\n")))) 74 "] inc " folder " folder\n"))))
75 75
76;; Avoid compiler warning 76;; Avoid compiler warning
77(eval-when-compile (defvar mh-inc-spool-list)) 77(defvar mh-inc-spool-list)
78 78
79(defun mh-inc-spool-make () 79(defun mh-inc-spool-make ()
80 "Make all commands and defines keys for contents of `mh-inc-spool-list'." 80 "Make all commands and defines keys for contents of `mh-inc-spool-list'."
@@ -98,10 +98,10 @@ This is called after 'customize is used to alter `mh-inc-spool-list'."
98 98
99(provide 'mh-inc) 99(provide 'mh-inc)
100 100
101;;; Local Variables: 101;; Local Variables:
102;;; indent-tabs-mode: nil 102;; indent-tabs-mode: nil
103;;; sentence-end-double-space: nil 103;; sentence-end-double-space: nil
104;;; End: 104;; End:
105 105
106;;; arch-tag: 3713cf2a-6082-4cb4-8ce2-99d9acaba835 106;; arch-tag: 3713cf2a-6082-4cb4-8ce2-99d9acaba835
107;;; mh-inc.el ends here 107;;; mh-inc.el ends here
diff --git a/lisp/newcomment.el b/lisp/newcomment.el
index f4d4dc860d5..3a63636b757 100644
--- a/lisp/newcomment.el
+++ b/lisp/newcomment.el
@@ -1,6 +1,6 @@
1;;; newcomment.el --- (un)comment regions of buffers 1;;; newcomment.el --- (un)comment regions of buffers
2 2
3;; Copyright (C) 1999,2000,2003,2004 Free Software Foundation Inc. 3;; Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation Inc.
4 4
5;; Author: code extracted from Emacs-20's simple.el 5;; Author: code extracted from Emacs-20's simple.el
6;; Maintainer: Stefan Monnier <monnier@cs.yale.edu> 6;; Maintainer: Stefan Monnier <monnier@cs.yale.edu>
@@ -137,7 +137,7 @@ The function has no args.
137Applicable at least in modes for languages like fixed-format Fortran where 137Applicable at least in modes for languages like fixed-format Fortran where
138comments always start in column zero.") 138comments always start in column zero.")
139 139
140(defvar comment-region-function nil 140(defvar comment-region-function 'comment-region-default
141 "Function to comment a region. 141 "Function to comment a region.
142Its args are the same as those of `comment-region', but BEG and END are 142Its args are the same as those of `comment-region', but BEG and END are
143guaranteed to be correctly ordered. It is called within `save-excursion'. 143guaranteed to be correctly ordered. It is called within `save-excursion'.
@@ -145,7 +145,7 @@ guaranteed to be correctly ordered. It is called within `save-excursion'.
145Applicable at least in modes for languages like fixed-format Fortran where 145Applicable at least in modes for languages like fixed-format Fortran where
146comments always start in column zero.") 146comments always start in column zero.")
147 147
148(defvar uncomment-region-function nil 148(defvar uncomment-region-function 'uncomment-region-default
149 "Function to uncomment a region. 149 "Function to uncomment a region.
150Its args are the same as those of `uncomment-region', but BEG and END are 150Its args are the same as those of `uncomment-region', but BEG and END are
151guaranteed to be correctly ordered. It is called within `save-excursion'. 151guaranteed to be correctly ordered. It is called within `save-excursion'.
@@ -368,12 +368,12 @@ and raises an error or returns nil if NOERROR is non-nil."
368 (if comment-use-global-state (syntax-ppss pt)) 368 (if comment-use-global-state (syntax-ppss pt))
369 t))) 369 t)))
370 (when (and (nth 8 s) (nth 3 s) (not comment-use-global-state)) 370 (when (and (nth 8 s) (nth 3 s) (not comment-use-global-state))
371 ;; The search ended inside a string. Try to see if it 371 ;; The search ended at eol inside a string. Try to see if it
372 ;; works better when we assume that pt is inside a string. 372 ;; works better when we assume that pt is inside a string.
373 (setq s (parse-partial-sexp 373 (setq s (parse-partial-sexp
374 pt (or limit (point-max)) nil nil 374 pt (or limit (point-max)) nil nil
375 (list nil nil nil (nth 3 s) nil nil nil nil) 375 (list nil nil nil (nth 3 s) nil nil nil nil)
376 t))) 376 t)))
377 (if (not (and (nth 8 s) (not (nth 3 s)))) 377 (if (not (and (nth 8 s) (not (nth 3 s))))
378 (unless noerror (error "No comment")) 378 (unless noerror (error "No comment"))
379 ;; We found the comment. 379 ;; We found the comment.
@@ -710,105 +710,108 @@ comment markers."
710 (interactive "*r\nP") 710 (interactive "*r\nP")
711 (comment-normalize-vars) 711 (comment-normalize-vars)
712 (when (> beg end) (setq beg (prog1 end (setq end beg)))) 712 (when (> beg end) (setq beg (prog1 end (setq end beg))))
713 713 ;; Bind `comment-use-global-state' to nil. While uncommenting a region
714 ;; Bind `comment-use-global-state' to nil. While uncommenting a 714 ;; (which works a line at a time), a comment can appear to be
715 ;; (which works a line at a time) region a comment can appear to be
716 ;; included in a mult-line string, but it is actually not. 715 ;; included in a mult-line string, but it is actually not.
717 (let ((comment-use-global-state nil)) 716 (let ((comment-use-global-state nil))
718 (save-excursion 717 (save-excursion
719 (if uncomment-region-function 718 (funcall uncomment-region-function beg end arg))))
720 (funcall uncomment-region-function beg end arg) 719
721 (goto-char beg) 720(defun uncomment-region-default (beg end &optional arg)
722 (setq end (copy-marker end)) 721 "Uncomment each line in the BEG .. END region.
723 (let* ((numarg (prefix-numeric-value arg)) 722The numeric prefix ARG can specify a number of chars to remove from the
724 (ccs comment-continue) 723comment markers."
725 (srei (comment-padright ccs 're)) 724 (goto-char beg)
726 (csre (comment-padright comment-start 're)) 725 (setq end (copy-marker end))
727 (sre (and srei (concat "^\\s-*?\\(" srei "\\)"))) 726 (let* ((numarg (prefix-numeric-value arg))
728 spt) 727 (ccs comment-continue)
729 (while (and (< (point) end) 728 (srei (comment-padright ccs 're))
730 (setq spt (comment-search-forward end t))) 729 (csre (comment-padright comment-start 're))
731 (let ((ipt (point)) 730 (sre (and srei (concat "^\\s-*?\\(" srei "\\)")))
732 ;; Find the end of the comment. 731 spt)
733 (ept (progn 732 (while (and (< (point) end)
734 (goto-char spt) 733 (setq spt (comment-search-forward end t)))
735 (unless (or (comment-forward) 734 (let ((ipt (point))
736 ;; Allow non-terminated comments. 735 ;; Find the end of the comment.
737 (eobp)) 736 (ept (progn
738 (error "Can't find the comment end")) 737 (goto-char spt)
739 (point))) 738 (unless (or (comment-forward)
740 (box nil) 739 ;; Allow non-terminated comments.
741 (box-equal nil)) ;Whether we might be using `=' for boxes. 740 (eobp))
742 (save-restriction 741 (error "Can't find the comment end"))
743 (narrow-to-region spt ept) 742 (point)))
743 (box nil)
744 (box-equal nil)) ;Whether we might be using `=' for boxes.
745 (save-restriction
746 (narrow-to-region spt ept)
744 747
745 ;; Remove the comment-start. 748 ;; Remove the comment-start.
746 (goto-char ipt) 749 (goto-char ipt)
747 (skip-syntax-backward " ") 750 (skip-syntax-backward " ")
748 ;; A box-comment starts with a looong comment-start marker. 751 ;; A box-comment starts with a looong comment-start marker.
749 (when (and (or (and (= (- (point) (point-min)) 1) 752 (when (and (or (and (= (- (point) (point-min)) 1)
750 (setq box-equal t) 753 (setq box-equal t)
751 (looking-at "=\\{7\\}") 754 (looking-at "=\\{7\\}")
752 (not (eq (char-before (point-max)) ?\n)) 755 (not (eq (char-before (point-max)) ?\n))
753 (skip-chars-forward "=")) 756 (skip-chars-forward "="))
754 (> (- (point) (point-min) (length comment-start)) 7)) 757 (> (- (point) (point-min) (length comment-start)) 7))
755 (> (count-lines (point-min) (point-max)) 2)) 758 (> (count-lines (point-min) (point-max)) 2))
756 (setq box t)) 759 (setq box t))
757 ;; Skip the padding. Padding can come from comment-padding and/or 760 ;; Skip the padding. Padding can come from comment-padding and/or
758 ;; from comment-start, so we first check comment-start. 761 ;; from comment-start, so we first check comment-start.
759 (if (or (save-excursion (goto-char (point-min)) (looking-at csre)) 762 (if (or (save-excursion (goto-char (point-min)) (looking-at csre))
760 (looking-at (regexp-quote comment-padding))) 763 (looking-at (regexp-quote comment-padding)))
761 (goto-char (match-end 0))) 764 (goto-char (match-end 0)))
762 (when (and sre (looking-at (concat "\\s-*\n\\s-*" srei))) 765 (when (and sre (looking-at (concat "\\s-*\n\\s-*" srei)))
763 (goto-char (match-end 0))) 766 (goto-char (match-end 0)))
764 (if (null arg) (delete-region (point-min) (point)) 767 (if (null arg) (delete-region (point-min) (point))
765 (skip-syntax-backward " ") 768 (skip-syntax-backward " ")
766 (delete-char (- numarg)) 769 (delete-char (- numarg))
767 (unless (or (bobp) 770 (unless (or (bobp)
768 (save-excursion (goto-char (point-min)) 771 (save-excursion (goto-char (point-min))
769 (looking-at comment-start-skip))) 772 (looking-at comment-start-skip)))
770 ;; If there's something left but it doesn't look like 773 ;; If there's something left but it doesn't look like
771 ;; a comment-start any more, just remove it. 774 ;; a comment-start any more, just remove it.
772 (delete-region (point-min) (point)))) 775 (delete-region (point-min) (point))))
773 776
774 ;; Remove the end-comment (and leading padding and such). 777 ;; Remove the end-comment (and leading padding and such).
775 (goto-char (point-max)) (comment-enter-backward) 778 (goto-char (point-max)) (comment-enter-backward)
776 ;; Check for special `=' used sometimes in comment-box. 779 ;; Check for special `=' used sometimes in comment-box.
777 (when (and box-equal (not (eq (char-before (point-max)) ?\n))) 780 (when (and box-equal (not (eq (char-before (point-max)) ?\n)))
778 (let ((pos (point))) 781 (let ((pos (point)))
779 ;; skip `=' but only if there are at least 7. 782 ;; skip `=' but only if there are at least 7.
780 (when (> (skip-chars-backward "=") -7) (goto-char pos)))) 783 (when (> (skip-chars-backward "=") -7) (goto-char pos))))
781 (unless (looking-at "\\(\n\\|\\s-\\)*\\'") 784 (unless (looking-at "\\(\n\\|\\s-\\)*\\'")
782 (when (and (bolp) (not (bobp))) (backward-char)) 785 (when (and (bolp) (not (bobp))) (backward-char))
783 (if (null arg) (delete-region (point) (point-max)) 786 (if (null arg) (delete-region (point) (point-max))
784 (skip-syntax-forward " ") 787 (skip-syntax-forward " ")
785 (delete-char numarg) 788 (delete-char numarg)
786 (unless (or (eobp) (looking-at comment-end-skip)) 789 (unless (or (eobp) (looking-at comment-end-skip))
787 ;; If there's something left but it doesn't look like 790 ;; If there's something left but it doesn't look like
788 ;; a comment-end any more, just remove it. 791 ;; a comment-end any more, just remove it.
789 (delete-region (point) (point-max))))) 792 (delete-region (point) (point-max)))))
790 793
791 ;; Unquote any nested end-comment. 794 ;; Unquote any nested end-comment.
792 (comment-quote-nested comment-start comment-end t) 795 (comment-quote-nested comment-start comment-end t)
793 796
794 ;; Eliminate continuation markers as well. 797 ;; Eliminate continuation markers as well.
795 (when sre 798 (when sre
796 (let* ((cce (comment-string-reverse (or comment-continue 799 (let* ((cce (comment-string-reverse (or comment-continue
797 comment-start))) 800 comment-start)))
798 (erei (and box (comment-padleft cce 're))) 801 (erei (and box (comment-padleft cce 're)))
799 (ere (and erei (concat "\\(" erei "\\)\\s-*$")))) 802 (ere (and erei (concat "\\(" erei "\\)\\s-*$"))))
800 (goto-char (point-min)) 803 (goto-char (point-min))
801 (while (progn 804 (while (progn
802 (if (and ere (re-search-forward 805 (if (and ere (re-search-forward
803 ere (line-end-position) t)) 806 ere (line-end-position) t))
804 (replace-match "" t t nil (if (match-end 2) 2 1)) 807 (replace-match "" t t nil (if (match-end 2) 2 1))
805 (setq ere nil)) 808 (setq ere nil))
806 (forward-line 1) 809 (forward-line 1)
807 (re-search-forward sre (line-end-position) t)) 810 (re-search-forward sre (line-end-position) t))
808 (replace-match "" t t nil (if (match-end 2) 2 1))))) 811 (replace-match "" t t nil (if (match-end 2) 2 1)))))
809 ;; Go to the end for the next comment. 812 ;; Go to the end for the next comment.
810 (goto-char (point-max))))))) 813 (goto-char (point-max))))))
811 (set-marker end nil)))) 814 (set-marker end nil))
812 815
813(defun comment-make-extra-lines (cs ce ccs cce min-indent max-indent &optional block) 816(defun comment-make-extra-lines (cs ce ccs cce min-indent max-indent &optional block)
814 "Make the leading and trailing extra lines. 817 "Make the leading and trailing extra lines.
@@ -971,59 +974,61 @@ The strings used as comment starts are built from
971 (interactive "*r\nP") 974 (interactive "*r\nP")
972 (comment-normalize-vars) 975 (comment-normalize-vars)
973 (if (> beg end) (let (mid) (setq mid beg beg end end mid))) 976 (if (> beg end) (let (mid) (setq mid beg beg end end mid)))
977 (save-excursion
978 ;; FIXME: maybe we should call uncomment depending on ARG.
979 (funcall comment-region-function beg end arg)))
980
981(defun comment-region-default (beg end &optional arg)
974 (let* ((numarg (prefix-numeric-value arg)) 982 (let* ((numarg (prefix-numeric-value arg))
975 (add comment-add) 983 (add comment-add)
976 (style (cdr (assoc comment-style comment-styles))) 984 (style (cdr (assoc comment-style comment-styles)))
977 (lines (nth 2 style)) 985 (lines (nth 2 style))
978 (block (nth 1 style)) 986 (block (nth 1 style))
979 (multi (nth 0 style))) 987 (multi (nth 0 style)))
980 (save-excursion 988 ;; we use `chars' instead of `syntax' because `\n' might be
981 (if comment-region-function 989 ;; of end-comment syntax rather than of whitespace syntax.
982 (funcall comment-region-function beg end arg) 990 ;; sanitize BEG and END
983 ;; we use `chars' instead of `syntax' because `\n' might be 991 (goto-char beg) (skip-chars-forward " \t\n\r") (beginning-of-line)
984 ;; of end-comment syntax rather than of whitespace syntax. 992 (setq beg (max beg (point)))
985 ;; sanitize BEG and END 993 (goto-char end) (skip-chars-backward " \t\n\r") (end-of-line)
986 (goto-char beg) (skip-chars-forward " \t\n\r") (beginning-of-line) 994 (setq end (min end (point)))
987 (setq beg (max beg (point))) 995 (if (>= beg end) (error "Nothing to comment"))
988 (goto-char end) (skip-chars-backward " \t\n\r") (end-of-line) 996
989 (setq end (min end (point))) 997 ;; sanitize LINES
990 (if (>= beg end) (error "Nothing to comment")) 998 (setq lines
991 999 (and
992 ;; sanitize LINES 1000 lines ;; multi
993 (setq lines 1001 (progn (goto-char beg) (beginning-of-line)
994 (and 1002 (skip-syntax-forward " ")
995 lines ;; multi 1003 (>= (point) beg))
996 (progn (goto-char beg) (beginning-of-line) 1004 (progn (goto-char end) (end-of-line) (skip-syntax-backward " ")
997 (skip-syntax-forward " ") 1005 (<= (point) end))
998 (>= (point) beg)) 1006 (or block (not (string= "" comment-end)))
999 (progn (goto-char end) (end-of-line) (skip-syntax-backward " ") 1007 (or block (progn (goto-char beg) (search-forward "\n" end t)))))
1000 (<= (point) end)) 1008
1001 (or block (not (string= "" comment-end))) 1009 ;; don't add end-markers just because the user asked for `block'
1002 (or block (progn (goto-char beg) (search-forward "\n" end t)))))) 1010 (unless (or lines (string= "" comment-end)) (setq block nil))
1003 1011
1004 ;; don't add end-markers just because the user asked for `block' 1012 (cond
1005 (unless (or lines (string= "" comment-end)) (setq block nil)) 1013 ((consp arg) (uncomment-region beg end))
1006 1014 ((< numarg 0) (uncomment-region beg end (- numarg)))
1007 (cond 1015 (t
1008 ((consp arg) (uncomment-region beg end)) 1016 (setq numarg (if (and (null arg) (= (length comment-start) 1))
1009 ((< numarg 0) (uncomment-region beg end (- numarg))) 1017 add (1- numarg)))
1010 (t 1018 (comment-region-internal
1011 (setq numarg (if (and (null arg) (= (length comment-start) 1)) 1019 beg end
1012 add (1- numarg))) 1020 (let ((s (comment-padright comment-start numarg)))
1013 (comment-region-internal 1021 (if (string-match comment-start-skip s) s
1014 beg end 1022 (comment-padright comment-start)))
1015 (let ((s (comment-padright comment-start numarg))) 1023 (let ((s (comment-padleft comment-end numarg)))
1016 (if (string-match comment-start-skip s) s 1024 (and s (if (string-match comment-end-skip s) s
1017 (comment-padright comment-start))) 1025 (comment-padright comment-end))))
1018 (let ((s (comment-padleft comment-end numarg))) 1026 (if multi (comment-padright comment-continue numarg))
1019 (and s (if (string-match comment-end-skip s) s 1027 (if multi
1020 (comment-padright comment-end)))) 1028 (comment-padleft (comment-string-reverse comment-continue) numarg))
1021 (if multi (comment-padright comment-continue numarg)) 1029 block
1022 (if multi 1030 lines
1023 (comment-padleft (comment-string-reverse comment-continue) numarg)) 1031 (nth 3 style))))))
1024 block
1025 lines
1026 (nth 3 style)))))))
1027 1032
1028(defun comment-box (beg end &optional arg) 1033(defun comment-box (beg end &optional arg)
1029 "Comment out the BEG .. END region, putting it inside a box. 1034 "Comment out the BEG .. END region, putting it inside a box.
@@ -1198,5 +1203,5 @@ unless optional argument SOFT is non-nil."
1198 1203
1199(provide 'newcomment) 1204(provide 'newcomment)
1200 1205
1201;;; arch-tag: 01e3320a-00c8-44ea-a696-8f8e7354c858 1206;; arch-tag: 01e3320a-00c8-44ea-a696-8f8e7354c858
1202;;; newcomment.el ends here 1207;;; newcomment.el ends here
diff --git a/lisp/pcvs-info.el b/lisp/pcvs-info.el
index a26b99445c8..77e165b2462 100644
--- a/lisp/pcvs-info.el
+++ b/lisp/pcvs-info.el
@@ -1,7 +1,7 @@
1;;; pcvs-info.el --- internal representation of a fileinfo entry 1;;; pcvs-info.el --- internal representation of a fileinfo entry
2 2
3;; Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2004 3;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4;; Free Software Foundation, Inc. 4;; 2000, 2004 Free Software Foundation, Inc.
5 5
6;; Author: Stefan Monnier <monnier@cs.yale.edu> 6;; Author: Stefan Monnier <monnier@cs.yale.edu>
7;; Keywords: pcl-cvs 7;; Keywords: pcl-cvs
@@ -274,7 +274,7 @@ to confuse some users sometimes."
274;;;; 274;;;;
275 275
276(defconst cvs-states 276(defconst cvs-states
277 `((NEED-UPDATE update diff) 277 `((NEED-UPDATE update diff ignore)
278 (UP-TO-DATE update nil remove diff safe-rm revert) 278 (UP-TO-DATE update nil remove diff safe-rm revert)
279 (MODIFIED update commit undo remove diff merge diff-base) 279 (MODIFIED update commit undo remove diff merge diff-base)
280 (ADDED update commit remove) 280 (ADDED update commit remove)
@@ -471,5 +471,5 @@ DIR can also be a file."
471 471
472(provide 'pcvs-info) 472(provide 'pcvs-info)
473 473
474;;; arch-tag: d85dde07-bdc2-400a-882f-92f398c7b0ba 474;; arch-tag: d85dde07-bdc2-400a-882f-92f398c7b0ba
475;;; pcvs-info.el ends here 475;;; pcvs-info.el ends here
diff --git a/lisp/pcvs-util.el b/lisp/pcvs-util.el
index 3380077c74a..5d9d0d215af 100644
--- a/lisp/pcvs-util.el
+++ b/lisp/pcvs-util.el
@@ -1,7 +1,7 @@
1;;; pcvs-util.el --- utility functions for PCL-CVS -*- byte-compile-dynamic: t -*- 1;;; pcvs-util.el --- utility functions for PCL-CVS -*- byte-compile-dynamic: t -*-
2 2
3;; Copyright (C) 1991,92,93,94,95,96,97,98,99, 2000,01,04 3;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4;; Free Software Foundation, Inc. 4;; 2000, 2001, 2004 Free Software Foundation, Inc.
5 5
6;; Author: Stefan Monnier <monnier@cs.yale.edu> 6;; Author: Stefan Monnier <monnier@cs.yale.edu>
7;; Keywords: pcl-cvs 7;; Keywords: pcl-cvs
@@ -180,9 +180,7 @@ arguments. If ARGS is not a list, no argument will be passed."
180 180
181(defun cvs-string-prefix-p (str1 str2) 181(defun cvs-string-prefix-p (str1 str2)
182 "Tell whether STR1 is a prefix of STR2." 182 "Tell whether STR1 is a prefix of STR2."
183 (let ((length1 (length str1))) 183 (eq t (compare-strings str2 nil (length str1) str1 nil nil)))
184 (and (>= (length str2) length1)
185 (string= str1 (substring str2 0 length1)))))
186 184
187;; (string->strings (strings->string X)) == X 185;; (string->strings (strings->string X)) == X
188(defun cvs-strings->string (strings &optional separator) 186(defun cvs-strings->string (strings &optional separator)
@@ -392,5 +390,5 @@ and reset it unless READ-ONLY is non-nil."
392 390
393(provide 'pcvs-util) 391(provide 'pcvs-util)
394 392
395;;; arch-tag: 3b2588bb-2ae3-4f1f-bf5b-dea91b1f8a59 393;; arch-tag: 3b2588bb-2ae3-4f1f-bf5b-dea91b1f8a59
396;;; pcvs-util.el ends here 394;;; pcvs-util.el ends here
diff --git a/lisp/play/blackbox.el b/lisp/play/blackbox.el
index f3933e7ccd2..4d6cbfbeaf8 100644
--- a/lisp/play/blackbox.el
+++ b/lisp/play/blackbox.el
@@ -335,34 +335,35 @@ a reflection."
335 (bb-update-board (propertize "O" 'help-echo "Placed ball")))))) 335 (bb-update-board (propertize "O" 'help-echo "Placed ball"))))))
336 336
337(defun bb-trace-ray (x y) 337(defun bb-trace-ray (x y)
338 (let ((result (bb-trace-ray-2 338 (when (= (following-char) 32)
339 t 339 (let ((result (bb-trace-ray-2
340 x 340 t
341 (cond 341 x
342 ((= x -1) 1) 342 (cond
343 ((= x 8) -1) 343 ((= x -1) 1)
344 (t 0)) 344 ((= x 8) -1)
345 y 345 (t 0))
346 (cond 346 y
347 ((= y -1) 1) 347 (cond
348 ((= y 8) -1) 348 ((= y -1) 1)
349 (t 0))))) 349 ((= y 8) -1)
350 (cond 350 (t 0)))))
351 ((eq result 'hit) 351 (cond
352 (bb-update-board (propertize "H" 'help-echo "Hit")) 352 ((eq result 'hit)
353 (setq bb-score (1+ bb-score))) 353 (bb-update-board (propertize "H" 'help-echo "Hit"))
354 ((equal result (cons x y)) 354 (setq bb-score (1+ bb-score)))
355 (bb-update-board (propertize "R" 'help-echo "Reflection")) 355 ((equal result (cons x y))
356 (setq bb-score (1+ bb-score))) 356 (bb-update-board (propertize "R" 'help-echo "Reflection"))
357 (t 357 (setq bb-score (1+ bb-score)))
358 (setq bb-detour-count (1+ bb-detour-count)) 358 (t
359 (bb-update-board (propertize (format "%d" bb-detour-count) 359 (setq bb-detour-count (1+ bb-detour-count))
360 'help-echo "Detour")) 360 (bb-update-board (propertize (format "%d" bb-detour-count)
361 (save-excursion 361 'help-echo "Detour"))
362 (bb-goto result) 362 (save-excursion
363 (bb-update-board (propertize (format "%d" bb-detour-count) 363 (bb-goto result)
364 'help-echo "Detour"))) 364 (bb-update-board (propertize (format "%d" bb-detour-count)
365 (setq bb-score (+ bb-score 2)))))) 365 'help-echo "Detour")))
366 (setq bb-score (+ bb-score 2)))))))
366 367
367(defun bb-trace-ray-2 (first x dx y dy) 368(defun bb-trace-ray-2 (first x dx y dy)
368 (cond 369 (cond
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index 076ffcc8159..8ae2a7abe76 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -878,7 +878,7 @@ Returns the compilation buffer created."
878 ;; Set the EMACS variable, but 878 ;; Set the EMACS variable, but
879 ;; don't override users' setting of $EMACS. 879 ;; don't override users' setting of $EMACS.
880 (unless (getenv "EMACS") '("EMACS=t")) 880 (unless (getenv "EMACS") '("EMACS=t"))
881 process-environment)) 881 (copy-sequence process-environment)))
882 (thisdir default-directory) 882 (thisdir default-directory)
883 outwin outbuf) 883 outwin outbuf)
884 (with-current-buffer 884 (with-current-buffer
@@ -1059,7 +1059,7 @@ exited abnormally with code %d\n"
1059 (set-keymap-parent map compilation-minor-mode-map) 1059 (set-keymap-parent map compilation-minor-mode-map)
1060 (define-key map " " 'scroll-up) 1060 (define-key map " " 'scroll-up)
1061 (define-key map "\^?" 'scroll-down) 1061 (define-key map "\^?" 'scroll-down)
1062 (define-key map "\C-c\C-f" 'next-error-follow-mode) 1062 (define-key map "\C-c\C-f" 'next-error-follow-minor-mode)
1063 1063
1064 ;; Set up the menu-bar 1064 ;; Set up the menu-bar
1065 (define-key map [menu-bar compilation] 1065 (define-key map [menu-bar compilation]
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index e4cd0c59dac..4d9e05109a8 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -64,8 +64,8 @@ will be parsed and highlighted as soon as you try to move to them."
64 :version "21.4" 64 :version "21.4"
65 :group 'grep) 65 :group 'grep)
66 66
67(defcustom grep-highlight-matches t 67(defcustom grep-highlight-matches 'auto-detect
68 "*Non-nil to use special markers to highlight grep matches. 68 "If t, use special markers to highlight grep matches.
69 69
70Some grep programs are able to surround matches with special 70Some grep programs are able to surround matches with special
71markers in grep output. Such markers can be used to highlight 71markers in grep output. Such markers can be used to highlight
@@ -74,8 +74,13 @@ matches in grep mode.
74This option sets the environment variable GREP_COLOR to specify 74This option sets the environment variable GREP_COLOR to specify
75markers for highlighting and GREP_OPTIONS to add the --color 75markers for highlighting and GREP_OPTIONS to add the --color
76option in front of any explicit grep options before starting 76option in front of any explicit grep options before starting
77the grep." 77the grep.
78 :type 'boolean 78
79The default value of this variable is set up by `grep-compute-defaults';
80call that function before using this variable in your program."
81 :type '(choice (const :tag "Do not highlight matches with grep markers" nil)
82 (const :tag "Highlight matches with grep markers" t)
83 (other :tag "Not Set" auto-detect))
79 :version "21.4" 84 :version "21.4"
80 :group 'grep) 85 :group 'grep)
81 86
@@ -110,7 +115,6 @@ necessary if the grep program used supports the `-H' option.
110 115
111The default value of this variable is set up by `grep-compute-defaults'; 116The default value of this variable is set up by `grep-compute-defaults';
112call that function before using this variable in your program." 117call that function before using this variable in your program."
113 :type 'boolean
114 :type '(choice (const :tag "Do Not Append Null Device" nil) 118 :type '(choice (const :tag "Do Not Append Null Device" nil)
115 (const :tag "Append Null Device" t) 119 (const :tag "Append Null Device" t)
116 (other :tag "Not Set" auto-detect)) 120 (other :tag "Not Set" auto-detect))
@@ -181,7 +185,7 @@ See `compilation-error-screen-columns'"
181 (let ((map (cons 'keymap compilation-minor-mode-map))) 185 (let ((map (cons 'keymap compilation-minor-mode-map)))
182 (define-key map " " 'scroll-up) 186 (define-key map " " 'scroll-up)
183 (define-key map "\^?" 'scroll-down) 187 (define-key map "\^?" 'scroll-down)
184 (define-key map "\C-c\C-f" 'next-error-follow-mode) 188 (define-key map "\C-c\C-f" 'next-error-follow-minor-mode)
185 189
186 ;; This is intolerable -- rms 190 ;; This is intolerable -- rms
187;;; (define-key map [remap next-line] 'compilation-next-error) 191;;; (define-key map [remap next-line] 'compilation-next-error)
@@ -333,7 +337,9 @@ This variable's value takes effect when `grep-compute-defaults' is called.")
333(defun grep-process-setup () 337(defun grep-process-setup ()
334 "Setup compilation variables and buffer for `grep'. 338 "Setup compilation variables and buffer for `grep'.
335Set up `compilation-exit-message-function' and run `grep-setup-hook'." 339Set up `compilation-exit-message-function' and run `grep-setup-hook'."
336 (when grep-highlight-matches 340 (unless (or (not grep-highlight-matches) (eq grep-highlight-matches t))
341 (grep-compute-defaults))
342 (when (eq grep-highlight-matches t)
337 ;; Modify `process-environment' locally bound in `compilation-start' 343 ;; Modify `process-environment' locally bound in `compilation-start'
338 (setenv "GREP_OPTIONS" (concat (getenv "GREP_OPTIONS") " --color=always")) 344 (setenv "GREP_OPTIONS" (concat (getenv "GREP_OPTIONS") " --color=always"))
339 (setenv "GREP_COLOR" "01;41")) 345 (setenv "GREP_COLOR" "01;41"))
@@ -415,7 +421,18 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
415 (format "%s <D> <X> -type f <F> -print | xargs %s <R>" 421 (format "%s <D> <X> -type f <F> -print | xargs %s <R>"
416 find-program gcmd)) 422 find-program gcmd))
417 (t (format "%s <D> <X> -type f <F> -exec %s <R> {} %s \\;" 423 (t (format "%s <D> <X> -type f <F> -exec %s <R> {} %s \\;"
418 find-program gcmd null-device))))))) 424 find-program gcmd null-device))))))
425 (unless (or (not grep-highlight-matches) (eq grep-highlight-matches t))
426 (setq grep-highlight-matches
427 (with-temp-buffer
428 (and (equal (condition-case nil
429 (call-process grep-program nil t nil "--help")
430 (error nil))
431 0)
432 (progn
433 (goto-char (point-min))
434 (search-forward "--color" nil t))
435 t)))))
419 436
420(defun grep-default-command () 437(defun grep-default-command ()
421 (let ((tag-default 438 (let ((tag-default
@@ -483,7 +500,6 @@ temporarily highlight in visited source lines."
483 command-args) 500 command-args)
484 'grep-mode nil highlight-regexp))) 501 'grep-mode nil highlight-regexp)))
485 502
486;;;###autoload (autoload 'grep-mode "grep" nil t)
487(define-compilation-mode grep-mode "Grep" 503(define-compilation-mode grep-mode "Grep"
488 "Sets `grep-last-buffer' and `compilation-window-height'." 504 "Sets `grep-last-buffer' and `compilation-window-height'."
489 (setq grep-last-buffer (current-buffer)) 505 (setq grep-last-buffer (current-buffer))
@@ -599,5 +615,5 @@ those sub directories of DIR."
599 615
600(provide 'grep) 616(provide 'grep)
601 617
602;;; arch-tag: 5a5b9169-a79d-4f38-9c38-f69615f39c4d 618;; arch-tag: 5a5b9169-a79d-4f38-9c38-f69615f39c4d
603;;; grep.el ends here 619;;; grep.el ends here
diff --git a/lisp/ps-mule.el b/lisp/ps-mule.el
index fe9d7350398..ec7b3b22fca 100644
--- a/lisp/ps-mule.el
+++ b/lisp/ps-mule.el
@@ -418,21 +418,21 @@ See also `ps-mule-font-info-database-bdf'.")
418 418
419(defun ps-mule-encode-bit (string delta) 419(defun ps-mule-encode-bit (string delta)
420 (let* ((dim (charset-dimension (char-charset (string-to-char string)))) 420 (let* ((dim (charset-dimension (char-charset (string-to-char string))))
421 (len (* (ps-mule-chars-in-string string) dim)) 421 (len (* (length string) dim))
422 (str (make-string len 0)) 422 (str (make-string len 0))
423 (i 0) 423 (i 0)
424 (j 0)) 424 (j 0))
425 (if (= dim 1) 425 (if (= dim 1)
426 (while (< j len) 426 (while (< j len)
427 (aset str j 427 (aset str j
428 (+ (nth 1 (split-char (ps-mule-string-char string i))) delta)) 428 (+ (nth 1 (split-char (aref string i))) delta))
429 (setq i (ps-mule-next-index string i) 429 (setq i (1+ i)
430 j (1+ j))) 430 j (1+ j)))
431 (while (< j len) 431 (while (< j len)
432 (let ((split (split-char (ps-mule-string-char string i)))) 432 (let ((split (split-char (aref string i))))
433 (aset str j (+ (nth 1 split) delta)) 433 (aset str j (+ (nth 1 split) delta))
434 (aset str (1+ j) (+ (nth 2 split) delta)) 434 (aset str (1+ j) (+ (nth 2 split) delta))
435 (setq i (ps-mule-next-index string i) 435 (setq i (1+ i)
436 j (+ j 2))))) 436 j (+ j 2)))))
437 str)) 437 str))
438 438
@@ -468,13 +468,13 @@ See also `ps-mule-font-info-database-bdf'.")
468 468
469;; Special encoding for mule-unicode-* characters. 469;; Special encoding for mule-unicode-* characters.
470(defun ps-mule-encode-ucs2 (string) 470(defun ps-mule-encode-ucs2 (string)
471 (let* ((len (ps-mule-chars-in-string string)) 471 (let* ((len (length string))
472 (str (make-string (* 2 len) 0)) 472 (str (make-string (* 2 len) 0))
473 (i 0) 473 (i 0)
474 (j 0) 474 (j 0)
475 ch hi lo) 475 ch hi lo)
476 (while (< i len) 476 (while (< i len)
477 (setq ch (encode-char (ps-mule-string-char string i) 'ucs) 477 (setq ch (encode-char (aref string i) 'ucs)
478 hi (lsh ch -8) 478 hi (lsh ch -8)
479 lo (logand ch 255)) 479 lo (logand ch 255))
480 (aset str j hi) 480 (aset str j hi)
@@ -796,7 +796,7 @@ the sequence."
796 (cons from ps-width-remaining) 796 (cons from ps-width-remaining)
797 (cons (if composition 797 (cons (if composition
798 (nth 1 composition) 798 (nth 1 composition)
799 (ps-mule-next-point from)) 799 (1+ from))
800 run-width))) 800 run-width)))
801 ;; We assume that all characters in this range have the same width. 801 ;; We assume that all characters in this range have the same width.
802 (setq char-width (* char-width (charset-width ps-mule-current-charset))) 802 (setq char-width (* char-width (charset-width ps-mule-current-charset)))
@@ -849,7 +849,7 @@ the sequence."
849 849
850 ;; This case is obsolete for Emacs 21. 850 ;; This case is obsolete for Emacs 21.
851 ((eq ps-mule-current-charset 'composition) 851 ((eq ps-mule-current-charset 'composition)
852 (ps-mule-plot-composition from (ps-mule-next-point from) bg-color)) 852 (ps-mule-plot-composition from (1+ from) bg-color))
853 853
854 (t 854 (t
855 ;; No way to print this charset. Just show a vacant box of an 855 ;; No way to print this charset. Just show a vacant box of an
diff --git a/lisp/replace.el b/lisp/replace.el
index 5976a1bcb91..0c0ee821c67 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -618,7 +618,7 @@ end of the buffer."
618 (define-key map "g" 'revert-buffer) 618 (define-key map "g" 'revert-buffer)
619 (define-key map "q" 'quit-window) 619 (define-key map "q" 'quit-window)
620 (define-key map "z" 'kill-this-buffer) 620 (define-key map "z" 'kill-this-buffer)
621 (define-key map "\C-c\C-f" 'next-error-follow-mode) 621 (define-key map "\C-c\C-f" 'next-error-follow-minor-mode)
622 map) 622 map)
623 "Keymap for `occur-mode'.") 623 "Keymap for `occur-mode'.")
624 624
@@ -1393,7 +1393,9 @@ make, or the user didn't cancel the call."
1393 ;; Bind message-log-max so we don't fill up the message log 1393 ;; Bind message-log-max so we don't fill up the message log
1394 ;; with a bunch of identical messages. 1394 ;; with a bunch of identical messages.
1395 (let ((message-log-max nil)) 1395 (let ((message-log-max nil))
1396 (message message from-string next-replacement)) 1396 (message message
1397 (query-replace-descr from-string)
1398 (query-replace-descr next-replacement)))
1397 (setq key (read-event)) 1399 (setq key (read-event))
1398 ;; Necessary in case something happens during read-event 1400 ;; Necessary in case something happens during read-event
1399 ;; that clobbers the match data. 1401 ;; that clobbers the match data.
diff --git a/lisp/simple.el b/lisp/simple.el
index 9784a7bb2c8..14fa1931e40 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -259,7 +259,7 @@ When turned on, cursor motion in the compilation, grep, occur or diff
259buffer causes automatic display of the corresponding source code 259buffer causes automatic display of the corresponding source code
260location." 260location."
261 nil " Fol" nil 261 nil " Fol" nil
262 (if (not next-error-follow-mode) 262 (if (not next-error-follow-minor-mode)
263 (remove-hook 'post-command-hook 'next-error-follow-mode-post-command-hook t) 263 (remove-hook 'post-command-hook 'next-error-follow-mode-post-command-hook t)
264 (add-hook 'post-command-hook 'next-error-follow-mode-post-command-hook nil t) 264 (add-hook 'post-command-hook 'next-error-follow-mode-post-command-hook nil t)
265 (make-variable-buffer-local 'next-error-follow-last-line))) 265 (make-variable-buffer-local 'next-error-follow-last-line)))
diff --git a/lisp/startup.el b/lisp/startup.el
index 922c1cd3b5d..841ecedf6ce 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1485,12 +1485,19 @@ normal otherwise."
1485 (file-count 0) 1485 (file-count 0)
1486 first-file-buffer 1486 first-file-buffer
1487 tem 1487 tem
1488 ;; The directories listed in --directory/-L options will *appear* 1488 ;; This approach loses for "-batch -L DIR --eval "(require foo)",
1489 ;; at the front of `load-path' in the order they appear on the 1489 ;; if foo is intended to be found in DIR.
1490 ;; command-line. We cannot do this by *placing* them at the front 1490 ;;
1491 ;; in the order they appear, so we need this variable to hold them, 1491 ;; ;; The directories listed in --directory/-L options will *appear*
1492 ;; temporarily. 1492 ;; ;; at the front of `load-path' in the order they appear on the
1493 extra-load-path 1493 ;; ;; command-line. We cannot do this by *placing* them at the front
1494 ;; ;; in the order they appear, so we need this variable to hold them,
1495 ;; ;; temporarily.
1496 ;; extra-load-path
1497 ;;
1498 ;; To DTRT we keep track of the splice point and modify `load-path'
1499 ;; straight away upon any --directory/-L option.
1500 splice
1494 just-files ;; t if this follows the magic -- option. 1501 just-files ;; t if this follows the magic -- option.
1495 ;; This includes our standard options' long versions 1502 ;; This includes our standard options' long versions
1496 ;; and long versions of what's on command-switch-alist. 1503 ;; and long versions of what's on command-switch-alist.
@@ -1559,15 +1566,15 @@ normal otherwise."
1559 1566
1560 ((member argi '("-eval" "-execute")) 1567 ((member argi '("-eval" "-execute"))
1561 (eval (read (or argval (pop command-line-args-left))))) 1568 (eval (read (or argval (pop command-line-args-left)))))
1562 ;; Set the default directory as specified in -L.
1563 1569
1564 ((member argi '("-L" "-directory")) 1570 ((member argi '("-L" "-directory"))
1565 (setq tem (or argval (pop command-line-args-left))) 1571 (setq tem (expand-file-name
1566 ;; We will reverse `extra-load-path' and prepend it to 1572 (command-line-normalize-file-name
1567 ;; `load-path' after all the arguments have been processed. 1573 (or argval (pop command-line-args-left)))))
1568 (push 1574 (cond (splice (setcdr splice (cons tem (cdr splice)))
1569 (expand-file-name (command-line-normalize-file-name tem)) 1575 (setq splice (cdr splice)))
1570 extra-load-path)) 1576 (t (setq load-path (cons tem load-path)
1577 splice load-path))))
1571 1578
1572 ((member argi '("-l" "-load")) 1579 ((member argi '("-l" "-load"))
1573 (let* ((file (command-line-normalize-file-name 1580 (let* ((file (command-line-normalize-file-name
@@ -1648,10 +1655,6 @@ normal otherwise."
1648 (move-to-column (1- column))) 1655 (move-to-column (1- column)))
1649 (setq column 0)))))))) 1656 (setq column 0))))))))
1650 1657
1651 ;; See --directory/-L option above.
1652 (when extra-load-path
1653 (setq load-path (append (nreverse extra-load-path) load-path)))
1654
1655 ;; If 3 or more files visited, and not all visible, 1658 ;; If 3 or more files visited, and not all visible,
1656 ;; show user what they all are. But leave the last one current. 1659 ;; show user what they all are. But leave the last one current.
1657 (and (> file-count 2) 1660 (and (> file-count 2)
diff --git a/lisp/subr.el b/lisp/subr.el
index 6676a6b7794..86ccd22f338 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -2127,7 +2127,7 @@ likely to have undesired semantics.")
2127;; expression leads to the equivalent implementation that if SEPARATORS 2127;; expression leads to the equivalent implementation that if SEPARATORS
2128;; is defaulted, OMIT-NULLS is treated as t. 2128;; is defaulted, OMIT-NULLS is treated as t.
2129(defun split-string (string &optional separators omit-nulls) 2129(defun split-string (string &optional separators omit-nulls)
2130 "Splits STRING into substrings bounded by matches for SEPARATORS. 2130 "Split STRING into substrings bounded by matches for SEPARATORS.
2131 2131
2132The beginning and end of STRING, and each match for SEPARATORS, are 2132The beginning and end of STRING, and each match for SEPARATORS, are
2133splitting points. The substrings matching SEPARATORS are removed, and 2133splitting points. The substrings matching SEPARATORS are removed, and
diff --git a/lisp/term.el b/lisp/term.el
index 9866db7e29c..590a9b0a1d5 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -925,7 +925,7 @@ is buffer-local.")
925(defun term-window-width () 925(defun term-window-width ()
926 (if (featurep 'xemacs) 926 (if (featurep 'xemacs)
927 (1- (window-width)) 927 (1- (window-width))
928 (if window-system 928 (if (and window-system overflow-newline-into-fringe)
929 (window-width) 929 (window-width)
930 (1- (window-width))))) 930 (1- (window-width)))))
931 931
@@ -988,8 +988,6 @@ Entry to this mode runs the hooks on `term-mode-hook'."
988 (make-local-variable 'term-width) 988 (make-local-variable 'term-width)
989 (setq term-width (term-window-width)) 989 (setq term-width (term-window-width))
990 (setq term-height (1- (window-height))) 990 (setq term-height (1- (window-height)))
991 (term-ifnot-xemacs
992 (set (make-local-variable 'overflow-newline-into-fringe) nil))
993 (make-local-variable 'term-terminal-parameter) 991 (make-local-variable 'term-terminal-parameter)
994 (make-local-variable 'term-saved-cursor) 992 (make-local-variable 'term-saved-cursor)
995 (make-local-variable 'term-last-input-start) 993 (make-local-variable 'term-last-input-start)
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index e05b2f27324..042df933989 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -1,6 +1,6 @@
1;;; xterm.el --- define function key sequences and standard colors for xterm 1;;; xterm.el --- define function key sequences and standard colors for xterm
2 2
3;; Copyright (C) 1995, 2002 Free Software Foundation, Inc. 3;; Copyright (C) 1995, 2002, 2004 Free Software Foundation, Inc.
4 4
5;; Author: FSF 5;; Author: FSF
6;; Keywords: terminals 6;; Keywords: terminals
@@ -53,6 +53,16 @@
53 (define-key map "\e[24~" [f12]) 53 (define-key map "\e[24~" [f12])
54 (define-key map "\e[29~" [print]) 54 (define-key map "\e[29~" [print])
55 55
56 (define-key map "\e[1;2A" [S-up])
57 (define-key map "\e[1;2B" [S-down])
58 (define-key map "\e[1;2C" [S-right])
59 (define-key map "\e[1;2D" [S-left])
60
61 (define-key map "\e[1;5A" [C-up])
62 (define-key map "\e[1;5B" [C-down])
63 (define-key map "\e[1;5C" [C-right])
64 (define-key map "\e[1;5D" [C-left])
65
56 (define-key map "\e[2;2~" [S-insert]) 66 (define-key map "\e[2;2~" [S-insert])
57 (define-key map "\e[3;2~" [S-delete]) 67 (define-key map "\e[3;2~" [S-delete])
58 (define-key map "\e[5;2~" [S-prior]) 68 (define-key map "\e[5;2~" [S-prior])
@@ -238,5 +248,5 @@ versions of xterm."
238;; This recomputes all the default faces given the colors we've just set up. 248;; This recomputes all the default faces given the colors we've just set up.
239(tty-set-up-initial-frame-faces) 249(tty-set-up-initial-frame-faces)
240 250
241;;; arch-tag: 12e7ebdd-1e6c-4b25-b0f9-35ace25e855a 251;; arch-tag: 12e7ebdd-1e6c-4b25-b0f9-35ace25e855a
242;;; xterm.el ends here 252;;; xterm.el ends here
diff --git a/lisp/vc-arch.el b/lisp/vc-arch.el
index 5f24599241c..c4c484a9347 100644
--- a/lisp/vc-arch.el
+++ b/lisp/vc-arch.el
@@ -1,6 +1,7 @@
1;;; vc-arch.el --- VC backend for the Arch version-control system 1;;; vc-arch.el --- VC backend for the Arch version-control system
2 2
3;; Copyright (C) 1995,98,99,2000,01,02,03,2004 Free Software Foundation, Inc. 3;; Copyright (C) 1995, 1998, 1999, 2000, 2001, 2002, 2003, 2004
4;; Free Software Foundation, Inc.
4 5
5;; Author: FSF (see vc.el for full credits) 6;; Author: FSF (see vc.el for full credits)
6;; Maintainer: Stefan Monnier <monnier@gnu.org> 7;; Maintainer: Stefan Monnier <monnier@gnu.org>
@@ -253,9 +254,13 @@ Return non-nil if FILE is unchanged."
253 (with-current-buffer (find-file-noselect sigfile) 254 (with-current-buffer (find-file-noselect sigfile)
254 (goto-char (point-min)) 255 (goto-char (point-min))
255 (while (and (search-forward id nil 'move) 256 (while (and (search-forward id nil 'move)
256 (progn (goto-char (- (match-beginning 0) 2)) 257 (save-excursion
257 ;; Ignore E_ entries used for foo.id files. 258 (goto-char (- (match-beginning 0) 2))
258 (or (not (bolp)) (looking-at "E_"))))) 259 ;; For `names', the lines start with `?./foo/bar'.
260 ;; For others there's 2 chars before the ./foo/bar.
261 (or (not (or (bolp) (looking-at "\n?")))
262 ;; Ignore E_ entries used for foo.id files.
263 (looking-at "E_")))))
259 (if (eobp) 264 (if (eobp)
260 ;; ID not found. 265 ;; ID not found.
261 (if (equal (file-name-nondirectory sigfile) 266 (if (equal (file-name-nondirectory sigfile)
@@ -303,7 +308,9 @@ Return non-nil if FILE is unchanged."
303 (or (not sealed) (eq (aref file 0) ?v)) 308 (or (not sealed) (eq (aref file 0) ?v))
304 (>= tmp rev-nb)) 309 (>= tmp rev-nb))
305 (setq rev-nb tmp rev file))) 310 (setq rev-nb tmp rev file)))
306 (concat defbranch "--" rev))))) 311 ;; Use "none-000" if the tree hasn't yet been committed on the
312 ;; default branch. We'll then get "Arch:000[branch]" on the mode-line.
313 (concat defbranch "--" (or rev "none-000"))))))
307 314
308 315
309(defcustom vc-arch-mode-line-rewrite 316(defcustom vc-arch-mode-line-rewrite
@@ -418,5 +425,5 @@ Return non-nil if FILE is unchanged."
418 425
419(provide 'vc-arch) 426(provide 'vc-arch)
420 427
421;;; arch-tag: a35c7c1c-5237-429d-88ef-3d718fd2e704 428;; arch-tag: a35c7c1c-5237-429d-88ef-3d718fd2e704
422;;; vc-arch.el ends here 429;;; vc-arch.el ends here
diff --git a/lisp/vc-rcs.el b/lisp/vc-rcs.el
index 5d020e93b6d..0a161bb9288 100644
--- a/lisp/vc-rcs.el
+++ b/lisp/vc-rcs.el
@@ -1,6 +1,7 @@
1;;; vc-rcs.el --- support for RCS version-control 1;;; vc-rcs.el --- support for RCS version-control
2 2
3;; Copyright (C) 1992,93,94,95,96,97,98,99,2000,2001 Free Software Foundation, Inc. 3;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4;; 2000, 2001, 2004 Free Software Foundation, Inc.
4 5
5;; Author: FSF (see vc.el for full credits) 6;; Author: FSF (see vc.el for full credits)
6;; Maintainer: Andre Spiegel <spiegel@gnu.org> 7;; Maintainer: Andre Spiegel <spiegel@gnu.org>
@@ -208,7 +209,7 @@ When VERSION is given, perform check for that version."
208 (vc-file-getprop file 'vc-checkout-model))))) 209 (vc-file-getprop file 'vc-checkout-model)))))
209 210
210(defun vc-rcs-workfile-unchanged-p (file) 211(defun vc-rcs-workfile-unchanged-p (file)
211 "RCS-specific implementation of vc-workfile-unchanged-p." 212 "RCS-specific implementation of `vc-workfile-unchanged-p'."
212 ;; Try to use rcsdiff --brief. If rcsdiff does not understand that, 213 ;; Try to use rcsdiff --brief. If rcsdiff does not understand that,
213 ;; do a double take and remember the fact for the future 214 ;; do a double take and remember the fact for the future
214 (let* ((version (concat "-r" (vc-workfile-version file))) 215 (let* ((version (concat "-r" (vc-workfile-version file)))
@@ -786,5 +787,5 @@ variable `vc-rcs-release' is set to the returned value."
786 787
787(provide 'vc-rcs) 788(provide 'vc-rcs)
788 789
789;;; arch-tag: 759b4916-5b0d-431d-b647-b185b8c652cf 790;; arch-tag: 759b4916-5b0d-431d-b647-b185b8c652cf
790;;; vc-rcs.el ends here 791;;; vc-rcs.el ends here
diff --git a/lisp/vc-sccs.el b/lisp/vc-sccs.el
index a630c1f3d67..b691775f63b 100644
--- a/lisp/vc-sccs.el
+++ b/lisp/vc-sccs.el
@@ -1,6 +1,7 @@
1;;; vc-sccs.el --- support for SCCS version-control 1;;; vc-sccs.el --- support for SCCS version-control
2 2
3;; Copyright (C) 1992,93,94,95,96,97,98,99,2000,2001 Free Software Foundation, Inc. 3;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4;; 2000, 2001, 2004 Free Software Foundation, Inc.
4 5
5;; Author: FSF (see vc.el for full credits) 6;; Author: FSF (see vc.el for full credits)
6;; Maintainer: Andre Spiegel <spiegel@gnu.org> 7;; Maintainer: Andre Spiegel <spiegel@gnu.org>
@@ -150,7 +151,7 @@ For a description of possible values, see `vc-check-master-templates'."
150 'locking) 151 'locking)
151 152
152(defun vc-sccs-workfile-unchanged-p (file) 153(defun vc-sccs-workfile-unchanged-p (file)
153 "SCCS-specific implementation of vc-workfile-unchanged-p." 154 "SCCS-specific implementation of `vc-workfile-unchanged-p'."
154 (zerop (apply 'vc-do-command nil 1 "vcdiff" (vc-name file) 155 (zerop (apply 'vc-do-command nil 1 "vcdiff" (vc-name file)
155 (list "--brief" "-q" 156 (list "--brief" "-q"
156 (concat "-r" (vc-workfile-version file)))))) 157 (concat "-r" (vc-workfile-version file))))))
@@ -397,5 +398,5 @@ If NAME is nil or a version number string it's just passed through."
397 398
398(provide 'vc-sccs) 399(provide 'vc-sccs)
399 400
400;;; arch-tag: d751dee3-d7b3-47e1-95e3-7ae98c052041 401;; arch-tag: d751dee3-d7b3-47e1-95e3-7ae98c052041
401;;; vc-sccs.el ends here 402;;; vc-sccs.el ends here
diff --git a/lisp/vc.el b/lisp/vc.el
index 1b4e2409550..edb2c789f52 100644
--- a/lisp/vc.el
+++ b/lisp/vc.el
@@ -1,7 +1,7 @@
1;;; vc.el --- drive a version-control system from within Emacs 1;;; vc.el --- drive a version-control system from within Emacs
2 2
3;; Copyright (C) 1992,93,94,95,96,97,98,2000,01,2003,2004 3;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998,
4;; Free Software Foundation, Inc. 4;; 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
5 5
6;; Author: FSF (see below for full credits) 6;; Author: FSF (see below for full credits)
7;; Maintainer: Andre Spiegel <spiegel@gnu.org> 7;; Maintainer: Andre Spiegel <spiegel@gnu.org>
@@ -394,7 +394,7 @@
394;; 394;;
395;; Return the hostname that the backend will have to contact 395;; Return the hostname that the backend will have to contact
396;; in order to operate on a file in DIRNAME. If the return value 396;; in order to operate on a file in DIRNAME. If the return value
397;; is nil, it is means that the repository is local. 397;; is nil, it means that the repository is local.
398;; This function is used in `vc-stay-local-p' which backends can use 398;; This function is used in `vc-stay-local-p' which backends can use
399;; for their convenience. 399;; for their convenience.
400;; 400;;
@@ -1017,28 +1017,32 @@ Used by `vc-restore-buffer-context' to later restore the context."
1017 (vc-position-context (mark-marker)))) 1017 (vc-position-context (mark-marker))))
1018 ;; Make the right thing happen in transient-mark-mode. 1018 ;; Make the right thing happen in transient-mark-mode.
1019 (mark-active nil) 1019 (mark-active nil)
1020 ;; We may want to reparse the compilation buffer after revert 1020 ;; The new compilation code does not use compilation-error-list any
1021 (reparse (and (boundp 'compilation-error-list) ;compile loaded 1021 ;; more, so the code below is now ineffective and might as well
1022 ;; Construct a list; each elt is nil or a buffer 1022 ;; be disabled. -- Stef
1023 ;; iff that buffer is a compilation output buffer 1023 ;; ;; We may want to reparse the compilation buffer after revert
1024 ;; that contains markers into the current buffer. 1024 ;; (reparse (and (boundp 'compilation-error-list) ;compile loaded
1025 (save-current-buffer 1025 ;; ;; Construct a list; each elt is nil or a buffer
1026 (mapcar (lambda (buffer) 1026 ;; ;; iff that buffer is a compilation output buffer
1027 (set-buffer buffer) 1027 ;; ;; that contains markers into the current buffer.
1028 (let ((errors (or 1028 ;; (save-current-buffer
1029 compilation-old-error-list 1029 ;; (mapcar (lambda (buffer)
1030 compilation-error-list)) 1030 ;; (set-buffer buffer)
1031 (buffer-error-marked-p nil)) 1031 ;; (let ((errors (or
1032 (while (and (consp errors) 1032 ;; compilation-old-error-list
1033 (not buffer-error-marked-p)) 1033 ;; compilation-error-list))
1034 (and (markerp (cdr (car errors))) 1034 ;; (buffer-error-marked-p nil))
1035 (eq buffer 1035 ;; (while (and (consp errors)
1036 (marker-buffer 1036 ;; (not buffer-error-marked-p))
1037 (cdr (car errors)))) 1037 ;; (and (markerp (cdr (car errors)))
1038 (setq buffer-error-marked-p t)) 1038 ;; (eq buffer
1039 (setq errors (cdr errors))) 1039 ;; (marker-buffer
1040 (if buffer-error-marked-p buffer))) 1040 ;; (cdr (car errors))))
1041 (buffer-list)))))) 1041 ;; (setq buffer-error-marked-p t))
1042 ;; (setq errors (cdr errors)))
1043 ;; (if buffer-error-marked-p buffer)))
1044 ;; (buffer-list)))))
1045 (reparse nil))
1042 (list point-context mark-context reparse))) 1046 (list point-context mark-context reparse)))
1043 1047
1044(defun vc-restore-buffer-context (context) 1048(defun vc-restore-buffer-context (context)
@@ -1047,23 +1051,26 @@ CONTEXT is that which `vc-buffer-context' returns."
1047 (let ((point-context (nth 0 context)) 1051 (let ((point-context (nth 0 context))
1048 (mark-context (nth 1 context)) 1052 (mark-context (nth 1 context))
1049 (reparse (nth 2 context))) 1053 (reparse (nth 2 context)))
1050 ;; Reparse affected compilation buffers. 1054 ;; The new compilation code does not use compilation-error-list any
1051 (while reparse 1055 ;; more, so the code below is now ineffective and might as well
1052 (if (car reparse) 1056 ;; be disabled. -- Stef
1053 (with-current-buffer (car reparse) 1057 ;; ;; Reparse affected compilation buffers.
1054 (let ((compilation-last-buffer (current-buffer)) ;select buffer 1058 ;; (while reparse
1055 ;; Record the position in the compilation buffer of 1059 ;; (if (car reparse)
1056 ;; the last error next-error went to. 1060 ;; (with-current-buffer (car reparse)
1057 (error-pos (marker-position 1061 ;; (let ((compilation-last-buffer (current-buffer)) ;select buffer
1058 (car (car-safe compilation-error-list))))) 1062 ;; ;; Record the position in the compilation buffer of
1059 ;; Reparse the error messages as far as they were parsed before. 1063 ;; ;; the last error next-error went to.
1060 (compile-reinitialize-errors '(4) compilation-parsing-end) 1064 ;; (error-pos (marker-position
1061 ;; Move the pointer up to find the error we were at before 1065 ;; (car (car-safe compilation-error-list)))))
1062 ;; reparsing. Now next-error should properly go to the next one. 1066 ;; ;; Reparse the error messages as far as they were parsed before.
1063 (while (and compilation-error-list 1067 ;; (compile-reinitialize-errors '(4) compilation-parsing-end)
1064 (/= error-pos (car (car compilation-error-list)))) 1068 ;; ;; Move the pointer up to find the error we were at before
1065 (setq compilation-error-list (cdr compilation-error-list)))))) 1069 ;; ;; reparsing. Now next-error should properly go to the next one.
1066 (setq reparse (cdr reparse))) 1070 ;; (while (and compilation-error-list
1071 ;; (/= error-pos (car (car compilation-error-list))))
1072 ;; (setq compilation-error-list (cdr compilation-error-list))))))
1073 ;; (setq reparse (cdr reparse)))
1067 1074
1068 ;; if necessary, restore point and mark 1075 ;; if necessary, restore point and mark
1069 (if (not (vc-context-matches-p (point) point-context)) 1076 (if (not (vc-context-matches-p (point) point-context))
@@ -3705,5 +3712,5 @@ Invoke FUNC f ARGS on each VC-managed file f underneath it."
3705;; 3712;;
3706;; Thus, there is no explicit recovery code. 3713;; Thus, there is no explicit recovery code.
3707 3714
3708;;; arch-tag: ca82c1de-3091-4e26-af92-460abc6213a6 3715;; arch-tag: ca82c1de-3091-4e26-af92-460abc6213a6
3709;;; vc.el ends here 3716;;; vc.el ends here
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index 234cc779019..56edf46be59 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,16 @@
12004-09-08 Juri Linkov <juri@jurta.org>
2
3 * minibuf.texi (Minibuffer History): Add `history-delete-duplicates'.
4
52004-09-07 Luc Teirlinck <teirllm@auburn.edu>
6
7 * locals.texi (Standard Buffer-Local Variables): Add
8 `buffer-auto-save-file-format'.
9 * internals.texi (Buffer Internals): Describe new
10 auto_save_file_format field of the buffer structure.
11 * files.texi (Format Conversion): `auto-save-file-format' has been
12 renamed `buffer-auto-save-file-format'.
13
12004-08-27 Luc Teirlinck <teirllm@auburn.edu> 142004-08-27 Luc Teirlinck <teirllm@auburn.edu>
2 15
3 * abbrevs.texi (Abbrev Expansion): `abbrev-start-location' can be 16 * abbrevs.texi (Abbrev Expansion): `abbrev-start-location' can be
diff --git a/lispref/files.texi b/lispref/files.texi
index 4fe2d8567d3..2e6a5bcee00 100644
--- a/lispref/files.texi
+++ b/lispref/files.texi
@@ -2825,7 +2825,7 @@ The argument @var{format} is a list of format names. If @var{format} is
2825@key{RET} for @var{format} specifies @code{nil}. 2825@key{RET} for @var{format} specifies @code{nil}.
2826@end deffn 2826@end deffn
2827 2827
2828@defvar auto-save-file-format 2828@defvar buffer-auto-save-file-format
2829This variable specifies the format to use for auto-saving. Its value is 2829This variable specifies the format to use for auto-saving. Its value is
2830a list of format names, just like the value of 2830a list of format names, just like the value of
2831@code{buffer-file-format}; however, it is used instead of 2831@code{buffer-file-format}; however, it is used instead of
diff --git a/lispref/internals.texi b/lispref/internals.texi
index 3d75b04ca65..a4c641a40a8 100644
--- a/lispref/internals.texi
+++ b/lispref/internals.texi
@@ -1094,6 +1094,9 @@ The value of @code{buffer-file-coding-system} in this buffer.
1094@item file_format 1094@item file_format
1095The value of @code{buffer-file-format} in this buffer. 1095The value of @code{buffer-file-format} in this buffer.
1096 1096
1097@item auto_save_file_format
1098The value of @code{buffer-auto-save-file-format} in this buffer.
1099
1097@item pt_marker 1100@item pt_marker
1098In an indirect buffer, or a buffer that is the base of an indirect 1101In an indirect buffer, or a buffer that is the base of an indirect
1099buffer, this holds a marker that records point for this buffer when the 1102buffer, this holds a marker that records point for this buffer when the
diff --git a/lispref/locals.texi b/lispref/locals.texi
index a6c7f04301e..21473ab0e09 100644
--- a/lispref/locals.texi
+++ b/lispref/locals.texi
@@ -21,6 +21,9 @@ use, but we don't try to list them all here.
21@item auto-fill-function 21@item auto-fill-function
22@xref{Auto Filling}. 22@xref{Auto Filling}.
23 23
24@item buffer-auto-save-file-format
25@xref{Format Conversion}.
26
24@item buffer-auto-save-file-name 27@item buffer-auto-save-file-name
25@xref{Auto-Saving}. 28@xref{Auto-Saving}.
26 29
diff --git a/lispref/minibuf.texi b/lispref/minibuf.texi
index 7b762a654e6..1b076c5837d 100644
--- a/lispref/minibuf.texi
+++ b/lispref/minibuf.texi
@@ -450,7 +450,8 @@ delete old elements if the list gets too long. The variable
450@code{history-length} specifies the maximum length for most history 450@code{history-length} specifies the maximum length for most history
451lists. To specify a different maximum length for a particular history 451lists. To specify a different maximum length for a particular history
452list, put the length in the @code{history-length} property of the 452list, put the length in the @code{history-length} property of the
453history list symbol. 453history list symbol. The variable @code{history-delete-duplicates}
454specifies whether to delete duplicates in history.
454 455
455@defvar history-length 456@defvar history-length
456The value of this variable specifies the maximum length for all 457The value of this variable specifies the maximum length for all
@@ -459,6 +460,11 @@ value is @code{t}, that means there no maximum (don't delete old
459elements). 460elements).
460@end defvar 461@end defvar
461 462
463@defvar history-delete-duplicates
464If the value of this variable is @code{t}, that means when adding a
465new history element, all previous identical elements are deleted.
466@end defvar
467
462 Here are some of the standard minibuffer history list variables: 468 Here are some of the standard minibuffer history list variables:
463 469
464@defvar minibuffer-history 470@defvar minibuffer-history
diff --git a/man/ChangeLog b/man/ChangeLog
index ec3c763c1b6..01cc1575517 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,20 @@
12004-09-09 Kim F. Storm <storm@cua.dk>
2
3 * kmacro.texi (Save Keyboard Macro): Replace `name-last-kbd-macro'
4 with new `kmacro-name-last-macro'.
5
62004-09-09 Reiner Steib <Reiner.Steib@gmx.de>
7
8 * makefile.w32-in (sieve, pgg): Use $(infodir).
9
102004-09-08 Juri Linkov <juri@jurta.org>
11
12 * mini.texi (Minibuffer History): Add `history-delete-duplicates'.
13
142004-09-08 Dhruva Krishnamurthy <dhruva.krishnamurthy@gmail.com> (tiny change)
15
16 * makefile.w32-in: Fix PGG and Sieve entries.
17
12004-09-03 Juri Linkov <juri@jurta.org> 182004-09-03 Juri Linkov <juri@jurta.org>
2 19
3 * search.texi (Incremental Search): Update wording for M-%. 20 * search.texi (Incremental Search): Update wording for M-%.
diff --git a/man/kmacro.texi b/man/kmacro.texi
index bad186f88b2..c07602bc77f 100644
--- a/man/kmacro.texi
+++ b/man/kmacro.texi
@@ -62,7 +62,7 @@ When this point is reached during macro execution, ask for confirmation
62(@code{kbd-macro-query}). 62(@code{kbd-macro-query}).
63@item C-x C-k n 63@item C-x C-k n
64Give a command name (for the duration of the session) to the most 64Give a command name (for the duration of the session) to the most
65recently defined keyboard macro (@code{name-last-kbd-macro}). 65recently defined keyboard macro (@code{kmacro-name-last-macro}).
66@item C-x C-k b 66@item C-x C-k b
67Bind the most recently defined keyboard macro to a key sequence (for 67Bind the most recently defined keyboard macro to a key sequence (for
68the duration of the session) (@code{kmacro-bind-to-key}). 68the duration of the session) (@code{kmacro-bind-to-key}).
@@ -361,10 +361,10 @@ register as a counter, incrementing it on each repetition of the macro.
361@section Naming and Saving Keyboard Macros 361@section Naming and Saving Keyboard Macros
362 362
363@cindex saving keyboard macros 363@cindex saving keyboard macros
364@findex name-last-kbd-macro 364@findex kmacro-name-last-macro
365@kindex C-x C-k n 365@kindex C-x C-k n
366 If you wish to save a keyboard macro for later use, you can give it 366 If you wish to save a keyboard macro for later use, you can give it
367a name using @kbd{C-x C-k n} (@code{name-last-kbd-macro}). 367a name using @kbd{C-x C-k n} (@code{kmacro-name-last-macro}).
368This reads a name as an argument using the minibuffer and defines that 368This reads a name as an argument using the minibuffer and defines that
369name to execute the last keyboard macro, in its current form. (If you 369name to execute the last keyboard macro, in its current form. (If you
370later add to the definition of this macro, that does not alter the 370later add to the definition of this macro, that does not alter the
diff --git a/man/makefile.w32-in b/man/makefile.w32-in
index 758b9dbd9da..09f314dbf47 100644
--- a/man/makefile.w32-in
+++ b/man/makefile.w32-in
@@ -198,22 +198,26 @@ gnus.dvi: gnus.texi
198 $(ENVADD) $(TEXI2DVI) gnustmp.texi 198 $(ENVADD) $(TEXI2DVI) gnustmp.texi
199 cp gnustmp.dvi $*.dvi 199 cp gnustmp.dvi $*.dvi
200 rm gnustmp.* 200 rm gnustmp.*
201#
201$(infodir)/message: message.texi 202$(infodir)/message: message.texi
202 $(MAKEINFO) message.texi 203 $(MAKEINFO) message.texi
203message.dvi: message.texi 204message.dvi: message.texi
204 $(ENVADD) $(TEXI2DVI) $(srcdir)/message.texi 205 $(ENVADD) $(TEXI2DVI) $(srcdir)/message.texi
206#
205$(infodir)/emacs-mime: emacs-mime.texi 207$(infodir)/emacs-mime: emacs-mime.texi
206 $(MAKEINFO) emacs-mime.texi 208 $(MAKEINFO) emacs-mime.texi
207emacs-mime.dvi: emacs-mime.texi 209emacs-mime.dvi: emacs-mime.texi
208 $(ENVADD) $(TEXI2DVI) $(srcdir)/emacs-mime.texi 210 $(ENVADD) $(TEXI2DVI) $(srcdir)/emacs-mime.texi
209../info/sieve: sieve.texi 211#
210 cd $(srcdir); $(MAKEINFO) sieve.texi 212$(infodir)/sieve: sieve.texi
213 $(MAKEINFO) sieve.texi
211sieve.dvi: sieve.texi 214sieve.dvi: sieve.texi
212 $(ENVADD) $(TEXI2DVI) ${srcdir}/sieve.texi 215 $(ENVADD) $(TEXI2DVI) $(srcdir)/sieve.texi
213../info/pgg: pgg.texi 216#
214 cd $(srcdir); $(MAKEINFO) pgg.texi 217$(infodir)/pgg: pgg.texi
218 $(MAKEINFO) pgg.texi
215pgg.dvi: pgg.texi 219pgg.dvi: pgg.texi
216 $(ENVADD) $(TEXI2DVI) ${srcdir}/pgg.texi 220 $(ENVADD) $(TEXI2DVI) $(srcdir)/pgg.texi
217 221
218$(infodir)/mh-e: mh-e.texi 222$(infodir)/mh-e: mh-e.texi
219 $(MAKEINFO) mh-e.texi 223 $(MAKEINFO) mh-e.texi
diff --git a/man/mini.texi b/man/mini.texi
index 040306ba041..ec82c6d4f88 100644
--- a/man/mini.texi
+++ b/man/mini.texi
@@ -511,6 +511,12 @@ is deleted each time an element is added. If the value of
511@code{history-length} is @code{t}, though, there is no maximum length 511@code{history-length} is @code{t}, though, there is no maximum length
512and elements are never deleted. 512and elements are never deleted.
513 513
514@vindex history-delete-duplicates
515 The variable @code{history-delete-duplicates} specifies whether to
516delete duplicates in history. If the value of @code{history-delete-duplicates}
517is @code{t}, that means when adding a new history element, all
518previous identical elements are deleted.
519
514@node Repetition 520@node Repetition
515@section Repeating Minibuffer Commands 521@section Repeating Minibuffer Commands
516@cindex command history 522@cindex command history
diff --git a/src/ChangeLog b/src/ChangeLog
index 8fd72a29c29..bdc2d2d7e20 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,6 +1,57 @@
12004-09-09 Richard M. Stallman <rms@gnu.org>
2
3 * xdisp.c (decode_mode_spec): Use current buffer for most purposes.
4
52004-09-08 Richard M. Stallman <rms@gnu.org>
6
7 * window.c (Fset_window_buffer): Doc fix.
8
9 * xdisp.c (Fformat_mode_line): New arg BUFFER says which buffer to use.
10
112004-09-08 Dan Nicolaescu <dann@ics.uci.edu>
12
13 * minibuf.c (history_delete_duplicates): New variable.
14 (read_minibuf): Use it.
15 (syms_of_minibuf): Create the corresponding lisp variable.
16
172004-09-08 Kim F. Storm <storm@cua.dk>
18
19 * xdisp.c (set_cursor_from_row): Also look at 'cursor' property in
20 overlay just before point.
21
222004-09-07 Luc Teirlinck <teirllm@auburn.edu>
23
24 * buffer.h (struct buffer): Add auto_save_file_format field.
25 * buffer.c (reset_buffer, init_buffer_once): Handle
26 auto_save_file_format field.
27 (syms_of_buffer): Add DEFVAR_PER_BUFFER for
28 `buffer-auto-save-file-format'.
29 * fileio.c: Delete declaration for removed Vauto_save_file_format.
30 (build_annotations): Adapt to replacement of
31 `auto-save-file-format' with the new buffer-local variable
32 `buffer-auto-save-file-format'.
33 (syms_of_fileio): Delete DEFVAR_LISP for auto-save-file-format.
34
352004-09-07 Jason Rumney <jasonr@gnu.org>
36
37 * w32term.h (AppendMenuW_Proc): Move declaration from w32menu.c.
38
39 * w32fns.c (w32_wnd_proc) [WM_MEASUREITEM, WM_DRAWITEM]: Handle
40 Unicode menu titles.
41
422004-09-07 Kim F. Storm <storm@cua.dk>
43
44 * xdisp.c (set_cursor_from_row): Fix last change. Only use 'cursor'
45 property from text property or overlay strings at point.
46
472004-09-07 Stefan <monnier@iro.umontreal.ca>
48
49 * xmenu.c (update_submenu_strings): YAILOM.
50 (set_frame_menubar): Make sure last_i is initialized.
51
12004-09-03 Jason Rumney <jasonr@gnu.org> 522004-09-03 Jason Rumney <jasonr@gnu.org>
2 53
3 * w32menu.c (_widget_value): Added lname and lkey. 54 * w32menu.c (_widget_value): Add lname and lkey.
4 (digest_single_submenu): Set lname and lkey in widget_value 55 (digest_single_submenu): Set lname and lkey in widget_value
5 instead of name and key. 56 instead of name and key.
6 (update_submenu_strings): New function. 57 (update_submenu_strings): New function.
@@ -12,7 +63,7 @@
12 UTF-8 if Unicode API is available. 63 UTF-8 if Unicode API is available.
13 (utf8to16): New function. 64 (utf8to16): New function.
14 (add_menu_item): Use it when calling Unicode API. 65 (add_menu_item): Use it when calling Unicode API.
15 66
162004-09-03 Kim F. Storm <storm@cua.dk> 672004-09-03 Kim F. Storm <storm@cua.dk>
17 68
18 * xdisp.c (set_cursor_from_row): Look for non-nil `cursor' property 69 * xdisp.c (set_cursor_from_row): Look for non-nil `cursor' property
@@ -22,14 +73,14 @@
222004-09-02 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 732004-09-02 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
23 74
24 * macfns.c (x_real_positions): Save the current window port and 75 * macfns.c (x_real_positions): Save the current window port and
25 set a new one before obtaining the global coordinate. Use 76 set a new one before obtaining the global coordinate.
26 FRAME_MAC_WINDOW. 77 Use FRAME_MAC_WINDOW.
27 (x_set_name, x_set_title): Encode title to UTF8. Use 78 (x_set_name, x_set_title): Encode title to UTF8.
28 SetWindowTitleWithCFString. 79 Use SetWindowTitleWithCFString.
29 (Fx_server_version): Get correct OS version. 80 (Fx_server_version): Get correct OS version.
30 81
31 * macmenu.c (add_menu_item): Remove unused variable `i'. Don't 82 * macmenu.c (add_menu_item): Remove unused variable `i'.
32 let separator items destroy refence constants of other menu items. 83 Don't let separator items destroy refence constants of other menu items.
33 84
34 * macterm.c (x_update_end): Move SetPortWindowPort to inside 85 * macterm.c (x_update_end): Move SetPortWindowPort to inside
35 BLOCK_INPUT. 86 BLOCK_INPUT.
@@ -40,8 +91,8 @@
40 91
41 * s/darwin.h (LIBS_CARBON): New define to specify libraries for 92 * s/darwin.h (LIBS_CARBON): New define to specify libraries for
42 Carbon support. 93 Carbon support.
43 (LD_SWITCH_SYSTEM_TEMACS): Don't link with unused libstdc++. Use 94 (LD_SWITCH_SYSTEM_TEMACS): Don't link with unused libstdc++.
44 LIBS_CARBON. 95 Use LIBS_CARBON.
45 96
462004-09-02 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 972004-09-02 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
47 98
@@ -56,7 +107,7 @@
56 107
572004-08-30 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 1082004-08-30 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
58 109
59 * macmenu.c (_widget_value): Added lname and lkey. 110 * macmenu.c (_widget_value): Add lname and lkey.
60 (single_submenu): Set lname and lkey in widget_value 111 (single_submenu): Set lname and lkey in widget_value
61 instead of name and key. 112 instead of name and key.
62 (update_submenu_strings): New function. 113 (update_submenu_strings): New function.
diff --git a/src/buffer.c b/src/buffer.c
index bade501b1a7..c70831e155f 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -694,6 +694,7 @@ reset_buffer (b)
694 b->mark_active = Qnil; 694 b->mark_active = Qnil;
695 b->point_before_scroll = Qnil; 695 b->point_before_scroll = Qnil;
696 b->file_format = Qnil; 696 b->file_format = Qnil;
697 b->auto_save_file_format = Qt;
697 b->last_selected_window = Qnil; 698 b->last_selected_window = Qnil;
698 XSETINT (b->display_count, 0); 699 XSETINT (b->display_count, 0);
699 b->display_time = Qnil; 700 b->display_time = Qnil;
@@ -4962,6 +4963,7 @@ init_buffer_once ()
4962 buffer_defaults.undo_list = Qnil; 4963 buffer_defaults.undo_list = Qnil;
4963 buffer_defaults.mark_active = Qnil; 4964 buffer_defaults.mark_active = Qnil;
4964 buffer_defaults.file_format = Qnil; 4965 buffer_defaults.file_format = Qnil;
4966 buffer_defaults.auto_save_file_format = Qt;
4965 buffer_defaults.overlays_before = NULL; 4967 buffer_defaults.overlays_before = NULL;
4966 buffer_defaults.overlays_after = NULL; 4968 buffer_defaults.overlays_after = NULL;
4967 buffer_defaults.overlay_center = BEG; 4969 buffer_defaults.overlay_center = BEG;
@@ -5020,6 +5022,7 @@ init_buffer_once ()
5020 XSETINT (buffer_local_flags.file_truename, -1); 5022 XSETINT (buffer_local_flags.file_truename, -1);
5021 XSETINT (buffer_local_flags.invisibility_spec, -1); 5023 XSETINT (buffer_local_flags.invisibility_spec, -1);
5022 XSETINT (buffer_local_flags.file_format, -1); 5024 XSETINT (buffer_local_flags.file_format, -1);
5025 XSETINT (buffer_local_flags.auto_save_file_format, -1);
5023 XSETINT (buffer_local_flags.display_count, -1); 5026 XSETINT (buffer_local_flags.display_count, -1);
5024 XSETINT (buffer_local_flags.display_time, -1); 5027 XSETINT (buffer_local_flags.display_time, -1);
5025 XSETINT (buffer_local_flags.enable_multibyte_characters, -1); 5028 XSETINT (buffer_local_flags.enable_multibyte_characters, -1);
@@ -5830,6 +5833,13 @@ functions; it should only affect their performance. */);
5830Formats are defined by `format-alist'. This variable is 5833Formats are defined by `format-alist'. This variable is
5831set when a file is visited. */); 5834set when a file is visited. */);
5832 5835
5836 DEFVAR_PER_BUFFER ("buffer-auto-save-file-format",
5837 &current_buffer->auto_save_file_format, Qnil,
5838 doc: /* *Format in which to write auto-save files.
5839Should be a list of symbols naming formats that are defined in `format-alist'.
5840If it is t, which is the default, auto-save files are written in the
5841same format as a regular save would use. */);
5842
5833 DEFVAR_PER_BUFFER ("buffer-invisibility-spec", 5843 DEFVAR_PER_BUFFER ("buffer-invisibility-spec",
5834 &current_buffer->invisibility_spec, Qnil, 5844 &current_buffer->invisibility_spec, Qnil,
5835 doc: /* Invisibility spec of this buffer. 5845 doc: /* Invisibility spec of this buffer.
diff --git a/src/buffer.h b/src/buffer.h
index e59211d4111..bcb293a2e85 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -666,6 +666,9 @@ struct buffer
666 /* List of symbols naming the file format used for visited file. */ 666 /* List of symbols naming the file format used for visited file. */
667 Lisp_Object file_format; 667 Lisp_Object file_format;
668 668
669 /* List of symbols naming the file format used for auto-save file. */
670 Lisp_Object auto_save_file_format;
671
669 /* True if the newline position cache and width run cache are 672 /* True if the newline position cache and width run cache are
670 enabled. See search.c and indent.c. */ 673 enabled. See search.c and indent.c. */
671 Lisp_Object cache_long_line_scans; 674 Lisp_Object cache_long_line_scans;
diff --git a/src/fileio.c b/src/fileio.c
index 707b6e96d86..e95205d7489 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -175,9 +175,6 @@ Lisp_Object Vdefault_file_name_coding_system;
175 whose I/O is done with a special handler. */ 175 whose I/O is done with a special handler. */
176Lisp_Object Vfile_name_handler_alist; 176Lisp_Object Vfile_name_handler_alist;
177 177
178/* Format for auto-save files */
179Lisp_Object Vauto_save_file_format;
180
181/* Lisp functions for translating file formats */ 178/* Lisp functions for translating file formats */
182Lisp_Object Qformat_decode, Qformat_annotate_function; 179Lisp_Object Qformat_decode, Qformat_annotate_function;
183 180
@@ -5374,8 +5371,8 @@ build_annotations (start, end)
5374 } 5371 }
5375 5372
5376 /* Now do the same for annotation functions implied by the file-format */ 5373 /* Now do the same for annotation functions implied by the file-format */
5377 if (auto_saving && (!EQ (Vauto_save_file_format, Qt))) 5374 if (auto_saving && (!EQ (current_buffer->auto_save_file_format, Qt)))
5378 p = Vauto_save_file_format; 5375 p = current_buffer->auto_save_file_format;
5379 else 5376 else
5380 p = current_buffer->file_format; 5377 p = current_buffer->file_format;
5381 for (i = 0; CONSP (p); p = XCDR (p), ++i) 5378 for (i = 0; CONSP (p); p = XCDR (p), ++i)
@@ -6493,13 +6490,6 @@ instead use `file-name-coding-system' to get a constant encoding
6493of file names regardless of the current language environment. */); 6490of file names regardless of the current language environment. */);
6494 Vdefault_file_name_coding_system = Qnil; 6491 Vdefault_file_name_coding_system = Qnil;
6495 6492
6496 DEFVAR_LISP ("auto-save-file-format", &Vauto_save_file_format,
6497 doc: /* *Format in which to write auto-save files.
6498Should be a list of symbols naming formats that are defined in `format-alist'.
6499If it is t, which is the default, auto-save files are written in the
6500same format as a regular save would use. */);
6501 Vauto_save_file_format = Qt;
6502
6503 Qformat_decode = intern ("format-decode"); 6493 Qformat_decode = intern ("format-decode");
6504 staticpro (&Qformat_decode); 6494 staticpro (&Qformat_decode);
6505 Qformat_annotate_function = intern ("format-annotate-function"); 6495 Qformat_annotate_function = intern ("format-annotate-function");
diff --git a/src/minibuf.c b/src/minibuf.c
index 3d2c6c3a475..a569daaefee 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -62,6 +62,10 @@ Lisp_Object Vcompletion_auto_help;
62 62
63Lisp_Object Qhistory_length, Vhistory_length; 63Lisp_Object Qhistory_length, Vhistory_length;
64 64
65/* No duplicates in history. */
66
67int history_delete_duplicates;
68
65/* Fread_minibuffer leaves the input here as a string. */ 69/* Fread_minibuffer leaves the input here as a string. */
66 70
67Lisp_Object last_minibuf_string; 71Lisp_Object last_minibuf_string;
@@ -754,6 +758,7 @@ read_minibuf (map, initial, prompt, backup_n, expflag,
754 { 758 {
755 Lisp_Object length; 759 Lisp_Object length;
756 760
761 if (history_delete_duplicates) Fdelete (histstring, histval);
757 histval = Fcons (histstring, histval); 762 histval = Fcons (histstring, histval);
758 Fset (Vminibuffer_history_variable, histval); 763 Fset (Vminibuffer_history_variable, histval);
759 764
@@ -2673,6 +2678,12 @@ just after a new element is inserted. Setting the history-length
2673property of a history variable overrides this default. */); 2678property of a history variable overrides this default. */);
2674 XSETFASTINT (Vhistory_length, 30); 2679 XSETFASTINT (Vhistory_length, 30);
2675 2680
2681 DEFVAR_BOOL ("history-delete-duplicates", &history_delete_duplicates,
2682 doc: /* *Non-nil means to delete duplicates in history.
2683If set to t when adding a new history element, all previous identical
2684elements are deleted. */);
2685 history_delete_duplicates = 0;
2686
2676 DEFVAR_LISP ("completion-auto-help", &Vcompletion_auto_help, 2687 DEFVAR_LISP ("completion-auto-help", &Vcompletion_auto_help,
2677 doc: /* *Non-nil means automatically provide help for invalid completion input. */); 2688 doc: /* *Non-nil means automatically provide help for invalid completion input. */);
2678 Vcompletion_auto_help = Qt; 2689 Vcompletion_auto_help = Qt;
diff --git a/src/w32fns.c b/src/w32fns.c
index e60385c8129..5cfc4adb0af 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -260,6 +260,7 @@ typedef BOOL (WINAPI * TrackMouseEvent_Proc)
260 260
261TrackMouseEvent_Proc track_mouse_event_fn = NULL; 261TrackMouseEvent_Proc track_mouse_event_fn = NULL;
262ClipboardSequence_Proc clipboard_sequence_fn = NULL; 262ClipboardSequence_Proc clipboard_sequence_fn = NULL;
263extern AppendMenuW_Proc unicode_append_menu;
263 264
264/* W95 mousewheel handler */ 265/* W95 mousewheel handler */
265unsigned int msh_mousewheel = 0; 266unsigned int msh_mousewheel = 0;
@@ -3457,7 +3458,13 @@ w32_wnd_proc (hwnd, msg, wParam, lParam)
3457 pMis->itemHeight = GetSystemMetrics (SM_CYMENUSIZE); 3458 pMis->itemHeight = GetSystemMetrics (SM_CYMENUSIZE);
3458 if (title) 3459 if (title)
3459 { 3460 {
3460 GetTextExtentPoint32 (hdc, title, strlen (title), &size); 3461 if (unicode_append_menu)
3462 GetTextExtentPoint32W (hdc, (WCHAR *) title,
3463 wcslen ((WCHAR *) title),
3464 &size);
3465 else
3466 GetTextExtentPoint32 (hdc, title, strlen (title), &size);
3467
3461 pMis->itemWidth = size.cx; 3468 pMis->itemWidth = size.cx;
3462 if (pMis->itemHeight < size.cy) 3469 if (pMis->itemHeight < size.cy)
3463 pMis->itemHeight = size.cy; 3470 pMis->itemHeight = size.cy;
@@ -3495,13 +3502,22 @@ w32_wnd_proc (hwnd, msg, wParam, lParam)
3495 menu_font = CreateFontIndirect (&menu_logfont); 3502 menu_font = CreateFontIndirect (&menu_logfont);
3496 old_font = SelectObject (hdc, menu_font); 3503 old_font = SelectObject (hdc, menu_font);
3497 3504
3498 /* Always draw title as if not selected. */ 3505 /* Always draw title as if not selected. */
3499 ExtTextOut (hdc, 3506 if (unicode_append_menu)
3500 pDis->rcItem.left 3507 ExtTextOutW (hdc,
3501 + GetSystemMetrics (SM_CXMENUCHECK), 3508 pDis->rcItem.left
3502 pDis->rcItem.top, 3509 + GetSystemMetrics (SM_CXMENUCHECK),
3503 ETO_OPAQUE, &pDis->rcItem, 3510 pDis->rcItem.top,
3504 title, strlen (title), NULL); 3511 ETO_OPAQUE, &pDis->rcItem,
3512 (WCHAR *) title,
3513 wcslen ((WCHAR *) title), NULL);
3514 else
3515 ExtTextOut (hdc,
3516 pDis->rcItem.left
3517 + GetSystemMetrics (SM_CXMENUCHECK),
3518 pDis->rcItem.top,
3519 ETO_OPAQUE, &pDis->rcItem,
3520 title, strlen (title), NULL);
3505 3521
3506 SelectObject (hdc, old_font); 3522 SelectObject (hdc, old_font);
3507 DeleteObject (menu_font); 3523 DeleteObject (menu_font);
diff --git a/src/w32menu.c b/src/w32menu.c
index f3f3eb785b0..4553895d829 100644
--- a/src/w32menu.c
+++ b/src/w32menu.c
@@ -143,11 +143,6 @@ typedef BOOL (WINAPI * SetMenuItemInfoA_Proc) (
143 IN UINT, 143 IN UINT,
144 IN BOOL, 144 IN BOOL,
145 IN LPCMENUITEMINFOA); 145 IN LPCMENUITEMINFOA);
146typedef BOOL (WINAPI * AppendMenuW_Proc) (
147 IN HMENU,
148 IN UINT,
149 IN UINT_PTR,
150 IN LPCWSTR);
151 146
152GetMenuItemInfoA_Proc get_menu_item_info = NULL; 147GetMenuItemInfoA_Proc get_menu_item_info = NULL;
153SetMenuItemInfoA_Proc set_menu_item_info = NULL; 148SetMenuItemInfoA_Proc set_menu_item_info = NULL;
diff --git a/src/w32term.h b/src/w32term.h
index 284458d4270..ca843ddbfb2 100644
--- a/src/w32term.h
+++ b/src/w32term.h
@@ -736,6 +736,11 @@ EXFUN (Fx_display_grayscale_p, 1);
736 ? BDF_1D_FONT : BDF_2D_FONT)) 736 ? BDF_1D_FONT : BDF_2D_FONT))
737 737
738typedef DWORD (WINAPI * ClipboardSequence_Proc) (); 738typedef DWORD (WINAPI * ClipboardSequence_Proc) ();
739typedef BOOL (WINAPI * AppendMenuW_Proc) (
740 IN HMENU,
741 IN UINT,
742 IN UINT_PTR,
743 IN LPCWSTR);
739 744
740/* arch-tag: f201d05a-1240-4fc5-8ea4-ca24d4ee5671 745/* arch-tag: f201d05a-1240-4fc5-8ea4-ca24d4ee5671
741 (do not change this comment) */ 746 (do not change this comment) */
diff --git a/src/window.c b/src/window.c
index 8a704bdc298..c64e8557b56 100644
--- a/src/window.c
+++ b/src/window.c
@@ -3059,7 +3059,9 @@ BUFFER can be a buffer or the name of an existing buffer.
3059Optional third arg KEEP-MARGINS non-nil means that WINDOW's current 3059Optional third arg KEEP-MARGINS non-nil means that WINDOW's current
3060display margins, fringe widths, and scroll bar settings are maintained; 3060display margins, fringe widths, and scroll bar settings are maintained;
3061the default is to reset these from BUFFER's local settings or the frame 3061the default is to reset these from BUFFER's local settings or the frame
3062defaults. */) 3062defaults.
3063
3064This function runs the hook `window-scroll-functions'. */)
3063 (window, buffer, keep_margins) 3065 (window, buffer, keep_margins)
3064 register Lisp_Object window, buffer, keep_margins; 3066 register Lisp_Object window, buffer, keep_margins;
3065{ 3067{
diff --git a/src/xdisp.c b/src/xdisp.c
index 6a12cb57551..9953e65d070 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -10655,6 +10655,7 @@ set_cursor_from_row (w, row, matrix, delta, delta_bytes, dy, dvpos)
10655 int string_before_pos; 10655 int string_before_pos;
10656 int x = row->x; 10656 int x = row->x;
10657 int cursor_x = x; 10657 int cursor_x = x;
10658 int cursor_from_overlay_pos = 0;
10658 int pt_old = PT - delta; 10659 int pt_old = PT - delta;
10659 10660
10660 /* Skip over glyphs not having an object at the start of the row. 10661 /* Skip over glyphs not having an object at the start of the row.
@@ -10680,6 +10681,12 @@ set_cursor_from_row (w, row, matrix, delta, delta_bytes, dy, dvpos)
10680 string_start = NULL; 10681 string_start = NULL;
10681 x += glyph->pixel_width; 10682 x += glyph->pixel_width;
10682 ++glyph; 10683 ++glyph;
10684 if (cursor_from_overlay_pos
10685 && last_pos > cursor_from_overlay_pos)
10686 {
10687 cursor_from_overlay_pos = 0;
10688 cursor = 0;
10689 }
10683 } 10690 }
10684 else 10691 else
10685 { 10692 {
@@ -10689,10 +10696,21 @@ set_cursor_from_row (w, row, matrix, delta, delta_bytes, dy, dvpos)
10689 /* Skip all glyphs from string. */ 10696 /* Skip all glyphs from string. */
10690 do 10697 do
10691 { 10698 {
10699 int pos;
10692 if ((cursor == NULL || glyph > cursor) 10700 if ((cursor == NULL || glyph > cursor)
10693 && !NILP (Fget_char_property (make_number ((glyph)->charpos), 10701 && !NILP (Fget_char_property (make_number ((glyph)->charpos),
10694 Qcursor, (glyph)->object))) 10702 Qcursor, (glyph)->object))
10703 && (pos = string_buffer_position (w, glyph->object,
10704 string_before_pos),
10705 (pos == 0 /* From overlay */
10706 || pos == pt_old)))
10695 { 10707 {
10708 /* Estimate overlay buffer position from the buffer
10709 positions of the glyphs before and after the overlay.
10710 Add 1 to last_pos so that if point corresponds to the
10711 glyph right after the overlay, we still use a 'cursor'
10712 property found in that overlay. */
10713 cursor_from_overlay_pos = pos == 0 ? last_pos+1 : 0;
10696 cursor = glyph; 10714 cursor = glyph;
10697 cursor_x = x; 10715 cursor_x = x;
10698 } 10716 }
@@ -15775,15 +15793,16 @@ store_mode_line_string (string, lisp_string, copy_string, field_width, precision
15775 15793
15776 15794
15777DEFUN ("format-mode-line", Fformat_mode_line, Sformat_mode_line, 15795DEFUN ("format-mode-line", Fformat_mode_line, Sformat_mode_line,
15778 0, 3, 0, 15796 0, 4, 0,
15779 doc: /* Return the mode-line of selected window as a string. 15797 doc: /* Return the mode-line of selected window as a string.
15780First optional arg FORMAT specifies a different format string (see 15798First optional arg FORMAT specifies a different format string (see
15781`mode-line-format' for details) to use. If FORMAT is t, return 15799`mode-line-format' for details) to use. If FORMAT is t, return
15782the buffer's header-line. Second optional arg WINDOW specifies a 15800the buffer's header-line. Second optional arg WINDOW specifies a
15783different window to use as the context for the formatting. 15801different window to use as the context for the formatting.
15784If third optional arg NO-PROPS is non-nil, string is not propertized. */) 15802If third optional arg NO-PROPS is non-nil, string is not propertized.
15785 (format, window, no_props) 15803Fourth optional arg BUFFER specifies which buffer to use. */)
15786 Lisp_Object format, window, no_props; 15804 (format, window, no_props, buffer)
15805 Lisp_Object format, window, no_props, buffer;
15787{ 15806{
15788 struct it it; 15807 struct it it;
15789 int len; 15808 int len;
@@ -15795,12 +15814,16 @@ If third optional arg NO-PROPS is non-nil, string is not propertized. */)
15795 window = selected_window; 15814 window = selected_window;
15796 CHECK_WINDOW (window); 15815 CHECK_WINDOW (window);
15797 w = XWINDOW (window); 15816 w = XWINDOW (window);
15798 CHECK_BUFFER (w->buffer);
15799 15817
15800 if (XBUFFER (w->buffer) != current_buffer) 15818 if (NILP (buffer))
15819 buffer = w->buffer;
15820
15821 CHECK_BUFFER (buffer);
15822
15823 if (XBUFFER (buffer) != current_buffer)
15801 { 15824 {
15802 old_buffer = current_buffer; 15825 old_buffer = current_buffer;
15803 set_buffer_internal_1 (XBUFFER (w->buffer)); 15826 set_buffer_internal_1 (XBUFFER (buffer));
15804 } 15827 }
15805 15828
15806 if (NILP (format) || EQ (format, Qt)) 15829 if (NILP (format) || EQ (format, Qt))
@@ -16103,7 +16126,10 @@ decode_mode_spec_coding (coding_system, buf, eol_flag)
16103 generated by character C. PRECISION >= 0 means don't return a 16126 generated by character C. PRECISION >= 0 means don't return a
16104 string longer than that value. FIELD_WIDTH > 0 means pad the 16127 string longer than that value. FIELD_WIDTH > 0 means pad the
16105 string returned with spaces to that value. Return 1 in *MULTIBYTE 16128 string returned with spaces to that value. Return 1 in *MULTIBYTE
16106 if the result is multibyte text. */ 16129 if the result is multibyte text.
16130
16131 Note we operate on the current buffer for most purposes,
16132 the exception being w->base_line_pos. */
16107 16133
16108static char lots_of_dashes[] = "--------------------------------------------------------------------------------------------------------------------------------------------"; 16134static char lots_of_dashes[] = "--------------------------------------------------------------------------------------------------------------------------------------------";
16109 16135
@@ -16117,7 +16143,7 @@ decode_mode_spec (w, c, field_width, precision, multibyte)
16117 Lisp_Object obj; 16143 Lisp_Object obj;
16118 struct frame *f = XFRAME (WINDOW_FRAME (w)); 16144 struct frame *f = XFRAME (WINDOW_FRAME (w));
16119 char *decode_mode_spec_buf = f->decode_mode_spec_buffer; 16145 char *decode_mode_spec_buf = f->decode_mode_spec_buffer;
16120 struct buffer *b = XBUFFER (w->buffer); 16146 struct buffer *b = current_buffer;
16121 16147
16122 obj = Qnil; 16148 obj = Qnil;
16123 *multibyte = 0; 16149 *multibyte = 0;
@@ -16419,7 +16445,7 @@ decode_mode_spec (w, c, field_width, precision, multibyte)
16419 16445
16420 case 's': 16446 case 's':
16421 /* status of process */ 16447 /* status of process */
16422 obj = Fget_buffer_process (w->buffer); 16448 obj = Fget_buffer_process (Fcurrent_buffer ());
16423 if (NILP (obj)) 16449 if (NILP (obj))
16424 return "no process"; 16450 return "no process";
16425#ifdef subprocesses 16451#ifdef subprocesses
diff --git a/src/xmenu.c b/src/xmenu.c
index aa963935262..5c3d5804355 100644
--- a/src/xmenu.c
+++ b/src/xmenu.c
@@ -1,5 +1,5 @@
1/* X Communication module for terminals which understand the X protocol. 1/* X Communication module for terminals which understand the X protocol.
2 Copyright (C) 1986, 88, 93, 94, 96, 99, 2000, 2001, 2003 2 Copyright (C) 1986, 1988, 1993, 1994, 1996, 1999, 2000, 2001, 2003, 2004
3 Free Software Foundation, Inc. 3 Free Software Foundation, Inc.
4 4
5This file is part of GNU Emacs. 5This file is part of GNU Emacs.
@@ -1801,7 +1801,7 @@ update_submenu_strings (first_wv)
1801 1801
1802 for (wv = first_wv; wv; wv = wv->next) 1802 for (wv = first_wv; wv; wv = wv->next)
1803 { 1803 {
1804 if (wv->lname && ! NILP (wv->lname)) 1804 if (STRINGP (wv->lname))
1805 { 1805 {
1806 wv->name = SDATA (wv->lname); 1806 wv->name = SDATA (wv->lname);
1807 1807
@@ -1815,7 +1815,7 @@ update_submenu_strings (first_wv)
1815 } 1815 }
1816 } 1816 }
1817 1817
1818 if (wv->lkey && ! NILP (wv->lkey)) 1818 if (STRINGP (wv->lkey))
1819 wv->key = SDATA (wv->lkey); 1819 wv->key = SDATA (wv->lkey);
1820 1820
1821 if (wv->contents) 1821 if (wv->contents)
@@ -1888,7 +1888,7 @@ set_frame_menubar (f, first_time, deep_p)
1888#endif 1888#endif
1889 Lisp_Object items; 1889 Lisp_Object items;
1890 widget_value *wv, *first_wv, *prev_wv = 0; 1890 widget_value *wv, *first_wv, *prev_wv = 0;
1891 int i, last_i; 1891 int i, last_i = 0;
1892 int *submenu_start, *submenu_end; 1892 int *submenu_start, *submenu_end;
1893 int *submenu_top_level_items, *submenu_n_panes; 1893 int *submenu_top_level_items, *submenu_n_panes;
1894 1894