diff options
38 files changed, 467 insertions, 259 deletions
| @@ -1,3 +1,12 @@ | |||
| 1 | 2013-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 | |||
| 1 | 2013-04-18 John Marino <gnugcc@marino.st> (tiny change) | 10 | 2013-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 |
| 56 | fi | 56 | fi |
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 @@ | |||
| 1 | 2013-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 | |||
| 6 | 2013-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 | |||
| 1 | 2013-03-16 Glenn Morris <rgm@gnu.org> | 13 | 2013-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 | |||
| 456 | How To Write Function Definitions | 457 | How 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 | |||
| 1617 | in the section on variables. (@xref{Variables}.) | 1618 | in the section on variables. (@xref{Variables}.) |
| 1618 | 1619 | ||
| 1619 | @cindex Special form | 1620 | @cindex Special form |
| 1620 | The second complication occurs because some functions are unusual and do | 1621 | The second complication occurs because some functions are unusual and |
| 1621 | not work in the usual manner. Those that don't are called @dfn{special | 1622 | do not work in the usual manner. Those that don't are called |
| 1622 | forms}. They are used for special jobs, like defining a function, and | 1623 | @dfn{special forms}. They are used for special jobs, like defining a |
| 1623 | there are not many of them. In the next few chapters, you will be | 1624 | function, and there are not many of them. In the next few chapters, |
| 1624 | introduced to several of the more important special forms. | 1625 | you will be introduced to several of the more important special forms. |
| 1626 | And there are also @dfn{macros}. Macro is a construct defined in | ||
| 1627 | Lisp, which differs from a function in that it translates a Lisp | ||
| 1628 | expression into another expression which is to be evaluated instead of | ||
| 1629 | the original expression. (@xref{Lisp macro}.) | ||
| 1630 | |||
| 1625 | 1631 | ||
| 1626 | The third and final complication is this: if the function that the | 1632 | The third and final complication is this: if the function that the |
| 1627 | Lisp interpreter is looking at is not a special form, and if it is part | 1633 | Lisp 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 | |||
| 3094 | function is written in Emacs Lisp or C. | 3100 | function 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 |
| 3102 | In Lisp, a symbol such as @code{mark-whole-buffer} has code attached to | 3107 | In Lisp, a symbol such as @code{mark-whole-buffer} has code attached to |
| 3103 | it that tells the computer what to do when the function is called. | 3108 | it that tells the computer what to do when the function is called. |
| 3104 | This code is called the @dfn{function definition} and is created by | 3109 | This code is called the @dfn{function definition} and is created by |
| 3105 | evaluating a Lisp expression that starts with the symbol @code{defun} | 3110 | evaluating 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 | ||
| 3108 | called a @dfn{special form}. | ||
| 3109 | 3112 | ||
| 3110 | In subsequent sections, we will look at function definitions from the | 3113 | In subsequent sections, we will look at function definitions from the |
| 3111 | Emacs source code, such as @code{mark-whole-buffer}. In this section, | 3114 | Emacs 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 | ||
| 4257 | The @code{save-excursion} function is the fourth and final special form | 4260 | The @code{save-excursion} function is the third and final special form |
| 4258 | that we will discuss in this chapter. | 4261 | that we will discuss in this chapter. |
| 4259 | 4262 | ||
| 4260 | In Emacs Lisp programs used for editing, the @code{save-excursion} | 4263 | In 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 | ||
| 4384 | In the last few chapters we have introduced a fair number of functions | 4387 | In the last few chapters we have introduced a macro and a fair number |
| 4385 | and special forms. Here they are described in brief, along with a few | 4388 | of functions and special forms. Here they are described in brief, |
| 4386 | similar functions that have not been mentioned yet. | 4389 | along 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 | |||
| 4393 | current buffer. This command is normally bound to @kbd{C-x C-e}. | 4396 | current buffer. This command is normally bound to @kbd{C-x C-e}. |
| 4394 | 4397 | ||
| 4395 | @item defun | 4398 | @item defun |
| 4396 | Define function. This special form has up to five parts: the name, | 4399 | Define function. This macro has up to five parts: the name, a |
| 4397 | a template for the arguments that will be passed to the function, | 4400 | template for the arguments that will be passed to the function, |
| 4398 | documentation, an optional interactive declaration, and the body of the | 4401 | documentation, an optional interactive declaration, and the body of |
| 4399 | definition. | 4402 | the definition. |
| 4400 | 4403 | ||
| 4401 | @need 1250 | 4404 | @need 1250 |
| 4402 | For example, in an early version of Emacs, the function definition was | 4405 | For 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 | ||
| 4805 | Like all function definitions, this definition has five parts following | 4808 | Like all function definitions, this definition has five parts following |
| 4806 | the special form @code{defun}: | 4809 | the 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 | |||
| 9293 | not override the existing value. Second, @code{defvar} has a | 9296 | not override the existing value. Second, @code{defvar} has a |
| 9294 | documentation string. | 9297 | documentation string. |
| 9295 | 9298 | ||
| 9296 | (Another special form, @code{defcustom}, is designed for variables | 9299 | (There is a related macro, @code{defcustom}, designed for variables |
| 9297 | that people customize. It has more features than @code{defvar}. | 9300 | that 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 | ||
| 11301 | A function definition provides the blueprints for a robot. When you | 11304 | A function definition provides the blueprints for a robot. When you |
| 11302 | install a function definition, that is, when you evaluate a | 11305 | install 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 |
| 11304 | build robots. It is as if you were in a factory, setting up an | 11307 | robots. It is as if you were in a factory, setting up an assembly |
| 11305 | assembly line. Robots with the same name are built according to the | 11308 | line. Robots with the same name are built according to the same |
| 11306 | same blueprints. So they have, as it were, the same `model number', | 11309 | blueprints. So they have, as it were, the same `model number', but a |
| 11307 | but a different `serial number'. | 11310 | different `serial number'. |
| 11308 | 11311 | ||
| 11309 | We often say that a recursive function `calls itself'. What we mean | 11312 | We often say that a recursive function `calls itself'. What we mean |
| 11310 | is that the instructions in a recursive function cause the Lisp | 11313 | is 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} | |||
| 16971 | file. Indeed, you can write any Lisp expression in your @file{.emacs} | 16974 | file. Indeed, you can write any Lisp expression in your @file{.emacs} |
| 16972 | file.) | 16975 | file.) |
| 16973 | 16976 | ||
| 16974 | The @code{customize} feature depends on the @code{defcustom} special | 16977 | The @code{customize} feature depends on the @code{defcustom} macro. |
| 16975 | form. Although you can use @code{defvar} or @code{setq} for variables | 16978 | Although you can use @code{defvar} or @code{setq} for variables that |
| 16976 | that users set, the @code{defcustom} special form is designed for the | 16979 | users set, the @code{defcustom} macro is designed for the job. |
| 16977 | job. | ||
| 16978 | 16980 | ||
| 16979 | You can use your knowledge of @code{defvar} for writing the | 16981 | You can use your knowledge of @code{defvar} for writing the |
| 16980 | first three arguments for @code{defcustom}. The first argument to | 16982 | first 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 @@ | |||
| 1 | 2013-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 | |||
| 1 | 2013-04-15 Christopher Schmidt <christopher@ch.ristopher.com> | 9 | 2013-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 | |||
| 661 | macros. If @var{max} is a number, it must be more than @var{min} but | 661 | macros. If @var{max} is a number, it must be more than @var{min} but |
| 662 | less than 8. | 662 | less than 8. |
| 663 | 663 | ||
| 664 | @cindex interactive specification in primitives | ||
| 664 | @item interactive | 665 | @item interactive |
| 665 | This is an interactive specification, a string such as might be used as | 666 | This is an interactive specification, a string such as might be used |
| 666 | the argument of @code{interactive} in a Lisp function. In the case of | 667 | as 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 | 668 | of @code{or}, it is 0 (a null pointer), indicating that @code{or} |
| 668 | called interactively. A value of @code{""} indicates a function that | 669 | cannot be called interactively. A value of @code{""} indicates a function that should receive no |
| 669 | should receive no arguments when called interactively. If the value | 670 | arguments when called interactively. For example: |
| 670 | begins with a @samp{(}, the string is evaluated as a Lisp form. | 671 | |
| 671 | For examples of the last two forms, see @code{widen} and | 672 | @smallexample |
| 672 | @code{narrow-to-region} in @file{editfns.c}. | 673 | @group |
| 674 | DEFUN ("baz", Fbaz, Sbaz, 0, 0, "", | ||
| 675 | doc: /* @dots{} */) | ||
| 676 | @end group | ||
| 677 | @end smallexample | ||
| 678 | |||
| 679 | If the value begins with a @samp{"(}, the string is evaluated as a | ||
| 680 | Lisp form. For example: | ||
| 681 | |||
| 682 | @smallexample | ||
| 683 | @group | ||
| 684 | DEFUN ("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 |
| 675 | This is the documentation string. It uses C comment syntax rather | 693 | This 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 |
| 591 | that character. However, there are several exceptions: certain | 591 | that character. However, there are several exceptions: certain |
| 592 | two-character sequences starting with @samp{\} that have special | 592 | sequences starting with @samp{\} that have special meanings. Here is |
| 593 | meanings. (The character after the @samp{\} in such a sequence is | 593 | a table of the special @samp{\} constructs. |
| 594 | always 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 @@ | |||
| 1 | 2013-04-20 Petr Hracek <phracek@redhat.com> (tiny change) | ||
| 2 | |||
| 3 | * emacs.1: Add some more command-line options. (Bug#14165) | ||
| 4 | |||
| 1 | 2012-12-02 Kevin Ryde <user42@zip.com.au> | 5 | 2012-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 | |||
| 79 | and | 79 | and |
| 80 | .IR column . | 80 | .IR column . |
| 81 | .TP | 81 | .TP |
| 82 | .BI \-\-chdir " directory" | ||
| 83 | Change to | ||
| 84 | .IR directory . | ||
| 85 | .TP | ||
| 82 | .BR \-q ", " \-\-no\-init\-file | 86 | .BR \-q ", " \-\-no\-init\-file |
| 83 | Do not load an init file. | 87 | Do not load an init file. |
| 84 | .TP | 88 | .TP |
| 89 | .BR \-nl ", " \-\-no\-shared\-memory | ||
| 90 | Do not use shared memory. | ||
| 91 | .TP | ||
| 85 | .B \-\-no\-site\-file | 92 | .B \-\-no\-site\-file |
| 86 | Do not load the site-wide startup file. | 93 | Do not load the site-wide startup file. |
| 87 | .TP | 94 | .TP |
| 95 | .BR \-nsl ", " \-\-no\-site\-lisp | ||
| 96 | Do not add site-lisp directories to load-path. | ||
| 97 | .TP | ||
| 88 | .B \-\-no\-desktop | 98 | .B \-\-no\-desktop |
| 89 | Do not load a saved desktop. | 99 | Do 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 |
| 326 | Disable blinking cursor. | 336 | Disable blinking cursor. |
| 327 | .TP | 337 | .TP |
| 338 | .BI \-\-parent-id " xid" | ||
| 339 | Set parent window. | ||
| 340 | .TP | ||
| 328 | .BR \-nw ", " \-\-no\-window\-system | 341 | .BR \-nw ", " \-\-no\-window\-system |
| 329 | Tell | 342 | Tell |
| 330 | .I Emacs | 343 | .I Emacs |
| @@ -75,6 +75,8 @@ Available only on X, this option allows to control over-scrolling | |||
| 75 | using the scroll bar (i.e. dragging the thumb down even when the end | 75 | using the scroll bar (i.e. dragging the thumb down even when the end |
| 76 | of the buffer is visible). | 76 | of 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 @@ | |||
| 1 | 2013-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 | |||
| 9 | 2013-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 | |||
| 17 | 2013-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 | |||
| 22 | 2013-04-22 Leo Liu <sdl.web@gmail.com> | ||
| 23 | |||
| 24 | * info-look.el: Prefer latex2e.info. (Bug#14240) | ||
| 25 | |||
| 26 | 2013-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 | |||
| 47 | 2013-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 | |||
| 53 | 2013-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 | |||
| 63 | 2013-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 | |||
| 69 | 2013-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 | |||
| 74 | 2013-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 | |||
| 79 | 2013-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 | |||
| 1 | 2013-04-19 Masatake YAMATO <yamato@redhat.com> | 105 | 2013-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 | ||
| 6 | 2013-04-19 Dima Kogan <dima@secretsauce.net> (tiny change) | 110 | 2013-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). | |||
| 213 | If the value is `input', then the expansion is seen on input. | 213 | If the value is `input', then the expansion is seen on input. |
| 214 | If the value is `history', then the expansion is only when inserting | 214 | If the value is `history', then the expansion is only when inserting |
| 215 | into the buffer's input ring. See also `comint-magic-space' and | 215 | into the buffer's input ring. See also `comint-magic-space' and |
| 216 | `comint-dynamic-complete'. | 216 | `completion-at-point'. |
| 217 | 217 | ||
| 218 | This variable is buffer-local." | 218 | This 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. |
| 373 | Works like `completion-at-point-functions'. | 373 | Works like `completion-at-point-functions'. |
| 374 | See also `comint-dynamic-complete'. | 374 | See also `completion-at-point'. |
| 375 | 375 | ||
| 376 | This is a good thing to set in mode hooks.") | 376 | This 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', | |||
| 616 | and addition is controlled by the variable `comint-input-ignoredups'. | 616 | and addition is controlled by the variable `comint-input-ignoredups'. |
| 617 | 617 | ||
| 618 | Commands with no default key bindings include `send-invisible', | 618 | Commands 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 | ||
| 622 | Input to, and output from, the subprocess can cause the window to scroll to | 622 | Input 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 | |||
| 3491 | string, and that there ought to be at least one copy of your prompt string | 3491 | string, and that there ought to be at least one copy of your prompt string |
| 3492 | in the process buffer already.") | 3492 | in 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. | ||
| 3496 | When redirection is completed, the process filter is restored to | ||
| 3497 | this 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. |
| 3501 | This works by binding `inhibit-read-only' around the insertion. | 3496 | This 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. |
| 268 | If FUNCTION was not added to PLACE, do nothing. | 271 | If 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. |
| 641 | That used to be what completion commands operate on." | 641 | In 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 | |||
| 438 | element is not omitted." | 438 | element 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. | ||
| 444 | This is needed because for some Emacs flavors Tramp has | ||
| 445 | defadvised `call-process' to behave like `process-file'. The | ||
| 446 | Lisp 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>) { | |||
| 767 | Escape sequence %s is replaced with name of Perl binary. | 767 | Escape sequence %s is replaced with name of Perl binary. |
| 768 | This string is passed to `format', so percent characters need to be doubled.") | 768 | This 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. | ||
| 773 | Escape 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. | ||
| 778 | Escape 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 \"(\" |
| 772 | while read file; do | 782 | while 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. |
| 3841 | Each item is a list that looks like this: | 3843 | Each 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. |
| 3878 | Each item is a list that looks like this: | 3878 | Each item is a list that looks like this: |
| 3879 | 3879 | ||
| @@ -4014,7 +4014,7 @@ INPUT can also be nil which means `/dev/null'. | |||
| 4014 | OUTPUT can be a string (which specifies a filename), or t (which | 4014 | OUTPUT can be a string (which specifies a filename), or t (which |
| 4015 | means standard output and thus the current buffer), or nil (which | 4015 | means standard output and thus the current buffer), or nil (which |
| 4016 | means discard it)." | 4016 | means 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." | |||
| 2769 | User is always nil." | 2769 | User 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. | ||
| 3903 | This is needed because for some Emacs flavors Tramp has | ||
| 3904 | defadvised `call-process' to behave like `process-file'. The | ||
| 3905 | Lisp error raised when PROGRAM is nil is trapped also, returning 1. | ||
| 3906 | Furthermore, 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. |
| 3395 | For C this would dereference a pointer expression.") | 3392 | For 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'." | |||
| 348 | The elements of LIST have to be strings and are sent one by one. All | 348 | The elements of LIST have to be strings and are sent one by one. All |
| 349 | output is passed to the filter `inferior-octave-output-digest'." | 349 | output 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." | |||
| 873 | The default value matches usual \\label{...} definitions and | 873 | The default value matches usual \\label{...} definitions and |
| 874 | keyval style [..., label = {...}, ...] label definitions. It is | 874 | keyval style [..., label = {...}, ...] label definitions. It is |
| 875 | assumed that the regexp group 1 matches the label text, so you | 875 | assumed that the regexp group 1 matches the label text, so you |
| 876 | have to define it using \\(?1:...\\) when adding new regexps." | 876 | have to define it using \\(?1:...\\) when adding new regexps. |
| 877 | |||
| 878 | When changed from Lisp, make sure to call | ||
| 879 | `reftex-compile-variables' afterwards to make the change | ||
| 880 | effective." | ||
| 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. |
| 228 | If the current buffer has no process, just evaluate CODE. | 225 | If the current buffer has no process, just evaluate CODE. |
| 229 | Else, add CODE to the process' sentinel." | 226 | Else, add CODE to the process' sentinel. |
| 227 | CODE can be either a function of no arguments, or an expression | ||
| 228 | to 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. |
| 523 | The choice between revert (to see expanded keywords) and unvisit | 520 | The 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. | ||
| 2088 | In the new log, leave point at WORKING-REVISION (if non-nil). | ||
| 2089 | LIMIT is the number of entries currently shown. | ||
| 2090 | Does nothing if IS-START-REVISION is non-nil, or if LIMIT is nil, | ||
| 2091 | or 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. | ||
| 2113 | Leave point at WORKING-REVISION, if it is non-nil. | ||
| 2114 | If IS-START-REVISION is non-nil, start the log from WORKING-REVISION. | ||
| 2115 | Show 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 |
| @@ -439,6 +439,9 @@ echo "Making links to \`lwlib'" | |||
| 439 | 439 | ||
| 440 | echo "Making links to \`admin' and its subdirectories" | 440 | echo "Making links to \`admin' and its subdirectories" |
| 441 | for f in `find admin -type f`; do | 441 | for 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 |
| 443 | done | 446 | done |
| 444 | 447 | ||
diff --git a/src/ChangeLog b/src/ChangeLog index 5164dc8ff8d..31764cad485 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2013-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 | |||
| 1 | 2013-04-20 Erik Charlebois <erikcharlebois@gmail.com> | 6 | 2013-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. |
| 552 | bootstrap-clean: clean | 552 | bootstrap-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; \ |