diff options
| author | Glenn Morris | 2018-10-27 09:15:32 -0700 |
|---|---|---|
| committer | Glenn Morris | 2018-10-27 09:15:32 -0700 |
| commit | 2df74ce79b910c977167e84d4cb37ede1053663f (patch) | |
| tree | c349e7c462c20b423030b734c461b90eee17f23f | |
| parent | 3e81e9a0e7742197354515f3d3ea55fdb201eb29 (diff) | |
| parent | df64da8eb845c9f07ee93bfbf28af41a01a2e83f (diff) | |
| download | emacs-2df74ce79b910c977167e84d4cb37ede1053663f.tar.gz emacs-2df74ce79b910c977167e84d4cb37ede1053663f.zip | |
Merge from origin/emacs-26
df64da8 (origin/emacs-26) * lisp/simple.el (region-extract-function):...
520c486 * lisp/simple.el (region-bounds): Doc fix. (Bug#33168)
9193db0 Improve documentation of 'process-connection-type'
106b9e1 Unify prompt for gnupg passphrase between GNU/Linux and MS-Wi...
2a41616 Doc fix of 'gnus-fetch-old-headers'
29a7644 Deactivate incorrect hyperlinking in gnus-build-sparse-thread...
53ae90f Minor copyedits in cmdargs.texi
fc2e65a Improve documentation of X resource loading
13132b3 * lisp/net/tramp-sh.el (tramp-inline-compress-commands):
8361292 ; Fix sorting in admin/MAINTAINERS
92de44f Don't error when indenting malformed Lisp (Bug#30891)
c3adbc8 Improve 'isearch-delete-char' documentation (Bug#32990)
6ca71ce ; * lisp/help.el (with-help-window): Remove extra space in doc.
f5f9583 Improve XPM load failure message (bug#33126)
f3d01d4 Avoid infloop in CPerl mode fontification
71a2d50 Fix minibuffer-help-form for lexical binding
7e8eee6 Fix some NS drawing issues (bug#32932)
d72975a * lisp/gnus/mm-util.el (mm-decompress-buffer): Fix split-stri...
c97a5f1 * doc/misc/calc.texi (Summary): The +/- key is 'p', not 'P'.
# Conflicts:
# lisp/gnus/mm-util.el
| -rw-r--r-- | admin/MAINTAINERS | 2 | ||||
| -rw-r--r-- | doc/emacs/cmdargs.texi | 18 | ||||
| -rw-r--r-- | doc/emacs/frames.texi | 4 | ||||
| -rw-r--r-- | doc/emacs/search.texi | 33 | ||||
| -rw-r--r-- | doc/emacs/xresources.texi | 5 | ||||
| -rw-r--r-- | doc/lispref/processes.texi | 19 | ||||
| -rw-r--r-- | doc/misc/calc.texi | 2 | ||||
| -rw-r--r-- | etc/PROBLEMS | 7 | ||||
| -rw-r--r-- | lisp/cus-edit.el | 2 | ||||
| -rw-r--r-- | lisp/emacs-lisp/lisp-mode.el | 4 | ||||
| -rw-r--r-- | lisp/epg.el | 2 | ||||
| -rw-r--r-- | lisp/gnus/gnus-sum.el | 15 | ||||
| -rw-r--r-- | lisp/gnus/mm-util.el | 2 | ||||
| -rw-r--r-- | lisp/help.el | 2 | ||||
| -rw-r--r-- | lisp/isearch.el | 13 | ||||
| -rw-r--r-- | lisp/net/tramp-sh.el | 3 | ||||
| -rw-r--r-- | lisp/progmodes/cperl-mode.el | 2 | ||||
| -rw-r--r-- | lisp/simple.el | 21 | ||||
| -rw-r--r-- | src/image.c | 2 | ||||
| -rw-r--r-- | src/nsterm.m | 80 |
20 files changed, 143 insertions, 95 deletions
diff --git a/admin/MAINTAINERS b/admin/MAINTAINERS index 6db1d8801cb..05faa586c20 100644 --- a/admin/MAINTAINERS +++ b/admin/MAINTAINERS | |||
| @@ -210,8 +210,8 @@ Paul Eggert | |||
| 210 | Michael Albinus | 210 | Michael Albinus |
| 211 | src/inotify.c | 211 | src/inotify.c |
| 212 | lisp/autorevert.el | 212 | lisp/autorevert.el |
| 213 | lisp/files.el (file-name-non-special) | ||
| 214 | lisp/eshell/em-tramp.el | 213 | lisp/eshell/em-tramp.el |
| 214 | lisp/files.el (file-name-non-special) | ||
| 215 | lisp/net/ange-ftp.el | 215 | lisp/net/ange-ftp.el |
| 216 | lisp/notifications.el | 216 | lisp/notifications.el |
| 217 | lisp/shadowfile.el | 217 | lisp/shadowfile.el |
diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi index 733919a374a..2e2767ccada 100644 --- a/doc/emacs/cmdargs.texi +++ b/doc/emacs/cmdargs.texi | |||
| @@ -305,6 +305,8 @@ not disable loading @file{site-start.el}. | |||
| 305 | 305 | ||
| 306 | @item --no-site-file | 306 | @item --no-site-file |
| 307 | @opindex --no-site-file | 307 | @opindex --no-site-file |
| 308 | @itemx -nsl | ||
| 309 | @opindex -nsl | ||
| 308 | @cindex @file{site-start.el} file, not loading | 310 | @cindex @file{site-start.el} file, not loading |
| 309 | Do not load @file{site-start.el} (@pxref{Init File}). The @samp{-Q} | 311 | Do not load @file{site-start.el} (@pxref{Init File}). The @samp{-Q} |
| 310 | option does this too, but other options like @samp{-q} do not. | 312 | option does this too, but other options like @samp{-q} do not. |
| @@ -323,14 +325,20 @@ Do not display a startup screen. You can also achieve this effect by | |||
| 323 | setting the variable @code{inhibit-startup-screen} to non-@code{nil} | 325 | setting the variable @code{inhibit-startup-screen} to non-@code{nil} |
| 324 | in your initialization file (@pxref{Entering Emacs}). | 326 | in your initialization file (@pxref{Entering Emacs}). |
| 325 | 327 | ||
| 328 | @item --no-x-resources | ||
| 329 | @opindex --no-x-resources | ||
| 330 | @cindex X resources, not loading | ||
| 331 | Do not load X resources. You can also achieve this effect by setting | ||
| 332 | the variable @code{inhibit-x-resources} to @code{t} in your | ||
| 333 | initialization file (@pxref{Resources}). | ||
| 334 | |||
| 326 | @item -Q | 335 | @item -Q |
| 327 | @opindex -Q | 336 | @opindex -Q |
| 328 | @itemx --quick | 337 | @itemx --quick |
| 329 | @opindex --quick | 338 | @opindex --quick |
| 330 | Start Emacs with minimum customizations. This is similar to using @samp{-q}, | 339 | Start Emacs with minimum customizations. This is similar to using |
| 331 | @samp{--no-site-file}, @samp{--no-site-lisp}, and @samp{--no-splash} | 340 | @samp{-q}, @samp{--no-site-file}, @samp{--no-site-lisp}, |
| 332 | together. This also stops Emacs from processing X resources by | 341 | @samp{--no-x-resources}, and @samp{--no-splash} together.. |
| 333 | setting @code{inhibit-x-resources} to @code{t} (@pxref{Resources}). | ||
| 334 | 342 | ||
| 335 | @item -daemon | 343 | @item -daemon |
| 336 | @opindex -daemon | 344 | @opindex -daemon |
| @@ -373,6 +381,8 @@ Enable expensive correctness checks when dealing with dynamically | |||
| 373 | loadable modules. This is intended for module authors that wish to | 381 | loadable modules. This is intended for module authors that wish to |
| 374 | verify that their module conforms to the module API requirements. The | 382 | verify that their module conforms to the module API requirements. The |
| 375 | option makes Emacs abort if a module-related assertion triggers. | 383 | option makes Emacs abort if a module-related assertion triggers. |
| 384 | @xref{Writing Dynamic Modules,, Writing Dynamically-Loaded Modules, | ||
| 385 | elisp, The GNU Emacs Lisp Reference Manual}. | ||
| 376 | @end table | 386 | @end table |
| 377 | 387 | ||
| 378 | @node Command Example | 388 | @node Command Example |
diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi index 9f4c7821e98..6bbaae24b17 100644 --- a/doc/emacs/frames.texi +++ b/doc/emacs/frames.texi | |||
| @@ -934,6 +934,10 @@ the initial frame, by customizing the variable | |||
| 934 | specify colors and fonts don't affect menus and the menu bar, since | 934 | specify colors and fonts don't affect menus and the menu bar, since |
| 935 | those are drawn by the toolkit and not directly by Emacs. | 935 | those are drawn by the toolkit and not directly by Emacs. |
| 936 | 936 | ||
| 937 | Frame appearance and behavior can also be customized through X | ||
| 938 | resources (@pxref{X Resources}); these override the parameters of the | ||
| 939 | initial frame specified in your init file. | ||
| 940 | |||
| 937 | Note that if you are using the desktop library to save and restore | 941 | Note that if you are using the desktop library to save and restore |
| 938 | your sessions, the frames to be restored are recorded in the desktop | 942 | your sessions, the frames to be restored are recorded in the desktop |
| 939 | file, together with their parameters. When these frames are restored, | 943 | file, together with their parameters. When these frames are restored, |
diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index 263c4c5dcca..c9f3ccc5481 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi | |||
| @@ -99,10 +99,18 @@ text that matches the search string---using the @code{isearch} face | |||
| 99 | that customize this highlighting. The current search string is also | 99 | that customize this highlighting. The current search string is also |
| 100 | displayed in the echo area. | 100 | displayed in the echo area. |
| 101 | 101 | ||
| 102 | If you make a mistake typing the search string, type @key{DEL}. | 102 | @cindex isearch input item |
| 103 | Each @key{DEL} cancels the last character of the search string. | 103 | @cindex input item, isearch |
| 104 | @xref{Error in Isearch}, for more about dealing with unsuccessful | 104 | @findex isearch-delete-char |
| 105 | search. | 105 | @kindex DEL @r{(Incremental search)} |
| 106 | If you make a mistake typing the search string, type @key{DEL} | ||
| 107 | (@code{isearch-delete-char}). Each @key{DEL} cancels the last input | ||
| 108 | item entered during the search. Emacs records a new @dfn{input item} | ||
| 109 | whenever you type a command that changes the search string, the | ||
| 110 | position of point, the success or failure of the search, the direction | ||
| 111 | of the search, the position of the other end of the current search | ||
| 112 | result, or the ``wrappedness'' of the search. @xref{Error in | ||
| 113 | Isearch}, for more about dealing with unsuccessful search. | ||
| 106 | 114 | ||
| 107 | @cindex exit incremental search | 115 | @cindex exit incremental search |
| 108 | @cindex incremental search, exiting | 116 | @cindex incremental search, exiting |
| @@ -290,14 +298,15 @@ string that failed to match is highlighted using the face | |||
| 290 | @code{isearch-fail}. | 298 | @code{isearch-fail}. |
| 291 | 299 | ||
| 292 | At this point, there are several things you can do. If your string | 300 | At this point, there are several things you can do. If your string |
| 293 | was mistyped, you can use @key{DEL} to erase some of it and correct | 301 | was mistyped, use @key{DEL} to cancel a previous input item |
| 294 | it, or you can type @kbd{M-e} and edit it. If you like the place you | 302 | (@pxref{Basic Isearch}), @kbd{C-M-w} to erase one character at a time, |
| 295 | have found, you can type @key{RET} to remain there. Or you can type | 303 | or @kbd{M-e} to edit it. If you like the place you have found, you |
| 296 | @kbd{C-g}, which removes from the search string the characters that | 304 | can type @key{RET} to remain there. Or you can type @kbd{C-g}, which |
| 297 | could not be found (the @samp{T} in @samp{FOOT}), leaving those that | 305 | removes from the search string the characters that could not be found |
| 298 | were found (the @samp{FOO} in @samp{FOOT}). A second @kbd{C-g} at | 306 | (the @samp{T} in @samp{FOOT}), leaving those that were found (the |
| 299 | that point cancels the search entirely, returning point to where it | 307 | @samp{FOO} in @samp{FOOT}). A second @kbd{C-g} at that point cancels |
| 300 | was when the search started. | 308 | the search entirely, returning point to where it was when the search |
| 309 | started. | ||
| 301 | 310 | ||
| 302 | @cindex quitting (in search) | 311 | @cindex quitting (in search) |
| 303 | @kindex C-g @r{(Incremental search)} | 312 | @kindex C-g @r{(Incremental search)} |
diff --git a/doc/emacs/xresources.texi b/doc/emacs/xresources.texi index db2c6ffafd2..903090f51a9 100644 --- a/doc/emacs/xresources.texi +++ b/doc/emacs/xresources.texi | |||
| @@ -46,6 +46,11 @@ this file do not take effect immediately, because the X server stores | |||
| 46 | its own list of resources; to update it, use the command | 46 | its own list of resources; to update it, use the command |
| 47 | @command{xrdb}---for instance, @samp{xrdb ~/.Xdefaults}. | 47 | @command{xrdb}---for instance, @samp{xrdb ~/.Xdefaults}. |
| 48 | 48 | ||
| 49 | Settings specified via X resources in general override the | ||
| 50 | equivalent settings in Emacs init files (@pxref{Init File}), in | ||
| 51 | particular for parameters of the initial frame (@pxref{Frame | ||
| 52 | Parameters}). | ||
| 53 | |||
| 49 | @cindex registry, setting resources (MS-Windows) | 54 | @cindex registry, setting resources (MS-Windows) |
| 50 | (MS-Windows systems do not support X resource files; on such systems, | 55 | (MS-Windows systems do not support X resource files; on such systems, |
| 51 | Emacs looks for X resources in the Windows Registry, first under the | 56 | Emacs looks for X resources in the Windows Registry, first under the |
diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi index e1113e37f10..2afc6a33828 100644 --- a/doc/lispref/processes.texi +++ b/doc/lispref/processes.texi | |||
| @@ -598,8 +598,8 @@ communication is only partially asynchronous: Emacs sends data to the | |||
| 598 | process only when certain functions are called, and Emacs accepts data | 598 | process only when certain functions are called, and Emacs accepts data |
| 599 | from the process only while waiting for input or for a time delay. | 599 | from the process only while waiting for input or for a time delay. |
| 600 | 600 | ||
| 601 | @cindex pty | 601 | @cindex pty, when to use for subprocess communications |
| 602 | @cindex pipe | 602 | @cindex pipe, when to use for subprocess communications |
| 603 | An asynchronous process is controlled either via a @dfn{pty} | 603 | An asynchronous process is controlled either via a @dfn{pty} |
| 604 | (pseudo-terminal) or a @dfn{pipe}. The choice of pty or pipe is made | 604 | (pseudo-terminal) or a @dfn{pipe}. The choice of pty or pipe is made |
| 605 | when creating the process, by default based on the value of the | 605 | when creating the process, by default based on the value of the |
| @@ -609,11 +609,13 @@ Shell mode, because they allow for job control (@kbd{C-c}, @kbd{C-z}, | |||
| 609 | etc.)@: between the process and its children, and because interactive | 609 | etc.)@: between the process and its children, and because interactive |
| 610 | programs treat ptys as terminal devices, whereas pipes don't support | 610 | programs treat ptys as terminal devices, whereas pipes don't support |
| 611 | these features. However, for subprocesses used by Lisp programs for | 611 | these features. However, for subprocesses used by Lisp programs for |
| 612 | internal purposes, it is often better to use a pipe, because pipes are | 612 | internal purposes (i.e., with no user interaction), where significant |
| 613 | amounts of data need to be exchanged between the subprocess and the | ||
| 614 | Lisp program, it is often better to use a pipe, because pipes are | ||
| 613 | more efficient, and because they are immune to stray character | 615 | more efficient, and because they are immune to stray character |
| 614 | injections that ptys introduce for large (around 500 byte) messages. | 616 | injections that ptys introduce for large (around 500 byte) messages. |
| 615 | Also, the total number of ptys is limited on many systems and it is | 617 | Also, the total number of ptys is limited on many systems, and it is |
| 616 | good not to waste them. | 618 | good not to waste them unnecessarily. |
| 617 | 619 | ||
| 618 | @defun make-process &rest args | 620 | @defun make-process &rest args |
| 619 | This function is the basic low-level primitive for starting | 621 | This function is the basic low-level primitive for starting |
| @@ -666,7 +668,9 @@ pipe, or @code{nil} to use the default derived from the value of the | |||
| 666 | @code{process-connection-type} variable. This parameter and the value | 668 | @code{process-connection-type} variable. This parameter and the value |
| 667 | of @code{process-connection-type} are ignored if a non-@code{nil} | 669 | of @code{process-connection-type} are ignored if a non-@code{nil} |
| 668 | value is specified for the @code{:stderr} parameter; in that case, the | 670 | value is specified for the @code{:stderr} parameter; in that case, the |
| 669 | type will always be @code{pipe}. | 671 | type will always be @code{pipe}. On systems where ptys are not |
| 672 | available (MS-Windows), this parameter is likewise ignored, and pipes | ||
| 673 | are used unconditionally. | ||
| 670 | 674 | ||
| 671 | @item :noquery @var{query-flag} | 675 | @item :noquery @var{query-flag} |
| 672 | Initialize the process query flag to @var{query-flag}. | 676 | Initialize the process query flag to @var{query-flag}. |
| @@ -873,7 +877,8 @@ around the call to these functions. | |||
| 873 | Note that the value of this variable is ignored when | 877 | Note that the value of this variable is ignored when |
| 874 | @code{make-process} is called with a non-@code{nil} value of the | 878 | @code{make-process} is called with a non-@code{nil} value of the |
| 875 | @code{:stderr} parameter; in that case, Emacs will communicate with | 879 | @code{:stderr} parameter; in that case, Emacs will communicate with |
| 876 | the process using pipes. | 880 | the process using pipes. It is also ignored if ptys are unavailable |
| 881 | (MS-Windows). | ||
| 877 | 882 | ||
| 878 | @smallexample | 883 | @smallexample |
| 879 | @group | 884 | @group |
diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi index 83807c6fd28..f7b23d35471 100644 --- a/doc/misc/calc.texi +++ b/doc/misc/calc.texi | |||
| @@ -35832,7 +35832,7 @@ keystrokes are not listed in this summary. | |||
| 35832 | @r{ @: _ @:number @: @:-@:number} | 35832 | @r{ @: _ @:number @: @:-@:number} |
| 35833 | @r{ @: e @:number @: @:@:1e number} | 35833 | @r{ @: e @:number @: @:@:1e number} |
| 35834 | @r{ @: # @:number @: @:@:current-radix@tfn{#}number} | 35834 | @r{ @: # @:number @: @:@:current-radix@tfn{#}number} |
| 35835 | @r{ @: P @:(in number) @: @:+/-@:} | 35835 | @r{ @: p @:(in number) @: @:+/-@:} |
| 35836 | @r{ @: M @:(in number) @: @:mod@:} | 35836 | @r{ @: M @:(in number) @: @:mod@:} |
| 35837 | @r{ @: @@ ' " @: (in number)@: @:@:HMS form} | 35837 | @r{ @: @@ ' " @: (in number)@: @:@:HMS form} |
| 35838 | @r{ @: h m s @: (in number)@: @:@:HMS form} | 35838 | @r{ @: h m s @: (in number)@: @:@:HMS form} |
diff --git a/etc/PROBLEMS b/etc/PROBLEMS index 6805e8733d5..0cbcca4a8a5 100644 --- a/etc/PROBLEMS +++ b/etc/PROBLEMS | |||
| @@ -2599,6 +2599,13 @@ please call support for your X-server and see if you can get a fix. | |||
| 2599 | If you do, please send it to bug-gnu-emacs@gnu.org so we can list it here. | 2599 | If you do, please send it to bug-gnu-emacs@gnu.org so we can list it here. |
| 2600 | 2600 | ||
| 2601 | 2601 | ||
| 2602 | * Runtime problems specific to macOS | ||
| 2603 | |||
| 2604 | ** macOS doesn't come with libxpm, so only XPM3 is supported. | ||
| 2605 | |||
| 2606 | Libxpm is available for macOS as part of the XQuartz project. | ||
| 2607 | |||
| 2608 | |||
| 2602 | * Build-time problems | 2609 | * Build-time problems |
| 2603 | 2610 | ||
| 2604 | ** Configuration | 2611 | ** Configuration |
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el index 723cd5010df..b69a63b80f5 100644 --- a/lisp/cus-edit.el +++ b/lisp/cus-edit.el | |||
| @@ -917,7 +917,7 @@ the current value of the variable, otherwise `symbol-value' is used. | |||
| 917 | If optional COMMENT argument is non-nil, also prompt for a comment and return | 917 | If optional COMMENT argument is non-nil, also prompt for a comment and return |
| 918 | it as the third element in the list." | 918 | it as the third element in the list." |
| 919 | (let* ((var (read-variable prompt-var)) | 919 | (let* ((var (read-variable prompt-var)) |
| 920 | (minibuffer-help-form '(describe-variable var)) | 920 | (minibuffer-help-form `(describe-variable ',var)) |
| 921 | (val | 921 | (val |
| 922 | (let ((prop (get var 'variable-interactive)) | 922 | (let ((prop (get var 'variable-interactive)) |
| 923 | (type (get var 'custom-type)) | 923 | (type (get var 'custom-type)) |
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index afb7cbd1dd7..46199196024 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el | |||
| @@ -839,6 +839,10 @@ by more than one line to cross a string literal." | |||
| 839 | (prog1 | 839 | (prog1 |
| 840 | (let (indent) | 840 | (let (indent) |
| 841 | (cond ((= (forward-line 1) 1) nil) | 841 | (cond ((= (forward-line 1) 1) nil) |
| 842 | ;; Negative depth, probably some kind of syntax error. | ||
| 843 | ((null indent-stack) | ||
| 844 | ;; Reset state. | ||
| 845 | (setq ppss (parse-partial-sexp (point) (point)))) | ||
| 842 | ((car indent-stack)) | 846 | ((car indent-stack)) |
| 843 | ((integerp (setq indent (calculate-lisp-indent ppss))) | 847 | ((integerp (setq indent (calculate-lisp-indent ppss))) |
| 844 | (setf (car indent-stack) indent)) | 848 | (setf (car indent-stack) indent)) |
diff --git a/lisp/epg.el b/lisp/epg.el index 9d9bc9051da..c8f24eb39f7 100644 --- a/lisp/epg.el +++ b/lisp/epg.el | |||
| @@ -655,7 +655,7 @@ callback data (if any)." | |||
| 655 | :command (cons (epg-context-program context) | 655 | :command (cons (epg-context-program context) |
| 656 | args) | 656 | args) |
| 657 | :connection-type 'pipe | 657 | :connection-type 'pipe |
| 658 | :coding '(binary . binary) | 658 | :coding 'raw-text |
| 659 | :filter #'epg--process-filter | 659 | :filter #'epg--process-filter |
| 660 | :stderr error-process | 660 | :stderr error-process |
| 661 | :noquery t))) | 661 | :noquery t))) |
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index f56b822ac57..f9fae3792b1 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el | |||
| @@ -83,12 +83,12 @@ If an unread article in the group refers to an older, already | |||
| 83 | read (or just marked as read) article, the old article will not | 83 | read (or just marked as read) article, the old article will not |
| 84 | normally be displayed in the Summary buffer. If this variable is | 84 | normally be displayed in the Summary buffer. If this variable is |
| 85 | t, Gnus will attempt to grab the headers to the old articles, and | 85 | t, Gnus will attempt to grab the headers to the old articles, and |
| 86 | thereby build complete threads. If it has the value `some', all | 86 | thereby build complete threads. If the value is the symbol `some', |
| 87 | old headers will be fetched but only enough headers to connect | 87 | all old headers will be fetched but only enough headers to connect |
| 88 | otherwise loose threads will be displayed. This variable can | 88 | otherwise loose threads will be displayed. This variable can |
| 89 | also be a number. In that case, no more than that number of old | 89 | also be a number. In that case, no more than that number of old |
| 90 | headers will be fetched. If it has the value `invisible', all | 90 | headers will be fetched. If the value is the symbol `invisible', |
| 91 | old headers will be fetched, but none will be displayed. | 91 | all old headers will be fetched, but none will be displayed. |
| 92 | 92 | ||
| 93 | The server has to support NOV for any of this to work. | 93 | The server has to support NOV for any of this to work. |
| 94 | 94 | ||
| @@ -203,9 +203,10 @@ Useful functions to put in this list include: | |||
| 203 | 203 | ||
| 204 | (defcustom gnus-build-sparse-threads nil | 204 | (defcustom gnus-build-sparse-threads nil |
| 205 | "If non-nil, fill in the gaps in threads. | 205 | "If non-nil, fill in the gaps in threads. |
| 206 | If `some', only fill in the gaps that are needed to tie loose threads | 206 | If set to the symbol `some', only fill in the gaps that are |
| 207 | together. If `more', fill in all leaf nodes that Gnus can find. If | 207 | needed to tie loose threads together. If the symbol `more', fill |
| 208 | non-nil and non-`some', fill in all gaps that Gnus manages to guess." | 208 | in all leaf nodes that Gnus can find. If t (or any other value), |
| 209 | fill in all gaps that Gnus manages to guess." | ||
| 209 | :group 'gnus-thread | 210 | :group 'gnus-thread |
| 210 | :type '(choice (const :tag "off" nil) | 211 | :type '(choice (const :tag "off" nil) |
| 211 | (const some) | 212 | (const some) |
diff --git a/lisp/gnus/mm-util.el b/lisp/gnus/mm-util.el index 25b156803a6..14a232f706a 100644 --- a/lisp/gnus/mm-util.el +++ b/lisp/gnus/mm-util.el | |||
| @@ -827,7 +827,7 @@ decompressed data. The buffer's multibyteness must be turned off." | |||
| 827 | (insert-file-contents err-file) | 827 | (insert-file-contents err-file) |
| 828 | (buffer-string) | 828 | (buffer-string) |
| 829 | (erase-buffer)) | 829 | (erase-buffer)) |
| 830 | t) | 830 | nil t) |
| 831 | " ") | 831 | " ") |
| 832 | "\n") | 832 | "\n") |
| 833 | (setq err-msg | 833 | (setq err-msg |
diff --git a/lisp/help.el b/lisp/help.el index 28288e57f6e..ad782f74cac 100644 --- a/lisp/help.el +++ b/lisp/help.el | |||
| @@ -1326,7 +1326,7 @@ puts the buffer specified by BUFFER-OR-NAME in `help-mode' and | |||
| 1326 | displays a message about how to delete the help window when it's no | 1326 | displays a message about how to delete the help window when it's no |
| 1327 | longer needed. The help window will be selected if | 1327 | longer needed. The help window will be selected if |
| 1328 | `help-window-select' is non-nil. | 1328 | `help-window-select' is non-nil. |
| 1329 | Most of this is done by `help-window-setup', which see." | 1329 | Most of this is done by `help-window-setup', which see." |
| 1330 | (declare (indent 1) (debug t)) | 1330 | (declare (indent 1) (debug t)) |
| 1331 | `(progn | 1331 | `(progn |
| 1332 | ;; Make `help-window-point-marker' point nowhere. The only place | 1332 | ;; Make `help-window-point-marker' point nowhere. The only place |
diff --git a/lisp/isearch.el b/lisp/isearch.el index 1e785a44c51..38110d09984 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el | |||
| @@ -1984,11 +1984,14 @@ and reads its face argument using `hi-lock-read-face-name'." | |||
| 1984 | 1984 | ||
| 1985 | 1985 | ||
| 1986 | (defun isearch-delete-char () | 1986 | (defun isearch-delete-char () |
| 1987 | "Discard last input item and move point back. | 1987 | "Undo last input item during a search. |
| 1988 | Last input means the last character or the last isearch command | 1988 | |
| 1989 | that added or deleted characters from the search string, | 1989 | An input item is the result of a command that pushes a new state |
| 1990 | moved point, toggled regexp mode or case-sensitivity, etc. | 1990 | of isearch (as recorded by the `isearch--state' structure) to |
| 1991 | If no previous match was done, just beep." | 1991 | `isearch-cmds'. Info node `(emacs)Basic Isearch' explains when |
| 1992 | Emacs records a new input item. | ||
| 1993 | |||
| 1994 | If no input items have been entered yet, just beep." | ||
| 1992 | (interactive) | 1995 | (interactive) |
| 1993 | (if (null (cdr isearch-cmds)) | 1996 | (if (null (cdr isearch-cmds)) |
| 1994 | (ding) | 1997 | (ding) |
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 956fe2ddb73..11ee0639988 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el | |||
| @@ -4492,7 +4492,8 @@ means discard it)." | |||
| 4492 | (if (stringp output) (concat " >" output) "")))) | 4492 | (if (stringp output) (concat " >" output) "")))) |
| 4493 | 4493 | ||
| 4494 | (defconst tramp-inline-compress-commands | 4494 | (defconst tramp-inline-compress-commands |
| 4495 | '(("gzip" "gzip -d") | 4495 | '(;; Suppress warnings about obsolete environment variable GZIP. |
| 4496 | ("env GZIP= gzip" "env GZIP= gzip -d") | ||
| 4496 | ("bzip2" "bzip2 -d") | 4497 | ("bzip2" "bzip2 -d") |
| 4497 | ("xz" "xz -d") | 4498 | ("xz" "xz -d") |
| 4498 | ("compress" "compress -d")) | 4499 | ("compress" "compress -d")) |
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el index 18a72324c65..7d0884389eb 100644 --- a/lisp/progmodes/cperl-mode.el +++ b/lisp/progmodes/cperl-mode.el | |||
| @@ -8786,7 +8786,7 @@ do extra unwind via `cperl-unwind-to-safe'." | |||
| 8786 | (goto-char new-beg))) | 8786 | (goto-char new-beg))) |
| 8787 | (setq beg (point)) | 8787 | (setq beg (point)) |
| 8788 | (goto-char end) | 8788 | (goto-char end) |
| 8789 | (while (and end | 8789 | (while (and end (< end (point-max)) |
| 8790 | (progn | 8790 | (progn |
| 8791 | (or (bolp) (condition-case nil | 8791 | (or (bolp) (condition-case nil |
| 8792 | (forward-line 1) | 8792 | (forward-line 1) |
diff --git a/lisp/simple.el b/lisp/simple.el index 562a9124b5c..6a7d210e483 100644 --- a/lisp/simple.el +++ b/lisp/simple.el | |||
| @@ -1071,13 +1071,16 @@ instead of deleted." | |||
| 1071 | (filter-buffer-substring (region-beginning) (region-end) method))))) | 1071 | (filter-buffer-substring (region-beginning) (region-end) method))))) |
| 1072 | "Function to get the region's content. | 1072 | "Function to get the region's content. |
| 1073 | Called with one argument METHOD which can be: | 1073 | Called with one argument METHOD which can be: |
| 1074 | - nil: return the content as a string. | 1074 | - nil: return the content as a string (list of strings for |
| 1075 | non-contiguous regions). | ||
| 1075 | - `delete-only': delete the region; the return value is undefined. | 1076 | - `delete-only': delete the region; the return value is undefined. |
| 1076 | - `bounds': return the boundaries of the region as a list of cons | 1077 | - `bounds': return the boundaries of the region as a list of one |
| 1077 | cells of the form (START . END). | 1078 | or more cons cells of the form (START . END). |
| 1078 | - anything else: delete the region and return its content | 1079 | - anything else: delete the region and return its content |
| 1079 | as a string, after filtering it with `filter-buffer-substring', which | 1080 | as a string (or list of strings for non-contiguous regions), |
| 1080 | is called with METHOD as its 3rd argument.") | 1081 | after filtering it with `filter-buffer-substring', which |
| 1082 | is called, for each contiguous sub-region, with METHOD as its | ||
| 1083 | 3rd argument.") | ||
| 1081 | 1084 | ||
| 1082 | (defvar region-insert-function | 1085 | (defvar region-insert-function |
| 1083 | (lambda (lines) | 1086 | (lambda (lines) |
| @@ -5527,8 +5530,10 @@ also checks the value of `use-empty-active-region'." | |||
| 5527 | (progn (cl-assert (mark)) t))) | 5530 | (progn (cl-assert (mark)) t))) |
| 5528 | 5531 | ||
| 5529 | (defun region-bounds () | 5532 | (defun region-bounds () |
| 5530 | "Return the boundaries of the region as a pair of positions. | 5533 | "Return the boundaries of the region. |
| 5531 | Value is a list of cons cells of the form (START . END)." | 5534 | Value is a list of one or more cons cells of the form (START . END). |
| 5535 | It will have more than one cons cell when the region is non-contiguous, | ||
| 5536 | see `region-noncontiguous-p' and `extract-rectangle-bounds'." | ||
| 5532 | (funcall region-extract-function 'bounds)) | 5537 | (funcall region-extract-function 'bounds)) |
| 5533 | 5538 | ||
| 5534 | (defun region-noncontiguous-p () | 5539 | (defun region-noncontiguous-p () |
| @@ -7935,7 +7940,7 @@ With a prefix argument, set VARIABLE to VALUE buffer-locally." | |||
| 7935 | (read-variable (format "Set variable (default %s): " default-var) | 7940 | (read-variable (format "Set variable (default %s): " default-var) |
| 7936 | default-var) | 7941 | default-var) |
| 7937 | (read-variable "Set variable: "))) | 7942 | (read-variable "Set variable: "))) |
| 7938 | (minibuffer-help-form '(describe-variable var)) | 7943 | (minibuffer-help-form `(describe-variable ',var)) |
| 7939 | (prop (get var 'variable-interactive)) | 7944 | (prop (get var 'variable-interactive)) |
| 7940 | (obsolete (car (get var 'byte-obsolete-variable))) | 7945 | (obsolete (car (get var 'byte-obsolete-variable))) |
| 7941 | (prompt (format "Set %s %s to value: " var | 7946 | (prompt (format "Set %s %s to value: " var |
diff --git a/src/image.c b/src/image.c index 24decbc0997..ad4f95ba991 100644 --- a/src/image.c +++ b/src/image.c | |||
| @@ -4309,7 +4309,7 @@ xpm_load_image (struct frame *f, | |||
| 4309 | return 1; | 4309 | return 1; |
| 4310 | 4310 | ||
| 4311 | failure: | 4311 | failure: |
| 4312 | image_error ("Invalid XPM file (%s)", img->spec); | 4312 | image_error ("Invalid XPM3 file (%s)", img->spec); |
| 4313 | x_destroy_x_image (ximg); | 4313 | x_destroy_x_image (ximg); |
| 4314 | x_destroy_x_image (mask_img); | 4314 | x_destroy_x_image (mask_img); |
| 4315 | x_clear_image (f, img); | 4315 | x_clear_image (f, img); |
diff --git a/src/nsterm.m b/src/nsterm.m index 1ef7f5ab516..bcc23ffeaff 100644 --- a/src/nsterm.m +++ b/src/nsterm.m | |||
| @@ -279,7 +279,6 @@ long context_menu_value = 0; | |||
| 279 | 279 | ||
| 280 | /* display update */ | 280 | /* display update */ |
| 281 | static int ns_window_num = 0; | 281 | static int ns_window_num = 0; |
| 282 | static BOOL gsaved = NO; | ||
| 283 | static BOOL ns_fake_keydown = NO; | 282 | static BOOL ns_fake_keydown = NO; |
| 284 | #ifdef NS_IMPL_COCOA | 283 | #ifdef NS_IMPL_COCOA |
| 285 | static BOOL ns_menu_bar_is_hidden = NO; | 284 | static BOOL ns_menu_bar_is_hidden = NO; |
| @@ -1234,7 +1233,6 @@ ns_clip_to_rect (struct frame *f, NSRect *r, int n) | |||
| 1234 | NSRectClipList (r, 2); | 1233 | NSRectClipList (r, 2); |
| 1235 | else | 1234 | else |
| 1236 | NSRectClip (*r); | 1235 | NSRectClip (*r); |
| 1237 | gsaved = YES; | ||
| 1238 | 1236 | ||
| 1239 | return YES; | 1237 | return YES; |
| 1240 | } | 1238 | } |
| @@ -1258,11 +1256,7 @@ ns_reset_clipping (struct frame *f) | |||
| 1258 | { | 1256 | { |
| 1259 | NSTRACE_WHEN (NSTRACE_GROUP_FOCUS, "ns_reset_clipping"); | 1257 | NSTRACE_WHEN (NSTRACE_GROUP_FOCUS, "ns_reset_clipping"); |
| 1260 | 1258 | ||
| 1261 | if (gsaved) | 1259 | [[NSGraphicsContext currentContext] restoreGraphicsState]; |
| 1262 | { | ||
| 1263 | [[NSGraphicsContext currentContext] restoreGraphicsState]; | ||
| 1264 | gsaved = NO; | ||
| 1265 | } | ||
| 1266 | } | 1260 | } |
| 1267 | 1261 | ||
| 1268 | 1262 | ||
| @@ -1288,19 +1282,6 @@ ns_clip_to_row (struct window *w, struct glyph_row *row, | |||
| 1288 | return ns_clip_to_rect (f, &clip_rect, 1); | 1282 | return ns_clip_to_rect (f, &clip_rect, 1); |
| 1289 | } | 1283 | } |
| 1290 | 1284 | ||
| 1291 | |||
| 1292 | static void | ||
| 1293 | ns_flush_display (struct frame *f) | ||
| 1294 | /* Force the frame to redisplay. If areas have previously been marked | ||
| 1295 | dirty by setNeedsDisplayInRect (in ns_clip_to_rect), then this will call | ||
| 1296 | draw_rect: which will "expose" those areas. */ | ||
| 1297 | { | ||
| 1298 | block_input (); | ||
| 1299 | [FRAME_NS_VIEW (f) displayIfNeeded]; | ||
| 1300 | unblock_input (); | ||
| 1301 | } | ||
| 1302 | |||
| 1303 | |||
| 1304 | /* ========================================================================== | 1285 | /* ========================================================================== |
| 1305 | 1286 | ||
| 1306 | Visible bell and beep. | 1287 | Visible bell and beep. |
| @@ -2837,6 +2818,8 @@ ns_clear_frame_area (struct frame *f, int x, int y, int width, int height) | |||
| 2837 | static void | 2818 | static void |
| 2838 | ns_copy_bits (struct frame *f, NSRect src, NSRect dest) | 2819 | ns_copy_bits (struct frame *f, NSRect src, NSRect dest) |
| 2839 | { | 2820 | { |
| 2821 | NSSize delta = NSMakeSize (dest.origin.x - src.origin.x, | ||
| 2822 | dest.origin.y - src.origin.y) | ||
| 2840 | NSTRACE ("ns_copy_bits"); | 2823 | NSTRACE ("ns_copy_bits"); |
| 2841 | 2824 | ||
| 2842 | if (FRAME_NS_VIEW (f)) | 2825 | if (FRAME_NS_VIEW (f)) |
| @@ -2845,10 +2828,21 @@ ns_copy_bits (struct frame *f, NSRect src, NSRect dest) | |||
| 2845 | 2828 | ||
| 2846 | /* FIXME: scrollRect:by: is deprecated in macOS 10.14. There is | 2829 | /* FIXME: scrollRect:by: is deprecated in macOS 10.14. There is |
| 2847 | no obvious replacement so we may have to come up with our own. */ | 2830 | no obvious replacement so we may have to come up with our own. */ |
| 2848 | [FRAME_NS_VIEW (f) scrollRect: src | 2831 | [FRAME_NS_VIEW (f) scrollRect: src by: delta]; |
| 2849 | by: NSMakeSize (dest.origin.x - src.origin.x, | 2832 | |
| 2850 | dest.origin.y - src.origin.y)]; | 2833 | #ifdef NS_IMPL_COCOA |
| 2851 | [FRAME_NS_VIEW (f) setNeedsDisplay:YES]; | 2834 | /* As far as I can tell from the documentation, scrollRect:by:, |
| 2835 | above, should copy the dirty rectangles from our source | ||
| 2836 | rectangle to our destination, however it appears it clips the | ||
| 2837 | operation to src. As a result we need to use | ||
| 2838 | translateRectsNeedingDisplayInRect:by: below, and we have to | ||
| 2839 | union src and dest so it can pick up the dirty rectangles, | ||
| 2840 | and place them, as it also clips to the rectangle. | ||
| 2841 | |||
| 2842 | FIXME: We need a GNUstep equivalent. */ | ||
| 2843 | [FRAME_NS_VIEW (f) translateRectsNeedingDisplayInRect:NSUnionRect (src, dest) | ||
| 2844 | by:delta]; | ||
| 2845 | #endif | ||
| 2852 | } | 2846 | } |
| 2853 | } | 2847 | } |
| 2854 | 2848 | ||
| @@ -3233,15 +3227,6 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row, | |||
| 3233 | else | 3227 | else |
| 3234 | [FRAME_CURSOR_COLOR (f) set]; | 3228 | [FRAME_CURSOR_COLOR (f) set]; |
| 3235 | 3229 | ||
| 3236 | #ifdef NS_IMPL_COCOA | ||
| 3237 | /* TODO: This makes drawing of cursor plus that of phys_cursor_glyph | ||
| 3238 | atomic. Cleaner ways of doing this should be investigated. | ||
| 3239 | One way would be to set a global variable DRAWING_CURSOR | ||
| 3240 | when making the call to draw_phys..(), don't focus in that | ||
| 3241 | case, then move the ns_reset_clipping() here after that call. */ | ||
| 3242 | NSDisableScreenUpdates (); | ||
| 3243 | #endif | ||
| 3244 | |||
| 3245 | switch (cursor_type) | 3230 | switch (cursor_type) |
| 3246 | { | 3231 | { |
| 3247 | case DEFAULT_CURSOR: | 3232 | case DEFAULT_CURSOR: |
| @@ -3275,10 +3260,6 @@ ns_draw_window_cursor (struct window *w, struct glyph_row *glyph_row, | |||
| 3275 | /* draw the character under the cursor */ | 3260 | /* draw the character under the cursor */ |
| 3276 | if (cursor_type != NO_CURSOR) | 3261 | if (cursor_type != NO_CURSOR) |
| 3277 | draw_phys_cursor_glyph (w, glyph_row, DRAW_CURSOR); | 3262 | draw_phys_cursor_glyph (w, glyph_row, DRAW_CURSOR); |
| 3278 | |||
| 3279 | #ifdef NS_IMPL_COCOA | ||
| 3280 | NSEnableScreenUpdates (); | ||
| 3281 | #endif | ||
| 3282 | } | 3263 | } |
| 3283 | } | 3264 | } |
| 3284 | 3265 | ||
| @@ -5119,7 +5100,7 @@ static struct redisplay_interface ns_redisplay_interface = | |||
| 5119 | ns_after_update_window_line, | 5100 | ns_after_update_window_line, |
| 5120 | ns_update_window_begin, | 5101 | ns_update_window_begin, |
| 5121 | ns_update_window_end, | 5102 | ns_update_window_end, |
| 5122 | ns_flush_display, /* flush_display */ | 5103 | 0, /* flush_display */ |
| 5123 | x_clear_window_mouse_face, | 5104 | x_clear_window_mouse_face, |
| 5124 | x_get_glyph_overhangs, | 5105 | x_get_glyph_overhangs, |
| 5125 | x_fix_overlapping_area, | 5106 | x_fix_overlapping_area, |
| @@ -7114,7 +7095,6 @@ not_in_argv (NSString *arg) | |||
| 7114 | size_title = xmalloc (strlen (old_title) + 40); | 7095 | size_title = xmalloc (strlen (old_title) + 40); |
| 7115 | esprintf (size_title, "%s — (%d x %d)", old_title, cols, rows); | 7096 | esprintf (size_title, "%s — (%d x %d)", old_title, cols, rows); |
| 7116 | [window setTitle: [NSString stringWithUTF8String: size_title]]; | 7097 | [window setTitle: [NSString stringWithUTF8String: size_title]]; |
| 7117 | [window display]; | ||
| 7118 | xfree (size_title); | 7098 | xfree (size_title); |
| 7119 | } | 7099 | } |
| 7120 | } | 7100 | } |
| @@ -8164,8 +8144,8 @@ not_in_argv (NSString *arg) | |||
| 8164 | 8144 | ||
| 8165 | - (void)drawRect: (NSRect)rect | 8145 | - (void)drawRect: (NSRect)rect |
| 8166 | { | 8146 | { |
| 8167 | int x = NSMinX (rect), y = NSMinY (rect); | 8147 | const NSRect *rectList; |
| 8168 | int width = NSWidth (rect), height = NSHeight (rect); | 8148 | NSInteger numRects; |
| 8169 | 8149 | ||
| 8170 | NSTRACE ("[EmacsView drawRect:" NSTRACE_FMT_RECT "]", | 8150 | NSTRACE ("[EmacsView drawRect:" NSTRACE_FMT_RECT "]", |
| 8171 | NSTRACE_ARG_RECT(rect)); | 8151 | NSTRACE_ARG_RECT(rect)); |
| @@ -8173,9 +8153,23 @@ not_in_argv (NSString *arg) | |||
| 8173 | if (!emacsframe || !emacsframe->output_data.ns) | 8153 | if (!emacsframe || !emacsframe->output_data.ns) |
| 8174 | return; | 8154 | return; |
| 8175 | 8155 | ||
| 8176 | ns_clear_frame_area (emacsframe, x, y, width, height); | ||
| 8177 | block_input (); | 8156 | block_input (); |
| 8178 | expose_frame (emacsframe, x, y, width, height); | 8157 | |
| 8158 | /* Get only the precise dirty rectangles to avoid redrawing | ||
| 8159 | potentially large areas of the frame that haven't changed. | ||
| 8160 | |||
| 8161 | I'm not sure this actually provides much of a performance benefit | ||
| 8162 | as it's hard to benchmark, but it certainly doesn't seem to | ||
| 8163 | hurt. */ | ||
| 8164 | [self getRectsBeingDrawn:&rectList count:&numRects]; | ||
| 8165 | for (int i = 0 ; i < numRects ; i++) | ||
| 8166 | { | ||
| 8167 | NSRect r = rectList[i]; | ||
| 8168 | expose_frame (emacsframe, | ||
| 8169 | NSMinX (r), NSMinY (r), | ||
| 8170 | NSWidth (r), NSHeight (r)); | ||
| 8171 | } | ||
| 8172 | |||
| 8179 | unblock_input (); | 8173 | unblock_input (); |
| 8180 | 8174 | ||
| 8181 | /* | 8175 | /* |