From 36a1d52814562bb589f03226c31ca823f0518fd2 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 14 Mar 2018 20:11:16 +0200 Subject: [PATCH 01/18] Fix problems caused by fontconfig-2.13.0 * src/xterm.c (x_term_init): Call fixup_locale after xg_initialize, to countermand the call to setlocale in some versions of fontconfig. (Bug#30788) --- src/xterm.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/xterm.c b/src/xterm.c index c5163aa990a..7b445e5f46c 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -12411,12 +12411,16 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name) unrequest_sigio (); /* See comment in x_display_ok. */ gtk_init (&argc, &argv2); request_sigio (); - fixup_locale (); g_log_remove_handler ("GLib", id); xg_initialize (); + /* Do this after the call to xg_initialize, because when + Fontconfig is used, xg_initialize calls its initialization + function which in some versions of Fontconfig calls setlocale. */ + fixup_locale (); + dpy = DEFAULT_GDK_DISPLAY (); #if ! GTK_CHECK_VERSION (2, 90, 0) From 2616cd94f13edaf6db9ef600d9a79fa1be4807c5 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 15 Mar 2018 08:36:09 +0200 Subject: [PATCH 02/18] Minor copyedits in mule.texi * doc/emacs/mule.texi (Recognize Coding, Fontsets): Minor changes in wording. Suggested by Richard Stallman in emacs-manual-bugs@gnu.org. --- doc/emacs/mule.texi | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/doc/emacs/mule.texi b/doc/emacs/mule.texi index 5ddfb7defd2..f9dbeffcb12 100644 --- a/doc/emacs/mule.texi +++ b/doc/emacs/mule.texi @@ -871,7 +871,7 @@ eol-mnemonic}). @vindex inhibit-iso-escape-detection @cindex escape sequences in files - By default, the automatic detection of coding system is sensitive to + By default, the automatic detection of the coding system is sensitive to escape sequences. If Emacs sees a sequence of characters that begin with an escape character, and the sequence is valid as an ISO-2022 code, that tells Emacs to use one of the ISO-2022 encodings to decode @@ -1344,9 +1344,8 @@ The default fontset is most likely to have fonts for a wide variety of non-@acronym{ASCII} characters, and is the default fallback for the other two fontsets, and if you set a default font rather than fontset. However, it does not specify font family names, so results can be -somewhat random if you use it directly. You can specify use of a -particular fontset by starting Emacs with the @samp{-fn} option. -For example, +somewhat random if you use it directly. You can specify a particular +fontset by starting Emacs with the @samp{-fn} option. For example, @example emacs -fn fontset-standard From 2b8507fbdce8228ccdbcbc31fe545a50330ddd51 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Thu, 15 Mar 2018 10:56:08 +0100 Subject: [PATCH 03/18] Replace "carriage-return" by "carriage return" in manuals * doc/emacs/msdos.texi: * doc/emacs/mule.texi: * doc/emacs/screen.texi: * doc/lispref/nonascii.texi: * doc/misc/calc.texi: Replace "carriage-return" by "carriage return". Suggested by Richard Stallman in emacs-manual-bugs@gnu.org. --- doc/emacs/msdos.texi | 45 ++++++++++++++++++++------------------- doc/emacs/mule.texi | 42 ++++++++++++++++++------------------ doc/emacs/screen.texi | 4 ++-- doc/lispref/nonascii.texi | 4 ++-- doc/misc/calc.texi | 2 +- 5 files changed, 49 insertions(+), 48 deletions(-) diff --git a/doc/emacs/msdos.texi b/doc/emacs/msdos.texi index 95969540f5b..90f0389a0e0 100644 --- a/doc/emacs/msdos.texi +++ b/doc/emacs/msdos.texi @@ -152,15 +152,16 @@ window. @xref{emacsclient Options}. convention used on GNU, Unix, and other POSIX-compliant systems. @cindex end-of-line conversion on MS-DOS/MS-Windows - By contrast, MS-DOS and MS-Windows normally use carriage-return linefeed, -a two-character sequence, to separate text lines. (Linefeed is the same -character as newline.) Therefore, convenient editing of typical files -with Emacs requires conversion of these end-of-line (EOL) sequences. -And that is what Emacs normally does: it converts carriage-return -linefeed into newline when reading files, and converts newline into -carriage-return linefeed when writing files. The same mechanism that -handles conversion of international character codes does this conversion -also (@pxref{Coding Systems}). + By contrast, MS-DOS and MS-Windows normally use carriage return +followed by linefeed, a two-character sequence, to separate text +lines. (Linefeed is the same character as newline.) Therefore, +convenient editing of typical files with Emacs requires conversion of +these end-of-line (EOL) sequences. And that is what Emacs normally +does: it converts carriage return followed by linefeed into newline +when reading files, and converts newline into carriage return followed +by linefeed when writing files. The same mechanism that handles +conversion of international character codes does this conversion also +(@pxref{Coding Systems}). @cindex cursor location, on MS-DOS @cindex point location, on MS-DOS @@ -169,11 +170,11 @@ that character positions as reported by Emacs (@pxref{Position Info}) do not agree with the file size information known to the operating system. In addition, if Emacs recognizes from a file's contents that it uses -newline rather than carriage-return linefeed as its line separator, it -does not perform EOL conversion when reading or writing that file. -Thus, you can read and edit files from GNU and Unix systems on MS-DOS -with no special effort, and they will retain their Unix-style -end-of-line convention after you edit them. +newline rather than carriage return followed by linefeed as its line +separator, it does not perform EOL conversion when reading or writing +that file. Thus, you can read and edit files from GNU and Unix +systems on MS-DOS with no special effort, and they will retain their +Unix-style end-of-line convention after you edit them. The mode line indicates whether end-of-line translation was used for the current buffer. If MS-DOS end-of-line translation is in use for the @@ -181,20 +182,20 @@ buffer, the MS-Windows build of Emacs displays a backslash @samp{\} after the coding system mnemonic near the beginning of the mode line (@pxref{Mode Line}). If no EOL translation was performed, the string @samp{(Unix)} is displayed instead of the backslash, to alert you that the -file's EOL format is not the usual carriage-return linefeed. +file's EOL format is not the usual carriage return followed by linefeed. @cindex DOS-to-Unix conversion of files To visit a file and specify whether it uses DOS-style or Unix-style end-of-line, specify a coding system (@pxref{Text Coding}). For example, @kbd{C-x @key{RET} c unix @key{RET} C-x C-f foobar.txt} visits the file @file{foobar.txt} without converting the EOLs; if some -line ends with a carriage-return linefeed pair, Emacs will display -@samp{^M} at the end of that line. Similarly, you can direct Emacs to -save a buffer in a specified EOL format with the @kbd{C-x @key{RET} f} -command. For example, to save a buffer with Unix EOL format, type -@kbd{C-x @key{RET} f unix @key{RET} C-x C-s}. If you visit a file -with DOS EOL conversion, then save it with Unix EOL format, that -effectively converts the file to Unix EOL style, like the +line ends with a carriage return followed by linefeed pair, Emacs will +display @samp{^M} at the end of that line. Similarly, you can direct +Emacs to save a buffer in a specified EOL format with the @kbd{C-x +@key{RET} f} command. For example, to save a buffer with Unix EOL +format, type @kbd{C-x @key{RET} f unix @key{RET} C-x C-s}. If you +visit a file with DOS EOL conversion, then save it with Unix EOL +format, that effectively converts the file to Unix EOL style, like the @code{dos2unix} program. @cindex untranslated file system diff --git a/doc/emacs/mule.texi b/doc/emacs/mule.texi index f9dbeffcb12..401c83dd49a 100644 --- a/doc/emacs/mule.texi +++ b/doc/emacs/mule.texi @@ -690,8 +690,8 @@ system; for example, to visit a file encoded in codepage 850, type In addition to converting various representations of non-@acronym{ASCII} characters, a coding system can perform end-of-line conversion. Emacs handles three different conventions for how to separate lines in a file: -newline (Unix), carriage-return linefeed (DOS), and just -carriage-return (Mac). +newline (Unix), carriage return followed by linefeed (DOS), and just +carriage return (Mac). @table @kbd @item C-h C @var{coding} @key{RET} @@ -728,8 +728,8 @@ system, including the letter that stands for it in the mode line @code{no-conversion}, which means no conversion of any kind---specifies how and whether to convert printing characters, but leaves the choice of end-of-line conversion to be decided based on the contents of each file. -For example, if the file appears to use the sequence carriage-return -linefeed to separate lines, DOS end-of-line conversion will be used. +For example, if the file appears to use the sequence carriage return +and linefeed to separate lines, DOS end-of-line conversion will be used. Each of the listed coding systems has three variants, which specify exactly what to do for end-of-line conversion: @@ -741,15 +741,15 @@ newline to separate lines. (This is the convention normally used on Unix and GNU systems, and macOS.) @item @dots{}-dos -Assume the file uses carriage-return linefeed to separate lines, and do -the appropriate conversion. (This is the convention normally used on -Microsoft systems.@footnote{It is also specified for MIME @samp{text/*} -bodies and in other network transport contexts. It is different -from the SGML reference syntax record-start/record-end format, which -Emacs doesn't support directly.}) +Assume the file uses carriage return followed by linefeed to separate +lines, and do the appropriate conversion. (This is the convention +normally used on Microsoft systems.@footnote{It is also specified for +MIME @samp{text/*} bodies and in other network transport contexts. It +is different from the SGML reference syntax record-start/record-end +format, which Emacs doesn't support directly.}) @item @dots{}-mac -Assume the file uses carriage-return to separate lines, and do the +Assume the file uses carriage return to separate lines, and do the appropriate conversion. (This was the convention used in Classic Mac OS.) @end table @@ -859,15 +859,15 @@ the third argument says which coding system to use for these files. @vindex inhibit-eol-conversion @cindex DOS-style end-of-line display Emacs recognizes which kind of end-of-line conversion to use based on -the contents of the file: if it sees only carriage-returns, or only -carriage-return linefeed sequences, then it chooses the end-of-line -conversion accordingly. You can inhibit the automatic use of -end-of-line conversion by setting the variable @code{inhibit-eol-conversion} -to non-@code{nil}. If you do that, DOS-style files will be displayed -with the @samp{^M} characters visible in the buffer; some people -prefer this to the more subtle @samp{(DOS)} end-of-line type -indication near the left edge of the mode line (@pxref{Mode Line, -eol-mnemonic}). +the contents of the file: if it sees only carriage returns, or only +carriage return followed by linefeed sequences, then it chooses the +end-of-line conversion accordingly. You can inhibit the automatic use +of end-of-line conversion by setting the variable +@code{inhibit-eol-conversion} to non-@code{nil}. If you do that, +DOS-style files will be displayed with the @samp{^M} characters +visible in the buffer; some people prefer this to the more subtle +@samp{(DOS)} end-of-line type indication near the left edge of the +mode line (@pxref{Mode Line, eol-mnemonic}). @vindex inhibit-iso-escape-detection @cindex escape sequences in files @@ -1041,7 +1041,7 @@ buffer (@pxref{Output Coding}). (@pxref{Coding Systems, end-of-line conversion}) for encoding the current buffer. For example, @kbd{C-x @key{RET} f dos @key{RET}} will cause Emacs to save the current buffer's text with DOS-style -carriage-return linefeed line endings. +carriage return followed by linefeed line endings. @kindex C-x RET c @findex universal-coding-system-argument diff --git a/doc/emacs/screen.texi b/doc/emacs/screen.texi index 19a4a9e4b6c..8f2be4b9a7e 100644 --- a/doc/emacs/screen.texi +++ b/doc/emacs/screen.texi @@ -205,11 +205,11 @@ terminal output. Furthermore, if you are using an input method, string is displayed, that indicates a nontrivial end-of-line convention for encoding a file. Usually, lines of text are separated by @dfn{newline characters} in a file, but two other conventions are -sometimes used. The MS-DOS convention uses a carriage-return +sometimes used. The MS-DOS convention uses a carriage return character followed by a linefeed character; when editing such files, the colon changes to either a backslash (@samp{\}) or @samp{(DOS)}, depending on the operating system. Another convention, -employed by older Macintosh systems, uses a carriage-return +employed by older Macintosh systems, uses a carriage return character instead of a newline; when editing such files, the colon changes to either a forward slash (@samp{/}) or @samp{(Mac)}. On some systems, Emacs displays @samp{(Unix)} instead of the colon for files diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi index 8bc7e209894..70df555d877 100644 --- a/doc/lispref/nonascii.texi +++ b/doc/lispref/nonascii.texi @@ -1074,9 +1074,9 @@ that result from encoding unsupported characters. used on various systems for representing end of line in files. The Unix convention, used on GNU and Unix systems, is to use the linefeed character (also called newline). The DOS convention, used on -MS-Windows and MS-DOS systems, is to use a carriage-return and a +MS-Windows and MS-DOS systems, is to use a carriage return and a linefeed at the end of a line. The Mac convention is to use just -carriage-return. (This was the convention used in Classic Mac OS.) +carriage return. (This was the convention used in Classic Mac OS.) @cindex base coding system @cindex variant coding system diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi index be78a53ed66..0c8c2db4932 100644 --- a/doc/misc/calc.texi +++ b/doc/misc/calc.texi @@ -33164,7 +33164,7 @@ This switches into the Calc buffer for the duration of the macro. For example, @samp{(calc-eval "vx5\rVR+" 'macro)} pushes the vector @samp{[1,2,3,4,5]} on the stack and then replaces it with the sum of those numbers. Note that @samp{\r} is the Lisp -notation for the carriage-return, @key{RET}, character. +notation for the carriage return, @key{RET}, character. If your keyboard macro wishes to pop the stack, @samp{\C-d} is safer than @samp{\177} (the @key{DEL} character) because some From 10bd3b3af8acfc226acadc654298865cffc19cc9 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Tue, 13 Mar 2018 22:17:43 -0400 Subject: [PATCH 04/18] Improve word motion docs (Bug#30815) * doc/lispref/positions.texi (Word Motion): Fix reference to `char-script-table'. * lisp/simple.el (backward-word): * src/syntax.c (forward-word): Mention `char-script-table' and add link to the 'Word Motion' manual section. --- doc/lispref/positions.texi | 2 +- lisp/simple.el | 12 +++++++----- src/syntax.c | 9 +++++---- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi index 0a03e246c01..fdc8bb96ae9 100644 --- a/doc/lispref/positions.texi +++ b/doc/lispref/positions.texi @@ -210,7 +210,7 @@ by the current buffer's syntax table (@pxref{Syntax Class Table}), but modes can override that by setting up a suitable @code{find-word-boundary-function-table}, described below. Characters that belong to different scripts (as defined by -@code{char-syntax-table}), also define a word boundary +@code{char-script-table}), also define a word boundary (@pxref{Character Properties}). In any case, this function cannot move point past the boundary of the accessible portion of the buffer, or across a field boundary (@pxref{Fields}). The most common case of diff --git a/lisp/simple.el b/lisp/simple.el index b7ad6ebd799..d8abeb30004 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -7027,11 +7027,13 @@ current object." With argument ARG, do this that many times. If ARG is omitted or nil, move point backward one word. -The word boundaries are normally determined by the buffer's syntax -table, but `find-word-boundary-function-table', such as set up -by `subword-mode', can change that. If a Lisp program needs to -move by words determined strictly by the syntax table, it should -use `backward-word-strictly' instead." +The word boundaries are normally determined by the buffer's +syntax table and character script (according to +`char-script-table'), but `find-word-boundary-function-table', +such as set up by `subword-mode', can change that. If a Lisp +program needs to move by words determined strictly by the syntax +table, it should use `backward-word-strictly' instead. See Info +node `(elisp) Word Motion' for details." (interactive "^p") (forward-word (- (or arg 1)))) diff --git a/src/syntax.c b/src/syntax.c index 378064611cc..e54325589f3 100644 --- a/src/syntax.c +++ b/src/syntax.c @@ -1552,10 +1552,11 @@ left there and the function returns nil. Field boundaries are not noticed if `inhibit-field-text-motion' is non-nil. The word boundaries are normally determined by the buffer's syntax -table, but `find-word-boundary-function-table', such as set up -by `subword-mode', can change that. If a Lisp program needs to -move by words determined strictly by the syntax table, it should -use `forward-word-strictly' instead. */) +table and character script (according to `char-script-table'), but +`find-word-boundary-function-table', such as set up by `subword-mode', +can change that. If a Lisp program needs to move by words determined +strictly by the syntax table, it should use `forward-word-strictly' +instead. See Info node `(elisp) Word Motion' for details. */) (Lisp_Object arg) { Lisp_Object tmp; From 7f27d42f0b64c74625e45909a0bf389d68eddc62 Mon Sep 17 00:00:00 2001 From: "Basil L. Contovounesios" Date: Fri, 16 Feb 2018 17:11:49 +0000 Subject: [PATCH 05/18] Pass json-readtable-error data as a list (bug#30489) * lisp/json.el (json-readtable-dispatch): Fix error data. * test/lisp/json-tests.el (test-json-read): Check error data is a list. --- lisp/json.el | 2 +- test/lisp/json-tests.el | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lisp/json.el b/lisp/json.el index b03a482ca6e..d374f452e6b 100644 --- a/lisp/json.el +++ b/lisp/json.el @@ -685,7 +685,7 @@ become JSON objects." (push (list c 'json-read-number) table)) (pcase-dolist (`(,c . ,rest) table) (push `((eq ,char ,c) (,@rest)) res)) - `(cond ,@res (t (signal 'json-readtable-error ,char))))) + `(cond ,@res (t (signal 'json-readtable-error (list ,char)))))) (defun json-read () "Parse and return the JSON object following point. diff --git a/test/lisp/json-tests.el b/test/lisp/json-tests.el index 47f8047b349..ea562e8b134 100644 --- a/test/lisp/json-tests.el +++ b/test/lisp/json-tests.el @@ -309,7 +309,8 @@ Point is moved to beginning of the buffer." (json-tests--with-temp-buffer "" (should-error (json-read) :type 'json-end-of-file)) (json-tests--with-temp-buffer "xxx" - (should-error (json-read) :type 'json-readtable-error))) + (let ((err (should-error (json-read) :type 'json-readtable-error))) + (should (equal (cdr err) '(?x)))))) (ert-deftest test-json-read-from-string () (let ((json-string "{ \"a\": 1 }")) From a776ce7be658679d776e0bd5a0f8ffe0cc1cb33a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simen=20Heggest=C3=B8yl?= Date: Mon, 19 Mar 2018 10:01:01 +0100 Subject: [PATCH 06/18] Fix typo in the Emacs manual's VC chapter * doc/emacs/maintaining.texi (VC Directory Buffer): Fix a typo. --- doc/emacs/maintaining.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi index cda482877ae..9421691ba76 100644 --- a/doc/emacs/maintaining.texi +++ b/doc/emacs/maintaining.texi @@ -1181,7 +1181,7 @@ become up-to-date as a direct result of a VC command, it is listed. @noindent Two work files have been modified but not committed: -@file{configure.ac} in the current directory, and @file{foo.c} in the +@file{configure.ac} in the current directory, and @file{main.c} in the @file{src/} subdirectory. The file named @file{README} has been added but is not yet committed, while @file{temp.txt} is not under version control (@pxref{Registering}). From fb3dc0e8aa9ce8514cd6ee0e33a91a34ee0d5756 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 19 Mar 2018 17:18:47 +0200 Subject: [PATCH 07/18] More proofreading of the Emacs manual * doc/emacs/macos.texi (Mac / GNUstep Basics): Fix typos. Improve indexing. (Mac / GNUstep Basics, Mac / GNUstep Customization) (Mac / GNUstep Events): Improve indexing. * doc/emacs/rmail.texi (Rmail): Mention Gnus. (Rmail Basics, Rmail Scrolling): Improve cross-references and indexing. (Rmail Motion): Minor improvements. (Rmail Inbox): Remove outdated text about Babyl format. (Rmail Files): Formatting changes. Comment out set-rmail-inbox-list in the table of commands, as it is commented out in the text that follows. (Rmail Output, Rmail Labels, Rmail Reply, Rmail Make Summary): Minor copyedits. (Rmail Summary Edit): Document rmail-summary-scroll-between-messages. (Rmail Editing): Improve indexing. (Movemail): Fix typos. (Remote Mailboxes): Use "POP3" rather than "POP". --- doc/emacs/macos.texi | 14 +++- doc/emacs/rmail.texi | 173 ++++++++++++++++++++++++------------------- 2 files changed, 107 insertions(+), 80 deletions(-) diff --git a/doc/emacs/macos.texi b/doc/emacs/macos.texi index 4982c78f2eb..e669eaa4cbd 100644 --- a/doc/emacs/macos.texi +++ b/doc/emacs/macos.texi @@ -21,7 +21,7 @@ begin with @samp{ns-}, which is short for @samp{Nextstep}. NeXTstep was an application interface released by NeXT Inc.@: during the 1980s, of which Cocoa is a direct descendant. Apart from Cocoa, there is another NeXTstep-style system: GNUstep, which is free software. As of -this writing, Emacs GNUstep support is alpha status (@pxref{GNUstep +this writing, Emacs GNUstep support is in alpha status (@pxref{GNUstep Support}), but we hope to improve it in the future. @menu @@ -34,6 +34,7 @@ Support}), but we hope to improve it in the future. @node Mac / GNUstep Basics @section Basic Emacs usage under macOS and GNUstep +@cindex modifier keys (macOS) By default, the @key{Alt} and @key{Option} keys are the same as @key{Meta}. The Mac @key{Cmd} key is the same as @key{Super}, and Emacs provides a set of key bindings using this modifier key that mimic @@ -47,7 +48,7 @@ behavior of the right @key{Alt} and @key{Option} keys. These keys behave like the left-hand keys if the value is @code{left} (the default). A value of @code{control}, @code{meta}, @code{alt}, @code{super}, or @code{hyper} makes them behave like the corresponding -modifier keys; a value to @code{left} means be the same key as +modifier keys; a value of @code{left} means be the same key as @code{ns-alternate-modifier}; a value of @code{none} tells Emacs to ignore them, in which case you get the default behavior of macOS accentuation system from the right option key. @@ -64,6 +65,7 @@ dialogs to read file names. However, if you use the regular Emacs key sequences, such as @kbd{C-x C-f}, Emacs uses the minibuffer to read file names. +@cindex copy/paste to/from primary selection (macOS) On GNUstep, in an X-windows environment you need to use @kbd{Cmd-c} instead of one of the @kbd{C-w} or @kbd{M-w} commands to transfer text to the X primary selection; otherwise, Emacs will use the @@ -76,6 +78,7 @@ clipboard. @c How is this any different to launching from a window manager menu @c in GNU/Linux? These are sometimes not login shells either. +@cindex environment variables (macOS) Many programs which may run under Emacs, like latex or man, depend on the settings of environment variables. If Emacs is launched from the shell, it will automatically inherit these environment variables and its subprocesses @@ -98,6 +101,7 @@ keys and the fullscreen behavior. To see all such options, use @subsection Font and Color Panels +@findex ns-popup-font-panel The standard Mac / GNUstep font and color panels are accessible via Lisp commands. The Font Panel may be accessed with @kbd{M-x ns-popup-font-panel}. It will set the default font in the frame most @@ -106,6 +110,7 @@ recently used or clicked on. @c To make the setting permanent, use @samp{Save Options} in the @c Options menu, or run @code{menu-bar-options-save}. +@findex ns-popup-color-panel You can bring up a color panel with @kbd{M-x ns-popup-color-panel} and drag the color you want over the Emacs face you want to change. Normal dragging will alter the foreground color. Shift dragging will alter the @@ -119,6 +124,7 @@ Useful in this context is the listing of all faces obtained by @kbd{M-x list-faces-display}. @cindex Core Text, on macOS +@cindex font backend, on macOS In macOS, Emacs uses a Core Text based font backend by default. If you prefer the older font style, enter the following at the command-line before starting Emacs: @@ -130,6 +136,7 @@ at the command-line before starting Emacs: @node Mac / GNUstep Events @section Windowing System Events under macOS / GNUstep +@cindex events on macOS Nextstep applications receive a number of special events which have no X equivalent. These are sent as specially defined key events, which @@ -152,7 +159,7 @@ You can change how Emacs responds to a @code{ns-open-file} event by changing the variable @code{ns-pop-up-frames}. Its default value, @samp{fresh}, is what we have just described. A value of @code{t} means to always visit the file in a new frame. A value of @code{nil} -means to always visit the file in an existing frame. +means to always visit the file in the selected frame. @item ns-open-temp-file This event occurs when another application requests that Emacs open a @@ -195,6 +202,7 @@ This event occurs when the user logs out and Emacs is still running, or when The default behavior is to save all file-visiting buffers. @end table +@cindex using Nextstep services (macOS) Emacs also allows users to make use of Nextstep services, via a set of commands whose names begin with @samp{ns-service-} and end with the name of the service. Type @kbd{M-x ns-service-@key{TAB}} to diff --git a/doc/emacs/rmail.texi b/doc/emacs/rmail.texi index cb62ce36526..a51ded1f1b6 100644 --- a/doc/emacs/rmail.texi +++ b/doc/emacs/rmail.texi @@ -14,6 +14,12 @@ you receive. Rmail stores mail messages in files called Rmail files. Reading the messages in an Rmail file is done in a special major mode, Rmail mode, which redefines most letters to run commands for managing mail. + + Emacs also comes with a much more sophisticated and flexible +subsystem for reading mail, called Gnus. Gnus is a very large +package, and is therefore described in its own manual, see @ref{Top,,, +gnus, The Gnus Newsreader}. + @menu * Basic: Rmail Basics. Basic concepts of Rmail, and simple use. * Scroll: Rmail Scrolling. Scrolling through a message. @@ -50,14 +56,15 @@ Rmail file, merges new mail in from your inboxes, displays the first message you haven't read yet, and lets you begin reading. The variable @code{rmail-file-name} specifies the name of the primary Rmail file. +@cindex current message (Rmail) Rmail displays only one message in the Rmail file at a time. The message that is shown is called the @dfn{current message}. Rmail mode's special commands can do such things as delete the current message, copy it into another file, send a reply, or move to another -message. You can also create multiple Rmail files and use Rmail to move -messages between them. +message. You can also create multiple Rmail files (@pxref{Files}) and +use Rmail to move messages between them (@pxref{Output}). -@cindex message number +@cindex message number (Rmail) Within the Rmail file, messages are normally arranged sequentially in order of receipt; you can specify other ways to sort them (@pxref{Rmail Sorting}). Messages are identified by consecutive integers which are @@ -72,8 +79,9 @@ with the @kbd{j} key (@pxref{Rmail Motion}). become permanent only when you save the file. You can save it with @kbd{s} (@code{rmail-expunge-and-save}), which also expunges deleted messages from the file first (@pxref{Rmail Deletion}). To save the -file without expunging, use @kbd{C-x C-s}. Rmail also saves the Rmail -file after merging new mail from an inbox file (@pxref{Rmail Inbox}). +file without expunging, use @kbd{C-x C-s}. Rmail automatically saves +the Rmail file after merging new mail from an inbox file (@pxref{Rmail +Inbox}). @kindex q @r{(Rmail)} @findex rmail-quit @@ -93,9 +101,10 @@ Rmail buffer and its summary without expunging and saving the Rmail file. @section Scrolling Within a Message When Rmail displays a message that does not fit on the screen, you -must scroll through it to read the rest. You could do this with -@kbd{C-v}, @kbd{M-v} and @kbd{M-<}, but in Rmail scrolling is so -frequent that it deserves to be easier. +must scroll through it to read the rest. You could do this with the +usual scrolling commands: @kbd{C-v}, @kbd{M-v} and @kbd{M-<} +(@pxref{Scrolling}), but in Rmail scrolling is so frequent that it +deserves to be easier. @table @kbd @item @key{SPC} @@ -124,9 +133,10 @@ and @kbd{M-v} (@code{scroll-down-command}) respectively. The command @kbd{.} (@code{rmail-beginning-of-message}) scrolls back to the beginning of the selected message. This is not quite the same as @kbd{M-<}: for one thing, it does not set the mark; for another, it resets the buffer -boundaries of the current message if you have changed them. Similarly, -the command @kbd{/} (@code{rmail-end-of-message}) scrolls forward to the end -of the selected message. +boundaries of the current message if you have changed them (e.g., by +editing, @pxref{Rmail Editing}). Similarly, the command @kbd{/} +(@code{rmail-end-of-message}) scrolls forward to the end of the +selected message. @c The comment about buffer boundaries is still true in mbox Rmail, if @c less likely to be relevant. @@ -168,11 +178,9 @@ message number @var{n} (@code{rmail-show-message}). Move to the last message (@code{rmail-last-message}). @item < Move to the first message (@code{rmail-first-message}). - @item M-s @var{regexp} @key{RET} Move to the next message containing a match for @var{regexp} (@code{rmail-search}). - @item - M-s @var{regexp} @key{RET} Move to the previous message containing a match for @var{regexp}. (This is @kbd{M-s} with a negative argument.) @@ -198,7 +206,8 @@ numeric argument to any of these commands serves as a repeat count. In Rmail, you can specify a numeric argument by typing just the -digits. You don't need to type @kbd{C-u} first. +digits. You don't need to type @kbd{C-u} first. You can also specify +a negative argument by typing just @kbd{-}. @kindex M-s @r{(Rmail)} @findex rmail-search @@ -228,7 +237,9 @@ the next message with the same subject as the current one. A prefix argument serves as a repeat count. With a negative argument, this command moves backward, acting like @kbd{C-c C-p} (@code{rmail-previous-same-subject}). When comparing subjects, these -commands ignore the prefixes typically added to the subjects of replies. +commands ignore the prefixes typically added to the subjects of +replies. These commands are useful for reading all of the messages +pertaining to the same subject, a.k.a.@: @dfn{thread}. @kindex j @r{(Rmail)} @kindex > @r{(Rmail)} @@ -331,7 +342,7 @@ adding or removing this attribute. @xref{Rmail Attributes}. When you receive mail locally, the operating system places incoming mail for you in a file that we call your @dfn{inbox}. When you start up Rmail, it runs a C program called @command{movemail} to copy the new -messages from your local inbox into your primary Rmail file, which +messages from your inbox into your primary Rmail file, which also contains other messages saved from previous Rmail sessions. It is in this file that you actually read the mail with Rmail. This operation is called @dfn{getting new mail}. You can get new mail at @@ -370,19 +381,12 @@ all into a separate Rmail file avoids the need for interlocking in all the rest of Rmail, since only Rmail operates on the Rmail file. @end enumerate -@c FIXME remove this in Emacs 25; won't be relevant any more. -@cindex Babyl files @cindex mbox files - Rmail was originally written to use the Babyl format as its internal -format. Since then, we have recognized that the usual inbox format -(@samp{mbox}) on Unix and GNU systems is adequate for the job, and so -since Emacs 23 Rmail uses that as its internal format. The Rmail file -is still separate from the inbox file, even though their format is the -same. -@c But this bit should stay in some form. @vindex rmail-mbox-format -(In fact, there are a few slightly different mbox formats. -The differences are not very important, but you can set the variable + Rmail uses the standard @samp{mbox} format, introduced by Unix and +GNU systems for inbox files, as its internal format of Rmail files. +(In fact, there are a few slightly different mbox formats. The +differences are not very important, but you can set the variable @code{rmail-mbox-format} to tell Rmail which form your system uses. See that variable's documentation for more details.) @@ -395,7 +399,8 @@ lose mail. If @code{rmail-preserve-inbox} is non-@code{nil}, then Rmail does not clear out the inbox file when it gets new mail. You may wish to set this, for example, on a portable computer you use to check your mail via POP while traveling, so that your mail will remain -on the server and you can save it later on your workstation. +on the server and you can save it later on your main desktop +workstation. In some cases, Rmail copies the new mail from the inbox file indirectly. First it runs the @command{movemail} program to move the mail @@ -427,14 +432,13 @@ into them with explicit Rmail commands (@pxref{Rmail Output}). @table @kbd @item i @var{file} @key{RET} Read @var{file} into Emacs and run Rmail on it (@code{rmail-input}). - +@ignore @item M-x set-rmail-inbox-list @key{RET} @var{files} @key{RET} Specify inbox file names for current Rmail file to get mail from. - +@end ignore @item g Merge new mail from current Rmail file's inboxes (@code{rmail-get-new-mail}). - @item C-u g @var{file} @key{RET} Merge new mail from inbox file @var{file}. @end table @@ -468,6 +472,8 @@ item. These variables also apply to choosing a file for output (@pxref{Rmail Output}). @c FIXME matches only checked when Rmail file first visited? +@c This is commented out because we want to advertise rmail-inbox-list +@c instead. @ignore @findex set-rmail-inbox-list Each Rmail file can contain a list of inbox file names; you can specify @@ -492,6 +498,7 @@ current Rmail file from its inboxes. If the Rmail file has no inboxes, @kbd{g} does nothing. The command @kbd{M-x rmail} also merges new mail into your primary Rmail file. +@cindex merge mail from file (Rmail) To merge mail from a file that is not the usual inbox, give the @kbd{g} key a numeric argument, as in @kbd{C-u g}. Then it reads a file name and merges mail from that file. The inbox file is not deleted or @@ -518,9 +525,9 @@ file name from the message @samp{Subject} header. @end table @kindex o @r{(Rmail)} -@findex rmail-output-as-seen -@kindex C-o @r{(Rmail)} @findex rmail-output +@kindex C-o @r{(Rmail)} +@findex rmail-output-as-seen The commands @kbd{o} and @kbd{C-o} copy the current message into a specified file, adding it at the end. The two commands differ mainly in how much to copy: @kbd{o} copies the full message headers, even if @@ -529,7 +536,7 @@ currently displayed and no more. @xref{Rmail Display}. In addition, @kbd{o} converts the message to Babyl format (used by Rmail in Emacs version 22 and before) if the file is in Babyl format; @kbd{C-o} cannot output to Babyl files at all. -@c FIXME remove BABYL mention in Emacs 25? +@c FIXME remove BABYL mention in some future version? If the output file is currently visited in an Emacs buffer, the output commands append the message to that buffer. It is up to you to @@ -542,8 +549,10 @@ file. You can save the body to a file (excluding the message header) with the @kbd{w} command (@code{rmail-output-body-to-file}). Often these messages contain the intended file name in the @samp{Subject} field, so the @kbd{w} command uses the @samp{Subject} field as the -default for the output file name. However, the file name is read using -the minibuffer, so you can specify a different name if you wish. +default for the output file name (after replacing some characters that +cannot be portably used in file names). However, the file name is +read using the minibuffer, so you can specify a different name if you +wish. You can also output a message to an Rmail file chosen with a menu. In the Classify menu, choose the Output Rmail File menu item; then @@ -564,7 +573,8 @@ appears in the mode line when such a message is current. If you like to keep just a single copy of every mail message, set the variable @code{rmail-delete-after-output} to @code{t}; then the @kbd{o}, @kbd{C-o} and @kbd{w} commands delete the original message -after copying it. (You can undelete it afterward if you wish.) +after copying it. (You can undelete it afterward if you wish, see +@ref{Rmail Deletion}.) @vindex rmail-output-file-alist The variable @code{rmail-output-file-alist} lets you specify @@ -582,7 +592,7 @@ default file name for output is @var{name-exp}. If multiple elements match the message, the first matching element decides the default file name. The subexpression @var{name-exp} may be a string constant giving the file name to use, or more generally it may be any Lisp expression -that returns a file name as a string. @code{rmail-output-file-alist} +that yields a file name as a string. @code{rmail-output-file-alist} applies to both @kbd{o} and @kbd{C-o}. @vindex rmail-automatic-folder-directives @@ -641,8 +651,7 @@ Make a summary of all messages containing any of the labels @var{labels} The @kbd{a} (@code{rmail-add-label}) and @kbd{k} (@code{rmail-kill-label}) commands allow you to assign or remove any label on the current message. If the @var{label} argument is empty, it -means to assign or remove the same label most recently assigned or -removed. +means to assign or remove the label most recently assigned or removed. Once you have given messages labels to classify them as you wish, there are three ways to use the labels: in moving, in summaries, and in sorting. @@ -717,9 +726,10 @@ standard meaning. Rmail has several commands to send outgoing mail. @xref{Sending Mail}, for information on using Message mode, including certain features meant to work with Rmail. What this section documents are -the special commands of Rmail for entering the mail buffer. Note that -the usual keys for sending mail---@kbd{C-x m}, @kbd{C-x 4 m}, and -@kbd{C-x 5 m}---also work normally in Rmail mode. +the special commands of Rmail for entering the mail buffer used to +compose the outgoing message. Note that the usual keys for sending +mail---@kbd{C-x m}, @kbd{C-x 4 m}, and @kbd{C-x 5 m}---also work +normally in Rmail mode. @table @kbd @item m @@ -758,9 +768,9 @@ excluded from the @samp{CC} field. They are also excluded from the variable is @code{nil}, then the first time you compose a reply it is initialized to a default value that matches your own address. - To omit the @samp{CC} field completely for a particular reply, enter + To reply only to the sender of the original message, enter the reply command with a numeric argument: @kbd{C-u r} or @kbd{1 r}. -This means to reply only to the sender of the original message. +This omits the @samp{CC} field completely for a particular reply. Once the mail composition buffer has been initialized, editing and sending the mail goes as usual (@pxref{Sending Mail}). You can edit @@ -930,7 +940,7 @@ commas. makes a partial summary mentioning only the messages that have one or more recipients matching the regular expression @var{rcpts}. This is matched against the @samp{To}, @samp{From}, and @samp{CC} headers (supply a prefix -argument to exclude this header). +argument to exclude the @samp{CC} header). @kindex C-M-t @r{(Rmail)} @findex rmail-summary-by-topic @@ -976,6 +986,7 @@ different lines. It doesn't matter what Emacs command you use to move point; whichever line point is on at the end of the command, that message is selected in the Rmail buffer. +@vindex rmail-summary-scroll-between-messages Almost all Rmail commands work in the summary buffer as well as in the Rmail buffer. Thus, @kbd{d} in the summary buffer deletes the current message, @kbd{u} undeletes, and @kbd{x} expunges. (However, @@ -984,8 +995,12 @@ relevant direction, the delete commands go to the first or last message, rather than staying on the current message.) @kbd{o} and @kbd{C-o} output the current message to a FILE; @kbd{r} starts a reply to it; etc. You can scroll the current message while remaining in the -summary buffer using @key{SPC} and @key{DEL}. -@c rmail-summary-scroll-between-messages not mentioned. +summary buffer using @key{SPC} and @key{DEL}. However, in the summary +buffer scrolling past the end or the beginning of a message with +@key{SPC} or @key{DEL} goes, respectively, to the next or previous +undeleted message. Customize the +@code{rmail-summary-scroll-between-messages} option to nil to disable +scrolling to next/previous messages. @findex rmail-summary-undelete-many @kbd{M-u} (@code{rmail-summary-undelete-many}) undeletes all deleted @@ -1128,8 +1143,8 @@ biggest to smallest, or in reverse alphabetical order. The same keys in the summary buffer run similar functions; for example, @kbd{C-c C-s C-l} runs @code{rmail-summary-sort-by-lines}. -Note that these commands always sort the whole Rmail buffer, even if the -summary is only showing a subset of messages. +These commands always sort the whole Rmail buffer, even if the summary +is only showing a subset of messages. Note that you cannot undo a sort, so you may wish to save the Rmail buffer before sorting it. @@ -1210,14 +1225,15 @@ Toggle between @acronym{MIME} display and raw message @end table Each plain-text @acronym{MIME} part is initially displayed -immediately after its tagline, as part of the Rmail buffer, while -@acronym{MIME} parts of other types are represented only by their -taglines, with their actual contents hidden. In either case, you can -toggle a @acronym{MIME} part between its displayed and hidden -states by typing @key{RET} anywhere in the part---or anywhere in its -tagline (except for buttons for other actions, if there are any). Type -@key{RET} (or click with the mouse) to activate a tagline button, and -@key{TAB} to cycle point between tagline buttons. +immediately after its tagline, as part of the Rmail buffer (unless the +message has an @acronym{HTML} part, see below), while @acronym{MIME} +parts of other types are represented only by their taglines, with +their actual contents hidden. In either case, you can toggle a +@acronym{MIME} part between its displayed and hidden states by typing +@key{RET} anywhere in the part---or anywhere in its tagline (except +for buttons for other actions, if there are any). Type @key{RET} (or +click with the mouse) to activate a tagline button, and @key{TAB} to +cycle point between tagline buttons. The @kbd{v} (@code{rmail-mime}) command toggles between the default @acronym{MIME} display described above, and a raw display showing @@ -1322,17 +1338,20 @@ Edit the current message as ordinary text. Rmail mode into Rmail Edit mode, another major mode which is nearly the same as Text mode. The mode line indicates this change. +@findex rmail-cease-edit +@findex rmail-abort-edit In Rmail Edit mode, letters insert themselves as usual and the Rmail commands are not available. You can edit the message body and header fields. When you are finished editing the message, type @kbd{C-c C-c} -to switch back to Rmail mode. Alternatively, you can return to Rmail -mode but cancel any editing that you have done, by typing @kbd{C-c C-]}. +(@code{rmail-cease-edit}) to switch back to Rmail mode. +Alternatively, you can return to Rmail mode but cancel any editing +that you have done, by typing @kbd{C-c C-]} (@code{rmail-abort-edit}). @vindex rmail-edit-mode-hook Entering Rmail Edit mode runs the hook @code{text-mode-hook}; then it runs the hook @code{rmail-edit-mode-hook} (@pxref{Hooks}). Returning to ordinary Rmail mode adds the attribute @samp{edited} to -the message, if you have made any changes in it. +the message, if you have made any changes in it (@pxref{Rmail Attributes}). @node Rmail Digest @section Digest Messages @@ -1384,9 +1403,9 @@ version. There are two versions of the @command{movemail} program: the GNU Mailutils version (@pxref{movemail,,,mailutils,GNU mailutils}), and an Emacs-specific version that is built and installed unless Emacs was configured @option{--with-mailutils} in effect. -The two @command{mailtool} versions support the same +The two @command{movemail} versions support the same command line syntax and the same basic subset of options. However, the -Mailutils version offers additional features. +Mailutils version offers additional features and is more secure. The Emacs version of @command{movemail} can retrieve mail from the usual Unix mailbox formats. @strong{Warning}: Although it can also use the POP3 @@ -1451,8 +1470,8 @@ denotes the name of @code{maildir} mailbox, e.g., @code{maildir:///mail/inbox}. @item file -Any local mailbox format. Its actual format is detected automatically -by @command{movemail}. +Any local file in mailbox format. Its actual format is detected +automatically by @command{movemail}. @item pop @itemx pops @@ -1495,19 +1514,19 @@ listed in @code{rmail-movemail-search-path}, then in @code{exec-path} @section Retrieving Mail from Remote Mailboxes @pindex movemail - Some sites use a method called POP for accessing users' inbox data + Some sites use a method called POP3 for accessing users' inbox data instead of storing the data in inbox files. The Mailutils -@command{movemail} by default supports POP with TLS encryption. -@strong{Warning:} Although the @command{Emacs movemail} supports POP, +@command{movemail} by default supports POP3 with TLS encryption. +@strong{Warning:} Although the @command{Emacs movemail} supports POP3, its use for this is not recommended since it does not support encrypted connections---the Mailutils version does. Both versions of @command{movemail} work only with POP3, not with -older versions of POP. +older versions of POP3. @cindex @env{MAILHOST} environment variable -@cindex POP mailboxes +@cindex POP3 mailboxes You can specify -a POP inbox by using a POP @dfn{URL} (@pxref{Movemail}). A POP +a POP3 inbox by using a POP3 @dfn{URL} (@pxref{Movemail}). A POP3 @acronym{URL} is of the form @samp{pop://@var{username}@@@var{hostname}:@var{port}}, where @var{hostname} and @var{port} are the host name (or IP address) @@ -1522,11 +1541,11 @@ If using Mailutils @command{movemail}, you may wish to use @samp{pops} in place of @samp{pop}. For backward compatibility, Rmail also supports an alternative way of -specifying remote POP mailboxes. Specifying an inbox name in the form +specifying remote POP3 mailboxes. Specifying an inbox name in the form @samp{po:@var{username}:@var{hostname}:@var{port}} is equivalent to @samp{pop://@var{username}@@@var{hostname}:@var{port}}. If you omit the @var{:hostname} part, the @env{MAILHOST} environment variable specifies -the machine on which to look for the POP server. +the machine on which to look for the POP3 server. @cindex IMAP mailboxes Another method for accessing remote mailboxes is IMAP@. This method is @@ -1561,15 +1580,15 @@ set the variable @code{rmail-movemail-flags} a list of the flags you wish to use. Do not use this variable to pass the @samp{-p} flag to preserve your inbox contents; use @code{rmail-preserve-inbox} instead. -@cindex Kerberos POP authentication +@cindex Kerberos POP3 authentication The @command{movemail} program installed at your site may support Kerberos authentication. If it is supported, it is used by default -whenever you attempt to retrieve POP mail when +whenever you attempt to retrieve POP3 mail when @code{rmail-remote-password} and @code{rmail-remote-password-required} are unset. -@cindex reverse order in POP inboxes - Some POP servers store messages in reverse order. If your server does +@cindex reverse order in POP3 inboxes + Some POP3 servers store messages in reverse order. If your server does this, and you would rather read your mail in the order in which it was received, you can tell @command{movemail} to reverse the order of downloaded messages by adding the @samp{-r} flag to From 067c8c4f5b0fdb8a34691c977501c275bc765cca Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 19 Mar 2018 11:41:24 -0700 Subject: [PATCH 08/18] Fix recently-added POP doc glitch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * doc/emacs/rmail.texi (Remote Mailboxes): POP3 → POP, when talking about POP in general. --- doc/emacs/rmail.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/emacs/rmail.texi b/doc/emacs/rmail.texi index a51ded1f1b6..658b9645370 100644 --- a/doc/emacs/rmail.texi +++ b/doc/emacs/rmail.texi @@ -1521,7 +1521,7 @@ instead of storing the data in inbox files. The Mailutils its use for this is not recommended since it does not support encrypted connections---the Mailutils version does. Both versions of @command{movemail} work only with POP3, not with -older versions of POP3. +older versions of POP. @cindex @env{MAILHOST} environment variable @cindex POP3 mailboxes From 6b2210cc29283fe14d86ecf40a671e632efa5ca0 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 19 Mar 2018 11:41:40 -0700 Subject: [PATCH 09/18] ; Spelling fix --- lisp/eshell/em-cmpl.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/eshell/em-cmpl.el b/lisp/eshell/em-cmpl.el index b56cf168a2b..f4b7872f8c9 100644 --- a/lisp/eshell/em-cmpl.el +++ b/lisp/eshell/em-cmpl.el @@ -167,7 +167,7 @@ to writing a completion function." (eshell-cmpl--custom-variable-docstring 'pcomplete-suffix-list) :type (get 'pcomplete-suffix-list 'custom-type) :group 'pcomplete) -;; Only labelled obsolete in 26.1, but all it does it set +;; Only labeled obsolete in 26.1, but all it does it set ;; pcomplete-suffix-list, which is itself obsolete since 24.1. (make-obsolete-variable 'eshell-cmpl-suffix-list nil "24.1") From ba5a372540673984c64b6b3f3e934bf1fcee229a Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 19 Mar 2018 11:44:07 -0700 Subject: [PATCH 10/18] * doc/emacs/rmail.texi: Fix broken link. --- doc/emacs/rmail.texi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/emacs/rmail.texi b/doc/emacs/rmail.texi index 658b9645370..0a8bf7cc267 100644 --- a/doc/emacs/rmail.texi +++ b/doc/emacs/rmail.texi @@ -62,7 +62,7 @@ The message that is shown is called the @dfn{current message}. Rmail mode's special commands can do such things as delete the current message, copy it into another file, send a reply, or move to another message. You can also create multiple Rmail files (@pxref{Files}) and -use Rmail to move messages between them (@pxref{Output}). +use Rmail to move messages between them (@pxref{Rmail Output}). @cindex message number (Rmail) Within the Rmail file, messages are normally arranged sequentially in From 23072e468f612b2c49a7603e66011cc1664afbde Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 19 Mar 2018 21:53:52 +0200 Subject: [PATCH 11/18] Yet more proofreading of the Emacs manual * doc/emacs/building.texi (Compilation, Grep Searching) (Debuggers, GUD Customization, Source Buffers) (Breakpoints Buffer, Threads Buffer): Minor fixes and updates. Suggested by Michael Albinus in emacs-manual-bugs@gnu.org. --- doc/emacs/building.texi | 45 ++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi index 7be96fa85c0..de3ffd571bc 100644 --- a/doc/emacs/building.texi +++ b/doc/emacs/building.texi @@ -45,9 +45,11 @@ messages and show you where the errors occurred. @item M-x compile Run a compiler asynchronously under Emacs, with error messages going to the @file{*compilation*} buffer. + @item M-x recompile Invoke a compiler with the same command as in the last invocation of @kbd{M-x compile}. + @item M-x kill-compilation Kill the running compilation subprocess. @end table @@ -115,12 +117,12 @@ was started. @vindex compilation-always-kill Starting a new compilation also kills any compilation already running in @file{*compilation*}, as the buffer can only handle one -compilation at any time. However, @kbd{M-x compile} asks for -confirmation before actually killing a compilation that is running; to -always automatically kill the compilation without asking, change the -variable @code{compilation-always-kill} to @code{t}. You can also -kill a compilation process with the command @kbd{M-x -kill-compilation}. +compilation at any time. However, @kbd{M-x compile} and @kbd{M-x +recompile} ask for confirmation before actually killing a compilation +that is running; to always automatically kill the compilation without +asking, change the variable @code{compilation-always-kill} to +@code{t}. You can also kill a compilation process with the command +@kbd{M-x kill-compilation}. To run two compilations at once, start the first one, then rename the @file{*compilation*} buffer (perhaps using @code{rename-uniquely}; @@ -401,7 +403,7 @@ The possible values are either @code{nil} (don't save), @code{ask} (and is called with the file name as the parameter and should return non-@code{nil} if the buffer is to be saved). Any other non-@code{nil} value means that all buffers should be saved without -asking. +asking. The default is @code{ask}. @findex grep-find @findex find-grep @@ -478,8 +480,8 @@ see the Flymake Info manual, which is distributed with Emacs. The GUD (Grand Unified Debugger) library provides an Emacs interface to a wide variety of symbolic debuggers. It can run the GNU Debugger -(GDB), as well as DBX, SDB, XDB, Perl's debugging mode, the Python -debugger PDB, and the Java Debugger JDB. +(GDB), as well as DBX, SDB, XDB, Guile REPL debug commands, Perl's +debugging mode, the Python debugger PDB, and the Java Debugger JDB. Emacs provides a special interface to GDB, which uses extra Emacs windows to display the state of the debugged program. @xref{GDB @@ -791,12 +793,14 @@ Instead, type @kbd{C-q @key{TAB}} to enter a tab. @vindex perldb-mode-hook @vindex pdb-mode-hook @vindex jdb-mode-hook +@vindex guiler-mode-hook On startup, GUD runs one of the following hooks: @code{gdb-mode-hook}, if you are using GDB; @code{dbx-mode-hook}, if you are using DBX; @code{sdb-mode-hook}, if you are using SDB; -@code{xdb-mode-hook}, if you are using XDB; @code{perldb-mode-hook}, -for Perl debugging mode; @code{pdb-mode-hook}, for PDB; -@code{jdb-mode-hook}, for JDB@. @xref{Hooks}. +@code{xdb-mode-hook}, if you are using XDB; @code{guiler-mode-hook} +for Guile REPL debugging; @code{perldb-mode-hook}, for Perl debugging +mode; @code{pdb-mode-hook}, for PDB; @code{jdb-mode-hook}, for JDB@. +@xref{Hooks}. The @code{gud-def} Lisp macro (@pxref{Defining Macros,,, elisp, the Emacs Lisp Reference Manual}) provides a convenient way to define an @@ -952,16 +956,18 @@ still in the right places. @table @asis @item @kbd{mouse-1} (in fringe) -Set or clear a breakpoint on that line. +Set or clear a breakpoint on that line +(@code{gdb-mouse-set-clear-breakpoint}). @item @kbd{C-mouse-1} (in fringe) -Enable or disable a breakpoint on that line. +Enable or disable a breakpoint on that line +(@code{gdb-mouse-toggle-breakpoint-margin}). @item @kbd{mouse-3} (in fringe) -Continue execution to that line. +Continue execution to that line (@code{gdb-mouse-until}). @item @kbd{C-mouse-3} (in fringe) -Jump to that line. +Jump to that line (@code{gdb-mouse-jump}). @end table On a graphical display, you can click @kbd{mouse-1} in the fringe of @@ -1018,7 +1024,8 @@ Visit the source line for the current breakpoint @item mouse-2 @kindex mouse-2 @r{(GDB Breakpoints buffer)} -Visit the source line for the breakpoint you click on. +Visit the source line for the breakpoint you click on +(@code{gdb-goto-breakpoint}). @end table @vindex gdb-show-threads-by-default @@ -1039,8 +1046,8 @@ point there and press @key{RET} (@code{gdb-select-thread}), or click on it with @kbd{mouse-2}. This also displays the associated source buffer, and updates the contents of the other GDB buffers. - You can customize variables under @code{gdb-buffers} group to select -fields included in GDB Threads buffer. + You can customize variables in the @code{gdb-buffers} group to +select fields included in GDB Threads buffer. @table @code @item gdb-thread-buffer-verbose-names From aa40014ba373ac633b118dc63647f323ef0cedb5 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 19 Mar 2018 22:01:55 +0200 Subject: [PATCH 12/18] * doc/emacs/building.texi (Starting GUD): Mention 'guiler'. --- doc/emacs/building.texi | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi index de3ffd571bc..4c716154e64 100644 --- a/doc/emacs/building.texi +++ b/doc/emacs/building.texi @@ -534,6 +534,10 @@ Run the Java debugger. @findex pdb Run the Python debugger. +@item M-x guiler +@findex guiler +Run Guile REPL for debugging Guile Scheme programs. + @item M-x dbx @findex dbx Run the DBX debugger. From 05781b2e886388076e8428c23383422b0dde7b61 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 19 Mar 2018 18:53:21 -0700 Subject: [PATCH 13/18] ; Spelling fix --- ChangeLog.3 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog.3 b/ChangeLog.3 index ea4d71c63ae..2dbe6c4bdbd 100644 --- a/ChangeLog.3 +++ b/ChangeLog.3 @@ -2769,7 +2769,7 @@ This fixes bug #28623. * lisp/progmodes/cc-engine.el (c-looking-at-or-maybe-in-bracelist): When - testing for being enclosed in parens, recognise also a brace directly + testing for being enclosed in parens, recognize also a brace directly following a comma, as well as a brace being the first thing inside the paren. Enhance the return value, by indicating when we're directly inside an open paren. From 663aafe1fff63b5b6f5cefe32117d5ddc2048756 Mon Sep 17 00:00:00 2001 From: Alex Branham Date: Fri, 19 Jan 2018 12:54:00 -0600 Subject: [PATCH 14/18] * lisp/textmodes/bibtex.el (bibtex-mark-entry): activate mark --- lisp/textmodes/bibtex.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el index a30e1468928..a3f98043581 100644 --- a/lisp/textmodes/bibtex.el +++ b/lisp/textmodes/bibtex.el @@ -3871,7 +3871,7 @@ Otherwise display the beginning of entry." (defun bibtex-mark-entry () "Put mark at beginning, point at end of current BibTeX entry." (interactive) - (push-mark (bibtex-beginning-of-entry)) + (push-mark (bibtex-beginning-of-entry) :activate t) (bibtex-end-of-entry)) (defun bibtex-count-entries (&optional count-string-entries) From ec08c62f036c3c86f1e00d54a47c405299a19993 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Tue, 20 Mar 2018 11:34:14 +0200 Subject: [PATCH 15/18] Minor improvements in building.texi * doc/emacs/building.texi (Compilation Shell): Mention that this section is for local compilation buffers. (Compilation, Compilation Mode): Mention that 'g' is bound to 'recompile' in compilation buffers. (Grep Searching): Add a cross-reference to "Compilation Mode". Suggested by Michael Albinus in emacs-manual-bugs@gnu.org. --- doc/emacs/building.texi | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi index 4c716154e64..7e250bf4250 100644 --- a/doc/emacs/building.texi +++ b/doc/emacs/building.texi @@ -47,6 +47,7 @@ Run a compiler asynchronously under Emacs, with error messages going to the @file{*compilation*} buffer. @item M-x recompile +@itemx g@r{ (Compilation mode)} Invoke a compiler with the same command as in the last invocation of @kbd{M-x compile}. @@ -111,7 +112,8 @@ recompile}. This reuses the compilation command from the last invocation of @kbd{M-x compile}. It also reuses the @file{*compilation*} buffer and starts the compilation in its default directory, which is the directory in which the previous compilation -was started. +was started. In @file{*compilation*} buffers this command is bound to +@kbd{g}. @findex kill-compilation @vindex compilation-always-kill @@ -185,6 +187,9 @@ different file (@code{compilation-previous-file}). @item C-c C-f Toggle Next Error Follow minor mode, which makes cursor motion in the compilation buffer produce automatic source display. +@item g +Re-run the last command whose output is shown in the +@file{*compilation*} buffer. @end table @kindex M-g M-n @@ -280,6 +285,12 @@ Names}). @node Compilation Shell @section Subshells for Compilation + This section includes various techniques and advice for using a +shell and its features in compilation buffers. This material is +specific to local compilations, and will most probably not work in (or +be irrelevant to) compilation buffers whose default directory is on +remote hosts. + The @kbd{M-x compile} command uses a shell to run the compilation command, but specifies the option for a noninteractive shell. This means, in particular, that the shell should start with no prompt. If @@ -385,6 +396,8 @@ grep -nH -e foo *.el | grep bar | grep toto The output from @command{grep} goes in the @file{*grep*} buffer. You can find the corresponding lines in the original files using @w{@kbd{C-x `}}, @key{RET}, and so forth, just like compilation errors. +@xref{Compilation Mode}, for detailed description of commands and key +bindings available in the @file{*grep*} buffer. Some grep programs accept a @samp{--color} option to output special markers around matches for the purpose of highlighting. You can make From 2fb52abd9e74f722c08c5e59f63dee8821789e1a Mon Sep 17 00:00:00 2001 From: Nick Helm Date: Sun, 18 Mar 2018 21:05:44 +1300 Subject: [PATCH 16/18] Improve documentation of 'with-help-window' * doc/lispref/help.texi (Help Functions): Change variable name to 'buffer-or-name'. * lisp/help.el (with-help-window): Change variable name to 'buffer-or-name' and rewrite the doc string, adding reference to 'help-window-setup'. (Bug#30792) --- doc/lispref/help.texi | 19 ++++++++++--------- lisp/help.el | 19 +++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi index 33cc2f0d55b..6dd55d0b256 100644 --- a/doc/lispref/help.texi +++ b/doc/lispref/help.texi @@ -744,16 +744,17 @@ This function returns the name of the help buffer, which is normally @end defun @vindex help-window-select -@defmac with-help-window buffer-name body@dots{} +@defmac with-help-window buffer-or-name body@dots{} This macro evaluates @var{body} like @code{with-output-to-temp-buffer} -(@pxref{Temporary Displays}), inserting any output produced by its forms -into a buffer named @var{buffer-name}. (Usually, @var{buffer-name} -should be the value returned by the function @code{help-buffer}.) It -also puts the specified buffer into Help mode and displays a message -telling the user how to quit and scroll the help window. It selects the -help window if the current value of the user option -@code{help-window-select} has been set accordingly. It returns the last -value in @var{body}. +(@pxref{Temporary Displays}), inserting any output produced by its +forms into a buffer specified by @var{buffer-or-name}, which can be a +buffer or the name of a buffer. (Frequently, @var{buffer-or-name} is +the value returned by the function @code{help-buffer}.) This macro +puts the specified buffer into Help mode and displays a message +telling the user how to quit and scroll the help window. It selects +the help window if the current value of the user option +@code{help-window-select} has been set accordingly. It returns the +last value in @var{body}. @end defmac @defun help-setup-xref item interactive-p diff --git a/lisp/help.el b/lisp/help.el index 014af5141e3..958b06c0958 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -1370,15 +1370,14 @@ Return VALUE." ;; (4) A marker (`help-window-point-marker') to move point in the help ;; window to an arbitrary buffer position. -(defmacro with-help-window (buffer-name &rest body) - "Display buffer named BUFFER-NAME in a help window. -Evaluate the forms in BODY with standard output bound to a buffer -called BUFFER-NAME (creating it if it does not exist), put that -buffer in `help-mode', display the buffer in a window (see -`with-temp-buffer-window' for details) and issue a message how to -deal with that \"help\" window when it's no more needed. Select -the help window if the current value of the user option -`help-window-select' says so. Return last value in BODY." +(defmacro with-help-window (buffer-or-name &rest body) + "Evaluate BODY, send output to BUFFER-OR-NAME and show in a help window. +This construct is like `with-temp-buffer-window' but unlike that +puts the buffer specified by BUFFER-OR-NAME in `help-mode' and +displays a message about how to delete the help window when it's no +longer needed. The help window will be selected if +`help-window-select' is non-nil. See `help-window-setup' for +more options." (declare (indent 1) (debug t)) `(progn ;; Make `help-window-point-marker' point nowhere. The only place @@ -1390,7 +1389,7 @@ the help window if the current value of the user option (cons 'help-mode-finish temp-buffer-window-show-hook))) (setq help-window-old-frame (selected-frame)) (with-temp-buffer-window - ,buffer-name nil 'help-window-setup (progn ,@body))))) + ,buffer-or-name nil 'help-window-setup (progn ,@body))))) ;; Called from C, on encountering `help-char' when reading a char. ;; Don't print to *Help*; that would clobber Help history. From 4328d5f744e032eb4fa67b30bc0ef539f95755c5 Mon Sep 17 00:00:00 2001 From: Robert Pluim Date: Mon, 12 Mar 2018 17:43:23 +0100 Subject: [PATCH 17/18] Correct Info link markup * lisp/gnus/gnus-agent.el (gnus-agent-auto-agentize-methods): Correct markup for Info link. * src/minibuf.c (Fcompleting_read): Likewise. --- lisp/gnus/gnus-agent.el | 2 +- src/minibuf.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el index b2de1196439..c69d64546c5 100644 --- a/lisp/gnus/gnus-agent.el +++ b/lisp/gnus/gnus-agent.el @@ -172,7 +172,7 @@ When found, offer to remove them." (defcustom gnus-agent-auto-agentize-methods nil "Initially, all servers from these methods are agentized. The user may remove or add servers using the Server buffer. -See Info nodes `(gnus)Server Buffer', `(gnus)Agent Variables'." +See Info node `(gnus)Server Buffer' and Info node `(gnus)Agent Variables'." :version "22.1" :type '(repeat symbol) :group 'gnus-agent) diff --git a/src/minibuf.c b/src/minibuf.c index cbb0898a9ab..c57182354f0 100644 --- a/src/minibuf.c +++ b/src/minibuf.c @@ -1639,8 +1639,8 @@ COLLECTION can also be a function to do the completion itself. PREDICATE limits completion to a subset of COLLECTION. See `try-completion', `all-completions', `test-completion', and `completion-boundaries', for more details on completion, -COLLECTION, and PREDICATE. See also Info nodes `(elisp)Basic Completion' -for the details about completion, and `(elisp)Programmed Completion' for +COLLECTION, and PREDICATE. See also Info node `(elisp)Basic Completion' +for the details about completion, and Info node `(elisp)Programmed Completion' for expectations from COLLECTION when it's a function. REQUIRE-MATCH can take the following values: From 23527013c79607ba19536ccce85725a91b0033a5 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 20 Mar 2018 08:57:40 -0700 Subject: [PATCH 18/18] ; Rewrap doc string --- src/minibuf.c | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/minibuf.c b/src/minibuf.c index c57182354f0..691fad07b79 100644 --- a/src/minibuf.c +++ b/src/minibuf.c @@ -1640,12 +1640,12 @@ PREDICATE limits completion to a subset of COLLECTION. See `try-completion', `all-completions', `test-completion', and `completion-boundaries', for more details on completion, COLLECTION, and PREDICATE. See also Info node `(elisp)Basic Completion' -for the details about completion, and Info node `(elisp)Programmed Completion' for -expectations from COLLECTION when it's a function. +for the details about completion, and Info node `(elisp)Programmed +Completion' for expectations from COLLECTION when it's a function. REQUIRE-MATCH can take the following values: -- t means that the user is not allowed to exit unless - the input is (or completes to) an element of COLLECTION or is null. +- t means that the user is not allowed to exit unless the input is (or + completes to) an element of COLLECTION or is null. - nil means that the user can exit with any input. - `confirm' means that the user can exit with any input, but she needs to confirm her choice if the input is not an element of COLLECTION. @@ -1656,19 +1656,19 @@ REQUIRE-MATCH can take the following values: - anything else behaves like t except that typing RET does not exit if it does non-null completion. -If the input is null, `completing-read' returns DEF, or the first element -of the list of default values, or an empty string if DEF is nil, -regardless of the value of REQUIRE-MATCH. +If the input is null, `completing-read' returns DEF, or the first +element of the list of default values, or an empty string if DEF is +nil, regardless of the value of REQUIRE-MATCH. If INITIAL-INPUT is non-nil, insert it in the minibuffer initially, - with point positioned at the end. - If it is (STRING . POSITION), the initial input is STRING, but point - is placed at _zero-indexed_ position POSITION in STRING. (*Note* - that this is different from `read-from-minibuffer' and related - functions, which use one-indexing for POSITION.) This feature is - deprecated--it is best to pass nil for INITIAL-INPUT and supply the - default value DEF instead. The user can yank the default value into - the minibuffer easily using \\\\[next-history-element]. + with point positioned at the end. If it is (STRING . POSITION), the + initial input is STRING, but point is placed at _zero-indexed_ + position POSITION in STRING. (*Note* that this is different from + `read-from-minibuffer' and related functions, which use one-indexing + for POSITION.) This feature is deprecated--it is best to pass nil + for INITIAL-INPUT and supply the default value DEF instead. The + user can yank the default value into the minibuffer easily using + \\\\[next-history-element]. HIST, if non-nil, specifies a history list and optionally the initial position in the list. It can be a symbol, which is the history list @@ -1676,16 +1676,16 @@ HIST, if non-nil, specifies a history list and optionally the initial that case, HISTVAR is the history list variable to use, and HISTPOS is the initial position (the position in the list used by the minibuffer history commands). For consistency, you should also - specify that element of the history as the value of - INITIAL-INPUT. (This is the only case in which you should use - INITIAL-INPUT instead of DEF.) Positions are counted starting from - 1 at the beginning of the list. The variable `history-length' - controls the maximum length of a history list. + specify that element of the history as the value of INITIAL-INPUT. + (This is the only case in which you should use INITIAL-INPUT instead + of DEF.) Positions are counted starting from 1 at the beginning of + the list. The variable `history-length' controls the maximum length + of a history list. DEF, if non-nil, is the default value or the list of default values. -If INHERIT-INPUT-METHOD is non-nil, the minibuffer inherits - the current input method and the setting of `enable-multibyte-characters'. +If INHERIT-INPUT-METHOD is non-nil, the minibuffer inherits the + current input method and the setting of `enable-multibyte-characters'. Completion ignores case if the ambient value of `completion-ignore-case' is non-nil.