aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Verona2013-02-14 00:04:38 +0100
committerJoakim Verona2013-02-14 00:04:38 +0100
commit694d759a9dd8fcbd23078bab33f84ff399d58971 (patch)
tree7b9f2b697ffa06f315be78cd84b94d84659d02c2
parente46029ad6dda065541c8de40de0fe9d5800ac770 (diff)
parentfe3362617385f936576ba0acdac66e2f7da38391 (diff)
downloademacs-694d759a9dd8fcbd23078bab33f84ff399d58971.tar.gz
emacs-694d759a9dd8fcbd23078bab33f84ff399d58971.zip
auto upstream
-rw-r--r--doc/emacs/ChangeLog9
-rw-r--r--doc/emacs/ack.texi7
-rw-r--r--doc/emacs/cmdargs.texi7
-rw-r--r--doc/emacs/mark.texi2
-rw-r--r--doc/lispref/ChangeLog13
-rw-r--r--doc/lispref/keymaps.texi5
-rw-r--r--doc/lispref/modes.texi2
-rw-r--r--doc/lispref/objects.texi4
-rw-r--r--doc/lispref/processes.texi6
-rw-r--r--doc/man/etags.13
-rw-r--r--doc/misc/ChangeLog4
-rw-r--r--doc/misc/ada-mode.texi4
-rw-r--r--doc/misc/bovine.texi2
-rw-r--r--doc/misc/calc.texi2
-rw-r--r--doc/misc/cc-mode.texi34
-rw-r--r--doc/misc/cl.texi2
-rw-r--r--doc/misc/dired-x.texi2
-rw-r--r--doc/misc/ede.texi4
-rw-r--r--doc/misc/ediff.texi2
-rw-r--r--doc/misc/emacs-mime.texi2
-rw-r--r--doc/misc/eshell.texi4
-rw-r--r--doc/misc/faq.texi2
-rw-r--r--doc/misc/flymake.texi4
-rw-r--r--doc/misc/forms.texi2
-rw-r--r--doc/misc/gnus-faq.texi2
-rw-r--r--doc/misc/gnus.texi22
-rw-r--r--doc/misc/idlwave.texi6
-rw-r--r--doc/misc/message.texi11
-rw-r--r--doc/misc/org.texi6
-rw-r--r--doc/misc/reftex.texi4
-rw-r--r--doc/misc/remember.texi2
-rw-r--r--doc/misc/ses.texi2
-rw-r--r--doc/misc/sieve.texi2
-rw-r--r--doc/misc/speedbar.texi4
-rw-r--r--doc/misc/url.texi2
-rw-r--r--doc/misc/vip.texi2
-rw-r--r--doc/misc/viper.texi2
-rw-r--r--doc/misc/woman.texi2
-rw-r--r--etc/NEWS15
-rw-r--r--lisp/ChangeLog116
-rw-r--r--lisp/descr-text.el3
-rw-r--r--lisp/dired.el114
-rw-r--r--lisp/doc-view.el1
-rw-r--r--lisp/emacs-lisp/package.el21
-rw-r--r--lisp/erc/ChangeLog4
-rw-r--r--lisp/erc/erc-match.el16
-rw-r--r--lisp/find-dired.el15
-rw-r--r--lisp/gnus/ChangeLog6
-rw-r--r--lisp/gnus/gnus-art.el1
-rw-r--r--lisp/gnus/gnus-group.el2
-rw-r--r--lisp/gnus/gnus-start.el2
-rw-r--r--lisp/gnus/gnus-sum.el2
-rw-r--r--lisp/gnus/nnmail.el4
-rw-r--r--lisp/gnus/smime.el2
-rw-r--r--lisp/hexl.el4
-rw-r--r--lisp/icomplete.el63
-rw-r--r--lisp/image-mode.el1
-rw-r--r--lisp/locate.el1
-rw-r--r--lisp/net/ange-ftp.el3
-rw-r--r--lisp/net/tramp-sh.el134
-rw-r--r--lisp/net/tramp.el46
-rw-r--r--lisp/nxml/nxml-mode.el10
-rw-r--r--lisp/obsolete/yow.el (renamed from lisp/play/yow.el)3
-rw-r--r--lisp/org/org-element.el2
-rw-r--r--lisp/org/org.el2
-rw-r--r--lisp/play/fortune.el20
-rw-r--r--lisp/progmodes/cc-align.el30
-rw-r--r--lisp/progmodes/cc-langs.el2
-rw-r--r--lisp/progmodes/compile.el2
-rw-r--r--lisp/progmodes/cperl-mode.el2
-rw-r--r--lisp/progmodes/dcl-mode.el4
-rw-r--r--lisp/progmodes/js.el2
-rw-r--r--lisp/progmodes/ruby-mode.el31
-rw-r--r--lisp/progmodes/verilog-mode.el2
-rw-r--r--lisp/server.el2
-rw-r--r--lisp/term/xterm.el2
-rw-r--r--lisp/textmodes/two-column.el6
-rw-r--r--lisp/tmm.el109
-rw-r--r--lisp/vc/ediff-util.el8
-rw-r--r--nt/ChangeLog8
-rw-r--r--nt/config.nt102
-rw-r--r--src/ChangeLog73
-rw-r--r--src/bidi.c5
-rw-r--r--src/callproc.c10
-rw-r--r--src/coding.c2
-rw-r--r--src/composite.c14
-rw-r--r--src/dispnew.c4
-rw-r--r--src/font.c23
-rw-r--r--src/font.h2
-rw-r--r--src/indent.c2
-rw-r--r--src/keyboard.c9
-rw-r--r--src/makefile.w32-in4
-rw-r--r--src/pre-crt0.c6
-rw-r--r--src/sysdep.c4
-rw-r--r--src/unexaix.c93
-rw-r--r--test/ChangeLog5
-rw-r--r--test/automated/ruby-mode-tests.el18
97 files changed, 880 insertions, 516 deletions
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index bcd9c0c0693..ba6f7e323e0 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,12 @@
12013-02-13 Glenn Morris <rgm@gnu.org>
2
3 * ack.texi (Acknowledgments): Don't mention yow any more.
4
52013-02-13 Paul Eggert <eggert@cs.ucla.edu>
6
7 * cmdargs.texi (General Variables):
8 Fix TMPDIR documentation to match the code's behavior.
9
12013-02-10 Glenn Morris <rgm@gnu.org> 102013-02-10 Glenn Morris <rgm@gnu.org>
2 11
3 * trouble.texi (Checklist): Update bug keybinding. 12 * trouble.texi (Checklist): Update bug keybinding.
diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi
index a0ab8223ae0..718a51c60db 100644
--- a/doc/emacs/ack.texi
+++ b/doc/emacs/ack.texi
@@ -726,7 +726,7 @@ the display of the Emacs tool bar. With Riccardo Murri he wrote
726Eric Ludlam wrote the Speedbar package; @file{checkdoc.el}, for checking 726Eric Ludlam wrote the Speedbar package; @file{checkdoc.el}, for checking
727doc strings in Emacs Lisp programs; @file{dframe.el}, providing 727doc strings in Emacs Lisp programs; @file{dframe.el}, providing
728dedicated frame support modes; @file{ezimage.el}, a generalized way to 728dedicated frame support modes; @file{ezimage.el}, a generalized way to
729place images over text; @file{chart.el} for drawing bar charts etc; and 729place images over text; @file{chart.el} for drawing bar charts etc.; and
730the EIEIO (Enhanced Implementation of Emacs Interpreted Objects) 730the EIEIO (Enhanced Implementation of Emacs Interpreted Objects)
731package. He was also the main author of the CEDET (Collection of Emacs 731package. He was also the main author of the CEDET (Collection of Emacs
732Development Environment Tools) package. Portions were also written by 732Development Environment Tools) package. Portions were also written by
@@ -811,9 +811,8 @@ Richard Mlynarik wrote @file{cl-indent.el}, a package for indenting
811Common Lisp code; @file{ebuff-menu.el}, an ``electric'' browser for 811Common Lisp code; @file{ebuff-menu.el}, an ``electric'' browser for
812buffer listings; @file{ehelp.el}, bindings for browsing help screens; 812buffer listings; @file{ehelp.el}, bindings for browsing help screens;
813@file{rfc822.el}, a parser for E-mail addresses in the RFC-822 format, 813@file{rfc822.el}, a parser for E-mail addresses in the RFC-822 format,
814used in mail messages and news articles; @file{terminal.el}, a 814used in mail messages and news articles; and @file{terminal.el}, a
815terminal emulator for Emacs subprocesses; and @file{yow.el}, an 815terminal emulator for Emacs subprocesses.
816essential utility.
817 816
818@item 817@item
819Gerd Moellmann was the Emacs maintainer from the beginning of Emacs 21 818Gerd Moellmann was the Emacs maintainer from the beginning of Emacs 21
diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi
index c4a74042865..19b439afc7f 100644
--- a/doc/emacs/cmdargs.texi
+++ b/doc/emacs/cmdargs.texi
@@ -567,10 +567,9 @@ terminal specified by @env{TERM}. This defaults to
567These environment variables are used to initialize the variable 567These environment variables are used to initialize the variable
568@code{temporary-file-directory}, which specifies a directory in which 568@code{temporary-file-directory}, which specifies a directory in which
569to put temporary files (@pxref{Backup}). Emacs tries to use 569to put temporary files (@pxref{Backup}). Emacs tries to use
570@env{TMPDIR} first; if that is unset, it tries @env{TMP}, then 570@env{TMPDIR} first. If that is unset, Emacs normally falls back on
571@env{TEMP}, and finally @file{/tmp}. But on MS-Windows and MS-DOS, 571@file{/tmp}, but on MS-Windows and MS-DOS it instead falls back on
572Emacs tries @env{TEMP}, then @env{TMPDIR}, then @env{TMP}, and finally 572@env{TMP}, then @env{TEMP}, and finally @file{c:/temp}.
573@file{c:/temp}.
574 573
575@item TZ 574@item TZ
576This specifies the current time zone and possibly also daylight 575This specifies the current time zone and possibly also daylight
diff --git a/doc/emacs/mark.texi b/doc/emacs/mark.texi
index 6ed3b2e6d37..05b2a5be3a4 100644
--- a/doc/emacs/mark.texi
+++ b/doc/emacs/mark.texi
@@ -131,7 +131,7 @@ detailed description of these mouse commands.
131@cindex shift-selection 131@cindex shift-selection
132 Finally, you can set the mark by holding down the shift key while 132 Finally, you can set the mark by holding down the shift key while
133typing certain cursor motion commands (such as @kbd{S-@key{right}}, 133typing certain cursor motion commands (such as @kbd{S-@key{right}},
134@kbd{S-C-f}, @kbd{S-C-n}, etc.) This is called @dfn{shift-selection}. 134@kbd{S-C-f}, @kbd{S-C-n}, etc.). This is called @dfn{shift-selection}.
135It sets the mark at point before moving point, but only if there is no 135It sets the mark at point before moving point, but only if there is no
136active mark set via shift-selection. The mark set by mouse commands 136active mark set via shift-selection. The mark set by mouse commands
137and by shift-selection behaves slightly differently from the usual 137and by shift-selection behaves slightly differently from the usual
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index a61d84a77b1..be1bdfcfa3d 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,16 @@
12013-02-13 Glenn Morris <rgm@gnu.org>
2
3 * objects.texi (Char-Table Type): Add footnote about #^^.
4
5 * modes.texi (Minor Mode Conventions): Fix typo.
6
7 * keymaps.texi (Scanning Keymaps): Remove obsolete sentence about
8 meta characters; this changed in 22.1. (Bug#13684)
9
10 * objects.texi (Char-Table Type): Add cindex.
11
12 * keymaps.texi (Key Binding Commands): Trivial rephrasing.
13
12013-02-10 Glenn Morris <rgm@gnu.org> 142013-02-10 Glenn Morris <rgm@gnu.org>
2 15
3 * keymaps.texi (Creating Keymaps): Update make-keymap result. 16 * keymaps.texi (Creating Keymaps): Update make-keymap result.
diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi
index 54211d1aa0b..822e952ef98 100644
--- a/doc/lispref/keymaps.texi
+++ b/doc/lispref/keymaps.texi
@@ -1784,7 +1784,7 @@ that uses @var{key} as a prefix---which would not be allowed if
1784@end group 1784@end group
1785@end smallexample 1785@end smallexample
1786 1786
1787This function is implemented simply using @code{define-key}: 1787This function is equivalent to using @code{define-key} as follows:
1788 1788
1789@smallexample 1789@smallexample
1790@group 1790@group
@@ -1975,9 +1975,6 @@ modes---minor modes first, then the major mode, then global bindings.
1975If @var{prefix} is non-@code{nil}, it should be a prefix key; then the 1975If @var{prefix} is non-@code{nil}, it should be a prefix key; then the
1976listing includes only keys that start with @var{prefix}. 1976listing includes only keys that start with @var{prefix}.
1977 1977
1978The listing describes meta characters as @key{ESC} followed by the
1979corresponding non-meta character.
1980
1981When several characters with consecutive @acronym{ASCII} codes have the 1978When several characters with consecutive @acronym{ASCII} codes have the
1982same definition, they are shown together, as 1979same definition, they are shown together, as
1983@samp{@var{firstchar}..@var{lastchar}}. In this instance, you need to 1980@samp{@var{firstchar}..@var{lastchar}}. In this instance, you need to
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index 71ce2bb9271..5f1eb8619ee 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -1361,7 +1361,7 @@ follow them is to use the macro @code{define-minor-mode}.
1361@cindex mode variable 1361@cindex mode variable
1362Define a variable whose name ends in @samp{-mode}. We call this the 1362Define a variable whose name ends in @samp{-mode}. We call this the
1363@dfn{mode variable}. The minor mode command should set this variable. 1363@dfn{mode variable}. The minor mode command should set this variable.
1364The value will be @code{nil} is the mode is disabled, and non-@code{nil} 1364The value will be @code{nil} if the mode is disabled, and non-@code{nil}
1365if the mode is enabled. The variable should be buffer-local if the 1365if the mode is enabled. The variable should be buffer-local if the
1366minor mode is buffer-local. 1366minor mode is buffer-local.
1367 1367
diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi
index 4b24d920f9f..0437d2337a3 100644
--- a/doc/lispref/objects.texi
+++ b/doc/lispref/objects.texi
@@ -1177,8 +1177,10 @@ inherit from, a default value, and a small number of extra slots to use for
1177special purposes. A char-table can also specify a single value for 1177special purposes. A char-table can also specify a single value for
1178a whole character set. 1178a whole character set.
1179 1179
1180@cindex @samp{#^} read syntax
1180 The printed representation of a char-table is like a vector 1181 The printed representation of a char-table is like a vector
1181except that there is an extra @samp{#^} at the beginning. 1182except that there is an extra @samp{#^} at the beginning.@footnote{You
1183may also encounter @samp{#^^}, used for ``sub-char-tables''.}
1182 1184
1183 @xref{Char-Tables}, for special functions to operate on char-tables. 1185 @xref{Char-Tables}, for special functions to operate on char-tables.
1184Uses of char-tables include: 1186Uses of char-tables include:
diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi
index 50710e23234..1181244a974 100644
--- a/doc/lispref/processes.texi
+++ b/doc/lispref/processes.texi
@@ -88,7 +88,7 @@ initializes @code{exec-path} when it starts up, based on the value of
88the environment variable @env{PATH}. The standard file name 88the environment variable @env{PATH}. The standard file name
89constructs, @samp{~}, @samp{.}, and @samp{..}, are interpreted as 89constructs, @samp{~}, @samp{.}, and @samp{..}, are interpreted as
90usual in @code{exec-path}, but environment variable substitutions 90usual in @code{exec-path}, but environment variable substitutions
91(@samp{$HOME}, etc.) are not recognized; use 91(@samp{$HOME}, etc.)@: are not recognized; use
92@code{substitute-in-file-name} to perform them (@pxref{File Name 92@code{substitute-in-file-name} to perform them (@pxref{File Name
93Expansion}). @code{nil} in this list refers to 93Expansion}). @code{nil} in this list refers to
94@code{default-directory}. 94@code{default-directory}.
@@ -557,7 +557,7 @@ from the process only while waiting for input or for a time delay.
557when creating the process, based on the value of the variable 557when creating the process, based on the value of the variable
558@code{process-connection-type} (see below). Ptys are usually 558@code{process-connection-type} (see below). Ptys are usually
559preferable for processes visible to the user, as in Shell mode, 559preferable for processes visible to the user, as in Shell mode,
560because they allow for job control (@kbd{C-c}, @kbd{C-z}, etc.) 560because they allow for job control (@kbd{C-c}, @kbd{C-z}, etc.)@:
561between the process and its children, whereas pipes do not. For 561between the process and its children, whereas pipes do not. For
562subprocesses used for internal purposes by programs, it is often 562subprocesses used for internal purposes by programs, it is often
563better to use a pipe, because they are more efficient, and because 563better to use a pipe, because they are more efficient, and because
@@ -571,7 +571,7 @@ program @var{program} running in it. It returns a process object that
571stands for the new subprocess in Lisp. The argument @var{name} 571stands for the new subprocess in Lisp. The argument @var{name}
572specifies the name for the process object; if a process with this name 572specifies the name for the process object; if a process with this name
573already exists, then @var{name} is modified (by appending @samp{<1>}, 573already exists, then @var{name} is modified (by appending @samp{<1>},
574etc.) to be unique. The buffer @var{buffer-or-name} is the buffer to 574etc.)@: to be unique. The buffer @var{buffer-or-name} is the buffer to
575associate with the process. 575associate with the process.
576 576
577If @var{program} is @code{nil}, Emacs opens a new pseudoterminal (pty) 577If @var{program} is @code{nil}, Emacs opens a new pseudoterminal (pty)
diff --git a/doc/man/etags.1 b/doc/man/etags.1
index 94fe2af1a8a..5ccf528868b 100644
--- a/doc/man/etags.1
+++ b/doc/man/etags.1
@@ -147,7 +147,7 @@ of \- means standard output; overrides default \fBTAGS\fP or \fBtags\fP.
147Make tags based on regexp matching for the files following this option, 147Make tags based on regexp matching for the files following this option,
148in addition to the tags made with the standard parsing based on 148in addition to the tags made with the standard parsing based on
149language. May be freely intermixed with filenames and the \fB\-R\fP 149language. May be freely intermixed with filenames and the \fB\-R\fP
150option. The regexps are cumulative, i.e. each such option will add to 150option. The regexps are cumulative, i.e., each such option will add to
151the previous ones. The regexps are of one of the forms: 151the previous ones. The regexps are of one of the forms:
152.br 152.br
153 [\fB{\fP\fIlanguage\fP\fB}\fP]\fB/\fP\fItagregexp/\fP[\fInameregexp\fP\fB/\fP]\fImodifiers\fP 153 [\fB{\fP\fIlanguage\fP\fB}\fP]\fB/\fP\fItagregexp/\fP[\fInameregexp\fP\fB/\fP]\fImodifiers\fP
@@ -283,4 +283,3 @@ Permission is granted to copy and distribute translations of this
283document into another language, under the above conditions for 283document into another language, under the above conditions for
284modified versions, except that this permission notice may be stated 284modified versions, except that this permission notice may be stated
285in a translation approved by the Free Software Foundation. 285in a translation approved by the Free Software Foundation.
286
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 11ff3700da4..dd3c0ccd1e2 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,7 @@
12013-02-13 Glenn Morris <rgm@gnu.org>
2
3 * message.texi (News Headers): Don't mention yow any more.
4
12013-02-09 Jay Belanger <jay.p.belanger@gmail.com> 52013-02-09 Jay Belanger <jay.p.belanger@gmail.com>
2 6
3 * calc.texi (Basic Operations on Units): 7 * calc.texi (Basic Operations on Units):
diff --git a/doc/misc/ada-mode.texi b/doc/misc/ada-mode.texi
index 926d6a5749c..b5a640e13e0 100644
--- a/doc/misc/ada-mode.texi
+++ b/doc/misc/ada-mode.texi
@@ -72,7 +72,7 @@ existing code and facilitates writing new code.
72 72
73When the Gnu Ada compiler GNAT is used, the cross-reference 73When the Gnu Ada compiler GNAT is used, the cross-reference
74information output by the compiler is used to provide powerful code 74information output by the compiler is used to provide powerful code
75navigation (jump to definition, find all uses, etc). 75navigation (jump to definition, find all uses, etc.).
76 76
77When you open a file with a file extension of @file{.ads} or 77When you open a file with a file extension of @file{.ads} or
78@file{.adb}, Emacs will automatically load and activate Ada mode. 78@file{.adb}, Emacs will automatically load and activate Ada mode.
@@ -1267,7 +1267,7 @@ Non-@code{nil} means that the current line will also be re-indented
1267before inserting a newline, when you press @key{RET}. 1267before inserting a newline, when you press @key{RET}.
1268@end table 1268@end table
1269 1269
1270Most of the time, the indentation will be automatic, i.e when you 1270Most of the time, the indentation will be automatic, i.e., when you
1271press @key{RET}, the cursor will move to the correct column on the 1271press @key{RET}, the cursor will move to the correct column on the
1272next line. 1272next line.
1273 1273
diff --git a/doc/misc/bovine.texi b/doc/misc/bovine.texi
index 48d5cf9e18a..978345e5cc8 100644
--- a/doc/misc/bovine.texi
+++ b/doc/misc/bovine.texi
@@ -314,7 +314,7 @@ The first object spliced into the list (assuming it is a list from a
314non-terminal). 314non-terminal).
315 315
316@item '$1 316@item '$1
317The first object matched, placed in a list. i.e. @code{( $1 )}. 317The first object matched, placed in a list. I.e., @code{( $1 )}.
318 318
319@item foo 319@item foo
320The symbol @code{foo} (exactly as displayed). 320The symbol @code{foo} (exactly as displayed).
diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi
index da018acffe9..2d1f59cfa68 100644
--- a/doc/misc/calc.texi
+++ b/doc/misc/calc.texi
@@ -14122,7 +14122,7 @@ conventions. Like C mode, Pascal mode interprets array brackets and uses
14122a different table of operators. Hexadecimal numbers are entered and 14122a different table of operators. Hexadecimal numbers are entered and
14123displayed with a preceding dollar sign. (Thus the regular meaning of 14123displayed with a preceding dollar sign. (Thus the regular meaning of
14124@kbd{$2} during algebraic entry does not work in Pascal mode, though 14124@kbd{$2} during algebraic entry does not work in Pascal mode, though
14125@kbd{$} (and @kbd{$$}, etc.) not followed by digits works the same as 14125@kbd{$} (and @kbd{$$}, etc.)@: not followed by digits works the same as
14126always.) No special provisions are made for other non-decimal numbers, 14126always.) No special provisions are made for other non-decimal numbers,
14127vectors, and so on, since there is no universally accepted standard way 14127vectors, and so on, since there is no universally accepted standard way
14128of handling these in Pascal. 14128of handling these in Pascal.
diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi
index 55b7028101a..bb6a5b001ad 100644
--- a/doc/misc/cc-mode.texi
+++ b/doc/misc/cc-mode.texi
@@ -4959,7 +4959,7 @@ the declaration is an annotation.
4959 4959
4960There are a few occasions where a statement block might be used inside 4960There are a few occasions where a statement block might be used inside
4961an expression. One is in C or C++ code using the gcc extension for 4961an expression. One is in C or C++ code using the gcc extension for
4962this, e.g: 4962this, e.g.:
4963 4963
4964@example 4964@example
4965 1: int res = (@{ 4965 1: int res = (@{
@@ -5552,7 +5552,7 @@ parentheses and statements within brace blocks.
5552@findex lineup-close-paren (c-) 5552@findex lineup-close-paren (c-)
5553Line up the closing paren under its corresponding open paren if the 5553Line up the closing paren under its corresponding open paren if the
5554open paren is followed by code. If the open paren ends its line, no 5554open paren is followed by code. If the open paren ends its line, no
5555indentation is added. E.g: 5555indentation is added. E.g.:
5556 5556
5557@example 5557@example
5558@group 5558@group
@@ -5606,7 +5606,7 @@ discussion of this ``DWIM'' measure.
5606 5606
5607@defun c-indent-one-line-block 5607@defun c-indent-one-line-block
5608@findex indent-one-line-block (c-) 5608@findex indent-one-line-block (c-)
5609Indent a one line block @code{c-basic-offset} extra. E.g: 5609Indent a one line block @code{c-basic-offset} extra. E.g.:
5610 5610
5611@example 5611@example
5612@group 5612@group
@@ -5640,7 +5640,7 @@ which makes the function usable in list expressions.
5640 5640
5641@defun c-indent-multi-line-block 5641@defun c-indent-multi-line-block
5642@findex indent-multi-line-block (c-) 5642@findex indent-multi-line-block (c-)
5643Indent a multiline block @code{c-basic-offset} extra. E.g: 5643Indent a multiline block @code{c-basic-offset} extra. E.g.:
5644 5644
5645@example 5645@example
5646@group 5646@group
@@ -5679,7 +5679,7 @@ block, which makes the function usable in list expressions.
5679Line up statements for coding standards which place the first statement 5679Line up statements for coding standards which place the first statement
5680in a block on the same line as the block opening brace@footnote{Run-in 5680in a block on the same line as the block opening brace@footnote{Run-in
5681style doesn't really work too well. You might need to write your own 5681style doesn't really work too well. You might need to write your own
5682custom line-up functions to better support this style.}. E.g: 5682custom line-up functions to better support this style.}. E.g.:
5683 5683
5684@example 5684@example
5685@group 5685@group
@@ -5762,7 +5762,7 @@ indents relative to the surrounding block just like
5762@defun c-lineup-whitesmith-in-block 5762@defun c-lineup-whitesmith-in-block
5763@findex lineup-whitesmith-in-block (c-) 5763@findex lineup-whitesmith-in-block (c-)
5764Line up lines inside a block in Whitesmith style. It's done in a way 5764Line up lines inside a block in Whitesmith style. It's done in a way
5765that works both when the opening brace hangs and when it doesn't. E.g: 5765that works both when the opening brace hangs and when it doesn't. E.g.:
5766 5766
5767@example 5767@example
5768@group 5768@group
@@ -5816,7 +5816,7 @@ Line up the current argument line under the first argument.
5816As a special case, if an argument on the same line as the open 5816As a special case, if an argument on the same line as the open
5817parenthesis starts with a brace block opener, the indentation is 5817parenthesis starts with a brace block opener, the indentation is
5818@code{c-basic-offset} only. This is intended as a ``DWIM'' measure in 5818@code{c-basic-offset} only. This is intended as a ``DWIM'' measure in
5819cases like macros that contain statement blocks, e.g: 5819cases like macros that contain statement blocks, e.g.:
5820 5820
5821@example 5821@example
5822@group 5822@group
@@ -5852,7 +5852,7 @@ brace block.
5852@defun c-lineup-multi-inher 5852@defun c-lineup-multi-inher
5853@findex lineup-multi-inher (c-) 5853@findex lineup-multi-inher (c-)
5854Line up the classes in C++ multiple inheritance clauses and member 5854Line up the classes in C++ multiple inheritance clauses and member
5855initializers under each other. E.g: 5855initializers under each other. E.g.:
5856 5856
5857@example 5857@example
5858@group 5858@group
@@ -5895,7 +5895,7 @@ Line up Java implements and extends declarations. If class names
5895follow on the same line as the @samp{implements}/@samp{extends} 5895follow on the same line as the @samp{implements}/@samp{extends}
5896keyword, they are lined up under each other. Otherwise, they are 5896keyword, they are lined up under each other. Otherwise, they are
5897indented by adding @code{c-basic-offset} to the column of the keyword. 5897indented by adding @code{c-basic-offset} to the column of the keyword.
5898E.g: 5898E.g.:
5899 5899
5900@example 5900@example
5901@group 5901@group
@@ -5929,7 +5929,7 @@ same line as the throws keyword, they are lined up under each other.
5929Otherwise, they are indented by adding @code{c-basic-offset} to the 5929Otherwise, they are indented by adding @code{c-basic-offset} to the
5930column of the @samp{throws} keyword. The @samp{throws} keyword itself 5930column of the @samp{throws} keyword. The @samp{throws} keyword itself
5931is also indented by @code{c-basic-offset} from the function declaration 5931is also indented by @code{c-basic-offset} from the function declaration
5932start if it doesn't hang. E.g: 5932start if it doesn't hang. E.g.:
5933 5933
5934@example 5934@example
5935@group 5935@group
@@ -6014,7 +6014,7 @@ line.
6014 6014
6015@defun c-lineup-argcont 6015@defun c-lineup-argcont
6016@findex lineup-argcont (c-) 6016@findex lineup-argcont (c-)
6017Line up a continued argument. E.g: 6017Line up a continued argument. E.g.:
6018 6018
6019@example 6019@example
6020@group 6020@group
@@ -6101,7 +6101,7 @@ function is the same as specifying a list @code{(c-lineup-assignments
6101Line up ``cascaded calls'' under each other. If the line begins with 6101Line up ``cascaded calls'' under each other. If the line begins with
6102@code{->} or @code{.} and the preceding line ends with one or more 6102@code{->} or @code{.} and the preceding line ends with one or more
6103function calls preceded by the same token, then the arrow is lined up 6103function calls preceded by the same token, then the arrow is lined up
6104with the first of those tokens. E.g: 6104with the first of those tokens. E.g.:
6105 6105
6106@example 6106@example
6107@group 6107@group
@@ -6133,7 +6133,7 @@ Line up C++ stream operators (i.e., @samp{<<} and @samp{>>}).
6133@findex lineup-string-cont (c-) 6133@findex lineup-string-cont (c-)
6134Line up a continued string under the one it continues. A continued 6134Line up a continued string under the one it continues. A continued
6135string in this sense is where a string literal follows directly after 6135string in this sense is where a string literal follows directly after
6136another one. E.g: 6136another one. E.g.:
6137 6137
6138@example 6138@example
6139@group 6139@group
@@ -6242,7 +6242,7 @@ is equivalent to @code{(@r{@var{value}} . -1000)}.
6242@findex lineup-knr-region-comment (c-) 6242@findex lineup-knr-region-comment (c-)
6243Line up a comment in the ``K&R region'' with the declaration. That is 6243Line up a comment in the ``K&R region'' with the declaration. That is
6244the region between the function or class header and the beginning of the 6244the region between the function or class header and the beginning of the
6245block. E.g: 6245block. E.g.:
6246 6246
6247@example 6247@example
6248@group 6248@group
@@ -6282,7 +6282,7 @@ already has; think of it as an identity function for lineups.
6282@defun c-lineup-cpp-define 6282@defun c-lineup-cpp-define
6283@findex lineup-cpp-define (c-) 6283@findex lineup-cpp-define (c-)
6284Line up macro continuation lines according to the indentation of the 6284Line up macro continuation lines according to the indentation of the
6285construct preceding the macro. E.g: 6285construct preceding the macro. E.g.:
6286 6286
6287@example 6287@example
6288@group 6288@group
@@ -6409,7 +6409,7 @@ that those lines could be analyzed as either topmost-intro-cont or
6409statement-cont. It's used for @code{topmost-intro-cont} by default, but 6409statement-cont. It's used for @code{topmost-intro-cont} by default, but
6410you might consider using @code{+} instead.}. For lines preceding a 6410you might consider using @code{+} instead.}. For lines preceding a
6411definition, zero is used. For other lines, @code{c-basic-offset} is 6411definition, zero is used. For other lines, @code{c-basic-offset} is
6412added to the indentation. E.g: 6412added to the indentation. E.g.:
6413 6413
6414@example 6414@example
6415@group 6415@group
@@ -6507,7 +6507,7 @@ earlier. Line-up functions are still passed this cons cell, so as to
6507preserve compatibility with older configurations. In the future, we 6507preserve compatibility with older configurations. In the future, we
6508may decide to convert to using the full list format---you can prepare 6508may decide to convert to using the full list format---you can prepare
6509your setup for this by using the access functions 6509your setup for this by using the access functions
6510(@code{c-langelem-sym}, etc.) described below. 6510(@code{c-langelem-sym}, etc.)@: described below.
6511 6511
6512@vindex c-syntactic-element 6512@vindex c-syntactic-element
6513@vindex syntactic-element (c-) 6513@vindex syntactic-element (c-)
diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi
index 8da6032d728..11f19c8df06 100644
--- a/doc/misc/cl.texi
+++ b/doc/misc/cl.texi
@@ -748,7 +748,7 @@ This function attempts to convert @var{object} to the specified
748@var{type}. If @var{object} is already of that type as determined by 748@var{type}. If @var{object} is already of that type as determined by
749@code{cl-typep}, it is simply returned. Otherwise, certain types of 749@code{cl-typep}, it is simply returned. Otherwise, certain types of
750conversions will be made: If @var{type} is any sequence type 750conversions will be made: If @var{type} is any sequence type
751(@code{string}, @code{list}, etc.) then @var{object} will be 751(@code{string}, @code{list}, etc.)@: then @var{object} will be
752converted to that type if possible. If @var{type} is 752converted to that type if possible. If @var{type} is
753@code{character}, then strings of length one and symbols with 753@code{character}, then strings of length one and symbols with
754one-character names can be coerced. If @var{type} is @code{float}, 754one-character names can be coerced. If @var{type} is @code{float},
diff --git a/doc/misc/dired-x.texi b/doc/misc/dired-x.texi
index 2cf25641350..1e3d11f6dc6 100644
--- a/doc/misc/dired-x.texi
+++ b/doc/misc/dired-x.texi
@@ -882,7 +882,7 @@ Dired buffers, is like @code{shell-command}, but it runs with
882 882
883@file{dired-x} provides a method of visiting or editing a file mentioned in 883@file{dired-x} provides a method of visiting or editing a file mentioned in
884the buffer you are viewing (e.g., a mail buffer, a news article, a 884the buffer you are viewing (e.g., a mail buffer, a news article, a
885@file{README} file, etc.) or to test if that file exists. You can then modify 885@file{README} file, etc.)@: or to test if that file exists. You can then modify
886this in the minibuffer after snatching the file name. 886this in the minibuffer after snatching the file name.
887 887
888When installed @file{dired-x} will substitute @code{dired-x-find-file} for 888When installed @file{dired-x} will substitute @code{dired-x-find-file} for
diff --git a/doc/misc/ede.texi b/doc/misc/ede.texi
index ddee7e6b5d5..f2e787fd588 100644
--- a/doc/misc/ede.texi
+++ b/doc/misc/ede.texi
@@ -1050,7 +1050,7 @@ other options for that project. The configuration is saved in
1050 1050
1051Generic projects are disabled by default because they have the 1051Generic projects are disabled by default because they have the
1052potential to interfere with other projects. To use the generic 1052potential to interfere with other projects. To use the generic
1053project sytem to start detecting projects, you need to enable it. 1053project system to start detecting projects, you need to enable it.
1054 1054
1055@deffn Command ede-enable-generic-projects 1055@deffn Command ede-enable-generic-projects
1056Enable generic project loaders. 1056Enable generic project loaders.
@@ -1956,7 +1956,7 @@ Type: @code{list} @*
1956Default Value: @code{(quote ("/include" "../include/"))} 1956Default Value: @code{(quote ("/include" "../include/"))}
1957 1957
1958The default locate function expands filenames within a project. 1958The default locate function expands filenames within a project.
1959If a header file (.h, .hh, etc) name is expanded, and 1959If a header file (.h, .hh, etc.)@: name is expanded, and
1960the @code{:locate-fcn} slot is @code{nil}, then the include path is checked 1960the @code{:locate-fcn} slot is @code{nil}, then the include path is checked
1961first, and other directories are ignored. For very large 1961first, and other directories are ignored. For very large
1962projects, this optimization can save a lot of time. 1962projects, this optimization can save a lot of time.
diff --git a/doc/misc/ediff.texi b/doc/misc/ediff.texi
index 1e4c888a9e7..378eee08c51 100644
--- a/doc/misc/ediff.texi
+++ b/doc/misc/ediff.texi
@@ -1148,7 +1148,7 @@ packages also use this method).
1148Regular files are treated by the @code{patch} utility in the usual manner, 1148Regular files are treated by the @code{patch} utility in the usual manner,
1149i.e., the original is renamed into @file{source-name.orig} and the result 1149i.e., the original is renamed into @file{source-name.orig} and the result
1150of the patch is placed into the file source-name (@file{_orig} is used 1150of the patch is placed into the file source-name (@file{_orig} is used
1151on systems like DOS, etc.) 1151on systems like DOS, etc.).
1152 1152
1153@node Customization 1153@node Customization
1154@chapter Customization 1154@chapter Customization
diff --git a/doc/misc/emacs-mime.texi b/doc/misc/emacs-mime.texi
index 216e4733cd1..b1cf40aa645 100644
--- a/doc/misc/emacs-mime.texi
+++ b/doc/misc/emacs-mime.texi
@@ -993,7 +993,7 @@ Customization}).
993The charset to be used can be overridden by setting the @code{charset} 993The charset to be used can be overridden by setting the @code{charset}
994@acronym{MML} tag (@pxref{MML Definition}) when composing the message. 994@acronym{MML} tag (@pxref{MML Definition}) when composing the message.
995 995
996The encoding of characters (quoted-printable, 8bit etc) is orthogonal 996The encoding of characters (quoted-printable, 8bit, etc.)@: is orthogonal
997to the discussion here, and is controlled by the variables 997to the discussion here, and is controlled by the variables
998@code{mm-body-charset-encoding-alist} and 998@code{mm-body-charset-encoding-alist} and
999@code{mm-content-transfer-encoding-defaults} (@pxref{Encoding 999@code{mm-content-transfer-encoding-defaults} (@pxref{Encoding
diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi
index 9825c90dd81..94093dc15ce 100644
--- a/doc/misc/eshell.texi
+++ b/doc/misc/eshell.texi
@@ -625,7 +625,7 @@ string-manipulation expansions because the Elisp library already
625provides many functions for this.} For example, @code{$var} on a line 625provides many functions for this.} For example, @code{$var} on a line
626expands to the value of the variable @code{var} when the line is 626expands to the value of the variable @code{var} when the line is
627executed. Expansions are usually passed as arguments, but may also be 627executed. Expansions are usually passed as arguments, but may also be
628used as commands.@footnote{e.g. Entering just @samp{$var} at the prompt 628used as commands.@footnote{E.g., entering just @samp{$var} at the prompt
629is equivalent to entering the value of @code{var} at the prompt.} 629is equivalent to entering the value of @code{var} at the prompt.}
630 630
631@menu 631@menu
@@ -1158,7 +1158,7 @@ it).
1158@item Make the shell spawning commands be visual 1158@item Make the shell spawning commands be visual
1159 1159
1160That is, make (@command{su}, @command{bash}, @command{telnet}, 1160That is, make (@command{su}, @command{bash}, @command{telnet},
1161@command{rlogin}, @command{rsh}, etc.) be part of 1161@command{rlogin}, @command{rsh}, etc.)@: be part of
1162@code{eshell-visual-commands}. The only exception is if the shell is 1162@code{eshell-visual-commands}. The only exception is if the shell is
1163being used to invoke a single command. Then, the behavior should be 1163being used to invoke a single command. Then, the behavior should be
1164based on what that command is. 1164based on what that command is.
diff --git a/doc/misc/faq.texi b/doc/misc/faq.texi
index 8f3c0c2d623..39b4a9037bd 100644
--- a/doc/misc/faq.texi
+++ b/doc/misc/faq.texi
@@ -1909,7 +1909,7 @@ following line to your @file{.emacs}:
1909where @var{syntactic-symbol} is the name Emacs shows in the minibuffer 1909where @var{syntactic-symbol} is the name Emacs shows in the minibuffer
1910when you type @kbd{C-c C-o} at the beginning of the line, and 1910when you type @kbd{C-c C-o} at the beginning of the line, and
1911@var{offset} is one of the indentation symbols listed above (@code{+}, 1911@var{offset} is one of the indentation symbols listed above (@code{+},
1912@code{/}, @code{0}, etc.) that you've chosen during the interactive 1912@code{/}, @code{0}, etc.)@: that you've chosen during the interactive
1913procedure. 1913procedure.
1914 1914
1915@item 1915@item
diff --git a/doc/misc/flymake.texi b/doc/misc/flymake.texi
index 1807f108e3b..79259a76503 100644
--- a/doc/misc/flymake.texi
+++ b/doc/misc/flymake.texi
@@ -64,7 +64,7 @@ modify this GNU manual.''
64 64
65Flymake is a universal on-the-fly syntax checker implemented as an 65Flymake is a universal on-the-fly syntax checker implemented as an
66Emacs minor mode. Flymake runs the pre-configured syntax check tool 66Emacs minor mode. Flymake runs the pre-configured syntax check tool
67(compiler for C++ files, @code{perl} for perl files, etc.) in the 67(compiler for C++ files, @code{perl} for perl files, etc.)@: in the
68background, passing it a temporary copy of the current buffer, and 68background, passing it a temporary copy of the current buffer, and
69parses the output for known error/warning message patterns. Flymake 69parses the output for known error/warning message patterns. Flymake
70then highlights erroneous lines (i.e., lines for which at least one 70then highlights erroneous lines (i.e., lines for which at least one
@@ -569,7 +569,7 @@ These modes are handled inside init/cleanup/getfname functions, see
569Flymake contains implementations of all functionality required to 569Flymake contains implementations of all functionality required to
570support different syntax check modes described above (making temporary 570support different syntax check modes described above (making temporary
571copies, finding master files, etc.), as well as some tool-specific 571copies, finding master files, etc.), as well as some tool-specific
572(routines for Make, Ant, etc.) code. 572(routines for Make, Ant, etc.)@: code.
573 573
574 574
575@node Making a temporary copy 575@node Making a temporary copy
diff --git a/doc/misc/forms.texi b/doc/misc/forms.texi
index 43ffab26c9b..17b117be961 100644
--- a/doc/misc/forms.texi
+++ b/doc/misc/forms.texi
@@ -117,7 +117,7 @@ they make up a forms.
117 117
118The contents of the forms consist of the contents of the fields of the 118The contents of the forms consist of the contents of the fields of the
119record (e.g., @samp{root}, @samp{0}, @samp{1}, @samp{Super User}) 119record (e.g., @samp{root}, @samp{0}, @samp{1}, @samp{Super User})
120interspersed with normal text (e.g @samp{User : }, @samp{Uid: }). 120interspersed with normal text (e.g., @samp{User : }, @samp{Uid: }).
121 121
122If you modify the contents of the fields, Forms mode will analyze your 122If you modify the contents of the fields, Forms mode will analyze your
123changes and update the file appropriately. You cannot modify the 123changes and update the file appropriately. You cannot modify the
diff --git a/doc/misc/gnus-faq.texi b/doc/misc/gnus-faq.texi
index 2a1f5ac2cc1..e7367730040 100644
--- a/doc/misc/gnus-faq.texi
+++ b/doc/misc/gnus-faq.texi
@@ -1218,7 +1218,7 @@ from using them):
1218 messages? 1218 messages?
1219* FAQ 5-3:: How to set stuff like From, Organization, Reply-To, 1219* FAQ 5-3:: How to set stuff like From, Organization, Reply-To,
1220 signature...? 1220 signature...?
1221* FAQ 5-4:: Can I set things like From, Signature etc group based on 1221* FAQ 5-4:: Can I set things like From, Signature etc. group based on
1222 the group I post too? 1222 the group I post too?
1223* FAQ 5-5:: Is there a spell-checker? Perhaps even on-the-fly 1223* FAQ 5-5:: Is there a spell-checker? Perhaps even on-the-fly
1224 spell-checking? 1224 spell-checking?
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index b5029e5d6a8..65e2ce6150e 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -2348,8 +2348,8 @@ Gnus considers groups from levels 1 to
2348unsubscribed, @code{gnus-level-zombie} to be zombies (walking dead) 2348unsubscribed, @code{gnus-level-zombie} to be zombies (walking dead)
2349(default 8) and @code{gnus-level-killed} to be killed (completely dead) 2349(default 8) and @code{gnus-level-killed} to be killed (completely dead)
2350(default 9). Gnus treats subscribed and unsubscribed groups exactly the 2350(default 9). Gnus treats subscribed and unsubscribed groups exactly the
2351same, but zombie and killed groups have no information on what articles 2351same, but zombie and killed groups store no information on what articles
2352you have read, etc, stored. This distinction between dead and living 2352you have read, etc. This distinction between dead and living
2353groups isn't done because it is nice or clever, it is done purely for 2353groups isn't done because it is nice or clever, it is done purely for
2354reasons of efficiency. 2354reasons of efficiency.
2355 2355
@@ -11140,7 +11140,7 @@ There will never be more than one dead summary buffer at any one time.
11140 11140
11141@vindex gnus-use-cross-reference 11141@vindex gnus-use-cross-reference
11142The data on the current group will be updated (which articles you have 11142The data on the current group will be updated (which articles you have
11143read, which articles you have replied to, etc.) when you exit the 11143read, which articles you have replied to, etc.)@: when you exit the
11144summary buffer. If the @code{gnus-use-cross-reference} variable is 11144summary buffer. If the @code{gnus-use-cross-reference} variable is
11145@code{t} (which is the default), articles that are cross-referenced to 11145@code{t} (which is the default), articles that are cross-referenced to
11146this group and are marked as read, will also be marked as read in the 11146this group and are marked as read, will also be marked as read in the
@@ -14022,7 +14022,7 @@ The address of the @acronym{NNTP} server.
14022Port number to connect to the @acronym{NNTP} server. The default is 14022Port number to connect to the @acronym{NNTP} server. The default is
14023@samp{nntp}. If you use @acronym{NNTP} over 14023@samp{nntp}. If you use @acronym{NNTP} over
14024@acronym{TLS}/@acronym{SSL}, you may want to use integer ports rather 14024@acronym{TLS}/@acronym{SSL}, you may want to use integer ports rather
14025than named ports (i.e, use @samp{563} instead of @samp{snews} or 14025than named ports (i.e., use @samp{563} instead of @samp{snews} or
14026@samp{nntps}), because external @acronym{TLS}/@acronym{SSL} tools may 14026@samp{nntps}), because external @acronym{TLS}/@acronym{SSL} tools may
14027not work with named ports. 14027not work with named ports.
14028 14028
@@ -19019,7 +19019,7 @@ agent as unread.
19019@subsection Agent and flags 19019@subsection Agent and flags
19020 19020
19021The Agent works with any Gnus back end including those, such as 19021The Agent works with any Gnus back end including those, such as
19022nnimap, that store flags (read, ticked, etc) on the server. Sadly, 19022nnimap, that store flags (read, ticked, etc.)@: on the server. Sadly,
19023the Agent does not actually know which backends keep their flags in 19023the Agent does not actually know which backends keep their flags in
19024the backend server rather than in @file{.newsrc}. This means that the 19024the backend server rather than in @file{.newsrc}. This means that the
19025Agent, while unplugged or disconnected, will always record all changes 19025Agent, while unplugged or disconnected, will always record all changes
@@ -19995,7 +19995,7 @@ the article was posted from. Time zones are such wholesome fun for the
19995whole family, eh?) 19995whole family, eh?)
19996 19996
19997@item Head, Body, All 19997@item Head, Body, All
19998These three match keys use the same match types as the @code{From} (etc) 19998These three match keys use the same match types as the @code{From} (etc.)@:
19999header uses. 19999header uses.
20000 20000
20001@item Followup 20001@item Followup
@@ -23816,7 +23816,7 @@ from Bulgarian IPs.
23816 23816
23817This, unfortunately, is a great way to discard legitimate e-mail. The 23817This, unfortunately, is a great way to discard legitimate e-mail. The
23818risks of blocking a whole country (Bulgaria, Norway, Nigeria, China, 23818risks of blocking a whole country (Bulgaria, Norway, Nigeria, China,
23819etc.) or even a continent (Asia, Africa, Europe, etc.) from contacting 23819etc.)@: or even a continent (Asia, Africa, Europe, etc.)@: from contacting
23820you should be obvious, so don't do it if you have the choice. 23820you should be obvious, so don't do it if you have the choice.
23821 23821
23822In another instance, the very informative and useful RISKS digest has 23822In another instance, the very informative and useful RISKS digest has
@@ -25869,7 +25869,7 @@ Fortunately, setting up the Gnus registry is pretty easy:
25869 25869
25870This adds registry saves to Gnus newsrc saves (which happen on exit 25870This adds registry saves to Gnus newsrc saves (which happen on exit
25871and when you press @kbd{s} from the @code{*Group*} buffer. It also 25871and when you press @kbd{s} from the @code{*Group*} buffer. It also
25872adds registry calls to article actions in Gnus (copy, move, etc.) so 25872adds registry calls to article actions in Gnus (copy, move, etc.)@: so
25873it's not easy to undo the initialization. See 25873it's not easy to undo the initialization. See
25874@code{gnus-registry-initialize} for the gory details. 25874@code{gnus-registry-initialize} for the gory details.
25875 25875
@@ -27946,7 +27946,7 @@ consist of a little new content at the top with a long, untrimmed
27946message cited below. 27946message cited below.
27947 27947
27948@item 27948@item
27949Smileys (@samp{:-)}, @samp{;-)} etc) are now displayed graphically in 27949Smileys (@samp{:-)}, @samp{;-)} etc.)@: are now displayed graphically in
27950Emacs too. 27950Emacs too.
27951 27951
27952Put @code{(setq gnus-treat-display-smileys nil)} in @file{~/.gnus.el} to 27952Put @code{(setq gnus-treat-display-smileys nil)} in @file{~/.gnus.el} to
@@ -28552,7 +28552,7 @@ A mail message or news article
28552 28552
28553@item head 28553@item head
28554@cindex head 28554@cindex head
28555The top part of a message, where administrative information (etc.) is 28555The top part of a message, where administrative information (etc.)@: is
28556put. 28556put.
28557 28557
28558@item body 28558@item body
@@ -29501,7 +29501,7 @@ There should be no result data from this function.
29501@item (nnchoke-request-set-mark GROUP ACTION &optional SERVER) 29501@item (nnchoke-request-set-mark GROUP ACTION &optional SERVER)
29502 29502
29503Set/remove/add marks on articles. Normally Gnus handles the article 29503Set/remove/add marks on articles. Normally Gnus handles the article
29504marks (such as read, ticked, expired etc) internally, and store them in 29504marks (such as read, ticked, expired etc.)@: internally, and store them in
29505@file{~/.newsrc.eld}. Some back ends (such as @acronym{IMAP}) however carry 29505@file{~/.newsrc.eld}. Some back ends (such as @acronym{IMAP}) however carry
29506all information about the articles on the server, so Gnus need to 29506all information about the articles on the server, so Gnus need to
29507propagate the mark information to the server. 29507propagate the mark information to the server.
diff --git a/doc/misc/idlwave.texi b/doc/misc/idlwave.texi
index a756cc6b6c6..a432d4dc14a 100644
--- a/doc/misc/idlwave.texi
+++ b/doc/misc/idlwave.texi
@@ -2182,8 +2182,8 @@ operators (outside of strings and comments, of course), try this in
2182@end lisp 2182@end lisp
2183 2183
2184Note that the modified assignment operators which begin with a word 2184Note that the modified assignment operators which begin with a word
2185(@samp{AND=}, @samp{OR=}, @samp{NOT=}, etc.) require a leading space to 2185(@samp{AND=}, @samp{OR=}, @samp{NOT=}, etc.)@: require a leading space to
2186be recognized (e.g @code{vAND=4} would be interpreted as a variable 2186be recognized (e.g., @code{vAND=4} would be interpreted as a variable
2187@code{vAND}). Also note that since, e.g., @code{>} and @code{>=} are 2187@code{vAND}). Also note that since, e.g., @code{>} and @code{>=} are
2188both valid operators, it is impossible to surround both by blanks while 2188both valid operators, it is impossible to surround both by blanks while
2189they are being typed. Similarly with @code{&} and @code{&&}. For 2189they are being typed. Similarly with @code{&} and @code{&&}. For
@@ -2195,7 +2195,7 @@ repad everything if @code{idlwave-do-actions} is on).
2195@defopt idlwave-surround-by-blank (@code{nil}) 2195@defopt idlwave-surround-by-blank (@code{nil})
2196Non-@code{nil} means enable @code{idlwave-surround}. If non-@code{nil}, 2196Non-@code{nil} means enable @code{idlwave-surround}. If non-@code{nil},
2197@samp{=}, @samp{<}, @samp{>}, @samp{&}, @samp{,}, @samp{->}, and the 2197@samp{=}, @samp{<}, @samp{>}, @samp{&}, @samp{,}, @samp{->}, and the
2198modified assignment operators (@samp{AND=}, @samp{OR=}, etc.) are 2198modified assignment operators (@samp{AND=}, @samp{OR=}, etc.)@: are
2199surrounded with spaces by @code{idlwave-surround}. 2199surrounded with spaces by @code{idlwave-surround}.
2200@end defopt 2200@end defopt
2201 2201
diff --git a/doc/misc/message.texi b/doc/misc/message.texi
index 0e0bd115bb2..a98c7e48e53 100644
--- a/doc/misc/message.texi
+++ b/doc/misc/message.texi
@@ -1817,17 +1817,14 @@ a string nor @code{nil}, use the user name only. However, it is highly
1817unlikely that you should need to fiddle with this variable at all. 1817unlikely that you should need to fiddle with this variable at all.
1818@end table 1818@end table
1819 1819
1820@findex yow
1821@cindex Mime-Version 1820@cindex Mime-Version
1822In addition, you can enter conses into this list. The @sc{car} of this cons 1821In addition, you can enter conses into this list. The @sc{car} of this cons
1823should be a symbol. This symbol's name is the name of the header, and 1822should be a symbol. This symbol's name is the name of the header, and
1824the @sc{cdr} can either be a string to be entered verbatim as the value of 1823the @sc{cdr} can either be a string to be entered verbatim as the value of
1825this header, or it can be a function to be called. This function should 1824this header, or it can be a function to be called. This function should
1826return a string to be inserted. For instance, if you want to insert 1825take no arguments, and return a string to be inserted. For
1827@code{Mime-Version: 1.0}, you should enter @code{(Mime-Version . "1.0")} 1826instance, if you want to insert @code{Mime-Version: 1.0}, you should
1828into the list. If you want to insert a funny quote, you could enter 1827enter @code{(Mime-Version . "1.0")} into the list.
1829something like @code{(X-Yow . yow)} into the list. The function
1830@code{yow} will then be called without any arguments.
1831 1828
1832If the list contains a cons where the @sc{car} of the cons is 1829If the list contains a cons where the @sc{car} of the cons is
1833@code{optional}, the @sc{cdr} of this cons will only be inserted if it is 1830@code{optional}, the @sc{cdr} of this cons will only be inserted if it is
@@ -2344,7 +2341,7 @@ Valid values include:
2344@table @code 2341@table @code
2345@item nil 2342@item nil
2346Generate the buffer name in the Message way (e.g., *mail*, *news*, *mail 2343Generate the buffer name in the Message way (e.g., *mail*, *news*, *mail
2347to whom*, *news on group*, etc.) and continue editing in the existing 2344to whom*, *news on group*, etc.)@: and continue editing in the existing
2348buffer of that name. If there is no such buffer, it will be newly 2345buffer of that name. If there is no such buffer, it will be newly
2349created. 2346created.
2350 2347
diff --git a/doc/misc/org.texi b/doc/misc/org.texi
index 7b880fc386c..16015e49362 100644
--- a/doc/misc/org.texi
+++ b/doc/misc/org.texi
@@ -1426,7 +1426,7 @@ level).
1426Move subtree down (swap with next subtree of same level). 1426Move subtree down (swap with next subtree of same level).
1427@orgcmd{M-h,org-mark-element} 1427@orgcmd{M-h,org-mark-element}
1428Mark the element at point. Hitting repeatedly will mark subsequent elements 1428Mark the element at point. Hitting repeatedly will mark subsequent elements
1429of the one just marked. E.g. hitting @key{M-h} on a paragraph will mark it, 1429of the one just marked. E.g., hitting @key{M-h} on a paragraph will mark it,
1430hitting @key{M-h} immediately again will mark the next one. 1430hitting @key{M-h} immediately again will mark the next one.
1431@orgcmd{C-c @@,org-mark-subtree} 1431@orgcmd{C-c @@,org-mark-subtree}
1432Mark the subtree at point. Hitting repeatedly will mark subsequent subtrees 1432Mark the subtree at point. Hitting repeatedly will mark subsequent subtrees
@@ -2439,7 +2439,7 @@ You may reference a rectangular range of fields by specifying two field
2439references connected by two dots @samp{..}. If both fields are in the 2439references connected by two dots @samp{..}. If both fields are in the
2440current row, you may simply use @samp{$2..$7}, but if at least one field 2440current row, you may simply use @samp{$2..$7}, but if at least one field
2441is in a different row, you need to use the general @code{@@row$column} 2441is in a different row, you need to use the general @code{@@row$column}
2442format at least for the first field (i.e the reference must start with 2442format at least for the first field (i.e., the reference must start with
2443@samp{@@} in order to be interpreted correctly). Examples: 2443@samp{@@} in order to be interpreted correctly). Examples:
2444 2444
2445@example 2445@example
@@ -11990,7 +11990,7 @@ resource or resource node which is known to TaskJuggler, such as
11990@samp{efficiency}, @samp{journalentry}, @samp{rate} for resources or 11990@samp{efficiency}, @samp{journalentry}, @samp{rate} for resources or
11991@samp{account}, @samp{start}, @samp{note}, @samp{duration}, @samp{end}, 11991@samp{account}, @samp{start}, @samp{note}, @samp{duration}, @samp{end},
11992@samp{journalentry}, @samp{milestone}, @samp{reference}, @samp{responsible}, 11992@samp{journalentry}, @samp{milestone}, @samp{reference}, @samp{responsible},
11993@samp{scheduling}, etc for tasks. 11993@samp{scheduling}, etc.@: for tasks.
11994 11994
11995@subsection Dependencies 11995@subsection Dependencies
11996 11996
diff --git a/doc/misc/reftex.texi b/doc/misc/reftex.texi
index 0ee206b1a4d..312b84146fa 100644
--- a/doc/misc/reftex.texi
+++ b/doc/misc/reftex.texi
@@ -647,7 +647,7 @@ buffer.
647@vindex reftex-toc-max-level 647@vindex reftex-toc-max-level
648Change the maximum level of toc entries displayed in the @file{*toc*} 648Change the maximum level of toc entries displayed in the @file{*toc*}
649buffer. Without prefix arg, all levels will be included. With prefix 649buffer. Without prefix arg, all levels will be included. With prefix
650arg (e.g @kbd{3 t}), ignore all toc entries with level greater than 650arg (e.g., @kbd{3 t}), ignore all toc entries with level greater than
651@var{arg} (3 in this case). Chapters are level 1, sections are level 2. 651@var{arg} (3 in this case). Chapters are level 1, sections are level 2.
652The mode line @samp{T<>} indicator shows the current value. The default 652The mode line @samp{T<>} indicator shows the current value. The default
653depth can be configured with the variable 653depth can be configured with the variable
@@ -3501,7 +3501,7 @@ make use of this feature, try
3501@item 3501@item
3502@b{@LaTeX{} commands}@* 3502@b{@LaTeX{} commands}@*
3503@cindex LaTeX commands, not found 3503@cindex LaTeX commands, not found
3504@code{\input}, @code{\include}, and @code{\section} (etc.) statements 3504@code{\input}, @code{\include}, and @code{\section} (etc.)@: statements
3505have to be first on a line (except for white space). 3505have to be first on a line (except for white space).
3506 3506
3507@item 3507@item
diff --git a/doc/misc/remember.texi b/doc/misc/remember.texi
index c70b6212268..290c18a7b47 100644
--- a/doc/misc/remember.texi
+++ b/doc/misc/remember.texi
@@ -169,7 +169,7 @@ typing it into a buffer, or using the contents of the selected region,
169it will store that data---unindexed, uninterpreted---in a data pool. 169it will store that data---unindexed, uninterpreted---in a data pool.
170It will also try to remember as much context information as possible 170It will also try to remember as much context information as possible
171(any text properties that were set, where you copied it from, when, 171(any text properties that were set, where you copied it from, when,
172how, etc). Later, you can walk through your accumulated set of data 172how, etc.). Later, you can walk through your accumulated set of data
173(both organized, and unorganized) and easily begin moving things 173(both organized, and unorganized) and easily begin moving things
174around, and making annotations that will express the full meaning of 174around, and making annotations that will express the full meaning of
175that data, as far as you know it. 175that data, as far as you know it.
diff --git a/doc/misc/ses.texi b/doc/misc/ses.texi
index ce75f2ef91e..20bd689c6a0 100644
--- a/doc/misc/ses.texi
+++ b/doc/misc/ses.texi
@@ -901,7 +901,7 @@ Begins with an 014 character, followed by sets of cell-definition
901macros for each row, followed by column-widths, column-printers, 901macros for each row, followed by column-widths, column-printers,
902default-printer, and header-row. Then there's the global parameters 902default-printer, and header-row. Then there's the global parameters
903(file-format ID, numrows, numcols) and the local variables (specifying 903(file-format ID, numrows, numcols) and the local variables (specifying
904@acronym{SES} mode for the buffer, etc.) 904@acronym{SES} mode for the buffer, etc.).
905 905
906When a @acronym{SES} file is loaded, first the numrows and numcols values are 906When a @acronym{SES} file is loaded, first the numrows and numcols values are
907loaded, then the entire data area is @code{eval}ed, and finally the local 907loaded, then the entire data area is @code{eval}ed, and finally the local
diff --git a/doc/misc/sieve.texi b/doc/misc/sieve.texi
index cbcd6a61f39..b84c3047ec1 100644
--- a/doc/misc/sieve.texi
+++ b/doc/misc/sieve.texi
@@ -159,7 +159,7 @@ press RET on <new script> to create a new script.
159@end example 159@end example
160 160
161One of the scripts are highlighted, and standard point navigation 161One of the scripts are highlighted, and standard point navigation
162commands (@kbd{<up>}, @kbd{<down>} etc) can be used to navigate the 162commands (@kbd{<up>}, @kbd{<down>} etc.)@: can be used to navigate the
163list. 163list.
164 164
165The following commands are available in the Manage Sieve buffer: 165The following commands are available in the Manage Sieve buffer:
diff --git a/doc/misc/speedbar.texi b/doc/misc/speedbar.texi
index c017490d4aa..7227e2597ae 100644
--- a/doc/misc/speedbar.texi
+++ b/doc/misc/speedbar.texi
@@ -1158,7 +1158,7 @@ the next line.
1158Create a tag line with @var{exp-button-type} for the small expansion 1158Create a tag line with @var{exp-button-type} for the small expansion
1159button. This is the button that expands or contracts a node (if 1159button. This is the button that expands or contracts a node (if
1160applicable), and @var{exp-button-char} the character in it (@samp{+}, 1160applicable), and @var{exp-button-char} the character in it (@samp{+},
1161@samp{-}, @samp{?}, etc). @var{exp-button-function} is the function 1161@samp{-}, @samp{?}, etc.). @var{exp-button-function} is the function
1162to call if it's clicked on. Button types are @code{bracket}, 1162to call if it's clicked on. Button types are @code{bracket},
1163@code{angle}, @code{curly}, @code{expandtag}, @code{statictag}, and 1163@code{angle}, @code{curly}, @code{expandtag}, @code{statictag}, and
1164@code{nil}. @var{exp-button-data} is extra data attached to the text 1164@code{nil}. @var{exp-button-data} is extra data attached to the text
@@ -1167,7 +1167,7 @@ forming the expansion button.
1167Next, @var{tag-button} is the text of the tag. 1167Next, @var{tag-button} is the text of the tag.
1168@var{tag-button-function} is the function to call if clicked on, and 1168@var{tag-button-function} is the function to call if clicked on, and
1169@var{tag-button-data} is the data to attach to the text field (such a 1169@var{tag-button-data} is the data to attach to the text field (such a
1170tag positioning, etc). @var{tag-button-face} is a face used for this 1170tag positioning, etc.). @var{tag-button-face} is a face used for this
1171type of tag. 1171type of tag.
1172 1172
1173Lastly, @var{depth} shows the depth of expansion. 1173Lastly, @var{depth} shows the depth of expansion.
diff --git a/doc/misc/url.texi b/doc/misc/url.texi
index 9e9dbc0a77d..49f8f3f0959 100644
--- a/doc/misc/url.texi
+++ b/doc/misc/url.texi
@@ -890,7 +890,7 @@ containing the data cached for that URL.
890 890
891@c With a large cache of documents on the local disk, it can be very handy 891@c With a large cache of documents on the local disk, it can be very handy
892@c when traveling, or any other time the network connection is not active 892@c when traveling, or any other time the network connection is not active
893@c (a laptop with a dial-on-demand PPP connection, etc). Emacs/W3 can rely 893@c (a laptop with a dial-on-demand PPP connection, etc.). Emacs/W3 can rely
894@c solely on its cache, and avoid checking to see if the page has changed 894@c solely on its cache, and avoid checking to see if the page has changed
895@c on the remote server. In the case of a dial-on-demand PPP connection, 895@c on the remote server. In the case of a dial-on-demand PPP connection,
896@c this will keep the phone line free as long as possible, only bringing up 896@c this will keep the phone line free as long as possible, only bringing up
diff --git a/doc/misc/vip.texi b/doc/misc/vip.texi
index 01048d43dbf..7c998b37010 100644
--- a/doc/misc/vip.texi
+++ b/doc/misc/vip.texi
@@ -356,7 +356,7 @@ you can abort a partially formed command by typing @kbd{C-g}.@refill
356As in Vi, searching is done by @kbd{/} and @kbd{?}. The string will be 356As in Vi, searching is done by @kbd{/} and @kbd{?}. The string will be
357searched literally by default. To invoke a regular expression search, 357searched literally by default. To invoke a regular expression search,
358first execute the search command @kbd{/} (or @kbd{?}) with empty search 358first execute the search command @kbd{/} (or @kbd{?}) with empty search
359string. (I.e, type @kbd{/} followed by @key{RET}.) 359string. (I.e., type @kbd{/} followed by @key{RET}.)
360A search for empty string will toggle the search mode between vanilla 360A search for empty string will toggle the search mode between vanilla
361search and regular expression search. You cannot give an offset to the 361search and regular expression search. You cannot give an offset to the
362search string. (It is a limitation.) By default, search will wrap around 362search string. (It is a limitation.) By default, search will wrap around
diff --git a/doc/misc/viper.texi b/doc/misc/viper.texi
index 9bcecf8e3de..8b4c9e93f7c 100644
--- a/doc/misc/viper.texi
+++ b/doc/misc/viper.texi
@@ -3204,7 +3204,7 @@ and they don't look into the value of variable
3204syntax tables in order to not thwart the various major modes that set these 3204syntax tables in order to not thwart the various major modes that set these
3205tables. 3205tables.
3206 3206
3207The usual Emacs convention is used to indicate Control Characters, i.e 3207The usual Emacs convention is used to indicate Control Characters, i.e.,
3208C-h for Control-h. @emph{Do not confuse this with a sequence of separate 3208C-h for Control-h. @emph{Do not confuse this with a sequence of separate
3209characters 3209characters
3210C, -, h!!!} The @kbd{^} is itself, never used to indicate a 3210C, -, h!!!} The @kbd{^} is itself, never used to indicate a
diff --git a/doc/misc/woman.texi b/doc/misc/woman.texi
index 3e4448ed1e0..9b9f9947da5 100644
--- a/doc/misc/woman.texi
+++ b/doc/misc/woman.texi
@@ -904,7 +904,7 @@ for a man configuration file. The default is
904 904
905@noindent 905@noindent
906[for GNU/Linux and Cygwin respectively.] A trailing separator (@file{/} 906[for GNU/Linux and Cygwin respectively.] A trailing separator (@file{/}
907for UNIX etc.) on directories is optional and the filename matched if a 907for UNIX etc.)@: on directories is optional and the filename matched if a
908directory is specified is the first to match the regexp 908directory is specified is the first to match the regexp
909@code{man.*\.conf}. If the environment variable @code{MANPATH} is not 909@code{man.*\.conf}. If the environment variable @code{MANPATH} is not
910set but a configuration file is found then it is parsed instead (or as 910set but a configuration file is found then it is parsed instead (or as
diff --git a/etc/NEWS b/etc/NEWS
index bbee14d2ac9..770ebc17ac0 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -120,6 +120,10 @@ on the given date.
120 120
121*** Support for ISO 8601 dates. 121*** Support for ISO 8601 dates.
122 122
123** Dired
124
125*** New minor mode `dired-hide-details-mode' hides details.
126
123** ERC 127** ERC
124 128
125*** New option `erc-accidental-paste-threshold-seconds'. 129*** New option `erc-accidental-paste-threshold-seconds'.
@@ -201,6 +205,9 @@ are obsolete. Customize the `woman-* faces instead.
201 205
202*** terminal.el is obsolete; use term.el instead. 206*** terminal.el is obsolete; use term.el instead.
203 207
208+++
209*** yow.el is obsolete; use fortune.el or cookie1.el instead.
210
204 211
205* New Modes and Packages in Emacs 24.4 212* New Modes and Packages in Emacs 24.4
206** New nadvice.el package offering lighter-weight advice facilities. 213** New nadvice.el package offering lighter-weight advice facilities.
@@ -996,7 +1003,7 @@ are deprecated and will be removed eventually.
996*** `vc-checkout-carefully' 1003*** `vc-checkout-carefully'
997 1004
998 1005
999* Lisp changes in Emacs 24.3 1006* Lisp Changes in Emacs 24.3
1000 1007
1001** CL-style generalized variables are now in core Elisp. 1008** CL-style generalized variables are now in core Elisp.
1002`setf' is autoloaded; `push' and `pop' accept generalized variables. 1009`setf' is autoloaded; `push' and `pop' accept generalized variables.
@@ -1169,7 +1176,7 @@ takes precedence over most other maps for a short while (normally one key).
1169*** `font-list-limit' (has had no effect since Emacs < 23) 1176*** `font-list-limit' (has had no effect since Emacs < 23)
1170 1177
1171 1178
1172* Changes in Emacs 24.3 on non-free operating systems 1179* Changes in Emacs 24.3 on Non-Free Operating Systems
1173 1180
1174** Cygwin builds can use the native MS Windows user interface. 1181** Cygwin builds can use the native MS Windows user interface.
1175Pass `--with-w32' to configure. The default remains the X11 interface. 1182Pass `--with-w32' to configure. The default remains the X11 interface.
@@ -2241,7 +2248,7 @@ assumes every inspected file is in your `load-path'. It instead
2241generates relative names according to the current `load-path'. 2248generates relative names according to the current `load-path'.
2242 2249
2243 2250
2244* Lisp changes in Emacs 24.1 2251* Lisp Changes in Emacs 24.1
2245 2252
2246** Code can now use lexical scoping by default instead of dynamic scoping. 2253** Code can now use lexical scoping by default instead of dynamic scoping.
2247The `lexical-binding' variable enables lexical scoping for local 2254The `lexical-binding' variable enables lexical scoping for local
@@ -2628,7 +2635,7 @@ Use `post-command-hook' instead.
2628*** `font-lock-maximum-size' is obsolete. 2635*** `font-lock-maximum-size' is obsolete.
2629 2636
2630 2637
2631* Changes in Emacs 24.1 on non-free operating systems 2638* Changes in Emacs 24.1 on Non-Free Operating Systems
2632 2639
2633** On MS Windows, Emacs warns when using the obsolete init file _emacs, 2640** On MS Windows, Emacs warns when using the obsolete init file _emacs,
2634and also when HOME is set to C:\ by default. 2641and also when HOME is set to C:\ by default.
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 18c11debf0d..eb3f4f833f5 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,119 @@
12013-02-13 Michael Albinus <michael.albinus@gmx.de>
2
3 Use ControlMaster where applicable. (Bug#13677)
4
5 * net/tramp.el (tramp-ssh-controlmaster-template): New defvar,
6 replacing `tramp-detect-ssh-controlmaster'.
7 (tramp-default-method): Use it.
8
9 * net/tramp-sh.el (tramp-methods) [scp, scp1, scp2, scpx, sftp]:
10 [rsync, ssh, ssh1, ssh2, sshx]: Add ControlPath and ControlMaster
11 arguments.
12 [scpc, rsyncc]: Remove methods.
13 (top): Remove completion functions for "scpc", "rsyncc", "ssh1_old"
14 and "ssh2_old".
15 (tramp-do-copy-or-rename-file-out-of-band): Change trace level.
16 (tramp-maybe-open-connection): Reuse tmpfile for ControlPath.
17
182013-02-13 Stefan Monnier <monnier@iro.umontreal.ca>
19
20 * emacs-lisp/package.el (package--initialized): Move before first use.
21
222013-02-13 Jambunathan K <kjambunathan@gmail.com>
23
24 * icomplete.el (icomplete-hide-common-prefix): New user option.
25 (icomplete-first-match): New face.
26 (icomplete-completions): Correct handling of "complete but not
27 unique" (Bug#12638).
28
292013-02-13 YE Qianchuan <stool.ye@gmail.com> (tiny change)
30
31 * descr-text.el (describe-char): Display the script (bug#13698).
32
332013-02-13 Stefan Monnier <monnier@iro.umontreal.ca>
34
35 * tmm.el: Use lexical-binding and current-active-maps.
36 (tmm-menubar): Use map-keymap and pcase.
37 (tmm--completion-table): New function.
38 (tmm-prompt): Use it to fix the menu order.
39 (tmm-get-keybind): Use current-active-maps.
40
412013-02-12 Christopher Schmidt <christopher@ch.ristopher.com>
42
43 Add dired-hide-details-mode. (Bug#6799)
44
45 * locate.el (locate-mode): Set parent mode property to dired-mode.
46
47 * find-dired.el (find-dired): Call dired-insert-set-properties on
48 initial information line. Set process mark on end of buffer.
49 (find-dired-sentinel):
50 Call dired-insert-set-properties on summary.
51
52 * dired.el (dired-hide-details-hide-symlink-targets)
53 (dired-hide-details-hide-information-lines): New options.
54 (dired-insert-directory):
55 Set properties after final treatment of output.
56 (dired-insert-set-properties):
57 Set dired-hide-details-* properties.
58 (dired-mode-map): Bind dired-hide-details-mode.
59 (dired-mode): Set buffer-invisibility-spec to a list.
60 (dired-next-line): Skip hidden lines.
61 (dired-previous-line): Use dired-next-line.
62 (dired-hide-details-mode): New minor mode.
63 (dired-hide-details-update-invisibility-spec): New function.
64
652013-02-13 Glenn Morris <rgm@gnu.org>
66
67 * play/yow.el: Move to obsolete/. (Bug#9384)
68
692013-02-13 Juri Linkov <juri@jurta.org>
70
71 * vc/ediff-util.el (ediff-recenter): Use `select-frame-set-input-focus'
72 to select `ediff-control-frame' and set input focus correctly on Xfce.
73 (Bug#12218)
74
752013-02-13 Juri Linkov <juri@jurta.org>
76
77 * image-mode.el (image-mode-map):
78 * doc-view.el (doc-view-mode-map):
79 * vc/ediff-util.el (ediff-setup-keymap):
80 Make S-SPC scroll in the opposite sense to SPC. (Bug#2145)
81
822013-02-13 Dmitry Gutov <dgutov@yandex.ru>
83
84 * progmodes/ruby-mode.el (ruby-move-to-block): Improve
85 performance. Instead of recalculating indentation fully for each
86 line, sum up indentation depth based only on visited lines.
87 (ruby-parse-partial): Increase the depth after "do" even when END
88 is right after it.
89 (ruby-parse-partial): When END is in the middle of a percent
90 literal, increase the depth if the delimiter chars belong to the
91 paren syntax class.
92
932013-02-13 Kirill A. Korinskiy <catap@catap.ru>
94
95 * play/fortune.el (fortune-compile): Also make the compiled file
96 if it does not exist at all, not just if it is old. (Bug#5338)
97
982013-02-13 Glenn Morris <rgm@gnu.org>
99
100 * emacs-lisp/package.el (package-menu-execute): Doc fix.
101
1022013-02-13 Yves Baumes <ybaumes@gmail.com> (tiny change)
103
104 * lisp/emacs-lisp/package.el (package-menu-execute):
105 Add optional noquery argument. (Bug#13625)
106
1072013-02-13 Michael Albinus <michael.albinus@gmx.de>
108
109 * net/ange-ftp.el (ange-ftp-make-directory): Don't raise an error,
110 if DIR exists and PARENTS is non-nil.
111
1122013-02-13 Juanma Barranquero <lekktu@gmail.com>
113
114 * progmodes/js.el (js--multi-line-declaration-indentation):
115 Silence byte-compiler warning.
116
12013-02-12 Michael Albinus <michael.albinus@gmx.de> 1172013-02-12 Michael Albinus <michael.albinus@gmx.de>
2 118
3 * net/tramp-adb.el (tramp-adb-handle-start-file-process): Rewrite. 119 * net/tramp-adb.el (tramp-adb-handle-start-file-process): Rewrite.
diff --git a/lisp/descr-text.el b/lisp/descr-text.el
index b3f78780bd3..2aea0a96215 100644
--- a/lisp/descr-text.el
+++ b/lisp/descr-text.el
@@ -574,6 +574,9 @@ relevant to POS."
574 'help-echo 574 'help-echo
575 "mouse-2, RET: show this character in its character set") 575 "mouse-2, RET: show this character in its character set")
576 str))) 576 str)))
577 ,@(let ((script (aref char-script-table char)))
578 (if script
579 (list (list "script" (symbol-name script)))))
577 ("syntax" 580 ("syntax"
578 ,(let ((syntax (syntax-after pos))) 581 ,(let ((syntax (syntax-after pos)))
579 (with-temp-buffer 582 (with-temp-buffer
diff --git a/lisp/dired.el b/lisp/dired.el
index b5fc46eb78d..28045043c82 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -230,6 +230,18 @@ new dired buffers."
230 :version "22.1" 230 :version "22.1"
231 :group 'dired) 231 :group 'dired)
232 232
233(defcustom dired-hide-details-hide-symlink-targets t
234 "If non-nil, `dired-hide-details-mode' hides symbolic link targets."
235 :type 'boolean
236 :version "24.4"
237 :group 'dired)
238
239(defcustom dired-hide-details-hide-information-lines t
240 "Non-nil means hide lines other than header and file/dir lines."
241 :type 'boolean
242 :version "24.4"
243 :group 'dired)
244
233;; Internal variables 245;; Internal variables
234 246
235(defvar dired-marker-char ?* ; the answer is 42 247(defvar dired-marker-char ?* ; the answer is 42
@@ -1196,7 +1208,6 @@ see `dired-use-ls-dired' for more details.")
1196 ;; Note: adjust dired-build-subdir-alist if you change this. 1208 ;; Note: adjust dired-build-subdir-alist if you change this.
1197 (setq dir (replace-regexp-in-string "\\\\" "\\\\" dir nil t) 1209 (setq dir (replace-regexp-in-string "\\\\" "\\\\" dir nil t)
1198 dir (replace-regexp-in-string "\n" "\\n" dir nil t))) 1210 dir (replace-regexp-in-string "\n" "\\n" dir nil t)))
1199 (dired-insert-set-properties opoint (point))
1200 ;; If we used --dired and it worked, the lines are already indented. 1211 ;; If we used --dired and it worked, the lines are already indented.
1201 ;; Otherwise, indent them. 1212 ;; Otherwise, indent them.
1202 (unless (save-excursion 1213 (unless (save-excursion
@@ -1205,18 +1216,21 @@ see `dired-use-ls-dired' for more details.")
1205 (let ((indent-tabs-mode nil)) 1216 (let ((indent-tabs-mode nil))
1206 (indent-rigidly opoint (point) 2))) 1217 (indent-rigidly opoint (point) 2)))
1207 ;; Insert text at the beginning to standardize things. 1218 ;; Insert text at the beginning to standardize things.
1208 (save-excursion 1219 (let ((content-point opoint))
1209 (goto-char opoint) 1220 (save-excursion
1210 (if (and (or hdr wildcard) 1221 (goto-char opoint)
1211 (not (and (looking-at "^ \\(.*\\):$") 1222 (when (and (or hdr wildcard)
1212 (file-name-absolute-p (match-string 1))))) 1223 (not (and (looking-at "^ \\(.*\\):$")
1224 (file-name-absolute-p (match-string 1)))))
1213 ;; Note that dired-build-subdir-alist will replace the name 1225 ;; Note that dired-build-subdir-alist will replace the name
1214 ;; by its expansion, so it does not matter whether what we insert 1226 ;; by its expansion, so it does not matter whether what we insert
1215 ;; here is fully expanded, but it should be absolute. 1227 ;; here is fully expanded, but it should be absolute.
1216 (insert " " (directory-file-name (file-name-directory dir)) ":\n")) 1228 (insert " " (directory-file-name (file-name-directory dir)) ":\n")
1217 (when wildcard 1229 (setq content-point (point)))
1218 ;; Insert "wildcard" line where "total" line would be for a full dir. 1230 (when wildcard
1219 (insert " wildcard " (file-name-nondirectory dir) "\n"))))) 1231 ;; Insert "wildcard" line where "total" line would be for a full dir.
1232 (insert " wildcard " (file-name-nondirectory dir) "\n")))
1233 (dired-insert-set-properties content-point (point)))))
1220 1234
1221(defun dired-insert-set-properties (beg end) 1235(defun dired-insert-set-properties (beg end)
1222 "Add various text properties to the lines in the region." 1236 "Add various text properties to the lines in the region."
@@ -1224,15 +1238,24 @@ see `dired-use-ls-dired' for more details.")
1224 (goto-char beg) 1238 (goto-char beg)
1225 (while (< (point) end) 1239 (while (< (point) end)
1226 (condition-case nil 1240 (condition-case nil
1227 (if (dired-move-to-filename) 1241 (if (not (dired-move-to-filename))
1228 (add-text-properties 1242 (put-text-property (line-beginning-position)
1229 (point) 1243 (1+ (line-end-position))
1230 (save-excursion 1244 'invisible 'dired-hide-details-information)
1231 (dired-move-to-end-of-filename) 1245 (put-text-property (+ (line-beginning-position) 1) (1- (point))
1232 (point)) 1246 'invisible 'dired-hide-details-detail)
1233 '(mouse-face highlight 1247 (add-text-properties
1234 dired-filename t 1248 (point)
1235 help-echo "mouse-2: visit this file in other window"))) 1249 (progn
1250 (dired-move-to-end-of-filename)
1251 (point))
1252 '(mouse-face
1253 highlight
1254 dired-filename t
1255 help-echo "mouse-2: visit this file in other window"))
1256 (when (< (+ (point) 4) (line-end-position))
1257 (put-text-property (+ (point) 4) (line-end-position)
1258 'invisible 'dired-hide-details-link)))
1236 (error nil)) 1259 (error nil))
1237 (forward-line 1)))) 1260 (forward-line 1))))
1238 1261
@@ -1496,6 +1519,7 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST."
1496 ;; hiding 1519 ;; hiding
1497 (define-key map "$" 'dired-hide-subdir) 1520 (define-key map "$" 'dired-hide-subdir)
1498 (define-key map "\M-$" 'dired-hide-all) 1521 (define-key map "\M-$" 'dired-hide-all)
1522 (define-key map "(" 'dired-hide-details-mode)
1499 ;; isearch 1523 ;; isearch
1500 (define-key map (kbd "M-s a C-s") 'dired-do-isearch) 1524 (define-key map (kbd "M-s a C-s") 'dired-do-isearch)
1501 (define-key map (kbd "M-s a M-C-s") 'dired-do-isearch-regexp) 1525 (define-key map (kbd "M-s a M-C-s") 'dired-do-isearch-regexp)
@@ -1586,6 +1610,10 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST."
1586 '(menu-item "Toggle Image Thumbnails in This Buffer" image-dired-dired-toggle-marked-thumbs 1610 '(menu-item "Toggle Image Thumbnails in This Buffer" image-dired-dired-toggle-marked-thumbs
1587 :help "Add or remove image thumbnails in front of marked file names")) 1611 :help "Add or remove image thumbnails in front of marked file names"))
1588 1612
1613 (define-key map [menu-bar immediate hide-details]
1614 '(menu-item "Hide Details" dired-hide-details-mode
1615 :help "Hide details in buffer"
1616 :button (:toggle . dired-hide-details-mode)))
1589 (define-key map [menu-bar immediate revert-buffer] 1617 (define-key map [menu-bar immediate revert-buffer]
1590 '(menu-item "Refresh" revert-buffer 1618 '(menu-item "Refresh" revert-buffer
1591 :help "Update contents of shown directories")) 1619 :help "Update contents of shown directories"))
@@ -1914,6 +1942,9 @@ Keybindings:
1914 selective-display t ; for subdirectory hiding 1942 selective-display t ; for subdirectory hiding
1915 mode-line-buffer-identification 1943 mode-line-buffer-identification
1916 (propertized-buffer-identification "%17b")) 1944 (propertized-buffer-identification "%17b"))
1945 ;; Ignore dired-hide-details-* value of invisible text property by default.
1946 (when (eq buffer-invisibility-spec t)
1947 (setq buffer-invisibility-spec (list t)))
1917 (set (make-local-variable 'revert-buffer-function) 1948 (set (make-local-variable 'revert-buffer-function)
1918 (function dired-revert)) 1949 (function dired-revert))
1919 (set (make-local-variable 'buffer-stale-function) 1950 (set (make-local-variable 'buffer-stale-function)
@@ -1978,15 +2009,20 @@ Otherwise, call `toggle-read-only'."
1978 "Move down lines then position at filename. 2009 "Move down lines then position at filename.
1979Optional prefix ARG says how many lines to move; default is one line." 2010Optional prefix ARG says how many lines to move; default is one line."
1980 (interactive "p") 2011 (interactive "p")
1981 (forward-line arg) 2012 (let ((line-move-visual)
2013 (goal-column))
2014 (line-move arg t))
2015 ;; We never want to move point into an invisible line.
2016 (while (and (invisible-p (point))
2017 (not (if (and arg (< arg 0)) (bobp) (eobp))))
2018 (forward-char (if (and arg (< arg 0)) -1 1)))
1982 (dired-move-to-filename)) 2019 (dired-move-to-filename))
1983 2020
1984(defun dired-previous-line (arg) 2021(defun dired-previous-line (arg)
1985 "Move up lines then position at filename. 2022 "Move up lines then position at filename.
1986Optional prefix ARG says how many lines to move; default is one line." 2023Optional prefix ARG says how many lines to move; default is one line."
1987 (interactive "p") 2024 (interactive "p")
1988 (forward-line (- arg)) 2025 (dired-next-line (- (or arg 1))))
1989 (dired-move-to-filename))
1990 2026
1991(defun dired-next-dirline (arg &optional opoint) 2027(defun dired-next-dirline (arg &optional opoint)
1992 "Goto ARG'th next directory file line." 2028 "Goto ARG'th next directory file line."
@@ -2230,6 +2266,40 @@ unchanged."
2230 (substring file (match-end 0)) 2266 (substring file (match-end 0))
2231 file)) 2267 file))
2232 2268
2269;;; Minor mode for hiding details
2270;;;###autoload
2271(define-minor-mode dired-hide-details-mode
2272 "Hide details in `dired-mode'."
2273 :group 'dired
2274 (unless (derived-mode-p 'dired-mode)
2275 (error "Not a Dired buffer"))
2276 (dired-hide-details-update-invisibility-spec)
2277 (if dired-hide-details-mode
2278 (add-hook 'wdired-mode-hook
2279 'dired-hide-details-update-invisibility-spec
2280 nil
2281 t)
2282 (remove-hook 'wdired-mode-hook
2283 'dired-hide-details-update-invisibility-spec
2284 t)))
2285
2286(defun dired-hide-details-update-invisibility-spec ()
2287 (funcall (if dired-hide-details-mode
2288 'add-to-invisibility-spec
2289 'remove-from-invisibility-spec)
2290 'dired-hide-details-detail)
2291 (funcall (if (and dired-hide-details-mode
2292 dired-hide-details-hide-information-lines)
2293 'add-to-invisibility-spec
2294 'remove-from-invisibility-spec)
2295 'dired-hide-details-information)
2296 (funcall (if (and dired-hide-details-mode
2297 dired-hide-details-hide-symlink-targets
2298 (not (derived-mode-p 'wdired-mode)))
2299 'add-to-invisibility-spec
2300 'remove-from-invisibility-spec)
2301 'dired-hide-details-link))
2302
2233;;; Functions for finding the file name in a dired buffer line. 2303;;; Functions for finding the file name in a dired buffer line.
2234 2304
2235(defvar dired-permission-flags-regexp 2305(defvar dired-permission-flags-regexp
diff --git a/lisp/doc-view.el b/lisp/doc-view.el
index dcc28a52322..89d2edd3dbb 100644
--- a/lisp/doc-view.el
+++ b/lisp/doc-view.el
@@ -390,6 +390,7 @@ Typically \"page-%s.png\".")
390 (define-key map [remap forward-page] 'doc-view-next-page) 390 (define-key map [remap forward-page] 'doc-view-next-page)
391 (define-key map [remap backward-page] 'doc-view-previous-page) 391 (define-key map [remap backward-page] 'doc-view-previous-page)
392 (define-key map (kbd "SPC") 'doc-view-scroll-up-or-next-page) 392 (define-key map (kbd "SPC") 'doc-view-scroll-up-or-next-page)
393 (define-key map (kbd "S-SPC") 'doc-view-scroll-down-or-previous-page)
393 (define-key map (kbd "DEL") 'doc-view-scroll-down-or-previous-page) 394 (define-key map (kbd "DEL") 'doc-view-scroll-down-or-previous-page)
394 (define-key map (kbd "C-n") 'doc-view-next-line-or-next-page) 395 (define-key map (kbd "C-n") 'doc-view-next-line-or-next-page)
395 (define-key map (kbd "<down>") 'doc-view-next-line-or-next-page) 396 (define-key map (kbd "<down>") 'doc-view-next-line-or-next-page)
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index dd828691158..c15c9e079fe 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -735,6 +735,8 @@ It will move point to somewhere in the headers."
735 (package--with-work-buffer location file 735 (package--with-work-buffer location file
736 (package-unpack name version)))) 736 (package-unpack name version))))
737 737
738(defvar package--initialized nil)
739
738(defun package-installed-p (package &optional min-version) 740(defun package-installed-p (package &optional min-version)
739 "Return true if PACKAGE, of MIN-VERSION or newer, is installed. 741 "Return true if PACKAGE, of MIN-VERSION or newer, is installed.
740MIN-VERSION should be a version list." 742MIN-VERSION should be a version list."
@@ -896,8 +898,6 @@ using `package-compute-transaction'."
896 package-user-dir) 898 package-user-dir)
897 (package-activate elt (version-to-list v-string))))) 899 (package-activate elt (version-to-list v-string)))))
898 900
899(defvar package--initialized nil)
900
901;;;###autoload 901;;;###autoload
902(defun package-install (name) 902(defun package-install (name)
903 "Install the package named NAME. 903 "Install the package named NAME.
@@ -1591,10 +1591,11 @@ call will upgrade the package."
1591 (length upgrades) 1591 (length upgrades)
1592 (if (= (length upgrades) 1) "" "s"))))) 1592 (if (= (length upgrades) 1) "" "s")))))
1593 1593
1594(defun package-menu-execute () 1594(defun package-menu-execute (&optional noquery)
1595 "Perform marked Package Menu actions. 1595 "Perform marked Package Menu actions.
1596Packages marked for installation are downloaded and installed; 1596Packages marked for installation are downloaded and installed;
1597packages marked for deletion are removed." 1597packages marked for deletion are removed.
1598Optional argument NOQUERY non-nil means do not ask the user to confirm."
1598 (interactive) 1599 (interactive)
1599 (unless (derived-mode-p 'package-menu-mode) 1600 (unless (derived-mode-p 'package-menu-mode)
1600 (error "The current buffer is not in Package Menu mode")) 1601 (error "The current buffer is not in Package Menu mode"))
@@ -1614,16 +1615,20 @@ packages marked for deletion are removed."
1614 (push (car id) install-list)))) 1615 (push (car id) install-list))))
1615 (forward-line))) 1616 (forward-line)))
1616 (when install-list 1617 (when install-list
1617 (if (yes-or-no-p 1618 (if (or
1619 noquery
1620 (yes-or-no-p
1618 (if (= (length install-list) 1) 1621 (if (= (length install-list) 1)
1619 (format "Install package `%s'? " (car install-list)) 1622 (format "Install package `%s'? " (car install-list))
1620 (format "Install these %d packages (%s)? " 1623 (format "Install these %d packages (%s)? "
1621 (length install-list) 1624 (length install-list)
1622 (mapconcat 'symbol-name install-list ", ")))) 1625 (mapconcat 'symbol-name install-list ", ")))))
1623 (mapc 'package-install install-list))) 1626 (mapc 'package-install install-list)))
1624 ;; Delete packages, prompting if necessary. 1627 ;; Delete packages, prompting if necessary.
1625 (when delete-list 1628 (when delete-list
1626 (if (yes-or-no-p 1629 (if (or
1630 noquery
1631 (yes-or-no-p
1627 (if (= (length delete-list) 1) 1632 (if (= (length delete-list) 1)
1628 (format "Delete package `%s-%s'? " 1633 (format "Delete package `%s-%s'? "
1629 (caar delete-list) 1634 (caar delete-list)
@@ -1633,7 +1638,7 @@ packages marked for deletion are removed."
1633 (mapconcat (lambda (elt) 1638 (mapconcat (lambda (elt)
1634 (concat (car elt) "-" (cdr elt))) 1639 (concat (car elt) "-" (cdr elt)))
1635 delete-list 1640 delete-list
1636 ", ")))) 1641 ", ")))))
1637 (dolist (elt delete-list) 1642 (dolist (elt delete-list)
1638 (condition-case-unless-debug err 1643 (condition-case-unless-debug err
1639 (package-delete (car elt) (cdr elt)) 1644 (package-delete (car elt) (cdr elt))
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index 3245c31384a..f3d54782897 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -1,3 +1,7 @@
12013-02-13 Aidan Gauland <aidalgol@no8wireless.co.nz>
2
3 * erc-match.el (erc-match-message): Fix last commit.
4
12013-02-12 Aidan Gauland <aidalgol@no8wireless.co.nz> 52013-02-12 Aidan Gauland <aidalgol@no8wireless.co.nz>
2 6
3 * erc-match.el (erc-match-message): 7 * erc-match.el (erc-match-message):
diff --git a/lisp/erc/erc-match.el b/lisp/erc/erc-match.el
index 1da838557f7..63683890226 100644
--- a/lisp/erc/erc-match.el
+++ b/lisp/erc/erc-match.el
@@ -447,7 +447,7 @@ Use this defun with `erc-insert-modify-hook'."
447 (nth 0 (erc-parse-user nickuserhost)))) 447 (nth 0 (erc-parse-user nickuserhost))))
448 (old-pt (point)) 448 (old-pt (point))
449 (nick-beg (and nickname 449 (nick-beg (and nickname
450 (re-search-forward "\\(\\* \\)?"(regexp-quote nickname) 450 (re-search-forward (regexp-quote nickname)
451 (point-max) t) 451 (point-max) t)
452 (match-beginning 0))) 452 (match-beginning 0)))
453 (nick-end (when nick-beg 453 (nick-end (when nick-beg
@@ -455,14 +455,14 @@ Use this defun with `erc-insert-modify-hook'."
455 (message (buffer-substring 455 (message (buffer-substring
456 (if (and nick-end 456 (if (and nick-end
457 (<= (+ 2 nick-end) (point-max))) 457 (<= (+ 2 nick-end) (point-max)))
458 ;; Message starts 2 characters after the nick
459 ;; except for CTCP ACTION messages. Nick
460 ;; surrounded by angle brackets only in normal
461 ;; messages.
458 (+ nick-end 462 (+ nick-end
459 ;; Message starts 2 characters after the nick except 463 (if (eq ?> (char-after nick-end))
460 ;; for CTCP ACTION messages. 464 2
461 (if (string= "* " 465 1))
462 (buffer-substring (- nick-beg 2)
463 nick-beg))
464 1
465 2))
466 (point-min)) 466 (point-min))
467 (point-max)))) 467 (point-max))))
468 (when (and vector 468 (when (and vector
diff --git a/lisp/find-dired.el b/lisp/find-dired.el
index ae7cc1c8629..f9a0c015bf7 100644
--- a/lisp/find-dired.el
+++ b/lisp/find-dired.el
@@ -210,13 +210,15 @@ use in place of \"-ls\" as the final argument."
210 (insert " " dir ":\n") 210 (insert " " dir ":\n")
211 ;; Make second line a ``find'' line in analogy to the ``total'' or 211 ;; Make second line a ``find'' line in analogy to the ``total'' or
212 ;; ``wildcard'' line. 212 ;; ``wildcard'' line.
213 (insert " " args "\n") 213 (let ((point (point)))
214 (insert " " args "\n")
215 (dired-insert-set-properties point (point)))
214 (setq buffer-read-only t) 216 (setq buffer-read-only t)
215 (let ((proc (get-buffer-process (current-buffer)))) 217 (let ((proc (get-buffer-process (current-buffer))))
216 (set-process-filter proc (function find-dired-filter)) 218 (set-process-filter proc (function find-dired-filter))
217 (set-process-sentinel proc (function find-dired-sentinel)) 219 (set-process-sentinel proc (function find-dired-sentinel))
218 ;; Initialize the process marker; it is used by the filter. 220 ;; Initialize the process marker; it is used by the filter.
219 (move-marker (process-mark proc) 1 (current-buffer))) 221 (move-marker (process-mark proc) (point) (current-buffer)))
220 (setq mode-line-process '(":%s")))) 222 (setq mode-line-process '(":%s"))))
221 223
222(defun kill-find () 224(defun kill-find ()
@@ -337,10 +339,11 @@ use in place of \"-ls\" as the final argument."
337 (let ((buffer-read-only nil)) 339 (let ((buffer-read-only nil))
338 (save-excursion 340 (save-excursion
339 (goto-char (point-max)) 341 (goto-char (point-max))
340 (insert "\n find " state) 342 (let ((point (point)))
341 (forward-char -1) ;Back up before \n at end of STATE. 343 (insert "\n find " state)
342 (insert " at " (substring (current-time-string) 0 19)) 344 (forward-char -1) ;Back up before \n at end of STATE.
343 (forward-char 1) 345 (insert " at " (substring (current-time-string) 0 19))
346 (dired-insert-set-properties point (point)))
344 (setq mode-line-process 347 (setq mode-line-process
345 (concat ":" 348 (concat ":"
346 (symbol-name (process-status proc)))) 349 (symbol-name (process-status proc))))
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 4c27eea1602..14499a8fafc 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,9 @@
12013-02-13 Juri Linkov <juri@jurta.org>
2
3 * gnus-art.el (gnus-article-mode-map):
4 * gnus-sum.el (gnus-summary-mode-map, gnus-summary-article-map):
5 Make S-SPC scroll in the opposite sense to SPC. (Bug#2145)
6
12013-02-10 Katsumi Yamaoka <yamaoka@jpl.org> 72013-02-10 Katsumi Yamaoka <yamaoka@jpl.org>
2 8
3 * nnir.el ("nnir"): Add 'virtual ability to nnir backend. (This was 9 * nnir.el ("nnir"): Add 'virtual ability to nnir backend. (This was
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 25a555f3d8b..13d9b4e5c28 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -4361,6 +4361,7 @@ If variable `gnus-use-long-file-name' is non-nil, it is
4361 4361
4362(gnus-define-keys gnus-article-mode-map 4362(gnus-define-keys gnus-article-mode-map
4363 " " gnus-article-goto-next-page 4363 " " gnus-article-goto-next-page
4364 [?\S-\ ] gnus-article-goto-prev-page
4364 "\177" gnus-article-goto-prev-page 4365 "\177" gnus-article-goto-prev-page
4365 [delete] gnus-article-goto-prev-page 4366 [delete] gnus-article-goto-prev-page
4366 [backspace] gnus-article-goto-prev-page 4367 [backspace] gnus-article-goto-prev-page
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 700d319228f..2c45d3c24a1 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -4377,7 +4377,7 @@ The hook `gnus-exit-gnus-hook' is called before actually exiting."
4377(defun gnus-group-browse-foreign-server (method) 4377(defun gnus-group-browse-foreign-server (method)
4378 "Browse a foreign news server. 4378 "Browse a foreign news server.
4379If called interactively, this function will ask for a select method 4379If called interactively, this function will ask for a select method
4380 (nntp, nnspool, etc.) and a server address (eg. nntp.some.where). 4380 (nntp, nnspool, etc.) and a server address (e.g., nntp.some.where).
4381If not, METHOD should be a list where the first element is the method 4381If not, METHOD should be a list where the first element is the method
4382and the second element is the address." 4382and the second element is the address."
4383 (interactive 4383 (interactive
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el
index aa8b6bf2703..48bb99bfbce 100644
--- a/lisp/gnus/gnus-start.el
+++ b/lisp/gnus/gnus-start.el
@@ -121,7 +121,7 @@ This variable can be a list of select methods which Gnus will query with
121the `ask-server' method in addition to the primary, secondary, and archive 121the `ask-server' method in addition to the primary, secondary, and archive
122servers. 122servers.
123 123
124Eg. 124E.g.:
125 (setq gnus-check-new-newsgroups 125 (setq gnus-check-new-newsgroups
126 '((nntp \"some.server\") (nntp \"other.server\"))) 126 '((nntp \"some.server\") (nntp \"other.server\")))
127 127
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 658863f9f00..183eabca6dc 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -1819,6 +1819,7 @@ increase the score of each group you read."
1819 1819
1820(gnus-define-keys gnus-summary-mode-map 1820(gnus-define-keys gnus-summary-mode-map
1821 " " gnus-summary-next-page 1821 " " gnus-summary-next-page
1822 [?\S-\ ] gnus-summary-prev-page
1822 "\177" gnus-summary-prev-page 1823 "\177" gnus-summary-prev-page
1823 [delete] gnus-summary-prev-page 1824 [delete] gnus-summary-prev-page
1824 [backspace] gnus-summary-prev-page 1825 [backspace] gnus-summary-prev-page
@@ -2058,6 +2059,7 @@ increase the score of each group you read."
2058(gnus-define-keys (gnus-summary-article-map "A" gnus-summary-mode-map) 2059(gnus-define-keys (gnus-summary-article-map "A" gnus-summary-mode-map)
2059 " " gnus-summary-next-page 2060 " " gnus-summary-next-page
2060 "n" gnus-summary-next-page 2061 "n" gnus-summary-next-page
2062 [?\S-\ ] gnus-summary-prev-page
2061 "\177" gnus-summary-prev-page 2063 "\177" gnus-summary-prev-page
2062 [delete] gnus-summary-prev-page 2064 [delete] gnus-summary-prev-page
2063 "p" gnus-summary-prev-page 2065 "p" gnus-summary-prev-page
diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el
index 85a6d5639a1..a266567987d 100644
--- a/lisp/gnus/nnmail.el
+++ b/lisp/gnus/nnmail.el
@@ -179,7 +179,7 @@ is to be performed in, and it should return an integer that says how
179many days an article can be stored before it is considered \"old\". 179many days an article can be stored before it is considered \"old\".
180It can also return the values `never' and `immediate'. 180It can also return the values `never' and `immediate'.
181 181
182Eg.: 182E.g.:
183 183
184\(setq nnmail-expiry-wait-function 184\(setq nnmail-expiry-wait-function
185 (lambda (newsgroup) 185 (lambda (newsgroup)
@@ -291,7 +291,7 @@ directory. This hook is called after the incoming mail box has been
291emptied, and can be used to call any mail box programs you have 291emptied, and can be used to call any mail box programs you have
292running (\"xwatch\", etc.) 292running (\"xwatch\", etc.)
293 293
294Eg. 294E.g.:
295 295
296\(add-hook 'nnmail-read-incoming-hook 296\(add-hook 'nnmail-read-incoming-hook
297 (lambda () 297 (lambda ()
diff --git a/lisp/gnus/smime.el b/lisp/gnus/smime.el
index 7e391c03778..2c2775dfbd7 100644
--- a/lisp/gnus/smime.el
+++ b/lisp/gnus/smime.el
@@ -214,7 +214,7 @@ Enabling this will have OpenSSL check the signers certificate
214against a certificate revocation list (CRL). 214against a certificate revocation list (CRL).
215 215
216For this to work the CRL must be up-to-date and since they are 216For this to work the CRL must be up-to-date and since they are
217normally updated quite often (ie. several times a day) you 217normally updated quite often (i.e., several times a day) you
218probably need some tool to keep them up-to-date. Unfortunately 218probably need some tool to keep them up-to-date. Unfortunately
219Gnus cannot do this for you. 219Gnus cannot do this for you.
220 220
diff --git a/lisp/hexl.el b/lisp/hexl.el
index 13181ff0e3c..2ee492b4c5e 100644
--- a/lisp/hexl.el
+++ b/lisp/hexl.el
@@ -311,8 +311,8 @@ A sample format:
311 000000c0: 7265 6769 6f6e 2e0a region.. 311 000000c0: 7265 6769 6f6e 2e0a region..
312 312
313Movement is as simple as movement in a normal Emacs text buffer. Most 313Movement is as simple as movement in a normal Emacs text buffer. Most
314cursor movement bindings are the same (ie. Use \\[hexl-backward-char], \\[hexl-forward-char], \\[hexl-next-line], and \\[hexl-previous-line] 314cursor movement bindings are the same: use \\[hexl-backward-char], \\[hexl-forward-char], \\[hexl-next-line], and \\[hexl-previous-line]
315to move the cursor left, right, down, and up). 315to move the cursor left, right, down, and up.
316 316
317Advanced cursor movement commands (ala \\[hexl-beginning-of-line], \\[hexl-end-of-line], \\[hexl-beginning-of-buffer], and \\[hexl-end-of-buffer]) are 317Advanced cursor movement commands (ala \\[hexl-beginning-of-line], \\[hexl-end-of-line], \\[hexl-beginning-of-buffer], and \\[hexl-end-of-buffer]) are
318also supported. 318also supported.
diff --git a/lisp/icomplete.el b/lisp/icomplete.el
index 8e4dd69e199..1f9b4a3afe6 100644
--- a/lisp/icomplete.el
+++ b/lisp/icomplete.el
@@ -76,6 +76,18 @@
76 :type 'string 76 :type 'string
77 :version "24.4") 77 :version "24.4")
78 78
79(defcustom icomplete-hide-common-prefix t
80 "When non-nil, hide common prefix from completion candidates.
81When nil, show candidates in full."
82 :type 'boolean
83 :version "24.4"
84 :group 'icomplete)
85
86(defface icomplete-first-match '((t :weight bold))
87 "Face used by icomplete for highlighting first match."
88 :version "24.4"
89 :group 'icomplete)
90
79;;;_* User Customization variables 91;;;_* User Customization variables
80(defcustom icomplete-prospects-height 92(defcustom icomplete-prospects-height
81 ;; 20 is an estimated common size for the prompt + minibuffer content, to 93 ;; 20 is an estimated common size for the prompt + minibuffer content, to
@@ -344,7 +356,8 @@ are exhibited within the square braces.)"
344 (t (concat "…" (substring most compare)))) 356 (t (concat "…" (substring most compare))))
345 close-bracket))) 357 close-bracket)))
346 ;;"-prospects" - more than one candidate 358 ;;"-prospects" - more than one candidate
347 (prospects-len (+ (length determ) 359 (prospects-len (+ (string-width
360 (or determ (concat open-bracket close-bracket)))
348 (string-width icomplete-separator) 361 (string-width icomplete-separator)
349 3 ;; take {…} into account 362 3 ;; take {…} into account
350 (string-width (buffer-string)))) 363 (string-width (buffer-string))))
@@ -355,6 +368,8 @@ are exhibited within the square braces.)"
355 ;; one line, increase the allowable space accordingly. 368 ;; one line, increase the allowable space accordingly.
356 (/ prospects-len (window-width))) 369 (/ prospects-len (window-width)))
357 (window-width))) 370 (window-width)))
371 (prefix (when icomplete-hide-common-prefix
372 (try-completion "" comps)))
358 (prefix-len 373 (prefix-len
359 ;; Find the common prefix among `comps'. 374 ;; Find the common prefix among `comps'.
360 ;; We can't use the optimization below because its assumptions 375 ;; We can't use the optimization below because its assumptions
@@ -364,37 +379,55 @@ are exhibited within the square braces.)"
364 ;; ;; Common case. 379 ;; ;; Common case.
365 ;; (length most) 380 ;; (length most)
366 ;; Else, use try-completion. 381 ;; Else, use try-completion.
367 (let ((comps-prefix (try-completion "" comps))) 382 (and (stringp prefix) (length prefix))) ;;)
368 (and (stringp comps-prefix) 383 prospects comp limit)
369 (length comps-prefix)))) ;;)
370
371 prospects most-is-exact comp limit)
372 (if (eq most-try t) ;; (or (null (cdr comps)) 384 (if (eq most-try t) ;; (or (null (cdr comps))
373 (setq prospects nil) 385 (setq prospects nil)
386 (when (member name comps)
387 ;; NAME is complete but not unique. This scenario poses
388 ;; following UI issues:
389 ;;
390 ;; - When `icomplete-hide-common-prefix' is non-nil, NAME
391 ;; is stripped empty. This would make the entry
392 ;; inconspicuous.
393 ;;
394 ;; - Due to sorting of completions, NAME may not be the
395 ;; first of the prospects and could be hidden deep in
396 ;; the displayed string.
397 ;;
398 ;; - Because of `icomplete-prospects-height' , NAME may
399 ;; not even be displayed to the user.
400 ;;
401 ;; To circumvent all the above problems, provide a visual
402 ;; cue to the user via an "empty string" in the try
403 ;; completion field.
404 (setq determ (concat open-bracket "" close-bracket)))
405 ;; Compute prospects for display.
374 (while (and comps (not limit)) 406 (while (and comps (not limit))
375 (setq comp 407 (setq comp
376 (if prefix-len (substring (car comps) prefix-len) (car comps)) 408 (if prefix-len (substring (car comps) prefix-len) (car comps))
377 comps (cdr comps)) 409 comps (cdr comps))
378 (cond ((string-equal comp "") (setq most-is-exact t)) 410 (setq prospects-len
379 ((member comp prospects))
380 (t (setq prospects-len
381 (+ (string-width comp) 411 (+ (string-width comp)
382 (string-width icomplete-separator) 412 (string-width icomplete-separator)
383 prospects-len)) 413 prospects-len))
384 (if (< prospects-len prospects-max) 414 (if (< prospects-len prospects-max)
385 (push comp prospects) 415 (push comp prospects)
386 (setq limit t)))))) 416 (setq limit t))))
417 (setq prospects (nreverse prospects))
418 ;; Decorate first of the prospects.
419 (when prospects
420 (let ((first (copy-sequence (pop prospects))))
421 (put-text-property 0 (length first)
422 'face 'icomplete-first-match first)
423 (push first prospects)))
387 ;; Restore the base-size info, since completion-all-sorted-completions 424 ;; Restore the base-size info, since completion-all-sorted-completions
388 ;; is cached. 425 ;; is cached.
389 (if last (setcdr last base-size)) 426 (if last (setcdr last base-size))
390 (if prospects 427 (if prospects
391 (concat determ 428 (concat determ
392 "{" 429 "{"
393 (and most-is-exact 430 (mapconcat 'identity prospects icomplete-separator)
394 (substring icomplete-separator
395 (string-match "[^ ]" icomplete-separator)))
396 (mapconcat 'identity (nreverse prospects)
397 icomplete-separator)
398 (and limit (concat icomplete-separator "…")) 431 (and limit (concat icomplete-separator "…"))
399 "}") 432 "}")
400 (concat determ " [Matched]")))))) 433 (concat determ " [Matched]"))))))
diff --git a/lisp/image-mode.el b/lisp/image-mode.el
index 6a13d528037..196336717db 100644
--- a/lisp/image-mode.el
+++ b/lisp/image-mode.el
@@ -337,6 +337,7 @@ call."
337 (set-keymap-parent map special-mode-map) 337 (set-keymap-parent map special-mode-map)
338 (define-key map "\C-c\C-c" 'image-toggle-display) 338 (define-key map "\C-c\C-c" 'image-toggle-display)
339 (define-key map (kbd "SPC") 'image-scroll-up) 339 (define-key map (kbd "SPC") 'image-scroll-up)
340 (define-key map (kbd "S-SPC") 'image-scroll-down)
340 (define-key map (kbd "DEL") 'image-scroll-down) 341 (define-key map (kbd "DEL") 'image-scroll-down)
341 (define-key map (kbd "RET") 'image-toggle-animation) 342 (define-key map (kbd "RET") 'image-toggle-animation)
342 (define-key map "n" 'image-next-file) 343 (define-key map "n" 'image-next-file)
diff --git a/lisp/locate.el b/lisp/locate.el
index 804260969ee..ab0417070e7 100644
--- a/lisp/locate.el
+++ b/lisp/locate.el
@@ -496,6 +496,7 @@ do not work in subdirectories.
496 (setq revert-buffer-function 'locate-update) 496 (setq revert-buffer-function 'locate-update)
497 (set (make-local-variable 'page-delimiter) "\n\n") 497 (set (make-local-variable 'page-delimiter) "\n\n")
498 (run-mode-hooks 'locate-mode-hook)) 498 (run-mode-hooks 'locate-mode-hook))
499(put 'locate-mode 'derived-mode-parent 'dired-mode)
499 500
500(defun locate-do-setup (search-string) 501(defun locate-do-setup (search-string)
501 (goto-char (point-min)) 502 (goto-char (point-min))
diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el
index 5e9ba6d9cea..2b8c7ae145b 100644
--- a/lisp/net/ange-ftp.el
+++ b/lisp/net/ange-ftp.el
@@ -4084,7 +4084,8 @@ directory, so that Emacs will know its current contents."
4084 (or (file-exists-p parent) 4084 (or (file-exists-p parent)
4085 (ange-ftp-make-directory parent parents)))) 4085 (ange-ftp-make-directory parent parents))))
4086 (if (file-exists-p dir) 4086 (if (file-exists-p dir)
4087 (error "Cannot make directory %s: file already exists" dir) 4087 (unless parents
4088 (error "Cannot make directory %s: file already exists" dir))
4088 (let ((parsed (ange-ftp-ftp-name dir))) 4089 (let ((parsed (ange-ftp-ftp-name dir)))
4089 (if parsed 4090 (if parsed
4090 (let* ((host (nth 0 parsed)) 4091 (let* ((host (nth 0 parsed))
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 0c2a0aa385a..001a27f3b2e 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -109,31 +109,17 @@ detected as prompt when being sent on echoing hosts, therefore.")
109 (tramp-copy-keep-date t))) 109 (tramp-copy-keep-date t)))
110;;;###tramp-autoload 110;;;###tramp-autoload
111(add-to-list 'tramp-methods 111(add-to-list 'tramp-methods
112 '("scp" 112 `("scp"
113 (tramp-login-program "ssh")
114 (tramp-login-args (("-l" "%u") ("-p" "%p") ("-e" "none") ("%h")))
115 (tramp-async-args (("-q")))
116 (tramp-remote-shell "/bin/sh")
117 (tramp-remote-shell-args ("-c"))
118 (tramp-copy-program "scp")
119 (tramp-copy-args (("-P" "%p") ("-p" "%k") ("-q") ("-r")))
120 (tramp-copy-keep-date t)
121 (tramp-copy-recursive t)
122 (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null")
123 ("-o" "UserKnownHostsFile=/dev/null")
124 ("-o" "StrictHostKeyChecking=no")))
125 (tramp-default-port 22)))
126;;;###tramp-autoload
127(add-to-list 'tramp-methods
128 '("scp1"
129 (tramp-login-program "ssh") 113 (tramp-login-program "ssh")
130 (tramp-login-args (("-l" "%u") ("-p" "%p") 114 (tramp-login-args (("-l" "%u") ("-p" "%p")
131 ("-1") ("-e" "none") ("%h"))) 115 ,tramp-ssh-controlmaster-template
116 ("-e" "none") ("%h")))
132 (tramp-async-args (("-q"))) 117 (tramp-async-args (("-q")))
133 (tramp-remote-shell "/bin/sh") 118 (tramp-remote-shell "/bin/sh")
134 (tramp-remote-shell-args ("-c")) 119 (tramp-remote-shell-args ("-c"))
135 (tramp-copy-program "scp") 120 (tramp-copy-program "scp")
136 (tramp-copy-args (("-1") ("-P" "%p") ("-p" "%k") ("-q") ("-r"))) 121 (tramp-copy-args (("-P" "%p") ("-p" "%k") ("-q") ("-r")
122 ,tramp-ssh-controlmaster-template))
137 (tramp-copy-keep-date t) 123 (tramp-copy-keep-date t)
138 (tramp-copy-recursive t) 124 (tramp-copy-recursive t)
139 (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null") 125 (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null")
@@ -142,15 +128,17 @@ detected as prompt when being sent on echoing hosts, therefore.")
142 (tramp-default-port 22))) 128 (tramp-default-port 22)))
143;;;###tramp-autoload 129;;;###tramp-autoload
144(add-to-list 'tramp-methods 130(add-to-list 'tramp-methods
145 '("scp2" 131 `("scp1"
146 (tramp-login-program "ssh") 132 (tramp-login-program "ssh")
147 (tramp-login-args (("-l" "%u") ("-p" "%p") 133 (tramp-login-args (("-l" "%u") ("-p" "%p")
148 ("-2") ("-e" "none") ("%h"))) 134 ,tramp-ssh-controlmaster-template
135 ("-1") ("-e" "none") ("%h")))
149 (tramp-async-args (("-q"))) 136 (tramp-async-args (("-q")))
150 (tramp-remote-shell "/bin/sh") 137 (tramp-remote-shell "/bin/sh")
151 (tramp-remote-shell-args ("-c")) 138 (tramp-remote-shell-args ("-c"))
152 (tramp-copy-program "scp") 139 (tramp-copy-program "scp")
153 (tramp-copy-args (("-2") ("-P" "%p") ("-p" "%k") ("-q") ("-r"))) 140 (tramp-copy-args (("-1") ("-P" "%p") ("-p" "%k") ("-q") ("-r")
141 ,tramp-ssh-controlmaster-template))
154 (tramp-copy-keep-date t) 142 (tramp-copy-keep-date t)
155 (tramp-copy-recursive t) 143 (tramp-copy-recursive t)
156 (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null") 144 (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null")
@@ -159,19 +147,17 @@ detected as prompt when being sent on echoing hosts, therefore.")
159 (tramp-default-port 22))) 147 (tramp-default-port 22)))
160;;;###tramp-autoload 148;;;###tramp-autoload
161(add-to-list 'tramp-methods 149(add-to-list 'tramp-methods
162 '("scpc" 150 `("scp2"
163 (tramp-login-program "ssh") 151 (tramp-login-program "ssh")
164 (tramp-login-args (("-l" "%u") ("-p" "%p") 152 (tramp-login-args (("-l" "%u") ("-p" "%p")
165 ("-o" "ControlPath=%t.%%r@%%h:%%p") 153 ,tramp-ssh-controlmaster-template
166 ("-o" "ControlMaster=yes") 154 ("-2") ("-e" "none") ("%h")))
167 ("-e" "none") ("%h")))
168 (tramp-async-args (("-q"))) 155 (tramp-async-args (("-q")))
169 (tramp-remote-shell "/bin/sh") 156 (tramp-remote-shell "/bin/sh")
170 (tramp-remote-shell-args ("-c")) 157 (tramp-remote-shell-args ("-c"))
171 (tramp-copy-program "scp") 158 (tramp-copy-program "scp")
172 (tramp-copy-args (("-P" "%p") ("-p" "%k") ("-q") ("-r") 159 (tramp-copy-args (("-2") ("-P" "%p") ("-p" "%k") ("-q") ("-r")
173 ("-o" "ControlPath=%t.%%r@%%h:%%p") 160 ,tramp-ssh-controlmaster-template))
174 ("-o" "ControlMaster=auto")))
175 (tramp-copy-keep-date t) 161 (tramp-copy-keep-date t)
176 (tramp-copy-recursive t) 162 (tramp-copy-recursive t)
177 (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null") 163 (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null")
@@ -180,16 +166,17 @@ detected as prompt when being sent on echoing hosts, therefore.")
180 (tramp-default-port 22))) 166 (tramp-default-port 22)))
181;;;###tramp-autoload 167;;;###tramp-autoload
182(add-to-list 'tramp-methods 168(add-to-list 'tramp-methods
183 '("scpx" 169 `("scpx"
184 (tramp-login-program "ssh") 170 (tramp-login-program "ssh")
185 (tramp-login-args (("-l" "%u") ("-p" "%p") 171 (tramp-login-args (("-l" "%u") ("-p" "%p")
186 ("-e" "none") ("-t" "-t") 172 ,tramp-ssh-controlmaster-template
187 ("%h") ("/bin/sh"))) 173 ("-e" "none") ("-t" "-t") ("%h") ("/bin/sh")))
188 (tramp-async-args (("-q"))) 174 (tramp-async-args (("-q")))
189 (tramp-remote-shell "/bin/sh") 175 (tramp-remote-shell "/bin/sh")
190 (tramp-remote-shell-args ("-c")) 176 (tramp-remote-shell-args ("-c"))
191 (tramp-copy-program "scp") 177 (tramp-copy-program "scp")
192 (tramp-copy-args (("-P" "%p") ("-p" "%k") ("-q") ("-r"))) 178 (tramp-copy-args (("-P" "%p") ("-p" "%k") ("-q") ("-r")
179 ,tramp-ssh-controlmaster-template))
193 (tramp-copy-keep-date t) 180 (tramp-copy-keep-date t)
194 (tramp-copy-recursive t) 181 (tramp-copy-recursive t)
195 (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null") 182 (tramp-gw-args (("-o" "GlobalKnownHostsFile=/dev/null")
@@ -198,33 +185,22 @@ detected as prompt when being sent on echoing hosts, therefore.")
198 (tramp-default-port 22))) 185 (tramp-default-port 22)))
199;;;###tramp-autoload 186;;;###tramp-autoload
200(add-to-list 'tramp-methods 187(add-to-list 'tramp-methods
201 '("sftp" 188 `("sftp"
202 (tramp-login-program "ssh") 189 (tramp-login-program "ssh")
203 (tramp-login-args (("-l" "%u") ("-p" "%p") ("-e" "none") ("%h"))) 190 (tramp-login-args (("-l" "%u") ("-p" "%p")
204 (tramp-async-args (("-q"))) 191 ,tramp-ssh-controlmaster-template
205 (tramp-remote-shell "/bin/sh") 192 ("-e" "none") ("%h")))
206 (tramp-remote-shell-args ("-c"))
207 (tramp-copy-program "sftp")))
208;;;###tramp-autoload
209(add-to-list 'tramp-methods
210 '("rsync"
211 (tramp-login-program "ssh")
212 (tramp-login-args (("-l" "%u") ("-p" "%p") ("-e" "none") ("%h")))
213 (tramp-async-args (("-q"))) 193 (tramp-async-args (("-q")))
214 (tramp-remote-shell "/bin/sh") 194 (tramp-remote-shell "/bin/sh")
215 (tramp-remote-shell-args ("-c")) 195 (tramp-remote-shell-args ("-c"))
216 (tramp-copy-program "rsync") 196 (tramp-copy-program "sftp")
217 (tramp-copy-args (("-e" "ssh") ("-t" "%k") ("-r"))) 197 (tramp-copy-args ,tramp-ssh-controlmaster-template)))
218 (tramp-copy-keep-date t) 198 ;;;###tramp-autoload
219 (tramp-copy-keep-tmpfile t)
220 (tramp-copy-recursive t)))
221;;;###tramp-autoload
222(add-to-list 'tramp-methods 199(add-to-list 'tramp-methods
223 `("rsyncc" 200 `("rsync"
224 (tramp-login-program "ssh") 201 (tramp-login-program "ssh")
225 (tramp-login-args (("-l" "%u") ("-p" "%p") 202 (tramp-login-args (("-l" "%u") ("-p" "%p")
226 ("-o" "ControlPath=%t.%%r@%%h:%%p") 203 ,tramp-ssh-controlmaster-template
227 ("-o" "ControlMaster=yes")
228 ("-e" "none") ("%h"))) 204 ("-e" "none") ("%h")))
229 (tramp-async-args (("-q"))) 205 (tramp-async-args (("-q")))
230 (tramp-remote-shell "/bin/sh") 206 (tramp-remote-shell "/bin/sh")
@@ -232,10 +208,11 @@ detected as prompt when being sent on echoing hosts, therefore.")
232 (tramp-copy-program "rsync") 208 (tramp-copy-program "rsync")
233 (tramp-copy-args (("-t" "%k") ("-r"))) 209 (tramp-copy-args (("-t" "%k") ("-r")))
234 (tramp-copy-env (("RSYNC_RSH") 210 (tramp-copy-env (("RSYNC_RSH")
235 (,(concat 211 (,(mapconcat
236 "ssh" 212 'identity
237 " -o ControlPath=%t.%%r@%%h:%%p" 213 (append
238 " -o ControlMaster=auto")))) 214 '("ssh") tramp-ssh-controlmaster-template)
215 " "))))
239 (tramp-copy-keep-date t) 216 (tramp-copy-keep-date t)
240 (tramp-copy-keep-tmpfile t) 217 (tramp-copy-keep-tmpfile t)
241 (tramp-copy-recursive t))) 218 (tramp-copy-recursive t)))
@@ -255,9 +232,11 @@ detected as prompt when being sent on echoing hosts, therefore.")
255 (tramp-remote-shell-args ("-c")))) 232 (tramp-remote-shell-args ("-c"))))
256;;;###tramp-autoload 233;;;###tramp-autoload
257(add-to-list 'tramp-methods 234(add-to-list 'tramp-methods
258 '("ssh" 235 `("ssh"
259 (tramp-login-program "ssh") 236 (tramp-login-program "ssh")
260 (tramp-login-args (("-l" "%u") ("-p" "%p") ("-e" "none") ("%h"))) 237 (tramp-login-args (("-l" "%u") ("-p" "%p")
238 ,tramp-ssh-controlmaster-template
239 ("-e" "none") ("%h")))
261 (tramp-async-args (("-q"))) 240 (tramp-async-args (("-q")))
262 (tramp-remote-shell "/bin/sh") 241 (tramp-remote-shell "/bin/sh")
263 (tramp-remote-shell-args ("-c")) 242 (tramp-remote-shell-args ("-c"))
@@ -267,9 +246,10 @@ detected as prompt when being sent on echoing hosts, therefore.")
267 (tramp-default-port 22))) 246 (tramp-default-port 22)))
268;;;###tramp-autoload 247;;;###tramp-autoload
269(add-to-list 'tramp-methods 248(add-to-list 'tramp-methods
270 '("ssh1" 249 `("ssh1"
271 (tramp-login-program "ssh") 250 (tramp-login-program "ssh")
272 (tramp-login-args (("-l" "%u") ("-p" "%p") 251 (tramp-login-args (("-l" "%u") ("-p" "%p")
252 ,tramp-ssh-controlmaster-template
273 ("-1") ("-e" "none") ("%h"))) 253 ("-1") ("-e" "none") ("%h")))
274 (tramp-async-args (("-q"))) 254 (tramp-async-args (("-q")))
275 (tramp-remote-shell "/bin/sh") 255 (tramp-remote-shell "/bin/sh")
@@ -280,9 +260,10 @@ detected as prompt when being sent on echoing hosts, therefore.")
280 (tramp-default-port 22))) 260 (tramp-default-port 22)))
281;;;###tramp-autoload 261;;;###tramp-autoload
282(add-to-list 'tramp-methods 262(add-to-list 'tramp-methods
283 '("ssh2" 263 `("ssh2"
284 (tramp-login-program "ssh") 264 (tramp-login-program "ssh")
285 (tramp-login-args (("-l" "%u") ("-p" "%p") 265 (tramp-login-args (("-l" "%u") ("-p" "%p")
266 ,tramp-ssh-controlmaster-template
286 ("-2") ("-e" "none") ("%h"))) 267 ("-2") ("-e" "none") ("%h")))
287 (tramp-async-args (("-q"))) 268 (tramp-async-args (("-q")))
288 (tramp-remote-shell "/bin/sh") 269 (tramp-remote-shell "/bin/sh")
@@ -293,11 +274,11 @@ detected as prompt when being sent on echoing hosts, therefore.")
293 (tramp-default-port 22))) 274 (tramp-default-port 22)))
294;;;###tramp-autoload 275;;;###tramp-autoload
295(add-to-list 'tramp-methods 276(add-to-list 'tramp-methods
296 '("sshx" 277 `("sshx"
297 (tramp-login-program "ssh") 278 (tramp-login-program "ssh")
298 (tramp-login-args (("-l" "%u") ("-p" "%p") 279 (tramp-login-args (("-l" "%u") ("-p" "%p")
299 ("-e" "none") ("-t" "-t") 280 ,tramp-ssh-controlmaster-template
300 ("%h") ("/bin/sh"))) 281 ("-e" "none") ("-t" "-t") ("%h") ("/bin/sh")))
301 (tramp-async-args (("-q"))) 282 (tramp-async-args (("-q")))
302 (tramp-remote-shell "/bin/sh") 283 (tramp-remote-shell "/bin/sh")
303 (tramp-remote-shell-args ("-c")) 284 (tramp-remote-shell-args ("-c"))
@@ -473,21 +454,14 @@ detected as prompt when being sent on echoing hosts, therefore.")
473 (tramp-set-completion-function "scp" tramp-completion-function-alist-ssh) 454 (tramp-set-completion-function "scp" tramp-completion-function-alist-ssh)
474 (tramp-set-completion-function "scp1" tramp-completion-function-alist-ssh) 455 (tramp-set-completion-function "scp1" tramp-completion-function-alist-ssh)
475 (tramp-set-completion-function "scp2" tramp-completion-function-alist-ssh) 456 (tramp-set-completion-function "scp2" tramp-completion-function-alist-ssh)
476 (tramp-set-completion-function "scpc" tramp-completion-function-alist-ssh)
477 (tramp-set-completion-function "scpx" tramp-completion-function-alist-ssh) 457 (tramp-set-completion-function "scpx" tramp-completion-function-alist-ssh)
478 (tramp-set-completion-function "sftp" tramp-completion-function-alist-ssh) 458 (tramp-set-completion-function "sftp" tramp-completion-function-alist-ssh)
479 (tramp-set-completion-function "rsync" tramp-completion-function-alist-ssh) 459 (tramp-set-completion-function "rsync" tramp-completion-function-alist-ssh)
480 (tramp-set-completion-function
481 "rsyncc" tramp-completion-function-alist-ssh)
482 (tramp-set-completion-function "rsh" tramp-completion-function-alist-rsh) 460 (tramp-set-completion-function "rsh" tramp-completion-function-alist-rsh)
483 (tramp-set-completion-function "remsh" tramp-completion-function-alist-rsh) 461 (tramp-set-completion-function "remsh" tramp-completion-function-alist-rsh)
484 (tramp-set-completion-function "ssh" tramp-completion-function-alist-ssh) 462 (tramp-set-completion-function "ssh" tramp-completion-function-alist-ssh)
485 (tramp-set-completion-function "ssh1" tramp-completion-function-alist-ssh) 463 (tramp-set-completion-function "ssh1" tramp-completion-function-alist-ssh)
486 (tramp-set-completion-function "ssh2" tramp-completion-function-alist-ssh) 464 (tramp-set-completion-function "ssh2" tramp-completion-function-alist-ssh)
487 (tramp-set-completion-function
488 "ssh1_old" tramp-completion-function-alist-ssh)
489 (tramp-set-completion-function
490 "ssh2_old" tramp-completion-function-alist-ssh)
491 (tramp-set-completion-function "sshx" tramp-completion-function-alist-ssh) 465 (tramp-set-completion-function "sshx" tramp-completion-function-alist-ssh)
492 (tramp-set-completion-function 466 (tramp-set-completion-function
493 "telnet" tramp-completion-function-alist-telnet) 467 "telnet" tramp-completion-function-alist-telnet)
@@ -2419,7 +2393,7 @@ The method used must be an out-of-band method."
2419 v "process-buffer" (current-buffer)) 2393 v "process-buffer" (current-buffer))
2420 (while copy-env 2394 (while copy-env
2421 (tramp-message 2395 (tramp-message
2422 orig-vec 5 "%s=\"%s\"" (car copy-env) (cadr copy-env)) 2396 orig-vec 6 "%s=\"%s\"" (car copy-env) (cadr copy-env))
2423 (setenv (pop copy-env) (pop copy-env))) 2397 (setenv (pop copy-env) (pop copy-env)))
2424 2398
2425 ;; Use an asynchronous process. By this, password can 2399 ;; Use an asynchronous process. By this, password can
@@ -4478,14 +4452,16 @@ connection if a previous connection has died for some reason."
4478 ;; temporary file has another name, and it is 4452 ;; temporary file has another name, and it is
4479 ;; created and protected by ssh. It is also 4453 ;; created and protected by ssh. It is also
4480 ;; removed by ssh when the connection is 4454 ;; removed by ssh when the connection is
4481 ;; closed. 4455 ;; closed. The temporary file name is cached
4456 ;; in the main connection process, therefore
4457 ;; we cannot use `tramp-get-connection-process'.
4482 (tmpfile 4458 (tmpfile
4483 (tramp-set-connection-property 4459 (with-tramp-connection-property
4484 p "temp-file" 4460 (get-process (tramp-buffer-name vec)) "temp-file"
4485 (make-temp-name 4461 (make-temp-name
4486 (expand-file-name 4462 (expand-file-name
4487 tramp-temp-name-prefix 4463 tramp-temp-name-prefix
4488 (tramp-compat-temporary-file-directory))))) 4464 (tramp-compat-temporary-file-directory)))))
4489 spec r-shell) 4465 spec r-shell)
4490 4466
4491 ;; Add arguments for asynchronous processes. 4467 ;; Add arguments for asynchronous processes.
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 7743e10c8d4..a4250f94988 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -280,15 +280,18 @@ started on the local host. You should specify a remote host
280`localhost' or the name of the local host. Another host name is 280`localhost' or the name of the local host. Another host name is
281useful only in combination with `tramp-default-proxies-alist'.") 281useful only in combination with `tramp-default-proxies-alist'.")
282 282
283(defun tramp-detect-ssh-controlmaster () 283;;;###tramp-autoload
284 "Call ssh to detect whether it supports the ControlMaster argument. 284(defvar tramp-ssh-controlmaster-template
285This function may return nil when the argument is supported, but 285 (ignore-errors
286shouldn't return t when it isn't." 286 (with-temp-buffer
287 (ignore-errors 287 (call-process "ssh" nil t nil "-o" "ControlMaster")
288 (with-temp-buffer 288 (goto-char (point-min))
289 (call-process "ssh" nil t nil "-o" "ControlMaster") 289 (when (search-forward-regexp "Missing ControlMaster argument" nil t)
290 (goto-char (point-min)) 290 '("-o" "ControlPath=%t.%%r@%%h:%%p"
291 (search-forward-regexp "Missing ControlMaster argument" nil t)))) 291 "-o" "ControlMaster=auto"
292 "-o" "ControlPersist=no"))))
293 "Call ssh to detect whether it supports the ControlMaster argument.
294Return a template to be used in `tramp-methods'.")
292 295
293(defcustom tramp-default-method 296(defcustom tramp-default-method
294 ;; An external copy method seems to be preferred, because it performs 297 ;; An external copy method seems to be preferred, because it performs
@@ -297,8 +300,9 @@ shouldn't return t when it isn't."
297 ;; permanent password queries. Either a password agent like 300 ;; permanent password queries. Either a password agent like
298 ;; "ssh-agent" or "Pageant" shall run, or the optional 301 ;; "ssh-agent" or "Pageant" shall run, or the optional
299 ;; password-cache.el or auth-sources.el packages shall be active for 302 ;; password-cache.el or auth-sources.el packages shall be active for
300 ;; password caching. "scpc" is chosen if we detect that the user is 303 ;; password caching. If we detect that the user is running OpenSSH
301 ;; running OpenSSH 4.0 or newer. 304 ;; 4.0 or newer, we could reuse the connection, which calls also for
305 ;; an external method.
302 (cond 306 (cond
303 ;; PuTTY is installed. We don't take it, if it is installed on a 307 ;; PuTTY is installed. We don't take it, if it is installed on a
304 ;; non-windows system, or pscp from the pssh (parallel ssh) package 308 ;; non-windows system, or pscp from the pssh (parallel ssh) package
@@ -314,16 +318,16 @@ shouldn't return t when it isn't."
314 "plink")) 318 "plink"))
315 ;; There is an ssh installation. 319 ;; There is an ssh installation.
316 ((executable-find "scp") 320 ((executable-find "scp")
317 (cond 321 (if (or (fboundp 'password-read)
318 ((tramp-detect-ssh-controlmaster) "scpc") 322 (fboundp 'auth-source-user-or-password)
319 ((or (fboundp 'password-read) 323 (fboundp 'auth-source-search)
320 (fboundp 'auth-source-user-or-password) 324 ;; ssh-agent is running.
321 (fboundp 'auth-source-search) 325 (getenv "SSH_AUTH_SOCK")
322 ;; ssh-agent is running. 326 (getenv "SSH_AGENT_PID")
323 (getenv "SSH_AUTH_SOCK") 327 ;; We could reuse the connection.
324 (getenv "SSH_AGENT_PID")) 328 tramp-ssh-controlmaster-template)
325 "scp") 329 "scp"
326 (t "ssh"))) 330 "ssh"))
327 ;; Fallback. 331 ;; Fallback.
328 (t "ftp")) 332 (t "ftp"))
329 "Default method to use for transferring files. 333 "Default method to use for transferring files.
diff --git a/lisp/nxml/nxml-mode.el b/lisp/nxml/nxml-mode.el
index 6c25d903feb..2ee73235dd0 100644
--- a/lisp/nxml/nxml-mode.el
+++ b/lisp/nxml/nxml-mode.el
@@ -159,12 +159,12 @@ This is not used directly, but only via inheritance by other faces."
159 159
160(defface nxml-comment-delimiter 160(defface nxml-comment-delimiter
161 '((t (:inherit font-lock-comment-delimiter-face))) 161 '((t (:inherit font-lock-comment-delimiter-face)))
162 "Face used for the delimiters of comments, i.e <!-- and -->." 162 "Face used for the delimiters of comments, i.e., <!-- and -->."
163 :group 'nxml-faces) 163 :group 'nxml-faces)
164 164
165(defface nxml-processing-instruction-delimiter 165(defface nxml-processing-instruction-delimiter
166 '((t (:inherit nxml-delimiter))) 166 '((t (:inherit nxml-delimiter)))
167 "Face used for the delimiters of processing instructions, i.e <? and ?>." 167 "Face used for the delimiters of processing instructions, i.e., <? and ?>."
168 :group 'nxml-faces) 168 :group 'nxml-faces)
169 169
170(defface nxml-processing-instruction-target 170(defface nxml-processing-instruction-target
@@ -179,7 +179,7 @@ This is not used directly, but only via inheritance by other faces."
179 179
180(defface nxml-cdata-section-delimiter 180(defface nxml-cdata-section-delimiter
181 '((t (:inherit nxml-delimiter))) 181 '((t (:inherit nxml-delimiter)))
182 "Face used for the delimiters of CDATA sections, i.e <![, [, and ]]>." 182 "Face used for the delimiters of CDATA sections, i.e., <![, [, and ]]>."
183 :group 'nxml-faces) 183 :group 'nxml-faces)
184 184
185(defface nxml-cdata-section-CDATA 185(defface nxml-cdata-section-CDATA
@@ -200,7 +200,7 @@ This includes ths `x' in hex references."
200 200
201(defface nxml-char-ref-delimiter 201(defface nxml-char-ref-delimiter
202 '((t (:inherit nxml-ref))) 202 '((t (:inherit nxml-ref)))
203 "Face used for the delimiters of character references, i.e &# and ;." 203 "Face used for the delimiters of character references, i.e., &# and ;."
204 :group 'nxml-faces) 204 :group 'nxml-faces)
205 205
206(defface nxml-entity-ref-name 206(defface nxml-entity-ref-name
@@ -210,7 +210,7 @@ This includes ths `x' in hex references."
210 210
211(defface nxml-entity-ref-delimiter 211(defface nxml-entity-ref-delimiter
212 '((t (:inherit nxml-ref))) 212 '((t (:inherit nxml-ref)))
213 "Face used for the delimiters of entity references, i.e & and ;." 213 "Face used for the delimiters of entity references, i.e., & and ;."
214 :group 'nxml-faces) 214 :group 'nxml-faces)
215 215
216(defface nxml-tag-delimiter 216(defface nxml-tag-delimiter
diff --git a/lisp/play/yow.el b/lisp/obsolete/yow.el
index 10c69347469..42bb0a0b354 100644
--- a/lisp/play/yow.el
+++ b/lisp/obsolete/yow.el
@@ -5,6 +5,7 @@
5;; Maintainer: FSF 5;; Maintainer: FSF
6;; Author: Richard Mlynarik 6;; Author: Richard Mlynarik
7;; Keywords: games 7;; Keywords: games
8;; Obsolete-since: 24.4
8 9
9;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
10 11
@@ -24,6 +25,8 @@
24;;; Commentary: 25;;; Commentary:
25 26
26;; Important pinheadery for GNU Emacs. 27;; Important pinheadery for GNU Emacs.
28;; This file is obsolete. For similar functionality, see
29;; fortune.el and cookie1.el.
27 30
28;;; Code: 31;;; Code:
29 32
diff --git a/lisp/org/org-element.el b/lisp/org/org-element.el
index 6a0b8eee45c..5be14771961 100644
--- a/lisp/org/org-element.el
+++ b/lisp/org/org-element.el
@@ -3668,7 +3668,7 @@ containing the secondary string. It is used to set correctly
3668(defun org-element-map (data types fun &optional info first-match no-recursion) 3668(defun org-element-map (data types fun &optional info first-match no-recursion)
3669 "Map a function on selected elements or objects. 3669 "Map a function on selected elements or objects.
3670 3670
3671DATA is an Org buffer parse tree, as returned by, i.e, 3671DATA is an Org buffer parse tree, as returned by, i.e.,
3672`org-element-parse-buffer'. TYPES is a symbol or list of symbols 3672`org-element-parse-buffer'. TYPES is a symbol or list of symbols
3673of elements or objects types (see `org-element-all-elements' and 3673of elements or objects types (see `org-element-all-elements' and
3674`org-element-all-objects' for a complete list of types). FUN is 3674`org-element-all-objects' for a complete list of types). FUN is
diff --git a/lisp/org/org.el b/lisp/org/org.el
index bba52a8b63a..ede633a0a93 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -928,7 +928,7 @@ nil, don't do anything special at the beginning of the buffer."
928(defcustom org-cycle-level-after-item/entry-creation t 928(defcustom org-cycle-level-after-item/entry-creation t
929 "Non-nil means cycle entry level or item indentation in new empty entries. 929 "Non-nil means cycle entry level or item indentation in new empty entries.
930 930
931When the cursor is at the end of an empty headline, i.e with only stars 931When the cursor is at the end of an empty headline, i.e., with only stars
932and maybe a TODO keyword, TAB will then switch the entry to become a child, 932and maybe a TODO keyword, TAB will then switch the entry to become a child,
933and then all possible ancestor states, before returning to the original state. 933and then all possible ancestor states, before returning to the original state.
934This makes data entry extremely fast: M-RET to create a new headline, 934This makes data entry extremely fast: M-RET to create a new headline,
diff --git a/lisp/play/fortune.el b/lisp/play/fortune.el
index 17ab6f98254..0920012b280 100644
--- a/lisp/play/fortune.el
+++ b/lisp/play/fortune.el
@@ -244,15 +244,17 @@ the value of `fortune-file'. This currently cannot handle directories."
244 (let* ((fortune-file (expand-file-name (substitute-in-file-name file))) 244 (let* ((fortune-file (expand-file-name (substitute-in-file-name file)))
245 (fortune-dat (expand-file-name 245 (fortune-dat (expand-file-name
246 (substitute-in-file-name 246 (substitute-in-file-name
247 (concat fortune-file fortune-database-extension))))) 247 (concat fortune-file fortune-database-extension))))
248 (cond ((file-exists-p fortune-file) 248 (fortune-dat-exist (file-exists-p fortune-dat)))
249 (if (file-exists-p fortune-dat) 249 (cond ((file-exists-p fortune-file)
250 (cond ((file-newer-than-file-p fortune-file fortune-dat) 250 (if (or (not fortune-dat-exist)
251 (message "Compiling new fortune database %s" fortune-dat) 251 (and fortune-dat-exist
252 (shell-command 252 (file-newer-than-file-p fortune-file fortune-dat)))
253 (concat fortune-strfile fortune-strfile-options 253 (message "Compiling new fortune database %s" fortune-dat)
254 " " fortune-file fortune-quiet-strfile-options)))))) 254 (shell-command
255 (t (error "Can't compile fortune file %s" fortune-file))))) 255 (concat fortune-strfile fortune-strfile-options
256 " " fortune-file fortune-quiet-strfile-options))))
257 (t (error "Can't compile fortune file %s" fortune-file)))))
256 258
257 259
258;;; ************** 260;;; **************
diff --git a/lisp/progmodes/cc-align.el b/lisp/progmodes/cc-align.el
index b552b68c4b7..cb8d2d23c84 100644
--- a/lisp/progmodes/cc-align.el
+++ b/lisp/progmodes/cc-align.el
@@ -53,7 +53,7 @@
53(defun c-lineup-topmost-intro-cont (langelem) 53(defun c-lineup-topmost-intro-cont (langelem)
54 "Line up declaration continuation lines zero or one indentation step. 54 "Line up declaration continuation lines zero or one indentation step.
55For lines in the \"header\" of a definition, zero is used. For other 55For lines in the \"header\" of a definition, zero is used. For other
56lines, `c-basic-offset' is added to the indentation. E.g: 56lines, `c-basic-offset' is added to the indentation. E.g.:
57 57
58int 58int
59neg (int i) <- c-lineup-topmost-intro-cont 59neg (int i) <- c-lineup-topmost-intro-cont
@@ -165,7 +165,7 @@ Works with: topmost-intro-cont."
165As a special case, if the indented line is inside a brace block 165As a special case, if the indented line is inside a brace block
166construct, the indentation is `c-basic-offset' only. This is intended 166construct, the indentation is `c-basic-offset' only. This is intended
167as a \"DWIM\" measure in cases like macros that contains statement 167as a \"DWIM\" measure in cases like macros that contains statement
168blocks, e.g: 168blocks, e.g.:
169 169
170A_VERY_LONG_MACRO_NAME ({ 170A_VERY_LONG_MACRO_NAME ({
171 some (code, with + long, lines * in[it]); 171 some (code, with + long, lines * in[it]);
@@ -340,7 +340,7 @@ Works with: arglist-cont, arglist-cont-nonempty."
340(defun c-lineup-close-paren (langelem) 340(defun c-lineup-close-paren (langelem)
341 "Line up the closing paren under its corresponding open paren if the 341 "Line up the closing paren under its corresponding open paren if the
342open paren is followed by code. If the open paren ends its line, no 342open paren is followed by code. If the open paren ends its line, no
343indentation is added. E.g: 343indentation is added. E.g.:
344 344
345main (int, main ( 345main (int, main (
346 char ** int, char ** 346 char ** int, char **
@@ -394,7 +394,7 @@ Works with: stream-op."
394 394
395(defun c-lineup-multi-inher (langelem) 395(defun c-lineup-multi-inher (langelem)
396 "Line up the classes in C++ multiple inheritance clauses and member 396 "Line up the classes in C++ multiple inheritance clauses and member
397initializers under each other. E.g: 397initializers under each other. E.g.:
398 398
399class Foo: Foo::Foo (int a, int b): 399class Foo: Foo::Foo (int a, int b):
400 public Cyphr, Cyphr (a), 400 public Cyphr, Cyphr (a),
@@ -439,7 +439,7 @@ Works with: inher-cont, member-init-cont."
439If class names follow on the same line as the implements/extends 439If class names follow on the same line as the implements/extends
440keyword, they are lined up under each other. Otherwise, they are 440keyword, they are lined up under each other. Otherwise, they are
441indented by adding `c-basic-offset' to the column of the keyword. 441indented by adding `c-basic-offset' to the column of the keyword.
442E.g: 442E.g.:
443 443
444class Foo class Foo 444class Foo class Foo
445 extends extends Cyphr, 445 extends extends Cyphr,
@@ -461,7 +461,7 @@ If exception names follow on the same line as the throws keyword,
461they are lined up under each other. Otherwise, they are indented by 461they are lined up under each other. Otherwise, they are indented by
462adding `c-basic-offset' to the column of the throws keyword. The 462adding `c-basic-offset' to the column of the throws keyword. The
463throws keyword itself is also indented by `c-basic-offset' from the 463throws keyword itself is also indented by `c-basic-offset' from the
464function declaration start if it doesn't hang. E.g: 464function declaration start if it doesn't hang. E.g.:
465 465
466int foo() int foo() throws Cyphr, 466int foo() int foo() throws Cyphr,
467 throws <-> Bar, <- c-lineup-java-throws 467 throws <-> Bar, <- c-lineup-java-throws
@@ -485,7 +485,7 @@ Works with: func-decl-cont."
485 485
486(defun c-indent-one-line-block (langelem) 486(defun c-indent-one-line-block (langelem)
487 "Indent a one line block `c-basic-offset' extra. 487 "Indent a one line block `c-basic-offset' extra.
488E.g: 488E.g.:
489 489
490if (n > 0) if (n > 0) 490if (n > 0) if (n > 0)
491 {m+=n; n=0;} <-> { <- c-indent-one-line-block 491 {m+=n; n=0;} <-> { <- c-indent-one-line-block
@@ -508,7 +508,7 @@ Work with: Almost all syntactic symbols, but most useful on *-open."
508 508
509(defun c-indent-multi-line-block (langelem) 509(defun c-indent-multi-line-block (langelem)
510 "Indent a multi line block `c-basic-offset' extra. 510 "Indent a multi line block `c-basic-offset' extra.
511E.g: 511E.g.:
512 512
513int *foo[] = { int *foo[] = { 513int *foo[] = { int *foo[] = {
514 NULL, NULL, 514 NULL, NULL,
@@ -670,7 +670,7 @@ Works with: comment-intro."
670(defun c-lineup-knr-region-comment (langelem) 670(defun c-lineup-knr-region-comment (langelem)
671 "Line up a comment in the \"K&R region\" with the declaration. 671 "Line up a comment in the \"K&R region\" with the declaration.
672That is the region between the function or class header and the 672That is the region between the function or class header and the
673beginning of the block. E.g: 673beginning of the block. E.g.:
674 674
675int main() 675int main()
676/* This is the main function. */ <- c-lineup-knr-region-comment 676/* This is the main function. */ <- c-lineup-knr-region-comment
@@ -693,7 +693,7 @@ Works with: comment-intro."
693 693
694(defun c-lineup-runin-statements (langelem) 694(defun c-lineup-runin-statements (langelem)
695 "Line up statements when the first statement is on the same line as 695 "Line up statements when the first statement is on the same line as
696the block opening brace. E.g: 696the block opening brace. E.g.:
697 697
698int main() 698int main()
699{ puts (\"Hello world!\"); 699{ puts (\"Hello world!\");
@@ -794,7 +794,7 @@ arglist-cont-nonempty."
794 "Line up \"cascaded calls\" under each other. 794 "Line up \"cascaded calls\" under each other.
795If the line begins with \"->\" or \".\" and the preceding line ends 795If the line begins with \"->\" or \".\" and the preceding line ends
796with one or more function calls preceded by the same token, then the 796with one or more function calls preceded by the same token, then the
797arrow is lined up with the first of those tokens. E.g: 797arrow is lined up with the first of those tokens. E.g.:
798 798
799result = proc->add(17)->add(18) 799result = proc->add(17)->add(18)
800 ->add(19) + <- c-lineup-cascaded-calls 800 ->add(19) + <- c-lineup-cascaded-calls
@@ -839,7 +839,7 @@ arglist-cont-nonempty."
839(defun c-lineup-string-cont (langelem) 839(defun c-lineup-string-cont (langelem)
840 "Line up a continued string under the one it continues. 840 "Line up a continued string under the one it continues.
841A continued string in this sense is where a string literal follows 841A continued string in this sense is where a string literal follows
842directly after another one. E.g: 842directly after another one. E.g.:
843 843
844result = prefix + \"A message \" 844result = prefix + \"A message \"
845 \"string.\"; <- c-lineup-string-cont 845 \"string.\"; <- c-lineup-string-cont
@@ -921,7 +921,7 @@ Works with: objc-method-call-cont."
921 ; no complete argument to indent yet 921 ; no complete argument to indent yet
922 (throw 'no-idea nil)))) 922 (throw 'no-idea nil))))
923 923
924 (extra (save-excursion 924 (extra (save-excursion
925 ; indent parameter to argument if needed 925 ; indent parameter to argument if needed
926 (back-to-indentation) 926 (back-to-indentation)
927 (c-backward-syntactic-ws (c-langelem-pos langelem)) 927 (c-backward-syntactic-ws (c-langelem-pos langelem))
@@ -1023,7 +1023,7 @@ Works with: inlambda, inexpr-statement, inexpr-class."
1023(defun c-lineup-whitesmith-in-block (langelem) 1023(defun c-lineup-whitesmith-in-block (langelem)
1024 "Line up lines inside a block in Whitesmith style. 1024 "Line up lines inside a block in Whitesmith style.
1025It's done in a way that works both when the opening brace hangs and 1025It's done in a way that works both when the opening brace hangs and
1026when it doesn't. E.g: 1026when it doesn't. E.g.:
1027 1027
1028something 1028something
1029 { something { 1029 { something {
@@ -1085,7 +1085,7 @@ arglist-cont."
1085 1085
1086(defun c-lineup-cpp-define (langelem) 1086(defun c-lineup-cpp-define (langelem)
1087 "Line up macro continuation lines according to the indentation of 1087 "Line up macro continuation lines according to the indentation of
1088the construct preceding the macro. E.g: 1088the construct preceding the macro. E.g.:
1089 1089
1090v beg of preceding constr v beg of preceding constr 1090v beg of preceding constr v beg of preceding constr
1091 int dribble() { 1091 int dribble() {
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index 89cf89f8770..0d5549e4441 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -2819,7 +2819,7 @@ undefined whether identifier syntax (see `c-identifier-syntax-table')
2819is in effect or not. 2819is in effect or not.
2820 2820
2821Note that it's used in cases like after \"foo (bar)\" so it should 2821Note that it's used in cases like after \"foo (bar)\" so it should
2822only match when it's certain that it's a declaration, e.g \"{\" but 2822only match when it's certain that it's a declaration, e.g., \"{\" but
2823not \",\" or \";\"." 2823not \",\" or \";\"."
2824 t "{" 2824 t "{"
2825 ;; If K&R style declarations should be recognized then one could 2825 ;; If K&R style declarations should be recognized then one could
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index d2a9617e28e..9e9e2f0b090 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -1949,7 +1949,7 @@ Runs `compilation-mode-hook' with `run-mode-hooks' (which see).
1949 "This is like `define-derived-mode' without the PARENT argument. 1949 "This is like `define-derived-mode' without the PARENT argument.
1950The parent is always `compilation-mode' and the customizable `compilation-...' 1950The parent is always `compilation-mode' and the customizable `compilation-...'
1951variables are also set from the name of the mode you have chosen, 1951variables are also set from the name of the mode you have chosen,
1952by replacing the first word, e.g `compilation-scroll-output' from 1952by replacing the first word, e.g., `compilation-scroll-output' from
1953`grep-scroll-output' if that variable exists." 1953`grep-scroll-output' if that variable exists."
1954 (let ((mode-name (replace-regexp-in-string "-mode\\'" "" (symbol-name mode)))) 1954 (let ((mode-name (replace-regexp-in-string "-mode\\'" "" (symbol-name mode))))
1955 `(define-derived-mode ,mode compilation-mode ,name 1955 `(define-derived-mode ,mode compilation-mode ,name
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index 7d34269b6b5..e8678fe6281 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -1551,7 +1551,7 @@ and POD directives (Disabled by default, see `cperl-electric-keywords'.)
1551 1551
1552The user types the keyword immediately followed by a space, which 1552The user types the keyword immediately followed by a space, which
1553causes the construct to be expanded, and the point is positioned where 1553causes the construct to be expanded, and the point is positioned where
1554she is most likely to want to be. eg. when the user types a space 1554she is most likely to want to be. E.g., when the user types a space
1555following \"if\" the following appears in the buffer: if () { or if () 1555following \"if\" the following appears in the buffer: if () { or if ()
1556} { } and the cursor is between the parentheses. The user can then 1556} { } and the cursor is between the parentheses. The user can then
1557type some boolean expression within the parens. Having done that, 1557type some boolean expression within the parens. Having done that,
diff --git a/lisp/progmodes/dcl-mode.el b/lisp/progmodes/dcl-mode.el
index 76e94875c8d..8a868883a11 100644
--- a/lisp/progmodes/dcl-mode.el
+++ b/lisp/progmodes/dcl-mode.el
@@ -168,8 +168,8 @@ nil to get the default indentation.
168 168
169INDENT-TYPE is a symbol indicating what kind of indentation should be done. 169INDENT-TYPE is a symbol indicating what kind of indentation should be done.
170It can have the following values: 170It can have the following values:
171 indent the lines indentation should be increased, e.g. after THEN. 171 indent the indentation should be increased, e.g., after THEN.
172 outdent the lines indentation should be decreased, e.g a line with ENDIF. 172 outdent the indentation should be decreased, e.g., a line with ENDIF.
173 first-line indentation for the first line in a buffer or SUBROUTINE. 173 first-line indentation for the first line in a buffer or SUBROUTINE.
174CUR-INDENT is the indentation of the preceding command line. 174CUR-INDENT is the indentation of the preceding command line.
175EXTRA-INDENT is the default change in indentation for this line 175EXTRA-INDENT is the default change in indentation for this line
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index 5f76cb4bbc5..4aa1ac270d5 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -1791,7 +1791,7 @@ statement spanning multiple lines; otherwise, return nil."
1791 (not (eq (char-before) ?\;))) 1791 (not (eq (char-before) ?\;)))
1792 (and (>= pos (point-at-bol)) 1792 (and (>= pos (point-at-bol))
1793 (<= pos (point-at-eol))))))) 1793 (<= pos (point-at-eol)))))))
1794 (condition-case err 1794 (condition-case nil
1795 (backward-sexp) 1795 (backward-sexp)
1796 (scan-error (setq at-opening-bracket t)))) 1796 (scan-error (setq at-opening-bracket t))))
1797 (when (looking-at js--declaration-keyword-re) 1797 (when (looking-at js--declaration-keyword-re)
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el
index 19d1ffe0a3b..b1017bb6302 100644
--- a/lisp/progmodes/ruby-mode.el
+++ b/lisp/progmodes/ruby-mode.el
@@ -519,6 +519,12 @@ Can be one of `heredoc', `modifier', `expr-qstr', `expr-re'."
519 (concat "[^\\]\\(\\\\\\\\\\)*" w)) 519 (concat "[^\\]\\(\\\\\\\\\\)*" w))
520 end t))) 520 end t)))
521 (setq in-string (point)) 521 (setq in-string (point))
522 (when (eq (char-syntax (string-to-char w)) ?\()
523 ;; The rest of the literal, when parsed separately, will
524 ;; have the depth of -1. So in the rare case when this
525 ;; number is used despite the in-string status, the
526 ;; depths will balance.
527 (setq depth (1+ depth)))
522 (goto-char end))) 528 (goto-char end)))
523 (t 529 (t
524 (goto-char pnt)))) 530 (goto-char pnt))))
@@ -595,8 +601,7 @@ Can be one of `heredoc', `modifier', `expr-qstr', `expr-re'."
595 (not (or (eq ?_ w) 601 (not (or (eq ?_ w)
596 (eq ?. w))))) 602 (eq ?. w)))))
597 (goto-char pnt) 603 (goto-char pnt)
598 (setq w (char-after (point))) 604 (not (eq ?! (char-after (point))))
599 (not (eq ?! w))
600 (skip-chars-forward " \t") 605 (skip-chars-forward " \t")
601 (goto-char (match-beginning 0)) 606 (goto-char (match-beginning 0))
602 (or (not (looking-at ruby-modifier-re)) 607 (or (not (looking-at ruby-modifier-re))
@@ -877,11 +882,15 @@ calculating indentation on the lines after it."
877(defun ruby-move-to-block (n) 882(defun ruby-move-to-block (n)
878 "Move to the beginning (N < 0) or the end (N > 0) of the 883 "Move to the beginning (N < 0) or the end (N > 0) of the
879current block, a sibling block, or an outer block. Do that (abs N) times." 884current block, a sibling block, or an outer block. Do that (abs N) times."
880 (let ((orig (point)) 885 (let ((signum (if (> n 0) 1 -1))
881 (start (ruby-calculate-indent))
882 (signum (if (> n 0) 1 -1))
883 (backward (< n 0)) 886 (backward (< n 0))
884 down pos done) 887 (depth (or (nth 2 (ruby-parse-region (line-beginning-position)
888 (line-end-position)))
889 0))
890 down done)
891 (when (< (* depth signum) 0)
892 ;; Moving end -> end or beginning -> beginning.
893 (setq depth 0))
885 (dotimes (_ (abs n)) 894 (dotimes (_ (abs n))
886 (setq done nil) 895 (setq done nil)
887 (setq down (save-excursion 896 (setq down (save-excursion
@@ -905,17 +914,19 @@ current block, a sibling block, or an outer block. Do that (abs N) times."
905 ((and backward (looking-at "^=end\\>")) 914 ((and backward (looking-at "^=end\\>"))
906 (re-search-backward "^=begin\\>")) 915 (re-search-backward "^=begin\\>"))
907 (t 916 (t
908 (setq pos (ruby-calculate-indent)) 917 (incf depth (or (nth 2 (ruby-parse-region (point)
918 (line-end-position)))
919 0))
909 (cond 920 (cond
910 ;; Deeper indentation, we found a block. 921 ;; Deeper indentation, we found a block.
911 ;; FIXME: We can't recognize empty blocks this way. 922 ;; FIXME: We can't recognize empty blocks this way.
912 ((< start pos) 923 ((> (* signum depth) 0)
913 (setq down t)) 924 (setq down t))
914 ;; Block found, and same indentation as when started, stop. 925 ;; Block found, and same indentation as when started, stop.
915 ((and down (= pos start)) 926 ((and down (zerop depth))
916 (setq done t)) 927 (setq done t))
917 ;; Shallower indentation, means outer block, can stop now. 928 ;; Shallower indentation, means outer block, can stop now.
918 ((> start pos) 929 ((< (* signum depth) 0)
919 (setq done t))))) 930 (setq done t)))))
920 (if done 931 (if done
921 (save-excursion 932 (save-excursion
diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el
index 55be6222586..5571a905f85 100644
--- a/lisp/progmodes/verilog-mode.el
+++ b/lisp/progmodes/verilog-mode.el
@@ -4777,7 +4777,7 @@ primitive or interface named NAME."
4777 )))))))))) 4777 ))))))))))
4778 4778
4779(defun verilog-get-expr() 4779(defun verilog-get-expr()
4780 "Grab expression at point, e.g, case ( a | b & (c ^d))." 4780 "Grab expression at point, e.g., case ( a | b & (c ^d))."
4781 (let* ((b (progn 4781 (let* ((b (progn
4782 (verilog-forward-syntactic-ws) 4782 (verilog-forward-syntactic-ws)
4783 (skip-chars-forward " \t") 4783 (skip-chars-forward " \t")
diff --git a/lisp/server.el b/lisp/server.el
index 64224d2a310..05ac345d904 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -154,7 +154,7 @@ long-lived shared key will decrease security (especially since
154the key is transmitted as plain-text). 154the key is transmitted as plain-text).
155 155
156In some situations however, it can be difficult to share randomly 156In some situations however, it can be difficult to share randomly
157generated passwords with remote hosts (eg. no shared directory), 157generated passwords with remote hosts (e.g., no shared directory),
158so you can set the key with this variable and then copy the 158so you can set the key with this variable and then copy the
159server file to the remote host (with possible changes to IP 159server file to the remote host (with possible changes to IP
160address and/or port if that applies). 160address and/or port if that applies).
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index c22b5482b3e..c03d64a2f54 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -36,7 +36,7 @@ If `check', try to check if it does.
36If a list, assume that the listed features are supported, without checking. 36If a list, assume that the listed features are supported, without checking.
37 37
38The relevant features are: 38The relevant features are:
39 modifyOtherKeys -- if supported, more key bindings work (e.g, \"\\C-,\") 39 modifyOtherKeys -- if supported, more key bindings work (e.g., \"\\C-,\")
40 reportBackground -- if supported, Xterm reports its background color 40 reportBackground -- if supported, Xterm reports its background color
41" 41"
42 :version "24.1" 42 :version "24.1"
diff --git a/lisp/textmodes/two-column.el b/lisp/textmodes/two-column.el
index c67aa338791..23e90552096 100644
--- a/lisp/textmodes/two-column.el
+++ b/lisp/textmodes/two-column.el
@@ -259,9 +259,9 @@ if that value is non-nil.
259These buffers can be edited separately, for example with `fill-paragraph'. 259These buffers can be edited separately, for example with `fill-paragraph'.
260If you want to disable parallel scrolling temporarily, use \\[2C-toggle-autoscroll] . 260If you want to disable parallel scrolling temporarily, use \\[2C-toggle-autoscroll] .
261 261
262If you include long lines, i.e which will span both columns (eg. 262If you include long lines that span both columns (e.g., source
263source code), they should be in what will be the first column, with 263code), they should be in what will be the first column, with the
264the associated buffer having empty lines next to them. 264associated buffer having empty lines next to them.
265 265
266Potential uses are writing bilingual texts, or editing the comments of a 266Potential uses are writing bilingual texts, or editing the comments of a
267source code. See the file lisp/two-column.el for detailed examples. 267source code. See the file lisp/two-column.el for detailed examples.
diff --git a/lisp/tmm.el b/lisp/tmm.el
index 542270a8761..cd91742649d 100644
--- a/lisp/tmm.el
+++ b/lisp/tmm.el
@@ -1,4 +1,4 @@
1;;; tmm.el --- text mode access to menu-bar 1;;; tmm.el --- text mode access to menu-bar -*- lexical-binding: t -*-
2 2
3;; Copyright (C) 1994-1996, 2000-2013 Free Software Foundation, Inc. 3;; Copyright (C) 1994-1996, 2000-2013 Free Software Foundation, Inc.
4 4
@@ -54,36 +54,37 @@ we make that menu bar item (the one at that position) the default choice."
54 (interactive) 54 (interactive)
55 (run-hooks 'menu-bar-update-hook) 55 (run-hooks 'menu-bar-update-hook)
56 ;; Obey menu-bar-final-items; put those items last. 56 ;; Obey menu-bar-final-items; put those items last.
57 (let ((menu-bar (tmm-get-keybind [menu-bar])) 57 (let ((menu-bar '())
58 (menu-end '())
58 menu-bar-item) 59 menu-bar-item)
59 (let ((list menu-bar-final-items)) 60 (map-keymap
60 (while list 61 (lambda (key binding)
61 (let ((item (car list))) 62 (push (cons key binding)
62 ;; ITEM is the name of an item that we want to put last. 63 ;; If KEY is the name of an item that we want to put last,
63 ;; Find it in MENU-BAR and move it to the end. 64 ;; move it to the end.
64 (let ((this-one (assq item menu-bar))) 65 (if (memq key menu-bar-final-items)
65 (setq menu-bar (append (delq this-one menu-bar) 66 menu-end
66 (list this-one))))) 67 menu-bar)))
67 (setq list (cdr list)))) 68 (tmm-get-keybind [menu-bar]))
69 (setq menu-bar `(keymap ,@(nreverse menu-bar) ,@(nreverse menu-end)))
68 (if x-position 70 (if x-position
69 (let ((tail menu-bar) (column 0) 71 (let ((column 0))
70 this-one name visible) 72 (catch 'done
71 (while (and tail (<= column x-position)) 73 (map-keymap
72 (setq this-one (car tail)) 74 (lambda (key binding)
73 (if (and (consp this-one) 75 (when (> column x-position)
74 (consp (cdr this-one)) 76 (setq menu-bar-item key)
75 (setq name ;simple menu 77 (throw 'done nil))
76 (cond ((stringp (nth 1 this-one)) 78 (pcase binding
77 (nth 1 this-one)) 79 ((or `(,(and (pred stringp) name) . ,_) ;Simple menu item.
78 ;extended menu 80 `(menu-item ,name ,_cmd ;Extended menu item.
79 ((stringp (nth 2 this-one)) 81 . ,(and props
80 (setq visible (plist-get 82 (guard (let ((visible
81 (nthcdr 4 this-one) :visible)) 83 (plist-get props :visible)))
82 (unless (and visible (not (eval visible))) 84 (or (null visible)
83 (nth 2 this-one)))))) 85 (eval visible)))))))
84 (setq column (+ column (length name) 1))) 86 (setq column (+ column (length name) 1)))))
85 (setq tail (cdr tail))) 87 menu-bar))))
86 (setq menu-bar-item (car this-one))))
87 (tmm-prompt menu-bar nil menu-bar-item))) 88 (tmm-prompt menu-bar nil menu-bar-item)))
88 89
89;;;###autoload 90;;;###autoload
@@ -138,6 +139,12 @@ specify nil for this variable."
138 "Face used for inactive menu items." 139 "Face used for inactive menu items."
139 :group 'tmm) 140 :group 'tmm)
140 141
142(defun tmm--completion-table (items)
143 (lambda (string pred action)
144 (if (eq action 'metadata)
145 '(metadata (display-sort-function . identity))
146 (complete-with-action action items string pred))))
147
141;;;###autoload 148;;;###autoload
142(defun tmm-prompt (menu &optional in-popup default-item) 149(defun tmm-prompt (menu &optional in-popup default-item)
143 "Text-mode emulation of calling the bindings in keymap. 150 "Text-mode emulation of calling the bindings in keymap.
@@ -174,6 +181,7 @@ Its value should be an event that has a binding in MENU."
174 ((vectorp elt) 181 ((vectorp elt)
175 (dotimes (i (length elt)) 182 (dotimes (i (length elt))
176 (tmm-get-keymap (cons i (aref elt i)) not-menu)))))) 183 (tmm-get-keymap (cons i (aref elt i)) not-menu))))))
184 (setq tmm-km-list (nreverse tmm-km-list))
177 ;; Choose an element of tmm-km-list; put it in choice. 185 ;; Choose an element of tmm-km-list; put it in choice.
178 (if (and not-menu (= 1 (length tmm-km-list))) 186 (if (and not-menu (= 1 (length tmm-km-list)))
179 ;; If this is the top-level of an x-popup-menu menu, 187 ;; If this is the top-level of an x-popup-menu menu,
@@ -226,7 +234,7 @@ Its value should be an event that has a binding in MENU."
226 (completing-read 234 (completing-read
227 (concat gl-str 235 (concat gl-str
228 " (up/down to change, PgUp to menu): ") 236 " (up/down to change, PgUp to menu): ")
229 tmm-km-list nil t nil 237 (tmm--completion-table tmm-km-list) nil t nil
230 (cons 'history 238 (cons 'history
231 (- (* 2 history-len) index-of-default)))))))) 239 (- (* 2 history-len) index-of-default))))))))
232 (setq choice (cdr (assoc out tmm-km-list))) 240 (setq choice (cdr (assoc out tmm-km-list)))
@@ -497,46 +505,7 @@ If KEYSEQ is a prefix key that has local and global bindings,
497we merge them into a single keymap which shows the proper order of the menu. 505we merge them into a single keymap which shows the proper order of the menu.
498However, for the menu bar itself, the value does not take account 506However, for the menu bar itself, the value does not take account
499of `menu-bar-final-items'." 507of `menu-bar-final-items'."
500 (let (allbind bind minorbind localbind globalbind) 508 (lookup-key (cons 'keymap (nreverse (current-active-maps))) keyseq))
501 (setq bind (key-binding keyseq))
502 ;; If KEYSEQ is a prefix key, then BIND is either nil
503 ;; or a symbol defined as a keymap (which satisfies keymapp).
504 (if (keymapp bind)
505 (setq bind nil))
506 ;; If we have a non-keymap definition, return that.
507 (or bind
508 (progn
509 ;; Otherwise, it is a prefix, so make a list of the subcommands.
510 ;; Make a list of all the bindings in all the keymaps.
511 ;; FIXME: we'd really like to just use `key-binding' now that it
512 ;; returns a keymap that contains really all the bindings under that
513 ;; prefix, but `keyseq' is always [menu-bar], so the desired order of
514 ;; the bindings is difficult to recover.
515 (setq minorbind (mapcar 'cdr (minor-mode-key-binding keyseq)))
516 (setq localbind (local-key-binding keyseq))
517 (setq globalbind (copy-sequence (cdr (global-key-binding keyseq))))
518
519 ;; If items have been redefined/undefined locally, remove them from
520 ;; the global list.
521 (dolist (minor minorbind)
522 (dolist (item (cdr minor))
523 (setq globalbind (assq-delete-all (car-safe item) globalbind))))
524 (dolist (item (cdr localbind))
525 (setq globalbind (assq-delete-all (car-safe item) globalbind)))
526
527 (setq globalbind (cons 'keymap globalbind))
528 (setq allbind (cons globalbind (cons localbind minorbind)))
529
530 ;; Merge all the elements of ALLBIND into one keymap.
531 (dolist (in allbind)
532 (if (and (symbolp in) (keymapp in))
533 (setq in (symbol-function in)))
534 (and in (keymapp in)
535 (setq bind (if (keymapp bind)
536 (nconc bind (copy-sequence (cdr in)))
537 (copy-sequence in)))))
538 ;; Return that keymap.
539 bind))))
540 509
541(provide 'tmm) 510(provide 'tmm)
542 511
diff --git a/lisp/vc/ediff-util.el b/lisp/vc/ediff-util.el
index 2456d6ede41..fd53aabd33c 100644
--- a/lisp/vc/ediff-util.el
+++ b/lisp/vc/ediff-util.el
@@ -143,6 +143,7 @@ to invocation.")
143 'ediff-previous-difference nil)) 143 'ediff-previous-difference nil))
144 ;; must come after C-h, or else C-h wipes out backspace's binding in XEmacs 144 ;; must come after C-h, or else C-h wipes out backspace's binding in XEmacs
145 (define-key ediff-mode-map [backspace] 'ediff-previous-difference) 145 (define-key ediff-mode-map [backspace] 'ediff-previous-difference)
146 (define-key ediff-mode-map [?\S-\ ] 'ediff-previous-difference)
146 (define-key ediff-mode-map "n" 'ediff-next-difference) 147 (define-key ediff-mode-map "n" 'ediff-next-difference)
147 (define-key ediff-mode-map " " 'ediff-next-difference) 148 (define-key ediff-mode-map " " 'ediff-next-difference)
148 (define-key ediff-mode-map "j" 'ediff-jump-to-difference) 149 (define-key ediff-mode-map "j" 'ediff-jump-to-difference)
@@ -786,7 +787,12 @@ Reestablish the default three-window display."
786 (frame-live-p ediff-control-frame) 787 (frame-live-p ediff-control-frame)
787 (not ediff-use-long-help-message) 788 (not ediff-use-long-help-message)
788 (not (ediff-frame-iconified-p ediff-control-frame))) 789 (not (ediff-frame-iconified-p ediff-control-frame)))
789 (raise-frame ediff-control-frame)) 790 (if (fboundp 'select-frame-set-input-focus)
791 (select-frame-set-input-focus ediff-control-frame)
792 (raise-frame ediff-control-frame)
793 (select-frame ediff-control-frame)
794 (if (fboundp 'focus-frame)
795 (focus-frame ediff-control-frame))))
790 796
791 ;; Redisplay whatever buffers are showing, if there is a selected difference 797 ;; Redisplay whatever buffers are showing, if there is a selected difference
792 (let ((control-frame ediff-control-frame) 798 (let ((control-frame ediff-control-frame)
diff --git a/nt/ChangeLog b/nt/ChangeLog
index 1d3f7b7f49f..18911b90fac 100644
--- a/nt/ChangeLog
+++ b/nt/ChangeLog
@@ -1,3 +1,11 @@
12013-02-13 Juanma Barranquero <lekktu@gmail.com>
2
3 * config.nt: Sync with autogen/config.in.
4 (GC_MARK_STACK): Remove.
5 (GNULIB_FDOPENDIR, HAVE_DECL_FDOPENDIR, HAVE_DECL_MEMRCHR)
6 (HAVE_DIRENT_H, HAVE_FDOPENDIR, HAVE_FSTATAT, HAVE_MEMRCHR)
7 (HAVE_WORKING_FSTATAT_ZERO_FLAG, _NETBSD_SOURCE): New macros.
8
12013-02-12 Eli Zaretskii <eliz@gnu.org> 92013-02-12 Eli Zaretskii <eliz@gnu.org>
2 10
3 * inc/ms-w32.h: Add prototype for memrchr. 11 * inc/ms-w32.h: Add prototype for memrchr.
diff --git a/nt/config.nt b/nt/config.nt
index 2a8c54baa47..61e56174bb4 100644
--- a/nt/config.nt
+++ b/nt/config.nt
@@ -164,10 +164,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
164/* Mark a secondary stack, like the register stack on the ia64. */ 164/* Mark a secondary stack, like the register stack on the ia64. */
165#undef GC_MARK_SECONDARY_STACK 165#undef GC_MARK_SECONDARY_STACK
166 166
167/* Define to GC_USE_GCPROS_AS_BEFORE if conservative garbage collection is not
168 known to work. */
169#define GC_MARK_STACK 1
170
171/* Define if setjmp is known to save all registers relevant for conservative 167/* Define if setjmp is known to save all registers relevant for conservative
172 garbage collection in the jmp_buf. 168 garbage collection in the jmp_buf.
173 MSVC ignores the "register" keyword, so test fails even though 169 MSVC ignores the "register" keyword, so test fails even though
@@ -201,6 +197,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
201#undef GNULIB_FACCESSAT 197#undef GNULIB_FACCESSAT
202 198
203/* Define to a C preprocessor expression that evaluates to 1 or 0, depending 199/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
200 whether the gnulib module fdopendir shall be considered present. */
201#undef GNULIB_FDOPENDIR
202
203/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
204 whether the gnulib module fscanf shall be considered present. */ 204 whether the gnulib module fscanf shall be considered present. */
205#undef GNULIB_FSCANF 205#undef GNULIB_FSCANF
206 206
@@ -286,6 +286,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
286/* Define to 1 if you have the `dbus_watch_get_unix_fd' function. */ 286/* Define to 1 if you have the `dbus_watch_get_unix_fd' function. */
287#undef HAVE_DBUS_WATCH_GET_UNIX_FD 287#undef HAVE_DBUS_WATCH_GET_UNIX_FD
288 288
289/* Define to 1 if you have the declaration of `fdopendir', and to 0 if you
290 don't. */
291#undef HAVE_DECL_FDOPENDIR
292
289/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't. 293/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
290 */ 294 */
291#define HAVE_DECL_GETENV 1 295#define HAVE_DECL_GETENV 1
@@ -294,6 +298,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
294 don't. */ 298 don't. */
295#undef HAVE_DECL_LOCALTIME_R 299#undef HAVE_DECL_LOCALTIME_R
296 300
301/* Define to 1 if you have the declaration of `memrchr', and to 0 if you
302 don't. */
303#undef HAVE_DECL_MEMRCHR
304
297/* Define to 1 if you have the declaration of `strmode', and to 0 if you 305/* Define to 1 if you have the declaration of `strmode', and to 0 if you
298 don't. */ 306 don't. */
299#undef HAVE_DECL_STRMODE 307#undef HAVE_DECL_STRMODE
@@ -343,6 +351,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
343/* Define to 1 if you have the `difftime' function. */ 351/* Define to 1 if you have the `difftime' function. */
344#undef HAVE_DIFFTIME 352#undef HAVE_DIFFTIME
345 353
354/* Define to 1 if you have the <dirent.h> header file. */
355#undef HAVE_DIRENT_H
356
346/* Define to 1 if you have the 'dup2' function. */ 357/* Define to 1 if you have the 'dup2' function. */
347#define HAVE_DUP2 1 358#define HAVE_DUP2 1
348 359
@@ -367,6 +378,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
367/* Define to 1 if you have the `faccessat' function. */ 378/* Define to 1 if you have the `faccessat' function. */
368#undef HAVE_FACCESSAT 379#undef HAVE_FACCESSAT
369 380
381/* Define to 1 if you have the `fdopendir' function. */
382#undef HAVE_FDOPENDIR
383
370/* Define to 1 if you have the `fork' function. */ 384/* Define to 1 if you have the `fork' function. */
371#undef HAVE_FORK 385#undef HAVE_FORK
372 386
@@ -379,6 +393,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
379/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ 393/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
380#undef HAVE_FSEEKO 394#undef HAVE_FSEEKO
381 395
396/* Define to 1 if you have the `fstatat' function. */
397#undef HAVE_FSTATAT
398
382/* Define to 1 if you have the `fsync' function. */ 399/* Define to 1 if you have the `fsync' function. */
383#define HAVE_FSYNC 1 400#define HAVE_FSYNC 1
384 401
@@ -686,6 +703,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
686/* Define to 1 if you have the <memory.h> header file. */ 703/* Define to 1 if you have the <memory.h> header file. */
687#undef HAVE_MEMORY_H 704#undef HAVE_MEMORY_H
688 705
706/* Define to 1 if you have the `memrchr' function. */
707#undef HAVE_MEMRCHR
708
689/* Define to 1 if you have mouse menus. (This is automatic if you use X, but 709/* Define to 1 if you have mouse menus. (This is automatic if you use X, but
690 the option to specify it remains.) It is also defined with other window 710 the option to specify it remains.) It is also defined with other window
691 systems that support xmenu.c. */ 711 systems that support xmenu.c. */
@@ -1051,6 +1071,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
1051/* Define to 1 if `fork' works. */ 1071/* Define to 1 if `fork' works. */
1052#undef HAVE_WORKING_FORK 1072#undef HAVE_WORKING_FORK
1053 1073
1074/* Define to 1 if fstatat (..., 0) works. For example, it does not work in AIX
1075 7.1. */
1076#undef HAVE_WORKING_FSTATAT_ZERO_FLAG
1077
1054/* Define if utimes works properly. */ 1078/* Define if utimes works properly. */
1055#undef HAVE_WORKING_UTIMES 1079#undef HAVE_WORKING_UTIMES
1056 1080
@@ -1388,6 +1412,38 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
1388/* Define to 1 if using the Motif X toolkit. */ 1412/* Define to 1 if using the Motif X toolkit. */
1389#undef USE_MOTIF 1413#undef USE_MOTIF
1390 1414
1415/* Enable extensions on AIX 3, Interix. */
1416#ifndef _ALL_SOURCE
1417# undef _ALL_SOURCE
1418#endif
1419/* Enable general extensions on OS X. */
1420#ifndef _DARWIN_C_SOURCE
1421# undef _DARWIN_C_SOURCE
1422#endif
1423/* Enable GNU extensions on systems that have them. */
1424#ifndef _GNU_SOURCE
1425# undef _GNU_SOURCE
1426#endif
1427/* Enable threading extensions on Solaris. */
1428#ifndef _POSIX_PTHREAD_SEMANTICS
1429# undef _POSIX_PTHREAD_SEMANTICS
1430#endif
1431/* Enable extensions on HP NonStop. */
1432#ifndef _TANDEM_SOURCE
1433# undef _TANDEM_SOURCE
1434#endif
1435/* Enable X/Open extensions if necessary. HP-UX 11.11 defines
1436 mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of
1437 whether compiling with -Ae or -D_HPUX_SOURCE=1. */
1438#ifndef _XOPEN_SOURCE
1439# undef _XOPEN_SOURCE
1440#endif
1441/* Enable general extensions on Solaris. */
1442#ifndef __EXTENSIONS__
1443# undef __EXTENSIONS__
1444#endif
1445
1446
1391/* Define to 1 if we should use toolkit scroll bars. */ 1447/* Define to 1 if we should use toolkit scroll bars. */
1392#define USE_TOOLKIT_SCROLL_BARS 1 1448#define USE_TOOLKIT_SCROLL_BARS 1
1393 1449
@@ -1452,10 +1508,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
1452/* Define if the system is AIX. */ 1508/* Define if the system is AIX. */
1453#undef _AIX 1509#undef _AIX
1454 1510
1455/* Enable large inode numbers on Mac OS X. */ 1511/* Enable large inode numbers on Mac OS X 10.5. */
1456#ifndef _DARWIN_USE_64_BIT_INODE 1512#undef _DARWIN_USE_64_BIT_INODE
1457# define _DARWIN_USE_64_BIT_INODE 1
1458#endif
1459 1513
1460/* Number of bits in a file offset, on hosts where this is settable. */ 1514/* Number of bits in a file offset, on hosts where this is settable. */
1461#undef _FILE_OFFSET_BITS 1515#undef _FILE_OFFSET_BITS
@@ -1476,6 +1530,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
1476/* Define if GNUstep uses ObjC exceptions. */ 1530/* Define if GNUstep uses ObjC exceptions. */
1477#undef _NATIVE_OBJC_EXCEPTIONS 1531#undef _NATIVE_OBJC_EXCEPTIONS
1478 1532
1533/* Define to 1 to make NetBSD features available. MINIX 3 needs this. */
1534#undef _NETBSD_SOURCE
1535
1479/* The _Noreturn keyword of C11. */ 1536/* The _Noreturn keyword of C11. */
1480#if ! (defined _Noreturn \ 1537#if ! (defined _Noreturn \
1481 || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__)) 1538 || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__))
@@ -1499,35 +1556,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
1499/* Needed for system_process_attributes on Solaris. */ 1556/* Needed for system_process_attributes on Solaris. */
1500#undef _STRUCTURED_PROC 1557#undef _STRUCTURED_PROC
1501 1558
1502/* Define to 500 only on HP-UX. */
1503#undef _XOPEN_SOURCE
1504
1505/* Enable extensions on AIX 3, Interix. */
1506#ifndef _ALL_SOURCE
1507# undef _ALL_SOURCE
1508#endif
1509/* Enable general extensions on Mac OS X. */
1510#ifndef _DARWIN_C_SOURCE
1511# undef _DARWIN_C_SOURCE
1512#endif
1513/* Enable GNU extensions on systems that have them. */
1514#ifndef _GNU_SOURCE
1515# undef _GNU_SOURCE
1516#endif
1517/* Enable threading extensions on Solaris. */
1518#ifndef _POSIX_PTHREAD_SEMANTICS
1519# undef _POSIX_PTHREAD_SEMANTICS
1520#endif
1521/* Enable extensions on HP NonStop. */
1522#ifndef _TANDEM_SOURCE
1523# undef _TANDEM_SOURCE
1524#endif
1525/* Enable general extensions on Solaris. */
1526#ifndef __EXTENSIONS__
1527# undef __EXTENSIONS__
1528#endif
1529
1530
1531/* Define to rpl_ if the getopt replacement functions and variables should be 1559/* Define to rpl_ if the getopt replacement functions and variables should be
1532 used. */ 1560 used. */
1533#undef __GETOPT_PREFIX 1561#undef __GETOPT_PREFIX
diff --git a/src/ChangeLog b/src/ChangeLog
index 05737bb1194..82cc8f0f552 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,76 @@
12013-02-13 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * keyboard.c (syms_of_keyboard): Further tweaks of docstring.
4
52013-02-13 Dmitry Antipov <dmantipov@yandex.ru>
6
7 * font.c (font_range): Add pos_byte argument. Adjust comment
8 and break long line.
9 * font.h (font_range): Adjust prototype.
10 * composite.c (autocmp_chars): Pass byte position to font_range.
11 Break long line. Remove useless prototype and format comment.
12
132013-02-13 Glenn Morris <rgm@gnu.org>
14
15 * keyboard.c (input-decode-map, key-translation-map): Doc fixes.
16
172013-02-13 Paul Eggert <eggert@cs.ucla.edu>
18
19 Improve AIX port some more (Bug#13650).
20 With this, it should be as good as it was in 23.3, though it's
21 still pretty bad: the dumped emacs does not run. See Mark Fleishman in
22 http://lists.gnu.org/archive/html/help-gnu-emacs/2011-04/msg00287.html
23 * unexaix.c (start_of_text): Remove.
24 (_data, _text): Declare as char[], not int, as AIX manual suggests.
25 (bias, lnnoptr, text_scnptr, data_scnptr, load_scnptr)
26 (orig_load_scnptr, orig_data_scnptr):
27 Now off_t, not long, since they are file offsets.
28 (make_hdr): Use _data, not start_of_data ().
29 This is the key part of the fix.
30 (make_hdr, unrelocate_symbols): Use off_t for file offsets.
31 (unrelocate_symbols): Cast pointers to intptr_t, not to ulong.
32
33 * pre-crt0.c (data_start): Initialize to 1.
34 This ports to compilers that optimize the external declaration
35 'int x = 0;' as if it were 'int x;' to shrink the executable.
36
37 Improve AIX port (Bug#13650).
38 This doesn't fix the bug, but it makes progress: Emacs builds now.
39 * unexaix.c: Include inttypes.h, stdarg.h.
40 (report_error, report_error_1): Mark as _Noreturn.
41 (report_error): Don't report the wrong errno.
42 (report_error_1): Now varargs. All callers changed.
43 (make_hdr): Use uintptr_t, not unsigned, when converting pointers
44 to unsigned. Don't use ADDR_CORRECT, as it no longer exists.
45 (write_ptr): Use %p to print address rather than %lx and a cast
46 to unsigned long. Grow buffer a bit, to be safer.
47
482013-02-13 Eli Zaretskii <eliz@gnu.org>
49
50 * bidi.c (bidi_resolve_neutral): After finding the next
51 non-neutral character, accept NEUTRAL_ON type as well, because
52 directional control characters, such as LRE and RLE, have their
53 type converted to that by bidi_resolve_weak. This avoids aborts
54 when LRE/RLE follows a run of neutrals.
55 (bidi_move_to_visually_next): Assert that return value of
56 bidi_peek_at_next_level is non-negative. Negative values will
57 cause an infloop.
58
592013-02-13 Paul Eggert <eggert@cs.ucla.edu>
60
61 Minor getenv-related fixes.
62 * callproc.c (Fcall_process_region) [!DOS_NT]:
63 Avoid unnecessary duplicate call to getenv.
64 * callproc.c (init_callproc):
65 * dispnew.c (init_display):
66 * sysdep.c (sys_subshell):
67 Omit unnecessary cast of getenv or egetenv.
68
692013-02-13 Juanma Barranquero <lekktu@gmail.com>
70
71 * makefile.w32-in ($(BLD)/filelock.$(O), $(BLD)/sysdep.$(O)):
72 Update dependencies.
73
12013-02-12 Eli Zaretskii <eliz@gnu.org> 742013-02-12 Eli Zaretskii <eliz@gnu.org>
2 75
3 * xdisp.c (redisplay_internal): Don't set w->region_showing to the 76 * xdisp.c (redisplay_internal): Don't set w->region_showing to the
diff --git a/src/bidi.c b/src/bidi.c
index b067c8134e3..db2e48a2ca7 100644
--- a/src/bidi.c
+++ b/src/bidi.c
@@ -1973,6 +1973,7 @@ bidi_resolve_neutral (struct bidi_it *bidi_it)
1973 next_type = STRONG_R; 1973 next_type = STRONG_R;
1974 break; 1974 break;
1975 case WEAK_BN: 1975 case WEAK_BN:
1976 case NEUTRAL_ON: /* W6/Retaining */
1976 if (!bidi_explicit_dir_char (bidi_it->ch)) 1977 if (!bidi_explicit_dir_char (bidi_it->ch))
1977 emacs_abort (); /* can't happen: BNs are skipped */ 1978 emacs_abort (); /* can't happen: BNs are skipped */
1978 /* FALLTHROUGH */ 1979 /* FALLTHROUGH */
@@ -2391,6 +2392,10 @@ bidi_move_to_visually_next (struct bidi_it *bidi_it)
2391 next_level = bidi_peek_at_next_level (bidi_it); 2392 next_level = bidi_peek_at_next_level (bidi_it);
2392 while (next_level != expected_next_level) 2393 while (next_level != expected_next_level)
2393 { 2394 {
2395 /* If next_level is -1, it means we have an unresolved level
2396 in the cache, which at this point should not happen. If
2397 it does, we will infloop. */
2398 eassert (next_level >= 0);
2394 expected_next_level += incr; 2399 expected_next_level += incr;
2395 level_to_search += incr; 2400 level_to_search += incr;
2396 bidi_find_other_level_edge (bidi_it, level_to_search, !ascending); 2401 bidi_find_other_level_edge (bidi_it, level_to_search, !ascending);
diff --git a/src/callproc.c b/src/callproc.c
index cb11ee0cc53..9132c0dd976 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -997,13 +997,11 @@ usage: (call-process-region START END PROGRAM &optional DELETE BUFFER DISPLAY &r
997 tmpdir = Vtemporary_file_directory; 997 tmpdir = Vtemporary_file_directory;
998 else 998 else
999 { 999 {
1000 char *outf;
1000#ifndef DOS_NT 1001#ifndef DOS_NT
1001 if (getenv ("TMPDIR")) 1002 outf = getenv ("TMPDIR");
1002 tmpdir = build_string (getenv ("TMPDIR")); 1003 tmpdir = build_string (outf ? outf : "/tmp/");
1003 else
1004 tmpdir = build_string ("/tmp/");
1005#else /* DOS_NT */ 1004#else /* DOS_NT */
1006 char *outf;
1007 if ((outf = egetenv ("TMPDIR")) 1005 if ((outf = egetenv ("TMPDIR"))
1008 || (outf = egetenv ("TMP")) 1006 || (outf = egetenv ("TMP"))
1009 || (outf = egetenv ("TEMP"))) 1007 || (outf = egetenv ("TEMP")))
@@ -1655,7 +1653,7 @@ init_callproc (void)
1655 if (! file_accessible_directory_p (SSDATA (tempdir))) 1653 if (! file_accessible_directory_p (SSDATA (tempdir)))
1656 dir_warning ("arch-independent data dir", Vdata_directory); 1654 dir_warning ("arch-independent data dir", Vdata_directory);
1657 1655
1658 sh = (char *) getenv ("SHELL"); 1656 sh = getenv ("SHELL");
1659 Vshell_file_name = build_string (sh ? sh : "/bin/sh"); 1657 Vshell_file_name = build_string (sh ? sh : "/bin/sh");
1660 1658
1661#ifdef DOS_NT 1659#ifdef DOS_NT
diff --git a/src/coding.c b/src/coding.c
index b881f162ab9..868fb7df0ea 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -10712,7 +10712,7 @@ reading if you suppress escape sequence detection.
10712 10712
10713The other way to read escape sequences in a file without decoding is 10713The other way to read escape sequences in a file without decoding is
10714to explicitly specify some coding system that doesn't use ISO-2022 10714to explicitly specify some coding system that doesn't use ISO-2022
10715escape sequence (e.g `latin-1') on reading by \\[universal-coding-system-argument]. */); 10715escape sequence (e.g., `latin-1') on reading by \\[universal-coding-system-argument]. */);
10716 inhibit_iso_escape_detection = 0; 10716 inhibit_iso_escape_detection = 0;
10717 10717
10718 DEFVAR_BOOL ("inhibit-null-byte-detection", 10718 DEFVAR_BOOL ("inhibit-null-byte-detection",
diff --git a/src/composite.c b/src/composite.c
index 54cebc00eb7..9bbd4550c7b 100644
--- a/src/composite.c
+++ b/src/composite.c
@@ -642,13 +642,7 @@ compose_text (ptrdiff_t start, ptrdiff_t end, Lisp_Object components,
642 Qcomposition, prop, string); 642 Qcomposition, prop, string);
643} 643}
644 644
645 645/* Lisp glyph-string handlers. */
646static Lisp_Object autocmp_chars (Lisp_Object, ptrdiff_t, ptrdiff_t,
647 ptrdiff_t, struct window *,
648 struct face *, Lisp_Object);
649
650
651/* Lisp glyph-string handlers */
652 646
653/* Hash table for automatic composition. The key is a header of a 647/* Hash table for automatic composition. The key is a header of a
654 lgstring (Lispy glyph-string), and the value is a body of a 648 lgstring (Lispy glyph-string), and the value is a body of a
@@ -905,7 +899,9 @@ fill_gstring_body (Lisp_Object gstring)
905 object. Otherwise return nil. */ 899 object. Otherwise return nil. */
906 900
907static Lisp_Object 901static Lisp_Object
908autocmp_chars (Lisp_Object rule, ptrdiff_t charpos, ptrdiff_t bytepos, ptrdiff_t limit, struct window *win, struct face *face, Lisp_Object string) 902autocmp_chars (Lisp_Object rule, ptrdiff_t charpos, ptrdiff_t bytepos,
903 ptrdiff_t limit, struct window *win, struct face *face,
904 Lisp_Object string)
909{ 905{
910 ptrdiff_t count = SPECPDL_INDEX (); 906 ptrdiff_t count = SPECPDL_INDEX ();
911 FRAME_PTR f = XFRAME (win->frame); 907 FRAME_PTR f = XFRAME (win->frame);
@@ -935,7 +931,7 @@ autocmp_chars (Lisp_Object rule, ptrdiff_t charpos, ptrdiff_t bytepos, ptrdiff_t
935#ifdef HAVE_WINDOW_SYSTEM 931#ifdef HAVE_WINDOW_SYSTEM
936 if (FRAME_WINDOW_P (f)) 932 if (FRAME_WINDOW_P (f))
937 { 933 {
938 font_object = font_range (charpos, &to, win, face, string); 934 font_object = font_range (charpos, bytepos, &to, win, face, string);
939 if (! FONT_OBJECT_P (font_object) 935 if (! FONT_OBJECT_P (font_object)
940 || (! NILP (re) 936 || (! NILP (re)
941 && to < limit 937 && to < limit
diff --git a/src/dispnew.c b/src/dispnew.c
index 0037c0269de..54004daada9 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -6025,7 +6025,6 @@ init_display (void)
6025 6025
6026 inverse_video = 0; 6026 inverse_video = 0;
6027 cursor_in_echo_area = 0; 6027 cursor_in_echo_area = 0;
6028 terminal_type = (char *) 0;
6029 6028
6030 /* Now is the time to initialize this; it's used by init_sys_modes 6029 /* Now is the time to initialize this; it's used by init_sys_modes
6031 during startup. */ 6030 during startup. */
@@ -6120,8 +6119,7 @@ init_display (void)
6120#ifdef WINDOWSNT 6119#ifdef WINDOWSNT
6121 terminal_type = "w32console"; 6120 terminal_type = "w32console";
6122#else 6121#else
6123 /* Look at the TERM variable. */ 6122 terminal_type = getenv ("TERM");
6124 terminal_type = (char *) getenv ("TERM");
6125#endif 6123#endif
6126 if (!terminal_type) 6124 if (!terminal_type)
6127 { 6125 {
diff --git a/src/font.c b/src/font.c
index bed0ac8caf2..e2ea7262397 100644
--- a/src/font.c
+++ b/src/font.c
@@ -3689,11 +3689,11 @@ font_at (int c, ptrdiff_t pos, struct face *face, struct window *w,
3689 3689
3690#ifdef HAVE_WINDOW_SYSTEM 3690#ifdef HAVE_WINDOW_SYSTEM
3691 3691
3692/* Check how many characters after POS (at most to *LIMIT) can be 3692/* Check how many characters after character/byte position POS/POS_BYTE
3693 displayed by the same font in the window W. FACE, if non-NULL, is 3693 (at most to *LIMIT) can be displayed by the same font in the window W.
3694 the face selected for the character at POS. If STRING is not nil, 3694 FACE, if non-NULL, is the face selected for the character at POS.
3695 it is the string to check instead of the current buffer. In that 3695 If STRING is not nil, it is the string to check instead of the current
3696 case, FACE must be not NULL. 3696 buffer. In that case, FACE must be not NULL.
3697 3697
3698 The return value is the font-object for the character at POS. 3698 The return value is the font-object for the character at POS.
3699 *LIMIT is set to the position where that font can't be used. 3699 *LIMIT is set to the position where that font can't be used.
@@ -3701,15 +3701,15 @@ font_at (int c, ptrdiff_t pos, struct face *face, struct window *w,
3701 It is assured that the current buffer (or STRING) is multibyte. */ 3701 It is assured that the current buffer (or STRING) is multibyte. */
3702 3702
3703Lisp_Object 3703Lisp_Object
3704font_range (ptrdiff_t pos, ptrdiff_t *limit, struct window *w, struct face *face, Lisp_Object string) 3704font_range (ptrdiff_t pos, ptrdiff_t pos_byte, ptrdiff_t *limit,
3705 struct window *w, struct face *face, Lisp_Object string)
3705{ 3706{
3706 ptrdiff_t pos_byte, ignore; 3707 ptrdiff_t ignore;
3707 int c; 3708 int c;
3708 Lisp_Object font_object = Qnil; 3709 Lisp_Object font_object = Qnil;
3709 3710
3710 if (NILP (string)) 3711 if (NILP (string))
3711 { 3712 {
3712 pos_byte = CHAR_TO_BYTE (pos);
3713 if (! face) 3713 if (! face)
3714 { 3714 {
3715 int face_id; 3715 int face_id;
@@ -3720,10 +3720,7 @@ font_range (ptrdiff_t pos, ptrdiff_t *limit, struct window *w, struct face *face
3720 } 3720 }
3721 } 3721 }
3722 else 3722 else
3723 { 3723 eassert (face);
3724 eassert (face);
3725 pos_byte = string_char_to_byte (string, pos);
3726 }
3727 3724
3728 while (pos < *limit) 3725 while (pos < *limit)
3729 { 3726 {
@@ -4831,7 +4828,7 @@ where
4831 OPENED-NAME is the name used for opening the font, 4828 OPENED-NAME is the name used for opening the font,
4832 FULL-NAME is the full name of the font, 4829 FULL-NAME is the full name of the font,
4833 SIZE is the pixelsize of the font, 4830 SIZE is the pixelsize of the font,
4834 HEIGHT is the pixel-height of the font (i.e ascent + descent), 4831 HEIGHT is the pixel-height of the font (i.e., ascent + descent),
4835 BASELINE-OFFSET is the upward offset pixels from ASCII baseline, 4832 BASELINE-OFFSET is the upward offset pixels from ASCII baseline,
4836 RELATIVE-COMPOSE and DEFAULT-ASCENT are the numbers controlling 4833 RELATIVE-COMPOSE and DEFAULT-ASCENT are the numbers controlling
4837 how to compose characters. 4834 how to compose characters.
diff --git a/src/font.h b/src/font.h
index b565fb4b01b..ffed0461ff7 100644
--- a/src/font.h
+++ b/src/font.h
@@ -781,7 +781,7 @@ extern int font_unparse_fcname (Lisp_Object font, int pixel_size,
781extern void register_font_driver (struct font_driver *driver, FRAME_PTR f); 781extern void register_font_driver (struct font_driver *driver, FRAME_PTR f);
782extern void free_font_driver_list (FRAME_PTR f); 782extern void free_font_driver_list (FRAME_PTR f);
783extern Lisp_Object font_update_drivers (FRAME_PTR f, Lisp_Object list); 783extern Lisp_Object font_update_drivers (FRAME_PTR f, Lisp_Object list);
784extern Lisp_Object font_range (ptrdiff_t, ptrdiff_t *, 784extern Lisp_Object font_range (ptrdiff_t, ptrdiff_t, ptrdiff_t *,
785 struct window *, struct face *, 785 struct window *, struct face *,
786 Lisp_Object); 786 Lisp_Object);
787extern void font_fill_lglyph_metrics (Lisp_Object, Lisp_Object); 787extern void font_fill_lglyph_metrics (Lisp_Object, Lisp_Object);
diff --git a/src/indent.c b/src/indent.c
index 44ecbbc8a58..ce1639eae1e 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -291,7 +291,7 @@ DEFUN ("current-column", Fcurrent_column, Scurrent_column, 0, 0, 0,
291 doc: /* Return the horizontal position of point. Beginning of line is column 0. 291 doc: /* Return the horizontal position of point. Beginning of line is column 0.
292This is calculated by adding together the widths of all the displayed 292This is calculated by adding together the widths of all the displayed
293representations of the character between the start of the previous line 293representations of the character between the start of the previous line
294and point (eg. control characters will have a width of 2 or 4, tabs 294and point (e.g., control characters will have a width of 2 or 4, tabs
295will have a variable width). 295will have a variable width).
296Ignores finite width of frame, which means that this function may return 296Ignores finite width of frame, which means that this function may return
297values greater than (frame-width). 297values greater than (frame-width).
diff --git a/src/keyboard.c b/src/keyboard.c
index 4a92cea30c8..3e1a6ba3346 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -11641,9 +11641,7 @@ If the binding is a function, it is called with one argument (the prompt)
11641and its return value (a key sequence) is used. 11641and its return value (a key sequence) is used.
11642 11642
11643The events that come from bindings in `input-decode-map' are not 11643The events that come from bindings in `input-decode-map' are not
11644themselves looked up in `input-decode-map'. 11644themselves looked up in `input-decode-map'. */);
11645
11646This variable is keyboard-local. */);
11647 11645
11648 DEFVAR_LISP ("function-key-map", Vfunction_key_map, 11646 DEFVAR_LISP ("function-key-map", Vfunction_key_map,
11649 doc: /* The parent keymap of all `local-function-key-map' instances. 11647 doc: /* The parent keymap of all `local-function-key-map' instances.
@@ -11655,9 +11653,8 @@ definition will take precedence. */);
11655 11653
11656 DEFVAR_LISP ("key-translation-map", Vkey_translation_map, 11654 DEFVAR_LISP ("key-translation-map", Vkey_translation_map,
11657 doc: /* Keymap of key translations that can override keymaps. 11655 doc: /* Keymap of key translations that can override keymaps.
11658This keymap works like `function-key-map', but comes after that, 11656This keymap works like `input-decode-map', but comes after `function-key-map'.
11659and its non-prefix bindings override ordinary bindings. 11657Another difference is that it is global rather than terminal-local. */);
11660Another difference is that it is global rather than keyboard-local. */);
11661 Vkey_translation_map = Fmake_sparse_keymap (Qnil); 11658 Vkey_translation_map = Fmake_sparse_keymap (Qnil);
11662 11659
11663 DEFVAR_LISP ("deferred-action-list", Vdeferred_action_list, 11660 DEFVAR_LISP ("deferred-action-list", Vdeferred_action_list,
diff --git a/src/makefile.w32-in b/src/makefile.w32-in
index bbd9fd907b6..6e1873f8e49 100644
--- a/src/makefile.w32-in
+++ b/src/makefile.w32-in
@@ -847,7 +847,9 @@ $(BLD)/fileio.$(O) : \
847 $(NT_INC)/sys/file.h \ 847 $(NT_INC)/sys/file.h \
848 $(NT_INC)/sys/stat.h \ 848 $(NT_INC)/sys/stat.h \
849 $(NT_INC)/unistd.h \ 849 $(NT_INC)/unistd.h \
850 $(GNU_LIB)/allocator.h \
850 $(BUFFER_H) \ 851 $(BUFFER_H) \
852 $(CAREADLINKAT_H) \
851 $(CHARACTER_H) \ 853 $(CHARACTER_H) \
852 $(CODING_H) \ 854 $(CODING_H) \
853 $(CONFIG_H) \ 855 $(CONFIG_H) \
@@ -1397,11 +1399,9 @@ $(BLD)/sysdep.$(O) : \
1397 $(NT_INC)/sys/file.h \ 1399 $(NT_INC)/sys/file.h \
1398 $(NT_INC)/sys/stat.h \ 1400 $(NT_INC)/sys/stat.h \
1399 $(NT_INC)/unistd.h \ 1401 $(NT_INC)/unistd.h \
1400 $(GNU_LIB)/allocator.h \
1401 $(GNU_LIB)/execinfo.h \ 1402 $(GNU_LIB)/execinfo.h \
1402 $(GNU_LIB)/ignore-value.h \ 1403 $(GNU_LIB)/ignore-value.h \
1403 $(GNU_LIB)/utimens.h \ 1404 $(GNU_LIB)/utimens.h \
1404 $(CAREADLINKAT_H) \
1405 $(CONFIG_H) \ 1405 $(CONFIG_H) \
1406 $(C_CTYPE_H) \ 1406 $(C_CTYPE_H) \
1407 $(DISPEXTERN_H) \ 1407 $(DISPEXTERN_H) \
diff --git a/src/pre-crt0.c b/src/pre-crt0.c
index ea5736eba2a..6b9618c8dc3 100644
--- a/src/pre-crt0.c
+++ b/src/pre-crt0.c
@@ -4,7 +4,7 @@
4 that make environ an initialized variable. However, we do 4 that make environ an initialized variable. However, we do
5 need to make sure the label data_start exists anyway. */ 5 need to make sure the label data_start exists anyway. */
6 6
7/* Create a label to appear at the beginning of data space. */ 7/* Create a label to appear at the beginning of data space.
8 8 Its value is nonzero so that it cannot be put into bss. */
9int data_start = 0;
10 9
10int data_start = 1;
diff --git a/src/sysdep.c b/src/sysdep.c
index 57ca8265a65..606a5b038ca 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -527,10 +527,10 @@ sys_subshell (void)
527#ifdef DOS_NT /* MW, Aug 1993 */ 527#ifdef DOS_NT /* MW, Aug 1993 */
528 getcwd (oldwd, sizeof oldwd); 528 getcwd (oldwd, sizeof oldwd);
529 if (sh == 0) 529 if (sh == 0)
530 sh = (char *) egetenv ("SUSPEND"); /* KFS, 1994-12-14 */ 530 sh = egetenv ("SUSPEND"); /* KFS, 1994-12-14 */
531#endif 531#endif
532 if (sh == 0) 532 if (sh == 0)
533 sh = (char *) egetenv ("SHELL"); 533 sh = egetenv ("SHELL");
534 if (sh == 0) 534 if (sh == 0)
535 sh = "sh"; 535 sh = "sh";
536 536
diff --git a/src/unexaix.c b/src/unexaix.c
index 92ebd2e3ceb..da44480fdca 100644
--- a/src/unexaix.c
+++ b/src/unexaix.c
@@ -51,6 +51,8 @@ what you give them. Help stamp out software-hoarding! */
51#include "getpagesize.h" 51#include "getpagesize.h"
52 52
53#include <sys/types.h> 53#include <sys/types.h>
54#include <inttypes.h>
55#include <stdarg.h>
54#include <stdio.h> 56#include <stdio.h>
55#include <sys/stat.h> 57#include <sys/stat.h>
56#include <errno.h> 58#include <errno.h>
@@ -59,10 +61,8 @@ what you give them. Help stamp out software-hoarding! */
59 61
60#include "mem-limits.h" 62#include "mem-limits.h"
61 63
62char *start_of_text (void); /* Start of text */ 64extern char _data[];
63 65extern char _text[];
64extern int _data;
65extern int _text;
66 66
67#include <filehdr.h> 67#include <filehdr.h>
68#include <aouthdr.h> 68#include <aouthdr.h>
@@ -71,15 +71,15 @@ extern int _text;
71 71
72static struct filehdr f_hdr; /* File header */ 72static struct filehdr f_hdr; /* File header */
73static struct aouthdr f_ohdr; /* Optional file header (a.out) */ 73static struct aouthdr f_ohdr; /* Optional file header (a.out) */
74static long bias; /* Bias to add for growth */ 74static off_t bias; /* Bias to add for growth */
75static long lnnoptr; /* Pointer to line-number info within file */ 75static off_t lnnoptr; /* Pointer to line-number info within file */
76 76
77static long text_scnptr; 77static off_t text_scnptr;
78static long data_scnptr; 78static off_t data_scnptr;
79#define ALIGN(val, pwr) (((val) + ((1L<<(pwr))-1)) & ~((1L<<(pwr))-1)) 79#define ALIGN(val, pwr) (((val) + ((1L<<(pwr))-1)) & ~((1L<<(pwr))-1))
80static long load_scnptr; 80static off_t load_scnptr;
81static long orig_load_scnptr; 81static off_t orig_load_scnptr;
82static long orig_data_scnptr; 82static off_t orig_data_scnptr;
83static int unrelocate_symbols (int, int, const char *, const char *); 83static int unrelocate_symbols (int, int, const char *, const char *);
84 84
85#ifndef MAX_SECTIONS 85#ifndef MAX_SECTIONS
@@ -92,23 +92,30 @@ static int pagemask;
92 92
93#include "lisp.h" 93#include "lisp.h"
94 94
95static void 95static _Noreturn void
96report_error (const char *file, int fd) 96report_error (const char *file, int fd)
97{ 97{
98 if (fd) 98 if (fd)
99 close (fd); 99 {
100 int failed_errno = errno;
101 close (fd);
102 errno = failed_errno;
103 }
100 report_file_error ("Cannot unexec", Fcons (build_string (file), Qnil)); 104 report_file_error ("Cannot unexec", Fcons (build_string (file), Qnil));
101} 105}
102 106
103#define ERROR0(msg) report_error_1 (new, msg, 0, 0); return -1 107#define ERROR0(msg) report_error_1 (new, msg)
104#define ERROR1(msg,x) report_error_1 (new, msg, x, 0); return -1 108#define ERROR1(msg,x) report_error_1 (new, msg, x)
105#define ERROR2(msg,x,y) report_error_1 (new, msg, x, y); return -1 109#define ERROR2(msg,x,y) report_error_1 (new, msg, x, y)
106 110
107static void 111static _Noreturn void ATTRIBUTE_FORMAT_PRINTF (2, 3)
108report_error_1 (int fd, const char *msg, int a1, int a2) 112report_error_1 (int fd, const char *msg, ...)
109{ 113{
114 va_list ap;
110 close (fd); 115 close (fd);
111 error (msg, a1, a2); 116 va_start (ap, msg);
117 verror (msg, ap);
118 va_end (ap);
112} 119}
113 120
114static int make_hdr (int, int, const char *, const char *); 121static int make_hdr (int, int, const char *, const char *);
@@ -163,8 +170,8 @@ make_hdr (int new, int a_out,
163 const char *a_name, const char *new_name) 170 const char *a_name, const char *new_name)
164{ 171{
165 int scns; 172 int scns;
166 unsigned int bss_start; 173 uintptr_t bss_start;
167 unsigned int data_start; 174 uintptr_t data_start;
168 175
169 struct scnhdr section[MAX_SECTIONS]; 176 struct scnhdr section[MAX_SECTIONS];
170 struct scnhdr * f_thdr; /* Text section header */ 177 struct scnhdr * f_thdr; /* Text section header */
@@ -179,17 +186,17 @@ make_hdr (int new, int a_out,
179 pagemask = getpagesize () - 1; 186 pagemask = getpagesize () - 1;
180 187
181 /* Adjust text/data boundary. */ 188 /* Adjust text/data boundary. */
182 data_start = (long) start_of_data (); 189 data_start = (uintptr_t) _data;
183 data_start = ADDR_CORRECT (data_start);
184 190
185 data_start = data_start & ~pagemask; /* (Down) to page boundary. */ 191 data_start = data_start & ~pagemask; /* (Down) to page boundary. */
186 192
187 bss_start = ADDR_CORRECT (sbrk (0)) + pagemask; 193 bss_start = (uintptr_t) sbrk (0) + pagemask;
188 bss_start &= ~ pagemask; 194 bss_start &= ~ pagemask;
189 195
190 if (data_start > bss_start) /* Can't have negative data size. */ 196 if (data_start > bss_start) /* Can't have negative data size. */
191 { 197 {
192 ERROR2 ("unexec: data_start (%u) can't be greater than bss_start (%u)", 198 ERROR2 (("unexec: data_start (0x%"PRIxPTR
199 ") can't be greater than bss_start (0x%"PRIxPTR")"),
193 data_start, bss_start); 200 data_start, bss_start);
194 } 201 }
195 202
@@ -279,7 +286,7 @@ make_hdr (int new, int a_out,
279 286
280 /* fix scnptr's */ 287 /* fix scnptr's */
281 { 288 {
282 ulong ptr = section[0].s_scnptr; 289 off_t ptr = section[0].s_scnptr;
283 290
284 bias = -1; 291 bias = -1;
285 for (scns = 0; scns < f_hdr.f_nscns; scns++) 292 for (scns = 0; scns < f_hdr.f_nscns; scns++)
@@ -375,12 +382,12 @@ copy_text_and_data (int new)
375 char *end; 382 char *end;
376 char *ptr; 383 char *ptr;
377 384
378 lseek (new, (long) text_scnptr, SEEK_SET); 385 lseek (new, text_scnptr, SEEK_SET);
379 ptr = start_of_text () + text_scnptr; 386 ptr = _text + text_scnptr;
380 end = ptr + f_ohdr.tsize; 387 end = ptr + f_ohdr.tsize;
381 write_segment (new, ptr, end); 388 write_segment (new, ptr, end);
382 389
383 lseek (new, (long) data_scnptr, SEEK_SET); 390 lseek (new, data_scnptr, SEEK_SET);
384 ptr = (char *) f_ohdr.data_start; 391 ptr = (char *) f_ohdr.data_start;
385 end = ptr + f_ohdr.dsize; 392 end = ptr + f_ohdr.dsize;
386 write_segment (new, ptr, end); 393 write_segment (new, ptr, end);
@@ -393,7 +400,6 @@ static void
393write_segment (int new, char *ptr, char *end) 400write_segment (int new, char *ptr, char *end)
394{ 401{
395 int i, nwrite, ret; 402 int i, nwrite, ret;
396 char buf[80];
397 char zeros[UnexBlockSz]; 403 char zeros[UnexBlockSz];
398 404
399 for (i = 0; ptr < end;) 405 for (i = 0; ptr < end;)
@@ -414,9 +420,13 @@ write_segment (int new, char *ptr, char *end)
414 } 420 }
415 else if (nwrite != ret) 421 else if (nwrite != ret)
416 { 422 {
423 int write_errno = errno;
424 char buf[1000];
425 void *addr = ptr;
417 sprintf (buf, 426 sprintf (buf,
418 "unexec write failure: addr 0x%lx, fileno %d, size 0x%x, wrote 0x%x, errno %d", 427 "unexec write failure: addr %p, fileno %d, size 0x%x, wrote 0x%x, errno %d",
419 (unsigned long)ptr, new, nwrite, ret, errno); 428 addr, new, nwrite, ret, errno);
429 errno = write_errno;
420 PERROR (buf); 430 PERROR (buf);
421 } 431 }
422 i += nwrite; 432 i += nwrite;
@@ -537,13 +547,13 @@ unrelocate_symbols (int new, int a_out,
537 int i; 547 int i;
538 LDHDR ldhdr; 548 LDHDR ldhdr;
539 LDREL ldrel; 549 LDREL ldrel;
540 ulong t_reloc = (ulong) &_text - f_ohdr.text_start; 550 off_t t_reloc = (intptr_t) _text - f_ohdr.text_start;
541#ifndef ALIGN_DATA_RELOC 551#ifndef ALIGN_DATA_RELOC
542 ulong d_reloc = (ulong) &_data - f_ohdr.data_start; 552 off_t d_reloc = (intptr_t) _data - f_ohdr.data_start;
543#else 553#else
544 /* This worked (and was needed) before AIX 4.2. 554 /* This worked (and was needed) before AIX 4.2.
545 I have no idea why. -- Mike */ 555 I have no idea why. -- Mike */
546 ulong d_reloc = (ulong) &_data - ALIGN (f_ohdr.data_start, 2); 556 off_t d_reloc = (intptr_t) _data - ALIGN (f_ohdr.data_start, 2);
547#endif 557#endif
548 int * p; 558 int * p;
549 559
@@ -628,16 +638,3 @@ unrelocate_symbols (int new, int a_out,
628 } 638 }
629 return 0; 639 return 0;
630} 640}
631
632/*
633 * Return the address of the start of the text segment prior to
634 * doing an unexec. After unexec the return value is undefined.
635 * See crt0.c for further explanation and _start.
636 *
637 */
638
639char *
640start_of_text (void)
641{
642 return ((char *) 0x10000000);
643}
diff --git a/test/ChangeLog b/test/ChangeLog
index 41bb1be190e..f508209008e 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,8 @@
12013-02-13 Dmitry Gutov <dgutov@yandex.ru>
2
3 * automated/ruby-mode-tests.el
4 (ruby-move-to-block-skips-percent-literal): New test.
5
12013-02-04 Chong Yidong <cyd@gnu.org> 62013-02-04 Chong Yidong <cyd@gnu.org>
2 7
3 * automated/thingatpt.el: New file. 8 * automated/thingatpt.el: New file.
diff --git a/test/automated/ruby-mode-tests.el b/test/automated/ruby-mode-tests.el
index 2028c6fad00..6798a49d53c 100644
--- a/test/automated/ruby-mode-tests.el
+++ b/test/automated/ruby-mode-tests.el
@@ -445,6 +445,24 @@ VALUES-PLIST is a list with alternating index and value elements."
445 (ruby-move-to-block -2) 445 (ruby-move-to-block -2)
446 (should (= 2 (line-number-at-pos)))) 446 (should (= 2 (line-number-at-pos))))
447 447
448(ert-deftest ruby-move-to-block-skips-percent-literal ()
449 (dolist (s (list (ruby-test-string
450 "foo do
451 | a = %%w(
452 | )
453 |end")
454 (ruby-test-string
455 "foo do
456 | a = %%w|
457 | |
458 |end")))
459 (ruby-with-temp-buffer s
460 (goto-line 1)
461 (ruby-end-of-block)
462 (should (= 4 (line-number-at-pos)))
463 (ruby-beginning-of-block)
464 (should (= 1 (line-number-at-pos))))))
465
448(provide 'ruby-mode-tests) 466(provide 'ruby-mode-tests)
449 467
450;;; ruby-mode-tests.el ends here 468;;; ruby-mode-tests.el ends here