aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert2011-03-01 17:52:03 -0800
committerPaul Eggert2011-03-01 17:52:03 -0800
commitba46f4d85a6938273f52a8cdf7e09d9afee61d7f (patch)
tree606ec46b703532d463ccddf287f0053430eb1f4a
parentd9d0d182da35312ed0d7a9859b9c6a03994d86d8 (diff)
parent0dc3e4109e0c41bbf5fdcae0ff1156162719693e (diff)
downloademacs-ba46f4d85a6938273f52a8cdf7e09d9afee61d7f.tar.gz
emacs-ba46f4d85a6938273f52a8cdf7e09d9afee61d7f.zip
Merge from mainline.
-rw-r--r--ChangeLog14
-rw-r--r--INSTALL.BZR4
-rw-r--r--admin/notes/bzr2
-rw-r--r--config.bat9
-rw-r--r--doc/emacs/ChangeLog17
-rw-r--r--doc/emacs/custom.texi9
-rw-r--r--doc/emacs/maintaining.texi19
-rw-r--r--doc/emacs/search.texi6
-rw-r--r--doc/lispref/ChangeLog15
-rw-r--r--doc/lispref/minibuf.texi23
-rw-r--r--doc/lispref/variables.texi24
-rw-r--r--doc/misc/ChangeLog9
-rw-r--r--doc/misc/dbus.texi4
-rw-r--r--doc/misc/semantic.texi2
-rw-r--r--doc/misc/tramp.texi4
-rw-r--r--etc/NEWS7
-rw-r--r--etc/NEWS.232
-rw-r--r--leim/ChangeLog11
-rw-r--r--leim/ja-dic/ja-dic.el5
-rw-r--r--leim/quail/cyrillic.el2
-rw-r--r--leim/quail/ethiopic.el2
-rw-r--r--lib-src/ChangeLog54
-rw-r--r--lib-src/Makefile.in2
-rw-r--r--lib-src/ebrowse.c71
-rw-r--r--lib-src/emacsclient.c117
-rw-r--r--lib-src/etags.c2
-rw-r--r--lib-src/fakemail.c13
-rw-r--r--lib-src/make-docfile.c15
-rw-r--r--lisp/ChangeLog385
-rw-r--r--lisp/ChangeLog.102
-rw-r--r--lisp/ChangeLog.129
-rw-r--r--lisp/ChangeLog.310
-rw-r--r--lisp/allout.el8
-rw-r--r--lisp/calc/calc-ext.el2
-rw-r--r--lisp/calc/calc-math.el2
-rw-r--r--lisp/calc/calc-vec.el13
-rw-r--r--lisp/calendar/cal-hebrew.el47
-rw-r--r--lisp/cedet/semantic/analyze.el2
-rw-r--r--lisp/cedet/semantic/complete.el2
-rw-r--r--lisp/cedet/semantic/edit.el4
-rw-r--r--lisp/cedet/semantic/format.el2
-rw-r--r--lisp/cedet/semantic/java.el2
-rw-r--r--lisp/dired-aux.el6
-rw-r--r--lisp/dired-x.el115
-rw-r--r--lisp/dired.el14
-rw-r--r--lisp/emacs-lisp/assoc.el10
-rw-r--r--lisp/emacs-lisp/cl-loaddefs.el4
-rw-r--r--lisp/emacs-lisp/cl-macs.el2
-rw-r--r--lisp/emacs-lisp/package-x.el89
-rw-r--r--lisp/emacs-lisp/pcase.el111
-rw-r--r--lisp/emulation/viper-cmd.el2
-rw-r--r--lisp/erc/ChangeLog.016
-rw-r--r--lisp/facemenu.el24
-rw-r--r--lisp/files.el18
-rw-r--r--lisp/gnus/ChangeLog68
-rw-r--r--lisp/gnus/auth-source.el150
-rw-r--r--lisp/gnus/gnus-agent.el14
-rw-r--r--lisp/gnus/gnus-art.el34
-rw-r--r--lisp/gnus/gnus-demon.el2
-rw-r--r--lisp/gnus/gnus-gravatar.el3
-rw-r--r--lisp/gnus/gnus-group.el15
-rw-r--r--lisp/gnus/gnus-range.el8
-rw-r--r--lisp/gnus/gnus-start.el27
-rw-r--r--lisp/gnus/gnus.el4
-rw-r--r--lisp/gnus/nnimap.el13
-rw-r--r--lisp/gnus/nntp.el2
-rw-r--r--lisp/gnus/sieve.el103
-rw-r--r--lisp/ido.el8
-rw-r--r--lisp/international/mule-cmds.el4
-rw-r--r--lisp/mail/rmail.el4
-rw-r--r--lisp/net/tramp-cmds.el6
-rw-r--r--lisp/net/tramp-gvfs.el2
-rw-r--r--lisp/obsolete/sym-comp.el2
-rw-r--r--lisp/org/ChangeLog11
-rw-r--r--lisp/password-cache.el6
-rw-r--r--lisp/progmodes/cperl-mode.el16
-rw-r--r--lisp/progmodes/idlwave.el4
-rw-r--r--lisp/progmodes/vhdl-mode.el8
-rw-r--r--lisp/replace.el2
-rw-r--r--lisp/term/screen.el11
-rw-r--r--lisp/textmodes/paragraphs.el2
-rw-r--r--msdos/ChangeLog33
-rw-r--r--msdos/depfiles.bat2
-rw-r--r--msdos/sed2v2.inp17
-rw-r--r--msdos/sedlibmk.inp67
-rw-r--r--nt/ChangeLog8
-rw-r--r--nt/config.nt3
-rw-r--r--nt/inc/unistd.h8
-rw-r--r--src/ChangeLog52
-rw-r--r--src/ChangeLog.104
-rw-r--r--src/ChangeLog.36
-rw-r--r--src/character.c2
-rw-r--r--src/dired.c6
-rw-r--r--src/dispextern.h2
-rw-r--r--src/dispnew.c126
-rw-r--r--src/editfns.c2
-rw-r--r--src/frame.c24
-rw-r--r--src/frame.h8
-rw-r--r--src/keymap.c2
-rw-r--r--src/msdos.c15
-rw-r--r--src/msdos.h5
-rw-r--r--src/s/msdos.h6
-rw-r--r--src/scroll.c5
-rw-r--r--src/w32.c19
-rw-r--r--src/w32proc.c2
-rw-r--r--src/w32term.c2
106 files changed, 1493 insertions, 817 deletions
diff --git a/ChangeLog b/ChangeLog
index 8f439f369d7..30262b6c5bc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
12011-02-26 Eli Zaretskii <eliz@gnu.org>
2
3 * .bzrignore: Ignore new lib/*.in-h files.
4
5 * config.bat: Rename stdint.in.h and sys_stat.in.h. Call
6 depfiles.bat even if lib/deps already exist.
7
12011-02-25 Paul Eggert <eggert@cs.ucla.edu> 82011-02-25 Paul Eggert <eggert@cs.ucla.edu>
2 9
3 Simplify symlink portability workaround. 10 Simplify symlink portability workaround.
@@ -7,7 +14,8 @@
7 * lib/dosname.h: New file, regenerated from gnulib. 14 * lib/dosname.h: New file, regenerated from gnulib.
8 15
9 * configure, lib/Makefile.in, lib/getopt_int.h, lib/gnulib.mk: 16 * configure, lib/Makefile.in, lib/getopt_int.h, lib/gnulib.mk:
10 * lib/stdlib.in.h, m4/stdlib_h.m4: Regenerate. 17 * lib/stdlib.in.h, m4/stdlib_h.m4: Regenerate to incorporate
18 recent changes to configure.in and to gnulib.
11 19
122011-02-24 Glenn Morris <rgm@gnu.org> 202011-02-24 Glenn Morris <rgm@gnu.org>
13 21
@@ -7643,7 +7651,7 @@
7643 7651
7644 * Makefile.in (lib-src/Makefile, src/Makefile, oldXMenu/Makefile): 7652 * Makefile.in (lib-src/Makefile, src/Makefile, oldXMenu/Makefile):
7645 Depend on vpath.sed. 7653 Depend on vpath.sed.
7646 Replace sed comand for VPATH with @vpath_sed@. 7654 Replace sed command for VPATH with @vpath_sed@.
7647 7655
7648 * configure.in: Substitute variable `vpath_sed'. 7656 * configure.in: Substitute variable `vpath_sed'.
7649 If not in $srcdir and $srcdir is configured, 7657 If not in $srcdir and $srcdir is configured,
@@ -8984,7 +8992,7 @@
8984 there, and then copy it in, to make sure we get a real file. 8992 there, and then copy it in, to make sure we get a real file.
8985 8993
8986 * make-dist: Don't try to distribute *.defns files any more. The 8994 * make-dist: Don't try to distribute *.defns files any more. The
8987 only such file was for simula.el, which has been superceded by a 8995 only such file was for simula.el, which has been superseded by a
8988 version which doesn't have a separate .defns file. 8996 version which doesn't have a separate .defns file.
8989 8997
89901992-05-28 Ken Raeburn (Raeburn@Cygnus.COM) 89981992-05-28 Ken Raeburn (Raeburn@Cygnus.COM)
diff --git a/INSTALL.BZR b/INSTALL.BZR
index c5e1e62a32d..710a73c7048 100644
--- a/INSTALL.BZR
+++ b/INSTALL.BZR
@@ -9,6 +9,10 @@ before bootstrapping:
9 9
10 $ ./configure 10 $ ./configure
11 11
12(Normally there is no need to run `autoconf' etc. If you do need it,
13the relevant command is `autoreconf -I m4'. Be aware that this will
14likely lead to conflicts next time you update from Bazaar.)
15
12Some of the files that are included in the Emacs tarball, such as 16Some of the files that are included in the Emacs tarball, such as
13byte-compiled Lisp files, are not stored in Bazaar. Therefore, to 17byte-compiled Lisp files, are not stored in Bazaar. Therefore, to
14build from Bazaar you must run "make bootstrap" instead of just "make": 18build from Bazaar you must run "make bootstrap" instead of just "make":
diff --git a/admin/notes/bzr b/admin/notes/bzr
index 14a5c92a454..db9e6e0dcda 100644
--- a/admin/notes/bzr
+++ b/admin/notes/bzr
@@ -81,6 +81,8 @@ this in the same commit as making new entries. Using this plugin
81will merge ALL changed entries (including older ones) to the top of 81will merge ALL changed entries (including older ones) to the top of
82the destination file. 82the destination file.
83 83
84Maybe the default Emacs behavior without this plugin is better, I dunno.
85
841) Get clean, up-to-date copies of the emacs-23 and trunk branches. 861) Get clean, up-to-date copies of the emacs-23 and trunk branches.
85Check for any uncommitted changes with bzr status. 87Check for any uncommitted changes with bzr status.
86 88
diff --git a/config.bat b/config.bat
index 7ebfc74b801..4288f6537e6 100644
--- a/config.bat
+++ b/config.bat
@@ -280,17 +280,20 @@ cd lib
280Rem Rename files like djtar on plain DOS filesystem would. 280Rem Rename files like djtar on plain DOS filesystem would.
281If Exist c++defs.h update c++defs.h cxxdefs.h 281If Exist c++defs.h update c++defs.h cxxdefs.h
282If Exist getopt.in.h update getopt.in.h getopt.in-h 282If Exist getopt.in.h update getopt.in.h getopt.in-h
283If Exist stddef.in.h update stddef.in.h stddef.in-h
284If Exist stdbool.in.h update stdbool.in.h stdbool.in-h 283If Exist stdbool.in.h update stdbool.in.h stdbool.in-h
284If Exist stddef.in.h update stddef.in.h stddef.in-h
285If Exist stdint.in.h update stdint.in.h stdint.in-h
285If Exist stdlib.in.h update stdlib.in.h stdlib.in-h 286If Exist stdlib.in.h update stdlib.in.h stdlib.in-h
287If Exist sys_stat.in.h update sys_stat.in.h sys_stat.in-h
286If Exist time.in.h update time.in.h time.in-h 288If Exist time.in.h update time.in.h time.in-h
287If Exist unistd.in.h update unistd.in.h unistd.in-h 289If Exist unistd.in.h update unistd.in.h unistd.in-h
288sed -f ../msdos/sedlibcf.inp < Makefile.in > makefile.tmp 290sed -f ../msdos/sedlibcf.inp < Makefile.in > makefile.tmp
289sed -f ../msdos/sedlibmk.inp < makefile.tmp > Makefile 291sed -f ../msdos/sedlibmk.inp < makefile.tmp > Makefile
290rm -f makefile.tmp 292rm -f makefile.tmp
293Rem Create .Po files for new files in lib/
291If Not Exist deps\stamp mkdir deps 294If Not Exist deps\stamp mkdir deps
292If Not Exist deps\stamp for %%f in (*.c) do @call ..\msdos\depfiles.bat %%f 295for %%f in (*.c) do @call ..\msdos\depfiles.bat %%f
293If Not Exist deps\stamp echo deps-stamp > deps\stamp 296echo deps-stamp > deps\stamp
294cd .. 297cd ..
295rem ---------------------------------------------------------------------- 298rem ----------------------------------------------------------------------
296Echo Configuring the lisp directory... 299Echo Configuring the lisp directory...
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index f113a7987c1..8438fa4952c 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,20 @@
12011-03-01 Christoph Scholtes <cschol2112@googlemail.com>
2
3 * maintaining.texi (Format of ChangeLog): Add reference to
4 add-log-full-name.
5 (Change Log Commands): Add documentation for combining multiple
6 symbols in one change.
7
82011-03-01 Glenn Morris <rgm@gnu.org>
9
10 * custom.texi (Directory Variables):
11 Give an example of excluding subdirectories.
12
132011-02-28 Eli Zaretskii <eliz@gnu.org>
14
15 * search.texi (Regexp Search): Move index entries about regexps to the
16 "Regexps" node. Add index entries for regexp search. (Bug#8096)
17
12011-02-19 Glenn Morris <rgm@gnu.org> 182011-02-19 Glenn Morris <rgm@gnu.org>
2 19
3 * dired.texi (Dired): Dired-X version number was dropped. 20 * dired.texi (Dired): Dired-X version number was dropped.
diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi
index dfd55b13f18..9304e8bef08 100644
--- a/doc/emacs/custom.texi
+++ b/doc/emacs/custom.texi
@@ -1331,7 +1331,8 @@ corresponding alist applies to all the files in that subdirectory.
1331 (tab-width . 4) 1331 (tab-width . 4)
1332 (fill-column . 80))) 1332 (fill-column . 80)))
1333 (c-mode . ((c-file-style . "BSD"))) 1333 (c-mode . ((c-file-style . "BSD")))
1334 (java-mode . ((c-file-style . "BSD"))) 1334 (java-mode . ((c-file-style . "BSD")
1335 (subdirs . nil)))
1335 ("src/imported" 1336 ("src/imported"
1336 . ((nil . ((change-log-default-name . "ChangeLog.local")))))) 1337 . ((nil . ((change-log-default-name . "ChangeLog.local"))))))
1337@end example 1338@end example
@@ -1340,8 +1341,10 @@ corresponding alist applies to all the files in that subdirectory.
1340This example shows some settings for a hypothetical project. It sets 1341This example shows some settings for a hypothetical project. It sets
1341@samp{indent-tabs-mode}, @code{tab-width}, and @code{fill-column} for 1342@samp{indent-tabs-mode}, @code{tab-width}, and @code{fill-column} for
1342any file in the project's directory tree, and it sets the indentation 1343any file in the project's directory tree, and it sets the indentation
1343style for any C or Java source file. Finally, it specifies a different 1344style for any C or Java source file. The special @code{subdirs} element
1344@file{ChangeLog} file name for any file in the @file{src/imported} 1345indicates that the Java mode settings are only to be applied in the
1346current directory, not in any subdirectories. Finally, it specifies a
1347different @file{ChangeLog} file name for any file in the @file{src/imported}
1345subdirectory of the directory where you put the @file{.dir-locals.el} 1348subdirectory of the directory where you put the @file{.dir-locals.el}
1346file. 1349file.
1347 1350
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index 60c569596ea..d311104ddd7 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -1486,6 +1486,10 @@ changed.
1486non-@code{nil}, @kbd{C-x 4 a} adds to any existing item for the file 1486non-@code{nil}, @kbd{C-x 4 a} adds to any existing item for the file
1487rather than starting a new item. 1487rather than starting a new item.
1488 1488
1489You can combine multiple changes of the same nature. If you don't
1490enter any text after the initial @kbd{C-x 4 a}, any subsequent
1491@kbd{C-x 4 a} adds another symbol to the change.
1492
1489@vindex add-log-always-start-new-record 1493@vindex add-log-always-start-new-record
1490 If @code{add-log-always-start-new-record} is non-@code{nil}, 1494 If @code{add-log-always-start-new-record} is non-@code{nil},
1491@kbd{C-x 4 a} always makes a new entry, even if the last entry 1495@kbd{C-x 4 a} always makes a new entry, even if the last entry
@@ -1535,13 +1539,14 @@ insert a VC log entry into a Change Log buffer by typing @kbd{C-x v a}
1535@node Format of ChangeLog 1539@node Format of ChangeLog
1536@subsection Format of ChangeLog 1540@subsection Format of ChangeLog
1537 1541
1538 A change log entry starts with a header line that contains the current 1542 A change log entry starts with a header line that contains the
1539date, your name, and your email address (taken from the variable 1543current date, your name (taken from the variable
1540@code{add-log-mailing-address}). Aside from these header lines, every 1544@code{add-log-full-name}), and your email address (taken from the
1541line in the change log starts with a space or a tab. The bulk of the 1545variable @code{add-log-mailing-address}). Aside from these header
1542entry consists of @dfn{items}, each of which starts with a line starting 1546lines, every line in the change log starts with a space or a tab. The
1543with whitespace and a star. Here are two entries, both dated in May 1547bulk of the entry consists of @dfn{items}, each of which starts with a
15441993, with two items and one item respectively. 1548line starting with whitespace and a star. Here are two entries, both
1549dated in May 1993, with two items and one item respectively.
1545 1550
1546@iftex 1551@iftex
1547@medbreak 1552@medbreak
diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi
index df0579ab9ea..e3c0445e189 100644
--- a/doc/emacs/search.texi
+++ b/doc/emacs/search.texi
@@ -468,8 +468,8 @@ apply to the lazy highlight, which always matches whole words.
468 468
469@node Regexp Search 469@node Regexp Search
470@section Regular Expression Search 470@section Regular Expression Search
471@cindex regular expression 471@cindex regexp search
472@cindex regexp 472@cindex search for a regular expression
473 473
474 A @dfn{regular expression} (or @dfn{regexp} for short) is a pattern 474 A @dfn{regular expression} (or @dfn{regexp} for short) is a pattern
475that denotes a class of alternative strings to match. GNU Emacs 475that denotes a class of alternative strings to match. GNU Emacs
@@ -543,6 +543,8 @@ Search}.
543@node Regexps 543@node Regexps
544@section Syntax of Regular Expressions 544@section Syntax of Regular Expressions
545@cindex syntax of regexps 545@cindex syntax of regexps
546@cindex regular expression
547@cindex regexp
546 548
547 This manual describes regular expression features that users 549 This manual describes regular expression features that users
548typically use. @xref{Regular Expressions,,, elisp, The Emacs Lisp 550typically use. @xref{Regular Expressions,,, elisp, The Emacs Lisp
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 90eed004d39..1a980f14f3d 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,18 @@
12011-03-01 Glenn Morris <rgm@gnu.org>
2
3 * variables.texi (Directory Local Variables):
4 Mention `(subdirs . nil)' alist element.
5
62011-02-28 Glenn Morris <rgm@gnu.org>
7
8 * variables.texi (Directory Local Variables): Mention the optional
9 mtime argument of dir-locals-set-directory-class. (Bug#3577)
10
112011-02-27 Chong Yidong <cyd@stupidchicken.com>
12
13 * minibuf.texi (Minibuffer History): Clarify discussion of
14 minibuffer history lists (Bug#8085).
15
12011-02-19 Eli Zaretskii <eliz@gnu.org> 162011-02-19 Eli Zaretskii <eliz@gnu.org>
2 17
3 * elisp.texi: Sync @dircategory with ../../info/dir. 18 * elisp.texi: Sync @dircategory with ../../info/dir.
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index 50324a91f5f..07975e64b35 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -433,18 +433,17 @@ expression, thus moving point forward one word.
433@cindex minibuffer history 433@cindex minibuffer history
434@cindex history list 434@cindex history list
435 435
436 A @dfn{minibuffer history list} records previous minibuffer inputs so 436 A @dfn{minibuffer history list} records previous minibuffer inputs
437the user can reuse them conveniently. A history list is actually a 437so the user can reuse them conveniently. It is a variable whose value
438symbol, not a list; it is a variable whose value is a list of strings 438is a list of strings (previous inputs), most recent first.
439(previous inputs), most recent first. 439
440 440 There are many separate minibuffer history lists, used for different
441 There are many separate history lists, used for different kinds of 441kinds of inputs. It's the Lisp programmer's job to specify the right
442inputs. It's the Lisp programmer's job to specify the right history 442history list for each use of the minibuffer.
443list for each use of the minibuffer. 443
444 444 You specify a minibuffer history list with the optional @var{hist}
445 You specify the history list with the optional @var{hist} argument 445argument to @code{read-from-minibuffer} or @code{completing-read}.
446to either @code{read-from-minibuffer} or @code{completing-read}. Here 446Here are the possible values for it:
447are the possible values for it:
448 447
449@table @asis 448@table @asis
450@item @var{variable} 449@item @var{variable}
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index 0cdcaa84d58..a68b2b6dd4e 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1718,7 +1718,8 @@ directory-local variables. The name of the file is
1718The MS-DOS version of Emacs uses @file{_dir-locals.el} instead, due to 1718The MS-DOS version of Emacs uses @file{_dir-locals.el} instead, due to
1719limitations of the DOS filesystems. 1719limitations of the DOS filesystems.
1720}. A file by that name in a directory causes Emacs to apply its 1720}. A file by that name in a directory causes Emacs to apply its
1721settings to any file in that directory or any of its subdirectories. 1721settings to any file in that directory or any of its subdirectories
1722(optionally, you can exclude subdirectories; see below).
1722If some of the subdirectories have their own @file{.dir-locals.el} 1723If some of the subdirectories have their own @file{.dir-locals.el}
1723files, Emacs uses the settings from the deepest file it finds starting 1724files, Emacs uses the settings from the deepest file it finds starting
1724from the file's directory and moving up the directory tree. The file 1725from the file's directory and moving up the directory tree. The file
@@ -1749,7 +1750,10 @@ file's buffer turns on a mode that is derived from @var{major-mode},
1749then the all the variables in the associated @var{alist} are applied; 1750then the all the variables in the associated @var{alist} are applied;
1750@var{alist} should be of the form @code{(@var{name} . @var{value})}. 1751@var{alist} should be of the form @code{(@var{name} . @var{value})}.
1751A special value @code{nil} for @var{major-mode} means the settings are 1752A special value @code{nil} for @var{major-mode} means the settings are
1752applicable to any mode. 1753applicable to any mode. In @var{alist}, you can use a special
1754@var{name}: @code{subdirs}. If the associated value is
1755@code{nil}, the alist is only applied to files in the relevant
1756directory, not to those in any subdirectories.
1753 1757
1754With the second form of @var{variables}, if @var{directory} is the 1758With the second form of @var{variables}, if @var{directory} is the
1755initial substring of the file's directory, then @var{list} is applied 1759initial substring of the file's directory, then @var{list} is applied
@@ -1757,12 +1761,19 @@ recursively by following the above rules; @var{list} should be of one
1757of the two forms accepted by this function in @var{variables}. 1761of the two forms accepted by this function in @var{variables}.
1758@end defun 1762@end defun
1759 1763
1760@defun dir-locals-set-directory-class directory class 1764@defun dir-locals-set-directory-class directory class &optional mtime
1761This function assigns @var{class} to all the files in @code{directory} 1765This function assigns @var{class} to all the files in @code{directory}
1762and its subdirectories. Thereafter, all the variable settings 1766and its subdirectories. Thereafter, all the variable settings
1763specified for @var{class} will be applied to any visited file in 1767specified for @var{class} will be applied to any visited file in
1764@var{directory} and its children. @var{class} must have been already 1768@var{directory} and its children. @var{class} must have been already
1765defined by @code{dir-locals-set-class-variables} 1769defined by @code{dir-locals-set-class-variables}.
1770
1771Emacs uses this function internally when it loads directory variables
1772from a @code{.dir-locals.el} file. In that case, the optional
1773argument @var{mtime} holds the file modification time (as returned by
1774@code{file-attributes}). Emacs uses this time to check stored
1775local variables are still valid. If you are assigning a class
1776directly, not via a file, this argument should be @code{nil}.
1766@end defun 1777@end defun
1767 1778
1768@defvar dir-locals-class-alist 1779@defvar dir-locals-class-alist
@@ -1772,8 +1783,9 @@ settings. It is updated by @code{dir-locals-set-class-variables}.
1772 1783
1773@defvar dir-locals-directory-cache 1784@defvar dir-locals-directory-cache
1774This alist holds directory names, their assigned class names, and 1785This alist holds directory names, their assigned class names, and
1775modification times of the associated directory local variables file. 1786modification times of the associated directory local variables file
1776It is updated by @code{dir-locals-set-directory-class}. 1787(if there is one). The function @code{dir-locals-set-directory-class}
1788updates this list.
1777@end defvar 1789@end defvar
1778 1790
1779@node Frame-Local Variables 1791@node Frame-Local Variables
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 6f4f86978da..2ce67bad6cb 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,12 @@
12011-02-28 Michael Albinus <michael.albinus@gmx.de>
2
3 * tramp.texi (Frequently Asked Questions): Add Emacs 24 to
4 supported systems.
5
62011-02-28 Glenn Morris <rgm@gnu.org>
7
8 * dbus.texi (Type Conversion): Grammar fix.
9
12011-02-23 Michael Albinus <michael.albinus@gmx.de> 102011-02-23 Michael Albinus <michael.albinus@gmx.de>
2 11
3 * tramp.texi: Use consistently "Emacs" (instead of "GNU Emacs") and 12 * tramp.texi: Use consistently "Emacs" (instead of "GNU Emacs") and
diff --git a/doc/misc/dbus.texi b/doc/misc/dbus.texi
index ad202f963aa..e6fb00d3482 100644
--- a/doc/misc/dbus.texi
+++ b/doc/misc/dbus.texi
@@ -893,10 +893,10 @@ applied, when the corresponding D-Bus message is created:
893@end example 893@end example
894 894
895Other Lisp objects, like symbols or hash tables, are not accepted as 895Other Lisp objects, like symbols or hash tables, are not accepted as
896input parameter. 896input parameters.
897 897
898If it is necessary to use another D-Bus type, a corresponding type 898If it is necessary to use another D-Bus type, a corresponding type
899symbol can be preceeded to the corresponding Lisp object. Basic D-Bus 899symbol can be prepended to the corresponding Lisp object. Basic D-Bus
900types are represented by the type symbols @code{:byte}, 900types are represented by the type symbols @code{:byte},
901@code{:boolean}, @code{:int16}, @code{:uint16}, @code{:int32}, 901@code{:boolean}, @code{:int16}, @code{:uint16}, @code{:int32},
902@code{:uint32}, @code{:int64}, @code{:uint64}, @code{:double}, 902@code{:uint32}, @code{:int64}, @code{:uint64}, @code{:double},
diff --git a/doc/misc/semantic.texi b/doc/misc/semantic.texi
index 52434f4a6e4..f3f11d29f17 100644
--- a/doc/misc/semantic.texi
+++ b/doc/misc/semantic.texi
@@ -64,7 +64,7 @@ developing GNU and promoting software freedom.''
64@macro obsolete{old,new} 64@macro obsolete{old,new}
65@sp 1 65@sp 1
66@strong{Compatibility}: 66@strong{Compatibility}:
67@code{\new\} introduced in @semantic{} version 2.0 supercedes 67@code{\new\} introduced in @semantic{} version 2.0 supersedes
68@code{\old\} which is now obsolete. 68@code{\old\} which is now obsolete.
69@end macro 69@end macro
70 70
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 8bcce244f9d..bdbba437af7 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -2740,8 +2740,8 @@ There is also a Savannah project page.
2740@item 2740@item
2741Which systems does it work on? 2741Which systems does it work on?
2742 2742
2743The package has been used successfully on Emacs 22, Emacs 23, XEmacs 2743The package has been used successfully on Emacs 22, Emacs 23, Emacs
274421 (starting with 21.4), and SXEmacs 22. 274424, XEmacs 21 (starting with 21.4), and SXEmacs 22.
2745 2745
2746The package was intended to work on Unix, and it really expects a 2746The package was intended to work on Unix, and it really expects a
2747Unix-like system on the remote end (except the @option{smb} method), 2747Unix-like system on the remote end (except the @option{smb} method),
diff --git a/etc/NEWS b/etc/NEWS
index cfb788940d0..7be8d4fb34b 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -353,6 +353,11 @@ Just set shell-dir-cookie-re to an appropriate regexp.
353will turn on `whitespace-mode' for *vc-diff* buffers. Modes should 353will turn on `whitespace-mode' for *vc-diff* buffers. Modes should
354call `hack-dir-local-variables-non-file-buffer' to support this. 354call `hack-dir-local-variables-non-file-buffer' to support this.
355 355
356+++
357** You can prevent directory local variables from applying to subdirectories.
358Add an element (subdirs . nil) to the alist portion of any variables
359settings to indicate said section should not be applied to subdirectories.
360
356** ERC changes 361** ERC changes
357 362
358*** New vars `erc-autojoin-timing' and `erc-autojoin-delay'. 363*** New vars `erc-autojoin-timing' and `erc-autojoin-delay'.
@@ -386,6 +391,8 @@ You can get a comparable behavior with:
386 391
387** Calendar, Diary, and Appt 392** Calendar, Diary, and Appt
388 393
394*** New function `diary-hebrew-birthday'.
395
389--- 396---
390*** The obsolete (since Emacs 22.1) method of enabling the appt package 397*** The obsolete (since Emacs 22.1) method of enabling the appt package
391by adding appt-make-list to diary-hook has been removed. Use appt-activate. 398by adding appt-make-list to diary-hook has been removed. Use appt-activate.
diff --git a/etc/NEWS.23 b/etc/NEWS.23
index 6b6cbe48328..181548e98d6 100644
--- a/etc/NEWS.23
+++ b/etc/NEWS.23
@@ -1746,7 +1746,7 @@ directories in which `ffap-rfc' will first search for RFCs.
1746*** hide-ifdef-mode allows shadowing ifdef-blocks instead of hiding them. 1746*** hide-ifdef-mode allows shadowing ifdef-blocks instead of hiding them.
1747See option `hide-ifdef-shadow' and function `hide-ifdef-toggle-shadowing'. 1747See option `hide-ifdef-shadow' and function `hide-ifdef-toggle-shadowing'.
1748 1748
1749*** `icomplete-prospects-height' now supercedes `icomplete-prospects-length'. 1749*** `icomplete-prospects-height' now supersedes `icomplete-prospects-length'.
1750 1750
1751*** Info displays breadcrumbs in the header of the page. 1751*** Info displays breadcrumbs in the header of the page.
1752See Info-breadcrumbs-depth to control it. 1752See Info-breadcrumbs-depth to control it.
diff --git a/leim/ChangeLog b/leim/ChangeLog
index 6f55095aac7..7334fa991c9 100644
--- a/leim/ChangeLog
+++ b/leim/ChangeLog
@@ -1,3 +1,7 @@
12011-02-28 Juanma Barranquero <lekktu@gmail.com>
2
3 * quail/ethiopic.el ("ethiopic"): Fix tpo in docstring.
4
12011-01-28 Paul Eggert <eggert@cs.ucla.edu> 52011-01-28 Paul Eggert <eggert@cs.ucla.edu>
2 6
3 Redo spelling of Makefile variables to conform to POSIX. 7 Redo spelling of Makefile variables to conform to POSIX.
@@ -27,8 +31,8 @@
27 31
282010-08-28 Kenichi Handa <handa@m17n.org> 322010-08-28 Kenichi Handa <handa@m17n.org>
29 33
30 * quail/japanese.el (quail-japanese-update-translation): Fix 34 * quail/japanese.el (quail-japanese-update-translation):
31 handling of invalid key. 35 Fix handling of invalid key.
32 36
332010-08-15 Andreas Schwab <schwab@linux-m68k.org> 372010-08-15 Andreas Schwab <schwab@linux-m68k.org>
34 38
@@ -46,8 +50,7 @@
46 50
472010-08-13 Kenichi Handa <handa@m17n.org> 512010-08-13 Kenichi Handa <handa@m17n.org>
48 52
49 * quail/greek.el ("greek-postfix"): Add rules for Greek style 53 * quail/greek.el ("greek-postfix"): Add rules for Greek style quotes.
50 quotes.
51 54
522010-08-09 Kenichi Handa <handa@m17n.org> 552010-08-09 Kenichi Handa <handa@m17n.org>
53 56
diff --git a/leim/ja-dic/ja-dic.el b/leim/ja-dic/ja-dic.el
index b4aa921d56a..19caea49629 100644
--- a/leim/ja-dic/ja-dic.el
+++ b/leim/ja-dic/ja-dic.el
@@ -1,6 +1,6 @@
1;;; ja-dic.el --- dictionary for Japanese input method -*-coding: euc-japan; byte-compile-disable-print-circle:t; -*- 1;;; ja-dic.el --- dictionary for Japanese input method -*-coding: euc-japan; -*-
2;; Generated by the command `skkdic-convert' 2;; Generated by the command `skkdic-convert'
3;; Date: Tue Feb 16 15:59:19 2010 3;; Date: Sat Feb 26 10:26:11 2011
4;; Original SKK dictionary file: ../SKK-DIC/SKK-JISYO.L 4;; Original SKK dictionary file: ../SKK-DIC/SKK-JISYO.L
5 5
6;; This file is part of GNU Emacs. 6;; This file is part of GNU Emacs.
@@ -16984,7 +16984,6 @@
16984 16984
16985;; Setting okuri-nasi entries. 16985;; Setting okuri-nasi entries.
16986(skkdic-set-okuri-nasi 16986(skkdic-set-okuri-nasi
16987"¤ò¤ó¤Ê ½÷"
16988"¡¼ ¡Á" 16987"¡¼ ¡Á"
16989"¤¢ ÓË ÌÀ °Â ë¨ Ò÷ °£ Ûó г °¢ áÞ Õ´ °¤ Èà ¸ã °¡" 16988"¤¢ ÓË ÌÀ °Â ë¨ Ò÷ °£ Ûó г °¢ áÞ Õ´ °¤ Èà ¸ã °¡"
16990"¤¢¡¼¤¯¤È¤¦ ¥¢¡¼¥¯Åô" 16989"¤¢¡¼¤¯¤È¤¦ ¥¢¡¼¥¯Åô"
diff --git a/leim/quail/cyrillic.el b/leim/quail/cyrillic.el
index 7eaaab4aebc..824048534e0 100644
--- a/leim/quail/cyrillic.el
+++ b/leim/quail/cyrillic.el
@@ -39,7 +39,7 @@
39;; This was `cyrillic-jcuken'. Alexander Mikhailian 39;; This was `cyrillic-jcuken'. Alexander Mikhailian
40;; <mikhailian@altern.org> says: "cyrillic-jcuken" is actually 40;; <mikhailian@altern.org> says: "cyrillic-jcuken" is actually
41;; russian. It is ok but a bit outdated. This layout has been used 41;; russian. It is ok but a bit outdated. This layout has been used
42;; in typewriters for ages but it has been superceeded on desktops by 42;; in typewriters for ages but it has been superseded on desktops by
43;; a variation of this layout, implemented in M$ Windows software. 43;; a variation of this layout, implemented in M$ Windows software.
44;; The Windows layout is greatly preferred because of the comma and 44;; The Windows layout is greatly preferred because of the comma and
45;; period being placed more conviniently and, of course, because of 45;; period being placed more conviniently and, of course, because of
diff --git a/leim/quail/ethiopic.el b/leim/quail/ethiopic.el
index bdbb214723e..210aeea7e62 100644
--- a/leim/quail/ethiopic.el
+++ b/leim/quail/ethiopic.el
@@ -62,7 +62,7 @@ S-SPC or `M-x ethio-insert-ethio-space'
62 62
63C-' or `M-x ethio-gemination' 63C-' or `M-x ethio-gemination'
64 Compose the character before the point with the Ethiopic gemination mark. 64 Compose the character before the point with the Ethiopic gemination mark.
65 If the characater is already composed, decompose it and remove the 65 If the character is already composed, decompose it and remove the
66 gemination mark." 66 gemination mark."
67 67
68 ;; The following keys should work as defined in lisp/language/ethio-util, 68 ;; The following keys should work as defined in lisp/language/ethio-util,
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index 2c98cdf59a6..f54ad384b13 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,57 @@
12011-02-26 Eli Zaretskii <eliz@gnu.org>
2
3 * Makefile.in (fakemail${EXEEXT}): Depend on lib/ignore-value.h.
4
5 * emacsclient.c (xstrdup) [WINDOWSNT]: Function added back.
6 (w32_getenv): Use xstrdup to return all values in malloc'ed
7 storage.
8
92011-02-26 Paul Eggert <eggert@cs.ucla.edu>
10
11 * ebrowse.c (parse_qualified_param_ident_or_type): Make it clear
12 to reader (and to the compiler) that the loop always executes at
13 least once. This prevents a warning with recent GCC.
14 (BROWSE_STRUCT): Remove unused macro.
15
16 * fakemail.c: Include <ignore-value.h>.
17 (put_line): Explicitly ignore fwrite return value, for benefit of
18 recent glibc + gcc.
19 (close_the_streams): Diagnose output errors instead of merely
20 exiting with nonzero status.
21 (my_fclose, main): Diagnose input errors, and exit with nonzero status.
22 Formerly, input errors were silently ignored.
23
24 * ebrowse.c (putstr): Rename from PUTSTR and turn into a function.
25 All callers changed. This is cleaner, and avoids GCC warnings about
26 passing NULL to fputs.
27 (insert_keyword): Rename parameter to avoid shadowing diagnostic.
28
292011-02-25 Paul Eggert <eggert@cs.ucla.edu>
30
31 * emacsclient.c (main): Avoid dangling 'if'.
32 (xstrdup): Remove; no longer needed.
33 (get_current_dir_name, w32_getenv, get_server_config, find_tty):
34 (set_local_socket, main):
35 Use const char *, not char *, for pointers that are not assigned
36 through.
37 (IF_LINT): New macro.
38 (set_local_socket, main): Use it to suppress warnings with
39 GCC -Wuninitialized.
40
41 * emacsclient.c: Redo local variables to avoid shadowing problems.
42 (message, socket_status, start_daemon_and_retry_set_socket):
43 Rename locals.
44 (main): Move decl of "i".
45
46 * etags.c (ISUPPER): Move to inside the only #ifdef where it's used.
47 This avoids an unused-macro warning with some GCC settings.
48
49 * make-docfile.c (write_globals): Change char * to char const *
50 to avoid a GCC "assignment discards qualifiers" diagnostic
51 in some configurations.
52 (scan_c_file): Refactor local variable decls to make their scope
53 more accurate and to avoid a GCC -Wuninitialized diagnostic.
54
12011-02-22 Eli Zaretskii <eliz@gnu.org> 552011-02-22 Eli Zaretskii <eliz@gnu.org>
2 56
3 * etags.c (canonicalize_filename, ISUPPER): Fix last change. 57 * etags.c (canonicalize_filename, ISUPPER): Fix last change.
diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in
index f671b0844ce..d622233efb4 100644
--- a/lib-src/Makefile.in
+++ b/lib-src/Makefile.in
@@ -353,7 +353,7 @@ movemail.o: ${srcdir}/movemail.c ../src/config.h
353pop.o: ${srcdir}/pop.c ${srcdir}/../lib/min-max.h ../src/config.h 353pop.o: ${srcdir}/pop.c ${srcdir}/../lib/min-max.h ../src/config.h
354 $(CC) -c ${CPP_CFLAGS} ${MOVE_FLAGS} ${srcdir}/pop.c 354 $(CC) -c ${CPP_CFLAGS} ${MOVE_FLAGS} ${srcdir}/pop.c
355 355
356fakemail${EXEEXT}: ${srcdir}/fakemail.c ../src/config.h 356fakemail${EXEEXT}: ${srcdir}/fakemail.c ${srcdir}/../lib/ignore-value.h ../src/config.h
357 $(CC) ${ALL_CFLAGS} ${srcdir}/fakemail.c $(LOADLIBES) -o fakemail 357 $(CC) ${ALL_CFLAGS} ${srcdir}/fakemail.c $(LOADLIBES) -o fakemail
358 358
359emacsclient${EXEEXT}: ${srcdir}/emacsclient.c ../src/config.h 359emacsclient${EXEEXT}: ${srcdir}/emacsclient.c ../src/config.h
diff --git a/lib-src/ebrowse.c b/lib-src/ebrowse.c
index f2894d5a0c2..113b6fdfe40 100644
--- a/lib-src/ebrowse.c
+++ b/lib-src/ebrowse.c
@@ -77,7 +77,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
77#define TREE_HEADER_STRUCT "[ebrowse-hs " 77#define TREE_HEADER_STRUCT "[ebrowse-hs "
78#define TREE_STRUCT "[ebrowse-ts " 78#define TREE_STRUCT "[ebrowse-ts "
79#define MEMBER_STRUCT "[ebrowse-ms " 79#define MEMBER_STRUCT "[ebrowse-ms "
80#define BROWSE_STRUCT "[ebrowse-bs "
81#define CLASS_STRUCT "[ebrowse-cs " 80#define CLASS_STRUCT "[ebrowse-cs "
82 81
83/* The name of the symbol table entry for global functions, variables, 82/* The name of the symbol table entry for global functions, variables,
@@ -1108,22 +1107,23 @@ leave_namespace (void)
1108/* Write string S to the output file FP in a Lisp-readable form. 1107/* Write string S to the output file FP in a Lisp-readable form.
1109 If S is null, write out `()'. */ 1108 If S is null, write out `()'. */
1110 1109
1111#define PUTSTR(s, fp) \ 1110static inline void
1112 do { \ 1111putstr (const char *s, FILE *fp)
1113 if (!s) \ 1112{
1114 { \ 1113 if (!s)
1115 putc ('(', fp); \ 1114 {
1116 putc (')', fp); \ 1115 putc ('(', fp);
1117 putc (' ', fp); \ 1116 putc (')', fp);
1118 } \ 1117 putc (' ', fp);
1119 else \ 1118 }
1120 { \ 1119 else
1121 putc ('"', fp); \ 1120 {
1122 fputs (s, fp); \ 1121 putc ('"', fp);
1123 putc ('"', fp); \ 1122 fputs (s, fp);
1124 putc (' ', fp); \ 1123 putc ('"', fp);
1125 } \ 1124 putc (' ', fp);
1126 } while (0) 1125 }
1126}
1127 1127
1128/* A dynamically allocated buffer for constructing a scope name. */ 1128/* A dynamically allocated buffer for constructing a scope name. */
1129 1129
@@ -1216,16 +1216,16 @@ dump_members (FILE *fp, struct member *m)
1216 for (n = 0; m; m = m->next, ++n) 1216 for (n = 0; m; m = m->next, ++n)
1217 { 1217 {
1218 fputs (MEMBER_STRUCT, fp); 1218 fputs (MEMBER_STRUCT, fp);
1219 PUTSTR (m->name, fp); 1219 putstr (m->name, fp);
1220 PUTSTR (NULL, fp); /* FIXME? scope for globals */ 1220 putstr (NULL, fp); /* FIXME? scope for globals */
1221 fprintf (fp, "%u ", (unsigned) m->flags); 1221 fprintf (fp, "%u ", (unsigned) m->flags);
1222 PUTSTR (m->filename, fp); 1222 putstr (m->filename, fp);
1223 PUTSTR (m->regexp, fp); 1223 putstr (m->regexp, fp);
1224 fprintf (fp, "%u ", (unsigned) m->pos); 1224 fprintf (fp, "%u ", (unsigned) m->pos);
1225 fprintf (fp, "%u ", (unsigned) m->vis); 1225 fprintf (fp, "%u ", (unsigned) m->vis);
1226 putc (' ', fp); 1226 putc (' ', fp);
1227 PUTSTR (m->def_filename, fp); 1227 putstr (m->def_filename, fp);
1228 PUTSTR (m->def_regexp, fp); 1228 putstr (m->def_regexp, fp);
1229 fprintf (fp, "%u", (unsigned) m->def_pos); 1229 fprintf (fp, "%u", (unsigned) m->def_pos);
1230 putc (']', fp); 1230 putc (']', fp);
1231 putc ('\n', fp); 1231 putc ('\n', fp);
@@ -1243,20 +1243,20 @@ static void
1243dump_sym (FILE *fp, struct sym *root) 1243dump_sym (FILE *fp, struct sym *root)
1244{ 1244{
1245 fputs (CLASS_STRUCT, fp); 1245 fputs (CLASS_STRUCT, fp);
1246 PUTSTR (root->name, fp); 1246 putstr (root->name, fp);
1247 1247
1248 /* Print scope, if any. */ 1248 /* Print scope, if any. */
1249 if (root->namesp) 1249 if (root->namesp)
1250 PUTSTR (sym_scope (root), fp); 1250 putstr (sym_scope (root), fp);
1251 else 1251 else
1252 PUTSTR (NULL, fp); 1252 putstr (NULL, fp);
1253 1253
1254 /* Print flags. */ 1254 /* Print flags. */
1255 fprintf (fp, "%u", root->flags); 1255 fprintf (fp, "%u", root->flags);
1256 PUTSTR (root->filename, fp); 1256 putstr (root->filename, fp);
1257 PUTSTR (root->regexp, fp); 1257 putstr (root->regexp, fp);
1258 fprintf (fp, "%u", (unsigned) root->pos); 1258 fprintf (fp, "%u", (unsigned) root->pos);
1259 PUTSTR (root->sfilename, fp); 1259 putstr (root->sfilename, fp);
1260 putc (']', fp); 1260 putc (']', fp);
1261 putc ('\n', fp); 1261 putc ('\n', fp);
1262} 1262}
@@ -1323,7 +1323,7 @@ dump_roots (FILE *fp)
1323 if (!f_append) 1323 if (!f_append)
1324 { 1324 {
1325 fputs (TREE_HEADER_STRUCT, fp); 1325 fputs (TREE_HEADER_STRUCT, fp);
1326 PUTSTR (EBROWSE_FILE_VERSION, fp); 1326 putstr (EBROWSE_FILE_VERSION, fp);
1327 1327
1328 putc ('\"', fp); 1328 putc ('\"', fp);
1329 if (!f_structs) 1329 if (!f_structs)
@@ -2062,11 +2062,11 @@ re_init_scanner (void)
2062} 2062}
2063 2063
2064 2064
2065/* Insert a keyword NAME with token value TK into the keyword hash 2065/* Insert a keyword NAME with token value TKV into the keyword hash
2066 table. */ 2066 table. */
2067 2067
2068static void 2068static void
2069insert_keyword (const char *name, int tk) 2069insert_keyword (const char *name, int tkv)
2070{ 2070{
2071 const char *s; 2071 const char *s;
2072 unsigned h = 0; 2072 unsigned h = 0;
@@ -2077,7 +2077,7 @@ insert_keyword (const char *name, int tk)
2077 2077
2078 h %= KEYWORD_TABLE_SIZE; 2078 h %= KEYWORD_TABLE_SIZE;
2079 k->name = name; 2079 k->name = name;
2080 k->tk = tk; 2080 k->tk = tkv;
2081 k->next = keyword_table[h]; 2081 k->next = keyword_table[h];
2082 keyword_table[h] = k; 2082 keyword_table[h] = k;
2083} 2083}
@@ -2951,7 +2951,9 @@ parse_qualified_param_ident_or_type (char **last_id)
2951 static char *id = NULL; 2951 static char *id = NULL;
2952 static int id_size = 0; 2952 static int id_size = 0;
2953 2953
2954 while (LOOKING_AT (IDENT)) 2954 assert (LOOKING_AT (IDENT));
2955
2956 do
2955 { 2957 {
2956 int len = strlen (yytext) + 1; 2958 int len = strlen (yytext) + 1;
2957 if (len > id_size) 2959 if (len > id_size)
@@ -2974,6 +2976,7 @@ parse_qualified_param_ident_or_type (char **last_id)
2974 else 2976 else
2975 break; 2977 break;
2976 } 2978 }
2979 while (LOOKING_AT (IDENT));
2977} 2980}
2978 2981
2979 2982
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c
index 8d5f0482637..836891ae6aa 100644
--- a/lib-src/emacsclient.c
+++ b/lib-src/emacsclient.c
@@ -112,6 +112,13 @@ char *(getcwd) (char *, size_t);
112/* Additional space when allocating buffers for filenames, etc. */ 112/* Additional space when allocating buffers for filenames, etc. */
113#define EXTRA_SPACE 100 113#define EXTRA_SPACE 100
114 114
115/* Use this to suppress gcc's `...may be used before initialized' warnings. */
116#ifdef lint
117# define IF_LINT(Code) Code
118#else
119# define IF_LINT(Code) /* empty */
120#endif
121
115 122
116/* Name used to invoke this program. */ 123/* Name used to invoke this program. */
117const char *progname; 124const char *progname;
@@ -190,20 +197,6 @@ xmalloc (unsigned int size)
190 return result; 197 return result;
191} 198}
192 199
193/* Like strdup but get a fatal error if memory is exhausted. */
194
195static char *
196xstrdup (const char *s)
197{
198 char *result = strdup (s);
199 if (result == NULL)
200 {
201 perror ("strdup");
202 exit (EXIT_FAILURE);
203 }
204 return result;
205}
206
207/* From sysdep.c */ 200/* From sysdep.c */
208#if !defined (HAVE_GET_CURRENT_DIR_NAME) || defined (BROKEN_GET_CURRENT_DIR_NAME) 201#if !defined (HAVE_GET_CURRENT_DIR_NAME) || defined (BROKEN_GET_CURRENT_DIR_NAME)
209 202
@@ -233,7 +226,7 @@ char*
233get_current_dir_name (void) 226get_current_dir_name (void)
234{ 227{
235 char *buf; 228 char *buf;
236 char *pwd; 229 const char *pwd;
237 struct stat dotstat, pwdstat; 230 struct stat dotstat, pwdstat;
238 /* If PWD is accurate, use it instead of calling getwd. PWD is 231 /* If PWD is accurate, use it instead of calling getwd. PWD is
239 sometimes a nicer name, and using it may avoid a fatal error if a 232 sometimes a nicer name, and using it may avoid a fatal error if a
@@ -300,6 +293,20 @@ get_current_dir_name (void)
300 293
301#ifdef WINDOWSNT 294#ifdef WINDOWSNT
302 295
296/* Like strdup but get a fatal error if memory is exhausted. */
297
298char *
299xstrdup (const char *s)
300{
301 char *result = strdup (s);
302 if (result == NULL)
303 {
304 perror ("strdup");
305 exit (EXIT_FAILURE);
306 }
307 return result;
308}
309
303#define REG_ROOT "SOFTWARE\\GNU\\Emacs" 310#define REG_ROOT "SOFTWARE\\GNU\\Emacs"
304 311
305/* Retrieve an environment variable from the Emacs subkeys of the registry. 312/* Retrieve an environment variable from the Emacs subkeys of the registry.
@@ -335,9 +342,11 @@ w32_get_resource (HKEY predefined, char *key, LPDWORD type)
335/* 342/*
336 getenv wrapper for Windows 343 getenv wrapper for Windows
337 344
338 This is needed to duplicate Emacs's behavior, which is to look for environment 345 Value is allocated on the heap, and can be free'd.
339 variables in the registry if they don't appear in the environment. 346
340*/ 347 This is needed to duplicate Emacs's behavior, which is to look for
348 environment variables in the registry if they don't appear in the
349 environment. */
341char * 350char *
342w32_getenv (char *envvar) 351w32_getenv (char *envvar)
343{ 352{
@@ -345,8 +354,9 @@ w32_getenv (char *envvar)
345 DWORD dwType; 354 DWORD dwType;
346 355
347 if (value = getenv (envvar)) 356 if (value = getenv (envvar))
348 /* Found in the environment. */ 357 /* Found in the environment. strdup it, because values returned
349 return value; 358 by getenv cannot be free'd. */
359 return xstrdup (value);
350 360
351 if (! (value = w32_get_resource (HKEY_CURRENT_USER, envvar, &dwType)) && 361 if (! (value = w32_get_resource (HKEY_CURRENT_USER, envvar, &dwType)) &&
352 ! (value = w32_get_resource (HKEY_LOCAL_MACHINE, envvar, &dwType))) 362 ! (value = w32_get_resource (HKEY_LOCAL_MACHINE, envvar, &dwType)))
@@ -474,13 +484,13 @@ ttyname (int fd)
474/* Display a normal or error message. 484/* Display a normal or error message.
475 On Windows, use a message box if compiled as a Windows app. */ 485 On Windows, use a message box if compiled as a Windows app. */
476static void 486static void
477message (int is_error, const char *message, ...) 487message (int is_error, const char *format, ...)
478{ 488{
479 char msg[2048]; 489 char msg[2048];
480 va_list args; 490 va_list args;
481 491
482 va_start (args, message); 492 va_start (args, format);
483 vsprintf (msg, message, args); 493 vsprintf (msg, format, args);
484 va_end (args); 494 va_end (args);
485 495
486#ifdef WINDOWSNT 496#ifdef WINDOWSNT
@@ -918,7 +928,7 @@ get_server_config (struct sockaddr_in *server, char *authentication)
918 config = fopen (server_file, "rb"); 928 config = fopen (server_file, "rb");
919 else 929 else
920 { 930 {
921 char *home = egetenv ("HOME"); 931 const char *home = egetenv ("HOME");
922 932
923 if (home) 933 if (home)
924 { 934 {
@@ -1025,10 +1035,10 @@ strprefix (const char *prefix, const char *string)
1025 is zero, or return 0 if NOABORT is non-zero. */ 1035 is zero, or return 0 if NOABORT is non-zero. */
1026 1036
1027static int 1037static int
1028find_tty (char **tty_type, char **tty_name, int noabort) 1038find_tty (const char **tty_type, const char **tty_name, int noabort)
1029{ 1039{
1030 char *type = egetenv ("TERM"); 1040 const char *type = egetenv ("TERM");
1031 char *name = ttyname (fileno (stdout)); 1041 const char *name = ttyname (fileno (stdout));
1032 1042
1033 if (!name) 1043 if (!name)
1034 { 1044 {
@@ -1080,11 +1090,11 @@ find_tty (char **tty_type, char **tty_name, int noabort)
1080 0 - success: none of the above */ 1090 0 - success: none of the above */
1081 1091
1082static int 1092static int
1083socket_status (char *socket_name) 1093socket_status (char *name)
1084{ 1094{
1085 struct stat statbfr; 1095 struct stat statbfr;
1086 1096
1087 if (stat (socket_name, &statbfr) == -1) 1097 if (stat (name, &statbfr) == -1)
1088 return 2; 1098 return 2;
1089 1099
1090 if (statbfr.st_uid != geteuid ()) 1100 if (statbfr.st_uid != geteuid ())
@@ -1205,7 +1215,7 @@ set_local_socket (void)
1205 int default_sock = !socket_name; 1215 int default_sock = !socket_name;
1206 int saved_errno = 0; 1216 int saved_errno = 0;
1207 const char *server_name = "server"; 1217 const char *server_name = "server";
1208 const char *tmpdir; 1218 const char *tmpdir IF_LINT ( = NULL);
1209 1219
1210 if (socket_name && !strchr (socket_name, '/') 1220 if (socket_name && !strchr (socket_name, '/')
1211 && !strchr (socket_name, '\\')) 1221 && !strchr (socket_name, '\\'))
@@ -1260,10 +1270,10 @@ set_local_socket (void)
1260 associated with the name. This is reminiscent of the logic 1270 associated with the name. This is reminiscent of the logic
1261 that init_editfns uses to set the global Vuser_full_name. */ 1271 that init_editfns uses to set the global Vuser_full_name. */
1262 1272
1263 char *user_name = (char *) egetenv ("LOGNAME"); 1273 const char *user_name = egetenv ("LOGNAME");
1264 1274
1265 if (!user_name) 1275 if (!user_name)
1266 user_name = (char *) egetenv ("USER"); 1276 user_name = egetenv ("USER");
1267 1277
1268 if (user_name) 1278 if (user_name)
1269 { 1279 {
@@ -1483,8 +1493,8 @@ start_daemon_and_retry_set_socket (void)
1483 else 1493 else
1484 { 1494 {
1485 char emacs[] = "emacs"; 1495 char emacs[] = "emacs";
1486 char daemon[] = "--daemon"; 1496 char daemon_option[] = "--daemon";
1487 char *d_argv[] = {emacs, daemon, 0 }; 1497 char *d_argv[] = {emacs, daemon_option, 0 };
1488 if (socket_name != NULL) 1498 if (socket_name != NULL)
1489 { 1499 {
1490 /* Pass --daemon=socket_name as argument. */ 1500 /* Pass --daemon=socket_name as argument. */
@@ -1504,10 +1514,12 @@ start_daemon_and_retry_set_socket (void)
1504int 1514int
1505main (int argc, char **argv) 1515main (int argc, char **argv)
1506{ 1516{
1507 int i, rl, needlf = 0; 1517 int rl, needlf = 0;
1508 char *cwd, *str; 1518 char *cwd, *str;
1509 char string[BUFSIZ+1]; 1519 char string[BUFSIZ+1];
1510 int null_socket_name, null_server_file, start_daemon_if_needed; 1520 int null_socket_name IF_LINT ( = 0);
1521 int null_server_file IF_LINT ( = 0);
1522 int start_daemon_if_needed;
1511 int exit_status = EXIT_SUCCESS; 1523 int exit_status = EXIT_SUCCESS;
1512 1524
1513 main_argv = argv; 1525 main_argv = argv;
@@ -1543,21 +1555,21 @@ main (int argc, char **argv)
1543 null_server_file = (server_file == NULL); 1555 null_server_file = (server_file == NULL);
1544 } 1556 }
1545 1557
1546 if ((emacs_socket = set_socket (alternate_editor 1558 emacs_socket = set_socket (alternate_editor || start_daemon_if_needed);
1547 || start_daemon_if_needed)) == INVALID_SOCKET) 1559 if (emacs_socket == INVALID_SOCKET)
1548 if (start_daemon_if_needed) 1560 {
1549 { 1561 if (! start_daemon_if_needed)
1550 /* Reset socket_name and server_file if they were NULL 1562 fail ();
1551 before the set_socket call. */ 1563
1552 if (null_socket_name) 1564 /* Reset socket_name and server_file if they were NULL
1553 socket_name = NULL; 1565 before the set_socket call. */
1554 if (null_server_file) 1566 if (null_socket_name)
1555 server_file = NULL; 1567 socket_name = NULL;
1556 1568 if (null_server_file)
1557 start_daemon_and_retry_set_socket (); 1569 server_file = NULL;
1558 } 1570
1559 else 1571 start_daemon_and_retry_set_socket ();
1560 fail (); 1572 }
1561 1573
1562 cwd = get_current_dir_name (); 1574 cwd = get_current_dir_name ();
1563 if (cwd == 0) 1575 if (cwd == 0)
@@ -1615,7 +1627,7 @@ main (int argc, char **argv)
1615 frame is available. */ 1627 frame is available. */
1616 if (tty || (current_frame && !eval)) 1628 if (tty || (current_frame && !eval))
1617 { 1629 {
1618 char *tty_type, *tty_name; 1630 const char *tty_type, *tty_name;
1619 1631
1620 if (find_tty (&tty_type, &tty_name, !tty)) 1632 if (find_tty (&tty_type, &tty_name, !tty))
1621 { 1633 {
@@ -1635,6 +1647,7 @@ main (int argc, char **argv)
1635 1647
1636 if ((argc - optind > 0)) 1648 if ((argc - optind > 0))
1637 { 1649 {
1650 int i;
1638 for (i = optind; i < argc; i++) 1651 for (i = optind; i < argc; i++)
1639 { 1652 {
1640 1653
diff --git a/lib-src/etags.c b/lib-src/etags.c
index b738f0f4564..385e4cc9721 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -236,7 +236,6 @@ If you want regular expression support, you should delete this notice and
236#define ISALNUM(c) isalnum (CHAR(c)) 236#define ISALNUM(c) isalnum (CHAR(c))
237#define ISALPHA(c) isalpha (CHAR(c)) 237#define ISALPHA(c) isalpha (CHAR(c))
238#define ISDIGIT(c) isdigit (CHAR(c)) 238#define ISDIGIT(c) isdigit (CHAR(c))
239#define ISUPPER(c) isupper (CHAR(c))
240#define ISLOWER(c) islower (CHAR(c)) 239#define ISLOWER(c) islower (CHAR(c))
241 240
242#define lowcase(c) tolower (CHAR(c)) 241#define lowcase(c) tolower (CHAR(c))
@@ -6648,6 +6647,7 @@ canonicalize_filename (register char *fn)
6648 6647
6649#ifdef DOS_NT 6648#ifdef DOS_NT
6650 /* Canonicalize drive letter case. */ 6649 /* Canonicalize drive letter case. */
6650# define ISUPPER(c) isupper (CHAR(c))
6651 if (fn[0] != '\0' && fn[1] == ':' && ISUPPER (fn[0])) 6651 if (fn[0] != '\0' && fn[1] == ':' && ISUPPER (fn[0]))
6652 fn[0] = lowcase (fn[0]); 6652 fn[0] = lowcase (fn[0]);
6653 6653
diff --git a/lib-src/fakemail.c b/lib-src/fakemail.c
index 26375a61654..780a104b405 100644
--- a/lib-src/fakemail.c
+++ b/lib-src/fakemail.c
@@ -62,6 +62,8 @@ main ()
62 62
63/* This is to declare cuserid. */ 63/* This is to declare cuserid. */
64#include <unistd.h> 64#include <unistd.h>
65
66#include <ignore-value.h>
65 67
66/* Type definitions */ 68/* Type definitions */
67 69
@@ -405,8 +407,8 @@ close_the_streams (void)
405 for (rem = the_streams; 407 for (rem = the_streams;
406 rem != ((stream_list) NULL); 408 rem != ((stream_list) NULL);
407 rem = rem->rest_streams) 409 rem = rem->rest_streams)
408 no_problems = (no_problems && 410 if (no_problems && (*rem->action) (rem->handle) != 0)
409 ((*rem->action) (rem->handle) == 0)); 411 error ("output error", NULL);
410 the_streams = ((stream_list) NULL); 412 the_streams = ((stream_list) NULL);
411 return (no_problems ? EXIT_SUCCESS : EXIT_FAILURE); 413 return (no_problems ? EXIT_SUCCESS : EXIT_FAILURE);
412} 414}
@@ -427,6 +429,8 @@ my_fclose (FILE *the_file)
427{ 429{
428 putc ('\n', the_file); 430 putc ('\n', the_file);
429 fflush (the_file); 431 fflush (the_file);
432 if (ferror (the_file))
433 return EOF;
430 return fclose (the_file); 434 return fclose (the_file);
431} 435}
432 436
@@ -496,7 +500,7 @@ put_line (const char *string)
496 } 500 }
497 } 501 }
498 /* Output that much, then break the line. */ 502 /* Output that much, then break the line. */
499 fwrite (s, 1, breakpos - s, rem->handle); 503 ignore_value (fwrite (s, 1, breakpos - s, rem->handle));
500 column = 8; 504 column = 8;
501 505
502 /* Skip whitespace and prepare to print more addresses. */ 506 /* Skip whitespace and prepare to print more addresses. */
@@ -729,6 +733,9 @@ main (int argc, char **argv)
729 put_string (buf); 733 put_string (buf);
730 } 734 }
731 735
736 if (no_problems && (ferror (stdin) || fclose (stdin) != 0))
737 error ("input error", NULL);
738
732 exit (close_the_streams ()); 739 exit (close_the_streams ());
733} 740}
734 741
diff --git a/lib-src/make-docfile.c b/lib-src/make-docfile.c
index f0aa222986a..f900ea42e91 100644
--- a/lib-src/make-docfile.c
+++ b/lib-src/make-docfile.c
@@ -617,7 +617,7 @@ write_globals (void)
617 qsort (globals, num_globals, sizeof (struct global), compare_globals); 617 qsort (globals, num_globals, sizeof (struct global), compare_globals);
618 for (i = 0; i < num_globals; ++i) 618 for (i = 0; i < num_globals; ++i)
619 { 619 {
620 char *type; 620 char const *type;
621 621
622 switch (globals[i].type) 622 switch (globals[i].type)
623 { 623 {
@@ -658,12 +658,8 @@ scan_c_file (char *filename, const char *mode)
658 FILE *infile; 658 FILE *infile;
659 register int c; 659 register int c;
660 register int commas; 660 register int commas;
661 register int defunflag;
662 register int defvarperbufferflag;
663 register int defvarflag;
664 int minargs, maxargs; 661 int minargs, maxargs;
665 int extension = filename[strlen (filename) - 1]; 662 int extension = filename[strlen (filename) - 1];
666 enum global_type type;
667 663
668 if (extension == 'o') 664 if (extension == 'o')
669 filename[strlen (filename) - 1] = 'c'; 665 filename[strlen (filename) - 1] = 'c';
@@ -693,6 +689,10 @@ scan_c_file (char *filename, const char *mode)
693 while (!feof (infile)) 689 while (!feof (infile))
694 { 690 {
695 int doc_keyword = 0; 691 int doc_keyword = 0;
692 int defunflag = 0;
693 int defvarperbufferflag = 0;
694 int defvarflag = 0;
695 enum global_type type = INVALID;
696 696
697 if (c != '\n' && c != '\r') 697 if (c != '\n' && c != '\r')
698 { 698 {
@@ -726,7 +726,6 @@ scan_c_file (char *filename, const char *mode)
726 continue; 726 continue;
727 727
728 defvarflag = 1; 728 defvarflag = 1;
729 defunflag = 0;
730 729
731 c = getc (infile); 730 c = getc (infile);
732 defvarperbufferflag = (c == 'P'); 731 defvarperbufferflag = (c == 'P');
@@ -738,8 +737,6 @@ scan_c_file (char *filename, const char *mode)
738 type = LISP_OBJECT; 737 type = LISP_OBJECT;
739 else if (c == 'B') 738 else if (c == 'B')
740 type = BOOLEAN; 739 type = BOOLEAN;
741 else
742 type = INVALID;
743 } 740 }
744 741
745 c = getc (infile); 742 c = getc (infile);
@@ -758,8 +755,6 @@ scan_c_file (char *filename, const char *mode)
758 continue; 755 continue;
759 c = getc (infile); 756 c = getc (infile);
760 defunflag = c == 'U'; 757 defunflag = c == 'U';
761 defvarflag = 0;
762 defvarperbufferflag = 0;
763 } 758 }
764 else continue; 759 else continue;
765 760
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index c44c491cad0..8d891b22fd0 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,117 @@
12011-03-01 Juanma Barranquero <lekktu@gmail.com>
2
3 * emacs-lisp/cl-macs.el (lexical-let*): Fix argument name in docstring.
4
52011-03-01 Glenn Morris <rgm@gnu.org>
6
7 * calendar/cal-hebrew.el (calendar-hebrew-birthday, diary-hebrew-date):
8 Rename and rework functions added in previous change.
9
102011-03-01 Ed Reingold <reingold@emr.cs.iit.edu>
11
12 * calendar/cal-hebrew.el (hebrew-calendar-birthday)
13 (diary-hebrew-birthday): New functions.
14
152011-03-01 Glenn Morris <rgm@gnu.org>
16
17 * dired.el (dired-safe-switches-p): Beef it up.
18 (dired-actual-switches): Use it for the safe-local prop. (Bug#3230)
19
202011-03-01 Stefan Monnier <monnier@iro.umontreal.ca>
21
22 * dired.el (dired-safe-switches-p): New function.
23
242011-03-01 Glenn Morris <rgm@gnu.org>
25
26 * files.el (dir-locals-collect-variables):
27 Add the ability to exclude subdirectories. (Bug#8100)
28
29 * dired-x.el (dired-omit-here-always): Add `(subdirs . nil)' to locals.
30
312011-02-28 Christoph Scholtes <cschol2112@googlemail.com>
32
33 * ido.el (ido-everywhere): Doc fix.
34 (ido-mode): Doc fix.
35
362011-02-28 Glenn Morris <rgm@gnu.org>
37
38 * dired-x.el (dired-guess-shell-alist-default): Use \\', not $.
39
402011-02-28 Michael Albinus <michael.albinus@gmx.de>
41
42 * net/tramp-cmds.el (tramp-append-tramp-buffers): Dump load-path
43 shadows.
44
452011-02-28 Antoine Levitt <antoine.levitt@gmail.com> (tiny change)
46
47 * dired-x.el (dired-guess-shell-alist-default): Add rar and 7z.
48
492011-02-28 Juanma Barranquero <lekktu@gmail.com>
50
51 * emacs-lisp/pcase.el (pcase, pcase--u1, pcase--q1):
52 Fix typos in docstrings.
53
542011-02-28 Stephen Berman <stephen.berman@gmx.net>
55
56 * dired-aux.el (dired-update-file-line):
57 Fix 2010-11-09 change. (Bug#8131)
58
592011-02-28 Eli Zaretskii <eliz@gnu.org>
60
61 * international/mule-cmds.el (set-default-coding-systems): Use the
62 -unix variant of encoding in default-keyboard-coding-system.
63 (Bug#8122)
64
652011-02-27 Chong Yidong <cyd@stupidchicken.com>
66
67 * facemenu.el (list-colors-display): Use with-help-window (Bug#8048).
68
692011-02-27 Prestoo Ten <prestooten@gmail.com> (tiny change)
70
71 * term/screen.el: New file (Bug#2650).
72
732011-02-27 Stefan Monnier <monnier@iro.umontreal.ca>
74
75 * emacs-lisp/pcase.el (pcase--if): Try to invert test to reduce depth.
76 (pcase-mutually-exclusive-predicates): New var.
77 (pcase--split-consp, pcase--split-pred): Use it.
78 (pcase--split-equal, pcase--split-member): When splitting against
79 a pure predicate, run it to know the outcome.
80 (pcase--u1): Mark vars that are actually used.
81 (pcase--q1): Avoid introducing unused vars.
82
832011-02-27 Jay Belanger <jay.p.belanger@gmail.com>
84
85 * calc/calc-ext.el (calc-init-extensions):
86 Autoload `calc-l-prefix-help' instead of `calc-ul-prefix-help'.
87
88 * calc/calc-math.el (calcFunc-log10): Don't signal an error in
89 symbolic mode.
90
91 * calc/calc-vec.el (calcFunc-subscr): Return nil if the first
92 argument is a variable.
93
942011-02-26 Stefan Monnier <monnier@iro.umontreal.ca>
95
96 * emacs-lisp/assoc.el: Remove misleading `sort' (bug#8126).
97 (aput, adelete, amake): Replace `eval' -> `symbol-value'.
98 Suggested by Michael Heerdegen <michael_heerdegen@web.de>.
99
1002011-02-25 Teodor Zlatanov <tzz@lifelogs.com>
101
102 * password-cache.el (password-in-cache-p): Convenience function to
103 check if a key is in the cache, even if the value is nil.
104
1052011-02-25 Jambunathan K <kjambunathan@gmail.com>
106
107 * emacs-lisp/package-x.el (package--archive-contents-from-url)
108 (package--archive-contents-from-file): New functions.
109 (package-update-news-on-upload): New var.
110 (package-upload-buffer-internal): Extract archive-contents from
111 package-archive-upload-base if it is not found at archive-url.
112 Obey package-update-news-on-upload.
113 (package-upload-buffer, package-upload-file): Doc fix.
114
12011-02-24 Glenn Morris <rgm@gnu.org> 1152011-02-24 Glenn Morris <rgm@gnu.org>
2 116
3 * files-x.el (modify-dir-local-variable): Handle dir-locals from 117 * files-x.el (modify-dir-local-variable): Handle dir-locals from
@@ -1461,8 +1575,7 @@
1461 (allout-command-prefix) (allout-prefixed-keybindings) 1575 (allout-command-prefix) (allout-prefixed-keybindings)
1462 (allout-unprefixed-keybindings): 1576 (allout-unprefixed-keybindings):
1463 Use allout-compose-and-institute-keymap to process the bindings. 1577 Use allout-compose-and-institute-keymap to process the bindings.
1464 (allout-unprefixed-keybindings): Remove extraneous '?' question 1578 (allout-unprefixed-keybindings): Remove extraneous '?' question marks.
1465 marks.
1466 (allout-prefixed-keybindings): Elide binding to (prefixed) \C-h - 1579 (allout-prefixed-keybindings): Elide binding to (prefixed) \C-h -
1467 user can customize if they want to use that binding. 1580 user can customize if they want to use that binding.
1468 Bind allout-copy-topic-as-kill to (prefixed) \M-k. 1581 Bind allout-copy-topic-as-kill to (prefixed) \M-k.
@@ -1471,14 +1584,12 @@
1471 (allout-hotspot-key-handler): Remove attempt to resolve the key 1584 (allout-hotspot-key-handler): Remove attempt to resolve the key
1472 through the literal key-string lookup on allout-keybindings-list. 1585 through the literal key-string lookup on allout-keybindings-list.
1473 That probably hasn't worked for a Long Time, and removal of 1586 That probably hasn't worked for a Long Time, and removal of
1474 allout-keybindings-list further simplifies the keybindings 1587 allout-keybindings-list further simplifies the keybindings situation.
1475 situation.
1476 (allout-pre-command-business): Use allout-mode-map-value instead 1588 (allout-pre-command-business): Use allout-mode-map-value instead
1477 of allout-mode-map. 1589 of allout-mode-map.
1478 (allout-preempt-trailing-ctrl-h): Remove. The user can customize 1590 (allout-preempt-trailing-ctrl-h): Remove. The user can customize
1479 the bindings if they want to use a keybinding having a trailing 1591 the bindings if they want to use a keybinding having a trailing
1480 \C-h. No deprecation needed since this feature was never in a 1592 \C-h. No deprecation needed since this feature was never in a release.
1481 release.
1482 (allout-keybindings-list): Remove. It's not been useful for a 1593 (allout-keybindings-list): Remove. It's not been useful for a
1483 while. (See allout-hotspot-key-handler changes, above.) 1594 while. (See allout-hotspot-key-handler changes, above.)
1484 (produce-allout-mode-map): Remove. Consolidate into 1595 (produce-allout-mode-map): Remove. Consolidate into
@@ -2660,7 +2771,7 @@
2660 this original name from `bookmark-name-from-record' reverting part 2771 this original name from `bookmark-name-from-record' reverting part
2661 of 2010-12-08T08:09:27Z!kfogel@red-bean.com / kfogel@red-bean.com-20101208080927-5j9jqnb2xvcw4ogm. 2772 of 2010-12-08T08:09:27Z!kfogel@red-bean.com / kfogel@red-bean.com-20101208080927-5j9jqnb2xvcw4ogm.
2662 As Drew Adams pointed out, there was no reason to cause churn for 2773 As Drew Adams pointed out, there was no reason to cause churn for
2663 third-party callers. 2774 third-party callers. (Bug#7609)
2664 2775
26652010-12-12 Alan Mackenzie <acm@muc.de> 27762010-12-12 Alan Mackenzie <acm@muc.de>
2666 2777
@@ -3006,7 +3117,6 @@
3006 3117
3007 * net/tramp-cmds.el: Remove solved todo item. 3118 * net/tramp-cmds.el: Remove solved todo item.
3008 3119
3009 * net/tramp-efs.el:
3010 * net/tramp-ftp.el: 3120 * net/tramp-ftp.el:
3011 * net/tramp-gvfs.el: 3121 * net/tramp-gvfs.el:
3012 * net/tramp-gw.el: 3122 * net/tramp-gw.el:
@@ -4620,7 +4730,7 @@
4620 4730
46212010-10-24 Michael McNamara <mac@mail.brushroad.com> 47312010-10-24 Michael McNamara <mac@mail.brushroad.com>
4622 4732
4623 * verilog-mode.el (verilog-directive-re): Make this variable 4733 * progmodes/verilog-mode.el (verilog-directive-re): Make this variable
4624 auto-built for efficiency of execution and updating. 4734 auto-built for efficiency of execution and updating.
4625 (verilog-extended-complete-re): Support 'pure' fucntion & task 4735 (verilog-extended-complete-re): Support 'pure' fucntion & task
4626 declarations (these have no bodies). 4736 declarations (these have no bodies).
@@ -4654,7 +4764,7 @@
4654 4764
46552010-10-24 Wilson Snyder <wsnyder@wsnyder.org> 47652010-10-24 Wilson Snyder <wsnyder@wsnyder.org>
4656 4766
4657 * verilog-mode.el (verilog-auto-inst, verilog-gate-ios) 4767 * progmodes/verilog-mode.el (verilog-auto-inst, verilog-gate-ios)
4658 (verilog-gate-keywords, verilog-read-sub-decls) 4768 (verilog-gate-keywords, verilog-read-sub-decls)
4659 (verilog-read-sub-decls-gate, verilog-read-sub-decls-gate-ios) 4769 (verilog-read-sub-decls-gate, verilog-read-sub-decls-gate-ios)
4660 (verilog-read-sub-decls-line, verilog-read-sub-decls-sig): Support 4770 (verilog-read-sub-decls-line, verilog-read-sub-decls-sig): Support
@@ -6251,8 +6361,8 @@
6251 Use `tramp-compat-funcall'. 6361 Use `tramp-compat-funcall'.
6252 6362
6253 * net/tramp.el (tramp-process-actions): 6363 * net/tramp.el (tramp-process-actions):
6254 * net/tramp-gvfs.el (tramp-handle-vc-registered): 6364 * net/tramp-gvfs.el (tramp-gvfs-handler-askquestion):
6255 * net/tramp-sh.el (tramp-gvfs-handler-askquestion) 6365 * net/tramp-sh.el (tramp-handle-vc-registered)
6256 (tramp-get-remote-stat, tramp-get-remote-readlink): 6366 (tramp-get-remote-stat, tramp-get-remote-readlink):
6257 Use `tramp-compat-with-temp-message'. 6367 Use `tramp-compat-with-temp-message'.
6258 6368
@@ -7299,48 +7409,6 @@
7299 7409
7300 * whitespace.el (whitespace-style): Adjust type declaration. 7410 * whitespace.el (whitespace-style): Adjust type declaration.
7301 7411
73022010-08-26 Magnus Henoch <magnus.henoch@gmail.com>
7303
7304 * net/tramp-gvfs.el (tramp-gvfs-handle-copy-file): Do not pass
7305 empty argument to gvfs-copy.
7306
73072010-08-26 Chong Yidong <cyd@stupidchicken.com>
7308
7309 * net/tramp-compat.el (tramp-compat-delete-file): Rewrite to
7310 handle new TRASH arg of `delete-file'.
7311
73122010-08-26 Christian Lynbech <christian.lynbech@tieto.com> (tiny change)
7313
7314 * net/tramp.el (tramp-handle-insert-directory): Don't use
7315 `forward-word', its default syntax could be changed.
7316
73172010-08-26 Toru TSUNEYOSHI <t_tuneyosi@hotmail.com>
7318 Michael Albinus <michael.albinus@gmx.de>
7319
7320 Implement compression for inline methods.
7321
7322 * net/tramp.el (tramp-inline-compress-start-size): New defcustom.
7323 (tramp-copy-size-limit): Allow also nil.
7324 (tramp-inline-compress-commands): New defconst.
7325 (tramp-find-inline-compress, tramp-get-inline-compress)
7326 (tramp-get-inline-coding): New defuns.
7327 (tramp-get-remote-coding, tramp-get-local-coding): Remove,
7328 replaced by `tramp-get-inline-coding'.
7329 (tramp-handle-file-local-copy, tramp-handle-write-region)
7330 (tramp-method-out-of-band-p): Use `tramp-get-inline-coding'.
7331
73322010-08-26 Noah Lavine <noah549@gmail.com> (tiny change)
7333
7334 Detect ssh 'ControlMaster' argument automatically in some cases.
7335
7336 * net/tramp.el (tramp-detect-ssh-controlmaster): New defun.
7337 (tramp-default-method): Use it.
7338
73392010-08-26 Karel KlÃ­Ä <kklic@redhat.com>
7340
7341 * net/tramp.el (tramp-file-name-for-operation):
7342 Add file-selinux-context.
7343
73442010-08-26 Åukasz Stelmach <lukasz.stelmach@iem.pw.edu.pl> (tiny change) 74122010-08-26 Åukasz Stelmach <lukasz.stelmach@iem.pw.edu.pl> (tiny change)
7345 7413
7346 * play/cookie1.el (read-cookie): Fix off-by-one error (bug#6921). 7414 * play/cookie1.el (read-cookie): Fix off-by-one error (bug#6921).
@@ -7372,210 +7440,14 @@
7372 7440
7373 Sync with Tramp 2.1.19. 7441 Sync with Tramp 2.1.19.
7374 7442
7375 * net/tramp-cmds.el (tramp-cleanup-all-connections) 7443 * net/tramp-gvfs.el (tramp-gvfs-handle-write-region): Protect
7376 (tramp-reporter-dump-variable, tramp-load-report-modules) 7444 deleting tmpfile.
7377 (tramp-append-tramp-buffers): Use `tramp-compat-funcall'. 7445 (tramp-gvfs-maybe-open-connection): Use `tramp-compat-funcall'.
7378 (tramp-bug): Recommend setting of `tramp-verbose' to 9.
7379
7380 * net/tramp-compat.el (top): Do not autoload
7381 `tramp-handle-file-remote-p'. Load tramp-util.el and tramp-vc.el
7382 only when `start-file-process' is not bound.
7383 (byte-compile-not-obsolete-vars): Define if not bound.
7384 (tramp-compat-funcall): New defmacro.
7385 (tramp-compat-line-beginning-position)
7386 (tramp-compat-line-end-position)
7387 (tramp-compat-temporary-file-directory)
7388 (tramp-compat-make-temp-file, tramp-compat-file-attributes)
7389 (tramp-compat-copy-file, tramp-compat-copy-directory)
7390 (tramp-compat-delete-file, tramp-compat-delete-directory)
7391 (tramp-compat-number-sequence, tramp-compat-process-running-p):
7392 Use it.
7393 (tramp-advice-file-expand-wildcards): Do not use
7394 `tramp-handle-file-remote-p'.
7395 (tramp-compat-make-temp-file): Simplify fallback implementation.
7396 (tramp-compat-copy-file): Add PRESERVE-SELINUX-CONTEXT.
7397 (tramp-compat-copy-tree): Remove function.
7398 (tramp-compat-delete-file): New defun.
7399 (tramp-compat-delete-directory): Provide implementation for older
7400 Emacsen.
7401 (tramp-compat-file-attributes): Handle only
7402 `wrong-number-of-arguments' error.
7403 7446
7404 * net/tramp-fish.el (tramp-fish-handle-copy-file): 7447 * net/tramp.el (tramp-handle-expand-file-name)
7405 Add PRESERVE_SELINUX_CONTEXT.
7406 (tramp-fish-handle-delete-file): Add TRASH arg.
7407 (tramp-fish-handle-directory-files-and-attributes):
7408 Do not use `tramp-fish-handle-file-attributes.
7409 (tramp-fish-handle-file-local-copy)
7410 (tramp-fish-handle-insert-file-contents)
7411 (tramp-fish-maybe-open-connection): Use `with-progress-reporter'.
7412
7413 * net/tramp-gvfs.el (top): Require url-util.
7414 (tramp-gvfs-mount-point): Remove.
7415 (tramp-gvfs-file-name-handler-alist): Add `file-selinux-context'
7416 and `set-file-selinux-context'.
7417 (tramp-gvfs-stringify-dbus-message, tramp-gvfs-send-command)
7418 (tramp-gvfs-handle-file-selinux-context)
7419 (tramp-gvfs-handle-set-file-selinux-context): New defuns.
7420 (with-tramp-dbus-call-method): Format trace message.
7421 (tramp-gvfs-handle-copy-file): Handle PRESERVE-SELINUX-CONTEXT.
7422 (tramp-gvfs-handle-copy-file, tramp-gvfs-handle-rename-file):
7423 Implement backup call, when operation on local files fails.
7424 Use progress reporter. Flush properties of changed files.
7425 (tramp-gvfs-handle-delete-file): Add TRASH arg.
7426 Use `tramp-compat-delete-file'.
7427 (tramp-gvfs-handle-expand-file-name): Expand "~/".
7428 (tramp-gvfs-handle-make-directory): Make more traces.
7429 (tramp-gvfs-handle-write-region): Protect deleting tmpfile.
7430 (tramp-gvfs-url-file-name): Hexify file name in url.
7431 (tramp-gvfs-fuse-file-name): Take also prefix (like dav shares)
7432 into account for the resulting file name.
7433 (tramp-gvfs-handler-askquestion): Preserve current message, in
7434 order to let progress reporter continue afterwards. (Bug#6257)
7435 Return dummy mountpoint, when the answer is "no".
7436 See `tramp-gvfs-maybe-open-connection'.
7437 (tramp-gvfs-handler-mounted-unmounted)
7438 (tramp-gvfs-connection-mounted-p): Test also for new mountspec
7439 attribute "default_location". Set "prefix" property.
7440 Handle default-location.
7441 (tramp-gvfs-mount-spec): Return both prefix and mountspec.
7442 (tramp-gvfs-maybe-open-connection): Test, whether mountpoint
7443 exists. Raise an error, if not (due to a corresponding answer
7444 "no" in interactive questions, for example).
7445 Use `tramp-compat-funcall'.
7446
7447 * net/tramp-imap.el (top): Autoload `epg-make-context'.
7448 (tramp-imap-handle-copy-file): Add PRESERVE-SELINUX-CONTEXT.
7449 (tramp-imap-do-copy-or-rename-file)
7450 (tramp-imap-handle-insert-file-contents)
7451 (tramp-imap-handle-file-local-copy): Use `with-progress-reporter'.
7452 (tramp-imap-handle-delete-file): Add TRASH arg.
7453
7454 * net/tramp-smb.el (tramp-smb-handle-copy-file):
7455 Add PRESERVE-SELINUX-CONTEXT.
7456 (tramp-smb-handle-copy-file)
7457 (tramp-smb-handle-file-local-copy, tramp-smb-handle-rename-file)
7458 (tramp-smb-handle-write-region, tramp-smb-maybe-open-connection):
7459 Use `with-progress-reporter'.
7460 (tramp-smb-handle-delete-file): Add TRASH arg.
7461
7462 * net/tramp.el (tramp-methods): Move hostname to the end in all
7463 ssh `tramp-login-args'. Add `tramp-async-args' attribute where
7464 appropriate.
7465 (tramp-verbose): Describe verbose level 9.
7466 (tramp-completion-function-alist)
7467 (tramp-file-name-regexp, tramp-chunksize)
7468 (tramp-local-coding-commands, tramp-remote-coding-commands)
7469 (with-connection-property, tramp-completion-mode-p)
7470 (tramp-action-process-alive, tramp-action-out-of-band)
7471 (tramp-check-for-regexp, tramp-file-name-p, tramp-equal-remote)
7472 (tramp-exists-file-name-handler): Fix docstring.
7473 (tramp-remote-process-environment): Use `format' instead of
7474 `concat'. Protect version string by apostroph.
7475 (tramp-shell-prompt-pattern): Do not use a shy group in case of
7476 XEmacs.
7477 (tramp-file-name-regexp-unified)
7478 (tramp-completion-file-name-regexp-unified): On W32 systems, do
7479 not regard the volume letter as remote filename. (Bug#5447)
7480 (tramp-perl-file-attributes)
7481 (tramp-perl-directory-files-and-attributes): Don't pass "$3".
7482 (tramp-vc-registered-read-file-names): Read input as
7483 here-document, otherwise the command could exceed maximum length
7484 of command line.
7485 (tramp-file-name-handler-alist): Add `file-selinux-context' and
7486 `set-file-selinux-context'.
7487 (tramp-debug-message): Add `tramp-compat-funcall' to ignored
7488 backtrace functions.
7489 (tramp-error-with-buffer): Don't show the connection buffer when
7490 we are in completion mode.
7491 (tramp-progress-reporter-update, tramp-remote-selinux-p)
7492 (tramp-handle-file-selinux-context)
7493 (tramp-handle-set-file-selinux-context, tramp-process-sentinel)
7494 (tramp-connectable-p, tramp-open-shell, tramp-get-remote-trash):
7495 New defuns.
7496 (with-progress-reporter): New defmacro.
7497 (tramp-debug-outline-regexp): New defconst.
7498 (top, tramp-rfn-eshadow-setup-minibuffer)
7499 (tramp-rfn-eshadow-update-overlay, tramp-handle-set-file-times)
7500 (tramp-handle-dired-compress-file, tramp-handle-shell-command)
7501 (tramp-completion-mode-p, tramp-check-for-regexp)
7502 (tramp-open-connection-setup-interactive-shell)
7503 (tramp-compute-multi-hops, tramp-read-passwd, tramp-clear-passwd)
7504 (tramp-time-diff, tramp-coding-system-change-eol-conversion)
7505 (tramp-set-process-query-on-exit-flag, tramp-unload-tramp):
7506 Use `tramp-compat-funcall'.
7507 (tramp-handle-make-symbolic-link): Flush file properties.
7508 (tramp-handle-load, tramp-handle-file-local-copy)
7509 (tramp-handle-insert-file-contents, tramp-handle-write-region)
7510 (tramp-handle-vc-registered, tramp-maybe-send-script)
7511 (tramp-find-shell): Use `with-progress-reporter'.
7512 (tramp-do-file-attributes-with-stat): Add space in format string,
7513 in order to work around a bug in pdksh. Reported by Gilles Pion
7514 <gpion@lfdj.com>.
7515 (tramp-handle-verify-visited-file-modtime): Do not send a command
7516 when the connection is not established.
7517 (tramp-handle-set-file-times): Simplify the check for utc.
7518 (tramp-handle-directory-files-and-attributes)
7519 (tramp-get-remote-path): Use `copy-tree'.
7520 (tramp-completion-handle-file-name-all-completions): Ensure, that
7521 non remote files are still checked. Oops.
7522 (tramp-handle-copy-file, tramp-do-copy-or-rename-file):
7523 Handle PRESERVE-SELINUX-CONTEXT.
7524 (tramp-do-copy-or-rename-file): Add progress reporter.
7525 (tramp-do-copy-or-rename-file-directly): Do not use
7526 `tramp-handle-file-remote-p'.
7527 (tramp-do-copy-or-rename-file-out-of-band):
7528 Use `tramp-compat-delete-directory'.
7529 (tramp-do-copy-or-rename-file-out-of-band)
7530 (tramp-compute-multi-hops, tramp-maybe-open-connection):
7531 Use `format-spec-make'.
7532 (tramp-handle-delete-file): Add TRASH arg.
7533 (tramp-handle-dired-uncache): Flush directory cache, not only file
7534 cache.
7535 (tramp-handle-expand-file-name)
7536 (tramp-completion-handle-file-name-all-completions) 7448 (tramp-completion-handle-file-name-all-completions)
7537 (tramp-completion-handle-file-name-completion): 7449 (tramp-completion-handle-file-name-completion):
7538 Use `tramp-connectable-p'. 7450 Use `tramp-connectable-p'.
7539 (tramp-handle-start-file-process): Set connection property "vec".
7540 Use it, in order to invalidate file caches. Check only for
7541 `remote-tty' process property.
7542 Implement tty setting. (Bug#4604, Bug#6360)
7543 (tramp-file-name-for-operation): Add `call-process-region' and
7544 `set-file-selinux-context'.
7545 (tramp-find-foreign-file-name-handler)
7546 (tramp-advice-make-auto-save-file-name)
7547 (tramp-set-auto-save-file-modes): Remove superfluous check for
7548 `stringp'. This is done inside `tramp-tramp-file-p'.
7549 (tramp-file-name-handler): Trace 'quit. Catch the error for some
7550 operations when we are in completion mode. This gives the user
7551 the chance to correct the file name in the minibuffer.
7552 (tramp-completion-mode-p): Use `non-essential'.
7553 (tramp-handle-file-name-all-completions): Backward/ XEmacs
7554 compatibility: Use `completion-ignore-case' if
7555 `read-file-name-completion-ignore-case' does not exist.
7556 (tramp-get-debug-buffer): Use `tramp-debug-outline-regexp'.
7557 (tramp-find-shell, tramp-open-connection-setup-interactive-shell):
7558 `tramp-open-shell'.
7559 (tramp-action-password): Hide password prompt before next run.
7560 (tramp-process-actions): Widen connection buffer for the trace.
7561 (tramp-open-connection-setup-interactive-shell): Set `remote-tty'
7562 process property. Trace stty settings if `tramp-verbose' >= 9.
7563 Apply workaround for IRIX64 bug. Move argument of last
7564 `tramp-send-command' where it belongs to.
7565 (tramp-maybe-open-connection): Use `async-args' and `gw-args' in
7566 front of `login-args'.
7567 (tramp-get-ls-command, tramp-get-ls-command-with-dired): Run tests
7568 on "/dev/null" instead of "/".
7569 (tramp-get-ls-command-with-dired): Make test for "--dired"
7570 stronger.
7571 (tramp-set-auto-save-file-modes): Adapt version check.
7572 (tramp-set-process-query-on-exit-flag): Fix wrong parentheses.
7573 (tramp-handle-process-file): Call the program in a subshell, in
7574 order to preserve working directory.
7575 (tramp-handle-shell-command): Don't use hard-wired "/bin/sh" but
7576 `tramp-remote-sh' from `tramp-methods'.
7577 (tramp-get-ls-command): Make test for "--color=never" stronger.
7578 (tramp-check-for-regexp): Use (forward-line 1).
7579 7451
7580 * net/trampver.el: Update release number. 7452 * net/trampver.el: Update release number.
7581 7453
@@ -9847,9 +9719,8 @@
9847 * net/tramp-ftp.el (tramp-ftp-file-name-handler): 9719 * net/tramp-ftp.el (tramp-ftp-file-name-handler):
9848 Use `delete-file' instead of `tramp-compat-delete-file'. 9720 Use `delete-file' instead of `tramp-compat-delete-file'.
9849 9721
9850 * net/tramp-gvfs.el (tramp-gvfs-handle-delete-file): Rename arg. 9722 * net/tramp-gvfs.el (tramp-gvfs-handle-write-region): Use
9851 (tramp-gvfs-handle-write-region): Use `delete-file' instead of 9723 `delete-file' instead of `tramp-compat-delete-file'.
9852 `tramp-compat-delete-file'.
9853 9724
9854 * net/tramp-imap.el (tramp-imap-do-copy-or-rename-file): 9725 * net/tramp-imap.el (tramp-imap-do-copy-or-rename-file):
9855 Use `delete-file' instead of `tramp-compat-delete-file'. 9726 Use `delete-file' instead of `tramp-compat-delete-file'.
diff --git a/lisp/ChangeLog.10 b/lisp/ChangeLog.10
index 83ee20fa497..1c2f2b5b015 100644
--- a/lisp/ChangeLog.10
+++ b/lisp/ChangeLog.10
@@ -20591,7 +20591,7 @@
20591 20591
20592 * viper-cmd.el (viper-change-state): Got rid of make-local-hook. 20592 * viper-cmd.el (viper-change-state): Got rid of make-local-hook.
20593 (viper-special-read-and-insert-char): Make C-m work right in the r 20593 (viper-special-read-and-insert-char): Make C-m work right in the r
20594 comand. 20594 command.
20595 (viper-buffer-search-enable): Fixed format string. 20595 (viper-buffer-search-enable): Fixed format string.
20596 20596
20597 * viper-ex.el (ex-token-alist): Use ex-set-visited-file-name 20597 * viper-ex.el (ex-token-alist): Use ex-set-visited-file-name
diff --git a/lisp/ChangeLog.12 b/lisp/ChangeLog.12
index d2f7cab27f0..35572bd6105 100644
--- a/lisp/ChangeLog.12
+++ b/lisp/ChangeLog.12
@@ -10699,9 +10699,6 @@
10699 output of the next command. Reported by M Jared Finder 10699 output of the next command. Reported by M Jared Finder
10700 <jared@hpalace.com>. 10700 <jared@hpalace.com>.
10701 10701
10702 * net/tramp-vc.el (vc-user-login-name): Wrap defadvice with a test
10703 for `process-file', in order to let it work for older Emacsen too.
10704
107052006-04-17 Ralf Angeli <angeli@iwi.uni-sb.de> 107022006-04-17 Ralf Angeli <angeli@iwi.uni-sb.de>
10706 10703
10707 * textmodes/tex-mode.el (tex-font-lock-match-suscript): New function. 10704 * textmodes/tex-mode.el (tex-font-lock-match-suscript): New function.
@@ -11678,7 +11675,7 @@
11678 make underlining work for wide characters. 11675 make underlining work for wide characters.
11679 (org-goto-map, org-agenda-mode-map, org-mode-map): Explicitly bind 11676 (org-goto-map, org-agenda-mode-map, org-mode-map): Explicitly bind
11680 TAB to `org-cycle', to make sure that no binding in 11677 TAB to `org-cycle', to make sure that no binding in
11681 `outline-mode-map' can supercede it. 11678 `outline-mode-map' can supersede it.
11682 11679
116832006-03-14 Ken Manheimer <ken.manheimer@gmail.com> 116802006-03-14 Ken Manheimer <ken.manheimer@gmail.com>
11684 11681
@@ -19139,7 +19136,7 @@
19139 * pgg.el (pgg-decrypt): Passing along PASSPHRASE in call to 19136 * pgg.el (pgg-decrypt): Passing along PASSPHRASE in call to
19140 pgg-decrypt-region. 19137 pgg-decrypt-region.
19141 (pgg-pending-timers): A new hash for tracking the passphrase cache 19138 (pgg-pending-timers): A new hash for tracking the passphrase cache
19142 timers, so that new ones supercede old ones. 19139 timers, so that new ones supersede old ones.
19143 (pgg-add-passphrase-to-cache): Rename from 19140 (pgg-add-passphrase-to-cache): Rename from
19144 `pgg-add-passphrase-cache' to reduce confusion (all callers 19141 `pgg-add-passphrase-cache' to reduce confusion (all callers
19145 changed). Modified to cancel old timers when new ones are added. 19142 changed). Modified to cancel old timers when new ones are added.
@@ -19225,7 +19222,7 @@
19225 * pgg.el (pgg-decrypt): Passing along PASSPHRASE in call to 19222 * pgg.el (pgg-decrypt): Passing along PASSPHRASE in call to
19226 pgg-decrypt-region. 19223 pgg-decrypt-region.
19227 (pgg-pending-timers): A new hash for tracking the passphrase cache 19224 (pgg-pending-timers): A new hash for tracking the passphrase cache
19228 timers, so that new ones supercede old ones. 19225 timers, so that new ones supersede old ones.
19229 (pgg-add-passphrase-to-cache): Rename from 19226 (pgg-add-passphrase-to-cache): Rename from
19230 `pgg-add-passphrase-cache' to reduce confusion (all callers 19227 `pgg-add-passphrase-cache' to reduce confusion (all callers
19231 changed). Modified to cancel old timers when new ones are added. 19228 changed). Modified to cancel old timers when new ones are added.
diff --git a/lisp/ChangeLog.3 b/lisp/ChangeLog.3
index b54580ff0bc..8cafac2c0c4 100644
--- a/lisp/ChangeLog.3
+++ b/lisp/ChangeLog.3
@@ -4906,7 +4906,7 @@
4906 * two-column.el: Doc fixes. 4906 * two-column.el: Doc fixes.
4907 4907
4908 * loaddefs.el (function-keymap): Definition deleted; this has been 4908 * loaddefs.el (function-keymap): Definition deleted; this has been
4909 superceded by function-key-map. 4909 superseded by function-key-map.
4910 4910
4911 * gomoku.el (gomoku-mode-map): Use function key symbols, instead 4911 * gomoku.el (gomoku-mode-map): Use function key symbols, instead
4912 of the keypad.el facilities. 4912 of the keypad.el facilities.
@@ -6056,7 +6056,7 @@
6056 and `fill-column'. Code now actually sets `left-margin' and 6056 and `fill-column'. Code now actually sets `left-margin' and
6057 `fill-column', as advertised. 6057 `fill-column', as advertised.
6058 * text-mode.el (change-log-mode): Function deleted, since it's 6058 * text-mode.el (change-log-mode): Function deleted, since it's
6059 been superceded by the one in add-log.el. 6059 been superseded by the one in add-log.el.
6060 6060
60611992-06-14 Richard Stallman (rms@mole.gnu.ai.mit.edu) 60611992-06-14 Richard Stallman (rms@mole.gnu.ai.mit.edu)
6062 6062
@@ -6070,7 +6070,7 @@
6070 6070
60711992-06-12 Jim Blandy (jimb@pogo.cs.oberlin.edu) 60711992-06-12 Jim Blandy (jimb@pogo.cs.oberlin.edu)
6072 6072
6073 * isearch-mode.el: New package, which will probably supercede 6073 * isearch-mode.el: New package, which will probably supersede
6074 isearch.el. 6074 isearch.el.
6075 (isearch-mode-map, isearch-mode-meta-map): When initializing 6075 (isearch-mode-map, isearch-mode-meta-map): When initializing
6076 these, remember that vectors are no longer keymaps. 6076 these, remember that vectors are no longer keymaps.
@@ -10009,7 +10009,7 @@
10009 display-time-string. 10009 display-time-string.
10010 (rmail-pop-up): Default display-time-hook to automatically retrieve 10010 (rmail-pop-up): Default display-time-hook to automatically retrieve
10011 new mail if the variable rmail-pop-up is non-nil. 10011 new mail if the variable rmail-pop-up is non-nil.
10012 (add-clock-handler): Removed; superceded by timer.el. 10012 (add-clock-handler): Removed; superseded by timer.el.
10013 10013
10014 * loaddefs.el: Removed add-clock-handler. 10014 * loaddefs.el: Removed add-clock-handler.
10015 10015
@@ -10032,7 +10032,7 @@
10032 10032
10033 * loaddefs.el: Autoload for diff. 10033 * loaddefs.el: Autoload for diff.
10034 10034
10035 * files.el (diff): Superceded by diff.el. 10035 * files.el (diff): Superseded by diff.el.
10036 (diff-switches-function): Still needs to be merged into diff.el. 10036 (diff-switches-function): Still needs to be merged into diff.el.
10037 10037
10038 * diff.el: New file. 10038 * diff.el: New file.
diff --git a/lisp/allout.el b/lisp/allout.el
index d881e1177fa..ca72806b7d9 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -339,7 +339,7 @@ The types of elements in the layout specification are:
339 -- positive numbers open to the relative depth indicated by the 339 -- positive numbers open to the relative depth indicated by the
340 number, but do not force already opened subtopics to be closed. 340 number, but do not force already opened subtopics to be closed.
341 -- 0 means to close topic -- hide all subitems. 341 -- 0 means to close topic -- hide all subitems.
342 : -- repeat spec -- apply the preceeding element to all siblings at 342 : -- repeat spec -- apply the preceding element to all siblings at
343 current level, *up to* those siblings that would be covered by specs 343 current level, *up to* those siblings that would be covered by specs
344 following the `:' on the list. Ie, apply to all topics at level but 344 following the `:' on the list. Ie, apply to all topics at level but
345 trailing ones accounted for by trailing specs. (Only the first of 345 trailing ones accounted for by trailing specs. (Only the first of
@@ -3125,7 +3125,7 @@ situation."
3125 nil) 3125 nil)
3126 ;; rationale: if any intervening items were at a lower depth, we 3126 ;; rationale: if any intervening items were at a lower depth, we
3127 ;; would now be on the first offspring at the target depth -- ie, 3127 ;; would now be on the first offspring at the target depth -- ie,
3128 ;; the preceeding item (per the search direction) must be at a 3128 ;; the preceding item (per the search direction) must be at a
3129 ;; lesser depth. that's all we need to check. 3129 ;; lesser depth. that's all we need to check.
3130 (if backward (allout-next-heading) (allout-previous-heading)) 3130 (if backward (allout-next-heading) (allout-previous-heading))
3131 (if (< allout-recent-depth target-depth) 3131 (if (< allout-recent-depth target-depth)
@@ -4246,7 +4246,7 @@ With a negative argument, the item is shifted out using
4246 4246
4247With an argument greater than one, shift-in the item but not its 4247With an argument greater than one, shift-in the item but not its
4248offspring, making the item into a sibling of its former children, 4248offspring, making the item into a sibling of its former children,
4249and a child of sibling that formerly preceeded it. 4249and a child of sibling that formerly preceded it.
4250 4250
4251You are not allowed to shift the first offspring of a topic 4251You are not allowed to shift the first offspring of a topic
4252inwards, because that would yield a \"containment 4252inwards, because that would yield a \"containment
@@ -5364,7 +5364,7 @@ header and body. The elements of that list are:
5364 5364
5365 (goto-char start) 5365 (goto-char start)
5366 (beginning-of-line) 5366 (beginning-of-line)
5367 ;; Goto initial topic, and register preceeding stuff, if any: 5367 ;; Goto initial topic, and register preceding stuff, if any:
5368 (if (> (allout-goto-prefix-doublechecked) start) 5368 (if (> (allout-goto-prefix-doublechecked) start)
5369 ;; First topic follows beginning point -- register preliminary stuff: 5369 ;; First topic follows beginning point -- register preliminary stuff:
5370 (setq result 5370 (setq result
diff --git a/lisp/calc/calc-ext.el b/lisp/calc/calc-ext.el
index fcc3ecc1ab1..ec4e902f33d 100644
--- a/lisp/calc/calc-ext.el
+++ b/lisp/calc/calc-ext.el
@@ -1061,7 +1061,7 @@ calc-full-help calc-g-prefix-help calc-help-prefix
1061calc-hyperbolic-prefix-help calc-inv-hyp-prefix-help calc-option-prefix-help 1061calc-hyperbolic-prefix-help calc-inv-hyp-prefix-help calc-option-prefix-help
1062calc-inverse-prefix-help calc-j-prefix-help calc-k-prefix-help 1062calc-inverse-prefix-help calc-j-prefix-help calc-k-prefix-help
1063calc-m-prefix-help calc-r-prefix-help calc-s-prefix-help 1063calc-m-prefix-help calc-r-prefix-help calc-s-prefix-help
1064calc-t-prefix-help calc-u-prefix-help calc-ul-prefix-help 1064calc-t-prefix-help calc-u-prefix-help calc-l-prefix-help
1065calc-v-prefix-help) 1065calc-v-prefix-help)
1066 1066
1067 ("calc-incom" calc-begin-complex calc-begin-vector calc-comma 1067 ("calc-incom" calc-begin-complex calc-begin-vector calc-comma
diff --git a/lisp/calc/calc-math.el b/lisp/calc/calc-math.el
index 185ed18ed42..92af9263b28 100644
--- a/lisp/calc/calc-math.el
+++ b/lisp/calc/calc-math.el
@@ -1574,7 +1574,7 @@ If this can't be done, return NIL."
1574 (if calc-infinite-mode 1574 (if calc-infinite-mode
1575 '(neg (var inf var-inf)) 1575 '(neg (var inf var-inf))
1576 (math-reject-arg x "*Logarithm of zero"))) 1576 (math-reject-arg x "*Logarithm of zero")))
1577 (calc-symbolic-mode (signal 'inexact-result nil)) 1577 ;;(calc-symbolic-mode (signal 'inexact-result nil))
1578 ((Math-numberp x) 1578 ((Math-numberp x)
1579 (math-with-extra-prec 2 1579 (math-with-extra-prec 2
1580 (let ((xf (math-float x))) 1580 (let ((xf (math-float x)))
diff --git a/lisp/calc/calc-vec.el b/lisp/calc/calc-vec.el
index 5dfbc2d51f5..47ef3241b3e 100644
--- a/lisp/calc/calc-vec.el
+++ b/lisp/calc/calc-vec.el
@@ -759,12 +759,13 @@
759 (math-reject-arg n "*Index out of range"))))) 759 (math-reject-arg n "*Index out of range")))))
760 760
761(defun calcFunc-subscr (mat n &optional m) 761(defun calcFunc-subscr (mat n &optional m)
762 (setq mat (calcFunc-mrow mat n)) 762 (if (eq (car-safe mat) 'var) nil
763 (if m 763 (setq mat (calcFunc-mrow mat n))
764 (if (math-num-integerp n) 764 (if m
765 (calcFunc-mrow mat m) 765 (if (math-num-integerp n)
766 (calcFunc-mcol mat m)) 766 (calcFunc-mrow mat m)
767 mat)) 767 (calcFunc-mcol mat m))
768 mat)))
768 769
769;;; Get the Nth column of a matrix. 770;;; Get the Nth column of a matrix.
770(defun math-mat-col (mat n) 771(defun math-mat-col (mat n)
diff --git a/lisp/calendar/cal-hebrew.el b/lisp/calendar/cal-hebrew.el
index f2dfc3c51fe..63e7484e127 100644
--- a/lisp/calendar/cal-hebrew.el
+++ b/lisp/calendar/cal-hebrew.el
@@ -792,6 +792,20 @@ from the cursor position."
792(define-obsolete-function-alias 'list-yahrzeit-dates 792(define-obsolete-function-alias 'list-yahrzeit-dates
793 'calendar-hebrew-list-yahrzeits "23.1") 793 'calendar-hebrew-list-yahrzeits "23.1")
794 794
795(defun calendar-hebrew-birthday (date year)
796 "Absolute date of the anniversary of Hebrew birth DATE, in Hebrew YEAR."
797 (let ((b-day (calendar-extract-day date))
798 (b-month (calendar-extract-month date))
799 (b-year (calendar-extract-year date)))
800 ;; If it's Adar in a normal Hebrew year or Adar II in a Hebrew leap year...
801 (if (= b-month (calendar-hebrew-last-month-of-year b-year))
802 ;; ...then use the same day in last month of Hebrew year.
803 (calendar-hebrew-to-absolute
804 (list (calendar-hebrew-last-month-of-year year) b-day year))
805 ;; Else use the normal anniversary of the birth date,
806 ;; or the corresponding day in years without that date.
807 (+ (calendar-hebrew-to-absolute (list b-month 1 year)) b-day -1))))
808
795(defvar date) 809(defvar date)
796 810
797;; To be called from diary-list-sexp-entries, where DATE is bound. 811;; To be called from diary-list-sexp-entries, where DATE is bound.
@@ -800,6 +814,37 @@ from the cursor position."
800 "Hebrew calendar equivalent of date diary entry." 814 "Hebrew calendar equivalent of date diary entry."
801 (format "Hebrew date (until sunset): %s" (calendar-hebrew-date-string date))) 815 (format "Hebrew date (until sunset): %s" (calendar-hebrew-date-string date)))
802 816
817(defvar entry)
818(declare-function diary-ordinal-suffix "diary-lib" (n))
819
820;;;###diary-autoload
821(defun diary-hebrew-birthday (month day year &optional after-sunset)
822 "Hebrew birthday diary entry.
823Entry applies if date is birthdate (MONTH DAY YEAR), or the day before.
824The order of the input parameters changes according to
825`calendar-date-style' (e.g. to DAY MONTH YEAR in the European style).
826
827Assumes the associated diary entry is the name of the person.
828
829Although the date of birth is specified by the *civil* calendar,
830this function determines the proper Hebrew calendar birthday.
831If the optional argument AFTER-SUNSET is non-nil, this means the
832birth occurred after local sunset on the given civil date.
833In this case, the following civil date corresponds to the Hebrew birthday."
834 (let* ((h-date (calendar-hebrew-from-absolute
835 (+ (calendar-absolute-from-gregorian
836 (diary-make-date month day year))
837 (if after-sunset 1 0))))
838 (h-year (calendar-extract-year h-date)) ; birth-day
839 (d (calendar-absolute-from-gregorian date)) ; today
840 (h-yr (calendar-extract-year (calendar-hebrew-from-absolute d)))
841 (age (- h-yr h-year)) ; current H year - birth H-year
842 (b-date (calendar-hebrew-birthday h-date h-yr)))
843 (and (> age 0) (memq b-date (list d (1+ d)))
844 (format "%s's %d%s Hebrew birthday%s" entry age
845 (diary-ordinal-suffix age)
846 (if (= b-date d) "" " (evening)")))))
847
803;;;###diary-autoload 848;;;###diary-autoload
804(defun diary-hebrew-omer (&optional mark) 849(defun diary-hebrew-omer (&optional mark)
805 "Omer count diary entry. 850 "Omer count diary entry.
@@ -829,8 +874,6 @@ use when highlighting the day in the calendar."
829;;;###diary-autoload 874;;;###diary-autoload
830(define-obsolete-function-alias 'diary-omer 'diary-hebrew-omer "23.1") 875(define-obsolete-function-alias 'diary-omer 'diary-hebrew-omer "23.1")
831 876
832(defvar entry)
833
834(autoload 'diary-make-date "diary-lib") 877(autoload 'diary-make-date "diary-lib")
835 878
836(declare-function diary-ordinal-suffix "diary-lib" (n)) 879(declare-function diary-ordinal-suffix "diary-lib" (n))
diff --git a/lisp/cedet/semantic/analyze.el b/lisp/cedet/semantic/analyze.el
index 8a0fbd5cc37..5cdd1577a6e 100644
--- a/lisp/cedet/semantic/analyze.el
+++ b/lisp/cedet/semantic/analyze.el
@@ -100,7 +100,7 @@ Usually bound to the dimension of a single symbol or command.")
100 :type list 100 :type list
101 :documentation "List of tags defining local text. 101 :documentation "List of tags defining local text.
102This can be nil, or a list where the last element can be a string 102This can be nil, or a list where the last element can be a string
103representing text that may be incomplete. Preceeding elements 103representing text that may be incomplete. Preceding elements
104must be semantic tags representing variables or functions 104must be semantic tags representing variables or functions
105called in a dereference sequence.") 105called in a dereference sequence.")
106 (prefixclass :initarg :prefixclass 106 (prefixclass :initarg :prefixclass
diff --git a/lisp/cedet/semantic/complete.el b/lisp/cedet/semantic/complete.el
index 31e92724a00..47cb722e005 100644
--- a/lisp/cedet/semantic/complete.el
+++ b/lisp/cedet/semantic/complete.el
@@ -1264,7 +1264,7 @@ inserted into the current context.")
1264;; generated by a collector. This format is in semanticdb search 1264;; generated by a collector. This format is in semanticdb search
1265;; form. This vaguely standard form is a bit challenging to navigate 1265;; form. This vaguely standard form is a bit challenging to navigate
1266;; because the tags do not contain buffer info, but the file associated 1266;; because the tags do not contain buffer info, but the file associated
1267;; with the tags preceed the tag in the list. 1267;; with the tags precedes the tag in the list.
1268;; 1268;;
1269;; Basic displayors don't care, and can strip the results. 1269;; Basic displayors don't care, and can strip the results.
1270;; Advanced highlighting displayors need to know when they need 1270;; Advanced highlighting displayors need to know when they need
diff --git a/lisp/cedet/semantic/edit.el b/lisp/cedet/semantic/edit.el
index ef206fd3122..7f7e82a95c2 100644
--- a/lisp/cedet/semantic/edit.el
+++ b/lisp/cedet/semantic/edit.el
@@ -426,7 +426,7 @@ See `semantic-edits-change-leaf-tag' for details on parents."
426 ;; confirmed as the lineage of `overlapped-tags' 426 ;; confirmed as the lineage of `overlapped-tags'
427 ;; which must have a value by now. 427 ;; which must have a value by now.
428 428
429 ;; Loop over the search list to find the preceeding CDR. 429 ;; Loop over the search list to find the preceding CDR.
430 ;; Fortunatly, (car overlapped-tags) happens to be 430 ;; Fortunatly, (car overlapped-tags) happens to be
431 ;; the first tag positionally. 431 ;; the first tag positionally.
432 (let ((tokstart (semantic-tag-start (car overlapped-tags)))) 432 (let ((tokstart (semantic-tag-start (car overlapped-tags))))
@@ -874,7 +874,7 @@ pre-positioned to a convenient location."
874 )) 874 ))
875 (message "To Remove Middle Tag: (%s)" 875 (message "To Remove Middle Tag: (%s)"
876 (semantic-format-tag-name first))) 876 (semantic-format-tag-name first)))
877 ;; Find in the cache the preceeding tag 877 ;; Find in the cache the preceding tag
878 (while (and cachestart (not (eq first (car (cdr cachestart))))) 878 (while (and cachestart (not (eq first (car (cdr cachestart)))))
879 (setq cachestart (cdr cachestart))) 879 (setq cachestart (cdr cachestart)))
880 ;; Find the last tag 880 ;; Find the last tag
diff --git a/lisp/cedet/semantic/format.el b/lisp/cedet/semantic/format.el
index ecd03ccec73..fa6e7517624 100644
--- a/lisp/cedet/semantic/format.el
+++ b/lisp/cedet/semantic/format.el
@@ -296,7 +296,7 @@ local definitions."
296 296
297(define-overloadable-function semantic-format-tag-canonical-name (tag &optional parent color) 297(define-overloadable-function semantic-format-tag-canonical-name (tag &optional parent color)
298 "Return a canonical name for TAG. 298 "Return a canonical name for TAG.
299A canonical name includes the names of any parents or namespaces preceeding 299A canonical name includes the names of any parents or namespaces preceding
300the tag. 300the tag.
301Optional argument PARENT is the parent type if TAG is a detail. 301Optional argument PARENT is the parent type if TAG is a detail.
302Optional argument COLOR means highlight the prototype with font-lock colors.") 302Optional argument COLOR means highlight the prototype with font-lock colors.")
diff --git a/lisp/cedet/semantic/java.el b/lisp/cedet/semantic/java.el
index 4489d0ffae5..71a205386db 100644
--- a/lisp/cedet/semantic/java.el
+++ b/lisp/cedet/semantic/java.el
@@ -256,7 +256,7 @@ Optional argument COLOR indicates that color should be mixed in."
256(define-mode-local-override semantic-documentation-for-tag 256(define-mode-local-override semantic-documentation-for-tag
257 java-mode (&optional tag nosnarf) 257 java-mode (&optional tag nosnarf)
258 "Find documentation from TAG and return it as a clean string. 258 "Find documentation from TAG and return it as a clean string.
259Java have documentation set in a comment preceeding TAG's definition. 259Java has documentation set in a comment preceding TAG's definition.
260Attempt to strip out comment syntactic sugar, unless optional argument 260Attempt to strip out comment syntactic sugar, unless optional argument
261NOSNARF is non-nil. 261NOSNARF is non-nil.
262If NOSNARF is 'lex, then return the semantic lex token." 262If NOSNARF is 'lex, then return the semantic lex token."
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index 986c9edfd2d..c533c81be0e 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -1025,9 +1025,9 @@ See Info node `(emacs)Subdir switches' for more details."
1025 ;; Keeps any marks that may be present in column one (doing this 1025 ;; Keeps any marks that may be present in column one (doing this
1026 ;; here is faster than with dired-add-entry's optional arg). 1026 ;; here is faster than with dired-add-entry's optional arg).
1027 ;; Does not update other dired buffers. Use dired-relist-entry for that. 1027 ;; Does not update other dired buffers. Use dired-relist-entry for that.
1028 (let ((char (following-char)) 1028 (let* ((opoint (line-beginning-position))
1029 (opoint (line-beginning-position)) 1029 (char (char-after opoint))
1030 (buffer-read-only)) 1030 (buffer-read-only))
1031 (delete-region opoint (progn (forward-line 1) (point))) 1031 (delete-region opoint (progn (forward-line 1) (point)))
1032 (if file 1032 (if file
1033 (progn 1033 (progn
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index ce07676fc99..9941c7a0db5 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -786,6 +786,7 @@ See also `dired-enable-local-variables'."
786 'hack-dir-local-variables-non-file-buffer "24.1") 786 'hack-dir-local-variables-non-file-buffer "24.1")
787 787
788;; Not sure this is worth having a dedicated command for... 788;; Not sure this is worth having a dedicated command for...
789;; See the more general features in files-x.el.
789(defun dired-omit-here-always () 790(defun dired-omit-here-always ()
790 "Create `dir-locals-file' setting `dired-omit-mode' to t in `dired-mode'. 791 "Create `dir-locals-file' setting `dired-omit-mode' to t in `dired-mode'.
791If in a Dired buffer, reverts it." 792If in a Dired buffer, reverts it."
@@ -798,7 +799,9 @@ replace it with a dir-locals-file `./%s'"
798 (if (file-exists-p dir-locals-file) 799 (if (file-exists-p dir-locals-file)
799 (message "File `./%s' already exists." dir-locals-file) 800 (message "File `./%s' already exists." dir-locals-file)
800 (with-temp-buffer 801 (with-temp-buffer
801 (insert "((dired-mode . ((dired-omit-mode . t))))\n") 802 (insert "\
803\((dired-mode . ((subdirs . nil)
804 (dired-omit-mode . t))))\n")
802 (write-file dir-locals-file)) 805 (write-file dir-locals-file))
803 ;; Run extra-hooks and revert directory. 806 ;; Run extra-hooks and revert directory.
804 (when (derived-mode-p 'dired-mode) 807 (when (derived-mode-p 'dired-mode)
@@ -845,7 +848,7 @@ replace it with a dir-locals-file `./%s'"
845 848
846(defvar dired-guess-shell-alist-default 849(defvar dired-guess-shell-alist-default
847 (list 850 (list
848 (list "\\.tar$" 851 (list "\\.tar\\'"
849 '(if dired-guess-shell-gnutar 852 '(if dired-guess-shell-gnutar
850 (concat dired-guess-shell-gnutar " xvf") 853 (concat dired-guess-shell-gnutar " xvf")
851 "tar xvf") 854 "tar xvf")
@@ -863,7 +866,7 @@ replace it with a dir-locals-file `./%s'"
863 866
864 ;; REGEXPS for compressed archives must come before the .Z rule to 867 ;; REGEXPS for compressed archives must come before the .Z rule to
865 ;; be recognized: 868 ;; be recognized:
866 (list "\\.tar\\.Z$" 869 (list "\\.tar\\.Z\\'"
867 ;; Untar it. 870 ;; Untar it.
868 '(if dired-guess-shell-gnutar 871 '(if dired-guess-shell-gnutar
869 (concat dired-guess-shell-gnutar " zxvf") 872 (concat dired-guess-shell-gnutar " zxvf")
@@ -873,7 +876,7 @@ replace it with a dir-locals-file `./%s'"
873 " " dired-guess-shell-znew-switches)) 876 " " dired-guess-shell-znew-switches))
874 877
875 ;; gzip'ed archives 878 ;; gzip'ed archives
876 (list "\\.t\\(ar\\.\\)?gz$" 879 (list "\\.t\\(ar\\.\\)?gz\\'"
877 '(if dired-guess-shell-gnutar 880 '(if dired-guess-shell-gnutar
878 (concat dired-guess-shell-gnutar " zxvf") 881 (concat dired-guess-shell-gnutar " zxvf")
879 (concat "gunzip -qc * | tar xvf -")) 882 (concat "gunzip -qc * | tar xvf -"))
@@ -893,7 +896,7 @@ replace it with a dir-locals-file `./%s'"
893 (concat "gunzip -qc * | tar tvf -"))) 896 (concat "gunzip -qc * | tar tvf -")))
894 897
895 ;; bzip2'ed archives 898 ;; bzip2'ed archives
896 (list "\\.t\\(ar\\.bz2\\|bz\\)$" 899 (list "\\.t\\(ar\\.bz2\\|bz\\)\\'"
897 "bunzip2 -c * | tar xvf -" 900 "bunzip2 -c * | tar xvf -"
898 ;; Extract files into a separate subdirectory 901 ;; Extract files into a separate subdirectory
899 '(concat "mkdir " (file-name-sans-extension file) 902 '(concat "mkdir " (file-name-sans-extension file)
@@ -903,7 +906,7 @@ replace it with a dir-locals-file `./%s'"
903 "bunzip2") 906 "bunzip2")
904 907
905 ;; xz'ed archives 908 ;; xz'ed archives
906 (list "\\.t\\(ar\\.\\)?xz$" 909 (list "\\.t\\(ar\\.\\)?xz\\'"
907 "unxz -c * | tar xvf -" 910 "unxz -c * | tar xvf -"
908 ;; Extract files into a separate subdirectory 911 ;; Extract files into a separate subdirectory
909 '(concat "mkdir " (file-name-sans-extension file) 912 '(concat "mkdir " (file-name-sans-extension file)
@@ -912,94 +915,96 @@ replace it with a dir-locals-file `./%s'"
912 ;; Optional decompression. 915 ;; Optional decompression.
913 "unxz") 916 "unxz")
914 917
915 '("\\.shar\\.Z$" "zcat * | unshar") 918 '("\\.shar\\.Z\\'" "zcat * | unshar")
916 '("\\.shar\\.g?z$" "gunzip -qc * | unshar") 919 '("\\.shar\\.g?z\\'" "gunzip -qc * | unshar")
917 920
918 '("\\.e?ps$" "ghostview" "xloadimage" "lpr") 921 '("\\.e?ps\\'" "ghostview" "xloadimage" "lpr")
919 (list "\\.e?ps\\.g?z$" "gunzip -qc * | ghostview -" 922 (list "\\.e?ps\\.g?z\\'" "gunzip -qc * | ghostview -"
920 ;; Optional decompression. 923 ;; Optional decompression.
921 '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q"))) 924 '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
922 (list "\\.e?ps\\.Z$" "zcat * | ghostview -" 925 (list "\\.e?ps\\.Z\\'" "zcat * | ghostview -"
923 ;; Optional conversion to gzip format. 926 ;; Optional conversion to gzip format.
924 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q") 927 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
925 " " dired-guess-shell-znew-switches)) 928 " " dired-guess-shell-znew-switches))
926 929
927 '("\\.patch$" "cat * | patch") 930 '("\\.patch\\'" "cat * | patch")
928 (list "\\.patch\\.g?z$" "gunzip -qc * | patch" 931 (list "\\.patch\\.g?z\\'" "gunzip -qc * | patch"
929 ;; Optional decompression. 932 ;; Optional decompression.
930 '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q"))) 933 '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
931 (list "\\.patch\\.Z$" "zcat * | patch" 934 (list "\\.patch\\.Z\\'" "zcat * | patch"
932 ;; Optional conversion to gzip format. 935 ;; Optional conversion to gzip format.
933 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q") 936 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
934 " " dired-guess-shell-znew-switches)) 937 " " dired-guess-shell-znew-switches))
935 938
936 ;; The following four extensions are useful with dired-man ("N" key) 939 ;; The following four extensions are useful with dired-man ("N" key)
937 (list "\\.\\(?:[0-9]\\|man\\)$" '(progn (require 'man) 940 (list "\\.\\(?:[0-9]\\|man\\)\\'" '(progn (require 'man)
938 (if (Man-support-local-filenames) 941 (if (Man-support-local-filenames)
939 "man -l" 942 "man -l"
940 "cat * | tbl | nroff -man -h"))) 943 "cat * | tbl | nroff -man -h")))
941 (list "\\.\\(?:[0-9]\\|man\\)\\.g?z$" '(progn (require 'man) 944 (list "\\.\\(?:[0-9]\\|man\\)\\.g?z\\'" '(progn (require 'man)
942 (if (Man-support-local-filenames) 945 (if (Man-support-local-filenames)
943 "man -l" 946 "man -l"
944 "gunzip -qc * | tbl | nroff -man -h")) 947 "gunzip -qc * | tbl | nroff -man -h"))
945 ;; Optional decompression. 948 ;; Optional decompression.
946 '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q"))) 949 '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
947 (list "\\.[0-9]\\.Z$" '(progn (require 'man) 950 (list "\\.[0-9]\\.Z\\'" '(progn (require 'man)
948 (if (Man-support-local-filenames) 951 (if (Man-support-local-filenames)
949 "man -l" 952 "man -l"
950 "zcat * | tbl | nroff -man -h")) 953 "zcat * | tbl | nroff -man -h"))
951 ;; Optional conversion to gzip format. 954 ;; Optional conversion to gzip format.
952 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q") 955 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
953 " " dired-guess-shell-znew-switches)) 956 " " dired-guess-shell-znew-switches))
954 '("\\.pod$" "perldoc" "pod2man * | nroff -man") 957 '("\\.pod\\'" "perldoc" "pod2man * | nroff -man")
955 958
956 '("\\.dvi$" "xdvi" "dvips") ; preview and printing 959 '("\\.dvi\\'" "xdvi" "dvips") ; preview and printing
957 '("\\.au$" "play") ; play Sun audiofiles 960 '("\\.au\\'" "play") ; play Sun audiofiles
958 '("\\.mpe?g$\\|\\.avi$" "xine -p") 961 '("\\.mpe?g\\'\\|\\.avi\\'" "xine -p")
959 '("\\.ogg$" "ogg123") 962 '("\\.ogg\\'" "ogg123")
960 '("\\.mp3$" "mpg123") 963 '("\\.mp3\\'" "mpg123")
961 '("\\.wav$" "play") 964 '("\\.wav\\'" "play")
962 '("\\.uu$" "uudecode") ; for uudecoded files 965 '("\\.uu\\'" "uudecode") ; for uudecoded files
963 '("\\.hqx$" "mcvert") 966 '("\\.hqx\\'" "mcvert")
964 '("\\.sh$" "sh") ; execute shell scripts 967 '("\\.sh\\'" "sh") ; execute shell scripts
965 '("\\.xbm$" "bitmap") ; view X11 bitmaps 968 '("\\.xbm\\'" "bitmap") ; view X11 bitmaps
966 '("\\.gp$" "gnuplot") 969 '("\\.gp\\'" "gnuplot")
967 '("\\.p[bgpn]m$" "xloadimage") 970 '("\\.p[bgpn]m\\'" "xloadimage")
968 '("\\.gif$" "xloadimage") ; view gif pictures 971 '("\\.gif\\'" "xloadimage") ; view gif pictures
969 '("\\.tif$" "xloadimage") 972 '("\\.tif\\'" "xloadimage")
970 '("\\.png$" "display") ; xloadimage 4.1 doesn't grok PNG 973 '("\\.png\\'" "display") ; xloadimage 4.1 doesn't grok PNG
971 '("\\.jpe?g$" "xloadimage") 974 '("\\.jpe?g\\'" "xloadimage")
972 '("\\.fig$" "xfig") ; edit fig pictures 975 '("\\.fig\\'" "xfig") ; edit fig pictures
973 '("\\.out$" "xgraph") ; for plotting purposes. 976 '("\\.out\\'" "xgraph") ; for plotting purposes.
974 '("\\.tex$" "latex" "tex") 977 '("\\.tex\\'" "latex" "tex")
975 '("\\.texi\\(nfo\\)?$" "makeinfo" "texi2dvi") 978 '("\\.texi\\(nfo\\)?\\'" "makeinfo" "texi2dvi")
976 '("\\.pdf$" "xpdf") 979 '("\\.pdf\\'" "xpdf")
977 '("\\.doc$" "antiword" "strings") 980 '("\\.doc\\'" "antiword" "strings")
978 '("\\.rpm$" "rpm -qilp" "rpm -ivh") 981 '("\\.rpm\\'" "rpm -qilp" "rpm -ivh")
979 '("\\.dia$" "dia") 982 '("\\.dia\\'" "dia")
980 '("\\.mgp$" "mgp") 983 '("\\.mgp\\'" "mgp")
981 984
982 ;; Some other popular archivers. 985 ;; Some other popular archivers.
983 (list "\\.zip$" "unzip" "unzip -l" 986 (list "\\.zip\\'" "unzip" "unzip -l"
984 ;; Extract files into a separate subdirectory 987 ;; Extract files into a separate subdirectory
985 '(concat "unzip" (if dired-guess-shell-gzip-quiet " -q") 988 '(concat "unzip" (if dired-guess-shell-gzip-quiet " -q")
986 " -d " (file-name-sans-extension file))) 989 " -d " (file-name-sans-extension file)))
987 '("\\.zoo$" "zoo x//") 990 '("\\.zoo\\'" "zoo x//")
988 '("\\.lzh$" "lharc x") 991 '("\\.lzh\\'" "lharc x")
989 '("\\.arc$" "arc x") 992 '("\\.arc\\'" "arc x")
990 '("\\.shar$" "unshar") 993 '("\\.shar\\'" "unshar")
994 '("\\.rar\\'" "unrar x")
995 '("\\.7z\\'" "7z x")
991 996
992 ;; Compression. 997 ;; Compression.
993 (list "\\.g?z$" '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q"))) 998 (list "\\.g?z\\'" '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
994 (list "\\.dz$" "dictunzip") 999 (list "\\.dz\\'" "dictunzip")
995 (list "\\.bz2$" "bunzip2") 1000 (list "\\.bz2\\'" "bunzip2")
996 (list "\\.xz$" "unxz") 1001 (list "\\.xz\\'" "unxz")
997 (list "\\.Z$" "uncompress" 1002 (list "\\.Z\\'" "uncompress"
998 ;; Optional conversion to gzip format. 1003 ;; Optional conversion to gzip format.
999 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q") 1004 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
1000 " " dired-guess-shell-znew-switches)) 1005 " " dired-guess-shell-znew-switches))
1001 1006
1002 '("\\.sign?$" "gpg --verify")) 1007 '("\\.sign?\\'" "gpg --verify"))
1003 1008
1004 "Default alist used for shell command guessing. 1009 "Default alist used for shell command guessing.
1005See `dired-guess-shell-alist-user'.") 1010See `dired-guess-shell-alist-user'.")
diff --git a/lisp/dired.el b/lisp/dired.el
index 3f31ba58139..c113f0cb2f4 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -249,9 +249,19 @@ Local to each dired buffer. May be a list, in which case the car is the
249directory name and the cdr is the list of files to mention. 249directory name and the cdr is the list of files to mention.
250The directory name must be absolute, but need not be fully expanded.") 250The directory name must be absolute, but need not be fully expanded.")
251 251
252;; Beware of "-l;reboot" etc. See bug#3230.
253(defun dired-safe-switches-p (switches)
254 "Return non-nil if string SWITCHES does not look risky for dired."
255 (or (not switches)
256 (and (stringp switches)
257 (< (length switches) 100) ; arbitrary
258 (string-match "\\` *-[- [:alnum:]]+\\'" switches))))
259
252(defvar dired-actual-switches nil 260(defvar dired-actual-switches nil
253 "The value of `dired-listing-switches' used to make this buffer's text.") 261 "The value of `dired-listing-switches' used to make this buffer's text.")
254 262
263(put 'dired-actual-switches 'safe-local-variable 'dired-safe-switches-p)
264
255(defvar dired-re-inode-size "[0-9 \t]*" 265(defvar dired-re-inode-size "[0-9 \t]*"
256 "Regexp for optional initial inode and file size as made by `ls -i -s'.") 266 "Regexp for optional initial inode and file size as made by `ls -i -s'.")
257 267
@@ -3614,7 +3624,7 @@ Ask means pop up a menu for the user to select one of copy, move or link."
3614;;;;;; dired-run-shell-command dired-do-shell-command dired-do-async-shell-command 3624;;;;;; dired-run-shell-command dired-do-shell-command dired-do-async-shell-command
3615;;;;;; dired-clean-directory dired-do-print dired-do-touch dired-do-chown 3625;;;;;; dired-clean-directory dired-do-print dired-do-touch dired-do-chown
3616;;;;;; dired-do-chgrp dired-do-chmod dired-compare-directories dired-backup-diff 3626;;;;;; dired-do-chgrp dired-do-chmod dired-compare-directories dired-backup-diff
3617;;;;;; dired-diff) "dired-aux" "dired-aux.el" "9d6333fab9c0f1b49e0bf2a536b8f245") 3627;;;;;; dired-diff) "dired-aux" "dired-aux.el" "154cdfbf451aedec60c5012b625ff329")
3618;;; Generated autoloads from dired-aux.el 3628;;; Generated autoloads from dired-aux.el
3619 3629
3620(autoload 'dired-diff "dired-aux" "\ 3630(autoload 'dired-diff "dired-aux" "\
@@ -4073,7 +4083,7 @@ true then the type of the file linked to by FILE is printed instead.
4073;;;*** 4083;;;***
4074 4084
4075;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el" 4085;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el"
4076;;;;;; "515e1dbc42acebd9a0175c4209b6673c") 4086;;;;;; "3b8851132739ab3f9054bf639873c53e")
4077;;; Generated autoloads from dired-x.el 4087;;; Generated autoloads from dired-x.el
4078 4088
4079(autoload 'dired-jump "dired-x" "\ 4089(autoload 'dired-jump "dired-x" "\
diff --git a/lisp/emacs-lisp/assoc.el b/lisp/emacs-lisp/assoc.el
index aa85916cc3f..31be851f2dd 100644
--- a/lisp/emacs-lisp/assoc.el
+++ b/lisp/emacs-lisp/assoc.el
@@ -1,4 +1,4 @@
1;;; assoc.el --- insert/delete/sort functions on association lists 1;;; assoc.el --- insert/delete functions on association lists
2 2
3;; Copyright (C) 1996, 2001-2011 Free Software Foundation, Inc. 3;; Copyright (C) 1996, 2001-2011 Free Software Foundation, Inc.
4 4
@@ -35,7 +35,7 @@ head is one matching KEY. Returns the sorted list and doesn't affect
35the order of any other key-value pair. Side effect sets alist to new 35the order of any other key-value pair. Side effect sets alist to new
36sorted list." 36sorted list."
37 (set alist-symbol 37 (set alist-symbol
38 (sort (copy-alist (eval alist-symbol)) 38 (sort (copy-alist (symbol-value alist-symbol))
39 (function (lambda (a b) (equal (car a) key)))))) 39 (function (lambda (a b) (equal (car a) key))))))
40 40
41 41
@@ -75,7 +75,7 @@ of the alist (with value nil if VALUE is nil or not supplied)."
75 (lexical-let ((elem (aelement key value)) 75 (lexical-let ((elem (aelement key value))
76 alist) 76 alist)
77 (asort alist-symbol key) 77 (asort alist-symbol key)
78 (setq alist (eval alist-symbol)) 78 (setq alist (symbol-value alist-symbol))
79 (cond ((null alist) (set alist-symbol elem)) 79 (cond ((null alist) (set alist-symbol elem))
80 ((anot-head-p alist key) (set alist-symbol (nconc elem alist))) 80 ((anot-head-p alist key) (set alist-symbol (nconc elem alist)))
81 (value (setcar alist (car elem))) 81 (value (setcar alist (car elem)))
@@ -87,7 +87,7 @@ of the alist (with value nil if VALUE is nil or not supplied)."
87Alist is referenced by ALIST-SYMBOL and the key-value pair to remove 87Alist is referenced by ALIST-SYMBOL and the key-value pair to remove
88is pair matching KEY. Returns the altered alist." 88is pair matching KEY. Returns the altered alist."
89 (asort alist-symbol key) 89 (asort alist-symbol key)
90 (lexical-let ((alist (eval alist-symbol))) 90 (lexical-let ((alist (symbol-value alist-symbol)))
91 (cond ((null alist) nil) 91 (cond ((null alist) nil)
92 ((anot-head-p alist key) alist) 92 ((anot-head-p alist key) alist)
93 (t (set alist-symbol (cdr alist)))))) 93 (t (set alist-symbol (cdr alist))))))
@@ -133,7 +133,7 @@ extra values are ignored. Returns the created alist."
133 (t 133 (t
134 (amake alist-symbol keycdr valcdr) 134 (amake alist-symbol keycdr valcdr)
135 (aput alist-symbol keycar valcar)))) 135 (aput alist-symbol keycar valcar))))
136 (eval alist-symbol)) 136 (symbol-value alist-symbol))
137 137
138(provide 'assoc) 138(provide 'assoc)
139 139
diff --git a/lisp/emacs-lisp/cl-loaddefs.el b/lisp/emacs-lisp/cl-loaddefs.el
index 8e192a18459..08001171ed1 100644
--- a/lisp/emacs-lisp/cl-loaddefs.el
+++ b/lisp/emacs-lisp/cl-loaddefs.el
@@ -282,7 +282,7 @@ Not documented
282;;;;;; do-all-symbols do-symbols dotimes dolist do* do loop return-from 282;;;;;; do-all-symbols do-symbols dotimes dolist do* do loop return-from
283;;;;;; return block etypecase typecase ecase case load-time-value 283;;;;;; return block etypecase typecase ecase case load-time-value
284;;;;;; eval-when destructuring-bind function* defmacro* defun* gentemp 284;;;;;; eval-when destructuring-bind function* defmacro* defun* gentemp
285;;;;;; gensym) "cl-macs" "cl-macs.el" "0904b956872432ae7cc5fa9abcefce63") 285;;;;;; gensym) "cl-macs" "cl-macs.el" "b3031039e82679e5b013ce1cbf174ee8")
286;;; Generated autoloads from cl-macs.el 286;;; Generated autoloads from cl-macs.el
287 287
288(autoload 'gensym "cl-macs" "\ 288(autoload 'gensym "cl-macs" "\
@@ -505,7 +505,7 @@ lexical closures as in Common Lisp.
505(autoload 'lexical-let* "cl-macs" "\ 505(autoload 'lexical-let* "cl-macs" "\
506Like `let*', but lexically scoped. 506Like `let*', but lexically scoped.
507The main visible difference is that lambdas inside BODY, and in 507The main visible difference is that lambdas inside BODY, and in
508successive bindings within BINDINGS, will create lexical closures 508successive bindings within VARLIST, will create lexical closures
509as in Common Lisp. This is similar to the behavior of `let*' in 509as in Common Lisp. This is similar to the behavior of `let*' in
510Common Lisp. 510Common Lisp.
511 511
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 80e95724f1f..c57d37703b0 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -1470,7 +1470,7 @@ lexical closures as in Common Lisp.
1470(defmacro lexical-let* (bindings &rest body) 1470(defmacro lexical-let* (bindings &rest body)
1471 "Like `let*', but lexically scoped. 1471 "Like `let*', but lexically scoped.
1472The main visible difference is that lambdas inside BODY, and in 1472The main visible difference is that lambdas inside BODY, and in
1473successive bindings within BINDINGS, will create lexical closures 1473successive bindings within VARLIST, will create lexical closures
1474as in Common Lisp. This is similar to the behavior of `let*' in 1474as in Common Lisp. This is similar to the behavior of `let*' in
1475Common Lisp. 1475Common Lisp.
1476\n(fn VARLIST BODY)" 1476\n(fn VARLIST BODY)"
diff --git a/lisp/emacs-lisp/package-x.el b/lisp/emacs-lisp/package-x.el
index b9994be3d39..61f23abf0a7 100644
--- a/lisp/emacs-lisp/package-x.el
+++ b/lisp/emacs-lisp/package-x.el
@@ -40,6 +40,9 @@
40(defvar package-archive-upload-base nil 40(defvar package-archive-upload-base nil
41 "Base location for uploading to package archive.") 41 "Base location for uploading to package archive.")
42 42
43(defvar package-update-news-on-upload nil
44 "Whether package upload should also update NEWS and RSS feeds.")
45
43(defun package--encode (string) 46(defun package--encode (string)
44 "Encode a string by replacing some characters with XML entities." 47 "Encode a string by replacing some characters with XML entities."
45 ;; We need a special case for translating "&" to "&amp;". 48 ;; We need a special case for translating "&" to "&amp;".
@@ -86,6 +89,36 @@
86 (unless old-buffer 89 (unless old-buffer
87 (kill-buffer (current-buffer))))))) 90 (kill-buffer (current-buffer)))))))
88 91
92(defun package--archive-contents-from-url (archive-url)
93 "Parse archive-contents file at ARCHIVE-URL.
94Return the file contents, as a string, or nil if unsuccessful."
95 (ignore-errors
96 (when archive-url
97 (let* ((buffer (url-retrieve-synchronously
98 (concat archive-url "archive-contents"))))
99 (set-buffer buffer)
100 (package-handle-response)
101 (re-search-forward "^$" nil 'move)
102 (forward-char)
103 (delete-region (point-min) (point))
104 (prog1 (package-read-from-string
105 (buffer-substring-no-properties (point-min) (point-max)))
106 (kill-buffer buffer))))))
107
108(defun package--archive-contents-from-file (file)
109 "Parse the given archive-contents file."
110 (if (not (file-exists-p file))
111 ;; no existing archive-contents, possibly a new ELPA repo.
112 (list package-archive-version)
113 (let ((dont-kill (find-buffer-visiting file)))
114 (with-current-buffer (let ((find-file-visit-truename t))
115 (find-file-noselect file))
116 (prog1
117 (package-read-from-string
118 (buffer-substring-no-properties (point-min) (point-max)))
119 (unless dont-kill
120 (kill-buffer (current-buffer))))))))
121
89(defun package-maint-add-news-item (title description archive-url) 122(defun package-maint-add-news-item (title description archive-url)
90 "Add a news item to the ELPA web pages. 123 "Add a news item to the ELPA web pages.
91TITLE is the title of the news item. 124TITLE is the title of the news item.
@@ -111,11 +144,20 @@ PKG-INFO is the package info, see `package-buffer-info'.
111EXTENSION is the file extension, a string. It can be either 144EXTENSION is the file extension, a string. It can be either
112\"el\" or \"tar\". 145\"el\" or \"tar\".
113 146
147The variable `package-archive-upload-base' specifies the upload
148destination. If this is nil, signal an error.
149
114Optional arg ARCHIVE-URL is the URL of the destination archive. 150Optional arg ARCHIVE-URL is the URL of the destination archive.
115If nil, the \"gnu\" archive is used." 151If it is non-nil, compute the new \"archive-contents\" file
116 (unless archive-url 152starting from the existing \"archive-contents\" at that URL. In
117 (or (setq archive-url (cdr (assoc "gnu" package-archives))) 153addition, if `package-update-news-on-upload' is non-nil, call
118 (error "No destination URL"))) 154`package--update-news' to add a news item at that URL.
155
156If ARCHIVE-URL is nil, compute the new \"archive-contents\" file
157from the \"archive-contents\" at `package-archive-upload-base',
158if it exists."
159 (unless package-archive-upload-base
160 (error "No destination specified in `package-archive-upload-base'"))
119 (save-excursion 161 (save-excursion
120 (save-restriction 162 (save-restriction
121 (let* ((file-type (cond 163 (let* ((file-type (cond
@@ -131,21 +173,14 @@ If nil, the \"gnu\" archive is used."
131 (pkg-version (aref pkg-info 3)) 173 (pkg-version (aref pkg-info 3))
132 (commentary (aref pkg-info 4)) 174 (commentary (aref pkg-info 4))
133 (split-version (version-to-list pkg-version)) 175 (split-version (version-to-list pkg-version))
134 (pkg-buffer (current-buffer)) 176 (pkg-buffer (current-buffer)))
135 177
136 ;; Download latest archive-contents. 178 ;; Get archive-contents from ARCHIVE-URL if it's non-nil, or
137 (buffer (url-retrieve-synchronously 179 ;; from `package-archive-upload-base' otherwise.
138 (concat archive-url "archive-contents")))) 180 (let ((contents (or (package--archive-contents-from-url archive-url)
139 181 (package--archive-contents-from-file
140 ;; Parse archive-contents. 182 (concat package-archive-upload-base
141 (set-buffer buffer) 183 "archive-contents"))))
142 (package-handle-response)
143 (re-search-forward "^$" nil 'move)
144 (forward-char)
145 (delete-region (point-min) (point))
146 (let ((contents (package-read-from-string
147 (buffer-substring-no-properties (point-min)
148 (point-max))))
149 (new-desc (vector split-version requires desc file-type))) 184 (new-desc (vector split-version requires desc file-type)))
150 (if (> (car contents) package-archive-version) 185 (if (> (car contents) package-archive-version)
151 (error "Unrecognized archive version %d" (car contents))) 186 (error "Unrecognized archive version %d" (car contents)))
@@ -176,7 +211,6 @@ If nil, the \"gnu\" archive is used."
176 (symbol-name pkg-name) "-readme.txt"))) 211 (symbol-name pkg-name) "-readme.txt")))
177 212
178 (set-buffer pkg-buffer) 213 (set-buffer pkg-buffer)
179 (kill-buffer buffer)
180 (write-region (point-min) (point-max) 214 (write-region (point-min) (point-max)
181 (concat package-archive-upload-base 215 (concat package-archive-upload-base
182 file-name "-" pkg-version 216 file-name "-" pkg-version
@@ -184,8 +218,10 @@ If nil, the \"gnu\" archive is used."
184 nil nil nil 'excl) 218 nil nil nil 'excl)
185 219
186 ;; Write a news entry. 220 ;; Write a news entry.
187 (package--update-news (concat file-name "." extension) 221 (and package-update-news-on-upload
188 pkg-version desc archive-url) 222 archive-url
223 (package--update-news (concat file-name "." extension)
224 pkg-version desc archive-url))
189 225
190 ;; special-case "package": write a second copy so that the 226 ;; special-case "package": write a second copy so that the
191 ;; installer can easily find the latest version. 227 ;; installer can easily find the latest version.
@@ -196,7 +232,9 @@ If nil, the \"gnu\" archive is used."
196 nil nil nil 'ask))))))) 232 nil nil nil 'ask)))))))
197 233
198(defun package-upload-buffer () 234(defun package-upload-buffer ()
199 "Upload a single .el file to ELPA from the current buffer." 235 "Upload the current buffer as a single-file Emacs Lisp package.
236The variable `package-archive-upload-base' specifies the upload
237destination."
200 (interactive) 238 (interactive)
201 (save-excursion 239 (save-excursion
202 (save-restriction 240 (save-restriction
@@ -205,6 +243,13 @@ If nil, the \"gnu\" archive is used."
205 (package-upload-buffer-internal pkg-info "el"))))) 243 (package-upload-buffer-internal pkg-info "el")))))
206 244
207(defun package-upload-file (file) 245(defun package-upload-file (file)
246 "Upload the Emacs Lisp package FILE to the package archive.
247Interactively, prompt for FILE. The package is considered a
248single-file package if FILE ends in \".el\", and a multi-file
249package if FILE ends in \".tar\".
250
251The variable `package-archive-upload-base' specifies the upload
252destination."
208 (interactive "fPackage file name: ") 253 (interactive "fPackage file name: ")
209 (with-temp-buffer 254 (with-temp-buffer
210 (insert-file-contents-literally file) 255 (insert-file-contents-literally file)
diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el
index 3179672a3ec..916dcd4785c 100644
--- a/lisp/emacs-lisp/pcase.el
+++ b/lisp/emacs-lisp/pcase.el
@@ -3,7 +3,7 @@
3;; Copyright (C) 2010-2011 Free Software Foundation, Inc. 3;; Copyright (C) 2010-2011 Free Software Foundation, Inc.
4 4
5;; Author: Stefan Monnier <monnier@iro.umontreal.ca> 5;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
6;; Keywords: 6;; Keywords:
7 7
8;; This file is part of GNU Emacs. 8;; This file is part of GNU Emacs.
9 9
@@ -32,6 +32,14 @@
32;; could be defined this way, as a shorthand for (pred (lambda (_) BOOLEXP)). 32;; could be defined this way, as a shorthand for (pred (lambda (_) BOOLEXP)).
33;; But better would be if we could define new ways to match by having the 33;; But better would be if we could define new ways to match by having the
34;; extension provide its own `pcase--split-<foo>' thingy. 34;; extension provide its own `pcase--split-<foo>' thingy.
35;; - provide something like (setq VAR) so a var can be set rather than
36;; let-bound.
37;; - provide a way to fallthrough to other cases.
38;; - try and be more clever to reduce the size of the decision tree, and
39;; to reduce the number of leafs that need to be turned into function:
40;; - first, do the tests shared by all remaining branches (it will have
41;; to be performed anyway, so better so it first so it's shared).
42;; - then choose the test that discriminates more (?).
35;; - ideally we'd want (pcase s ((re RE1) E1) ((re RE2) E2)) to be able to 43;; - ideally we'd want (pcase s ((re RE1) E1) ((re RE2) E2)) to be able to
36;; generate a lex-style DFA to decide whether to run E1 or E2. 44;; generate a lex-style DFA to decide whether to run E1 or E2.
37 45
@@ -67,12 +75,12 @@ If a SYMBOL is used twice in the same pattern (i.e. the pattern is
67QPatterns can take the following forms: 75QPatterns can take the following forms:
68 (QPAT1 . QPAT2) matches if QPAT1 matches the car and QPAT2 the cdr. 76 (QPAT1 . QPAT2) matches if QPAT1 matches the car and QPAT2 the cdr.
69 ,UPAT matches if the UPattern UPAT matches. 77 ,UPAT matches if the UPattern UPAT matches.
70 STRING matches if the object is `equal' to STRING. 78 STRING matches if the object is `equal' to STRING.
71 ATOM matches if the object is `eq' to ATOM. 79 ATOM matches if the object is `eq' to ATOM.
72QPatterns for vectors are not implemented yet. 80QPatterns for vectors are not implemented yet.
73 81
74PRED can take the form 82PRED can take the form
75 FUNCTION in which case it gets called with one argument. 83 FUNCTION in which case it gets called with one argument.
76 (FUN ARG1 .. ARGN) in which case it gets called with N+1 arguments. 84 (FUN ARG1 .. ARGN) in which case it gets called with N+1 arguments.
77A PRED of the form FUNCTION is equivalent to one of the form (FUNCTION). 85A PRED of the form FUNCTION is equivalent to one of the form (FUNCTION).
78PRED patterns can refer to variables bound earlier in the pattern. 86PRED patterns can refer to variables bound earlier in the pattern.
@@ -209,6 +217,7 @@ of the form (UPAT EXP)."
209(defun pcase--if (test then else) 217(defun pcase--if (test then else)
210 (cond 218 (cond
211 ((eq else :pcase--dontcare) then) 219 ((eq else :pcase--dontcare) then)
220 ((eq then :pcase--dontcare) (debug) else) ;Can/should this ever happen?
212 ((eq (car-safe else) 'if) 221 ((eq (car-safe else) 'if)
213 (if (equal test (nth 1 else)) 222 (if (equal test (nth 1 else))
214 ;; Doing a test a second time: get rid of the redundancy. 223 ;; Doing a test a second time: get rid of the redundancy.
@@ -223,6 +232,8 @@ of the form (UPAT EXP)."
223 `(cond (,test ,then) 232 `(cond (,test ,then)
224 ;; Doing a test a second time: get rid of the redundancy, as above. 233 ;; Doing a test a second time: get rid of the redundancy, as above.
225 ,@(remove (assoc test else) (cdr else)))) 234 ,@(remove (assoc test else) (cdr else))))
235 ;; Invert the test if that lets us reduce the depth of the tree.
236 ((memq (car-safe then) '(if cond)) (pcase--if `(not ,test) else then))
226 (t `(if ,test ,then ,else)))) 237 (t `(if ,test ,then ,else))))
227 238
228(defun pcase--upat (qpattern) 239(defun pcase--upat (qpattern)
@@ -264,6 +275,22 @@ MATCH is the pattern that needs to be matched, of the form:
264(defun pcase--and (match matches) 275(defun pcase--and (match matches)
265 (if matches `(and ,match ,@matches) match)) 276 (if matches `(and ,match ,@matches) match))
266 277
278(defconst pcase-mutually-exclusive-predicates
279 '((symbolp . integerp)
280 (symbolp . numberp)
281 (symbolp . consp)
282 (symbolp . arrayp)
283 (symbolp . stringp)
284 (integerp . consp)
285 (integerp . arrayp)
286 (integerp . stringp)
287 (numberp . consp)
288 (numberp . arrayp)
289 (numberp . stringp)
290 (consp . arrayp)
291 (consp . stringp)
292 (arrayp . stringp)))
293
267(defun pcase--split-match (sym splitter match) 294(defun pcase--split-match (sym splitter match)
268 (case (car match) 295 (case (car match)
269 ((match) 296 ((match)
@@ -324,8 +351,14 @@ MATCH is the pattern that needs to be matched, of the form:
324 (cons `(and (match ,syma . ,(pcase--upat (car qpat))) 351 (cons `(and (match ,syma . ,(pcase--upat (car qpat)))
325 (match ,symd . ,(pcase--upat (cdr qpat)))) 352 (match ,symd . ,(pcase--upat (cdr qpat))))
326 :pcase--fail))) 353 :pcase--fail)))
327 ;; A QPattern but not for a cons, can only go the `else' side. 354 ;; A QPattern but not for a cons, can only go to the `else' side.
328 ((eq (car-safe pat) '\`) (cons :pcase--fail nil)))) 355 ((eq (car-safe pat) '\`) (cons :pcase--fail nil))
356 ((and (eq (car-safe pat) 'pred)
357 (or (member (cons 'consp (cadr pat))
358 pcase-mutually-exclusive-predicates)
359 (member (cons (cadr pat) 'consp)
360 pcase-mutually-exclusive-predicates)))
361 (cons :pcase--fail nil))))
329 362
330(defun pcase--split-equal (elem pat) 363(defun pcase--split-equal (elem pat)
331 (cond 364 (cond
@@ -337,7 +370,12 @@ MATCH is the pattern that needs to be matched, of the form:
337 ;; (or (integerp (cadr pat)) (symbolp (cadr pat)) 370 ;; (or (integerp (cadr pat)) (symbolp (cadr pat))
338 ;; (consp (cadr pat))) 371 ;; (consp (cadr pat)))
339 ) 372 )
340 (cons :pcase--fail nil)))) 373 (cons :pcase--fail nil))
374 ((and (eq (car-safe pat) 'pred)
375 (symbolp (cadr pat))
376 (get (cadr pat) 'side-effect-free)
377 (funcall (cadr pat) elem))
378 (cons :pcase--succeed nil))))
341 379
342(defun pcase--split-member (elems pat) 380(defun pcase--split-member (elems pat)
343 ;; Based on pcase--split-equal. 381 ;; Based on pcase--split-equal.
@@ -354,13 +392,39 @@ MATCH is the pattern that needs to be matched, of the form:
354 ;; (or (integerp (cadr pat)) (symbolp (cadr pat)) 392 ;; (or (integerp (cadr pat)) (symbolp (cadr pat))
355 ;; (consp (cadr pat))) 393 ;; (consp (cadr pat)))
356 ) 394 )
357 (cons :pcase--fail nil)))) 395 (cons :pcase--fail nil))
396 ((and (eq (car-safe pat) 'pred)
397 (symbolp (cadr pat))
398 (get (cadr pat) 'side-effect-free)
399 (let ((p (cadr pat)) (all t))
400 (dolist (elem elems)
401 (unless (funcall p elem) (setq all nil)))
402 all))
403 (cons :pcase--succeed nil))))
358 404
359(defun pcase--split-pred (upat pat) 405(defun pcase--split-pred (upat pat)
360 ;; FIXME: For predicates like (pred (> a)), two such predicates may 406 ;; FIXME: For predicates like (pred (> a)), two such predicates may
361 ;; actually refer to different variables `a'. 407 ;; actually refer to different variables `a'.
362 (if (equal upat pat) 408 (cond
363 (cons :pcase--succeed :pcase--fail))) 409 ((equal upat pat) (cons :pcase--succeed :pcase--fail))
410 ((and (eq 'pred (car upat))
411 (eq 'pred (car-safe pat))
412 (or (member (cons (cadr upat) (cadr pat))
413 pcase-mutually-exclusive-predicates)
414 (member (cons (cadr pat) (cadr upat))
415 pcase-mutually-exclusive-predicates)))
416 (cons :pcase--fail nil))
417 ;; ((and (eq 'pred (car upat))
418 ;; (eq '\` (car-safe pat))
419 ;; (symbolp (cadr upat))
420 ;; (or (symbolp (cadr pat)) (stringp (cadr pat)) (numberp (cadr pat)))
421 ;; (get (cadr upat) 'side-effect-free)
422 ;; (progn (message "Trying predicate %S" (cadr upat))
423 ;; (ignore-errors
424 ;; (funcall (cadr upat) (cadr pat)))))
425 ;; (message "Simplify pred %S against %S" upat pat)
426 ;; (cons nil :pcase--fail))
427 ))
364 428
365(defun pcase--fgrep (vars sexp) 429(defun pcase--fgrep (vars sexp)
366 "Check which of the symbols VARS appear in SEXP." 430 "Check which of the symbols VARS appear in SEXP."
@@ -375,7 +439,7 @@ MATCH is the pattern that needs to be matched, of the form:
375;; bootstrapping problems. 439;; bootstrapping problems.
376(defun pcase--u1 (matches code vars rest) 440(defun pcase--u1 (matches code vars rest)
377 "Return code that runs CODE (with VARS) if MATCHES match. 441 "Return code that runs CODE (with VARS) if MATCHES match.
378and otherwise defers to REST which is a list of branches of the form 442Otherwise, it defers to REST which is a list of branches of the form
379\(ELSE-MATCH ELSE-CODE . ELSE-VARS)." 443\(ELSE-MATCH ELSE-CODE . ELSE-VARS)."
380 ;; Depending on the order in which we choose to check each of the MATCHES, 444 ;; Depending on the order in which we choose to check each of the MATCHES,
381 ;; the resulting tree may be smaller or bigger. So in general, we'd want 445 ;; the resulting tree may be smaller or bigger. So in general, we'd want
@@ -433,6 +497,7 @@ and otherwise defers to REST which is a list of branches of the form
433 ((eq upat 'dontcare) :pcase--dontcare) 497 ((eq upat 'dontcare) :pcase--dontcare)
434 ((functionp upat) (error "Feature removed, use (pred %s)" upat)) 498 ((functionp upat) (error "Feature removed, use (pred %s)" upat))
435 ((memq (car-safe upat) '(guard pred)) 499 ((memq (car-safe upat) '(guard pred))
500 (if (eq (car upat) 'pred) (put sym 'pcase-used t))
436 (destructuring-bind (then-rest &rest else-rest) 501 (destructuring-bind (then-rest &rest else-rest)
437 (pcase--split-rest 502 (pcase--split-rest
438 sym (apply-partially #'pcase--split-pred upat) rest) 503 sym (apply-partially #'pcase--split-pred upat) rest)
@@ -459,6 +524,7 @@ and otherwise defers to REST which is a list of branches of the form
459 (pcase--u1 matches code vars then-rest) 524 (pcase--u1 matches code vars then-rest)
460 (pcase--u else-rest)))) 525 (pcase--u else-rest))))
461 ((symbolp upat) 526 ((symbolp upat)
527 (put sym 'pcase-used t)
462 (if (not (assq upat vars)) 528 (if (not (assq upat vars))
463 (pcase--u1 matches code (cons (cons upat sym) vars) rest) 529 (pcase--u1 matches code (cons (cons upat sym) vars) rest)
464 ;; Non-linear pattern. Turn it into an `eq' test. 530 ;; Non-linear pattern. Turn it into an `eq' test.
@@ -466,6 +532,7 @@ and otherwise defers to REST which is a list of branches of the form
466 matches) 532 matches)
467 code vars rest))) 533 code vars rest)))
468 ((eq (car-safe upat) '\`) 534 ((eq (car-safe upat) '\`)
535 (put sym 'pcase-used t)
469 (pcase--q1 sym (cadr upat) matches code vars rest)) 536 (pcase--q1 sym (cadr upat) matches code vars rest))
470 ((eq (car-safe upat) 'or) 537 ((eq (car-safe upat) 'or)
471 (let ((all (> (length (cdr upat)) 1)) 538 (let ((all (> (length (cdr upat)) 1))
@@ -524,7 +591,7 @@ and otherwise defers to REST which is a list of branches of the form
524 591
525(defun pcase--q1 (sym qpat matches code vars rest) 592(defun pcase--q1 (sym qpat matches code vars rest)
526 "Return code that runs CODE if SYM matches QPAT and if MATCHES match. 593 "Return code that runs CODE if SYM matches QPAT and if MATCHES match.
527and if not, defers to REST which is a list of branches of the form 594Otherwise, it defers to REST which is a list of branches of the form
528\(OTHER_MATCH OTHER-CODE . OTHER-VARS)." 595\(OTHER_MATCH OTHER-CODE . OTHER-VARS)."
529 (cond 596 (cond
530 ((eq (car-safe qpat) '\,) (error "Can't use `,UPATTERN")) 597 ((eq (car-safe qpat) '\,) (error "Can't use `,UPATTERN"))
@@ -539,14 +606,20 @@ and if not, defers to REST which is a list of branches of the form
539 (pcase--split-rest sym 606 (pcase--split-rest sym
540 (apply-partially #'pcase--split-consp syma symd) 607 (apply-partially #'pcase--split-consp syma symd)
541 rest) 608 rest)
542 (pcase--if `(consp ,sym) 609 (let ((then-body (pcase--u1 `((match ,syma . ,(pcase--upat (car qpat)))
543 `(let ((,syma (car ,sym)) 610 (match ,symd . ,(pcase--upat (cdr qpat)))
544 (,symd (cdr ,sym))) 611 ,@matches)
545 ,(pcase--u1 `((match ,syma . ,(pcase--upat (car qpat))) 612 code vars then-rest)))
546 (match ,symd . ,(pcase--upat (cdr qpat))) 613 (pcase--if
547 ,@matches) 614 `(consp ,sym)
548 code vars then-rest)) 615 ;; We want to be careful to only add bindings that are used.
549 (pcase--u else-rest))))) 616 ;; The byte-compiler could do that for us, but it would have to pay
617 ;; attention to the `consp' test in order to figure out that car/cdr
618 ;; can't signal errors and our byte-compiler is not that clever.
619 `(let (,@(if (get syma 'pcase-used) `((,syma (car ,sym))))
620 ,@(if (get symd 'pcase-used) `((,symd (cdr ,sym)))))
621 ,then-body)
622 (pcase--u else-rest))))))
550 ((or (integerp qpat) (symbolp qpat) (stringp qpat)) 623 ((or (integerp qpat) (symbolp qpat) (stringp qpat))
551 (destructuring-bind (then-rest &rest else-rest) 624 (destructuring-bind (then-rest &rest else-rest)
552 (pcase--split-rest sym (apply-partially 'pcase--split-equal qpat) rest) 625 (pcase--split-rest sym (apply-partially 'pcase--split-equal qpat) rest)
diff --git a/lisp/emulation/viper-cmd.el b/lisp/emulation/viper-cmd.el
index fae249da9d3..d9b79ccd317 100644
--- a/lisp/emulation/viper-cmd.el
+++ b/lisp/emulation/viper-cmd.el
@@ -2375,7 +2375,7 @@ problems."
2375 (if (eq viper-intermediate-command 'viper-repeat) 2375 (if (eq viper-intermediate-command 'viper-repeat)
2376 (viper-change-subr (mark t) (point)) 2376 (viper-change-subr (mark t) (point))
2377 (viper-change (mark t) (point))) 2377 (viper-change (mark t) (point)))
2378 ;; com is set to ?r when we repeat this comand with dot 2378 ;; com is set to ?r when we repeat this command with dot
2379 (viper-set-destructive-command (list 'viper-substitute val ?r nil nil nil)) 2379 (viper-set-destructive-command (list 'viper-substitute val ?r nil nil nil))
2380 )) 2380 ))
2381 2381
diff --git a/lisp/erc/ChangeLog.01 b/lisp/erc/ChangeLog.01
index 962acd5bfc6..4016586abc7 100644
--- a/lisp/erc/ChangeLog.01
+++ b/lisp/erc/ChangeLog.01
@@ -584,9 +584,9 @@
584 584
585 * debian/maint/conffiles.in: new file 585 * debian/maint/conffiles.in: new file
586 586
587 * debian/maint/conffiles: superceded by conffiles.in 587 * debian/maint/conffiles: superseded by conffiles.in
588 588
589 * debian/scripts/startup: superceded by startup.erc 589 * debian/scripts/startup: superseded by startup.erc
590 590
5912001-10-25 Mario Lang <mlang@delysid.org> 5912001-10-25 Mario Lang <mlang@delysid.org>
592 592
@@ -609,7 +609,7 @@
609 609
610 * debian/maint/postinst, debian/maint/prerm, debian/scripts/install, 610 * debian/maint/postinst, debian/maint/prerm, debian/scripts/install,
611 debian/scripts/remove: 611 debian/scripts/remove:
612 removed, superceded by it's .in counterpart 612 removed, superseded by its .in counterpart
613 613
6142001-10-25 Mario Lang <mlang@delysid.org> 6142001-10-25 Mario Lang <mlang@delysid.org>
615 615
diff --git a/lisp/facemenu.el b/lisp/facemenu.el
index 360383aa32b..97862afb678 100644
--- a/lisp/facemenu.el
+++ b/lisp/facemenu.el
@@ -562,17 +562,23 @@ You can change the color sort order by customizing `list-colors-sort'."
562 (let ((lc (nthcdr (1- (display-color-cells)) list))) 562 (let ((lc (nthcdr (1- (display-color-cells)) list)))
563 (if lc 563 (if lc
564 (setcdr lc nil))))) 564 (setcdr lc nil)))))
565 (let ((buf (get-buffer-create "*Colors*"))) 565 (unless buffer-name
566 (with-current-buffer buf 566 (setq buffer-name "*Colors*"))
567 (with-help-window buffer-name
568 (with-current-buffer standard-output
567 (erase-buffer) 569 (erase-buffer)
568 (setq truncate-lines t) 570 (setq truncate-lines t)))
569 ;; Display buffer before generating content to allow 571 (let ((buf (get-buffer buffer-name))
570 ;; `list-colors-print' to get the right window-width. 572 (inhibit-read-only t))
573 ;; Display buffer before generating content, to allow
574 ;; `list-colors-print' to get the right window-width.
575 (with-selected-window (or (get-buffer-window buf t) (selected-window))
576 (with-current-buffer buf
577 (list-colors-print list callback)
578 (set-buffer-modified-p nil)))
579 (when callback
571 (pop-to-buffer buf) 580 (pop-to-buffer buf)
572 (list-colors-print list callback) 581 (message "Click on a color to select it."))))
573 (set-buffer-modified-p nil)))
574 (if callback
575 (message "Click on a color to select it.")))
576 582
577(defun list-colors-print (list &optional callback) 583(defun list-colors-print (list &optional callback)
578 (let ((callback-fn 584 (let ((callback-fn
diff --git a/lisp/files.el b/lisp/files.el
index 5890bf9b8c9..8849e264151 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -3394,8 +3394,19 @@ Return the new variables list."
3394 (cdr entry) root variables)))) 3394 (cdr entry) root variables))))
3395 ((or (not key) 3395 ((or (not key)
3396 (derived-mode-p key)) 3396 (derived-mode-p key))
3397 (setq variables (dir-locals-collect-mode-variables 3397 (let* ((alist (cdr entry))
3398 (cdr entry) variables)))))) 3398 (subdirs (assq 'subdirs alist)))
3399 (if (or (not subdirs)
3400 (progn
3401 (setq alist (delq subdirs alist))
3402 (cdr-safe subdirs))
3403 ;; TODO someone might want to extend this to allow
3404 ;; integer values for subdir, where N means
3405 ;; variables apply to this directory and N levels
3406 ;; below it (0 == nil).
3407 (equal root default-directory))
3408 (setq variables (dir-locals-collect-mode-variables
3409 alist variables))))))))
3399 (error 3410 (error
3400 ;; The file's content might be invalid (e.g. have a merge conflict), but 3411 ;; The file's content might be invalid (e.g. have a merge conflict), but
3401 ;; that shouldn't prevent the user from opening the file. 3412 ;; that shouldn't prevent the user from opening the file.
@@ -5837,6 +5848,9 @@ normally equivalent short `-D' option is just passed on to
5837 (file-name-directory file) 5848 (file-name-directory file)
5838 (file-name-directory (expand-file-name file)))) 5849 (file-name-directory (expand-file-name file))))
5839 (pattern (file-name-nondirectory file))) 5850 (pattern (file-name-nondirectory file)))
5851 ;; NB since switches is passed to the shell, be
5852 ;; careful of malicious values, eg "-l;reboot".
5853 ;; See eg dired-safe-switches-p.
5840 (call-process 5854 (call-process
5841 shell-file-name nil t nil 5855 shell-file-name nil t nil
5842 "-c" 5856 "-c"
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 9dd315782ff..4562d544a58 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,71 @@
12011-03-01 Julien Danjou <julien@danjou.info>
2
3 * gnus-art.el (list-identifier): Add list-identifier as a parameter
4 group.
5 (article-hide-list-identifiers): Use list-identifier group parameter.
6
72011-02-28 Julien Danjou <julien@danjou.info>
8
9 * sieve.el (sieve-buffer-script-name): New local variable to store
10 sieve script name.
11 (sieve-edit-script): Store sieve script name.
12 (sieve-upload): Use sieve script name when uploading.
13 (sieve-upload): Use substitute-command-keys.
14 (sieve-edit-script): Use substitute-command-keys.
15 (sieve-refresh-scriptlist): Use substitute-command-keys.
16 (sieve-manage-mode-map): Define keymap properly.
17 (sieve-manage-mode): Do not set mode name manually, change mode-name to
18 (sieve-refresh-scriptlist): Use substitute-command-keys."Sieve-manage".
19 Remove commented code about cvs.
20 (sieve-manage-quit): New function.
21 (sieve-manage-mode-map): Bind 'q' to sieve-manage-quit.
22
232011-02-27 Lars Magne Ingebrigtsen <larsi@gnus.org>
24
25 * gnus-group.el (gnus-import-other-newsrc-file): New function.
26
272011-02-25 Teodor Zlatanov <tzz@lifelogs.com>
28
29 * auth-source.el (auth-source-search): Cache empty result sets.
30
31 * auth-source.el (auth-source-save-behavior): New variable to replace
32 `auth-source-never-create'.
33 (auth-source-netrc-create): Use it.
34 (auth-source-never-save): Remove.
35
362011-02-25 Lars Ingebrigtsen <larsi@gnus.org>
37
38 * nnimap.el (nnimap-stream): Doc fix.
39 (nnimap-open-connection-1): Reverse the order of the ports to that the
40 prompted-for port is first.
41
42 * gnus-start.el (gnus-get-unread-articles): Don't clobber the async
43 retrieval by the no-group selection.
44
45 * gnus-demon.el (gnus-demon-init): run-with-timer should be called with
46 numerical parameters.
47
482011-02-25 Julien Danjou <julien@danjou.info>
49
50 * gnus-gravatar.el: Use gnus-with-article-buffer.
51
52 * gnus-art.el (gnus-with-article-buffer): Check that the
53 gnus-article-buffer is alive.
54
552011-02-24 Teodor Zlatanov <tzz@lifelogs.com>
56
57 * auth-source.el (auth-source-creation-prompts): New variable to manage
58 creation-time prompts.
59 (auth-source-search): Document it.
60 (auth-source-format-prompt): Add utility function.
61 (auth-source-netrc-create): Don't default the user name to
62 user-login-name. Use `auth-source-creation-prompts' and some default
63 prompts for user, host, port, and password (the default generic prompt
64 remains ugly).
65 (auth-source-never-save): Add customizable option to never save info.
66 (auth-source-netrc-create): Use it and improve save prompts. Fix help
67 mode excursion.
68
12011-02-24 Katsumi Yamaoka <yamaoka@jpl.org> 692011-02-24 Katsumi Yamaoka <yamaoka@jpl.org>
2 70
3 * auth-source.el (auth-source-netrc-create): Use `read-char' with no 71 * auth-source.el (auth-source-netrc-create): Use `read-char' with no
diff --git a/lisp/gnus/auth-source.el b/lisp/gnus/auth-source.el
index 63ec93dd760..500de10b71c 100644
--- a/lisp/gnus/auth-source.el
+++ b/lisp/gnus/auth-source.el
@@ -137,8 +137,21 @@ let-binding."
137(defvar auth-source-creation-defaults nil 137(defvar auth-source-creation-defaults nil
138 "Defaults for creating token values. Usually let-bound.") 138 "Defaults for creating token values. Usually let-bound.")
139 139
140(defvar auth-source-creation-prompts nil
141 "Default prompts for token values. Usually let-bound.")
142
140(make-obsolete 'auth-source-hide-passwords nil "Emacs 24.1") 143(make-obsolete 'auth-source-hide-passwords nil "Emacs 24.1")
141 144
145(defcustom auth-source-save-behavior 'ask
146 "If set, auth-source will respect it for save behavior."
147 :group 'auth-source
148 :version "23.2" ;; No Gnus
149 :type `(choice
150 :tag "auth-source new token save behavior"
151 (const :tag "Always save" t)
152 (const :tag "Never save" nil)
153 (const :tag "Ask" ask)))
154
142(defvar auth-source-magic "auth-source-magic ") 155(defvar auth-source-magic "auth-source-magic ")
143 156
144(defcustom auth-source-do-cache t 157(defcustom auth-source-do-cache t
@@ -435,12 +448,18 @@ parameter, that parameter will be required in the resulting
435token. The value for that parameter will be obtained from the 448token. The value for that parameter will be obtained from the
436search parameters or from user input. If any queries are needed, 449search parameters or from user input. If any queries are needed,
437the alist `auth-source-creation-defaults' will be checked for the 450the alist `auth-source-creation-defaults' will be checked for the
438default prompt. 451default value. If the user, host, or port are missing, the alist
452`auth-source-creation-prompts' will be used to look up the
453prompts IN THAT ORDER (so the 'user prompt will be queried first,
454then 'host, then 'port, and finally 'secret). Each prompt string
455can use %u, %h, and %p to show the user, host, and port.
439 456
440Here's an example: 457Here's an example:
441 458
442\(let ((auth-source-creation-defaults '((user . \"defaultUser\") 459\(let ((auth-source-creation-defaults '((user . \"defaultUser\")
443 (A . \"default A\")))) 460 (A . \"default A\")))
461 (auth-source-creation-prompts
462 '((password . \"Enter IMAP password for %h:%p: \"))))
444 (auth-source-search :host '(\"nonesuch\" \"twosuch\") :type 'netrc :max 1 463 (auth-source-search :host '(\"nonesuch\" \"twosuch\") :type 'netrc :max 1
445 :P \"pppp\" :Q \"qqqq\" 464 :P \"pppp\" :Q \"qqqq\"
446 :create '(A B Q))) 465 :create '(A B Q)))
@@ -452,12 +471,11 @@ which says:
452 471
453 Create a new entry if you found none. The netrc backend will 472 Create a new entry if you found none. The netrc backend will
454 automatically require host, user, and port. The host will be 473 automatically require host, user, and port. The host will be
455 'nonesuch' and Q will be 'qqqq'. We prompt for A with default 474 'nonesuch' and Q will be 'qqqq'. We prompt for the password
456 'default A', for B and port with default nil, and for the 475 with the shown prompt. We will not prompt for Q. The resulting
457 user with default 'defaultUser'. We will not prompt for Q. The 476 token will have keys user, host, port, A, B, and Q. It will not
458 resulting token will have keys user, host, port, A, B, and Q. 477 have P with any value, even though P is used in the search to
459 It will not have P with any value, even though P is used in the 478 find only entries that have P set to 'pppp'.\"
460 search to find only entries that have P set to 'pppp'.\"
461 479
462When multiple values are specified in the search parameter, the 480When multiple values are specified in the search parameter, the
463user is prompted for which one. So :host (X Y Z) would ask the 481user is prompted for which one. So :host (X Y Z) would ask the
@@ -506,10 +524,13 @@ must call it to obtain the actual value."
506 (keys (loop for i below (length spec) by 2 524 (keys (loop for i below (length spec) by 2
507 unless (memq (nth i spec) ignored-keys) 525 unless (memq (nth i spec) ignored-keys)
508 collect (nth i spec))) 526 collect (nth i spec)))
527 (cached (auth-source-remembered-p spec))
528 ;; note that we may have cached results but found is still nil
529 ;; (there were no results from the search)
509 (found (auth-source-recall spec)) 530 (found (auth-source-recall spec))
510 filtered-backends accessor-key backend) 531 filtered-backends accessor-key backend)
511 532
512 (if (and found auth-source-do-cache) 533 (if (and cached auth-source-do-cache)
513 (auth-source-do-debug 534 (auth-source-do-debug
514 "auth-source-search: found %d CACHED results matching %S" 535 "auth-source-search: found %d CACHED results matching %S"
515 (length found) spec) 536 (length found) spec)
@@ -562,7 +583,8 @@ must call it to obtain the actual value."
562 "auth-source-search: CREATED %d results (max %d) matching %S" 583 "auth-source-search: CREATED %d results (max %d) matching %S"
563 (length found) max spec)) 584 (length found) max spec))
564 585
565 (when (and found auth-source-do-cache) 586 ;; note we remember the lack of result too, if it's applicable
587 (when auth-source-do-cache
566 (auth-source-remember spec found))) 588 (auth-source-remember spec found)))
567 589
568 found)) 590 found))
@@ -636,6 +658,11 @@ Returns the deleted entries."
636 (password-read-from-cache 658 (password-read-from-cache
637 (concat auth-source-magic (format "%S" spec)))) 659 (concat auth-source-magic (format "%S" spec))))
638 660
661(defun auth-source-remembered-p (spec)
662 "Check if SPEC is remembered."
663 (password-in-cache-p
664 (concat auth-source-magic (format "%S" spec))))
665
639(defun auth-source-forget (spec) 666(defun auth-source-forget (spec)
640 "Forget any cached data matching SPEC exactly. 667 "Forget any cached data matching SPEC exactly.
641 668
@@ -646,7 +673,10 @@ Returns t or nil for forgotten or not found."
646;;; (loop for sym being the symbols of password-data when (string-match (concat "^" auth-source-magic) (symbol-name sym)) collect (symbol-name sym)) 673;;; (loop for sym being the symbols of password-data when (string-match (concat "^" auth-source-magic) (symbol-name sym)) collect (symbol-name sym))
647 674
648;;; (auth-source-remember '(:host "wedd") '(4 5 6)) 675;;; (auth-source-remember '(:host "wedd") '(4 5 6))
676;;; (auth-source-remembered-p '(:host "wedd"))
649;;; (auth-source-remember '(:host "xedd") '(1 2 3)) 677;;; (auth-source-remember '(:host "xedd") '(1 2 3))
678;;; (auth-source-remembered-p '(:host "xedd"))
679;;; (auth-source-remembered-p '(:host "zedd"))
650;;; (auth-source-recall '(:host "xedd")) 680;;; (auth-source-recall '(:host "xedd"))
651;;; (auth-source-recall '(:host t)) 681;;; (auth-source-recall '(:host t))
652;;; (auth-source-forget+ :host t) 682;;; (auth-source-forget+ :host t)
@@ -903,6 +933,17 @@ See `auth-source-search' for details on SPEC."
903 (nth 0 v) 933 (nth 0 v)
904 v)) 934 v))
905 935
936;; (auth-source-format-prompt "test %u %h %p" '((?u "user") (?h "host")))
937
938(defun auth-source-format-prompt (prompt alist)
939 "Format PROMPT using %x (for any character x) specifiers in ALIST."
940 (dolist (cell alist)
941 (let ((c (nth 0 cell))
942 (v (nth 1 cell)))
943 (when (and c v)
944 (setq prompt (replace-regexp-in-string (format "%%%c" c) v prompt)))))
945 prompt)
946
906;;; (auth-source-search :host "nonesuch" :type 'netrc :max 1 :create t) 947;;; (auth-source-search :host "nonesuch" :type 'netrc :max 1 :create t)
907;;; (auth-source-search :host "nonesuch" :type 'netrc :max 1 :create t :create-extra-keys '((A "default A") (B))) 948;;; (auth-source-search :host "nonesuch" :type 'netrc :max 1 :create t :create-extra-keys '((A "default A") (B)))
908 949
@@ -954,31 +995,50 @@ See `auth-source-search' for details on SPEC."
954 ;; the default supplementals are simple: for the user, 995 ;; the default supplementals are simple: for the user,
955 ;; try (user-login-name), otherwise take given-default 996 ;; try (user-login-name), otherwise take given-default
956 (default (cond 997 (default (cond
957 ((and (not given-default) (eq r 'user)) 998 ;; don't default the user name
958 (user-login-name)) 999 ;; ((and (not given-default) (eq r 'user))
959 (t given-default)))) 1000 ;; (user-login-name))
1001 (t given-default)))
1002 (printable-defaults (list
1003 (cons 'user
1004 (or
1005 (auth-source-netrc-element-or-first
1006 (aget valist 'user))
1007 (plist-get artificial :user)
1008 "[any user]"))
1009 (cons 'host
1010 (or
1011 (auth-source-netrc-element-or-first
1012 (aget valist 'host))
1013 (plist-get artificial :host)
1014 "[any host]"))
1015 (cons 'port
1016 (or
1017 (auth-source-netrc-element-or-first
1018 (aget valist 'port))
1019 (plist-get artificial :port)
1020 "[any port]"))))
1021 (prompt (or (aget auth-source-creation-prompts r)
1022 (case r
1023 ('secret "%p password for user %u, host %h: ")
1024 ('user "%p user name: ")
1025 ('host "%p host name for user %u: ")
1026 ('port "%p port for user %u and host %h: "))
1027 (format "Enter %s (%%u@%%h:%%p): " r)))
1028 (prompt (auth-source-format-prompt
1029 prompt
1030 `((?u ,(aget printable-defaults 'user))
1031 (?h ,(aget printable-defaults 'host))
1032 (?p ,(aget printable-defaults 'port))))))
960 1033
961 ;; store the data, prompting for the password if needed 1034 ;; store the data, prompting for the password if needed
962 (setq data 1035 (setq data
963 (cond 1036 (cond
964 ((and (null data) (eq r 'secret)) 1037 ((and (null data) (eq r 'secret))
965 ;; special case prompt for passwords 1038 ;; special case prompt for passwords
966 (read-passwd (format "Password for %s@%s:%s: " 1039 (read-passwd prompt))
967 (or 1040 ((null data)
968 (auth-source-netrc-element-or-first 1041 (read-string prompt default))
969 (aget valist 'user))
970 (plist-get artificial :user)
971 "[any user]")
972 (or
973 (auth-source-netrc-element-or-first
974 (aget valist 'host))
975 (plist-get artificial :host)
976 "[any host]")
977 (or
978 (auth-source-netrc-element-or-first
979 (aget valist 'port))
980 (plist-get artificial :port)
981 "[any port]"))))
982 (t (or data default)))) 1042 (t (or data default))))
983 1043
984 (when data 1044 (when data
@@ -1026,22 +1086,42 @@ See `auth-source-search' for details on SPEC."
1026 (goto-char (point-max)) 1086 (goto-char (point-max))
1027 1087
1028 ;; ask AFTER we've successfully opened the file 1088 ;; ask AFTER we've successfully opened the file
1029 (let ((prompt (format "Add to file %s? %s: " 1089 (let ((prompt (format "Save auth info to file %s? %s: "
1030 file 1090 file
1031 "(y)es/(n)o but use it/(e)dit line/(s)kip file")) 1091 "y/n/N/e/?"))
1032 done k) 1092 (done (not (eq auth-source-save-behavior 'ask)))
1093 (bufname "*auth-source Help*")
1094 k)
1033 (while (not done) 1095 (while (not done)
1034 (message "%s" prompt) 1096 (message "%s" prompt)
1035 (setq k (read-char)) 1097 (setq k (read-char))
1036 (case k 1098 (case k
1037 (?y (setq done t)) 1099 (?y (setq done t))
1100 (?? (save-excursion
1101 (with-output-to-temp-buffer bufname
1102 (princ
1103 (concat "(y)es, save\n"
1104 "(n)o but use the info\n"
1105 "(N)o and don't ask to save again\n"
1106 "(e)dit the line\n"
1107 "(?) for help as you can see.\n"))
1108 (set-buffer standard-output)
1109 (help-mode))))
1038 (?n (setq add "" 1110 (?n (setq add ""
1039 done t)) 1111 done t))
1040 (?s (setq add "" 1112 (?N (setq add ""
1041 done 'skip)) 1113 done t
1114 auth-source-save-behavior nil))
1042 (?e (setq add (read-string "Line to add: " add))) 1115 (?e (setq add (read-string "Line to add: " add)))
1043 (t nil))) 1116 (t nil)))
1044 1117
1118 (when (get-buffer-window bufname)
1119 (delete-window (get-buffer-window bufname)))
1120
1121 ;; make sure the info is not saved
1122 (when (null auth-source-save-behavior)
1123 (setq add ""))
1124
1045 (when (< 0 (length add)) 1125 (when (< 0 (length add))
1046 (progn 1126 (progn
1047 (unless (bolp) 1127 (unless (bolp)
diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
index 204d63d37e4..989488c0995 100644
--- a/lisp/gnus/gnus-agent.el
+++ b/lisp/gnus/gnus-agent.el
@@ -441,7 +441,7 @@ manipulated as follows:
441 (setf (gnus-agent-cat-groups old-category) 441 (setf (gnus-agent-cat-groups old-category)
442 (delete group (gnus-agent-cat-groups 442 (delete group (gnus-agent-cat-groups
443 old-category)))))) 443 old-category))))))
444 ;; Purge cache as preceeding loop invalidated it. 444 ;; Purge cache as preceding loop invalidated it.
445 (setq gnus-category-group-cache nil)) 445 (setq gnus-category-group-cache nil))
446 446
447 (setcdr (or (assq 'agent-groups category) 447 (setcdr (or (assq 'agent-groups category)
@@ -1195,7 +1195,7 @@ downloadable."
1195 (mapc #'gnus-summary-remove-process-mark 1195 (mapc #'gnus-summary-remove-process-mark
1196 (gnus-sorted-ndifference gnus-newsgroup-processable gnus-newsgroup-undownloaded)) 1196 (gnus-sorted-ndifference gnus-newsgroup-processable gnus-newsgroup-undownloaded))
1197 1197
1198 ;; The preceeding call to (gnus-agent-summary-fetch-group) 1198 ;; The preceding call to (gnus-agent-summary-fetch-group)
1199 ;; updated the temporary gnus-newsgroup-downloadable to 1199 ;; updated the temporary gnus-newsgroup-downloadable to
1200 ;; remove each article successfully fetched. Now, I 1200 ;; remove each article successfully fetched. Now, I
1201 ;; update the real gnus-newsgroup-downloadable to only 1201 ;; update the real gnus-newsgroup-downloadable to only
@@ -1520,14 +1520,14 @@ downloaded into the agent."
1520 header-number) 1520 header-number)
1521 ;; Check each article 1521 ;; Check each article
1522 (while (setq article (pop articles)) 1522 (while (setq article (pop articles))
1523 ;; Skip alist entries preceeding this article 1523 ;; Skip alist entries preceding this article
1524 (while (> article (or (caar alist) (1+ article))) 1524 (while (> article (or (caar alist) (1+ article)))
1525 (setq alist (cdr alist))) 1525 (setq alist (cdr alist)))
1526 1526
1527 ;; Prune off articles that we have already fetched. 1527 ;; Prune off articles that we have already fetched.
1528 (unless (and (eq article (caar alist)) 1528 (unless (and (eq article (caar alist))
1529 (cdar alist)) 1529 (cdar alist))
1530 ;; Skip headers preceeding this article 1530 ;; Skip headers preceding this article
1531 (while (> article 1531 (while (> article
1532 (setq header-number 1532 (setq header-number
1533 (let* ((header (car headers))) 1533 (let* ((header (car headers)))
@@ -3437,7 +3437,7 @@ missing NOV entry. Run gnus-agent-regenerate-group to restore it.")))
3437 3437
3438 ;; If considering all articles is set, I can only 3438 ;; If considering all articles is set, I can only
3439 ;; expire article IDs that are no longer in the 3439 ;; expire article IDs that are no longer in the
3440 ;; active range (That is, articles that preceed the 3440 ;; active range (That is, articles that precede the
3441 ;; first article in the new alist). 3441 ;; first article in the new alist).
3442 (if (and gnus-agent-consider-all-articles 3442 (if (and gnus-agent-consider-all-articles
3443 (>= article-number (car active))) 3443 (>= article-number (car active)))
@@ -3715,7 +3715,7 @@ has been fetched."
3715 (gnus-agent-append-to-list tail-uncached v1)) 3715 (gnus-agent-append-to-list tail-uncached v1))
3716 (setq arts (cdr arts)) 3716 (setq arts (cdr arts))
3717 (setq ref (cdr ref))) 3717 (setq ref (cdr ref)))
3718 (t ; reference article (v2) preceeds the list being filtered 3718 (t ; reference article (v2) precedes the list being filtered
3719 (setq ref (cdr ref)))))) 3719 (setq ref (cdr ref))))))
3720 (while arts 3720 (while arts
3721 (gnus-agent-append-to-list tail-uncached (pop arts))) 3721 (gnus-agent-append-to-list tail-uncached (pop arts)))
@@ -4020,7 +4020,7 @@ If REREAD is not nil, downloaded articles are marked as unread."
4020 ;; article (with the exception of the last ID in the list - it's 4020 ;; article (with the exception of the last ID in the list - it's
4021 ;; special) that no longer appears in the overview. In this 4021 ;; special) that no longer appears in the overview. In this
4022 ;; situtation, the last article ID in the list implies that it, 4022 ;; situtation, the last article ID in the list implies that it,
4023 ;; and every article ID preceeding it, have been fetched from the 4023 ;; and every article ID preceding it, have been fetched from the
4024 ;; server. 4024 ;; server.
4025 4025
4026 (if gnus-agent-consider-all-articles 4026 (if gnus-agent-consider-all-articles
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 5b3489a72ee..7469c4445c6 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -1253,6 +1253,24 @@ predicate. See Info node `(gnus)Customizing Articles'."
1253 :link '(custom-manual "(gnus)Customizing Articles") 1253 :link '(custom-manual "(gnus)Customizing Articles")
1254 :type gnus-article-treat-custom) 1254 :type gnus-article-treat-custom)
1255 1255
1256(gnus-define-group-parameter
1257 list-identifier
1258 :variable-document
1259 "Alist of regexps and correspondent identifiers."
1260 :variable-group gnus-article-washing
1261 :parameter-type
1262 '(choice :tag "Identifier"
1263 :value nil
1264 (symbol :tag "Item in `gnus-list-identifiers'" none)
1265 regexp
1266 (const :tag "None" nil))
1267 :parameter-document
1268 "If non-nil, specify how to remove `identifiers' from articles' subject.
1269
1270Any symbol is used to look up a regular expression to match the
1271banner in `gnus-list-identifiers'. A string is used as a regular
1272expression to match the identifier directly.")
1273
1256(make-obsolete-variable 'gnus-treat-strip-pgp nil 1274(make-obsolete-variable 'gnus-treat-strip-pgp nil
1257 "Gnus 5.10 (Emacs 22.1)") 1275 "Gnus 5.10 (Emacs 22.1)")
1258 1276
@@ -1725,9 +1743,10 @@ Initialized from `text-mode-syntax-table.")
1725(put 'gnus-with-article-headers 'edebug-form-spec '(body)) 1743(put 'gnus-with-article-headers 'edebug-form-spec '(body))
1726 1744
1727(defmacro gnus-with-article-buffer (&rest forms) 1745(defmacro gnus-with-article-buffer (&rest forms)
1728 `(with-current-buffer gnus-article-buffer 1746 `(when (buffer-live-p gnus-article-buffer)
1729 (let ((inhibit-read-only t)) 1747 (with-current-buffer gnus-article-buffer
1730 ,@forms))) 1748 (let ((inhibit-read-only t))
1749 ,@forms))))
1731 1750
1732(put 'gnus-with-article-buffer 'lisp-indent-function 0) 1751(put 'gnus-with-article-buffer 'lisp-indent-function 0)
1733(put 'gnus-with-article-buffer 'edebug-form-spec '(body)) 1752(put 'gnus-with-article-buffer 'edebug-form-spec '(body))
@@ -3055,10 +3074,11 @@ images if any to the browser, and deletes them when exiting the group
3055The `gnus-list-identifiers' variable specifies what to do." 3074The `gnus-list-identifiers' variable specifies what to do."
3056 (interactive) 3075 (interactive)
3057 (let ((inhibit-point-motion-hooks t) 3076 (let ((inhibit-point-motion-hooks t)
3058 (regexp (if (consp gnus-list-identifiers) 3077 (regexp (or (gnus-parameter-list-identifier gnus-newsgroup-name)
3059 (mapconcat 'identity gnus-list-identifiers " *\\|") 3078 (if (consp gnus-list-identifiers)
3060 gnus-list-identifiers)) 3079 (mapconcat 'identity gnus-list-identifiers " *\\|")
3061 (inhibit-read-only t)) 3080 gnus-list-identifiers)))
3081 (inhibit-read-only t))
3062 (when regexp 3082 (when regexp
3063 (save-excursion 3083 (save-excursion
3064 (save-restriction 3084 (save-restriction
diff --git a/lisp/gnus/gnus-demon.el b/lisp/gnus/gnus-demon.el
index 2a45b9363f4..419346b7191 100644
--- a/lisp/gnus/gnus-demon.el
+++ b/lisp/gnus/gnus-demon.el
@@ -140,7 +140,7 @@ Emacs has been idle for IDLE `gnus-demon-timestep's."
140 ;; (func number nil) 140 ;; (func number nil)
141 ;; Call every `time' 141 ;; Call every `time'
142 ((and (numberp time) (null idle)) 142 ((and (numberp time) (null idle))
143 (run-with-timer t time 'gnus-demon-run-callback func))))) 143 (run-with-timer time time 'gnus-demon-run-callback func)))))
144 (when timer 144 (when timer
145 (add-to-list 'gnus-demon-timers timer))))) 145 (add-to-list 'gnus-demon-timers timer)))))
146 146
diff --git a/lisp/gnus/gnus-gravatar.el b/lisp/gnus/gnus-gravatar.el
index 7208889a163..98b1f3bd18c 100644
--- a/lisp/gnus/gnus-gravatar.el
+++ b/lisp/gnus/gnus-gravatar.el
@@ -80,9 +80,8 @@ If nil, default to `gravatar-size'."
80 "Insert GRAVATAR for ADDRESS in HEADER in current article buffer. 80 "Insert GRAVATAR for ADDRESS in HEADER in current article buffer.
81Set image category to CATEGORY." 81Set image category to CATEGORY."
82 (unless (eq gravatar 'error) 82 (unless (eq gravatar 'error)
83 (with-current-buffer gnus-article-buffer 83 (gnus-with-article-buffer
84 (let ((mark (point-marker)) 84 (let ((mark (point-marker))
85 (inhibit-read-only t)
86 (inhibit-point-motion-hooks t) 85 (inhibit-point-motion-hooks t)
87 (case-fold-search t)) 86 (case-fold-search t))
88 (save-restriction 87 (save-restriction
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 30cd1275e7b..832cd758b61 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -4400,6 +4400,21 @@ and the second element is the address."
4400(defun gnus-group-set-params-info (group params) 4400(defun gnus-group-set-params-info (group params)
4401 (gnus-group-set-info params group 'params)) 4401 (gnus-group-set-info params group 'params))
4402 4402
4403;; Ad-hoc function for inserting data from a different newsrc.eld
4404;; file. Use with caution, if at all.
4405(defun gnus-import-other-newsrc-file (file)
4406 (with-temp-buffer
4407 (insert-file file)
4408 (let (form)
4409 (while (ignore-errors
4410 (setq form (read (current-buffer))))
4411 (when (and (consp form)
4412 (eq (cadr form) 'gnus-newsrc-alist))
4413 (let ((infos (cadr (nth 2 form))))
4414 (dolist (info infos)
4415 (when (gnus-get-info (car info))
4416 (gnus-set-info (car info) info)))))))))
4417
4403(defun gnus-add-marked-articles (group type articles &optional info force) 4418(defun gnus-add-marked-articles (group type articles &optional info force)
4404 ;; Add ARTICLES of TYPE to the info of GROUP. 4419 ;; Add ARTICLES of TYPE to the info of GROUP.
4405 ;; If INFO is non-nil, use that info. If FORCE is non-nil, don't 4420 ;; If INFO is non-nil, use that info. If FORCE is non-nil, don't
diff --git a/lisp/gnus/gnus-range.el b/lisp/gnus/gnus-range.el
index 794d1642cdd..ce5a837eaef 100644
--- a/lisp/gnus/gnus-range.el
+++ b/lisp/gnus/gnus-range.el
@@ -116,10 +116,10 @@ Both ranges must be in ascending order."
116 ;; All done with range2 116 ;; All done with range2
117 (setq r nil)) 117 (setq r nil))
118 ((< max1 min2) 118 ((< max1 min2)
119 ;; No overlap: range1 preceeds range2 119 ;; No overlap: range1 precedes range2
120 (pop r)) 120 (pop r))
121 ((< max2 min1) 121 ((< max2 min1)
122 ;; No overlap: range2 preceeds range1 122 ;; No overlap: range2 precedes range1
123 (pop range2)) 123 (pop range2))
124 ((and (<= min2 min1) (<= max1 max2)) 124 ((and (<= min2 min1) (<= max1 max2))
125 ;; Complete overlap: range1 removed 125 ;; Complete overlap: range1 removed
@@ -232,10 +232,10 @@ RANGE1 and RANGE2 have to be sorted over <."
232 (setq range1 (cdr range1) 232 (setq range1 (cdr range1)
233 range2 (cdr range2)) 233 range2 (cdr range2))
234 (while (and min1 min2) 234 (while (and min1 min2)
235 (cond ((< max1 min2) ; range1 preceeds range2 235 (cond ((< max1 min2) ; range1 precedes range2
236 (setq range1 (cdr range1) 236 (setq range1 (cdr range1)
237 min1 nil)) 237 min1 nil))
238 ((< max2 min1) ; range2 preceeds range1 238 ((< max2 min1) ; range2 precedes range1
239 (setq range2 (cdr range2) 239 (setq range2 (cdr range2)
240 min2 nil)) 240 min2 nil))
241 (t ; some sort of overlap is occurring 241 (t ; some sort of overlap is occurring
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el
index dea6aabc75b..ebfa53f841e 100644
--- a/lisp/gnus/gnus-start.el
+++ b/lisp/gnus/gnus-start.el
@@ -1513,7 +1513,7 @@ If SCAN, request a scan of that group as well."
1513 (num 0)) 1513 (num 0))
1514 1514
1515 ;; These checks are present in gnus-activate-group but skipped 1515 ;; These checks are present in gnus-activate-group but skipped
1516 ;; due to setting dont-check in the preceeding call. 1516 ;; due to setting dont-check in the preceding call.
1517 1517
1518 ;; If a cache is present, we may have to alter the active info. 1518 ;; If a cache is present, we may have to alter the active info.
1519 (when (and gnus-use-cache info) 1519 (when (and gnus-use-cache info)
@@ -1690,6 +1690,16 @@ If SCAN, request a scan of that group as well."
1690 method)) 1690 method))
1691 (setcar elem method)) 1691 (setcar elem method))
1692 (push (list method 'ok) methods))))) 1692 (push (list method 'ok) methods)))))
1693
1694 ;; If we have primary/secondary select methods, but no groups from
1695 ;; them, we still want to issue a retrieval request from them.
1696 (dolist (method (cons gnus-select-method
1697 gnus-secondary-select-methods))
1698 (when (and (not (assoc method type-cache))
1699 (gnus-check-backend-function 'request-list (car method)))
1700 (with-current-buffer nntp-server-buffer
1701 (gnus-read-active-file-1 method nil))))
1702
1693 ;; Start early async retrieval of data. 1703 ;; Start early async retrieval of data.
1694 (dolist (elem type-cache) 1704 (dolist (elem type-cache)
1695 (destructuring-bind (method method-type infos dummy) elem 1705 (destructuring-bind (method method-type infos dummy) elem
@@ -1712,15 +1722,6 @@ If SCAN, request a scan of that group as well."
1712 (setcar (nthcdr 3 elem) 1722 (setcar (nthcdr 3 elem)
1713 (gnus-retrieve-group-data-early method infos))))))) 1723 (gnus-retrieve-group-data-early method infos)))))))
1714 1724
1715 ;; If we have primary/secondary select methods, but no groups from
1716 ;; them, we still want to issue a retrieval request from them.
1717 (dolist (method (cons gnus-select-method
1718 gnus-secondary-select-methods))
1719 (when (and (not (assoc method type-cache))
1720 (gnus-check-backend-function 'request-list (car method)))
1721 (with-current-buffer nntp-server-buffer
1722 (gnus-read-active-file-1 method nil))))
1723
1724 ;; Do the rest of the retrieval. 1725 ;; Do the rest of the retrieval.
1725 (dolist (elem type-cache) 1726 (dolist (elem type-cache)
1726 (destructuring-bind (method method-type infos early-data) elem 1727 (destructuring-bind (method method-type infos early-data) elem
@@ -1886,7 +1887,7 @@ If SCAN, request a scan of that group as well."
1886 ;; OK - I'm done 1887 ;; OK - I'm done
1887 (setq articles nil)) 1888 (setq articles nil))
1888 ((< range article) 1889 ((< range article)
1889 ;; this range preceeds the article. Leave the range unmodified. 1890 ;; this range precedes the article. Leave the range unmodified.
1890 (pop ranges) 1891 (pop ranges)
1891 ranges) 1892 ranges)
1892 ((= range article) 1893 ((= range article)
@@ -1909,11 +1910,11 @@ If SCAN, request a scan of that group as well."
1909 (setcar ranges min) 1910 (setcar ranges min)
1910 ranges) 1911 ranges)
1911 ((< max article) 1912 ((< max article)
1912 ;; this range preceeds the article. Leave the range unmodified. 1913 ;; this range precedes the article. Leave the range unmodified.
1913 (pop ranges) 1914 (pop ranges)
1914 ranges) 1915 ranges)
1915 ((< article min) 1916 ((< article min)
1916 ;; this article preceeds the range. Return null to move to the 1917 ;; this article precedes the range. Return null to move to the
1917 ;; next article 1918 ;; next article
1918 nil) 1919 nil)
1919 (t 1920 (t
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index 42acb65ff9f..a5c727925f6 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -3114,6 +3114,10 @@ Return nil if not defined."
3114(defmacro gnus-get-info (group) 3114(defmacro gnus-get-info (group)
3115 `(nth 2 (gnus-gethash ,group gnus-newsrc-hashtb))) 3115 `(nth 2 (gnus-gethash ,group gnus-newsrc-hashtb)))
3116 3116
3117(defun gnus-set-info (group info)
3118 (setcar (nthcdr 2 (gnus-gethash group gnus-newsrc-hashtb))
3119 info))
3120
3117;;; Load the compatibility functions. 3121;;; Load the compatibility functions.
3118 3122
3119(require 'gnus-ems) 3123(require 'gnus-ems)
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index b2733407836..c579261e356 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -62,8 +62,9 @@ it will default to `imap'.")
62 62
63(defvoo nnimap-stream 'undecided 63(defvoo nnimap-stream 'undecided
64 "How nnimap will talk to the IMAP server. 64 "How nnimap will talk to the IMAP server.
65Values are `ssl', `network', `starttls' or `shell'. 65Values are `ssl', `network', `network-only, `starttls' or
66The default is to try `ssl' first, and then `network'.") 66`shell'. The default is to try `ssl' first, and then
67`network'.")
67 68
68(defvoo nnimap-shell-program (if (boundp 'imap-shell-program) 69(defvoo nnimap-shell-program (if (boundp 'imap-shell-program)
69 (if (listp imap-shell-program) 70 (if (listp imap-shell-program)
@@ -337,7 +338,7 @@ textual parts.")
337 (eq nnimap-stream 'starttls)) 338 (eq nnimap-stream 'starttls))
338 (nnheader-message 7 "Opening connection to %s..." 339 (nnheader-message 7 "Opening connection to %s..."
339 nnimap-address) 340 nnimap-address)
340 '("143" "imap")) 341 '("imap" "143"))
341 ((eq nnimap-stream 'shell) 342 ((eq nnimap-stream 'shell)
342 (nnheader-message 7 "Opening connection to %s via shell..." 343 (nnheader-message 7 "Opening connection to %s via shell..."
343 nnimap-address) 344 nnimap-address)
@@ -345,16 +346,16 @@ textual parts.")
345 ((memq nnimap-stream '(ssl tls)) 346 ((memq nnimap-stream '(ssl tls))
346 (nnheader-message 7 "Opening connection to %s via tls..." 347 (nnheader-message 7 "Opening connection to %s via tls..."
347 nnimap-address) 348 nnimap-address)
348 '("143" "993" "imap" "imaps")) 349 '("imaps" "imap" "993" "143"))
349 (t 350 (t
350 (error "Unknown stream type: %s" nnimap-stream)))) 351 (error "Unknown stream type: %s" nnimap-stream))))
351 (proto-stream-always-use-starttls t) 352 (proto-stream-always-use-starttls t)
352 login-result credentials) 353 login-result credentials)
353 (when nnimap-server-port 354 (when nnimap-server-port
354 (setq ports (append ports (list nnimap-server-port)))) 355 (push nnimap-server-port ports))
355 (destructuring-bind (stream greeting capabilities stream-type) 356 (destructuring-bind (stream greeting capabilities stream-type)
356 (open-protocol-stream 357 (open-protocol-stream
357 "*nnimap*" (current-buffer) nnimap-address (car (last ports)) 358 "*nnimap*" (current-buffer) nnimap-address (car ports)
358 :type nnimap-stream 359 :type nnimap-stream
359 :shell-command nnimap-shell-program 360 :shell-command nnimap-shell-program
360 :capability-command "1 CAPABILITY\r\n" 361 :capability-command "1 CAPABILITY\r\n"
diff --git a/lisp/gnus/nntp.el b/lisp/gnus/nntp.el
index 09ecfb8f6b7..66a6365cb3b 100644
--- a/lisp/gnus/nntp.el
+++ b/lisp/gnus/nntp.el
@@ -1672,7 +1672,7 @@ password contained in '~/.nntp-authinfo'."
1672 1672
1673 ;; Some nntp servers seem to have an extension to the XOVER 1673 ;; Some nntp servers seem to have an extension to the XOVER
1674 ;; extension. On these servers, requesting an article range 1674 ;; extension. On these servers, requesting an article range
1675 ;; preceeding the active range does not return an error as 1675 ;; preceding the active range does not return an error as
1676 ;; specified in the RFC. What we instead get is the NOV entry 1676 ;; specified in the RFC. What we instead get is the NOV entry
1677 ;; for the first available article. Obviously, a client can 1677 ;; for the first available article. Obviously, a client can
1678 ;; use that entry to avoid making unnecessary requests. The 1678 ;; use that entry to avoid making unnecessary requests. The
diff --git a/lisp/gnus/sieve.el b/lisp/gnus/sieve.el
index 31b2665a644..2111d34eac5 100644
--- a/lisp/gnus/sieve.el
+++ b/lisp/gnus/sieve.el
@@ -98,39 +98,40 @@ require \"fileinto\";
98 98
99(defvar sieve-manage-buffer nil) 99(defvar sieve-manage-buffer nil)
100(defvar sieve-buffer-header-end nil) 100(defvar sieve-buffer-header-end nil)
101(defvar sieve-buffer-script-name nil
102 "The real script name of the buffer.")
103(make-local-variable 'sieve-buffer-script-name)
101 104
102;; Sieve-manage mode: 105;; Sieve-manage mode:
103 106
104(defvar sieve-manage-mode-map nil 107(defvar sieve-manage-mode-map
108 (let ((map (make-sparse-keymap)))
109 ;; various
110 (define-key map "?" 'sieve-help)
111 (define-key map "h" 'sieve-help)
112 (define-key map "q" 'sieve-bury-buffer)
113 ;; activating
114 (define-key map "m" 'sieve-activate)
115 (define-key map "u" 'sieve-deactivate)
116 (define-key map "\M-\C-?" 'sieve-deactivate-all)
117 ;; navigation keys
118 (define-key map "\C-p" 'sieve-prev-line)
119 (define-key map [up] 'sieve-prev-line)
120 (define-key map "\C-n" 'sieve-next-line)
121 (define-key map [down] 'sieve-next-line)
122 (define-key map " " 'sieve-next-line)
123 (define-key map "n" 'sieve-next-line)
124 (define-key map "p" 'sieve-prev-line)
125 (define-key map "\C-m" 'sieve-edit-script)
126 (define-key map "f" 'sieve-edit-script)
127 (define-key map "o" 'sieve-edit-script-other-window)
128 (define-key map "r" 'sieve-remove)
129 (define-key map "q" 'sieve-manage-quit)
130 (define-key map [(down-mouse-2)] 'sieve-edit-script)
131 (define-key map [(down-mouse-3)] 'sieve-manage-mode-menu)
132 map)
105 "Keymap for `sieve-manage-mode'.") 133 "Keymap for `sieve-manage-mode'.")
106 134
107(if sieve-manage-mode-map
108 ()
109 (setq sieve-manage-mode-map (make-sparse-keymap))
110 (suppress-keymap sieve-manage-mode-map)
111 ;; various
112 (define-key sieve-manage-mode-map "?" 'sieve-help)
113 (define-key sieve-manage-mode-map "h" 'sieve-help)
114 (define-key sieve-manage-mode-map "q" 'sieve-bury-buffer)
115 ;; activating
116 (define-key sieve-manage-mode-map "m" 'sieve-activate)
117 (define-key sieve-manage-mode-map "u" 'sieve-deactivate)
118 (define-key sieve-manage-mode-map "\M-\C-?" 'sieve-deactivate-all)
119 ;; navigation keys
120 (define-key sieve-manage-mode-map "\C-p" 'sieve-prev-line)
121 (define-key sieve-manage-mode-map [up] 'sieve-prev-line)
122 (define-key sieve-manage-mode-map "\C-n" 'sieve-next-line)
123 (define-key sieve-manage-mode-map [down] 'sieve-next-line)
124 (define-key sieve-manage-mode-map " " 'sieve-next-line)
125 (define-key sieve-manage-mode-map "n" 'sieve-next-line)
126 (define-key sieve-manage-mode-map "p" 'sieve-prev-line)
127 (define-key sieve-manage-mode-map "\C-m" 'sieve-edit-script)
128 (define-key sieve-manage-mode-map "f" 'sieve-edit-script)
129 (define-key sieve-manage-mode-map "o" 'sieve-edit-script-other-window)
130 (define-key sieve-manage-mode-map "r" 'sieve-remove)
131 (define-key sieve-manage-mode-map [(down-mouse-2)] 'sieve-edit-script)
132 (define-key sieve-manage-mode-map [(down-mouse-3)] 'sieve-manage-mode-menu))
133
134(easy-menu-define sieve-manage-mode-menu sieve-manage-mode-map 135(easy-menu-define sieve-manage-mode-menu sieve-manage-mode-map
135 "Sieve Menu." 136 "Sieve Menu."
136 '("Manage Sieve" 137 '("Manage Sieve"
@@ -138,21 +139,21 @@ require \"fileinto\";
138 ["Activate script" sieve-activate t] 139 ["Activate script" sieve-activate t]
139 ["Deactivate script" sieve-deactivate t])) 140 ["Deactivate script" sieve-deactivate t]))
140 141
141(define-derived-mode sieve-manage-mode fundamental-mode "SIEVE" 142(define-derived-mode sieve-manage-mode fundamental-mode "Sieve-manage"
142 "Mode used for sieve script management." 143 "Mode used for sieve script management."
143 (setq mode-name "SIEVE")
144 (buffer-disable-undo (current-buffer)) 144 (buffer-disable-undo (current-buffer))
145 (setq truncate-lines t) 145 (setq truncate-lines t)
146 (easy-menu-add sieve-manage-mode-menu sieve-manage-mode-map)) 146 (easy-menu-add sieve-manage-mode-menu sieve-manage-mode-map))
147 147
148(put 'sieve-manage-mode 'mode-class 'special) 148(put 'sieve-manage-mode 'mode-class 'special)
149 149
150;; This is necessary to allow correct handling of \\[cvs-mode-diff-map]
151;; in substitute-command-keys.
152;(fset 'sieve-manage-mode-map sieve-manage-mode-map)
153
154;; Commands used in sieve-manage mode: 150;; Commands used in sieve-manage mode:
155 151
152(defun sieve-manage-quit ()
153 "Quit."
154 (interactive)
155 (kill-buffer (current-buffer)))
156
156(defun sieve-activate (&optional pos) 157(defun sieve-activate (&optional pos)
157 (interactive "d") 158 (interactive "d")
158 (let ((name (sieve-script-at-point)) err) 159 (let ((name (sieve-script-at-point)) err)
@@ -204,7 +205,10 @@ require \"fileinto\";
204 (switch-to-buffer (get-buffer-create "template.siv")) 205 (switch-to-buffer (get-buffer-create "template.siv"))
205 (insert sieve-template)) 206 (insert sieve-template))
206 (sieve-mode) 207 (sieve-mode)
207 (message "Press C-c C-l to upload script to server."))) 208 (setq sieve-buffer-script-name name)
209 (message
210 (substitute-command-keys
211 "Press \\[sieve-upload] to upload script to server."))))
208 212
209(defmacro sieve-change-region (&rest body) 213(defmacro sieve-change-region (&rest body)
210 "Turns off sieve-region before executing BODY, then re-enables it after. 214 "Turns off sieve-region before executing BODY, then re-enables it after.
@@ -337,13 +341,18 @@ Server : " server ":" (or port "2000") "
337 ;; get list of script names and print them 341 ;; get list of script names and print them
338 (let ((scripts (sieve-manage-listscripts sieve-manage-buffer))) 342 (let ((scripts (sieve-manage-listscripts sieve-manage-buffer)))
339 (if (null scripts) 343 (if (null scripts)
340 (insert (format (concat "No scripts on server, press RET on %s to " 344 (insert
341 "create a new script.\n") sieve-new-script)) 345 (substitute-command-keys
342 (insert (format (concat "%d script%s on server, press RET on a script " 346 (format
343 "name edits it, or\npress RET on %s to create " 347 "No scripts on server, press \\[sieve-edit-script] on %s to create a new script.\n"
344 "a new script.\n") (length scripts) 348 sieve-new-script)))
345 (if (eq (length scripts) 1) "" "s") 349 (insert
346 sieve-new-script))) 350 (substitute-command-keys
351 (format (concat "%d script%s on server, press \\[sieve-edit-script] on a script "
352 "name edits it, or\npress \\[sieve-edit-script] on %s to create "
353 "a new script.\n") (length scripts)
354 (if (eq (length scripts) 1) "" "s")
355 sieve-new-script))))
347 (save-excursion 356 (save-excursion
348 (sieve-insert-scripts (list sieve-new-script)) 357 (sieve-insert-scripts (list sieve-new-script))
349 (sieve-insert-scripts scripts))) 358 (sieve-insert-scripts scripts)))
@@ -363,15 +372,15 @@ Server : " server ":" (or port "2000") "
363;;;###autoload 372;;;###autoload
364(defun sieve-upload (&optional name) 373(defun sieve-upload (&optional name)
365 (interactive) 374 (interactive)
366 (unless name
367 (setq name (buffer-name)))
368 (when (or (get-buffer sieve-buffer) (call-interactively 'sieve-manage)) 375 (when (or (get-buffer sieve-buffer) (call-interactively 'sieve-manage))
369 (let ((script (buffer-string)) err) 376 (let ((script (buffer-string)) err)
370 (with-current-buffer (get-buffer sieve-buffer) 377 (with-current-buffer (get-buffer sieve-buffer)
371 (setq err (sieve-manage-putscript name script sieve-manage-buffer)) 378 (setq err (sieve-manage-putscript
379 (or name sieve-buffer-script-name (buffer-name))
380 script sieve-manage-buffer))
372 (if (sieve-manage-ok-p err) 381 (if (sieve-manage-ok-p err)
373 (message (concat 382 (message (substitute-command-keys
374 "Sieve upload done. Use `C-c RET' to manage scripts.")) 383 "Sieve upload done. Use \\[sieve-manage] to manage scripts."))
375 (message "Sieve upload failed: %s" (nth 2 err))))))) 384 (message "Sieve upload failed: %s" (nth 2 err)))))))
376 385
377;;;###autoload 386;;;###autoload
diff --git a/lisp/ido.el b/lisp/ido.el
index d1f2cea83f8..2e67e367a8f 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -1472,8 +1472,8 @@ Removes badly formatted data and ignored directories."
1472 (add-hook 'choose-completion-string-functions 'ido-choose-completion-string)) 1472 (add-hook 'choose-completion-string-functions 'ido-choose-completion-string))
1473 1473
1474(define-minor-mode ido-everywhere 1474(define-minor-mode ido-everywhere
1475 "Toggle using ido speed-ups everywhere file and directory names are read. 1475 "Toggle using ido-mode everywhere file and directory names are read.
1476With ARG, turn ido speed-up on if arg is positive, off otherwise." 1476With ARG, turn ido-mode on if arg is positive, off otherwise."
1477 :global t 1477 :global t
1478 :group 'ido 1478 :group 'ido
1479 (when (get 'ido-everywhere 'file) 1479 (when (get 'ido-everywhere 'file)
@@ -1494,8 +1494,8 @@ With ARG, turn ido speed-up on if arg is positive, off otherwise."
1494 1494
1495;;;###autoload 1495;;;###autoload
1496(defun ido-mode (&optional arg) 1496(defun ido-mode (&optional arg)
1497 "Toggle ido speed-ups on or off. 1497 "Toggle ido mode on or off.
1498With ARG, turn ido speed-up on if arg is positive, off otherwise. 1498With ARG, turn ido-mode on if arg is positive, off otherwise.
1499Turning on ido-mode will remap (via a minor-mode keymap) the default 1499Turning on ido-mode will remap (via a minor-mode keymap) the default
1500keybindings for the `find-file' and `switch-to-buffer' families of 1500keybindings for the `find-file' and `switch-to-buffer' families of
1501commands to the ido versions of these functions. 1501commands to the ido versions of these functions.
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el
index 8672fca3a85..5f4d3ea849e 100644
--- a/lisp/international/mule-cmds.el
+++ b/lisp/international/mule-cmds.el
@@ -366,7 +366,9 @@ This also sets the following values:
366 (coding-system-get coding-system 'ascii-compatible-p))) 366 (coding-system-get coding-system 'ascii-compatible-p)))
367 (setq default-file-name-coding-system coding-system))) 367 (setq default-file-name-coding-system coding-system)))
368 (setq default-terminal-coding-system coding-system) 368 (setq default-terminal-coding-system coding-system)
369 (setq default-keyboard-coding-system coding-system) 369 ;; Prevent default-terminal-coding-system from converting ^M to ^J.
370 (setq default-keyboard-coding-system
371 (coding-system-change-eol-conversion coding-system 'unix))
370 ;; Preserve eol-type from existing default-process-coding-systems. 372 ;; Preserve eol-type from existing default-process-coding-systems.
371 ;; On non-unix-like systems in particular, these may have been set 373 ;; On non-unix-like systems in particular, these may have been set
372 ;; carefully by the user, or by the startup code, to deal with the 374 ;; carefully by the user, or by the startup code, to deal with the
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 7fe5383d865..9a892f493d7 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -503,7 +503,7 @@ FIELD is the plain text name of a field in the message, such as
503\"subject\" or \"from\". A FIELD of \"to\" will automatically include 503\"subject\" or \"from\". A FIELD of \"to\" will automatically include
504all text from the \"cc\" field as well. 504all text from the \"cc\" field as well.
505 505
506REGEXP is an expression to match in the preceeding specified FIELD. 506REGEXP is an expression to match in the preceding specified FIELD.
507FIELD/REGEXP pairs continue in the list. 507FIELD/REGEXP pairs continue in the list.
508 508
509examples: 509examples:
@@ -4316,7 +4316,7 @@ With prefix argument N moves forward N messages with these labels.
4316 4316
4317;;;*** 4317;;;***
4318 4318
4319;;;### (autoloads (rmail-mime) "rmailmm" "rmailmm.el" "04902da045706fb7f2b0915529ed161b") 4319;;;### (autoloads (rmail-mime) "rmailmm" "rmailmm.el" "c530622b53038152ca84f2ec9313bd7a")
4320;;; Generated autoloads from rmailmm.el 4320;;; Generated autoloads from rmailmm.el
4321 4321
4322(autoload 'rmail-mime "rmailmm" "\ 4322(autoload 'rmail-mime "rmailmm" "\
diff --git a/lisp/net/tramp-cmds.el b/lisp/net/tramp-cmds.el
index 7d266ad17d7..58f1e2c6a9e 100644
--- a/lisp/net/tramp-cmds.el
+++ b/lisp/net/tramp-cmds.el
@@ -281,6 +281,12 @@ buffer in your bug report.
281 (insert ")\n")) 281 (insert ")\n"))
282 (insert-buffer-substring elbuf))) 282 (insert-buffer-substring elbuf)))
283 283
284 ;; Dump load-path shadows.
285 (insert "\nload-path shadows:\n==================\n")
286 (ignore-errors
287 (mapc (lambda (x) (when (string-match "tramp" x) (insert x "\n")))
288 (split-string (list-load-path-shadows t) "\n")))
289
284 ;; Append buffers only when we are in message mode. 290 ;; Append buffers only when we are in message mode.
285 (when (and 291 (when (and
286 (eq major-mode 'message-mode) 292 (eq major-mode 'message-mode)
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index 57cc54935dc..b3278dc312d 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -142,7 +142,7 @@
142 (add-to-list 'tramp-methods (cons elt nil))))) 142 (add-to-list 'tramp-methods (cons elt nil)))))
143 143
144(defconst tramp-gvfs-path-tramp (concat dbus-path-emacs "/Tramp") 144(defconst tramp-gvfs-path-tramp (concat dbus-path-emacs "/Tramp")
145 "The preceeding object path for own objects.") 145 "The preceding object path for own objects.")
146 146
147(defconst tramp-gvfs-service-daemon "org.gtk.vfs.Daemon" 147(defconst tramp-gvfs-service-daemon "org.gtk.vfs.Daemon"
148 "The well known name of the GVFS daemon.") 148 "The well known name of the GVFS daemon.")
diff --git a/lisp/obsolete/sym-comp.el b/lisp/obsolete/sym-comp.el
index 6365a1075e0..7e9a460ea14 100644
--- a/lisp/obsolete/sym-comp.el
+++ b/lisp/obsolete/sym-comp.el
@@ -51,7 +51,7 @@ Uses `current-word' with the buffer narrowed to the part before
51point." 51point."
52 (save-restriction 52 (save-restriction
53 ;; Narrow in case point is in the middle of a symbol -- we want 53 ;; Narrow in case point is in the middle of a symbol -- we want
54 ;; just the preceeding part. 54 ;; just the preceding part.
55 (narrow-to-region (point-min) (point)) 55 (narrow-to-region (point-min) (point))
56 (current-word))) 56 (current-word)))
57 57
diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog
index 5f0908e11c6..68d957584c6 100644
--- a/lisp/org/ChangeLog
+++ b/lisp/org/ChangeLog
@@ -1,3 +1,14 @@
12011-02-28 Juanma Barranquero <lekktu@gmail.com>
2
3 * org.el (org-maybe-keyword-time-regexp):
4 * org-icalendar.el (org-icalendar-store-UID):
5 * org-agenda.el (org-agenda-scheduled-leaders)
6 (org-agenda-deadline-leaders, org-agenda-filter-preset):
7 * org-table.el (org-table-current-line-types)
8 (org-table-current-begin-line, org-table-current-begin-pos):
9 (org-table-current-field-formula):
10 Fix typos in docstrings.
11
12011-02-10 Stefan Monnier <monnier@iro.umontreal.ca> 122011-02-10 Stefan Monnier <monnier@iro.umontreal.ca>
2 13
3 * org-remember.el (org-remember-mode-map): 14 * org-remember.el (org-remember-mode-map):
diff --git a/lisp/password-cache.el b/lisp/password-cache.el
index 8738aa65a9f..a7f75a03add 100644
--- a/lisp/password-cache.el
+++ b/lisp/password-cache.el
@@ -76,6 +76,12 @@ regulate cache behavior."
76 key 76 key
77 (symbol-value (intern-soft key password-data)))) 77 (symbol-value (intern-soft key password-data))))
78 78
79(defun password-in-cache-p (key)
80 "Check if KEY is in the cache."
81 (and password-cache
82 key
83 (intern-soft key password-data)))
84
79(defun password-read (prompt &optional key) 85(defun password-read (prompt &optional key)
80 "Read password, for use with KEY, from user, or from cache if wanted. 86 "Read password, for use with KEY, from user, or from cache if wanted.
81KEY indicate the purpose of the password, so the cache can 87KEY indicate the purpose of the password, so the cache can
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index 7c634d14e6a..f6d497569ba 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -2769,7 +2769,7 @@ Will not look before LIM."
2769 (goto-char (cperl-beginning-of-property p look-prop)) 2769 (goto-char (cperl-beginning-of-property p look-prop))
2770 (beginning-of-line) 2770 (beginning-of-line)
2771 (setq pre-indent-point (point))))) 2771 (setq pre-indent-point (point)))))
2772 (goto-char pre-indent-point) ; Orig line skipping preceeding pod/etc 2772 (goto-char pre-indent-point) ; Orig line skipping preceding pod/etc
2773 (let* ((case-fold-search nil) 2773 (let* ((case-fold-search nil)
2774 (s-s (cperl-get-state (car parse-data) (nth 1 parse-data))) 2774 (s-s (cperl-get-state (car parse-data) (nth 1 parse-data)))
2775 (start (or (nth 2 parse-data) ; last complete sexp terminated 2775 (start (or (nth 2 parse-data) ; last complete sexp terminated
@@ -2796,8 +2796,8 @@ Will not look before LIM."
2796 (cperl-1+ char-after-pos) 'indentable) 2796 (cperl-1+ char-after-pos) 'indentable)
2797 p (1+ (cperl-beginning-of-property 2797 p (1+ (cperl-beginning-of-property
2798 (point) 'indentable)) 2798 (point) 'indentable))
2799 is-block ; misused for: preceeding line in REx 2799 is-block ; misused for: preceding line in REx
2800 (save-excursion ; Find preceeding line 2800 (save-excursion ; Find preceding line
2801 (cperl-backward-to-noncomment p) 2801 (cperl-backward-to-noncomment p)
2802 (beginning-of-line) 2802 (beginning-of-line)
2803 (if (<= (point) p) 2803 (if (<= (point) p)
@@ -2813,10 +2813,10 @@ Will not look before LIM."
2813 prop (parse-partial-sexp p char-after-pos)) 2813 prop (parse-partial-sexp p char-after-pos))
2814 (cond ((not delim) ; End the REx, ignore is-block 2814 (cond ((not delim) ; End the REx, ignore is-block
2815 (vector 'indentable 'terminator p is-block)) 2815 (vector 'indentable 'terminator p is-block))
2816 (is-block ; Indent w.r.t. preceeding line 2816 (is-block ; Indent w.r.t. preceding line
2817 (vector 'indentable 'cont-line char-after-pos 2817 (vector 'indentable 'cont-line char-after-pos
2818 is-block char-after p)) 2818 is-block char-after p))
2819 (t ; No preceeding line... 2819 (t ; No preceding line...
2820 (vector 'indentable 'first-line p)))) 2820 (vector 'indentable 'first-line p))))
2821 ((get-text-property char-after-pos 'REx-part2) 2821 ((get-text-property char-after-pos 'REx-part2)
2822 (vector 'REx-part2 (point))) 2822 (vector 'REx-part2 (point)))
@@ -2897,7 +2897,7 @@ Will not look before LIM."
2897 (cperl-backward-to-start-of-continued-exp containing-sexp)) 2897 (cperl-backward-to-start-of-continued-exp containing-sexp))
2898 (beginning-of-line) 2898 (beginning-of-line)
2899 (cperl-backward-to-noncomment containing-sexp)) 2899 (cperl-backward-to-noncomment containing-sexp))
2900 ;; Now we get non-label preceeding the indent point 2900 ;; Now we get non-label preceding the indent point
2901 (if (not (or (eq (1- (point)) containing-sexp) 2901 (if (not (or (eq (1- (point)) containing-sexp)
2902 (memq (preceding-char) 2902 (memq (preceding-char)
2903 (append (if is-block " ;{" " ,;{") '(nil))) 2903 (append (if is-block " ;{" " ,;{") '(nil)))
@@ -4835,7 +4835,7 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
4835;;; Moreover, one takes positive approach (looks for else,grep etc) 4835;;; Moreover, one takes positive approach (looks for else,grep etc)
4836;;; another negative (looks for bless,tr etc) 4836;;; another negative (looks for bless,tr etc)
4837(defun cperl-after-block-p (lim &optional pre-block) 4837(defun cperl-after-block-p (lim &optional pre-block)
4838 "Return true if the preceeding } (if PRE-BLOCK, following {) delimits a block. 4838 "Return true if the preceding } (if PRE-BLOCK, following {) delimits a block.
4839Would not look before LIM. Assumes that LIM is a good place to begin a 4839Would not look before LIM. Assumes that LIM is a good place to begin a
4840statement. The kind of block we treat here is one after which a new 4840statement. The kind of block we treat here is one after which a new
4841statement would start; thus the block in ${func()} does not count." 4841statement would start; thus the block in ${func()} does not count."
@@ -4864,7 +4864,7 @@ statement would start; thus the block in ${func()} does not count."
4864 (progn 4864 (progn
4865 (forward-sexp -1) 4865 (forward-sexp -1)
4866 (looking-at "sub[ \t\n\f#]")))))) 4866 (looking-at "sub[ \t\n\f#]"))))))
4867 ;; What preceeds is not word... XXXX Last statement in sub??? 4867 ;; What precedes is not word... XXXX Last statement in sub???
4868 (cperl-after-expr-p lim)))) 4868 (cperl-after-expr-p lim))))
4869 (error nil)))) 4869 (error nil))))
4870 4870
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index 30d9fc21867..5b7e07a5aad 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -428,7 +428,7 @@ path \(the value of !PATH). However, under Windows and MacOS
428variable can be set to specify the paths where IDLWAVE can find PRO 428variable can be set to specify the paths where IDLWAVE can find PRO
429files. The shell will only be asked for a list of paths when this 429files. The shell will only be asked for a list of paths when this
430variable is nil. The value is a list of directories. A directory 430variable is nil. The value is a list of directories. A directory
431preceeded by a `+' will be searched recursively. If you set this 431preceded by a `+' will be searched recursively. If you set this
432variable on a UNIX system, the shell will not be queried. See also 432variable on a UNIX system, the shell will not be queried. See also
433`idlwave-system-directory'." 433`idlwave-system-directory'."
434 :group 'idlwave-routine-info 434 :group 'idlwave-routine-info
@@ -1197,7 +1197,7 @@ As a user, you should not set this to t.")
1197 (2 font-lock-function-name-face))) 1197 (2 font-lock-function-name-face)))
1198 1198
1199 ;; Keyword parameters, like /xlog or ,xrange=[] 1199 ;; Keyword parameters, like /xlog or ,xrange=[]
1200 ;; This is anchored to the comma preceeding the keyword. 1200 ;; This is anchored to the comma preceding the keyword.
1201 ;; Treats continuation lines, works only during whole buffer 1201 ;; Treats continuation lines, works only during whole buffer
1202 ;; fontification. Slow, use it only in fancy fontification. 1202 ;; fontification. Slow, use it only in fancy fontification.
1203 (keyword-parameters 1203 (keyword-parameters
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index cb1d3c24a94..75b706b74ec 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -1775,7 +1775,7 @@ NOTE: Activate the new setting by restarting Emacs.
1775 1775
1776(defcustom vhdl-intelligent-tab t 1776(defcustom vhdl-intelligent-tab t
1777 "*Non-nil means `TAB' does indentation, word completion and tab insertion. 1777 "*Non-nil means `TAB' does indentation, word completion and tab insertion.
1778That is, if preceeding character is part of a word then complete word, 1778That is, if preceding character is part of a word then complete word,
1779else if not at beginning of line then insert tab, 1779else if not at beginning of line then insert tab,
1780else if last command was a `TAB' or `RET' then dedent one step, 1780else if last command was a `TAB' or `RET' then dedent one step,
1781else indent current line (i.e. `TAB' is bound to `vhdl-electric-tab'). 1781else indent current line (i.e. `TAB' is bound to `vhdl-electric-tab').
@@ -6946,7 +6946,7 @@ only-lines."
6946;; Indentation commands 6946;; Indentation commands
6947 6947
6948(defun vhdl-electric-tab (&optional prefix-arg) 6948(defun vhdl-electric-tab (&optional prefix-arg)
6949 "If preceeding character is part of a word or a paren then hippie-expand, 6949 "If preceding character is part of a word or a paren then hippie-expand,
6950else if right of non whitespace on line then insert tab, 6950else if right of non whitespace on line then insert tab,
6951else if last command was a tab or return then dedent one step or if a comment 6951else if last command was a tab or return then dedent one step or if a comment
6952toggle between normal indent and inline comment indent, 6952toggle between normal indent and inline comment indent,
@@ -10396,7 +10396,7 @@ with double-quotes is to be inserted. DEFAULT specifies a default string."
10396 (if vhdl-upper-case-keywords (upcase-word num) (downcase-word num))) 10396 (if vhdl-upper-case-keywords (upcase-word num) (downcase-word num)))
10397 10397
10398(defun vhdl-minibuffer-tab (&optional prefix-arg) 10398(defun vhdl-minibuffer-tab (&optional prefix-arg)
10399 "If preceeding character is part of a word or a paren then hippie-expand, 10399 "If preceding character is part of a word or a paren then hippie-expand,
10400else insert tab (used for word completion in VHDL minibuffer)." 10400else insert tab (used for word completion in VHDL minibuffer)."
10401 (interactive "P") 10401 (interactive "P")
10402 (cond 10402 (cond
@@ -13056,7 +13056,7 @@ hierarchy otherwise.")
13056;; Scan functions 13056;; Scan functions
13057 13057
13058(defun vhdl-scan-context-clause () 13058(defun vhdl-scan-context-clause ()
13059 "Scan the context clause that preceeds a design unit." 13059 "Scan the context clause that precedes a design unit."
13060 (let (lib-alist) 13060 (let (lib-alist)
13061 (save-excursion 13061 (save-excursion
13062 (when (re-search-backward "^[ \t]*\\(architecture\\|configuration\\|entity\\|package\\)\\>" nil t) 13062 (when (re-search-backward "^[ \t]*\\(architecture\\|configuration\\|entity\\|package\\)\\>" nil t)
diff --git a/lisp/replace.el b/lisp/replace.el
index 0f8adea2aca..928c3170c65 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -1531,7 +1531,7 @@ N (match-string N) (where N is a string of digits)
1531#& (string-to-number (match-string 0)) 1531#& (string-to-number (match-string 0))
1532# replace-count 1532# replace-count
1533 1533
1534Note that these symbols must be preceeded by a backslash in order to 1534Note that these symbols must be preceded by a backslash in order to
1535type them using Lisp syntax." 1535type them using Lisp syntax."
1536 (while (consp n) 1536 (while (consp n)
1537 (cond 1537 (cond
diff --git a/lisp/term/screen.el b/lisp/term/screen.el
new file mode 100644
index 00000000000..4931a422e09
--- /dev/null
+++ b/lisp/term/screen.el
@@ -0,0 +1,11 @@
1;; -*- no-byte-compile: t -*-
2;; Treat a screen terminal similar to an xterm.
3(load "term/xterm")
4
5(defun terminal-init-screen ()
6 "Terminal initialization function for screen."
7 ;; Use the xterm color initialization code.
8 (xterm-register-default-colors)
9 (tty-set-up-initial-frame-faces))
10
11;; screen.el ends here
diff --git a/lisp/textmodes/paragraphs.el b/lisp/textmodes/paragraphs.el
index 70f11cf66dc..a0892b5ebba 100644
--- a/lisp/textmodes/paragraphs.el
+++ b/lisp/textmodes/paragraphs.el
@@ -43,7 +43,7 @@ only considered as a candidate to match `paragraph-start' or
43 43
44Prefix argument says to turn mode on if positive, off if negative. 44Prefix argument says to turn mode on if positive, off if negative.
45When the mode is turned on, if there are newlines in the buffer but no hard 45When the mode is turned on, if there are newlines in the buffer but no hard
46newlines, ask the user whether to mark as hard any newlines preceeding a 46newlines, ask the user whether to mark as hard any newlines preceding a
47`paragraph-start' line. From a program, second arg INSERT specifies whether 47`paragraph-start' line. From a program, second arg INSERT specifies whether
48to do this; it can be `never' to change nothing, t or `always' to force 48to do this; it can be `never' to change nothing, t or `always' to force
49marking, `guess' to try to do the right thing with no questions, nil 49marking, `guess' to try to do the right thing with no questions, nil
diff --git a/msdos/ChangeLog b/msdos/ChangeLog
index f1cdf510a06..1891d79da43 100644
--- a/msdos/ChangeLog
+++ b/msdos/ChangeLog
@@ -1,3 +1,36 @@
12011-02-26 Eli Zaretskii <eliz@gnu.org>
2
3 * sedlibmk.inp (BITSIZEOF_PTRDIFF_T, BITSIZEOF_SIG_ATOMIC_T)
4 (BITSIZEOF_SIZE_T, BITSIZEOF_WCHAR_T)
5 (BITSIZEOF_WINT_TGNULIB_FCHMODAT, GNULIB_FSTATAT, GNULIB_FUTIMENS)
6 (GNULIB_LCHMOD, GNULIB_LSTAT, GNULIB_MBTOWC, GNULIB_MKDIRAT)
7 (GNULIB_MKFIFO, GNULIB_MKFIFOAT, GNULIB_MKNOD, GNULIB_MKNODAT)
8 (GNULIB_STAT, GNULIB_UTIMENSAT, GNULIB_WCTOMB, HAVE_FCHMODAT)
9 (HAVE_FSTATAT, HAVE_FUTIMENS, HAVE_INTTYPES_H, HAVE_LCHMOD)
10 (HAVE_LONG_LONG_INT, HAVE_LSTAT, HAVE_MKDIRAT, HAVE_MKFIFO)
11 (HAVE_MKFIFOAT, HAVE_MKNOD, HAVE_MKNODAT)
12 (HAVE_SIGNED_SIG_ATOMIC_T, HAVE_SIGNED_WCHAR_T)
13 (HAVE_SIGNED_WINT_T, HAVE_STDINT_H, HAVE_SYS_BITYPES_H)
14 (HAVE_SYS_INTTYPES_H, HAVE_SYS_TYPES_H)
15 (HAVE_UNSIGNED_LONG_LONG_INT, HAVE_UTIMENSAT, HAVE_WCHAR_H)
16 (MKDIR_P, NEXT_AS_FIRST_DIRECTIVE_STDINT_H)
17 (NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H, NEXT_STDINT_H)
18 (NEXT_SYS_STAT_H, REPLACE_LSTAT, REPLACE_MBTOWC, REPLACE_MKDIR)
19 (REPLACE_MKFIFO, REPLACE_MKNOD, REPLACE_STAT, REPLACE_UTIMENSAT)
20 (REPLACE_WCTOMB, SIG_ATOMIC_T_SUFFIX, SIZE_T_SUFFIX, STDINT_H)
21 (WCHAR_T_SUFFIX, WINT_T_SUFFIX, APPLE_UNIVERSAL_BUILD): New edits.
22 ($(MKDIR_P)): Replace with equivalent DOS command.
23 (gl_LIBOBJS): Add md5.o and filemode.o.
24
25 * sed2v2.inp (BITSIZEOF_PTRDIFF_T, BITSIZEOF_SIG_ATOMIC_T)
26 (BITSIZEOF_SIZE_T, BITSIZEOF_WCHAR_T, BITSIZEOF_WINT_T)
27 (HAVE_LONG_LONG_INT, HAVE_SIGNED_SIG_ATOMIC_T, HAVE_SIGNED_WINT_T)
28 (HAVE_UNSIGNED_LONG_LONG_INT, HAVE_WCHAR_H, HAVE_INTTYPES_H): New
29 edits.
30
31 * depfiles.bat: Create a dummy .Po file only if a file by the same
32 name does not already exist in the deps/ subdirectory.
33
12011-02-19 Eli Zaretskii <eliz@gnu.org> 342011-02-19 Eli Zaretskii <eliz@gnu.org>
2 35
3 * depfiles.bat: New file. 36 * depfiles.bat: New file.
diff --git a/msdos/depfiles.bat b/msdos/depfiles.bat
index 22fcfc3dcd6..901a53cbb0d 100644
--- a/msdos/depfiles.bat
+++ b/msdos/depfiles.bat
@@ -20,6 +20,6 @@ rem along with GNU Emacs. If not, see http://www.gnu.org/licenses/.
20 20
21rem ---------------------------------------------------------------------- 21rem ----------------------------------------------------------------------
22 22
23echo %1 | sed -e "s,^,@echo # dummy > deps\\," -e "s,\.c,.Po," > tdepfile.bat 23echo %1 | sed -e "s,\(.*\)\.c,@if not exist deps\\\1.Po echo # dummy > deps\\\1.Po," > tdepfile.bat
24call tdepfile 24call tdepfile
25del tdepfile.bat 25del tdepfile.bat
diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp
index 470c1bf60a6..030b69e583f 100644
--- a/msdos/sed2v2.inp
+++ b/msdos/sed2v2.inp
@@ -62,7 +62,18 @@
62/^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/ 62/^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/
63/^#undef SYS_SIGLIST_DECLARED/s/^.*$/#define SYS_SIGLIST_DECLARED 1/ 63/^#undef SYS_SIGLIST_DECLARED/s/^.*$/#define SYS_SIGLIST_DECLARED 1/
64/^#undef HAVE_DIRENT_H/s/^.*$/#define HAVE_DIRENT_H 1/ 64/^#undef HAVE_DIRENT_H/s/^.*$/#define HAVE_DIRENT_H 1/
65
66/^#undef BITSIZEOF_PTRDIFF_T *$/s/^.*$/#define BITSIZEOF_PTRDIFF_T 32/
67/^#undef BITSIZEOF_SIG_ATOMIC_T *$/s/^.*$/#define BITSIZEOF_SIG_ATOMIC_T 32/
68/^#undef BITSIZEOF_SIZE_T *$/s/^.*$/#define BITSIZEOF_SIZE_T 32/
69/^#undef BITSIZEOF_WCHAR_T *$/s/^.*$/#define BITSIZEOF_WCHAR_T 16/
70/^#undef BITSIZEOF_WINT_T *$/s/^.*$/#define BITSIZEOF_WINT_T 32/
65/^#undef HAVE__BOOL/s/^.*$/#define HAVE__BOOL 1/ 71/^#undef HAVE__BOOL/s/^.*$/#define HAVE__BOOL 1/
72/^#undef HAVE_LONG_LONG_INT *$/s/^.*$/#define HAVE_LONG_LONG_INT 1/
73/^#undef HAVE_SIGNED_SIG_ATOMIC_T *$/s/^.*$/#define HAVE_SIGNED_SIG_ATOMIC_T 1/
74/^#undef HAVE_SIGNED_WINT_T *$/s/^.*$/#define HAVE_SIGNED_WINT_T 1/
75/^#undef HAVE_UNSIGNED_LONG_LONG_INT *$/s/^.*$/#define HAVE_UNSIGNED_LONG_LONG_INT 1/
76/^#under HAVE_WCHAR_H *$/s/^.*$/#define HAVE_WCHAR_H 1/
66/^#undef inline/s/^.*$/#define inline __inline__/ 77/^#undef inline/s/^.*$/#define inline __inline__/
67/^#undef my_strftime/s/^.*$/#define my_strftime nstrftime/ 78/^#undef my_strftime/s/^.*$/#define my_strftime nstrftime/
68/^#undef restrict/s/^.*$/#define restrict __restrict/ 79/^#undef restrict/s/^.*$/#define restrict __restrict/
@@ -77,6 +88,12 @@ s!^#undef config_opsysfile *$!#define config_opsysfile "s/msdos.h"!
77s!^#undef config_machfile *$!#define config_machfile "m/intel386.h"! 88s!^#undef config_machfile *$!#define config_machfile "m/intel386.h"!
78s/^#undef PROTOTYPES *$/#define PROTOTYPES 1/ 89s/^#undef PROTOTYPES *$/#define PROTOTYPES 1/
79s/^#undef POINTER_TYPE *$/#define POINTER_TYPE void/ 90s/^#undef POINTER_TYPE *$/#define POINTER_TYPE void/
91/^#undef HAVE_INTTYPES_H/c\
92#if __DJGPP__ > 2 || __DJGPP_MINOR__ > 3\
93#define HAVE_INTTYPES_H 1\
94#else\
95#undef HAVE_INTTYPES_H\
96#endif
80/^#undef HAVE_STDINT_H/c\ 97/^#undef HAVE_STDINT_H/c\
81#if __DJGPP__ > 2 || __DJGPP_MINOR__ > 3\ 98#if __DJGPP__ > 2 || __DJGPP_MINOR__ > 3\
82#define HAVE_STDINT_H 1\ 99#define HAVE_STDINT_H 1\
diff --git a/msdos/sedlibmk.inp b/msdos/sedlibmk.inp
index b85b20f1491..b71aef985a9 100644
--- a/msdos/sedlibmk.inp
+++ b/msdos/sedlibmk.inp
@@ -47,6 +47,14 @@ am__cd = cd
47/^EXEEXT *=/s/@[^@\n]*@/.exe/ 47/^EXEEXT *=/s/@[^@\n]*@/.exe/
48/^GETOPT_H *=/s/@[^@\n]*@/getopt.h/ 48/^GETOPT_H *=/s/@[^@\n]*@/getopt.h/
49# 49#
50# Gnulib stuff
51/^BITSIZEOF_PTRDIFF_T *=/s/@BITSIZEOF_PTRDIFF_T@/32/
52/^BITSIZEOF_SIG_ATOMIC_T *=/s/@BITSIZEOF_SIG_ATOMIC_T@/32/
53/^BITSIZEOF_SIZE_T *=/s/@BITSIZEOF_SIZE_T@/32/
54/^BITSIZEOF_WCHAR_T *=/s/@BITSIZEOF_WCHAR_T@/16/
55/^BITSIZEOF_WINT_T *=/s/@BITSIZEOF_WINT_T@/32/
56/^APPLE_UNIVERSAL_BUILD *=/s/@APPLE_UNIVERSAL_BUILD@/0/
57#
50# Some GNULIB_* are replaced with zero even though DJGPP does not have 58# Some GNULIB_* are replaced with zero even though DJGPP does not have
51# these features. That's because the gnulib replacements cannot 59# these features. That's because the gnulib replacements cannot
52# possibly work for DJGPP, so we prefer to fail the link than have a 60# possibly work for DJGPP, so we prefer to fail the link than have a
@@ -63,8 +71,11 @@ am__cd = cd
63/^GNULIB_FACCESSAT *=/s/@GNULIB_FACCESSAT@/0/ 71/^GNULIB_FACCESSAT *=/s/@GNULIB_FACCESSAT@/0/
64/^GNULIB_FCHDIR *=/s/@GNULIB_FCHDIR@/0/ 72/^GNULIB_FCHDIR *=/s/@GNULIB_FCHDIR@/0/
65/^GNULIB_FCHOWNAT *=/s/@GNULIB_FCHOWNAT@/0/ 73/^GNULIB_FCHOWNAT *=/s/@GNULIB_FCHOWNAT@/0/
74/^GNULIB_FCHMODAT *=/s/@GNULIB_FCHMODAT@/0/
75/^GNULIB_FSTATAT *=/s/@GNULIB_FSTATAT@/0/
66/^GNULIB_FSYNC *=/s/@GNULIB_FSYNC@/0/ 76/^GNULIB_FSYNC *=/s/@GNULIB_FSYNC@/0/
67/^GNULIB_FTRUNCATE *=/s/@GNULIB_FTRUNCATE@/0/ 77/^GNULIB_FTRUNCATE *=/s/@GNULIB_FTRUNCATE@/0/
78/^GNULIB_FUTIMENS *=/s/@GNULIB_FUTIMENS@/0/
68/^GNULIB_GETCWD *=/s/@GNULIB_GETCWD@/0/ 79/^GNULIB_GETCWD *=/s/@GNULIB_GETCWD@/0/
69/^GNULIB_GETDOMAINNAME *=/s/@GNULIB_GETDOMAINNAME@/0/ 80/^GNULIB_GETDOMAINNAME *=/s/@GNULIB_GETDOMAINNAME@/0/
70/^GNULIB_GETDTABLESIZE *=/s/@GNULIB_GETDTABLESIZE@/0/ 81/^GNULIB_GETDTABLESIZE *=/s/@GNULIB_GETDTABLESIZE@/0/
@@ -77,12 +88,20 @@ am__cd = cd
77/^GNULIB_GETSUBOPT *=/s/@GNULIB_GETSUBOPT@/0/ 88/^GNULIB_GETSUBOPT *=/s/@GNULIB_GETSUBOPT@/0/
78/^GNULIB_GETUSERSHELL *=/s/@GNULIB_GETUSERSHELL@/0/ 89/^GNULIB_GETUSERSHELL *=/s/@GNULIB_GETUSERSHELL@/0/
79/^GNULIB_GRANTPT *=/s/@GNULIB_GRANTPT@/0/ 90/^GNULIB_GRANTPT *=/s/@GNULIB_GRANTPT@/0/
91/^GNULIB_LCHMOD *=/s/@GNULIB_LCHMOD@/0/
80/^GNULIB_LCHOWN *=/s/@GNULIB_LCHOWN@/0/ 92/^GNULIB_LCHOWN *=/s/@GNULIB_LCHOWN@/0/
81/^GNULIB_LINK *=/s/@GNULIB_LINK@/0/ 93/^GNULIB_LINK *=/s/@GNULIB_LINK@/0/
82/^GNULIB_LINKAT *=/s/@GNULIB_LINKAT@/0/ 94/^GNULIB_LINKAT *=/s/@GNULIB_LINKAT@/0/
83/^GNULIB_LSEEK *=/s/@GNULIB_LSEEK@/0/ 95/^GNULIB_LSEEK *=/s/@GNULIB_LSEEK@/0/
96/^GNULIB_LSTAT *=/s/@GNULIB_LSTAT@/0/
84/^GNULIB_MALLOC_POSIX *=/s/@GNULIB_MALLOC_POSIX@/0/ 97/^GNULIB_MALLOC_POSIX *=/s/@GNULIB_MALLOC_POSIX@/0/
98/^GNULIB_MBTOWC *=/s/@GNULIB_MBTOWC@/0/
99/^GNULIB_MKDIRAT *=/s/@GNULIB_MKDIRAT@/0/
85/^GNULIB_MKDTEMP *=/s/@GNULIB_MKDTEMP@/0/ 100/^GNULIB_MKDTEMP *=/s/@GNULIB_MKDTEMP@/0/
101/^GNULIB_MKFIFO *=/s/@GNULIB_MKFIFO@/0/
102/^GNULIB_MKFIFOAT *=/s/@GNULIB_MKFIFOAT@/0/
103/^GNULIB_MKNOD *=/s/@GNULIB_MKNOD@/0/
104/^GNULIB_MKNODAT *=/s/@GNULIB_MKNODAT@/0/
86/^GNULIB_MKOSTEMP *=/s/@GNULIB_MKOSTEMP@/0/ 105/^GNULIB_MKOSTEMP *=/s/@GNULIB_MKOSTEMP@/0/
87/^GNULIB_MKOSTEMPS *=/s/@GNULIB_MKOSTEMPS@/0/ 106/^GNULIB_MKOSTEMPS *=/s/@GNULIB_MKOSTEMPS@/0/
88/^GNULIB_MKSTEMP *=/s/@GNULIB_MKSTEMP@/0/ 107/^GNULIB_MKSTEMP *=/s/@GNULIB_MKSTEMP@/0/
@@ -104,6 +123,7 @@ am__cd = cd
104/^GNULIB_RPMATCH *=/s/@GNULIB_RPMATCH@/0/ 123/^GNULIB_RPMATCH *=/s/@GNULIB_RPMATCH@/0/
105/^GNULIB_SETENV *=/s/@GNULIB_SETENV@/0/ 124/^GNULIB_SETENV *=/s/@GNULIB_SETENV@/0/
106/^GNULIB_SLEEP *=/s/@GNULIB_SLEEP@/0/ 125/^GNULIB_SLEEP *=/s/@GNULIB_SLEEP@/0/
126/^GNULIB_STAT *=/s/@GNULIB_STAT@/0/
107/^GNULIB_STRPTIME *=/s/@GNULIB_STRPTIME@/0/ 127/^GNULIB_STRPTIME *=/s/@GNULIB_STRPTIME@/0/
108/^GNULIB_STRTOD *=/s/@GNULIB_STRTOD@/0/ 128/^GNULIB_STRTOD *=/s/@GNULIB_STRTOD@/0/
109/^GNULIB_STRTOLL *=/s/@GNULIB_STRTOLL@/0/ 129/^GNULIB_STRTOLL *=/s/@GNULIB_STRTOLL@/0/
@@ -121,6 +141,8 @@ am__cd = cd
121/^GNULIB_UNLOCKPT *=/s/@GNULIB_UNLOCKPT@/0/ 141/^GNULIB_UNLOCKPT *=/s/@GNULIB_UNLOCKPT@/0/
122/^GNULIB_UNSETENV *=/s/@GNULIB_UNSETENV@/1/ 142/^GNULIB_UNSETENV *=/s/@GNULIB_UNSETENV@/1/
123/^GNULIB_USLEEP *=/s/@GNULIB_USLEEP@/0/ 143/^GNULIB_USLEEP *=/s/@GNULIB_USLEEP@/0/
144/^GNULIB_UTIMENSAT *=/s/@GNULIB_UTIMENSAT@/0/
145/^GNULIB_WCTOMB *=/s/@GNULIB_WCTOMB@/0/
124/^GNULIB_WRITE *=/s/@GNULIB_WRITE@/0/ 146/^GNULIB_WRITE *=/s/@GNULIB_WRITE@/0/
125/^GNULIB__EXIT *=/s/@GNULIB__EXIT@/0/ 147/^GNULIB__EXIT *=/s/@GNULIB__EXIT@/0/
126/^HAVE_ATOLL *=/s/@HAVE_ATOLL@/0/ 148/^HAVE_ATOLL *=/s/@HAVE_ATOLL@/0/
@@ -142,9 +164,12 @@ am__cd = cd
142/^HAVE_EUIDACCESS *=/s/@HAVE_EUIDACCESS@/0/ 164/^HAVE_EUIDACCESS *=/s/@HAVE_EUIDACCESS@/0/
143/^HAVE_FACCESSAT *=/s/@HAVE_FACCESSAT@/0/ 165/^HAVE_FACCESSAT *=/s/@HAVE_FACCESSAT@/0/
144/^HAVE_FCHDIR *=/s/@HAVE_FCHDIR@/0/ 166/^HAVE_FCHDIR *=/s/@HAVE_FCHDIR@/0/
167/^HAVE_FCHMODAT *=/s/@HAVE_FCHMODAT@/0/
145/^HAVE_FCHOWNAT *=/s/@HAVE_FCHOWNAT@/0/ 168/^HAVE_FCHOWNAT *=/s/@HAVE_FCHOWNAT@/0/
169/^HAVE_FSTATAT *=/s/@HAVE_FSTATAT@/0/
146/^HAVE_FSYNC *=/s/@HAVE_FSYNC@/1/ 170/^HAVE_FSYNC *=/s/@HAVE_FSYNC@/1/
147/^HAVE_FTRUNCATE *=/s/@HAVE_FTRUNCATE@/1/ 171/^HAVE_FTRUNCATE *=/s/@HAVE_FTRUNCATE@/1/
172/^HAVE_FUTIMENS *=/s/@HAVE_FUTIMENS@/0/
148/^HAVE_GETDTABLESIZE *=/s/@HAVE_GETDTABLESIZE@/0/ 173/^HAVE_GETDTABLESIZE *=/s/@HAVE_GETDTABLESIZE@/0/
149/^HAVE_GETGROUPS *=/s/@HAVE_GETGROUPS@/0/ 174/^HAVE_GETGROUPS *=/s/@HAVE_GETGROUPS@/0/
150/^HAVE_GETHOSTNAME *=/s/@HAVE_GETHOSTNAME@/1/ 175/^HAVE_GETHOSTNAME *=/s/@HAVE_GETHOSTNAME@/1/
@@ -154,10 +179,19 @@ am__cd = cd
154/^HAVE_GETSUBOPT *=/s/@HAVE_GETSUBOPT@/0/ 179/^HAVE_GETSUBOPT *=/s/@HAVE_GETSUBOPT@/0/
155/^HAVE_GRANTPT *=/s/@HAVE_GRANTPT@/0/ 180/^HAVE_GRANTPT *=/s/@HAVE_GRANTPT@/0/
156/^HAVE_LCHOWN *=/s/@HAVE_LCHOWN@/0/ 181/^HAVE_LCHOWN *=/s/@HAVE_LCHOWN@/0/
182/^HAVE_INTTYPES_H *=/s/@HAVE_INTTYPES_H@/HAVE_INTTYPES_H/
183/^HAVE_LCHMOD *=/s/@HAVE_LCHMOD@/0/
157/^HAVE_LINK *=/s/@HAVE_LINK@/1/ 184/^HAVE_LINK *=/s/@HAVE_LINK@/1/
158/^HAVE_LINKAT *=/s/@HAVE_LINKAT@/0/ 185/^HAVE_LINKAT *=/s/@HAVE_LINKAT@/0/
186/^HAVE_LONG_LONG_INT *=/s/@HAVE_LONG_LONG_INT@/1/
187/^HAVE_LSTAT *=/s/@HAVE_LSTAT@/HAVE_LSTAT/
159/^HAVE_MAKEINFO *=/s/@HAVE_MAKEINFO@/yes/ 188/^HAVE_MAKEINFO *=/s/@HAVE_MAKEINFO@/yes/
189/^HAVE_MKDIRAT *=/s/@HAVE_MKDIRAT@/0/
160/^HAVE_MKDTEMP *=/s/@HAVE_MKDTEMP@/0/ 190/^HAVE_MKDTEMP *=/s/@HAVE_MKDTEMP@/0/
191/^HAVE_MKFIFO *=/s/@HAVE_MKFIFO@/1/
192/^HAVE_MKFIFOAT *=/s/@HAVE_MKFIFOAT@/0/
193/^HAVE_MKNOD *=/s/@HAVE_MKNOD@/1/
194/^HAVE_MKNODAT *=/s/@HAVE_MKNODAT@/0/
161/^HAVE_MKOSTEMP *=/s/@HAVE_MKOSTEMP@/0/ 195/^HAVE_MKOSTEMP *=/s/@HAVE_MKOSTEMP@/0/
162/^HAVE_MKOSTEMPS *=/s/@HAVE_MKOSTEMPS@/0/ 196/^HAVE_MKOSTEMPS *=/s/@HAVE_MKOSTEMPS@/0/
163/^HAVE_MKSTEMP *=/s/@HAVE_MKSTEMP@/1/ 197/^HAVE_MKSTEMP *=/s/@HAVE_MKSTEMP@/1/
@@ -176,7 +210,11 @@ am__cd = cd
176/^HAVE_REALPATH *=/s/@HAVE_REALPATH@/0/ 210/^HAVE_REALPATH *=/s/@HAVE_REALPATH@/0/
177/^HAVE_RPMATCH *=/s/@HAVE_RPMATCH@/0/ 211/^HAVE_RPMATCH *=/s/@HAVE_RPMATCH@/0/
178/^HAVE_SETENV *=/s/@HAVE_SETENV@/1/ 212/^HAVE_SETENV *=/s/@HAVE_SETENV@/1/
213/^HAVE_SIGNED_SIG_ATOMIC_T *=/s/@HAVE_SIGNED_SIG_ATOMIC_T@/1/
214/^HAVE_SIGNED_WCHAR_T *=/s/@HAVE_SIGNED_WCHAR_T@/0/
215/^HAVE_SIGNED_WINT_T *=/s/@HAVE_SIGNED_WINT_T@/1/
179/^HAVE_SLEEP *=/s/@HAVE_SLEEP@/1/ 216/^HAVE_SLEEP *=/s/@HAVE_SLEEP@/1/
217/^HAVE_STDINT_H *=/s/@HAVE_STDINT_H@/HAVE_STDINT_H/
180/^HAVE_STRPTIME *=/s/@HAVE_STRPTIME@/0/ 218/^HAVE_STRPTIME *=/s/@HAVE_STRPTIME@/0/
181/^HAVE_STRTOD *=/s/@HAVE_STRTOD@/1/ 219/^HAVE_STRTOD *=/s/@HAVE_STRTOD@/1/
182/^HAVE_STRTOLL *=/s/@HAVE_STRTOLL@/1/ 220/^HAVE_STRTOLL *=/s/@HAVE_STRTOLL@/1/
@@ -184,13 +222,19 @@ am__cd = cd
184/^HAVE_STRUCT_RANDOM_DATA *=/s/@HAVE_STRUCT_RANDOM_DATA@/0/ 222/^HAVE_STRUCT_RANDOM_DATA *=/s/@HAVE_STRUCT_RANDOM_DATA@/0/
185/^HAVE_SYMLINK *=/s/@HAVE_SYMLINK@/1/ 223/^HAVE_SYMLINK *=/s/@HAVE_SYMLINK@/1/
186/^HAVE_SYMLINKAT *=/s/@HAVE_SYMLINKAT@/0/ 224/^HAVE_SYMLINKAT *=/s/@HAVE_SYMLINKAT@/0/
225/^HAVE_SYS_BITYPES_H *=/s/@HAVE_SYS_BITYPES_H@/0/
226/^HAVE_SYS_INTTYPES_H *=/s/@HAVE_SYS_INTTYPES_H@/0/
187/^HAVE_SYS_LOADAVG_H *=/s/@HAVE_SYS_LOADAVG_H@/0/ 227/^HAVE_SYS_LOADAVG_H *=/s/@HAVE_SYS_LOADAVG_H@/0/
188/^HAVE_SYS_PARAM_H *=/s/@HAVE_SYS_PARAM_H@/1/ 228/^HAVE_SYS_PARAM_H *=/s/@HAVE_SYS_PARAM_H@/1/
229/^HAVE_SYS_TYPES_H *=/s/@HAVE_SYS_TYPES_H@/1/
189/^HAVE_TIMEGM *=/s/@HAVE_TIMEGM@/0/ 230/^HAVE_TIMEGM *=/s/@HAVE_TIMEGM@/0/
190/^HAVE_UNISTD_H *=/s/@HAVE_UNISTD_H@/1/ 231/^HAVE_UNISTD_H *=/s/@HAVE_UNISTD_H@/1/
191/^HAVE_UNLINKAT *=/s/@HAVE_UNLINKAT@/0/ 232/^HAVE_UNLINKAT *=/s/@HAVE_UNLINKAT@/0/
192/^HAVE_UNLOCKPT *=/s/@HAVE_UNLOCKPT@/0/ 233/^HAVE_UNLOCKPT *=/s/@HAVE_UNLOCKPT@/0/
234/^HAVE_UNSIGNED_LONG_LONG_INT *=/s/@HAVE_UNSIGNED_LONG_LONG_INT@/1/
193/^HAVE_USLEEP *=/s/@HAVE_USLEEP@/1/ 235/^HAVE_USLEEP *=/s/@HAVE_USLEEP@/1/
236/^HAVE_UTIMENSAT *=/s/@HAVE_UTIMENSAT@/0/
237/^HAVE_WCHAR_H *=/s/@HAVE_WCHAR_H@/1/
194/^HAVE_WCHAR_T *=/s/@HAVE_WCHAR_T@/1/ 238/^HAVE_WCHAR_T *=/s/@HAVE_WCHAR_T@/1/
195/^HAVE_XSERVER *=/s/@HAVE_XSERVER@/0/ 239/^HAVE_XSERVER *=/s/@HAVE_XSERVER@/0/
196/^HAVE__BOOL *=/s/@HAVE__BOOL@/1/ 240/^HAVE__BOOL *=/s/@HAVE__BOOL@/1/
@@ -201,14 +245,20 @@ am__cd = cd
201/^LD_FIRSTFLAG *=/s/@[^@\n]*@// 245/^LD_FIRSTFLAG *=/s/@[^@\n]*@//
202/^LIBS *=/s/@[^@\n]*@// 246/^LIBS *=/s/@[^@\n]*@//
203/^MAKEINFO *=/s/@MAKEINFO@/makeinfo/ 247/^MAKEINFO *=/s/@MAKEINFO@/makeinfo/
248# MKDIR_P lines are edited further below
249/^MKDIR_P *=/s/@MKDIR_P@//
204/^NEXT_AS_FIRST_DIRECTIVE_GETOPT_H *=/s/@[^@\n]*@/<getopt.h>/ 250/^NEXT_AS_FIRST_DIRECTIVE_GETOPT_H *=/s/@[^@\n]*@/<getopt.h>/
205/^NEXT_AS_FIRST_DIRECTIVE_STDDEF_H *=/s/@[^@\n]*@// 251/^NEXT_AS_FIRST_DIRECTIVE_STDDEF_H *=/s/@[^@\n]*@//
252/^NEXT_AS_FIRST_DIRECTIVE_STDINT_H *=/s/@[^@\n]*@/<stdint.h>/
206/^NEXT_AS_FIRST_DIRECTIVE_STDLIB_H *=/s/@[^@\n]*@/<stdlib.h>/ 253/^NEXT_AS_FIRST_DIRECTIVE_STDLIB_H *=/s/@[^@\n]*@/<stdlib.h>/
254/^NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H *=/s!@[^@\n]*@!<sys/stat.h>!
207/^NEXT_AS_FIRST_DIRECTIVE_TIME_H *=/s/@[^@\n]*@/<time.h>/ 255/^NEXT_AS_FIRST_DIRECTIVE_TIME_H *=/s/@[^@\n]*@/<time.h>/
208/^NEXT_AS_FIRST_DIRECTIVE_UNISTD_H *=/s/@[^@\n]*@/<unistd.h>/ 256/^NEXT_AS_FIRST_DIRECTIVE_UNISTD_H *=/s/@[^@\n]*@/<unistd.h>/
209/^NEXT_GETOPT_H *=/s/@[^@\n]*@/<getopt.h>/ 257/^NEXT_GETOPT_H *=/s/@[^@\n]*@/<getopt.h>/
210/^NEXT_STDDEF_H *=/s/@[^@\n]*@// 258/^NEXT_STDDEF_H *=/s/@[^@\n]*@//
259/^NEXT_STDINT_H *=/s/@[^@\n]*@/<stdint.h>/
211/^NEXT_STDLIB_H *=/s/@[^@\n]*@/<stdlib.h>/ 260/^NEXT_STDLIB_H *=/s/@[^@\n]*@/<stdlib.h>/
261/^NEXT_SYS_STAT_H *=/s!@[^@\n]*@!<sys/stat.h>!
212/^NEXT_TIME_H *=/s/@[^@\n]*@/<time.h>/ 262/^NEXT_TIME_H *=/s/@[^@\n]*@/<time.h>/
213/^NEXT_UNISTD_H *=/s/@[^@\n]*@/<unistd.h>/ 263/^NEXT_UNISTD_H *=/s/@[^@\n]*@/<unistd.h>/
214/^OBJEXT *=/s/@[^@\n]*@/o/ 264/^OBJEXT *=/s/@[^@\n]*@/o/
@@ -223,6 +273,7 @@ am__cd = cd
223/^REPLACE_DUP *=/s/@REPLACE_DUP@/0/ 273/^REPLACE_DUP *=/s/@REPLACE_DUP@/0/
224/^REPLACE_DUP2 *=/s/@REPLACE_DUP2@/0/ 274/^REPLACE_DUP2 *=/s/@REPLACE_DUP2@/0/
225/^REPLACE_FCHOWNAT *=/s/@REPLACE_FCHOWNAT@/0/ 275/^REPLACE_FCHOWNAT *=/s/@REPLACE_FCHOWNAT@/0/
276/^REPLACE_FSTAT *=/s/@REPLACE_FSTAT@/0/
226/^REPLACE_GETCWD *=/s/@REPLACE_GETCWD@/0/ 277/^REPLACE_GETCWD *=/s/@REPLACE_GETCWD@/0/
227/^REPLACE_GETDOMAINNAME *=/s/@REPLACE_GETDOMAINNAME@/0/ 278/^REPLACE_GETDOMAINNAME *=/s/@REPLACE_GETDOMAINNAME@/0/
228/^REPLACE_GETGROUPS *=/s/@REPLACE_GETGROUPS@/0/ 279/^REPLACE_GETGROUPS *=/s/@REPLACE_GETGROUPS@/0/
@@ -233,7 +284,12 @@ am__cd = cd
233/^REPLACE_LINKAT *=/s/@REPLACE_LINKAT@/0/ 284/^REPLACE_LINKAT *=/s/@REPLACE_LINKAT@/0/
234/^REPLACE_LOCALTIME_R *=/s/@REPLACE_LOCALTIME_R@/0/ 285/^REPLACE_LOCALTIME_R *=/s/@REPLACE_LOCALTIME_R@/0/
235/^REPLACE_LSEEK *=/s/@REPLACE_LSEEK@/0/ 286/^REPLACE_LSEEK *=/s/@REPLACE_LSEEK@/0/
287/^REPLACE_LSTAT *=/s/@REPLACE_LSTAT@/0/
236/^REPLACE_MALLOC *=/s/@REPLACE_MALLOC@/0/ 288/^REPLACE_MALLOC *=/s/@REPLACE_MALLOC@/0/
289/^REPLACE_MBTOWC *=/s/@REPLACE_MBTOWC@/0/
290/^REPLACE_MKDIR *=/s/@REPLACE_MKDIR@/0/
291/^REPLACE_MKFIFO *=/s/@REPLACE_MKFIFO@/0/
292/^REPLACE_MKNOD *=/s/@REPLACE_MKNOD@/0/
237/^REPLACE_MKSTEMP *=/s/@REPLACE_MKSTEMP@/0/ 293/^REPLACE_MKSTEMP *=/s/@REPLACE_MKSTEMP@/0/
238/^REPLACE_MKTIME *=/s/@REPLACE_MKTIME@/0/ 294/^REPLACE_MKTIME *=/s/@REPLACE_MKTIME@/0/
239/^REPLACE_NANOSLEEP *=/s/@REPLACE_NANOSLEEP@/0/ 295/^REPLACE_NANOSLEEP *=/s/@REPLACE_NANOSLEEP@/0/
@@ -247,6 +303,7 @@ am__cd = cd
247/^REPLACE_RMDIR *=/s/@REPLACE_RMDIR@/0/ 303/^REPLACE_RMDIR *=/s/@REPLACE_RMDIR@/0/
248/^REPLACE_SETENV *=/s/@REPLACE_SETENV@/0/ 304/^REPLACE_SETENV *=/s/@REPLACE_SETENV@/0/
249/^REPLACE_SLEEP *=/s/@REPLACE_SLEEP@/0/ 305/^REPLACE_SLEEP *=/s/@REPLACE_SLEEP@/0/
306/^REPLACE_STAT *=/s/@REPLACE_STAT@/0/
250/^REPLACE_STRTOD *=/s/@REPLACE_STRTOD@/0/ 307/^REPLACE_STRTOD *=/s/@REPLACE_STRTOD@/0/
251/^REPLACE_SYMLINK *=/s/@REPLACE_SYMLINK@/0/ 308/^REPLACE_SYMLINK *=/s/@REPLACE_SYMLINK@/0/
252/^REPLACE_TIMEGM *=/s/@REPLACE_TIMEGM@/0/ 309/^REPLACE_TIMEGM *=/s/@REPLACE_TIMEGM@/0/
@@ -255,14 +312,21 @@ am__cd = cd
255/^REPLACE_UNLINKAT *=/s/@REPLACE_UNLINKAT@/0/ 312/^REPLACE_UNLINKAT *=/s/@REPLACE_UNLINKAT@/0/
256/^REPLACE_UNSETENV *=/s/@REPLACE_UNSETENV@/0/ 313/^REPLACE_UNSETENV *=/s/@REPLACE_UNSETENV@/0/
257/^REPLACE_USLEEP *=/s/@REPLACE_USLEEP@/0/ 314/^REPLACE_USLEEP *=/s/@REPLACE_USLEEP@/0/
315/^REPLACE_UTIMENSAT *=/s/@REPLACE_UTIMENSAT@/0/
316/^REPLACE_WCTOMB *=/s/@REPLACE_WCTOMB@/0/
258/^REPLACE_WRITE *=/s/@REPLACE_WRITE@/0/ 317/^REPLACE_WRITE *=/s/@REPLACE_WRITE@/0/
318/^SIG_ATOMIC_T_SUFFIX *=/s/@SIG_ATOMIC_T_SUFFIX@//
319/^SIZE_T_SUFFIX *=/s/@SIZE_T_SUFFIX@/u/
259/^STDBOOL_H *=/s/@[^@\n]*@// 320/^STDBOOL_H *=/s/@[^@\n]*@//
260/^STDDEF_H *=/s/@[^@\n]*@// 321/^STDDEF_H *=/s/@[^@\n]*@//
322/^STDINT_H *=/s/@[^@\n]*@/stdint.h/
261/^SYS_TIME_H_DEFINES_STRUCT_TIMESPEC *=/s/@[^@\n]*@/0/ 323/^SYS_TIME_H_DEFINES_STRUCT_TIMESPEC *=/s/@[^@\n]*@/0/
262/^TIME_H_DEFINES_STRUCT_TIMESPEC *=/s/@[^@\n]*@/0/ 324/^TIME_H_DEFINES_STRUCT_TIMESPEC *=/s/@[^@\n]*@/0/
263/^UNISTD_H_HAVE_WINSOCK2_H *=/s/@[^@\n]*@/0/ 325/^UNISTD_H_HAVE_WINSOCK2_H *=/s/@[^@\n]*@/0/
264/^UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS *=/s/@[^@\n]*@/0/ 326/^UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS *=/s/@[^@\n]*@/0/
265/^gl_LIBOBJS *=/s/@[^@\n]*@/getopt.o getopt1.o strftime.o time_r.o getloadavg.o/ 327/^WCHAR_T_SUFFIX *=/s/@WCHAR_T_SUFFIX@/h/
328/^WINT_T_SUFFIX *=/s/@WINT_T_SUFFIX@//
329/^gl_LIBOBJS *=/s/@[^@\n]*@/getopt.o getopt1.o strftime.o time_r.o getloadavg.o md5.o filemode.o/
266/^srcdir *=/s/@[^@\n]*@/./ 330/^srcdir *=/s/@[^@\n]*@/./
267/^top_srcdir *=/s/@[^@\n]*@/../ 331/^top_srcdir *=/s/@[^@\n]*@/../
268/^top_builddir *=/s/@[^@\n]*@/../ 332/^top_builddir *=/s/@[^@\n]*@/../
@@ -310,3 +374,4 @@ s/\.in-h\; *\\$/.in-h >> $@-t/
310/^unistd\.h:/,/^ [ ]*mv /{ 374/^unistd\.h:/,/^ [ ]*mv /{
311 s/'\; \\ *$/' >> $@-t/ 375 s/'\; \\ *$/' >> $@-t/
312} 376}
377s!\$(MKDIR_P)[ ][ ]*sys!command.com /c "if not exist sys\stat.h md sys"!
diff --git a/nt/ChangeLog b/nt/ChangeLog
index f20fbd1d31a..e55fc52a487 100644
--- a/nt/ChangeLog
+++ b/nt/ChangeLog
@@ -1,3 +1,11 @@
12011-02-27 Eli Zaretskii <eliz@gnu.org>
2
3 * inc/unistd.h (readlink, symlink): Declare prototypes.
4
52011-02-26 Eli Zaretskii <eliz@gnu.org>
6
7 * config.nt (nlink_t): Define.
8
12011-02-21 Christoph Scholtes <cschol2112@gmail.com> 92011-02-21 Christoph Scholtes <cschol2112@gmail.com>
2 10
3 * inc/stdint.h: New file, to support compilation with tool chains 11 * inc/stdint.h: New file, to support compilation with tool chains
diff --git a/nt/config.nt b/nt/config.nt
index b5ef24fc18b..26fbc1c67c5 100644
--- a/nt/config.nt
+++ b/nt/config.nt
@@ -411,6 +411,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
411 411
412#define my_strftime nstrftime /* for strftime.c */ 412#define my_strftime nstrftime /* for strftime.c */
413 413
414/* Define to the type of st_nlink in struct stat, or a supertype. */
415#define nlink_t short
416
414#ifndef WINDOWSNT 417#ifndef WINDOWSNT
415/* Some of the files of Emacs which are intended for use with other 418/* Some of the files of Emacs which are intended for use with other
416 programs assume that if you have a config.h file, you must declare 419 programs assume that if you have a config.h file, you must declare
diff --git a/nt/inc/unistd.h b/nt/inc/unistd.h
index 7e77f95da4c..fb1f1c4b3bf 100644
--- a/nt/inc/unistd.h
+++ b/nt/inc/unistd.h
@@ -1,2 +1,10 @@
1/* Fake unistd.h: config.h already provides most of the relevant things. */ 1/* Fake unistd.h: config.h already provides most of the relevant things. */
2 2
3#ifndef _UNISTD_H
4#define _UNISTD_H
5
6extern ssize_t readlink (const char *, char *, size_t);
7extern int symlink (char const *, char const *);
8
9#endif /* _UNISTD_H */
10
diff --git a/src/ChangeLog b/src/ChangeLog
index a8de7268673..388e8c251d1 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,55 @@
12011-02-27 Chong Yidong <cyd@stupidchicken.com>
2
3 * frame.c (store_frame_param): Don't store value directly in
4 buffer_list and buried_buffer_list; copy the list and remove dead
5 buffers (Bug#7898).
6
72011-02-27 Eli Zaretskii <eliz@gnu.org>
8
9 * msdos.c (readlink) [DJGPP < 2.04]: New stub function.
10
11 * msdos.h: (readlink) [DJGPP < 2.04]: Declare prototype.
12
13 * w32.c (symlink, readlink): New stub functions.
14
152011-02-27 Paul Eggert <eggert@cs.ucla.edu>
16
17 * scroll.c (CHECK_BOUNDS): #define only if GLYPH_DEBUG.
18 This avoids a gcc warning in some configurations.
19
20 * frame.c (x_set_screen_gamma): Rename local to avoid shadowing.
21
22 * frame.h: Avoid gcc -Wmissing-prototypes diagnostics.
23 (set_menu_bar_lines, x_get_resource_string): New decls.
24 * msdos.c (set_menu_bar_lines): Omit decl.
25
26 * dispextern.h (struct glyph): Make u.img_id int, not unsigned.
27 It's always given int values and used as an int. This suppresses
28 a gcc "comparison of unsigned expression >= 0" warning in some
29 configurations.
30
31 * dispnew.c: Rename locals to avoid shadowing.
32 (update_text_area, scrolling_window, update_frame_1): Rename locals.
33
342011-02-26 Paul Eggert <eggert@cs.ucla.edu>
35
36 * dispnew.c: Fix problems uncovered by gcc -Wstrict-prototypes.
37 (copy_glyph_row_contents): Remove; not used.
38 (frame_row_to_window, check_current_matrix_flags):
39 (window_change_signal): Now static, since they're not used elsewhere.
40 (check_current_matrix_flags): Surround with "#if 0", since its
41 only use is in a comment. Maybe both the comment and the "#if 0"
42 stuff should be removed?
43
44 * dispnew.c: Fix problem uncovered by gcc -Wunused-variable.
45 (adjust_frame_glyphs_for_window_redisplay): Make 'w' local to the
46 contexts that actually need it.
47
482011-02-26 Eli Zaretskii <eliz@gnu.org>
49
50 * s/msdos.h (HAVE_LSTAT): Define for DJGPP >= 2.04.
51 (lstat): Define for DJGPP < 2.04.
52
12011-02-25 Paul Eggert <eggert@cs.ucla.edu> 532011-02-25 Paul Eggert <eggert@cs.ucla.edu>
2 54
3 Simplify symlink portability workaround. 55 Simplify symlink portability workaround.
diff --git a/src/ChangeLog.10 b/src/ChangeLog.10
index 869ab5b07d8..6152b4c76af 100644
--- a/src/ChangeLog.10
+++ b/src/ChangeLog.10
@@ -20002,7 +20002,7 @@
20002 20002
20003 * w32reg.c (w32_get_rdb_resource): New function. 20003 * w32reg.c (w32_get_rdb_resource): New function.
20004 (x_get_string_resource): Use it, so resources passed with -xrm 20004 (x_get_string_resource): Use it, so resources passed with -xrm
20005 supercede the ones in the registry. 20005 supersede the ones in the registry.
20006 20006
200072003-03-04 Jan Djärv <jan.h.d@swipnet.se> 200072003-03-04 Jan Djärv <jan.h.d@swipnet.se>
20008 20008
@@ -25474,7 +25474,7 @@
25474 recursive call unless that arg is non-nil. 25474 recursive call unless that arg is non-nil.
25475 (where_is_internal): New argument no_remap. Callers changed. 25475 (where_is_internal): New argument no_remap. Callers changed.
25476 Call recursively to find original key bindings for a remapped 25476 Call recursively to find original key bindings for a remapped
25477 comand unless that arg is non-nil. 25477 command unless that arg is non-nil.
25478 (Fwhere_is_internal): New optional argument NO-REMAP. 25478 (Fwhere_is_internal): New optional argument NO-REMAP.
25479 Doc updated. Callers changed. Pass arg to where_is_internal. 25479 Doc updated. Callers changed. Pass arg to where_is_internal.
25480 25480
diff --git a/src/ChangeLog.3 b/src/ChangeLog.3
index a361142faae..beb7a0a2ae1 100644
--- a/src/ChangeLog.3
+++ b/src/ChangeLog.3
@@ -7023,7 +7023,7 @@
7023 * fileio.c: There are two versions of Fexpand_file_name defined 7023 * fileio.c: There are two versions of Fexpand_file_name defined
7024 here; the latter is inside a `#if 0' clause. Change its DEFUN to 7024 here; the latter is inside a `#if 0' clause. Change its DEFUN to
7025 a DEAFUN, so that its docstring doesn't make it into the DOC file 7025 a DEAFUN, so that its docstring doesn't make it into the DOC file
7026 and supercede the real docstring. 7026 and supersede the real docstring.
7027 7027
7028 * callint.c (Fcall_interactively): For the 'K' interactive spec, 7028 * callint.c (Fcall_interactively): For the 'K' interactive spec,
7029 set varies[i] to -1, indicating that the mouse click should be 7029 set varies[i] to -1, indicating that the mouse click should be
@@ -11142,7 +11142,7 @@
11142 wait_reading_process_input, instead of just the first two. 11142 wait_reading_process_input, instead of just the first two.
11143 11143
11144 * process.c (wait_reading_process_input): Remove support for 11144 * process.c (wait_reading_process_input): Remove support for
11145 only waiting for mouse input, since that has been superceded. 11145 only waiting for mouse input, since that has been superseded.
11146 This removes X dependencies from process.c, and eliminates some 11146 This removes X dependencies from process.c, and eliminates some
11147 references to code that should only exist when using X10. 11147 references to code that should only exist when using X10.
11148 11148
@@ -11450,7 +11450,7 @@
11450 11450
11451 * minibuf.c (temp_echo_area_glyphs): Clear echo_area_glyphs and 11451 * minibuf.c (temp_echo_area_glyphs): Clear echo_area_glyphs and
11452 previous_echo_glyphs, so the message we're displaying will 11452 previous_echo_glyphs, so the message we're displaying will
11453 supercede any existing message. 11453 supersede any existing message.
11454 11454
11455 * keyboard.c: Removed external declaration of echo_area_glyphs, 11455 * keyboard.c: Removed external declaration of echo_area_glyphs,
11456 since it's declared in window.h. 11456 since it's declared in window.h.
diff --git a/src/character.c b/src/character.c
index f12c4f28d31..6f3312fec29 100644
--- a/src/character.c
+++ b/src/character.c
@@ -761,7 +761,7 @@ str_as_unibyte (unsigned char *str, EMACS_INT bytes)
761 corresponding byte and store in DST. CHARS is the number of 761 corresponding byte and store in DST. CHARS is the number of
762 characters in SRC. The value is the number of bytes stored in DST. 762 characters in SRC. The value is the number of bytes stored in DST.
763 Usually, the value is the same as CHARS, but is less than it if SRC 763 Usually, the value is the same as CHARS, but is less than it if SRC
764 contains a non-ASCII, non-eight-bit characater. If ACCEPT_LATIN_1 764 contains a non-ASCII, non-eight-bit character. If ACCEPT_LATIN_1
765 is nonzero, a Latin-1 character is accepted and converted to a byte 765 is nonzero, a Latin-1 character is accepted and converted to a byte
766 of that character code. 766 of that character code.
767 Note: Currently the arg ACCEPT_LATIN_1 is not used. */ 767 Note: Currently the arg ACCEPT_LATIN_1 is not used. */
diff --git a/src/dired.c b/src/dired.c
index ce2a3d105e5..96063680d4d 100644
--- a/src/dired.c
+++ b/src/dired.c
@@ -937,7 +937,11 @@ so last access time will always be midnight of that day. */)
937 Lisp_Object dirname; 937 Lisp_Object dirname;
938 struct stat sdir; 938 struct stat sdir;
939#endif /* BSD4_2 */ 939#endif /* BSD4_2 */
940 char modes[12]; 940
941 /* An array to hold the mode string generated by filemodestring,
942 including its terminating space and null byte. */
943 char modes[sizeof "-rwxr-xr-x "];
944
941 Lisp_Object handler; 945 Lisp_Object handler;
942 struct gcpro gcpro1; 946 struct gcpro gcpro1;
943 char *uname = NULL, *gname = NULL; 947 char *uname = NULL, *gname = NULL;
diff --git a/src/dispextern.h b/src/dispextern.h
index 6bb0c3a6aae..37ae7ee5fd5 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -431,7 +431,7 @@ struct glyph
431 } cmp; 431 } cmp;
432 432
433 /* Image ID for image glyphs (type == IMAGE_GLYPH). */ 433 /* Image ID for image glyphs (type == IMAGE_GLYPH). */
434 unsigned img_id; 434 int img_id;
435 435
436 /* Sub-structure for type == STRETCH_GLYPH. */ 436 /* Sub-structure for type == STRETCH_GLYPH. */
437 struct 437 struct
diff --git a/src/dispnew.c b/src/dispnew.c
index 4e068bde536..1408bea2fc6 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -1129,32 +1129,6 @@ copy_row_except_pointers (struct glyph_row *to, struct glyph_row *from)
1129} 1129}
1130 1130
1131 1131
1132/* Copy contents of glyph row FROM to glyph row TO. Glyph pointers in
1133 TO and FROM are left unchanged. Glyph contents are copied from the
1134 glyph memory of FROM to the glyph memory of TO. Increment buffer
1135 positions in row TO by DELTA/ DELTA_BYTES. */
1136
1137void
1138copy_glyph_row_contents (struct glyph_row *to, struct glyph_row *from,
1139 EMACS_INT delta, EMACS_INT delta_bytes)
1140{
1141 int area;
1142
1143 /* This is like a structure assignment TO = FROM, except that
1144 glyph pointers in the rows are left unchanged. */
1145 copy_row_except_pointers (to, from);
1146
1147 /* Copy glyphs from FROM to TO. */
1148 for (area = 0; area < LAST_AREA; ++area)
1149 if (from->used[area])
1150 memcpy (to->glyphs[area], from->glyphs[area],
1151 from->used[area] * sizeof (struct glyph));
1152
1153 /* Increment buffer positions in TO by DELTA. */
1154 increment_row_positions (to, delta, delta_bytes);
1155}
1156
1157
1158/* Assign glyph row FROM to glyph row TO. This works like a structure 1132/* Assign glyph row FROM to glyph row TO. This works like a structure
1159 assignment TO = FROM, except that glyph pointers are not copied but 1133 assignment TO = FROM, except that glyph pointers are not copied but
1160 exchanged between TO and FROM. Pointers must be exchanged to avoid 1134 exchanged between TO and FROM. Pointers must be exchanged to avoid
@@ -2223,8 +2197,6 @@ adjust_frame_glyphs_for_frame_redisplay (struct frame *f)
2223static void 2197static void
2224adjust_frame_glyphs_for_window_redisplay (struct frame *f) 2198adjust_frame_glyphs_for_window_redisplay (struct frame *f)
2225{ 2199{
2226 struct window *w;
2227
2228 xassert (FRAME_WINDOW_P (f) && FRAME_LIVE_P (f)); 2200 xassert (FRAME_WINDOW_P (f) && FRAME_LIVE_P (f));
2229 2201
2230 /* Allocate/reallocate window matrices. */ 2202 /* Allocate/reallocate window matrices. */
@@ -2236,6 +2208,7 @@ adjust_frame_glyphs_for_window_redisplay (struct frame *f)
2236#if ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK) 2208#if ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK)
2237 { 2209 {
2238 /* Allocate a dummy window if not already done. */ 2210 /* Allocate a dummy window if not already done. */
2211 struct window *w;
2239 if (NILP (f->menu_bar_window)) 2212 if (NILP (f->menu_bar_window))
2240 { 2213 {
2241 f->menu_bar_window = make_window (); 2214 f->menu_bar_window = make_window ();
@@ -2258,23 +2231,26 @@ adjust_frame_glyphs_for_window_redisplay (struct frame *f)
2258#endif /* HAVE_X_WINDOWS */ 2231#endif /* HAVE_X_WINDOWS */
2259 2232
2260#ifndef USE_GTK 2233#ifndef USE_GTK
2261 /* Allocate/ reallocate matrices of the tool bar window. If we 2234 {
2262 don't have a tool bar window yet, make one. */ 2235 /* Allocate/ reallocate matrices of the tool bar window. If we
2263 if (NILP (f->tool_bar_window)) 2236 don't have a tool bar window yet, make one. */
2264 { 2237 struct window *w;
2265 f->tool_bar_window = make_window (); 2238 if (NILP (f->tool_bar_window))
2239 {
2240 f->tool_bar_window = make_window ();
2241 w = XWINDOW (f->tool_bar_window);
2242 XSETFRAME (w->frame, f);
2243 w->pseudo_window_p = 1;
2244 }
2245 else
2266 w = XWINDOW (f->tool_bar_window); 2246 w = XWINDOW (f->tool_bar_window);
2267 XSETFRAME (w->frame, f);
2268 w->pseudo_window_p = 1;
2269 }
2270 else
2271 w = XWINDOW (f->tool_bar_window);
2272 2247
2273 XSETFASTINT (w->top_line, FRAME_MENU_BAR_LINES (f)); 2248 XSETFASTINT (w->top_line, FRAME_MENU_BAR_LINES (f));
2274 XSETFASTINT (w->left_col, 0); 2249 XSETFASTINT (w->left_col, 0);
2275 XSETFASTINT (w->total_lines, FRAME_TOOL_BAR_LINES (f)); 2250 XSETFASTINT (w->total_lines, FRAME_TOOL_BAR_LINES (f));
2276 XSETFASTINT (w->total_cols, FRAME_TOTAL_COLS (f)); 2251 XSETFASTINT (w->total_cols, FRAME_TOTAL_COLS (f));
2277 allocate_matrices_for_window_redisplay (w); 2252 allocate_matrices_for_window_redisplay (w);
2253 }
2278#endif 2254#endif
2279} 2255}
2280 2256
@@ -2924,7 +2900,7 @@ sync_window_with_frame_matrix_rows (struct window *w)
2924/* Return the window in the window tree rooted in W containing frame 2900/* Return the window in the window tree rooted in W containing frame
2925 row ROW. Value is null if none is found. */ 2901 row ROW. Value is null if none is found. */
2926 2902
2927struct window * 2903static struct window *
2928frame_row_to_window (struct window *w, int row) 2904frame_row_to_window (struct window *w, int row)
2929{ 2905{
2930 struct window *found = NULL; 2906 struct window *found = NULL;
@@ -3562,12 +3538,12 @@ redraw_overlapping_rows (struct window *w, int yb)
3562#endif /* HAVE_WINDOW_SYSTEM */ 3538#endif /* HAVE_WINDOW_SYSTEM */
3563 3539
3564 3540
3565#ifdef GLYPH_DEBUG 3541#if defined GLYPH_DEBUG && 0
3566 3542
3567/* Check that no row in the current matrix of window W is enabled 3543/* Check that no row in the current matrix of window W is enabled
3568 which is below what's displayed in the window. */ 3544 which is below what's displayed in the window. */
3569 3545
3570void 3546static void
3571check_current_matrix_flags (struct window *w) 3547check_current_matrix_flags (struct window *w)
3572{ 3548{
3573 int last_seen_p = 0; 3549 int last_seen_p = 0;
@@ -4014,7 +3990,7 @@ update_text_area (struct window *w, int vpos)
4014 { 3990 {
4015 /* Otherwise clear to the end of the old row. Everything 3991 /* Otherwise clear to the end of the old row. Everything
4016 after that position should be clear already. */ 3992 after that position should be clear already. */
4017 int x; 3993 int xlim;
4018 3994
4019 if (i >= desired_row->used[TEXT_AREA]) 3995 if (i >= desired_row->used[TEXT_AREA])
4020 rif->cursor_to (vpos, i, desired_row->y, 3996 rif->cursor_to (vpos, i, desired_row->y,
@@ -4031,11 +4007,11 @@ update_text_area (struct window *w, int vpos)
4031 : (w->phys_cursor.hpos >= desired_row->used[TEXT_AREA]))) 4007 : (w->phys_cursor.hpos >= desired_row->used[TEXT_AREA])))
4032 { 4008 {
4033 w->phys_cursor_on_p = 0; 4009 w->phys_cursor_on_p = 0;
4034 x = -1; 4010 xlim = -1;
4035 } 4011 }
4036 else 4012 else
4037 x = current_row->pixel_width; 4013 xlim = current_row->pixel_width;
4038 rif->clear_end_of_line (x); 4014 rif->clear_end_of_line (xlim);
4039 changed_p = 1; 4015 changed_p = 1;
4040 } 4016 }
4041 } 4017 }
@@ -4491,7 +4467,7 @@ scrolling_window (struct window *w, int header_line_p)
4491 && old_lines[i]->old_uses == 1 4467 && old_lines[i]->old_uses == 1
4492 && old_lines[i]->new_uses == 1) 4468 && old_lines[i]->new_uses == 1)
4493 { 4469 {
4494 int j, k; 4470 int p, q;
4495 int new_line = old_lines[i]->new_line_number; 4471 int new_line = old_lines[i]->new_line_number;
4496 struct run *run = run_pool + run_idx++; 4472 struct run *run = run_pool + run_idx++;
4497 4473
@@ -4504,33 +4480,33 @@ scrolling_window (struct window *w, int header_line_p)
4504 run->height = MATRIX_ROW (current_matrix, i)->height; 4480 run->height = MATRIX_ROW (current_matrix, i)->height;
4505 4481
4506 /* Extend backward. */ 4482 /* Extend backward. */
4507 j = i - 1; 4483 p = i - 1;
4508 k = new_line - 1; 4484 q = new_line - 1;
4509 while (j > first_old 4485 while (p > first_old
4510 && k > first_new 4486 && q > first_new
4511 && old_lines[j] == new_lines[k]) 4487 && old_lines[p] == new_lines[q])
4512 { 4488 {
4513 int h = MATRIX_ROW (current_matrix, j)->height; 4489 int h = MATRIX_ROW (current_matrix, p)->height;
4514 --run->current_vpos; 4490 --run->current_vpos;
4515 --run->desired_vpos; 4491 --run->desired_vpos;
4516 ++run->nrows; 4492 ++run->nrows;
4517 run->height += h; 4493 run->height += h;
4518 run->desired_y -= h; 4494 run->desired_y -= h;
4519 run->current_y -= h; 4495 run->current_y -= h;
4520 --j, --k; 4496 --p, --q;
4521 } 4497 }
4522 4498
4523 /* Extend forward. */ 4499 /* Extend forward. */
4524 j = i + 1; 4500 p = i + 1;
4525 k = new_line + 1; 4501 q = new_line + 1;
4526 while (j < last_old 4502 while (p < last_old
4527 && k < last_new 4503 && q < last_new
4528 && old_lines[j] == new_lines[k]) 4504 && old_lines[p] == new_lines[q])
4529 { 4505 {
4530 int h = MATRIX_ROW (current_matrix, j)->height; 4506 int h = MATRIX_ROW (current_matrix, p)->height;
4531 ++run->nrows; 4507 ++run->nrows;
4532 run->height += h; 4508 run->height += h;
4533 ++j, ++k; 4509 ++p, ++q;
4534 } 4510 }
4535 4511
4536 /* Insert run into list of all runs. Order runs by copied 4512 /* Insert run into list of all runs. Order runs by copied
@@ -4538,11 +4514,11 @@ scrolling_window (struct window *w, int header_line_p)
4538 be copied because they are already in place. This is done 4514 be copied because they are already in place. This is done
4539 because we can avoid calling update_window_line in this 4515 because we can avoid calling update_window_line in this
4540 case. */ 4516 case. */
4541 for (j = 0; j < nruns && runs[j]->height > run->height; ++j) 4517 for (p = 0; p < nruns && runs[p]->height > run->height; ++p)
4542 ; 4518 ;
4543 for (k = nruns; k > j; --k) 4519 for (q = nruns; q > p; --q)
4544 runs[k] = runs[k - 1]; 4520 runs[q] = runs[q - 1];
4545 runs[j] = run; 4521 runs[p] = run;
4546 ++nruns; 4522 ++nruns;
4547 4523
4548 i += run->nrows; 4524 i += run->nrows;
@@ -4639,7 +4615,7 @@ update_frame_1 (struct frame *f, int force_p, int inhibit_id_p)
4639 struct glyph_matrix *current_matrix = f->current_matrix; 4615 struct glyph_matrix *current_matrix = f->current_matrix;
4640 struct glyph_matrix *desired_matrix = f->desired_matrix; 4616 struct glyph_matrix *desired_matrix = f->desired_matrix;
4641 int i; 4617 int i;
4642 int pause; 4618 int pause_p;
4643 int preempt_count = baud_rate / 2400 + 1; 4619 int preempt_count = baud_rate / 2400 + 1;
4644 4620
4645 xassert (current_matrix && desired_matrix); 4621 xassert (current_matrix && desired_matrix);
@@ -4653,7 +4629,7 @@ update_frame_1 (struct frame *f, int force_p, int inhibit_id_p)
4653#if !PERIODIC_PREEMPTION_CHECKING 4629#if !PERIODIC_PREEMPTION_CHECKING
4654 if (!force_p && detect_input_pending_ignore_squeezables ()) 4630 if (!force_p && detect_input_pending_ignore_squeezables ())
4655 { 4631 {
4656 pause = 1; 4632 pause_p = 1;
4657 goto do_pause; 4633 goto do_pause;
4658 } 4634 }
4659#endif 4635#endif
@@ -4733,10 +4709,10 @@ update_frame_1 (struct frame *f, int force_p, int inhibit_id_p)
4733 } 4709 }
4734 } 4710 }
4735 4711
4736 pause = (i < FRAME_LINES (f) - 1) ? i : 0; 4712 pause_p = (i < FRAME_LINES (f) - 1) ? i : 0;
4737 4713
4738 /* Now just clean up termcap drivers and set cursor, etc. */ 4714 /* Now just clean up termcap drivers and set cursor, etc. */
4739 if (!pause) 4715 if (!pause_p)
4740 { 4716 {
4741 if ((cursor_in_echo_area 4717 if ((cursor_in_echo_area
4742 /* If we are showing a message instead of the mini-buffer, 4718 /* If we are showing a message instead of the mini-buffer,
@@ -4837,7 +4813,7 @@ update_frame_1 (struct frame *f, int force_p, int inhibit_id_p)
4837#endif 4813#endif
4838 4814
4839 clear_desired_matrices (f); 4815 clear_desired_matrices (f);
4840 return pause; 4816 return pause_p;
4841} 4817}
4842 4818
4843 4819
@@ -5594,7 +5570,7 @@ marginal_area_string (struct window *w, enum window_part part,
5594 5570
5595#ifdef SIGWINCH 5571#ifdef SIGWINCH
5596 5572
5597SIGTYPE 5573static SIGTYPE
5598window_change_signal (int signalnum) /* If we don't have an argument, */ 5574window_change_signal (int signalnum) /* If we don't have an argument, */
5599 /* some compilers complain in signal calls. */ 5575 /* some compilers complain in signal calls. */
5600{ 5576{
diff --git a/src/editfns.c b/src/editfns.c
index 5d6189f2a3c..28690e7c76d 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -3523,7 +3523,7 @@ usage: (format STRING &rest OBJECTS) */)
3523 int maybe_combine_byte; 3523 int maybe_combine_byte;
3524 char *this_format; 3524 char *this_format;
3525 /* Precision for each spec, or -1, a flag value meaning no precision 3525 /* Precision for each spec, or -1, a flag value meaning no precision
3526 was given in that spec. Element 0, corresonding to the format 3526 was given in that spec. Element 0, corresponding to the format
3527 string itself, will not be used. Element NARGS, corresponding to 3527 string itself, will not be used. Element NARGS, corresponding to
3528 no argument, *will* be assigned to in the case that a `%' and `.' 3528 no argument, *will* be assigned to in the case that a `%' and `.'
3529 occur after the final format specifier. */ 3529 occur after the final format specifier. */
diff --git a/src/frame.c b/src/frame.c
index 56e0e7ec919..05938f3e1f0 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -2208,15 +2208,23 @@ store_frame_param (struct frame *f, Lisp_Object prop, Lisp_Object val)
2208 register Lisp_Object old_alist_elt; 2208 register Lisp_Object old_alist_elt;
2209 2209
2210 /* The buffer-list parameters are stored in a special place and not 2210 /* The buffer-list parameters are stored in a special place and not
2211 in the alist. */ 2211 in the alist. All buffers must be live. */
2212 if (EQ (prop, Qbuffer_list)) 2212 if (EQ (prop, Qbuffer_list))
2213 { 2213 {
2214 f->buffer_list = val; 2214 Lisp_Object list = Qnil;
2215 for (; CONSP (val); val = XCDR (val))
2216 if (!NILP (Fbuffer_live_p (XCAR (val))))
2217 list = Fcons (XCAR (val), list);
2218 f->buffer_list = Fnreverse (list);
2215 return; 2219 return;
2216 } 2220 }
2217 if (EQ (prop, Qburied_buffer_list)) 2221 if (EQ (prop, Qburied_buffer_list))
2218 { 2222 {
2219 f->buried_buffer_list = val; 2223 Lisp_Object list = Qnil;
2224 for (; CONSP (val); val = XCDR (val))
2225 if (!NILP (Fbuffer_live_p (XCAR (val))))
2226 list = Fcons (XCAR (val), list);
2227 f->buried_buffer_list = Fnreverse (list);
2220 return; 2228 return;
2221 } 2229 }
2222 2230
@@ -3275,12 +3283,12 @@ x_set_screen_gamma (struct frame *f, Lisp_Object new_value, Lisp_Object old_valu
3275 bgcolor = Fassq (Qbackground_color, f->param_alist); 3283 bgcolor = Fassq (Qbackground_color, f->param_alist);
3276 if (CONSP (bgcolor) && (bgcolor = XCDR (bgcolor), STRINGP (bgcolor))) 3284 if (CONSP (bgcolor) && (bgcolor = XCDR (bgcolor), STRINGP (bgcolor)))
3277 { 3285 {
3278 Lisp_Object index = Fget (Qbackground_color, Qx_frame_parameter); 3286 Lisp_Object parm_index = Fget (Qbackground_color, Qx_frame_parameter);
3279 if (NATNUMP (index) 3287 if (NATNUMP (parm_index)
3280 && (XFASTINT (index) 3288 && (XFASTINT (parm_index)
3281 < sizeof (frame_parms)/sizeof (frame_parms[0])) 3289 < sizeof (frame_parms)/sizeof (frame_parms[0]))
3282 && FRAME_RIF (f)->frame_parm_handlers[XFASTINT (index)]) 3290 && FRAME_RIF (f)->frame_parm_handlers[XFASTINT (parm_index)])
3283 (*FRAME_RIF (f)->frame_parm_handlers[XFASTINT (index)]) 3291 (*FRAME_RIF (f)->frame_parm_handlers[XFASTINT (parm_index)])
3284 (f, bgcolor, Qnil); 3292 (f, bgcolor, Qnil);
3285 } 3293 }
3286 3294
diff --git a/src/frame.h b/src/frame.h
index 9687e39a9fc..756e121f678 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -841,6 +841,7 @@ extern Lisp_Object Qnoelisp;
841 841
842extern struct frame *last_nonminibuf_frame; 842extern struct frame *last_nonminibuf_frame;
843 843
844extern void set_menu_bar_lines (struct frame *, Lisp_Object, Lisp_Object);
844extern struct frame *make_initial_frame (void); 845extern struct frame *make_initial_frame (void);
845extern struct frame *make_terminal_frame (struct terminal *); 846extern struct frame *make_terminal_frame (struct terminal *);
846extern struct frame *make_frame (int); 847extern struct frame *make_frame (int);
@@ -1131,17 +1132,20 @@ extern int x_figure_window_size (struct frame *, Lisp_Object, int);
1131extern void x_set_alpha (struct frame *, Lisp_Object, Lisp_Object); 1132extern void x_set_alpha (struct frame *, Lisp_Object, Lisp_Object);
1132 1133
1133extern void validate_x_resource_name (void); 1134extern void validate_x_resource_name (void);
1134 1135
1135extern Lisp_Object display_x_get_resource (Display_Info *, 1136extern Lisp_Object display_x_get_resource (Display_Info *,
1136 Lisp_Object attribute, 1137 Lisp_Object attribute,
1137 Lisp_Object class, 1138 Lisp_Object class,
1138 Lisp_Object component, 1139 Lisp_Object component,
1139 Lisp_Object subclass); 1140 Lisp_Object subclass);
1140 1141
1142#if defined HAVE_X_WINDOWS && !defined USE_X_TOOLKIT
1143extern char *x_get_resource_string (const char *, const char *);
1144#endif
1145
1141/* In xmenu.c */ 1146/* In xmenu.c */
1142extern void set_frame_menubar (FRAME_PTR, int, int); 1147extern void set_frame_menubar (FRAME_PTR, int, int);
1143 1148
1144#endif /* HAVE_WINDOW_SYSTEM */ 1149#endif /* HAVE_WINDOW_SYSTEM */
1145 1150
1146#endif /* not EMACS_FRAME_H */ 1151#endif /* not EMACS_FRAME_H */
1147
diff --git a/src/keymap.c b/src/keymap.c
index 0e4715e4b8b..1fbb40f1270 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -2756,7 +2756,7 @@ remapped command in the returned list. */)
2756 && !NILP (firstonly) 2756 && !NILP (firstonly)
2757 && !NILP (tem = Fget (definition, QCadvertised_binding))) 2757 && !NILP (tem = Fget (definition, QCadvertised_binding)))
2758 { 2758 {
2759 /* We have a list of advertized bindings. */ 2759 /* We have a list of advertised bindings. */
2760 while (CONSP (tem)) 2760 while (CONSP (tem))
2761 if (EQ (shadow_lookup (keymaps, XCAR (tem), Qnil, 0), definition)) 2761 if (EQ (shadow_lookup (keymaps, XCAR (tem), Qnil, 0), definition))
2762 return XCAR (tem); 2762 return XCAR (tem);
diff --git a/src/msdos.c b/src/msdos.c
index 8f0f6776aaa..261a09ac859 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -1389,8 +1389,6 @@ IT_delete_glyphs (struct frame *f, int n)
1389void 1389void
1390x_set_menu_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval) 1390x_set_menu_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
1391{ 1391{
1392 extern void set_menu_bar_lines (struct frame *, Lisp_Object, Lisp_Object);
1393
1394 set_menu_bar_lines (f, value, oldval); 1392 set_menu_bar_lines (f, value, oldval);
1395} 1393}
1396 1394
@@ -3922,6 +3920,18 @@ croak (char *badfunc)
3922 */ 3920 */
3923int setpgrp (void) {return 0; } 3921int setpgrp (void) {return 0; }
3924int setpriority (int x, int y, int z) { return 0; } 3922int setpriority (int x, int y, int z) { return 0; }
3923
3924#if __DJGPP__ == 2 && __DJGPP_MINOR__ < 4
3925ssize_t
3926readlink (const char *name, char *dummy1, size_t dummy2)
3927{
3928 /* `access' is much faster than `stat' on MS-DOS. */
3929 if (access (name, F_OK) == 0)
3930 errno = EINVAL;
3931 return -1;
3932}
3933#endif
3934
3925 3935
3926#if __DJGPP__ == 2 && __DJGPP_MINOR__ < 2 3936#if __DJGPP__ == 2 && __DJGPP_MINOR__ < 2
3927 3937
@@ -4236,4 +4246,3 @@ This variable is used only by MS-DOS terminals. */);
4236} 4246}
4237 4247
4238#endif /* MSDOS */ 4248#endif /* MSDOS */
4239
diff --git a/src/msdos.h b/src/msdos.h
index 6b076c1722b..4bbe9b134de 100644
--- a/src/msdos.h
+++ b/src/msdos.h
@@ -40,6 +40,11 @@ void mouse_init (void);
40void mouse_on (void); 40void mouse_on (void);
41void mouse_off (void); 41void mouse_off (void);
42void mouse_moveto (int, int); 42void mouse_moveto (int, int);
43
44#if __DJGPP__ == 2 && __DJGPP_MINOR__ < 4
45int readlink (const char *, char *, size_t);
46#endif
47
43 48
44#ifndef HAVE_X_WINDOWS 49#ifndef HAVE_X_WINDOWS
45/* Dummy types. */ 50/* Dummy types. */
diff --git a/src/s/msdos.h b/src/s/msdos.h
index 8debd28dccb..29ca0629899 100644
--- a/src/s/msdos.h
+++ b/src/s/msdos.h
@@ -80,6 +80,12 @@ You lose; /* Emacs for DOS must be compiled with DJGPP */
80 strtold, so use _strtold in all versions. */ 80 strtold, so use _strtold in all versions. */
81#define strtold _strtold 81#define strtold _strtold
82 82
83#if __DJGPP__ > 2 || __DJGPP_MINOR__ > 3
84# define HAVE_LSTAT 1
85#else
86# define lstat stat
87#endif
88
83/* End of gnulib-related stuff. */ 89/* End of gnulib-related stuff. */
84 90
85/* When $TERM is "internal" then this is substituted: */ 91/* When $TERM is "internal" then this is substituted: */
diff --git a/src/scroll.c b/src/scroll.c
index 08ae83eeee8..1343b89c41e 100644
--- a/src/scroll.c
+++ b/src/scroll.c
@@ -262,7 +262,8 @@ do_scrolling (struct frame *frame, struct glyph_matrix *current_matrix, struct m
262 for (k = 0; k < window_size; ++k) 262 for (k = 0; k < window_size; ++k)
263 copy_from[k] = -1; 263 copy_from[k] = -1;
264 264
265#define CHECK_BOUNDS \ 265#if GLYPH_DEBUG
266# define CHECK_BOUNDS \
266 do \ 267 do \
267 { \ 268 { \
268 int k; \ 269 int k; \
@@ -271,6 +272,7 @@ do_scrolling (struct frame *frame, struct glyph_matrix *current_matrix, struct m
271 || (copy_from[k] >= 0 && copy_from[k] < window_size)); \ 272 || (copy_from[k] >= 0 && copy_from[k] < window_size)); \
272 } \ 273 } \
273 while (0); 274 while (0);
275#endif
274 276
275 /* When j is advanced, this corresponds to deleted lines. 277 /* When j is advanced, this corresponds to deleted lines.
276 When i is advanced, this corresponds to inserted lines. */ 278 When i is advanced, this corresponds to inserted lines. */
@@ -1035,4 +1037,3 @@ do_line_insertion_deletion_costs (FRAME_PTR frame,
1035 FRAME_DELETE_COST (frame), FRAME_DELETEN_COST (frame), 1037 FRAME_DELETE_COST (frame), FRAME_DELETEN_COST (frame),
1036 coefficient); 1038 coefficient);
1037} 1039}
1038
diff --git a/src/w32.c b/src/w32.c
index d4f68544c1d..ae2373be46e 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -3614,6 +3614,25 @@ utime (const char *name, struct utimbuf *times)
3614} 3614}
3615 3615
3616 3616
3617/* Symlink-related functions that always fail. Used in fileio.c to
3618 avoid #ifdef's. */
3619int
3620symlink (char const *dummy1, char const *dummy2)
3621{
3622 errno = ENOSYS;
3623 return -1;
3624}
3625
3626ssize_t
3627readlink (const char *name, char *dummy1, size_t dummy2)
3628{
3629 /* `access' is much faster than `stat' on MS-Windows. */
3630 if (sys_access (name, 0) == 0)
3631 errno = EINVAL;
3632 return -1;
3633}
3634
3635
3617/* Support for browsing other processes and their attributes. See 3636/* Support for browsing other processes and their attributes. See
3618 process.c for the Lisp bindings. */ 3637 process.c for the Lisp bindings. */
3619 3638
diff --git a/src/w32proc.c b/src/w32proc.c
index 1c009c7f943..bb8b428ffe4 100644
--- a/src/w32proc.c
+++ b/src/w32proc.c
@@ -831,7 +831,7 @@ sys_spawnve (int mode, char *cmdname, char **argv, char **envp)
831 831
832 Note that using backslash to escape embedded quotes requires 832 Note that using backslash to escape embedded quotes requires
833 additional special handling if an embedded quote is already 833 additional special handling if an embedded quote is already
834 preceeded by backslash, or if an arg requiring quoting ends with 834 preceded by backslash, or if an arg requiring quoting ends with
835 backslash. In such cases, the run of escape characters needs to be 835 backslash. In such cases, the run of escape characters needs to be
836 doubled. For consistency, we apply this special handling as long 836 doubled. For consistency, we apply this special handling as long
837 as the escape character is not quote. 837 as the escape character is not quote.
diff --git a/src/w32term.c b/src/w32term.c
index 692130b5140..67e853f21f0 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -5941,7 +5941,7 @@ w32_initialize_display_info (Lisp_Object display_name)
5941 5941
5942} 5942}
5943 5943
5944/* Create an xrdb-style database of resources to supercede registry settings. 5944/* Create an xrdb-style database of resources to supersede registry settings.
5945 The database is just a concatenation of C strings, finished by an additional 5945 The database is just a concatenation of C strings, finished by an additional
5946 \0. The strings are submitted to some basic normalization, so 5946 \0. The strings are submitted to some basic normalization, so
5947 5947