commit 3a18c82b8e08d12cf3f5817bd830950416e51d2b (HEAD, refs/remotes/origin/master) Author: Robert Pluim Date: Mon Sep 16 09:58:09 2019 +0200 Add bindings for ligature oe to iso-transl-char-map * lisp/international/iso-transl.el (iso-transl-char-map): Add bindings for small and capital ligature oe. (Bug#23420) diff --git a/lisp/international/iso-transl.el b/lisp/international/iso-transl.el index b573e1e47c..3530e6f253 100644 --- a/lisp/international/iso-transl.el +++ b/lisp/international/iso-transl.el @@ -177,6 +177,8 @@ ("c" . [?¢]) ("*o" . [?°]) ("o" . [?°]) + ("Oe" . [?œ]) + ("OE" . [?Œ]) ("*u" . [?µ]) ("u" . [?µ]) ("*m" . [?µ]) commit be828883475eddff0bb8cf6825f0d3383391c122 Author: Paul Eggert Date: Sun Sep 15 22:15:04 2019 -0700 Fix some file-name-case-insensitive glitches * src/fileio.c (file_name_directory): New static function, broken out of Ffile_name_directory. (file_name_case_insensitive_err, Ffile_writable_p, Fdo_auto_save): Use it. (file_name_case_insensitive_err): Rename from file_name_case_insensitive_p. Accept an unencoded Lisp_Object rather than an encoded char *, so that platforms other than Cygwin and macOS need not encode the file name. Return an int -1, 0, errno rather than a bool (setting errno if false), so that the caller can distinguish an error from false. All callers changed. (Ffile_name_case_insensitive_p): Don’t issue system calls on platforms other than Cygwin and macOS. Fix bug that broke the attempt to move up the filesystem tree (it moved up only one level). diff --git a/src/fileio.c b/src/fileio.c index 34afbc23da..c129f19872 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -134,6 +134,7 @@ static dev_t timestamp_file_system; is added here. */ static Lisp_Object Vwrite_region_annotation_buffers; +static Lisp_Object file_name_directory (Lisp_Object); static bool a_write (int, Lisp_Object, ptrdiff_t, ptrdiff_t, Lisp_Object *, struct coding_system *); static bool e_write (int, Lisp_Object, ptrdiff_t, ptrdiff_t, @@ -356,6 +357,15 @@ Given a Unix syntax file name, returns a string ending in slash. */) return STRINGP (handled_name) ? handled_name : Qnil; } + return file_name_directory (filename); +} + +/* Return the directory component of FILENAME, or nil if FILENAME does + not contain a directory component. */ + +static Lisp_Object +file_name_directory (Lisp_Object filename) +{ char *beg = SSDATA (filename); char const *p = beg + SBYTES (filename); @@ -2369,41 +2379,48 @@ internal_delete_file (Lisp_Object filename) return NILP (tem); } -/* Filesystems are case-sensitive on all supported systems except - MS-Windows, MS-DOS, Cygwin, and Mac OS X. They are always - case-insensitive on the first two, but they may or may not be - case-insensitive on Cygwin and OS X. The following function - attempts to provide a runtime test on those two systems. If the - test is not conclusive, we assume case-insensitivity on Cygwin and - case-sensitivity on Mac OS X. - - FIXME: Mounted filesystems on Posix hosts, like Samba shares or - NFS-mounted Windows volumes, might be case-insensitive. Can we - detect this? */ +/* Return -1 if FILE is a case-insensitive file name, 0 if not, + and a positive errno value if the result cannot be determined. */ -static bool -file_name_case_insensitive_p (const char *filename) +static int +file_name_case_insensitive_err (Lisp_Object file) { - /* Use pathconf with _PC_CASE_INSENSITIVE or _PC_CASE_SENSITIVE if - those flags are available. As of this writing (2017-05-20), + /* Filesystems are case-sensitive on all supported systems except + MS-Windows, MS-DOS, Cygwin, and macOS. They are always + case-insensitive on the first two, but they may or may not be + case-insensitive on Cygwin and macOS so do a runtime test on + those two systems. If the test is not conclusive, assume + case-insensitivity on Cygwin and case-sensitivity on macOS. + + FIXME: Mounted filesystems on Posix hosts, like Samba shares or + NFS-mounted Windows volumes, might be case-insensitive. Can we + detect this? + + Use pathconf with _PC_CASE_INSENSITIVE or _PC_CASE_SENSITIVE if + those flags are available. As of this writing (2019-09-15), Cygwin is the only platform known to support the former (starting with Cygwin-2.6.1), and macOS is the only platform known to support the latter. */ -#ifdef _PC_CASE_INSENSITIVE +#if defined _PC_CASE_INSENSITIVE || defined _PC_CASE_SENSITIVE + char *filename = SSDATA (ENCODE_FILE (file)); +# ifdef _PC_CASE_INSENSITIVE long int res = pathconf (filename, _PC_CASE_INSENSITIVE); if (res >= 0) - return res > 0; -#elif defined _PC_CASE_SENSITIVE + return - (res > 0); +# else long int res = pathconf (filename, _PC_CASE_SENSITIVE); if (res >= 0) - return res == 0; + return - (res == 0); +# endif + if (errno != EINVAL) + return errno; #endif #if defined CYGWIN || defined DOS_NT - return true; + return -1; #else - return false; + return 0; #endif } @@ -2426,21 +2443,18 @@ The arg must be a string. */) /* If the file doesn't exist, move up the filesystem tree until we reach an existing directory or the root. */ - if (NILP (Ffile_exists_p (filename))) + while (true) { - filename = Ffile_name_directory (filename); - while (NILP (Ffile_exists_p (filename))) - { - Lisp_Object newname = expand_and_dir_to_file (filename); - /* Avoid infinite loop if the root is reported as non-existing - (impossible?). */ - if (!NILP (Fstring_equal (newname, filename))) - break; - filename = newname; - } + int err = file_name_case_insensitive_err (filename); + if (! (err == ENOENT || err == ENOTDIR)) + return err < 0 ? Qt : Qnil; + Lisp_Object parent = file_name_directory (filename); + /* Avoid infinite loop if the root is reported as non-existing + (impossible?). */ + if (!NILP (Fstring_equal (parent, filename))) + return Qnil; + filename = parent; } - filename = ENCODE_FILE (filename); - return file_name_case_insensitive_p (SSDATA (filename)) ? Qt : Qnil; } DEFUN ("rename-file", Frename_file, Srename_file, 2, 3, @@ -2790,7 +2804,7 @@ DEFUN ("file-writable-p", Ffile_writable_p, Sfile_writable_p, 1, 1, 0, if (errno != ENOENT) return Qnil; - dir = Ffile_name_directory (absname); + dir = file_name_directory (absname); eassert (!NILP (dir)); #ifdef MSDOS dir = Fdirectory_file_name (dir); @@ -5822,7 +5836,7 @@ A non-nil CURRENT-ONLY argument means save only current buffer. */) if (!NILP (Vrun_hooks)) { Lisp_Object dir; - dir = Ffile_name_directory (listfile); + dir = file_name_directory (listfile); if (NILP (Ffile_directory_p (dir))) internal_condition_case_1 (do_auto_save_make_dir, dir, Qt, commit 5711c076dc63ecc0907f2b9cfe04035e0bd6a0b4 Author: Stefan Kangas Date: Mon Sep 16 06:55:02 2019 +0200 ; * etc/NEWS: Fix typo. diff --git a/etc/NEWS b/etc/NEWS index 09535a56b9..1153daf9ac 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1903,7 +1903,7 @@ and 'gravatar-force-default'. ** ada-mode -*** The built-in ada-mode is now deleted. The Gnu ELPA package is a +*** The built-in ada-mode is now deleted. The GNU ELPA package is a good replacement, even in very large source files. ** xref commit ba0605779e0e207161441c08afdfac57ed603f69 Author: Paul Eggert Date: Sun Sep 15 20:17:43 2019 -0700 Fix unknown-vs-nonexistent glitch for file timestamps * src/fileio.c (time_error_value): EACCES means the file timestamp is unknown, not that the file does not exist. diff --git a/src/fileio.c b/src/fileio.c index da32d6c095..34afbc23da 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -3612,7 +3612,7 @@ file_offset (Lisp_Object val) static struct timespec time_error_value (int errnum) { - int ns = (errnum == ENOENT || errnum == EACCES || errnum == ENOTDIR + int ns = (errnum == ENOENT || errnum == ENOTDIR ? NONEXISTENT_MODTIME_NSECS : UNKNOWN_MODTIME_NSECS); return make_timespec (0, ns); commit de3daf063987dfc2a28cd5071b8f77446c7312e0 Author: Paul Eggert Date: Sun Sep 15 20:12:07 2019 -0700 Improve directory-access diagnostics * src/callproc.c (init_callproc): Diagnose I/O errors, access errors, etc. for the game directory. * src/charset.c (init_charset): Improve quality of diagnostic when the charsets directory has I/O errors, access errors, etc. diff --git a/src/callproc.c b/src/callproc.c index 4473b19a29..20e0bc50da 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -1598,6 +1598,8 @@ init_callproc (void) Lisp_Object path_game = build_unibyte_string (PATH_GAME); if (file_accessible_directory_p (path_game)) gamedir = path_game; + else if (errno != ENOENT && errno != ENOTDIR) + dir_warning ("game dir", path_game); } Vshared_game_score_directory = gamedir; } diff --git a/src/charset.c b/src/charset.c index 8c54381dc4..93206aa29b 100644 --- a/src/charset.c +++ b/src/charset.c @@ -2292,14 +2292,18 @@ init_charset (void) { /* This used to be non-fatal (dir_warning), but it should not happen, and if it does sooner or later it will cause some - obscure problem (eg bug#6401), so better abort. */ - fprintf (stderr, "Error: charsets directory not found:\n\ -%s\n\ -Emacs will not function correctly without the character map files.\n%s\ -Please check your installation!\n", - SDATA (tempdir), - egetenv("EMACSDATA") ? "The EMACSDATA environment \ -variable is set, maybe it has the wrong value?\n" : ""); + obscure problem (eg bug#6401), so better exit. */ + fprintf (stderr, + ("Error: %s: %s\n" + "Emacs will not function correctly " + "without the character map files.\n" + "%s" + "Please check your installation!\n"), + SDATA (tempdir), strerror (errno), + (egetenv ("EMACSDATA") + ? ("The EMACSDATA environment variable is set. " + "Maybe it has the wrong value?\n") + : "")); exit (1); } commit a625ca5c2675a41c5c0d277def6b8cb4f4c4d6db Merge: 211dc01a7b 30c4f35a6f Author: Glenn Morris Date: Sun Sep 15 16:38:23 2019 -0700 Merge from origin/emacs-26 30c4f35 (origin/emacs-26) query-replace-regexp undo: Update next-repl... c596be0 Amend the menu caption for page "Display Property" in the Eli... 13b9510 Add description of chinese-sisheng commit 211dc01a7bfac81281fa80e45e21157fc0c25b26 Merge: 8297df9d4b 7e527af72c Author: Glenn Morris Date: Sun Sep 15 16:38:23 2019 -0700 ; Merge from origin/emacs-26 The following commit was skipped: 7e527af Fix non-deterministic process test commit 8297df9d4bc702bb3ce13a4a89baa60c98ed6a11 Merge: 7582cde427 8e420c09bc Author: Glenn Morris Date: Sun Sep 15 16:38:20 2019 -0700 Merge from origin/emacs-26 8e420c0 Clarify the use of left/right-margin-width in determining cur... commit 7582cde4275946450b63eb87206914c023404b21 Merge: 84c7d4bccc 0c3fc71d3b Author: Glenn Morris Date: Sun Sep 15 16:38:20 2019 -0700 ; Merge from origin/emacs-26 The following commit was skipped: 0c3fc71 ; Bump Emacs version to 26.3.50 commit 84c7d4bccca41810ae28e3f13382b1021502cb4b Author: Glenn Morris Date: Sun Sep 15 16:36:06 2019 -0700 * admin/upload-manuals: Move a basic check earlier. diff --git a/admin/upload-manuals b/admin/upload-manuals index 08b47d741d..e37128a207 100755 --- a/admin/upload-manuals +++ b/admin/upload-manuals @@ -87,6 +87,9 @@ OPTIND=1 [ $# -eq 1 ] || usage +[ -e html_mono/emacs.html ] && [ -e html_node/emacs/index.html ] || \ + die "Current directory does not look like the manual/ directory" + [ "$version$umessage" ] || \ die "Could not get version to use for commit message" @@ -95,9 +98,6 @@ webdir=$1 [ -e $webdir/CVS/Entries ] && [ -e $webdir/refcards/pdf/refcard.pdf ] || \ die "$webdir does not look like a checkout of the Emacs webpages" -[ -e html_mono/emacs.html ] && [ -e html_node/emacs/index.html ] || \ - die "Current directory does not like the manual/ directory" - echo "Doing refcards..." commit b3e4b50578778e03327b049f7a595981bfbf3713 Author: Juanma Barranquero Date: Sun Sep 15 20:37:26 2019 +0200 * lisp/subr.el (major-mode-suspend): Doc fix diff --git a/lisp/subr.el b/lisp/subr.el index 0d7bffb35f..0b47da884b 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -2045,7 +2045,7 @@ Uses the `derived-mode-parent' property of the symbol to trace backwards." (put 'major-mode--suspended 'permanent-local t) (defun major-mode-suspend () - "Exit current major, remembering it." + "Exit current major mode, remembering it." (let* ((prev-major-mode (or major-mode--suspended (unless (eq major-mode 'fundamental-mode) major-mode)))) commit 6d3cb263f941545c09acb7fb86b8336ad130aa8e Author: Michael Albinus Date: Sun Sep 15 16:52:22 2019 +0200 Use also truname of temporary-file-directory in shadowfile-tests.el * test/lisp/shadowfile-tests.el (top): Use truename of `temporary-file-directory' and `shadow-test-remote-temporary-file-directory'. (Bug#37202) (shadow-test08-shadow-todo, shadow-test09-shadow-copy-files): Do not bind `shadow-test-remote-temporary-file-directory'. diff --git a/test/lisp/shadowfile-tests.el b/test/lisp/shadowfile-tests.el index a93664f653..d09c15e991 100644 --- a/test/lisp/shadowfile-tests.el +++ b/test/lisp/shadowfile-tests.el @@ -66,7 +66,12 @@ (setq password-cache-expiry nil shadow-debug t tramp-verbose 0 - tramp-message-show-message nil) + tramp-message-show-message nil + ;; On macOS, `temporary-file-directory' is a symlinked directory. + temporary-file-directory (file-truename temporary-file-directory) + shadow-test-remote-temporary-file-directory + (ignore-errors + (file-truename shadow-test-remote-temporary-file-directory))) ;; This should happen on hydra only. (when (getenv "EMACS_HYDRA_CI") @@ -718,8 +723,6 @@ guaranteed by the originator of a cluster definition." (shadow-info-file shadow-test-info-file) (shadow-todo-file shadow-test-todo-file) (shadow-inhibit-message t) - (shadow-test-remote-temporary-file-directory - (file-truename shadow-test-remote-temporary-file-directory)) shadow-clusters shadow-literal-groups shadow-regexp-groups shadow-files-to-copy cluster1 cluster2 primary regexp file) @@ -858,8 +861,6 @@ guaranteed by the originator of a cluster definition." (shadow-info-file shadow-test-info-file) (shadow-todo-file shadow-test-todo-file) (shadow-inhibit-message t) - (shadow-test-remote-temporary-file-directory - (file-truename shadow-test-remote-temporary-file-directory)) (shadow-noquery t) shadow-clusters shadow-files-to-copy cluster1 cluster2 primary regexp file mocked-input) commit 24e0546bc1daa407843427e2e2ac59100c9e62e1 Author: Mauro Aranda Date: Sun Sep 15 15:21:08 2019 +0200 Make widget-browse-at always detect an editable-field * lisp/wid-browse.el (widget-browse-at): Also look for the real-field property when detecting a field (bug#37199). diff --git a/lisp/wid-browse.el b/lisp/wid-browse.el index dbc41009c7..3124a9c01e 100644 --- a/lisp/wid-browse.el +++ b/lisp/wid-browse.el @@ -89,7 +89,11 @@ if that value is non-nil." (defun widget-browse-at (pos) "Browse the widget under point." (interactive "d") - (let* ((field (get-char-property pos 'field)) + (let* ((field (or + ;; See comments in `widget-specify-field' to know why we + ;; need this. + (get-char-property pos 'real-field) + (get-char-property pos 'field))) (button (get-char-property pos 'button)) (doc (get-char-property pos 'widget-doc)) (text (cond (field "This is an editable text area.") commit 12b1cce925bb56c699ff9160642b8598f6fb9d9b Author: Wolfgang Scherer Date: Sun Sep 15 15:14:44 2019 +0200 Do not use error messages as list of ignored files in vc-svn * lisp/vc/vc-svn.el: (vc-svn-ignore-completion-table) Ignore buffer contents, if exit status is not 0. Split buffer by lines (bug#37214). diff --git a/lisp/vc/vc-svn.el b/lisp/vc/vc-svn.el index 3c50c8fff6..88a280d10f 100644 --- a/lisp/vc/vc-svn.el +++ b/lisp/vc/vc-svn.el @@ -366,8 +366,9 @@ FILE is a file wildcard, relative to the root directory of DIRECTORY." (defun vc-svn-ignore-completion-table (directory) "Return the list of ignored files in DIRECTORY." (with-temp-buffer - (vc-svn-command t t nil "propget" "svn:ignore" (expand-file-name directory)) - (split-string (buffer-string)))) + (when (zerop (vc-svn-command + t t nil "propget" "svn:ignore" (expand-file-name directory))) + (split-string (buffer-string) "\n")))) (defun vc-svn-find-admin-dir (file) "Return the administrative directory of FILE." commit f144c87f92bb9930c9fdafc39bbcdfbb7c7bb983 Author: Wolfgang Scherer Date: Sun Sep 15 15:03:33 2019 +0200 Fix vc-default-ignore * lisp/vc/vc.el: (vc-default-ignore) Treat FILE parameter as relative to DIRECTORY parameter. Construct a file-path relative to directory of ignore file. When removing, use properly anchored regexp. Remove entire line, not just the match (bug#37217). diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index 4cac153928..c982b0220e 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el @@ -1417,17 +1417,22 @@ remove from the list of ignored files." (defun vc-default-ignore (backend file &optional directory remove) "Ignore FILE under the VCS of DIRECTORY (default is `default-directory'). -FILE is a file wildcard, relative to the root directory of DIRECTORY. +FILE is a wildcard specification, either relative to +DIRECTORY or absolute. When called from Lisp code, if DIRECTORY is non-nil, the repository to use will be deduced by DIRECTORY; if REMOVE is non-nil, remove FILE from ignored files. Argument BACKEND is the backend you are using." (let ((ignore (vc-call-backend backend 'find-ignore-file (or directory default-directory))) - (pattern (file-relative-name - (expand-file-name file) (file-name-directory file)))) + file-path root-dir pattern) + (setq file-path (expand-file-name file directory)) + (setq root-dir (file-name-directory ignore)) + (when (not (string= (substring file-path 0 (length root-dir)) root-dir)) + (error "Ignore spec %s is not below project root %s" file-path root-dir)) + (setq pattern (substring file-path (length root-dir))) (if remove - (vc--remove-regexp pattern ignore) + (vc--remove-regexp (concat "^" (regexp-quote pattern ) "\\(\n\\|$\\)") ignore) (vc--add-line pattern ignore)))) (defun vc-default-ignore-completion-table (backend file) commit c99c9ec28c440d42a66b737651b1095151d85957 Author: Wolfgang Scherer Date: Sun Sep 15 15:00:20 2019 +0200 Provide facility to ignore all marked files in vc * lisp/vc/vc-dir.el: (vc-dir-ignore) With prefix argument, ignore all marked files (bug#37240). diff --git a/etc/NEWS b/etc/NEWS index 252c6bf9b9..09535a56b9 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -743,6 +743,10 @@ file. *** New customizable variable 'vc-find-revision-no-save'. With non-nil, 'vc-find-revision' doesn't write the created buffer to file. +--- +*** 'vc-dir-ignore' now takes a prefix argument to ignore all marked +files. + *** New customizable variable 'vc-git-grep-template'. This new variable allows customizing the default arguments passed to 'git-grep' when 'vc-git-grep' is used. diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el index 9a6f6bb687..e225978592 100644 --- a/lisp/vc/vc-dir.el +++ b/lisp/vc/vc-dir.el @@ -864,10 +864,18 @@ with the command \\[tags-loop-continue]." delimited) (fileloop-continue)) -(defun vc-dir-ignore () - "Ignore the current file." - (interactive) - (vc-ignore (vc-dir-current-file))) +(defun vc-dir-ignore (&optional arg) + "Ignore the current file. +If a prefix argument is given, ignore all marked files." + (interactive "P") + (if arg + (ewoc-map + (lambda (filearg) + (when (vc-dir-fileinfo->marked filearg) + (vc-ignore (vc-dir-fileinfo->name filearg)) + t)) + vc-ewoc) + (vc-ignore (vc-dir-current-file)))) (defun vc-dir-current-file () (let ((node (ewoc-locate vc-ewoc))) commit f198a5c5144fdded1400df6e8454e4b1b912c7de Author: Lars Ingebrigtsen Date: Sun Sep 15 14:11:14 2019 +0200 Revert "emacsclient: ignore --eval parameters when starting alternate editor" This reverts commit 6fe661342a24edcaea255c3ba9a37613031554da. The alternate editor may be Emacs, which is useful when you want to eval something in an existing Emacs (if it exists), or in a new Emacs if there's no server running. diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c index e9469f77c5..65effc6910 100644 --- a/lib-src/emacsclient.c +++ b/lib-src/emacsclient.c @@ -700,11 +700,7 @@ fail (void) { if (alternate_editor) { - /* If the user has said --eval, then those aren't file name - parameters, so don't put them on the alternate_editor command - line. */ - size_t extra_args_size = - (eval? 0: (main_argc - optind + 1) * sizeof (char *)); + size_t extra_args_size = (main_argc - optind + 1) * sizeof (char *); size_t new_argv_size = extra_args_size; char **new_argv = xmalloc (new_argv_size); char *s = xstrdup (alternate_editor); commit 30c4f35a6fc8a6507930923766c3126ac1c2063f (refs/remotes/origin/emacs-26) Author: Tino Calancha Date: Mon Sep 9 08:21:18 2019 +0200 query-replace-regexp undo: Update next-replacement after undo * lisp/replace.el (perform-replace): Rename the local binding to not shadow next-replacement. Update next-replacement after undo (Bug#37287). * test/lisp/replace-tests.el (query-replace-undo-bug37287): Add test. (query-replace-undo-bug37073): Tweak this test. diff --git a/lisp/replace.el b/lisp/replace.el index 0ddebb1270..dd24d8ba92 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -2584,7 +2584,7 @@ It must return a string." (num-replacements 0) (nocasify t) ; Undo must preserve case (Bug#31073). search-string - next-replacement) + last-replacement) (while (and (< stack-idx stack-len) stack (or (null replaced) last-was-act-and-show)) @@ -2595,9 +2595,9 @@ It must return a string." ;; Bind swapped values ;; (search-string <--> replacement) search-string (nth (if replaced 4 3) elt) - next-replacement (nth (if replaced 3 4) elt) + last-replacement (nth (if replaced 3 4) elt) search-string-replaced search-string - next-replacement-replaced next-replacement + last-replacement-replaced last-replacement last-was-act-and-show nil) (when (and (= stack-idx stack-len) @@ -2619,16 +2619,18 @@ It must return a string." (match-data t (nth 2 elt))) noedit (replace-match-maybe-edit - next-replacement nocasify literal + last-replacement nocasify literal noedit real-match-data backward) replace-count (1- replace-count) real-match-data (save-excursion (goto-char (match-beginning 0)) (if regexp-flag - (looking-at next-replacement) - (looking-at (regexp-quote next-replacement))) + (looking-at last-replacement) + (looking-at (regexp-quote last-replacement))) (match-data t (nth 2 elt)))) + (when regexp-flag + (setq next-replacement (nth 4 elt))) ;; Set replaced nil to keep in loop (when (eq def 'undo-all) (setq replaced nil diff --git a/test/lisp/replace-tests.el b/test/lisp/replace-tests.el index cd08a522e3..2a3f207e47 100644 --- a/test/lisp/replace-tests.el +++ b/test/lisp/replace-tests.el @@ -463,7 +463,9 @@ Return the last evalled form in BODY." (should (replace-tests-with-undo input "theorem \\([0-9]+\\)" - "theorem \\\\ref{theo_\\1}" + '(replace-eval-replacement + replace-quote + (format "theorem \\\\ref{theo_%d}" (1+ (string-to-number (match-string 1))))) ((?\s . (1 2)) (?U . (3))) ?q (string= input (buffer-string))))) @@ -479,4 +481,18 @@ Return the last evalled form in BODY." ?q (string= expected (buffer-string)))))) +(ert-deftest query-replace-undo-bug37287 () + "Test for https://debbugs.gnu.org/37287 ." + (let ((input "foo-1\nfoo-2\nfoo-3") + (expected "foo-2\nfoo-2\nfoo-3")) + (should + (replace-tests-with-undo + input "\\([0-9]\\)" + '(replace-eval-replacement + replace-quote + (format "%d" (1+ (string-to-number (match-string 1))))) + ((?\s . (1 2 4)) (?U . (3))) + ?q + (string= expected (buffer-string)))))) + ;;; replace-tests.el ends here commit c596be08f71e8118ddaa3e330997716de4c109ab Author: Alan Mackenzie Date: Sat Sep 7 18:15:40 2019 +0000 Amend the menu caption for page "Display Property" in the Elisp manual. * doc/lispref/display.texi (Emacs Display): Replace a content-free menu caption with one mentioning images, margins and text size. diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index 853f69fa33..55a0a2f924 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -25,7 +25,7 @@ that Emacs presents to the user. * Fringes:: Controlling window fringes. * Scroll Bars:: Controlling scroll bars. * Window Dividers:: Separating windows visually. -* Display Property:: Enabling special display features. +* Display Property:: Images, margins, text size, etc. * Images:: Displaying images in Emacs buffers. * Xwidgets:: Displaying native widgets in Emacs buffers. * Buttons:: Adding clickable buttons to Emacs buffers. commit 13b951001c15a78f7f8cb4bff1825cc77b2c8456 Author: Robert Pluim Date: Thu Aug 22 16:14:26 2019 +0200 Add description of chinese-sisheng * doc/emacs/mule.texi (Input Methods): Add description of chinese-sisheng method for entering characters using pīnyīn. diff --git a/doc/emacs/mule.texi b/doc/emacs/mule.texi index b3e7d218c6..4ed13b8787 100644 --- a/doc/emacs/mule.texi +++ b/doc/emacs/mule.texi @@ -497,6 +497,10 @@ one of them selects that alternative. The keys @kbd{C-f}, @kbd{C-b}, do the highlighting in the buffer showing the possible characters, rather than in the echo area. + To enter characters according to the @dfn{pīnyīn} transliteration +method instead, use the @code{chinese-sisheng} input method. This is +a composition based method, where e.g. @kbd{pi1} results in @samp{pī}. + In Japanese input methods, first you input a whole word using phonetic spelling; then, after the word is in the buffer, Emacs converts it into one or more characters using a large dictionary. One commit 7e527af72cae65fdb3f61c7d92907cfdfd1e6ea3 Author: Noam Postavsky Date: Thu Aug 22 20:48:19 2019 -0400 Fix non-deterministic process test * test/src/process-tests.el (set-process-filter-t): Don't assume subprocess output will come in a single chunk, keep waiting for more data until next "prompt" is read from subprocess. (cherry picked from commit aa49aa884053d0e8b33efe265f2aade19d1f3f3d) diff --git a/test/src/process-tests.el b/test/src/process-tests.el index 7a6762a922..ef057af6b7 100644 --- a/test/src/process-tests.el +++ b/test/src/process-tests.el @@ -154,24 +154,30 @@ (concat invocation-directory invocation-name) "-Q" "--batch" "--eval" (prin1-to-string - '(let (s) - (while (setq s (read-from-minibuffer "$ ")) + '(let ((s nil) (count 0)) + (while (setq s (read-from-minibuffer + (format "%d> " count))) (princ s) - (princ "\n"))))))) + (princ "\n") + (setq count (1+ count)))))))) (set-process-query-on-exit-flag proc nil) (send-string proc "one\n") - (should - (accept-process-output proc 1)) ; Read "one". - (should (equal (buffer-string) "$ one\n$ ")) + (while (not (equal (buffer-substring + (line-beginning-position) (point-max)) + "1> ")) + (accept-process-output proc)) ; Read "one". + (should (equal (buffer-string) "0> one\n1> ")) (set-process-filter proc t) ; Stop reading from proc. (send-string proc "two\n") (should-not (accept-process-output proc 1)) ; Can't read "two" yet. - (should (equal (buffer-string) "$ one\n$ ")) + (should (equal (buffer-string) "0> one\n1> ")) (set-process-filter proc nil) ; Resume reading from proc. - (should - (accept-process-output proc 1)) ; Read "two" from proc. - (should (equal (buffer-string) "$ one\n$ two\n$ "))))) + (while (not (equal (buffer-substring + (line-beginning-position) (point-max)) + "2> ")) + (accept-process-output proc)) ; Read "Two". + (should (equal (buffer-string) "0> one\n1> two\n2> "))))) (ert-deftest start-process-should-not-modify-arguments () "`start-process' must not modify its arguments in-place." commit 8e420c09bcef1bf2a08b03deb74d5c663d898e33 Author: Alan Mackenzie Date: Sat Aug 31 14:32:13 2019 +0000 Clarify the use of left/right-margin-width in determining current margin width * doc/lispref/display.texi (Display-Margins): Clarify that left/right-margin-width can not be used to determine the current margin width, and that window-margins must be used instead. diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index 9eb406b3c6..853f69fa33 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -4928,7 +4928,9 @@ means no right marginal area. Setting these variables does not immediately affect the window. These variables are checked when a new buffer is displayed in the window. Thus, you can make changes take effect by calling -@code{set-window-buffer}. +@code{set-window-buffer}. Do not use these variables to try to +determine the current width of the left or right margin. Instead, use +the function @code{window-margins}. You can also set the margin widths immediately. commit 0c3fc71d3bef37bac6a766d319c4574cd24c20c0 Author: Eli Zaretskii Date: Fri Aug 30 10:04:23 2019 +0300 ; Bump Emacs version to 26.3.50 * README: * etc/NEWS: * configure.ac: * msdos/sed2v2.inp: * nt/README.W32: Bump Emacs version to 26.3.50. diff --git a/README b/README index 1c4341de03..5462db0400 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. -This directory tree holds version 26.3 of GNU Emacs, the extensible, +This directory tree holds version 26.3.50 of GNU Emacs, the extensible, customizable, self-documenting real-time display editor. The file INSTALL in this directory says how to build and install GNU diff --git a/configure.ac b/configure.ac index ebf24c8657..b4a41ba78c 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ dnl along with GNU Emacs. If not, see . AC_PREREQ(2.65) dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el. -AC_INIT(GNU Emacs, 26.3, bug-gnu-emacs@gnu.org) +AC_INIT(GNU Emacs, 26.3.50, bug-gnu-emacs@gnu.org) dnl Set emacs_config_options to the options of 'configure', quoted for the shell, dnl and then quoted again for a C string. Separate options with spaces. diff --git a/etc/NEWS b/etc/NEWS index de42606d2b..61d5115cdc 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -15,6 +15,33 @@ in older Emacs versions. You can narrow news to a specific version by calling 'view-emacs-news' with a prefix argument or by typing 'C-u C-h C-n'. + +* Installation Changes in Emacs 26.4 + + +* Startup Changes in Emacs 26.4 + + +* Changes in Emacs 26.4 + + +* Editing Changes in Emacs 26.4 + + +* Changes in Specialized Modes and Packages in Emacs 26.4 + + +* New Modes and Packages in Emacs 26.4 + + +* Incompatible Lisp Changes in Emacs 26.4 + + +* Lisp Changes in Emacs 26.4 + + +* Changes in Emacs 26.4 on Non-Free Operating Systems + * Changes in Emacs 26.3 diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp index f010892129..f2ed3ff985 100644 --- a/msdos/sed2v2.inp +++ b/msdos/sed2v2.inp @@ -66,7 +66,7 @@ /^#undef PACKAGE_NAME/s/^.*$/#define PACKAGE_NAME ""/ /^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/ /^#undef PACKAGE_TARNAME/s/^.*$/#define PACKAGE_TARNAME ""/ -/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "26.3"/ +/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "26.3.50"/ /^#undef SYSTEM_TYPE/s/^.*$/#define SYSTEM_TYPE "ms-dos"/ /^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/ /^#undef SYS_SIGLIST_DECLARED/s/^.*$/#define SYS_SIGLIST_DECLARED 1/ diff --git a/nt/README.W32 b/nt/README.W32 index 1ba4081a68..47c9bd7aa9 100644 --- a/nt/README.W32 +++ b/nt/README.W32 @@ -1,7 +1,7 @@ Copyright (C) 2001-2019 Free Software Foundation, Inc. See the end of the file for license conditions. - Emacs version 26.3 for MS-Windows + Emacs version 26.3.50 for MS-Windows This README file describes how to set up and run a precompiled distribution of the latest version of GNU Emacs for MS-Windows. You