aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rwxr-xr-xbuild-aux/update-subdirs4
-rw-r--r--doc/lispintro/ChangeLog12
-rw-r--r--doc/lispintro/emacs-lisp-intro.texi62
-rw-r--r--doc/lispref/ChangeLog8
-rw-r--r--doc/lispref/internals.texi34
-rw-r--r--doc/lispref/searching.texi6
-rw-r--r--doc/man/ChangeLog4
-rw-r--r--doc/man/emacs.113
-rw-r--r--etc/NEWS2
-rw-r--r--lisp/ChangeLog108
-rw-r--r--lisp/comint.el27
-rw-r--r--lisp/emacs-lisp/bytecomp.el6
-rw-r--r--lisp/emacs-lisp/nadvice.el3
-rw-r--r--lisp/epg.el20
-rw-r--r--lisp/faces.el5
-rw-r--r--lisp/info-look.el7
-rw-r--r--lisp/jit-lock.el25
-rw-r--r--lisp/minibuffer.el4
-rw-r--r--lisp/net/tramp-adb.el7
-rw-r--r--lisp/net/tramp-compat.el14
-rw-r--r--lisp/net/tramp-gvfs.el2
-rw-r--r--lisp/net/tramp-sh.el134
-rw-r--r--lisp/net/tramp.el22
-rw-r--r--lisp/progmodes/gdb-mi.el30
-rw-r--r--lisp/progmodes/gud.el9
-rw-r--r--lisp/progmodes/octave-inf.el7
-rw-r--r--lisp/progmodes/prolog.el6
-rw-r--r--lisp/progmodes/xscheme.el39
-rw-r--r--lisp/startup.el2
-rw-r--r--lisp/textmodes/reftex-vars.el9
-rw-r--r--lisp/textmodes/reftex.el1
-rw-r--r--lisp/vc/vc-cvs.el12
-rw-r--r--lisp/vc/vc-dispatcher.el45
-rw-r--r--lisp/vc/vc.el18
-rwxr-xr-xmake-dist3
-rw-r--r--src/ChangeLog5
-rw-r--r--src/Makefile.in2
38 files changed, 467 insertions, 259 deletions
diff --git a/ChangeLog b/ChangeLog
index dc6c0bfc3ec..5f74726a743 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
12013-04-22 Paul Eggert <eggert@cs.ucla.edu>
2
3 * make-dist: Do not distribute admin/unidata/Makefile.
4 It is generated by 'configure'.
5
6 * build-aux/update-subdirs: Don't leave subdirs.el~ behind.
7 It messes up 'make distclean', and contains no useful information
8 because it's a copy of subdirs.el.
9
12013-04-18 John Marino <gnugcc@marino.st> (tiny change) 102013-04-18 John Marino <gnugcc@marino.st> (tiny change)
2 11
3 * configure.ac: Add DragonFly BSD, mostly same as FreeBSD. (Bug#14068) 12 * configure.ac: Add DragonFly BSD, mostly same as FreeBSD. (Bug#14068)
diff --git a/build-aux/update-subdirs b/build-aux/update-subdirs
index 8fdf1609e6f..3c429b8b5e4 100755
--- a/build-aux/update-subdirs
+++ b/build-aux/update-subdirs
@@ -49,8 +49,8 @@ else
49;; no-byte-compile: t 49;; no-byte-compile: t
50;; End:" > subdirs.el~ 50;; End:" > subdirs.el~
51 if cmp "subdirs.el" "subdirs.el~" >/dev/null 2>&1; then 51 if cmp "subdirs.el" "subdirs.el~" >/dev/null 2>&1; then
52 :; # echo "subdirs.el unchanged"; 52 rm subdirs.el~
53 else 53 else
54 mv subdirs.el~ subdirs.el 54 mv subdirs.el~ subdirs.el
55 fi 55 fi
56fi 56fi
diff --git a/doc/lispintro/ChangeLog b/doc/lispintro/ChangeLog
index 93084e76203..be9f9f963c0 100644
--- a/doc/lispintro/ChangeLog
+++ b/doc/lispintro/ChangeLog
@@ -1,3 +1,15 @@
12013-04-23 Xue Fuqiao <xfq.free@gmail.com>
2
3 * emacs-lisp-intro.texi (Complications, defvar): Refine the doc
4 about Lisp macros. (http://lists.gnu.org/archive/html/emacs-devel/2013-04/msg00618.html)
5
62013-04-21 Xue Fuqiao <xfq.free@gmail.com>
7
8 * emacs-lisp-intro.texi (defcustom, defun)
9 (simplified-beginning-of-buffer, defvar, Building Robots, Review)
10 (save-excursion): `defun' and `defcustom' are now macros rather
11 than special forms. (Bug#13853)
12
12013-03-16 Glenn Morris <rgm@gnu.org> 132013-03-16 Glenn Morris <rgm@gnu.org>
2 14
3 * emacs-lisp-intro.texi: Add some stuff specific to www.gnu.org. 15 * emacs-lisp-intro.texi: Add some stuff specific to www.gnu.org.
diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi
index c42ed210cbc..7831603124e 100644
--- a/doc/lispintro/emacs-lisp-intro.texi
+++ b/doc/lispintro/emacs-lisp-intro.texi
@@ -37,6 +37,7 @@
37 37
38@set edition-number 3.10 38@set edition-number 3.10
39@set update-date 28 October 2009 39@set update-date 28 October 2009
40@c FIXME can this be updated? -- xfq
40 41
41@ignore 42@ignore
42 ## Summary of shell commands to create various output formats: 43 ## Summary of shell commands to create various output formats:
@@ -456,7 +457,7 @@ Practicing Evaluation
456How To Write Function Definitions 457How To Write Function Definitions
457 458
458* Primitive Functions:: 459* Primitive Functions::
459* defun:: The @code{defun} special form. 460* defun:: The @code{defun} macro.
460* Install:: Install a function definition. 461* Install:: Install a function definition.
461* Interactive:: Making a function interactive. 462* Interactive:: Making a function interactive.
462* Interactive Options:: Different options for @code{interactive}. 463* Interactive Options:: Different options for @code{interactive}.
@@ -1617,11 +1618,16 @@ the symbol's value as a @dfn{variable}. This situation is described
1617in the section on variables. (@xref{Variables}.) 1618in the section on variables. (@xref{Variables}.)
1618 1619
1619@cindex Special form 1620@cindex Special form
1620The second complication occurs because some functions are unusual and do 1621The second complication occurs because some functions are unusual and
1621not work in the usual manner. Those that don't are called @dfn{special 1622do not work in the usual manner. Those that don't are called
1622forms}. They are used for special jobs, like defining a function, and 1623@dfn{special forms}. They are used for special jobs, like defining a
1623there are not many of them. In the next few chapters, you will be 1624function, and there are not many of them. In the next few chapters,
1624introduced to several of the more important special forms. 1625you will be introduced to several of the more important special forms.
1626And there are also @dfn{macros}. Macro is a construct defined in
1627Lisp, which differs from a function in that it translates a Lisp
1628expression into another expression which is to be evaluated instead of
1629the original expression. (@xref{Lisp macro}.)
1630
1625 1631
1626The third and final complication is this: if the function that the 1632The third and final complication is this: if the function that the
1627Lisp interpreter is looking at is not a special form, and if it is part 1633Lisp interpreter is looking at is not a special form, and if it is part
@@ -3094,18 +3100,15 @@ unless you investigate, you won't know whether an already-written
3094function is written in Emacs Lisp or C. 3100function is written in Emacs Lisp or C.
3095 3101
3096@node defun 3102@node defun
3097@section The @code{defun} Special Form 3103@section The @code{defun} Macro
3098@findex defun 3104@findex defun
3099@cindex Special form of @code{defun}
3100 3105
3101@cindex @samp{function definition} defined 3106@cindex @samp{function definition} defined
3102In Lisp, a symbol such as @code{mark-whole-buffer} has code attached to 3107In Lisp, a symbol such as @code{mark-whole-buffer} has code attached to
3103it that tells the computer what to do when the function is called. 3108it that tells the computer what to do when the function is called.
3104This code is called the @dfn{function definition} and is created by 3109This code is called the @dfn{function definition} and is created by
3105evaluating a Lisp expression that starts with the symbol @code{defun} 3110evaluating a Lisp expression that starts with the symbol @code{defun}
3106(which is an abbreviation for @emph{define function}). Because 3111(which is an abbreviation for @emph{define function}).
3107@code{defun} does not evaluate its arguments in the usual way, it is
3108called a @dfn{special form}.
3109 3112
3110In subsequent sections, we will look at function definitions from the 3113In subsequent sections, we will look at function definitions from the
3111Emacs source code, such as @code{mark-whole-buffer}. In this section, 3114Emacs source code, such as @code{mark-whole-buffer}. In this section,
@@ -4254,7 +4257,7 @@ On the other hand, this function returns @code{nil} if the test is false.
4254@findex point 4257@findex point
4255@findex mark 4258@findex mark
4256 4259
4257The @code{save-excursion} function is the fourth and final special form 4260The @code{save-excursion} function is the third and final special form
4258that we will discuss in this chapter. 4261that we will discuss in this chapter.
4259 4262
4260In Emacs Lisp programs used for editing, the @code{save-excursion} 4263In Emacs Lisp programs used for editing, the @code{save-excursion}
@@ -4381,9 +4384,9 @@ within the body of a @code{let} expression. It looks like this:
4381@node Review 4384@node Review
4382@section Review 4385@section Review
4383 4386
4384In the last few chapters we have introduced a fair number of functions 4387In the last few chapters we have introduced a macro and a fair number
4385and special forms. Here they are described in brief, along with a few 4388of functions and special forms. Here they are described in brief,
4386similar functions that have not been mentioned yet. 4389along with a few similar functions that have not been mentioned yet.
4387 4390
4388@table @code 4391@table @code
4389@item eval-last-sexp 4392@item eval-last-sexp
@@ -4393,10 +4396,10 @@ invoked with an argument; in that case, the output is printed in the
4393current buffer. This command is normally bound to @kbd{C-x C-e}. 4396current buffer. This command is normally bound to @kbd{C-x C-e}.
4394 4397
4395@item defun 4398@item defun
4396Define function. This special form has up to five parts: the name, 4399Define function. This macro has up to five parts: the name, a
4397a template for the arguments that will be passed to the function, 4400template for the arguments that will be passed to the function,
4398documentation, an optional interactive declaration, and the body of the 4401documentation, an optional interactive declaration, and the body of
4399definition. 4402the definition.
4400 4403
4401@need 1250 4404@need 1250
4402For example, in an early version of Emacs, the function definition was 4405For example, in an early version of Emacs, the function definition was
@@ -4803,7 +4806,7 @@ leave mark at previous position."
4803@end smallexample 4806@end smallexample
4804 4807
4805Like all function definitions, this definition has five parts following 4808Like all function definitions, this definition has five parts following
4806the special form @code{defun}: 4809the macro @code{defun}:
4807 4810
4808@enumerate 4811@enumerate
4809@item 4812@item
@@ -9293,7 +9296,7 @@ have a value. If the variable already has a value, @code{defvar} does
9293not override the existing value. Second, @code{defvar} has a 9296not override the existing value. Second, @code{defvar} has a
9294documentation string. 9297documentation string.
9295 9298
9296(Another special form, @code{defcustom}, is designed for variables 9299(There is a related macro, @code{defcustom}, designed for variables
9297that people customize. It has more features than @code{defvar}. 9300that people customize. It has more features than @code{defvar}.
9298(@xref{defcustom, , Setting Variables with @code{defcustom}}.) 9301(@xref{defcustom, , Setting Variables with @code{defcustom}}.)
9299 9302
@@ -11300,11 +11303,11 @@ Let's expand on the metaphor in which a computer program is a robot.
11300 11303
11301A function definition provides the blueprints for a robot. When you 11304A function definition provides the blueprints for a robot. When you
11302install a function definition, that is, when you evaluate a 11305install a function definition, that is, when you evaluate a
11303@code{defun} special form, you install the necessary equipment to 11306@code{defun} macro, you install the necessary equipment to build
11304build robots. It is as if you were in a factory, setting up an 11307robots. It is as if you were in a factory, setting up an assembly
11305assembly line. Robots with the same name are built according to the 11308line. Robots with the same name are built according to the same
11306same blueprints. So they have, as it were, the same `model number', 11309blueprints. So they have, as it were, the same `model number', but a
11307but a different `serial number'. 11310different `serial number'.
11308 11311
11309We often say that a recursive function `calls itself'. What we mean 11312We often say that a recursive function `calls itself'. What we mean
11310is that the instructions in a recursive function cause the Lisp 11313is that the instructions in a recursive function cause the Lisp
@@ -16971,10 +16974,9 @@ definitions; but you can write @code{defuns} in your @file{.emacs}
16971file. Indeed, you can write any Lisp expression in your @file{.emacs} 16974file. Indeed, you can write any Lisp expression in your @file{.emacs}
16972file.) 16975file.)
16973 16976
16974The @code{customize} feature depends on the @code{defcustom} special 16977The @code{customize} feature depends on the @code{defcustom} macro.
16975form. Although you can use @code{defvar} or @code{setq} for variables 16978Although you can use @code{defvar} or @code{setq} for variables that
16976that users set, the @code{defcustom} special form is designed for the 16979users set, the @code{defcustom} macro is designed for the job.
16977job.
16978 16980
16979You can use your knowledge of @code{defvar} for writing the 16981You can use your knowledge of @code{defvar} for writing the
16980first three arguments for @code{defcustom}. The first argument to 16982first three arguments for @code{defcustom}. The first argument to
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 31e4f791350..f770fb3cada 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,11 @@
12013-04-21 Xue Fuqiao <xfq.free@gmail.com>
2
3 * internals.texi (Writing Emacs Primitives): Remove unnecessary
4 references to the sources. (Bug#13800)
5
6 * searching.texi (Regexp Backslash): Doc fix for backslash
7 constructs in regular expressions.
8
12013-04-15 Christopher Schmidt <christopher@ch.ristopher.com> 92013-04-15 Christopher Schmidt <christopher@ch.ristopher.com>
2 10
3 * tips.texi (Coding Conventions): Mention separation of package 11 * tips.texi (Coding Conventions): Mention separation of package
diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi
index 3269776b626..24440858b7e 100644
--- a/doc/lispref/internals.texi
+++ b/doc/lispref/internals.texi
@@ -661,15 +661,33 @@ equivalent of @code{&rest}). Both @code{UNEVALLED} and @code{MANY} are
661macros. If @var{max} is a number, it must be more than @var{min} but 661macros. If @var{max} is a number, it must be more than @var{min} but
662less than 8. 662less than 8.
663 663
664@cindex interactive specification in primitives
664@item interactive 665@item interactive
665This is an interactive specification, a string such as might be used as 666This is an interactive specification, a string such as might be used
666the argument of @code{interactive} in a Lisp function. In the case of 667as the argument of @code{interactive} in a Lisp function. In the case
667@code{or}, it is 0 (a null pointer), indicating that @code{or} cannot be 668of @code{or}, it is 0 (a null pointer), indicating that @code{or}
668called interactively. A value of @code{""} indicates a function that 669cannot be called interactively. A value of @code{""} indicates a function that should receive no
669should receive no arguments when called interactively. If the value 670arguments when called interactively. For example:
670begins with a @samp{(}, the string is evaluated as a Lisp form. 671
671For examples of the last two forms, see @code{widen} and 672@smallexample
672@code{narrow-to-region} in @file{editfns.c}. 673@group
674DEFUN ("baz", Fbaz, Sbaz, 0, 0, "",
675 doc: /* @dots{} */)
676@end group
677@end smallexample
678
679If the value begins with a @samp{"(}, the string is evaluated as a
680Lisp form. For example:
681
682@smallexample
683@group
684DEFUN ("foo", Ffoo, Sfoo, 0, UNEVALLED, "(list
685 (read-char-by-name \"Insert character (Unicode name or hex): \")\
686 (prefix-numeric-value current-prefix-arg)\
687 t))",
688 doc: /* @dots{} /*)
689@end group
690@end smallexample
673 691
674@item doc 692@item doc
675This is the documentation string. It uses C comment syntax rather 693This is the documentation string. It uses C comment syntax rather
diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi
index 87d4051d6f0..386d5bdde4c 100644
--- a/doc/lispref/searching.texi
+++ b/doc/lispref/searching.texi
@@ -589,10 +589,8 @@ through @samp{f} and @samp{A} through @samp{F}.
589 589
590 For the most part, @samp{\} followed by any character matches only 590 For the most part, @samp{\} followed by any character matches only
591that character. However, there are several exceptions: certain 591that character. However, there are several exceptions: certain
592two-character sequences starting with @samp{\} that have special 592sequences starting with @samp{\} that have special meanings. Here is
593meanings. (The character after the @samp{\} in such a sequence is 593a table of the special @samp{\} constructs.
594always ordinary when used on its own.) Here is a table of the special
595@samp{\} constructs.
596 594
597@table @samp 595@table @samp
598@item \| 596@item \|
diff --git a/doc/man/ChangeLog b/doc/man/ChangeLog
index 8a2a90f7895..8b550dc4417 100644
--- a/doc/man/ChangeLog
+++ b/doc/man/ChangeLog
@@ -1,3 +1,7 @@
12013-04-20 Petr Hracek <phracek@redhat.com> (tiny change)
2
3 * emacs.1: Add some more command-line options. (Bug#14165)
4
12012-12-02 Kevin Ryde <user42@zip.com.au> 52012-12-02 Kevin Ryde <user42@zip.com.au>
2 6
3 * etags.1: Mention effect of --declarations in Lisp. 7 * etags.1: Mention effect of --declarations in Lisp.
diff --git a/doc/man/emacs.1 b/doc/man/emacs.1
index 3d0c5107adc..9149be2c523 100644
--- a/doc/man/emacs.1
+++ b/doc/man/emacs.1
@@ -79,12 +79,22 @@ Go to the specified
79and 79and
80.IR column . 80.IR column .
81.TP 81.TP
82.BI \-\-chdir " directory"
83Change to
84.IR directory .
85.TP
82.BR \-q ", " \-\-no\-init\-file 86.BR \-q ", " \-\-no\-init\-file
83Do not load an init file. 87Do not load an init file.
84.TP 88.TP
89.BR \-nl ", " \-\-no\-shared\-memory
90Do not use shared memory.
91.TP
85.B \-\-no\-site\-file 92.B \-\-no\-site\-file
86Do not load the site-wide startup file. 93Do not load the site-wide startup file.
87.TP 94.TP
95.BR \-nsl ", " \-\-no\-site\-lisp
96Do not add site-lisp directories to load-path.
97.TP
88.B \-\-no\-desktop 98.B \-\-no\-desktop
89Do not load a saved desktop. 99Do not load a saved desktop.
90.TP 100.TP
@@ -325,6 +335,9 @@ in iconified state.
325.BR \-nbc ", " \-\-no\-blinking\-cursor 335.BR \-nbc ", " \-\-no\-blinking\-cursor
326Disable blinking cursor. 336Disable blinking cursor.
327.TP 337.TP
338.BI \-\-parent-id " xid"
339Set parent window.
340.TP
328.BR \-nw ", " \-\-no\-window\-system 341.BR \-nw ", " \-\-no\-window\-system
329Tell 342Tell
330.I Emacs 343.I Emacs
diff --git a/etc/NEWS b/etc/NEWS
index 8f64aa6e7ee..83913bf88b8 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -75,6 +75,8 @@ Available only on X, this option allows to control over-scrolling
75using the scroll bar (i.e. dragging the thumb down even when the end 75using the scroll bar (i.e. dragging the thumb down even when the end
76of the buffer is visible). 76of the buffer is visible).
77 77
78** In compiled Lisp files, the header no longer includes a timestamp.
79
78 80
79* Editing Changes in Emacs 24.4 81* Editing Changes in Emacs 24.4
80 82
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 9bb155b74da..59e2a227e42 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,7 +1,111 @@
12013-04-23 Tassilo Horn <tsdh@gnu.org>
2
3 * textmodes/reftex.el (reftex-compile-variables): Add autoload
4 cookie.
5
6 * textmodes/reftex-vars.el (reftex-label-regexps): Call
7 `reftex-compile-variables' after changes to this variable.
8
92013-04-23 Stefan Monnier <monnier@iro.umontreal.ca>
10
11 * jit-lock.el: Fix signals in jit-lock-force-redisplay.
12 Use lexical-binding.
13 (jit-lock-force-redisplay): Use markers, check buffer's continued
14 existence and beware narrowed buffers.
15 (jit-lock-fontify-now): Adjust call accordingly.
16
172013-04-22 Stefan Monnier <monnier@iro.umontreal.ca>
18
19 * minibuffer.el (minibuffer-completion-contents): Fix obsolescence info
20 to avoid misleading the user.
21
222013-04-22 Leo Liu <sdl.web@gmail.com>
23
24 * info-look.el: Prefer latex2e.info. (Bug#14240)
25
262013-04-22 Michael Albinus <michael.albinus@gmx.de>
27
28 Fix pack/unpack coding. Reported by David Smith <davidsmith@acm.org>.
29
30 * net/tramp-compat.el (tramp-compat-call-process): Move function ...
31 * net/tramp.el (tramp-call-process): ... here
32 (tramp-set-completion-function, tramp-parse-putty):
33 * net/tramp-adb.el (tramp-adb-execute-adb-command):
34 * net/tramp-gvfs.el (tramp-gvfs-send-command):
35 * net/tramp-sh.el (tramp-sh-handle-set-file-times)
36 (tramp-set-file-uid-gid, tramp-sh-handle-write-region)
37 (tramp-call-local-coding-command): Use `tramp-call-process'
38 instead of `tramp-compat-call-process'.
39
40 * net/tramp-sh.el (tramp-perl-pack, tramp-perl-unpack): New defconst.
41 (tramp-local-coding-commands, tramp-remote-coding-commands): Use them.
42 (tramp-sh-handle-file-local-copy, tramp-sh-handle-write-region):
43 (tramp-find-inline-compress):Improve traces.
44 (tramp-maybe-send-script): Check for Perl binary.
45 (tramp-get-inline-coding): Do not redirect STDOUT for local decoding.
46
472013-04-22 Daiki Ueno <ueno@gnu.org>
48
49 * epg.el (epg-context-pinentry-mode): New function.
50 (epg-context-set-pinentry-mode): New function.
51 (epg--start): Pass --pinentry-mode option to gpg command.
52
532013-04-21 Xue Fuqiao <xfq.free@gmail.com>
54
55 * comint.el: (comint-dynamic-complete-functions, comint-mode-map):
56 `comint-dynamic-complete' is obsolete since 24.1, replaced by
57 `completion-at-point'. (Bug#13774)
58
59 * startup.el (normal-no-mouse-startup-screen): Bug fix, the
60 default key binding for `describe-distribution' has been moved to
61 `C-h C-o'. (Bug#13970)
62
632013-04-21 Glenn Morris <rgm@gnu.org>
64
65 * vc/vc.el (vc-print-log-setup-buttons, vc-print-log-internal):
66 Add doc strings.
67 (vc-print-log): Clarify interactive prompt.
68
692013-04-20 Glenn Morris <rgm@gnu.org>
70
71 * emacs-lisp/bytecomp.el (byte-compile-insert-header):
72 No longer include timestamp etc information.
73
742013-04-20 Roland Winkler <winkler@gnu.org>
75
76 * faces.el (read-face-name): Bug fix, return just one face if arg
77 multiple is nil. (Bug#14209)
78
792013-04-20 Stefan Monnier <monnier@iro.umontreal.ca>
80
81 * emacs-lisp/nadvice.el (advice--where-alist): Add :override.
82 (remove-function): Autoload.
83
84 * comint.el (comint-redirect-original-filter-function): Remove.
85 (comint-redirect-cleanup, comint-redirect-send-command-to-process):
86 * vc/vc-cvs.el (vc-cvs-annotate-process-filter,vc-cvs-annotate-command):
87 * progmodes/octave-inf.el (inferior-octave-send-list-and-digest):
88 * progmodes/prolog.el (prolog-consult-compile):
89 * progmodes/gdb-mi.el (gdb, gdb--check-interpreter):
90 Use add/remove-function instead.
91 * progmodes/gud.el (gud-tooltip-original-filter): Remove.
92 (gud-tooltip-process-output, gud-tooltip-tips):
93 Use add/remove-function instead.
94 * progmodes/xscheme.el (xscheme-previous-process-state): Remove.
95 (scheme-interaction-mode, exit-scheme-interaction-mode):
96 Use add/remove-function instead.
97
98 * vc/vc-dispatcher.el: Use lexical-binding.
99 (vc--process-sentinel): Rename from vc-process-sentinel.
100 Change last arg to be the code to run. Don't use vc-previous-sentinel
101 and vc-sentinel-commands any more.
102 (vc-exec-after): Allow code to be a function. Use add/remove-function.
103 (compilation-error-regexp-alist, view-old-buffer-read-only): Declare.
104
12013-04-19 Masatake YAMATO <yamato@redhat.com> 1052013-04-19 Masatake YAMATO <yamato@redhat.com>
2 106
3 * progmodes/sh-script.el (sh-imenu-generic-expression): Handle 107 * progmodes/sh-script.el (sh-imenu-generic-expression):
4 function names with a single character. (Bug#11182) 108 Handle function names with a single character. (Bug#14111)
5 109
62013-04-19 Dima Kogan <dima@secretsauce.net> (tiny change) 1102013-04-19 Dima Kogan <dima@secretsauce.net> (tiny change)
7 111
diff --git a/lisp/comint.el b/lisp/comint.el
index 93db4e24f2a..d5d95f8cbc0 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -213,7 +213,7 @@ This mirrors the optional behavior of tcsh (its autoexpand and histlist).
213If the value is `input', then the expansion is seen on input. 213If the value is `input', then the expansion is seen on input.
214If the value is `history', then the expansion is only when inserting 214If the value is `history', then the expansion is only when inserting
215into the buffer's input ring. See also `comint-magic-space' and 215into the buffer's input ring. See also `comint-magic-space' and
216`comint-dynamic-complete'. 216`completion-at-point'.
217 217
218This variable is buffer-local." 218This variable is buffer-local."
219 :type '(choice (const :tag "off" nil) 219 :type '(choice (const :tag "off" nil)
@@ -371,7 +371,7 @@ text matching `comint-prompt-regexp', depending on the value of
371 '(comint-c-a-p-replace-by-expanded-history comint-filename-completion) 371 '(comint-c-a-p-replace-by-expanded-history comint-filename-completion)
372 "List of functions called to perform completion. 372 "List of functions called to perform completion.
373Works like `completion-at-point-functions'. 373Works like `completion-at-point-functions'.
374See also `comint-dynamic-complete'. 374See also `completion-at-point'.
375 375
376This is a good thing to set in mode hooks.") 376This is a good thing to set in mode hooks.")
377 377
@@ -616,7 +616,7 @@ Input ring expansion is controlled by the variable `comint-input-autoexpand',
616and addition is controlled by the variable `comint-input-ignoredups'. 616and addition is controlled by the variable `comint-input-ignoredups'.
617 617
618Commands with no default key bindings include `send-invisible', 618Commands with no default key bindings include `send-invisible',
619`comint-dynamic-complete', `comint-dynamic-list-filename-completions', and 619`completion-at-point', `comint-dynamic-list-filename-completions', and
620`comint-magic-space'. 620`comint-magic-space'.
621 621
622Input to, and output from, the subprocess can cause the window to scroll to 622Input to, and output from, the subprocess can cause the window to scroll to
@@ -2892,7 +2892,7 @@ its response can be seen."
2892;; Useful completion functions, courtesy of the Ergo group. 2892;; Useful completion functions, courtesy of the Ergo group.
2893 2893
2894;; Six commands: 2894;; Six commands:
2895;; comint-dynamic-complete Complete or expand command, filename, 2895;; completion-at-point Complete or expand command, filename,
2896;; history at point. 2896;; history at point.
2897;; comint-dynamic-complete-filename Complete filename at point. 2897;; comint-dynamic-complete-filename Complete filename at point.
2898;; comint-dynamic-list-filename-completions List completions in help buffer. 2898;; comint-dynamic-list-filename-completions List completions in help buffer.
@@ -2901,7 +2901,7 @@ its response can be seen."
2901 2901
2902;; These are not installed in the comint-mode keymap. But they are 2902;; These are not installed in the comint-mode keymap. But they are
2903;; available for people who want them. Shell-mode installs them: 2903;; available for people who want them. Shell-mode installs them:
2904;; (define-key shell-mode-map "\t" 'comint-dynamic-complete) 2904;; (define-key shell-mode-map "\t" 'completion-at-point)
2905;; (define-key shell-mode-map "\M-?" 2905;; (define-key shell-mode-map "\M-?"
2906;; 'comint-dynamic-list-filename-completions))) 2906;; 'comint-dynamic-list-filename-completions)))
2907;; 2907;;
@@ -3491,11 +3491,6 @@ buffer. The idea is that this regular expression should match a prompt
3491string, and that there ought to be at least one copy of your prompt string 3491string, and that there ought to be at least one copy of your prompt string
3492in the process buffer already.") 3492in the process buffer already.")
3493 3493
3494(defvar comint-redirect-original-filter-function nil
3495 "The process filter that was in place when redirection is started.
3496When redirection is completed, the process filter is restored to
3497this value.")
3498
3499(defvar comint-redirect-subvert-readonly nil 3494(defvar comint-redirect-subvert-readonly nil
3500 "Non-nil means `comint-redirect' can insert into read-only buffers. 3495 "Non-nil means `comint-redirect' can insert into read-only buffers.
3501This works by binding `inhibit-read-only' around the insertion. 3496This works by binding `inhibit-read-only' around the insertion.
@@ -3558,8 +3553,8 @@ and does not normally need to be invoked by the end user or programmer."
3558 ;; Release the last redirected string 3553 ;; Release the last redirected string
3559 (setq comint-redirect-previous-input-string nil) 3554 (setq comint-redirect-previous-input-string nil)
3560 ;; Restore the process filter 3555 ;; Restore the process filter
3561 (set-process-filter (get-buffer-process (current-buffer)) 3556 (remove-function (process-filter (get-buffer-process (current-buffer)))
3562 comint-redirect-original-filter-function) 3557 #'comint-redirect-filter)
3563 ;; Restore the mode line 3558 ;; Restore the mode line
3564 (setq mode-line-process comint-redirect-original-mode-line-process) 3559 (setq mode-line-process comint-redirect-original-mode-line-process)
3565 ;; Set the completed flag 3560 ;; Set the completed flag
@@ -3701,10 +3696,8 @@ If NO-DISPLAY is non-nil, do not show the output buffer."
3701 comint-prompt-regexp ; Finished Regexp 3696 comint-prompt-regexp ; Finished Regexp
3702 echo) ; Echo input 3697 echo) ; Echo input
3703 3698
3704 ;; Set the filter 3699 ;; Set the filter.
3705 (setq comint-redirect-original-filter-function ; Save the old filter 3700 (add-function :override (process-filter proc) #'comint-redirect-filter)
3706 (process-filter proc))
3707 (set-process-filter proc 'comint-redirect-filter)
3708 3701
3709 ;; Send the command 3702 ;; Send the command
3710 (process-send-string (current-buffer) (concat command "\n")) 3703 (process-send-string (current-buffer) (concat command "\n"))
@@ -3812,7 +3805,7 @@ REGEXP-GROUP is the regular expression group in REGEXP to use."
3812;; (setq shell-mode-map (copy-keymap comint-mode-map)) 3805;; (setq shell-mode-map (copy-keymap comint-mode-map))
3813;; (define-key shell-mode-map "\C-c\C-f" 'shell-forward-command) 3806;; (define-key shell-mode-map "\C-c\C-f" 'shell-forward-command)
3814;; (define-key shell-mode-map "\C-c\C-b" 'shell-backward-command) 3807;; (define-key shell-mode-map "\C-c\C-b" 'shell-backward-command)
3815;; (define-key shell-mode-map "\t" 'comint-dynamic-complete) 3808;; (define-key shell-mode-map "\t" 'completion-at-point)
3816;; (define-key shell-mode-map "\M-?" 3809;; (define-key shell-mode-map "\M-?"
3817;; 'comint-dynamic-list-filename-completions))) 3810;; 'comint-dynamic-list-filename-completions)))
3818;; 3811;;
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 5db1793a407..755d5f716d3 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -1997,11 +1997,7 @@ Call from the source buffer."
1997 ;; >4 byte x version %d 1997 ;; >4 byte x version %d
1998 (insert 1998 (insert
1999 ";ELC" 23 "\000\000\000\n" 1999 ";ELC" 23 "\000\000\000\n"
2000 ";;; Compiled by " 2000 ";;; Compiled\n"
2001 (or (and (boundp 'user-mail-address) user-mail-address)
2002 (concat (user-login-name) "@" (system-name)))
2003 " on " (current-time-string) "\n"
2004 ";;; from file " filename "\n"
2005 ";;; in Emacs version " emacs-version "\n" 2001 ";;; in Emacs version " emacs-version "\n"
2006 ";;; with" 2002 ";;; with"
2007 (cond 2003 (cond
diff --git a/lisp/emacs-lisp/nadvice.el b/lisp/emacs-lisp/nadvice.el
index a3dfb0326e6..12166553a14 100644
--- a/lisp/emacs-lisp/nadvice.el
+++ b/lisp/emacs-lisp/nadvice.el
@@ -41,6 +41,7 @@
41 '((:around "\300\301\302\003#\207" 5) 41 '((:around "\300\301\302\003#\207" 5)
42 (:before "\300\301\002\"\210\300\302\002\"\207" 4) 42 (:before "\300\301\002\"\210\300\302\002\"\207" 4)
43 (:after "\300\302\002\"\300\301\003\"\210\207" 5) 43 (:after "\300\302\002\"\300\301\003\"\210\207" 5)
44 (:override "\300\301\"\207" 4)
44 (:after-until "\300\302\002\"\206\013\000\300\301\002\"\207" 4) 45 (:after-until "\300\302\002\"\206\013\000\300\301\002\"\207" 4)
45 (:after-while "\300\302\002\"\205\013\000\300\301\002\"\207" 4) 46 (:after-while "\300\302\002\"\205\013\000\300\301\002\"\207" 4)
46 (:before-until "\300\301\002\"\206\013\000\300\302\002\"\207" 4) 47 (:before-until "\300\301\002\"\206\013\000\300\302\002\"\207" 4)
@@ -228,6 +229,7 @@ call OLDFUN here:
228`:before' (lambda (&rest r) (apply FUNCTION r) (apply OLDFUN r)) 229`:before' (lambda (&rest r) (apply FUNCTION r) (apply OLDFUN r))
229`:after' (lambda (&rest r) (prog1 (apply OLDFUN r) (apply FUNCTION r))) 230`:after' (lambda (&rest r) (prog1 (apply OLDFUN r) (apply FUNCTION r)))
230`:around' (lambda (&rest r) (apply FUNCTION OLDFUN r)) 231`:around' (lambda (&rest r) (apply FUNCTION OLDFUN r))
232`:override' (lambda (&rest r) (apply FUNCTION r))
231`:before-while' (lambda (&rest r) (and (apply FUNCTION r) (apply OLDFUN r))) 233`:before-while' (lambda (&rest r) (and (apply FUNCTION r) (apply OLDFUN r)))
232`:before-until' (lambda (&rest r) (or (apply FUNCTION r) (apply OLDFUN r))) 234`:before-until' (lambda (&rest r) (or (apply FUNCTION r) (apply OLDFUN r)))
233`:after-while' (lambda (&rest r) (and (apply OLDFUN r) (apply FUNCTION r))) 235`:after-while' (lambda (&rest r) (and (apply OLDFUN r) (apply FUNCTION r)))
@@ -263,6 +265,7 @@ is also interactive. There are 3 cases:
263 (setf (gv-deref ref) 265 (setf (gv-deref ref)
264 (advice--make where function (gv-deref ref) props)))) 266 (advice--make where function (gv-deref ref) props))))
265 267
268;;;###autoload
266(defmacro remove-function (place function) 269(defmacro remove-function (place function)
267 "Remove the FUNCTION piece of advice from PLACE. 270 "Remove the FUNCTION piece of advice from PLACE.
268If FUNCTION was not added to PLACE, do nothing. 271If FUNCTION was not added to PLACE, do nothing.
diff --git a/lisp/epg.el b/lisp/epg.el
index 3f04aa2e07a..c36de7e4624 100644
--- a/lisp/epg.el
+++ b/lisp/epg.el
@@ -195,7 +195,7 @@
195 cipher-algorithm digest-algorithm compress-algorithm 195 cipher-algorithm digest-algorithm compress-algorithm
196 (list #'epg-passphrase-callback-function) 196 (list #'epg-passphrase-callback-function)
197 nil 197 nil
198 nil nil nil nil nil nil))) 198 nil nil nil nil nil nil nil)))
199 199
200(defun epg-context-protocol (context) 200(defun epg-context-protocol (context)
201 "Return the protocol used within CONTEXT." 201 "Return the protocol used within CONTEXT."
@@ -289,6 +289,12 @@ This function is for internal use only."
289 (signal 'wrong-type-argument (list 'epg-context-p context))) 289 (signal 'wrong-type-argument (list 'epg-context-p context)))
290 (aref (cdr context) 14)) 290 (aref (cdr context) 14))
291 291
292(defun epg-context-pinentry-mode (context)
293 "Return the mode of pinentry invocation."
294 (unless (eq (car-safe context) 'epg-context)
295 (signal 'wrong-type-argument (list 'epg-context-p context)))
296 (aref (cdr context) 15))
297
292(defun epg-context-set-protocol (context protocol) 298(defun epg-context-set-protocol (context protocol)
293 "Set the protocol used within CONTEXT." 299 "Set the protocol used within CONTEXT."
294 (unless (eq (car-safe context) 'epg-context) 300 (unless (eq (car-safe context) 'epg-context)
@@ -407,6 +413,14 @@ This function is for internal use only."
407 (signal 'wrong-type-argument (list 'epg-context-p context))) 413 (signal 'wrong-type-argument (list 'epg-context-p context)))
408 (aset (cdr context) 14 operation)) 414 (aset (cdr context) 14 operation))
409 415
416(defun epg-context-set-pinentry-mode (context mode)
417 "Set the mode of pinentry invocation."
418 (unless (eq (car-safe context) 'epg-context)
419 (signal 'wrong-type-argument (list 'epg-context-p context)))
420 (unless (memq mode '(nil ask cancel error loopback))
421 (signal 'epg-error (list "Unknown pinentry mode" mode)))
422 (aset (cdr context) 15 mode))
423
410(defun epg-make-signature (status &optional key-id) 424(defun epg-make-signature (status &optional key-id)
411 "Return a signature object." 425 "Return a signature object."
412 (cons 'epg-signature (vector status key-id nil nil nil nil nil nil nil nil 426 (cons 'epg-signature (vector status key-id nil nil nil nil nil nil nil nil
@@ -1152,6 +1166,10 @@ This function is for internal use only."
1152 (if (epg-context-textmode context) '("--textmode")) 1166 (if (epg-context-textmode context) '("--textmode"))
1153 (if (epg-context-output-file context) 1167 (if (epg-context-output-file context)
1154 (list "--output" (epg-context-output-file context))) 1168 (list "--output" (epg-context-output-file context)))
1169 (if (epg-context-pinentry-mode context)
1170 (list "--pinentry-mode"
1171 (symbol-name (epg-context-pinentry-mode
1172 context))))
1155 args)) 1173 args))
1156 (coding-system-for-write 'binary) 1174 (coding-system-for-write 'binary)
1157 (coding-system-for-read 'binary) 1175 (coding-system-for-read 'binary)
diff --git a/lisp/faces.el b/lisp/faces.el
index de6d36c7ae8..6179ed7dfa7 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -979,9 +979,8 @@ if the user entered more than one face name, return only the first one."
979 ;; (for example, because DEFAULT was "all faces") 979 ;; (for example, because DEFAULT was "all faces")
980 (if (facep face) (push (intern face) faces))) 980 (if (facep face) (push (intern face) faces)))
981 ;; Return either a list of faces or just one face. 981 ;; Return either a list of faces or just one face.
982 (if multiple 982 (setq faces (nreverse faces))
983 (nreverse faces) 983 (if multiple faces (car faces))))
984 (last faces))))
985 984
986;; Not defined without X, but behind window-system test. 985;; Not defined without X, but behind window-system test.
987(defvar x-bitmap-file-path) 986(defvar x-bitmap-file-path)
diff --git a/lisp/info-look.el b/lisp/info-look.el
index afe4301c659..e43cd731547 100644
--- a/lisp/info-look.el
+++ b/lisp/info-look.el
@@ -881,8 +881,11 @@ Return nil if there is nothing appropriate in the buffer near point."
881(info-lookup-maybe-add-help 881(info-lookup-maybe-add-help
882 :mode 'latex-mode 882 :mode 'latex-mode
883 :regexp "\\\\\\([a-zA-Z]+\\|[^a-zA-Z]\\)" 883 :regexp "\\\\\\([a-zA-Z]+\\|[^a-zA-Z]\\)"
884 :doc-spec '(("(latex)Command Index" nil 884 :doc-spec `((,(if (Info-find-file "latex2e" t)
885 "`" "\\({[^}]*}\\)?'"))) 885 ;; From http://home.gna.org/latexrefman
886 "(latex2e)Command Index"
887 "(latex)Command Index")
888 nil "`" "\\({[^}]*}\\)?'")))
886 889
887(info-lookup-maybe-add-help 890(info-lookup-maybe-add-help
888 :mode 'emacs-lisp-mode 891 :mode 'emacs-lisp-mode
diff --git a/lisp/jit-lock.el b/lisp/jit-lock.el
index d879735c344..9359a65a1b8 100644
--- a/lisp/jit-lock.el
+++ b/lisp/jit-lock.el
@@ -1,4 +1,4 @@
1;;; jit-lock.el --- just-in-time fontification 1;;; jit-lock.el --- just-in-time fontification -*- lexical-binding: t -*-
2 2
3;; Copyright (C) 1998, 2000-2013 Free Software Foundation, Inc. 3;; Copyright (C) 1998, 2000-2013 Free Software Foundation, Inc.
4 4
@@ -412,21 +412,24 @@ Defaults to the whole buffer. END can be out of bounds."
412 ;; eagerly extend the refontified region with 412 ;; eagerly extend the refontified region with
413 ;; jit-lock-after-change-extend-region-functions. 413 ;; jit-lock-after-change-extend-region-functions.
414 (when (< start orig-start) 414 (when (< start orig-start)
415 (run-with-timer 0 nil 'jit-lock-force-redisplay 415 (run-with-timer 0 nil #'jit-lock-force-redisplay
416 (current-buffer) start orig-start)) 416 (copy-marker start) (copy-marker orig-start)))
417 417
418 ;; Find the start of the next chunk, if any. 418 ;; Find the start of the next chunk, if any.
419 (setq start (text-property-any next end 'fontified nil)))))))) 419 (setq start (text-property-any next end 'fontified nil))))))))
420 420
421(defun jit-lock-force-redisplay (buf start end) 421(defun jit-lock-force-redisplay (start end)
422 "Force the display engine to re-render buffer BUF from START to END." 422 "Force the display engine to re-render buffer BUF from START to END."
423 (with-current-buffer buf 423 (when (marker-buffer start)
424 (with-buffer-prepared-for-jit-lock 424 (with-current-buffer (marker-buffer start)
425 ;; Don't cause refontification (it's already been done), but just do 425 (with-buffer-prepared-for-jit-lock
426 ;; some random buffer change, so as to force redisplay. 426 (when (> end (point-max))
427 (put-text-property start end 'fontified t)))) 427 (setq end (point-max) start (min start end)))
428 428 (when (< start (point-min))
429 429 (setq start (point-min) end (max start end)))
430 ;; Don't cause refontification (it's already been done), but just do
431 ;; some random buffer change, so as to force redisplay.
432 (put-text-property start end 'fontified t)))))
430 433
431;;; Stealth fontification. 434;;; Stealth fontification.
432 435
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 978b3a5b130..ef949f7482e 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -638,8 +638,8 @@ If ARGS are provided, then pass MESSAGE through `format'."
638 638
639(defun minibuffer-completion-contents () 639(defun minibuffer-completion-contents ()
640 "Return the user input in a minibuffer before point as a string. 640 "Return the user input in a minibuffer before point as a string.
641That used to be what completion commands operate on." 641In Emacs-22, that was what completion commands operated on."
642 (declare (obsolete minibuffer-contents "24.4")) 642 (declare (obsolete nil "24.4"))
643 (buffer-substring (field-beginning) (point))) 643 (buffer-substring (field-beginning) (point)))
644 644
645(defun delete-minibuffer-contents () 645(defun delete-minibuffer-contents ()
diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el
index a71df54db58..613b2067955 100644
--- a/lisp/net/tramp-adb.el
+++ b/lisp/net/tramp-adb.el
@@ -982,11 +982,10 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
982 (setq args (append (list "-s" (tramp-file-name-host vec)) args))) 982 (setq args (append (list "-s" (tramp-file-name-host vec)) args)))
983 (with-temp-buffer 983 (with-temp-buffer
984 (prog1 984 (prog1
985 (unless (zerop (apply 'call-process tramp-adb-program nil t nil args)) 985 (unless
986 (zerop (apply 'tramp-call-process tramp-adb-program nil t nil args))
986 (buffer-string)) 987 (buffer-string))
987 (tramp-message 988 (tramp-message vec 6 "%s" (buffer-string)))))
988 vec 6 "%s %s\n%s"
989 tramp-adb-program (mapconcat 'identity args " ") (buffer-string)))))
990 989
991(defun tramp-adb-find-test-command (vec) 990(defun tramp-adb-find-test-command (vec)
992 "Checks, whether the ash has a builtin \"test\" command. 991 "Checks, whether the ash has a builtin \"test\" command.
diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el
index ed61fbcfa76..d4115352b34 100644
--- a/lisp/net/tramp-compat.el
+++ b/lisp/net/tramp-compat.el
@@ -438,20 +438,6 @@ This is, the first, empty, element is omitted. In XEmacs, the first
438element is not omitted." 438element is not omitted."
439 (delete "" (split-string string pattern))) 439 (delete "" (split-string string pattern)))
440 440
441(defun tramp-compat-call-process
442 (program &optional infile destination display &rest args)
443 "Calls `call-process' on the local host.
444This is needed because for some Emacs flavors Tramp has
445defadvised `call-process' to behave like `process-file'. The
446Lisp error raised when PROGRAM is nil is trapped also, returning 1."
447 (let ((default-directory
448 (if (file-remote-p default-directory)
449 (tramp-compat-temporary-file-directory)
450 default-directory)))
451 (if (executable-find program)
452 (apply 'call-process program infile destination display args)
453 1)))
454
455(defun tramp-compat-process-running-p (process-name) 441(defun tramp-compat-process-running-p (process-name)
456 "Returns `t' if system process PROCESS-NAME is running for `user-login-name'." 442 "Returns `t' if system process PROCESS-NAME is running for `user-login-name'."
457 (when (stringp process-name) 443 (when (stringp process-name)
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index 6f066f56a2b..7c3b393873c 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -1572,7 +1572,7 @@ COMMAND is usually a command from the gvfs-* utilities.
1572 (tramp-gvfs-maybe-open-connection vec) 1572 (tramp-gvfs-maybe-open-connection vec)
1573 (erase-buffer) 1573 (erase-buffer)
1574 (tramp-message vec 6 "%s %s" command (mapconcat 'identity args " ")) 1574 (tramp-message vec 6 "%s %s" command (mapconcat 'identity args " "))
1575 (setq result (apply 'tramp-compat-call-process command nil t nil args)) 1575 (setq result (apply 'tramp-call-process command nil t nil args))
1576 (tramp-message vec 6 "\n%s" (buffer-string)) 1576 (tramp-message vec 6 "\n%s" (buffer-string))
1577 (zerop result)))) 1577 (zerop result))))
1578 1578
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index f28df1ce160..e45c2cf8511 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -767,6 +767,16 @@ while (my $data = <STDIN>) {
767Escape sequence %s is replaced with name of Perl binary. 767Escape sequence %s is replaced with name of Perl binary.
768This string is passed to `format', so percent characters need to be doubled.") 768This string is passed to `format', so percent characters need to be doubled.")
769 769
770(defconst tramp-perl-pack
771 "%s -e 'binmode STDIN; binmode STDOUT; print pack(q{u*}, join q{}, <>)'"
772 "Perl program to use for encoding a file.
773Escape sequence %s is replaced with name of Perl binary.")
774
775(defconst tramp-perl-unpack
776 "%s -e 'binmode STDIN; binmode STDOUT; print unpack(q{u*}, join q{}, <>)'"
777 "Perl program to use for decoding a file.
778Escape sequence %s is replaced with name of Perl binary.")
779
770(defconst tramp-vc-registered-read-file-names 780(defconst tramp-vc-registered-read-file-names
771 "echo \"(\" 781 "echo \"(\"
772while read file; do 782while read file; do
@@ -1309,7 +1319,7 @@ of."
1309 ;; without `set-file-times', this function is an alias for this. 1319 ;; without `set-file-times', this function is an alias for this.
1310 ;; We are local, so we don't need the UTC settings. 1320 ;; We are local, so we don't need the UTC settings.
1311 (zerop 1321 (zerop
1312 (tramp-compat-call-process 1322 (tramp-call-process
1313 "touch" nil nil nil "-t" 1323 "touch" nil nil nil "-t"
1314 (format-time-string "%Y%m%d%H%M.%S" time) 1324 (format-time-string "%Y%m%d%H%M.%S" time)
1315 (tramp-shell-quote-argument filename))))) 1325 (tramp-shell-quote-argument filename)))))
@@ -1343,7 +1353,7 @@ be non-negative integers."
1343 ;; `set-file-uid-gid'. On W32 "chown" might not work. 1353 ;; `set-file-uid-gid'. On W32 "chown" might not work.
1344 (let ((uid (or (and (natnump uid) uid) (tramp-get-local-uid 'integer))) 1354 (let ((uid (or (and (natnump uid) uid) (tramp-get-local-uid 'integer)))
1345 (gid (or (and (natnump gid) gid) (tramp-get-local-gid 'integer)))) 1355 (gid (or (and (natnump gid) gid) (tramp-get-local-gid 'integer))))
1346 (tramp-compat-call-process 1356 (tramp-call-process
1347 "chown" nil nil nil 1357 "chown" nil nil nil
1348 (format "%d:%d" uid gid) (tramp-shell-quote-argument filename)))))) 1358 (format "%d:%d" uid gid) (tramp-shell-quote-argument filename))))))
1349 1359
@@ -2891,40 +2901,39 @@ the result will be a local, non-Tramp, filename."
2891 (rem-enc 2901 (rem-enc
2892 (save-excursion 2902 (save-excursion
2893 (with-tramp-progress-reporter 2903 (with-tramp-progress-reporter
2894 v 3 (format "Encoding remote file %s" filename) 2904 v 3
2905 (format "Encoding remote file `%s' with `%s'" filename rem-enc)
2895 (tramp-barf-unless-okay 2906 (tramp-barf-unless-okay
2896 v (format rem-enc (tramp-shell-quote-argument localname)) 2907 v (format rem-enc (tramp-shell-quote-argument localname))
2897 "Encoding remote file failed")) 2908 "Encoding remote file failed"))
2898 2909
2899 (if (functionp loc-dec) 2910 (with-tramp-progress-reporter
2900 ;; If local decoding is a function, we call it. We 2911 v 3 (format "Decoding local file `%s' with `%s'"
2901 ;; must disable multibyte, because 2912 tmpfile loc-dec)
2902 ;; `uudecode-decode-region' doesn't handle it 2913 (if (functionp loc-dec)
2903 ;; correctly. 2914 ;; If local decoding is a function, we call it.
2904 (with-temp-buffer 2915 ;; We must disable multibyte, because
2905 (set-buffer-multibyte nil) 2916 ;; `uudecode-decode-region' doesn't handle it
2906 (insert-buffer-substring (tramp-get-buffer v)) 2917 ;; correctly.
2907 (with-tramp-progress-reporter 2918 (with-temp-buffer
2908 v 3 (format "Decoding remote file %s with function %s" 2919 (set-buffer-multibyte nil)
2909 filename loc-dec) 2920 (insert-buffer-substring (tramp-get-buffer v))
2910 (funcall loc-dec (point-min) (point-max)) 2921 (funcall loc-dec (point-min) (point-max))
2911 ;; Unset `file-name-handler-alist'. Otherwise, 2922 ;; Unset `file-name-handler-alist'. Otherwise,
2912 ;; epa-file gets confused. 2923 ;; epa-file gets confused.
2913 (let (file-name-handler-alist 2924 (let (file-name-handler-alist
2914 (coding-system-for-write 'binary)) 2925 (coding-system-for-write 'binary))
2915 (write-region (point-min) (point-max) tmpfile)))) 2926 (write-region (point-min) (point-max) tmpfile)))
2916 2927
2917 ;; If tramp-decoding-function is not defined for this 2928 ;; If tramp-decoding-function is not defined for this
2918 ;; method, we invoke tramp-decoding-command instead. 2929 ;; method, we invoke tramp-decoding-command instead.
2919 (let ((tmpfile2 (tramp-compat-make-temp-file filename))) 2930 (let ((tmpfile2 (tramp-compat-make-temp-file filename)))
2920 ;; Unset `file-name-handler-alist'. Otherwise, 2931 ;; Unset `file-name-handler-alist'. Otherwise,
2921 ;; epa-file gets confused. 2932 ;; epa-file gets confused.
2922 (let (file-name-handler-alist 2933 (let (file-name-handler-alist
2923 (coding-system-for-write 'binary)) 2934 (coding-system-for-write 'binary))
2924 (write-region (point-min) (point-max) tmpfile2)) 2935 (with-current-buffer (tramp-get-buffer v)
2925 (with-tramp-progress-reporter 2936 (write-region (point-min) (point-max) tmpfile2)))
2926 v 3 (format "Decoding remote file %s with command %s"
2927 filename loc-dec)
2928 (unwind-protect 2937 (unwind-protect
2929 (tramp-call-local-coding-command 2938 (tramp-call-local-coding-command
2930 loc-dec tmpfile2 tmpfile) 2939 loc-dec tmpfile2 tmpfile)
@@ -3149,28 +3158,25 @@ Returns a file name in `tramp-auto-save-directory' for autosaving this file."
3149 (with-temp-buffer 3158 (with-temp-buffer
3150 (set-buffer-multibyte nil) 3159 (set-buffer-multibyte nil)
3151 ;; Use encoding function or command. 3160 ;; Use encoding function or command.
3152 (if (functionp loc-enc) 3161 (with-tramp-progress-reporter
3153 (with-tramp-progress-reporter 3162 v 3 (format "Encoding local file `%s' using `%s'"
3154 v 3 (format "Encoding region using function `%s'" 3163 tmpfile loc-enc)
3155 loc-enc) 3164 (if (functionp loc-enc)
3156 (let ((coding-system-for-read 'binary)) 3165 ;; The following `let' is a workaround for
3157 (insert-file-contents-literally tmpfile)) 3166 ;; the base64.el that comes with pgnus-0.84.
3158 ;; The following `let' is a workaround for the 3167 ;; If both of the following conditions are
3159 ;; base64.el that comes with pgnus-0.84. If
3160 ;; both of the following conditions are
3161 ;; satisfied, it tries to write to a local 3168 ;; satisfied, it tries to write to a local
3162 ;; file in default-directory, but at this 3169 ;; file in default-directory, but at this
3163 ;; point, default-directory is remote. 3170 ;; point, default-directory is remote.
3164 ;; (`call-process-region' can't write to 3171 ;; (`call-process-region' can't write to
3165 ;; remote files, it seems.) The file in 3172 ;; remote files, it seems.) The file in
3166 ;; question is a tmp file anyway. 3173 ;; question is a tmp file anyway.
3167 (let ((default-directory 3174 (let ((coding-system-for-read 'binary)
3175 (default-directory
3168 (tramp-compat-temporary-file-directory))) 3176 (tramp-compat-temporary-file-directory)))
3169 (funcall loc-enc (point-min) (point-max)))) 3177 (insert-file-contents-literally tmpfile)
3178 (funcall loc-enc (point-min) (point-max)))
3170 3179
3171 (with-tramp-progress-reporter
3172 v 3 (format "Encoding region using command `%s'"
3173 loc-enc)
3174 (unless (zerop (tramp-call-local-coding-command 3180 (unless (zerop (tramp-call-local-coding-command
3175 loc-enc tmpfile t)) 3181 loc-enc tmpfile t))
3176 (tramp-error 3182 (tramp-error
@@ -3183,8 +3189,8 @@ Returns a file name in `tramp-auto-save-directory' for autosaving this file."
3183 ;; writes to remote file. Because this happens on 3189 ;; writes to remote file. Because this happens on
3184 ;; the remote host, we cannot use the function. 3190 ;; the remote host, we cannot use the function.
3185 (with-tramp-progress-reporter 3191 (with-tramp-progress-reporter
3186 v 3 3192 v 3 (format "Decoding remote file `%s' using `%s'"
3187 (format "Decoding region into remote file %s" filename) 3193 filename rem-dec)
3188 (goto-char (point-max)) 3194 (goto-char (point-max))
3189 (unless (bolp) (newline)) 3195 (unless (bolp) (newline))
3190 (tramp-send-command 3196 (tramp-send-command
@@ -3204,7 +3210,7 @@ Returns a file name in `tramp-auto-save-directory' for autosaving this file."
3204 (erase-buffer) 3210 (erase-buffer)
3205 (and 3211 (and
3206 ;; cksum runs locally, if possible. 3212 ;; cksum runs locally, if possible.
3207 (zerop (tramp-compat-call-process "cksum" tmpfile t)) 3213 (zerop (tramp-call-process "cksum" tmpfile t))
3208 ;; cksum runs remotely. 3214 ;; cksum runs remotely.
3209 (tramp-send-command-and-check 3215 (tramp-send-command-and-check
3210 v 3216 v
@@ -3382,6 +3388,9 @@ Only send the definition if it has not already been done."
3382 (unless (member name scripts) 3388 (unless (member name scripts)
3383 (with-tramp-progress-reporter vec 5 (format "Sending script `%s'" name) 3389 (with-tramp-progress-reporter vec 5 (format "Sending script `%s'" name)
3384 ;; The script could contain a call of Perl. This is masked with `%s'. 3390 ;; The script could contain a call of Perl. This is masked with `%s'.
3391 (when (and (string-match "%s" script)
3392 (not (tramp-get-remote-perl vec)))
3393 (tramp-error vec 'file-error "No Perl available on remote host"))
3385 (tramp-barf-unless-okay 3394 (tramp-barf-unless-okay
3386 vec 3395 vec
3387 (format "%s () {\n%s\n}" name 3396 (format "%s () {\n%s\n}" name
@@ -3811,11 +3820,6 @@ process to set up. VEC specifies the connection."
3811 (tramp-send-command 3820 (tramp-send-command
3812 vec (format "unset %s" (mapconcat 'identity unset " ")) t)))) 3821 vec (format "unset %s" (mapconcat 'identity unset " ")) t))))
3813 3822
3814;; CCC: We should either implement a Perl version of base64 encoding
3815;; and decoding. Then we just use that in the last item. The other
3816;; alternative is to use the Perl version of UU encoding. But then
3817;; we need a Lisp version of uuencode.
3818;;
3819;; Old text from documentation of tramp-methods: 3823;; Old text from documentation of tramp-methods:
3820;; Using a uuencode/uudecode inline method is discouraged, please use one 3824;; Using a uuencode/uudecode inline method is discouraged, please use one
3821;; of the base64 methods instead since base64 encoding is much more 3825;; of the base64 methods instead since base64 encoding is much more
@@ -3832,11 +3836,9 @@ process to set up. VEC specifies the connection."
3832(autoload 'uudecode-decode-region "uudecode") 3836(autoload 'uudecode-decode-region "uudecode")
3833 3837
3834(defconst tramp-local-coding-commands 3838(defconst tramp-local-coding-commands
3835 '((b64 base64-encode-region base64-decode-region) 3839 `((b64 base64-encode-region base64-decode-region)
3836 (uu tramp-uuencode-region uudecode-decode-region) 3840 (uu tramp-uuencode-region uudecode-decode-region)
3837 (pack 3841 (pack ,(format tramp-perl-pack "perl") ,(format tramp-perl-unpack "perl")))
3838 "perl -e 'binmode STDIN; binmode STDOUT; print pack(q{u*}, join q{}, <>)'"
3839 "perl -e 'binmode STDIN; binmode STDOUT; print unpack(q{u*}, join q{}, <>)'"))
3840 "List of local coding commands for inline transfer. 3842 "List of local coding commands for inline transfer.
3841Each item is a list that looks like this: 3843Each item is a list that looks like this:
3842 3844
@@ -3871,9 +3873,7 @@ with the encoded or decoded results, respectively.")
3871 (uu "uuencode xxx" "uudecode -o -") 3873 (uu "uuencode xxx" "uudecode -o -")
3872 (uu "uuencode xxx" "uudecode -p") 3874 (uu "uuencode xxx" "uudecode -p")
3873 (uu "uuencode xxx" tramp-uudecode) 3875 (uu "uuencode xxx" tramp-uudecode)
3874 (pack 3876 (pack tramp-perl-pack tramp-perl-unpack))
3875 "perl -e 'binmode STDIN; binmode STDOUT; print pack(q{u*}, join q{}, <>)'"
3876 "perl -e 'binmode STDIN; binmode STDOUT; print unpack(q{u*}, join q{}, <>)'"))
3877 "List of remote coding commands for inline transfer. 3877 "List of remote coding commands for inline transfer.
3878Each item is a list that looks like this: 3878Each item is a list that looks like this:
3879 3879
@@ -4014,7 +4014,7 @@ INPUT can also be nil which means `/dev/null'.
4014OUTPUT can be a string (which specifies a filename), or t (which 4014OUTPUT can be a string (which specifies a filename), or t (which
4015means standard output and thus the current buffer), or nil (which 4015means standard output and thus the current buffer), or nil (which
4016means discard it)." 4016means discard it)."
4017 (tramp-compat-call-process 4017 (tramp-call-process
4018 tramp-encoding-shell 4018 tramp-encoding-shell
4019 (when (and input (not (string-match "%s" cmd))) input) 4019 (when (and input (not (string-match "%s" cmd))) input)
4020 (if (eq output t) t nil) 4020 (if (eq output t) t nil)
@@ -4022,7 +4022,7 @@ means discard it)."
4022 tramp-encoding-command-switch 4022 tramp-encoding-command-switch
4023 (concat 4023 (concat
4024 (if (string-match "%s" cmd) (format cmd input) cmd) 4024 (if (string-match "%s" cmd) (format cmd input) cmd)
4025 (if (stringp output) (concat "> " output) "")))) 4025 (if (stringp output) (concat " >" output) ""))))
4026 4026
4027(defconst tramp-inline-compress-commands 4027(defconst tramp-inline-compress-commands
4028 '(("gzip" "gzip -d") 4028 '(("gzip" "gzip -d")
@@ -4051,7 +4051,7 @@ Goes through the list `tramp-inline-compress-commands'."
4051 decompress (nth 1 item)) 4051 decompress (nth 1 item))
4052 (tramp-message 4052 (tramp-message
4053 vec 5 4053 vec 5
4054 "Checking local compress command `%s', `%s' for sanity" 4054 "Checking local compress commands `%s', `%s' for sanity"
4055 compress decompress) 4055 compress decompress)
4056 (unless 4056 (unless
4057 (zerop 4057 (zerop
@@ -4067,7 +4067,7 @@ Goes through the list `tramp-inline-compress-commands'."
4067 (throw 'next nil)) 4067 (throw 'next nil))
4068 (tramp-message 4068 (tramp-message
4069 vec 5 4069 vec 5
4070 "Checking remote compress command `%s', `%s' for sanity" 4070 "Checking remote compress commands `%s', `%s' for sanity"
4071 compress decompress) 4071 compress decompress)
4072 (unless (tramp-send-command-and-check 4072 (unless (tramp-send-command-and-check
4073 vec (format "echo %s | %s | %s" magic compress decompress) t) 4073 vec (format "echo %s | %s | %s" magic compress decompress) t)
@@ -4981,10 +4981,12 @@ function cell is returned to be applied on a buffer."
4981 ;; Windows shells need the program file name after 4981 ;; Windows shells need the program file name after
4982 ;; the pipe symbol be quoted if they use forward 4982 ;; the pipe symbol be quoted if they use forward
4983 ;; slashes as directory separators. 4983 ;; slashes as directory separators.
4984 (if (and (string-match "local" prop) 4984 (cond
4985 (memq system-type '(windows-nt))) 4985 ((and (string-match "local" prop)
4986 "(%s | \"%s\" >%%s)" 4986 (memq system-type '(windows-nt)))
4987 "(%s | %s >%%s)") 4987 "(%s | \"%s\")")
4988 ((string-match "local" prop) "(%s | %s)")
4989 (t "(%s | %s >%%s)"))
4988 coding compress)) 4990 coding compress))
4989 (compress 4991 (compress
4990 (format 4992 (format
@@ -4997,7 +4999,9 @@ function cell is returned to be applied on a buffer."
4997 "(%s <%%s | %s)") 4999 "(%s <%%s | %s)")
4998 compress coding)) 5000 compress coding))
4999 ((string-match "decoding" prop) 5001 ((string-match "decoding" prop)
5000 (format "%s >%%s" coding)) 5002 (cond
5003 ((string-match "local" prop) (format "%s" coding))
5004 (t (format "%s >%%s" coding))))
5001 (t 5005 (t
5002 (format "%s <%%s" coding))))))) 5006 (format "%s <%%s" coding)))))))
5003 5007
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 7795d9f808c..4ec3a4b7829 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -1717,7 +1717,7 @@ Example:
1717 ;; Windows registry. 1717 ;; Windows registry.
1718 (and (memq system-type '(cygwin windows-nt)) 1718 (and (memq system-type '(cygwin windows-nt))
1719 (zerop 1719 (zerop
1720 (tramp-compat-call-process 1720 (tramp-call-process
1721 "reg" nil nil nil "query" (nth 1 (car v))))) 1721 "reg" nil nil nil "query" (nth 1 (car v)))))
1722 ;; Configuration file. 1722 ;; Configuration file.
1723 (file-exists-p (nth 1 (car v))))) 1723 (file-exists-p (nth 1 (car v)))))
@@ -2769,7 +2769,7 @@ User may be nil."
2769User is always nil." 2769User is always nil."
2770 (if (memq system-type '(windows-nt)) 2770 (if (memq system-type '(windows-nt))
2771 (with-temp-buffer 2771 (with-temp-buffer
2772 (when (zerop (tramp-compat-call-process 2772 (when (zerop (tramp-call-process
2773 "reg" nil t nil "query" registry-or-dirname)) 2773 "reg" nil t nil "query" registry-or-dirname))
2774 (goto-char (point-min)) 2774 (goto-char (point-min))
2775 (loop while (not (eobp)) collect 2775 (loop while (not (eobp)) collect
@@ -3897,6 +3897,24 @@ ALIST is of the form ((FROM . TO) ...)."
3897 3897
3898;;; Compatibility functions section: 3898;;; Compatibility functions section:
3899 3899
3900(defun tramp-call-process
3901 (program &optional infile destination display &rest args)
3902 "Calls `call-process' on the local host.
3903This is needed because for some Emacs flavors Tramp has
3904defadvised `call-process' to behave like `process-file'. The
3905Lisp error raised when PROGRAM is nil is trapped also, returning 1.
3906Furthermore, traces are written with verbosity of 6."
3907 (let ((default-directory
3908 (if (file-remote-p default-directory)
3909 (tramp-compat-temporary-file-directory)
3910 default-directory)))
3911 (tramp-message
3912 (vector tramp-current-method tramp-current-user tramp-current-host nil nil)
3913 6 "%s %s %s" program infile args)
3914 (if (executable-find program)
3915 (apply 'call-process program infile destination display args)
3916 1)))
3917
3900;;;###tramp-autoload 3918;;;###tramp-autoload
3901(defun tramp-read-passwd (proc &optional prompt) 3919(defun tramp-read-passwd (proc &optional prompt)
3902 "Read a password from user (compat function). 3920 "Read a password from user (compat function).
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index f5e1abdd546..8e15ec6584e 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -574,21 +574,20 @@ NOARG must be t when this macro is used outside `gud-def'"
574 (concat (gdb-gud-context-command ,cmd1 ,noall) " " ,cmd2) 574 (concat (gdb-gud-context-command ,cmd1 ,noall) " " ,cmd2)
575 ,(when (not noarg) 'arg))) 575 ,(when (not noarg) 'arg)))
576 576
577(defun gdb--check-interpreter (proc string) 577(defun gdb--check-interpreter (filter proc string)
578 (unless (zerop (length string)) 578 (unless (zerop (length string))
579 (let ((filter (process-get proc 'gud-normal-filter))) 579 (remove-function (process-filter proc) #'gdb--check-interpreter)
580 (set-process-filter proc filter) 580 (unless (memq (aref string 0) '(?^ ?~ ?@ ?& ?* ?=))
581 (unless (memq (aref string 0) '(?^ ?~ ?@ ?& ?* ?=)) 581 ;; Apparently we're not running with -i=mi.
582 ;; Apparently we're not running with -i=mi. 582 (let ((msg "Error: you did not specify -i=mi on GDB's command line!"))
583 (let ((msg "Error: you did not specify -i=mi on GDB's command line!")) 583 (message msg)
584 (message msg) 584 (setq string (concat (propertize msg 'font-lock-face 'error)
585 (setq string (concat (propertize msg 'font-lock-face 'error) 585 "\n" string)))
586 "\n" string))) 586 ;; Use the old gud-gbd filter, not because it works, but because it
587 ;; Use the old gud-gbd filter, not because it works, but because it 587 ;; will properly display GDB's answers rather than hanging waiting for
588 ;; will properly display GDB's answers rather than hanging waiting for 588 ;; answers that aren't coming.
589 ;; answers that aren't coming. 589 (set (make-local-variable 'gud-marker-filter) #'gud-gdb-marker-filter))
590 (set (make-local-variable 'gud-marker-filter) #'gud-gdb-marker-filter)) 590 (funcall filter proc string)))
591 (funcall filter proc string))))
592 591
593(defvar gdb-control-level 0) 592(defvar gdb-control-level 0)
594 593
@@ -662,8 +661,7 @@ detailed description of this mode.
662 ;; Setup a temporary process filter to warn when GDB was not started 661 ;; Setup a temporary process filter to warn when GDB was not started
663 ;; with -i=mi. 662 ;; with -i=mi.
664 (let ((proc (get-buffer-process gud-comint-buffer))) 663 (let ((proc (get-buffer-process gud-comint-buffer)))
665 (process-put proc 'gud-normal-filter (process-filter proc)) 664 (add-function :around (process-filter proc) #'gdb--check-interpreter))
666 (set-process-filter proc #'gdb--check-interpreter))
667 665
668 (set (make-local-variable 'gud-minor-mode) 'gdbmi) 666 (set (make-local-variable 'gud-minor-mode) 'gdbmi)
669 (set (make-local-variable 'gdb-control-level) 0) 667 (set (make-local-variable 'gdb-control-level) 0)
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 4e31c5e827c..6076f88dea6 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -3387,9 +3387,6 @@ ACTIVATEP non-nil means activate mouse motion events."
3387 3387
3388;;; Tips for `gud' 3388;;; Tips for `gud'
3389 3389
3390(defvar gud-tooltip-original-filter nil
3391 "Process filter to restore after GUD output has been received.")
3392
3393(defvar gud-tooltip-dereference nil 3390(defvar gud-tooltip-dereference nil
3394 "Non-nil means print expressions with a `*' in front of them. 3391 "Non-nil means print expressions with a `*' in front of them.
3395For C this would dereference a pointer expression.") 3392For C this would dereference a pointer expression.")
@@ -3423,7 +3420,7 @@ With arg, dereference expr if ARG is positive, otherwise do not dereference."
3423; gdb-mi.el gets round this problem. 3420; gdb-mi.el gets round this problem.
3424(defun gud-tooltip-process-output (process output) 3421(defun gud-tooltip-process-output (process output)
3425 "Process debugger output and show it in a tooltip window." 3422 "Process debugger output and show it in a tooltip window."
3426 (set-process-filter process gud-tooltip-original-filter) 3423 (remove-function (process-filter process) #'gud-tooltip-process-output)
3427 (tooltip-show (tooltip-strip-prompt process output) 3424 (tooltip-show (tooltip-strip-prompt process output)
3428 (or gud-tooltip-echo-area tooltip-use-echo-area))) 3425 (or gud-tooltip-echo-area tooltip-use-echo-area)))
3429 3426
@@ -3490,8 +3487,8 @@ so they have been disabled."))
3490 (gdb-input 3487 (gdb-input
3491 (concat cmd "\n") 3488 (concat cmd "\n")
3492 `(lambda () (gdb-tooltip-print ,expr)))) 3489 `(lambda () (gdb-tooltip-print ,expr))))
3493 (setq gud-tooltip-original-filter (process-filter process)) 3490 (add-function :override (process-filter process)
3494 (set-process-filter process 'gud-tooltip-process-output) 3491 #'gud-tooltip-process-output)
3495 (gud-basic-call cmd)) 3492 (gud-basic-call cmd))
3496 expr)))))))) 3493 expr))))))))
3497 3494
diff --git a/lisp/progmodes/octave-inf.el b/lisp/progmodes/octave-inf.el
index de7ca32befe..4a227db7164 100644
--- a/lisp/progmodes/octave-inf.el
+++ b/lisp/progmodes/octave-inf.el
@@ -348,9 +348,9 @@ the rest to `inferior-octave-output-string'."
348The elements of LIST have to be strings and are sent one by one. All 348The elements of LIST have to be strings and are sent one by one. All
349output is passed to the filter `inferior-octave-output-digest'." 349output is passed to the filter `inferior-octave-output-digest'."
350 (let* ((proc inferior-octave-process) 350 (let* ((proc inferior-octave-process)
351 (filter (process-filter proc))
352 string) 351 string)
353 (set-process-filter proc 'inferior-octave-output-digest) 352 (add-function :override (process-filter proc)
353 #'inferior-octave-output-digest)
354 (setq inferior-octave-output-list nil) 354 (setq inferior-octave-output-list nil)
355 (unwind-protect 355 (unwind-protect
356 (while (setq string (car list)) 356 (while (setq string (car list))
@@ -360,7 +360,8 @@ output is passed to the filter `inferior-octave-output-digest'."
360 (while inferior-octave-receive-in-progress 360 (while inferior-octave-receive-in-progress
361 (accept-process-output proc)) 361 (accept-process-output proc))
362 (setq list (cdr list))) 362 (setq list (cdr list)))
363 (set-process-filter proc filter)))) 363 (remove-function (process-filter proc)
364 #'inferior-octave-output-digest))))
364 365
365(defun inferior-octave-directory-tracker (string) 366(defun inferior-octave-directory-tracker (string)
366 "Tracks `cd' commands issued to the inferior Octave process. 367 "Tracks `cd' commands issued to the inferior Octave process.
diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el
index 85e4172c8fe..8971e97a44e 100644
--- a/lisp/progmodes/prolog.el
+++ b/lisp/progmodes/prolog.el
@@ -1770,7 +1770,8 @@ This function must be called from the source code buffer."
1770 real-file)) 1770 real-file))
1771 (with-current-buffer buffer 1771 (with-current-buffer buffer
1772 (goto-char (point-max)) 1772 (goto-char (point-max))
1773 (set-process-filter process 'prolog-consult-compile-filter) 1773 (add-function :override (process-filter process)
1774 #'prolog-consult-compile-filter)
1774 (process-send-string "prolog" command-string) 1775 (process-send-string "prolog" command-string)
1775 ;; (prolog-build-prolog-command compilep file real-file first-line)) 1776 ;; (prolog-build-prolog-command compilep file real-file first-line))
1776 (while (and prolog-process-flag 1777 (while (and prolog-process-flag
@@ -1781,7 +1782,8 @@ This function must be called from the source code buffer."
1781 (insert (if compilep 1782 (insert (if compilep
1782 "\nCompilation finished.\n" 1783 "\nCompilation finished.\n"
1783 "\nConsulted.\n")) 1784 "\nConsulted.\n"))
1784 (set-process-filter process old-filter)))) 1785 (remove-function (process-filter process)
1786 #'prolog-consult-compile-filter))))
1785 1787
1786(defvar compilation-error-list) 1788(defvar compilation-error-list)
1787 1789
diff --git a/lisp/progmodes/xscheme.el b/lisp/progmodes/xscheme.el
index 2ad44b4b1c8..37c3cd37a6c 100644
--- a/lisp/progmodes/xscheme.el
+++ b/lisp/progmodes/xscheme.el
@@ -35,7 +35,6 @@
35;;;; Internal Variables 35;;;; Internal Variables
36 36
37(defvar xscheme-previous-mode) 37(defvar xscheme-previous-mode)
38(defvar xscheme-previous-process-state)
39(defvar xscheme-last-input-end) 38(defvar xscheme-last-input-end)
40 39
41(defvar xscheme-process-command-line nil 40(defvar xscheme-process-command-line nil
@@ -388,8 +387,6 @@ with no args, if that value is non-nil.
388 (if (not preserve) 387 (if (not preserve)
389 (let ((previous-mode major-mode)) 388 (let ((previous-mode major-mode))
390 (kill-all-local-variables) 389 (kill-all-local-variables)
391 (make-local-variable 'xscheme-process-name)
392 (make-local-variable 'xscheme-previous-process-state)
393 (make-local-variable 'xscheme-runlight-string) 390 (make-local-variable 'xscheme-runlight-string)
394 (make-local-variable 'xscheme-runlight) 391 (make-local-variable 'xscheme-runlight)
395 (set (make-local-variable 'xscheme-previous-mode) previous-mode) 392 (set (make-local-variable 'xscheme-previous-mode) previous-mode)
@@ -397,35 +394,29 @@ with no args, if that value is non-nil.
397 (set (make-local-variable 'xscheme-buffer-name) (buffer-name buffer)) 394 (set (make-local-variable 'xscheme-buffer-name) (buffer-name buffer))
398 (set (make-local-variable 'xscheme-last-input-end) (make-marker)) 395 (set (make-local-variable 'xscheme-last-input-end) (make-marker))
399 (let ((process (get-buffer-process buffer))) 396 (let ((process (get-buffer-process buffer)))
400 (if process 397 (when process
401 (progn 398 (setq-local xscheme-process-name (process-name process))
402 (setq xscheme-process-name (process-name process)) 399 ;; FIXME: Use add-function!
403 (setq xscheme-previous-process-state 400 (xscheme-process-filter-initialize t)
404 (cons (process-filter process) 401 (xscheme-mode-line-initialize xscheme-buffer-name)
405 (process-sentinel process))) 402 (add-function :override (process-sentinel process)
406 (xscheme-process-filter-initialize t) 403 #'xscheme-process-sentinel)
407 (xscheme-mode-line-initialize xscheme-buffer-name) 404 (add-function :override (process-filter process)
408 (set-process-sentinel process 'xscheme-process-sentinel) 405 #'xscheme-process-filter))))))
409 (set-process-filter process 'xscheme-process-filter))
410 (setq xscheme-previous-process-state (cons nil nil)))))))
411 (scheme-interaction-mode-initialize) 406 (scheme-interaction-mode-initialize)
412 (scheme-mode-variables) 407 (scheme-mode-variables)
413 (run-mode-hooks 'scheme-mode-hook 'scheme-interaction-mode-hook)) 408 (run-mode-hooks 'scheme-mode-hook 'scheme-interaction-mode-hook))
414 409
415(defun exit-scheme-interaction-mode () 410(defun exit-scheme-interaction-mode ()
416 "Take buffer out of scheme interaction mode" 411 "Take buffer out of scheme interaction mode."
417 (interactive) 412 (interactive)
418 (if (not (derived-mode-p 'scheme-interaction-mode)) 413 (if (not (derived-mode-p 'scheme-interaction-mode))
419 (error "Buffer not in scheme interaction mode")) 414 (error "Buffer not in scheme interaction mode"))
420 (let ((previous-state xscheme-previous-process-state)) 415 (funcall xscheme-previous-mode)
421 (funcall xscheme-previous-mode) 416 (let ((process (get-buffer-process (current-buffer))))
422 (let ((process (get-buffer-process (current-buffer)))) 417 (when process
423 (if process 418 (remove-function (process-sentinel process) #'xscheme-process-sentinel)
424 (progn 419 (remove-function (process-filter process) #'xscheme-process-filter))))
425 (if (eq (process-filter process) 'xscheme-process-filter)
426 (set-process-filter process (car previous-state)))
427 (if (eq (process-sentinel process) 'xscheme-process-sentinel)
428 (set-process-sentinel process (cdr previous-state))))))))
429 420
430(defvar scheme-interaction-mode-commands-alist nil) 421(defvar scheme-interaction-mode-commands-alist nil)
431(defvar scheme-interaction-mode-map nil) 422(defvar scheme-interaction-mode-map nil)
diff --git a/lisp/startup.el b/lisp/startup.el
index db84a5b11b2..dc21005ab94 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1940,7 +1940,7 @@ If you have no Meta key, you may instead type ESC followed by the character.)")
1940 (insert "\n" (emacs-version) "\n" emacs-copyright "\n") 1940 (insert "\n" (emacs-version) "\n" emacs-copyright "\n")
1941 1941
1942 (if (and (eq (key-binding "\C-h\C-c") 'describe-copying) 1942 (if (and (eq (key-binding "\C-h\C-c") 'describe-copying)
1943 (eq (key-binding "\C-h\C-d") 'describe-distribution) 1943 (eq (key-binding "\C-h\C-o") 'describe-distribution)
1944 (eq (key-binding "\C-h\C-w") 'describe-no-warranty)) 1944 (eq (key-binding "\C-h\C-w") 'describe-no-warranty))
1945 (progn 1945 (progn
1946 (insert 1946 (insert
diff --git a/lisp/textmodes/reftex-vars.el b/lisp/textmodes/reftex-vars.el
index c00cf36c79e..a220002286e 100644
--- a/lisp/textmodes/reftex-vars.el
+++ b/lisp/textmodes/reftex-vars.el
@@ -873,7 +873,14 @@ DOWNCASE t: Downcase words before using them."
873The default value matches usual \\label{...} definitions and 873The default value matches usual \\label{...} definitions and
874keyval style [..., label = {...}, ...] label definitions. It is 874keyval style [..., label = {...}, ...] label definitions. It is
875assumed that the regexp group 1 matches the label text, so you 875assumed that the regexp group 1 matches the label text, so you
876have to define it using \\(?1:...\\) when adding new regexps." 876have to define it using \\(?1:...\\) when adding new regexps.
877
878When changed from Lisp, make sure to call
879`reftex-compile-variables' afterwards to make the change
880effective."
881 :set (lambda (symbol value)
882 (set symbol value)
883 (reftex-compile-variables))
877 :group 'reftex-defining-label-environments 884 :group 'reftex-defining-label-environments
878 :type '(repeat (regexp :tag "Regular Expression"))) 885 :type '(repeat (regexp :tag "Regular Expression")))
879 886
diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el
index 21083fd188a..8b5dee5a037 100644
--- a/lisp/textmodes/reftex.el
+++ b/lisp/textmodes/reftex.el
@@ -811,6 +811,7 @@ This enforces rescanning the buffer on next use."
811 (reftex-kill-buffer (reftex-make-index-buffer-name tag))) 811 (reftex-kill-buffer (reftex-make-index-buffer-name tag)))
812 (cdr (assoc 'index-tags (symbol-value reftex-docstruct-symbol))))) 812 (cdr (assoc 'index-tags (symbol-value reftex-docstruct-symbol)))))
813 813
814;;;###autoload
814(defun reftex-compile-variables () 815(defun reftex-compile-variables ()
815 ;; Compile the information in reftex-label-alist & Co. 816 ;; Compile the information in reftex-label-alist & Co.
816 817
diff --git a/lisp/vc/vc-cvs.el b/lisp/vc/vc-cvs.el
index 407e691439b..334683898be 100644
--- a/lisp/vc/vc-cvs.el
+++ b/lisp/vc/vc-cvs.el
@@ -562,14 +562,13 @@ Will fail unless you have administrative privileges on the repo."
562 562
563(defconst vc-cvs-annotate-first-line-re "^[0-9]") 563(defconst vc-cvs-annotate-first-line-re "^[0-9]")
564 564
565(defun vc-cvs-annotate-process-filter (process string) 565(defun vc-cvs-annotate-process-filter (filter process string)
566 (setq string (concat (process-get process 'output) string)) 566 (setq string (concat (process-get process 'output) string))
567 (if (not (string-match vc-cvs-annotate-first-line-re string)) 567 (if (not (string-match vc-cvs-annotate-first-line-re string))
568 ;; Still waiting for the first real line. 568 ;; Still waiting for the first real line.
569 (process-put process 'output string) 569 (process-put process 'output string)
570 (let ((vc-filter (process-get process 'vc-filter))) 570 (remove-function (process-filter process) #'vc-cvs-annotate-process-filter)
571 (set-process-filter process vc-filter) 571 (funcall filter process (substring string (match-beginning 0)))))
572 (funcall vc-filter process (substring string (match-beginning 0))))))
573 572
574(defun vc-cvs-annotate-command (file buffer &optional revision) 573(defun vc-cvs-annotate-command (file buffer &optional revision)
575 "Execute \"cvs annotate\" on FILE, inserting the contents in BUFFER. 574 "Execute \"cvs annotate\" on FILE, inserting the contents in BUFFER.
@@ -583,9 +582,8 @@ Optional arg REVISION is a revision to annotate from."
583 (let ((proc (get-buffer-process buffer))) 582 (let ((proc (get-buffer-process buffer)))
584 (if proc 583 (if proc
585 ;; If running asynchronously, use a process filter. 584 ;; If running asynchronously, use a process filter.
586 (progn 585 (add-function :around (process-filter proc)
587 (process-put proc 'vc-filter (process-filter proc)) 586 #'vc-cvs-annotate-process-filter)
588 (set-process-filter proc 'vc-cvs-annotate-process-filter))
589 (with-current-buffer buffer 587 (with-current-buffer buffer
590 (goto-char (point-min)) 588 (goto-char (point-min))
591 (re-search-forward vc-cvs-annotate-first-line-re) 589 (re-search-forward vc-cvs-annotate-first-line-re)
diff --git a/lisp/vc/vc-dispatcher.el b/lisp/vc/vc-dispatcher.el
index ed61adec1fe..309cf50404c 100644
--- a/lisp/vc/vc-dispatcher.el
+++ b/lisp/vc/vc-dispatcher.el
@@ -1,4 +1,4 @@
1;;; vc-dispatcher.el -- generic command-dispatcher facility. 1;;; vc-dispatcher.el -- generic command-dispatcher facility. -*- lexical-binding: t -*-
2 2
3;; Copyright (C) 2008-2013 Free Software Foundation, Inc. 3;; Copyright (C) 2008-2013 Free Software Foundation, Inc.
4 4
@@ -182,32 +182,29 @@ Another is that undo information is not kept."
182 182
183(defvar vc-sentinel-movepoint) ;Dynamically scoped. 183(defvar vc-sentinel-movepoint) ;Dynamically scoped.
184 184
185(defun vc-process-sentinel (p s) 185(defun vc--process-sentinel (p code)
186 (let ((previous (process-get p 'vc-previous-sentinel)) 186 (let ((buf (process-buffer p)))
187 (buf (process-buffer p)))
188 ;; Impatient users sometime kill "slow" buffers; check liveness 187 ;; Impatient users sometime kill "slow" buffers; check liveness
189 ;; to avoid "error in process sentinel: Selecting deleted buffer". 188 ;; to avoid "error in process sentinel: Selecting deleted buffer".
190 (when (buffer-live-p buf) 189 (when (buffer-live-p buf)
191 (when previous (funcall previous p s))
192 (with-current-buffer buf 190 (with-current-buffer buf
193 (setq mode-line-process 191 (setq mode-line-process
194 (let ((status (process-status p))) 192 (let ((status (process-status p)))
195 ;; Leave mode-line uncluttered, normally. 193 ;; Leave mode-line uncluttered, normally.
196 (unless (eq 'exit status) 194 (unless (eq 'exit status)
197 (format " (%s)" status)))) 195 (format " (%s)" status))))
198 (let (vc-sentinel-movepoint) 196 (let (vc-sentinel-movepoint
197 (m (process-mark p)))
199 ;; Normally, we want async code such as sentinels to not move point. 198 ;; Normally, we want async code such as sentinels to not move point.
200 (save-excursion 199 (save-excursion
201 (goto-char (process-mark p)) 200 (goto-char m)
202 (let ((cmds (process-get p 'vc-sentinel-commands)))
203 (process-put p 'vc-sentinel-commands nil)
204 (dolist (cmd cmds)
205 ;; Each sentinel may move point and the next one should be run 201 ;; Each sentinel may move point and the next one should be run
206 ;; at that new point. We could get the same result by having 202 ;; at that new point. We could get the same result by having
207 ;; each sentinel read&set process-mark, but since `cmd' needs 203 ;; each sentinel read&set process-mark, but since `cmd' needs
208 ;; to work both for async and sync processes, this would be 204 ;; to work both for async and sync processes, this would be
209 ;; difficult to achieve. 205 ;; difficult to achieve.
210 (vc-exec-after cmd)))) 206 (vc-exec-after code)
207 (move-marker m (point)))
211 ;; But sometimes the sentinels really want to move point. 208 ;; But sometimes the sentinels really want to move point.
212 (when vc-sentinel-movepoint 209 (when vc-sentinel-movepoint
213 (let ((win (get-buffer-window (current-buffer) 0))) 210 (let ((win (get-buffer-window (current-buffer) 0)))
@@ -226,7 +223,9 @@ Another is that undo information is not kept."
226(defun vc-exec-after (code) 223(defun vc-exec-after (code)
227 "Eval CODE when the current buffer's process is done. 224 "Eval CODE when the current buffer's process is done.
228If the current buffer has no process, just evaluate CODE. 225If the current buffer has no process, just evaluate CODE.
229Else, add CODE to the process' sentinel." 226Else, add CODE to the process' sentinel.
227CODE can be either a function of no arguments, or an expression
228to evaluate."
230 (let ((proc (get-buffer-process (current-buffer)))) 229 (let ((proc (get-buffer-process (current-buffer))))
231 (cond 230 (cond
232 ;; If there's no background process, just execute the code. 231 ;; If there's no background process, just execute the code.
@@ -237,20 +236,14 @@ Else, add CODE to the process' sentinel."
237 ((or (null proc) (eq (process-status proc) 'exit)) 236 ((or (null proc) (eq (process-status proc) 'exit))
238 ;; Make sure we've read the process's output before going further. 237 ;; Make sure we've read the process's output before going further.
239 (when proc (accept-process-output proc)) 238 (when proc (accept-process-output proc))
240 (eval code)) 239 (if (functionp code) (funcall code) (eval code)))
241 ;; If a process is running, add CODE to the sentinel 240 ;; If a process is running, add CODE to the sentinel
242 ((eq (process-status proc) 'run) 241 ((eq (process-status proc) 'run)
243 (vc-set-mode-line-busy-indicator) 242 (vc-set-mode-line-busy-indicator)
244 (let ((previous (process-sentinel proc))) 243 (letrec ((fun (lambda (p _msg)
245 (unless (eq previous 'vc-process-sentinel) 244 (remove-function (process-sentinel p) fun)
246 (process-put proc 'vc-previous-sentinel previous)) 245 (vc--process-sentinel p code))))
247 (set-process-sentinel proc 'vc-process-sentinel)) 246 (add-function :after (process-sentinel proc) fun)))
248 (process-put proc 'vc-sentinel-commands
249 ;; We keep the code fragments in the order given
250 ;; so that vc-diff-finish's message shows up in
251 ;; the presence of non-nil vc-command-messages.
252 (append (process-get proc 'vc-sentinel-commands)
253 (list code))))
254 (t (error "Unexpected process state")))) 247 (t (error "Unexpected process state"))))
255 nil) 248 nil)
256 249
@@ -388,6 +381,8 @@ Display the buffer in some window, but don't select it."
388 (set-window-start window new-window-start)) 381 (set-window-start window new-window-start))
389 buffer)) 382 buffer))
390 383
384(defvar compilation-error-regexp-alist)
385
391(defun vc-compilation-mode (backend) 386(defun vc-compilation-mode (backend)
392 "Setup `compilation-mode' after with the appropriate `compilation-error-regexp-alist'." 387 "Setup `compilation-mode' after with the appropriate `compilation-error-regexp-alist'."
393 (let* ((error-regexp-alist 388 (let* ((error-regexp-alist
@@ -479,7 +474,7 @@ Used by `vc-restore-buffer-context' to later restore the context."
479 (vc-position-context (mark-marker)))) 474 (vc-position-context (mark-marker))))
480 ;; Make the right thing happen in transient-mark-mode. 475 ;; Make the right thing happen in transient-mark-mode.
481 (mark-active nil)) 476 (mark-active nil))
482 (list point-context mark-context nil))) 477 (list point-context mark-context)))
483 478
484(defun vc-restore-buffer-context (context) 479(defun vc-restore-buffer-context (context)
485 "Restore point/mark, and reparse any affected compilation buffers. 480 "Restore point/mark, and reparse any affected compilation buffers.
@@ -518,6 +513,8 @@ ARG and NO-CONFIRM are passed on to `revert-buffer'."
518(make-variable-buffer-local 'vc-mode-line-hook) 513(make-variable-buffer-local 'vc-mode-line-hook)
519(put 'vc-mode-line-hook 'permanent-local t) 514(put 'vc-mode-line-hook 'permanent-local t)
520 515
516(defvar view-old-buffer-read-only)
517
521(defun vc-resynch-window (file &optional keep noquery reset-vc-info) 518(defun vc-resynch-window (file &optional keep noquery reset-vc-info)
522 "If FILE is in the current buffer, either revert or unvisit it. 519 "If FILE is in the current buffer, either revert or unvisit it.
523The choice between revert (to see expanded keywords) and unvisit 520The choice between revert (to see expanded keywords) and unvisit
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index a0ef6f9d6d7..7f03affb6b7 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -2084,6 +2084,11 @@ Not all VC backends support short logs!")
2084(defvar log-view-vc-fileset) 2084(defvar log-view-vc-fileset)
2085 2085
2086(defun vc-print-log-setup-buttons (working-revision is-start-revision limit pl-return) 2086(defun vc-print-log-setup-buttons (working-revision is-start-revision limit pl-return)
2087 "Insert at the end of the current buffer buttons to show more log entries.
2088In the new log, leave point at WORKING-REVISION (if non-nil).
2089LIMIT is the number of entries currently shown.
2090Does nothing if IS-START-REVISION is non-nil, or if LIMIT is nil,
2091or if PL-RETURN is 'limit-unsupported."
2087 (when (and limit (not (eq 'limit-unsupported pl-return)) 2092 (when (and limit (not (eq 'limit-unsupported pl-return))
2088 (not is-start-revision)) 2093 (not is-start-revision))
2089 (goto-char (point-max)) 2094 (goto-char (point-max))
@@ -2104,6 +2109,17 @@ Not all VC backends support short logs!")
2104 2109
2105(defun vc-print-log-internal (backend files working-revision 2110(defun vc-print-log-internal (backend files working-revision
2106 &optional is-start-revision limit) 2111 &optional is-start-revision limit)
2112 "For specified BACKEND and FILES, show the VC log.
2113Leave point at WORKING-REVISION, if it is non-nil.
2114If IS-START-REVISION is non-nil, start the log from WORKING-REVISION.
2115Show up to LIMIT entries (non-nil means unlimited).
2116\(IS-START-REVISION non-nil might not work correctly if LIMIT is not 1.)"
2117 ;; The parenthetical remark is based on the commentary of vc.el for
2118 ;; "print log": "At this point START-REVISION is only required to work
2119 ;; in conjunction with LIMIT = 1." The only thing that passes
2120 ;; IS-START-REVISION non-nil is vc-annotate-show-log-revision-at-line,
2121 ;; which sets LIMIT = 1.
2122
2107 ;; Don't switch to the output buffer before running the command, 2123 ;; Don't switch to the output buffer before running the command,
2108 ;; so that any buffer-local settings in the vc-controlled 2124 ;; so that any buffer-local settings in the vc-controlled
2109 ;; buffer can be accessed by the command. 2125 ;; buffer can be accessed by the command.
@@ -2189,7 +2205,7 @@ WORKING-REVISION and LIMIT."
2189 (interactive 2205 (interactive
2190 (cond 2206 (cond
2191 (current-prefix-arg 2207 (current-prefix-arg
2192 (let ((rev (read-from-minibuffer "Log from revision (default: last revision): " nil 2208 (let ((rev (read-from-minibuffer "Leave point at revision (default: last revision): " nil
2193 nil nil nil)) 2209 nil nil nil))
2194 (lim (string-to-number 2210 (lim (string-to-number
2195 (read-from-minibuffer 2211 (read-from-minibuffer
diff --git a/make-dist b/make-dist
index 283defe8a7d..e1e62c895c7 100755
--- a/make-dist
+++ b/make-dist
@@ -439,6 +439,9 @@ echo "Making links to \`lwlib'"
439 439
440echo "Making links to \`admin' and its subdirectories" 440echo "Making links to \`admin' and its subdirectories"
441for f in `find admin -type f`; do 441for f in `find admin -type f`; do
442 case $f in
443 admin/unidata/Makefile) continue ;;
444 esac
442 ln $f $tempdir/$f 445 ln $f $tempdir/$f
443done 446done
444 447
diff --git a/src/ChangeLog b/src/ChangeLog
index 5164dc8ff8d..31764cad485 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
12013-04-22 Paul Eggert <eggert@cs.ucla.edu>
2
3 * Makefile.in (bootstrap-clean): Remove stamp-h1 too.
4 Without this fix, "make distclean" leaves stamp-h1 behind.
5
12013-04-20 Erik Charlebois <erikcharlebois@gmail.com> 62013-04-20 Erik Charlebois <erikcharlebois@gmail.com>
2 7
3 * w32fns.c (w32_fullscreen_rect): New function to compute the 8 * w32fns.c (w32_fullscreen_rect): New function to compute the
diff --git a/src/Makefile.in b/src/Makefile.in
index ee4e771dc9a..d12f8dbe130 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -550,7 +550,7 @@ clean: mostlyclean
550## It should remove all files generated during a compilation/bootstrap, 550## It should remove all files generated during a compilation/bootstrap,
551## but not things like config.status or TAGS. 551## but not things like config.status or TAGS.
552bootstrap-clean: clean 552bootstrap-clean: clean
553 rm -f epaths.h config.h config.stamp stamp-oldxmenu ../etc/DOC-* 553 rm -f epaths.h config.h config.stamp stamp-h1 stamp-oldxmenu ../etc/DOC-*
554 if test -f ./.gdbinit; then \ 554 if test -f ./.gdbinit; then \
555 mv ./.gdbinit ./.gdbinit.save; \ 555 mv ./.gdbinit ./.gdbinit.save; \
556 if test -f "$(srcdir)/.gdbinit"; then rm -f ./.gdbinit.save; \ 556 if test -f "$(srcdir)/.gdbinit"; then rm -f ./.gdbinit.save; \