From 3bce7ec3826003fda1971224a20d7fe2cba8bf65 Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Sun, 23 Feb 2020 19:43:56 +0000 Subject: [PATCH 01/93] CC Mode: Protect against consecutive calls to before-change-functions ... without an intervening call to after-change-functions. This would have been a workaround to bug #38691 had the causes of that bug not been removed. * lisp/progmodes/cc-mode.el (c-just-done-before-change): Add an extra value to this variable, 'whole-buffer, this being set by c-before-change as a signal to c-after-change that although c-before-change has run, it has assumed the entire buffer as the change region. (c-before-change, c-after-change): Adapt to the new meaning of the above. --- lisp/progmodes/cc-mode.el | 47 +++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el index 7496684d939..9f95a9ce48b 100644 --- a/lisp/progmodes/cc-mode.el +++ b/lisp/progmodes/cc-mode.el @@ -1865,18 +1865,25 @@ Note that this is a strict tail, so won't match, e.g. \"0x....\".") ;; it/them from the cache. Don't worry about being inside a string ;; or a comment - "wrongly" removing a symbol from `c-found-types' ;; isn't critical. - (unless (or (c-called-from-text-property-change-p) - c-just-done-before-change) ; guard against a spurious second - ; invocation of before-change-functions. - (setq c-just-done-before-change t) - ;; (c-new-BEG c-new-END) will be the region to fontify. - (setq c-new-BEG beg c-new-END end) - (setq c-maybe-stale-found-type nil) - ;; A workaround for syntax-ppss's failure to notice syntax-table text - ;; property changes. - (when (fboundp 'syntax-ppss) - (setq c-syntax-table-hwm most-positive-fixnum)) + (unless (c-called-from-text-property-change-p) (save-restriction + (widen) + (if c-just-done-before-change + ;; We have two consecutive calls to `before-change-functions' without + ;; an intervening `after-change-functions'. An example of this is bug + ;; #38691. To protect CC Mode, assume that the entire buffer has + ;; changed. + (setq beg (point-min) + end (point-max) + c-just-done-before-change 'whole-buffer) + (setq c-just-done-before-change t)) + ;; (c-new-BEG c-new-END) will be the region to fontify. + (setq c-new-BEG beg c-new-END end) + (setq c-maybe-stale-found-type nil) + ;; A workaround for syntax-ppss's failure to notice syntax-table text + ;; property changes. + (when (fboundp 'syntax-ppss) + (setq c-syntax-table-hwm most-positive-fixnum)) (save-match-data (widen) (unwind-protect @@ -1982,14 +1989,20 @@ Note that this is a strict tail, so won't match, e.g. \"0x....\".") ;; without an intervening call to `before-change-functions' when reverting ;; the buffer (see bug #24094). Whatever the cause, assume that the entire ;; buffer has changed. - (when (and (not c-just-done-before-change) - (not (c-called-from-text-property-change-p))) + + ;; Note: c-just-done-before-change is nil, t, or 'whole-buffer. + (unless (c-called-from-text-property-change-p) (save-restriction (widen) - (c-before-change (point-min) (point-max)) - (setq beg (point-min) - end (point-max) - old-len (- end beg)))) + (unless c-just-done-before-change + (c-before-change (point-min) (point-max))) + (unless (eq c-just-done-before-change t) + (setq beg (point-min) + end (point-max) + old-len (- end beg) + c-new-BEG (point-min) + c-new-END (point-max))) + (setq c-just-done-before-change nil))) ;; (c-new-BEG c-new-END) will be the region to fontify. It may become ;; larger than (beg end). From e74fb4688b78f549fbc79a2163c92ba64296ee3d Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Mon, 24 Feb 2020 09:55:09 -0500 Subject: [PATCH 02/93] * lisp/emacs-lisp/cursor-sensor.el (cursor-sensor--detect): Change last fix Make sure we always work in the selected-window's buffer. --- lisp/emacs-lisp/cursor-sensor.el | 110 ++++++++++++++++--------------- 1 file changed, 56 insertions(+), 54 deletions(-) diff --git a/lisp/emacs-lisp/cursor-sensor.el b/lisp/emacs-lisp/cursor-sensor.el index 7728e78c471..d50f7ad0be5 100644 --- a/lisp/emacs-lisp/cursor-sensor.el +++ b/lisp/emacs-lisp/cursor-sensor.el @@ -141,61 +141,63 @@ By convention, this is a list of symbols where each symbol stands for the ;;; Detect cursor movement. (defun cursor-sensor--detect (&optional window) - (unless cursor-sensor-inhibit - (let* ((point (window-point window)) - ;; It's often desirable to make the cursor-sensor-functions property - ;; non-sticky on both ends, but that means get-pos-property might - ;; never see it. - (new (and (eq (current-buffer) (window-buffer)) - (or (get-char-property point 'cursor-sensor-functions) - (unless (<= (point-min) point) - (get-char-property (1- point) 'cursor-sensor-functions))))) - (old (window-parameter window 'cursor-sensor--last-state)) - (oldposmark (car old)) - (oldpos (or (if oldposmark (marker-position oldposmark)) - (point-min))) - (start (min oldpos point)) - (end (max oldpos point))) - (unless (or (null old) (eq (marker-buffer oldposmark) (current-buffer))) - ;; `window' does not display the same buffer any more! - (setcdr old nil)) - (if (or (and (null new) (null (cdr old))) - (and (eq new (cdr old)) - (eq (next-single-char-property-change - start 'cursor-sensor-functions nil end) - end))) - ;; Clearly nothing to do. - nil - ;; Maybe something to do. Let's see exactly what needs to run. - (let* ((missing-p - (lambda (f) - "Non-nil if F is missing somewhere between START and END." - (let ((pos start) - (missing nil)) - (while (< pos end) - (setq pos (next-single-char-property-change - pos 'cursor-sensor-functions - nil end)) - (unless (memq f (get-char-property - pos 'cursor-sensor-functions)) - (setq missing t))) - missing))) - (window (selected-window))) - (dolist (f (cdr old)) - (unless (and (memq f new) (not (funcall missing-p f))) - (funcall f window oldpos 'left))) - (dolist (f new) - (unless (and (memq f (cdr old)) (not (funcall missing-p f))) - (funcall f window oldpos 'entered))))) + (with-current-buffer (window-buffer window) + (unless cursor-sensor-inhibit + (let* ((point (window-point window)) + ;; It's often desirable to make the + ;; cursor-sensor-functions property non-sticky on both + ;; ends, but that means get-pos-property might never + ;; see it. + (new (or (get-char-property point 'cursor-sensor-functions) + (unless (<= (point-min) point) + (get-char-property (1- point) + 'cursor-sensor-functions)))) + (old (window-parameter window 'cursor-sensor--last-state)) + (oldposmark (car old)) + (oldpos (or (if oldposmark (marker-position oldposmark)) + (point-min))) + (start (min oldpos point)) + (end (max oldpos point))) + (unless (or (null old) (eq (marker-buffer oldposmark) (current-buffer))) + ;; `window' does not display the same buffer any more! + (setcdr old nil)) + (if (or (and (null new) (null (cdr old))) + (and (eq new (cdr old)) + (eq (next-single-char-property-change + start 'cursor-sensor-functions nil end) + end))) + ;; Clearly nothing to do. + nil + ;; Maybe something to do. Let's see exactly what needs to run. + (let* ((missing-p + (lambda (f) + "Non-nil if F is missing somewhere between START and END." + (let ((pos start) + (missing nil)) + (while (< pos end) + (setq pos (next-single-char-property-change + pos 'cursor-sensor-functions + nil end)) + (unless (memq f (get-char-property + pos 'cursor-sensor-functions)) + (setq missing t))) + missing))) + (window (selected-window))) + (dolist (f (cdr old)) + (unless (and (memq f new) (not (funcall missing-p f))) + (funcall f window oldpos 'left))) + (dolist (f new) + (unless (and (memq f (cdr old)) (not (funcall missing-p f))) + (funcall f window oldpos 'entered))))) - ;; Remember current state for next time. - ;; Re-read cursor-sensor-functions since the functions may have moved - ;; window-point! - (if old - (progn (move-marker (car old) point) - (setcdr old new)) - (set-window-parameter window 'cursor-sensor--last-state - (cons (copy-marker point) new)))))) + ;; Remember current state for next time. + ;; Re-read cursor-sensor-functions since the functions may have moved + ;; window-point! + (if old + (progn (move-marker (car old) point) + (setcdr old new)) + (set-window-parameter window 'cursor-sensor--last-state + (cons (copy-marker point) new))))))) ;;;###autoload (define-minor-mode cursor-sensor-mode From 9ec6eb1065c65b32e9a565a6b66298aa4f2e527c Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Tue, 25 Feb 2020 01:03:28 +0200 Subject: [PATCH 03/93] vc-dir-ignore: More accurately choose base directory * lisp/vc/vc-dir.el: (vc-dir-ignore): Use it (bug#37189). * lisp/vc/vc.el: (vc--ignore-base-dir): Extract from vc-ignore. --- lisp/vc/vc-dir.el | 7 ++++--- lisp/vc/vc.el | 18 ++++++++++-------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el index e5c5e16a17a..38b4937e854 100644 --- a/lisp/vc/vc-dir.el +++ b/lisp/vc/vc-dir.el @@ -879,9 +879,10 @@ If a prefix argument is given, ignore all marked files." (vc-ignore (vc-dir-fileinfo->name filearg)) t)) vc-ewoc) - (vc-ignore - (file-relative-name (vc-dir-current-file)) - default-directory))) + (let ((rel-dir (vc--ignore-base-dir))) + (vc-ignore + (file-relative-name (vc-dir-current-file) rel-dir) + rel-dir)))) (defun vc-dir-current-file () (let ((node (ewoc-locate vc-ewoc))) diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index 53491dd1b04..fe666413168 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el @@ -1406,14 +1406,7 @@ When called interactively, prompt for a FILE to ignore, unless a prefix argument is given, in which case prompt for a file FILE to remove from the list of ignored files." (interactive - (let* ((backend (vc-responsible-backend default-directory)) - (rel-dir - (condition-case nil - (file-name-directory - (vc-call-backend backend 'find-ignore-file - default-directory)) - (vc-not-supported - default-directory))) + (let* ((rel-dir (vc--ignore-base-dir)) (file (read-file-name "File to ignore: "))) (when (and (file-name-absolute-p file) (file-in-directory-p file rel-dir)) @@ -1426,6 +1419,15 @@ remove from the list of ignored files." (error "Unknown backend")))) (vc-call-backend backend 'ignore file directory remove))) +(defun vc--ignore-base-dir () + (let ((backend (vc-responsible-backend default-directory))) + (condition-case nil + (file-name-directory + (vc-call-backend backend 'find-ignore-file + default-directory)) + (vc-not-supported + default-directory)))) + (defun vc-default-ignore (backend file &optional directory remove) "Ignore FILE under DIRECTORY (default is `default-directory'). FILE is a wildcard specification relative to DIRECTORY. From af519a634878dd8e72f8276d82601b6562029107 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Tue, 25 Feb 2020 20:09:00 -0500 Subject: [PATCH 04/93] Define libgnutls-version properly * src/gnutls.c (syms_of_gnutls) : Define with DEFVAR_LISP and add docstring, so that this variable will accessible by help facilities. --- src/gnutls.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/gnutls.c b/src/gnutls.c index 31fcd37c0a6..70176c41cdd 100644 --- a/src/gnutls.c +++ b/src/gnutls.c @@ -2834,16 +2834,21 @@ Any GnuTLS extension with ID up to 100 void syms_of_gnutls (void) { - DEFSYM (Qlibgnutls_version, "libgnutls-version"); - Fset (Qlibgnutls_version, + DEFVAR_LISP ("libgnutls-version", Vlibgnutls_version, + doc: /* The version of libgnutls that Emacs was compiled with. +The version number is encoded as an integer with the major version in +the ten thousands place, minor version in the hundreds, and patch +level in the ones. For builds without libgnutls, the value is -1. */); + Vlibgnutls_version = make_fixnum #ifdef HAVE_GNUTLS - make_fixnum (GNUTLS_VERSION_MAJOR * 10000 - + GNUTLS_VERSION_MINOR * 100 - + GNUTLS_VERSION_PATCH) + (GNUTLS_VERSION_MAJOR * 10000 + + GNUTLS_VERSION_MINOR * 100 + + GNUTLS_VERSION_PATCH) #else - make_fixnum (-1) + (-1) #endif - ); + ; + #ifdef HAVE_GNUTLS gnutls_global_initialized = 0; PDUMPER_IGNORE (gnutls_global_initialized); From a95ec6e060debc8dbf5456748e6f188d828eba65 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Wed, 26 Feb 2020 17:52:07 +0100 Subject: [PATCH 05/93] * admin/authors.el: Add missing entries --- admin/authors.el | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/admin/authors.el b/admin/authors.el index f8f72878d28..1f92c46cfdc 100644 --- a/admin/authors.el +++ b/admin/authors.el @@ -294,7 +294,10 @@ If REALNAME is nil, ignore that author.") "preferences\\.\\(nib\\|gorm\\)" ;; Generated files that have since been removed. "\\(refcard\\(-de\\|-pl\\)?\\|calccard\\|dired-ref\\|orgcard\\|\ -gnus-booklet\\|fr-drdref\\)\\.p\\(df\\|s\\)\\'") +gnus-booklet\\|fr-drdref\\)\\.p\\(df\\|s\\)\\'" + ;; Removed as obsolete + "README-ftp-server" + ) "List of regexps matching obsolete files. Changes to files matching one of the regexps in this list are not listed.") @@ -459,6 +462,11 @@ Changes to files matching one of the regexps in this list are not listed.") ;; ada-mode has been deleted, now in GNU ELPA "ada-mode.texi" "GNUS-NEWS" + "gnus-news.el" + "fingerprint-dummy.c" + "fingerprint.h" + ;; Replaced by lisp/thread.el + "thread-list.el" ) "List of files and directories to ignore. Changes to files in this list are not listed.") @@ -1103,6 +1111,8 @@ in the repository.") ("lisp/net/starttls.el" . "lisp/obsolete/starttls.el") ("url-ns.el" . "lisp/obsolete/url-ns.el") ("gnus-news.texi" . "doc/misc/gnus.texi") + ("multifile.el". "fileloop.el") + ("lisp/emacs-lisp/thread.el". "lisp/thread.el") ) "Alist of files which have been renamed during their lifetime. Elements are (OLDNAME . NEWNAME).") From 4653baa6a502b1b7e1892a9d0728293198e90653 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Wed, 26 Feb 2020 17:53:27 +0100 Subject: [PATCH 06/93] ; ChangeLog.3 update & fixes. --- ChangeLog.3 | 453 +++++++++++++++++++++++++++++++++++----------------- 1 file changed, 310 insertions(+), 143 deletions(-) diff --git a/ChangeLog.3 b/ChangeLog.3 index d35a01aa74b..7a07f753b08 100644 --- a/ChangeLog.3 +++ b/ChangeLog.3 @@ -1,3 +1,162 @@ +2020-02-26 Noam Postavsky + + Define libgnutls-version properly + + * src/gnutls.c (syms_of_gnutls) : Define with + DEFVAR_LISP and add docstring, so that this variable will accessible by + help facilities. + +2020-02-25 Dmitry Gutov + + vc-dir-ignore: More accurately choose base directory + + * lisp/vc/vc-dir.el: + (vc-dir-ignore): Use it (bug#37189). + + * lisp/vc/vc.el: + (vc--ignore-base-dir): Extract from vc-ignore. + +2020-02-24 Stefan Monnier + + * lisp/emacs-lisp/cursor-sensor.el (cursor-sensor--detect): Change last fix + + Make sure we always work in the selected-window's buffer. + +2020-02-23 Alan Mackenzie + + CC Mode: Protect against consecutive calls to before-change-functions ... + + without an intervening call to after-change-functions. This would have been a + workaround to bug #38691 had the causes of that bug not been removed. + + * lisp/progmodes/cc-mode.el (c-just-done-before-change): Add an extra value to + this variable, 'whole-buffer, this being set by c-before-change as a signal to + c-after-change that although c-before-change has run, it has assumed the + entire buffer as the change region. + (c-before-change, c-after-change): Adapt to the new meaning of the above. + +2020-02-23 Noam Postavsky + + Shorten some ppss struct field names + + * lisp/emacs-lisp/syntax.el (ppss): Capitalize docstrings. + (ppss-comment-depth): Renamed from ppss-comment-nesting. + (ppss-quoted-p): Renamed from ppss-after-quote-p. + (ppss-min-depth): Renamed from ppss-minimum-paren-depth. + (ppss-open-parens): Renamed from ppss-open-paren-positions. + * etc/NEWS: Announce the ppss-* accessors. + +2020-02-23 Alan Mackenzie + + Java Mode: Fix fontification of variable decl inside `for' + + * lisp/progmodes/cc-engine.el (c-forward-declarator): In place of a test for + C++ Mode, test for either C++ Mode or Java Mode. + +2020-02-23 Alan Mackenzie + + CC Mode: Fontify foo in "const auto foo :" correctly + + * lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): While attempting to + find a declaration's identifier, recast the latest found id. as that + identifier when there is no other type identifier and the result of the most + recent c-forward-type call is 'maybe or 'found. In the latter case, remove + the id. from the found types list, too. + +2020-02-23 Juri Linkov + + * lisp/replace.el (occur-engine-line): Revert part of fb16313025 (bug#39597) + +2020-02-23 Dmitry Gutov + + Move more logic to vc-ignore from vc-default-ignore + + * lisp/vc/vc-dir.el (vc-dir-ignore): + Pass relative file names to vc-ignore. + + * lisp/vc/vc.el (vc-ignore): Move the responsibility of + constructing the ignore pattern (right now, most often a relative + file name) using a file name received from the user, here. + (vc-default-ignore): ...from here (bug#37189, see discussion). + Also clarify the docstring. + +2020-02-22 Eli Zaretskii + + Warn about the likes of "[:alnum:]" in regexps + + * doc/lispref/searching.texi (Char Classes): Warn about erroneous + usage of named character classes. Suggested by Stephen Leake + . + +2020-02-22 Wolfgang Scherer + + Don't write absolute filenames and duplicate strings to CVS ignore files + + * lisp/vc/vc-cvs.el (vc-cvs-ignore): Expand filename correctly + and pass on only the basename as the pattern. + (vc-cvs-append-to-ignore) Do not write duplicate strings to + .cvsignore. New optional parameter SORT to more explicitly + control sorting of the ignore entries. (Bug#37215) + * lisp/vc/pcvs.el (cvs-mode-ignore): Call 'vc-cvs-append-to-ignore' + with SORT argument. + +2020-02-21 Federico Tedin + + Fix cursor-sensor--detect when current buf != selected window's buf + + * lisp/emacs-lisp/cursor-sensor.el (cursor-sensor--detect): Avoid + trying to read text properties from position taken from another + buffer. (Bug#38740) + +2020-02-21 Eli Zaretskii + + * doc/emacs/sending.texi (Mail Sending): Fix index entries. + +2020-02-21 Allen Li + + Document 'message-send-mail-function' in the Emacs manual + + Most of the manual here addresses Message mode, yet talks about + 'send-mail-function' which is used for Mail mode. + Fixing this completely requires more involved work, but for now at + least document the difference here. + + * doc/emacs/sending.texi (Mail Sending): Mention + 'message-send-mail-function'. (Bug#39639) + +2020-02-21 Allen Li + + Fix reference to 'message-send-and-exit' in Emacs manual + + Most of the manual here addresses Message mode, and C-c C-c directly + above cites the Message mode command, not the Mail mode command. + + * doc/emacs/sending.texi (Mail Sending): Fix reference. (Bug#39639) + +2020-02-21 Steven Allen + + Skip shell prompt on current line in Eshell even if it's protected + + When the eshell prompt is protected (e.g., with rear non-sticky, + inhibited movements, etc.), 'beginning-of-line' won't move to the + actual beginning of the line and therefore won't skip over the + prompt. + * lisp/eshell/em-prompt.el (eshell-previous-prompt): Use + 'forward-line' to go to the beginning of the line, even if it's + protected. (Bug#39627) + +2020-02-20 Mattias Engdegård + + Fix broken regexps + + Incorrect escaping prevented these from working as intended. + Found by relint. + + * lisp/progmodes/cc-defs.el (c-search-backward-char-property): + Add missing backslash. + * lisp/progmodes/simula.el (simula-mode): + Remove one backslash too many. + 2020-02-19 Paul Eggert * Makefile.in (PREFERRED_BRANCH): Now emacs-27. @@ -766,7 +925,7 @@ Improve explanation of available font backends under X - * frames.texi (Font and Color Parameters): Clarify that you can't + * doc/emacs/frames.texi (Font and Color Parameters): Clarify that you can't have HarfBuzz and non-HarfBuzz at the same time for xft and cairo font backends. @@ -1313,7 +1472,7 @@ the monitors need to be adjusted, not just the width and height (Bug#31223). - * xfns.c (Fx_display_monitor_attributes_list): Scale top-left + * src/xfns.c (Fx_display_monitor_attributes_list): Scale top-left coordinates. 2020-01-07 Dmitry Gutov @@ -1359,11 +1518,11 @@ * configure.ac: Remove check for sys/prctl.h and prctl, check for pthread_setname_np instead. - * systhread.c: Remove sys/prctl.h include. + * src/systhread.c: Remove sys/prctl.h include. (sys_thread_create) [HAVE_PTHREAD_SETNAME_NP]: Use pthread_setname_np to set the name of the newly created thread (Bug#38632). - * thread.c (Fmake_thread): Use ENCODE_SYSTEM instead of + * src/thread.c (Fmake_thread): Use ENCODE_SYSTEM instead of ENCODE_UTF_8 on the thread name. 2020-01-05 Paul Eggert @@ -2845,7 +3004,7 @@ Check for GUI frame in ns_color_index_to_rgba - * nsterm.m (ns_color_index_to_rgba): Check that we're using a GUI + * src/nsterm.m (ns_color_index_to_rgba): Check that we're using a GUI frame before converting color (Bug#38564). 2019-12-11 Michael Albinus @@ -4588,7 +4747,7 @@ Make gnus-mailing-list-archive recognize https - * /lisp/gnus/gnus-ml.el (gnus-mailing-list-archive): Accept https in + * lisp/gnus/gnus-ml.el (gnus-mailing-list-archive): Accept https in regexp. 2019-11-22 Filipp Gunbin @@ -4896,7 +5055,7 @@ Remember the full font description instead of just the family so that size/style/weight settings are preserved. - * gtkutil.c (xg_get_font) [HAVE_GTK3]: Use the pango font + * src/gtkutil.c (xg_get_font) [HAVE_GTK3]: Use the pango font description to set/get the current font (Bug#28901). 2019-11-19 Robert Pluim @@ -4961,7 +5120,7 @@ Our minimum GTK3 version is 3.10, the font filter functions appeared in 3.2. - * gtkutil.c (xg_font_filter) [HAVE_GTK3]: Just check for HAVE_GTK3. + * src/gtkutil.c (xg_font_filter) [HAVE_GTK3]: Just check for HAVE_GTK3. (xg_get_font) [HAVE_GTK3]: Same here. 2019-11-18 Michael Albinus @@ -5414,14 +5573,14 @@ Make so-long disable flymake, flyspell, flycheck - * so-long.el (so-long-minor-modes): Add flymake-mode, flyspell-mode, + * lisp/so-long.el (so-long-minor-modes): Add flymake-mode, flyspell-mode, and flycheck-mode. 2019-11-14 Phil Sainty Support loading so-long.el on top of an earlier version - * so-long.el (so-long-version, so-long--latest-version): New variables. + * lisp/so-long.el (so-long-version, so-long--latest-version): New variables. This enables users to safely load version 1.0 of so-long.el on top of an earlier version, as well as making provisions for doing likewise @@ -5559,7 +5718,7 @@ time-stamp: update support for time zone numeric offset - * time-stamp.el (time-stamp-string-preprocess): Change new format for + * lisp/time-stamp.el (time-stamp-string-preprocess): Change new format for numeric time zone from %:z to %5z to match format-time-string better. (time-stamp-format): Document support for numeric time zone. See discussion in bug#32931. @@ -6108,7 +6267,7 @@ Widen around c-font-lock-fontify-region. This fixes bug #38049. - * lisp/progmodes/cc-mode (c-font-lock-fontify-region): Widen in this function, + * lisp/progmodes/cc-mode.el (c-font-lock-fontify-region): Widen in this function, to ensure that the CC Mode font locking mechanism can examine characters outside the given region. @@ -6430,14 +6589,14 @@ time-stamp: add support for time zone numeric offset - * time-stamp.el: Implement %:z as expanding to the numeric time zone + * lisp/time-stamp.el: Implement %:z as expanding to the numeric time zone offset, to address the feature request of bug#32931. Do not document it yet, to discourage compatibility problems in mixed Emacs 26 and Emacs 27 environments. Documentation will be added in a subsequent release at least two years later. (We cannot yet use %z for numeric time zone because in Emacs 26 it was documented to do something else.) - * time-stamp-tests.el (time-stamp-test-format-time-zone): expand this + * test/lisp/time-stamp-tests.el (time-stamp-test-format-time-zone): expand this test and break it into two tests, time-stamp-test-format-time-zone-name and time-stamp-test-format-time-zone-offset. @@ -7297,7 +7456,7 @@ Support \pagebreak[0] for paragraph-separate in latex-mode - * textmodes/tex-mode.el (latex-mode): In 'paragraph-separate' allow + * lisp/textmodes/tex-mode.el (latex-mode): In 'paragraph-separate' allow optional argument ('[0]', etc.) for '\pagebreak[0]'. (Bug#19039) 2019-10-30 Tom Tromey @@ -7717,7 +7876,7 @@ 2019-10-27 Eric Ludlam - * test/lisp/cedet/semantic-utest: silence compiler warnings + * test/lisp/cedet/semantic-utest.el: silence compiler warnings * test/lisp/cedet/semantic-utest-c.el (semantic-test-c-preprocessor-simulation): Use with-current-buffer. @@ -7763,7 +7922,7 @@ (describing time-stamp-time-zone's domain before 2015) to new predicate time-stamp-zone-type-p (describing the current domain). - * time-stamp-tests.el (time-stamp-test-helper-zone-type-p): New test. + * test/lisp/time-stamp-tests.el (time-stamp-test-helper-zone-type-p): New test. 2019-10-27 Eli Zaretskii @@ -9997,7 +10156,7 @@ Changed handle_face_prop_general prototype. - * src/xdisp.h (handle_face_prop_general): Changed function prototype + * src/xdisp.c (handle_face_prop_general): Changed function prototype to receive different arguments. 2019-10-14 Jimmy Aguilar Mena @@ -11484,7 +11643,7 @@ 2019-10-06 Stefan Monnier - * eieio-core.el (eieio--full-class-object): New function. + * lisp/emacs-lisp/eieio-core.el (eieio--full-class-object): New function. Rather than explicitly call eieio-class-un-autoload, the autoloading is now performed on-demand if you use eieio--full-class-object. @@ -13123,7 +13282,7 @@ :format property of this widget. If %n is used at the end of the format string, unrelated widgets get indented. (Bug#12533) - * test/wid-edit-tests.el (widget-test-indentation-after-%n) + * test/lisp/wid-edit-tests.el (widget-test-indentation-after-%n) (widget-test-indentation-after-newline) (widget-test-newline-and-indent-same-widget): New tests. @@ -13521,7 +13680,7 @@ Add different faces for different citation levels in Message mode - * message.el (message-font-lock-keywords) + * lisp/gnus/message.el (message-font-lock-keywords) (message-font-lock-make-cited-text-matcher): Add support for different faces for different citation levels. The faces are defined in the faces named `message-cited-text-N': N of the @@ -15762,7 +15921,7 @@ Fix flymake-proc temporary file deletion bug - * list/progmodes/flymake-proc.el (flymake-proc-create-temp-inplace): + * lisp/progmodes/flymake-proc.el (flymake-proc-create-temp-inplace): Include a time string part (hour + minute + second + nanosecond) in the temporary name to make it unique enough. (flymake-proc-legacy-flymake): Store temporary file names in the @@ -18541,7 +18700,7 @@ password-cache: differentiate null values from non-existent entries - * password-cache.el (password-in-cache-p, password-cache-add): + * lisp/password-cache.el (password-in-cache-p, password-cache-add): properly detect non-existent entry. (Bug#36834) 2019-08-11 Eli Zaretskii @@ -19560,7 +19719,7 @@ easy-menu-define doc string fix - * emacs-lisp/easymenu.el (easy-menu-define): Docstring :label and + * lisp/emacs-lisp/easymenu.el (easy-menu-define): Docstring :label and :help of the menu itself. 2019-08-03 Lars Ingebrigtsen @@ -19866,7 +20025,7 @@ * lisp/url/url-http.el (url-http-simple-after-change-function) (url-http-content-length-after-change-function): Use byte-count-to-string-function. - * test/lisp/files-test.el (files-test-file-size-human-readable): + * test/lisp/files-tests.el (files-test-file-size-human-readable): Test file-size-human-readable-iec. 2019-08-02 Eli Zaretskii @@ -21074,7 +21233,7 @@ * doc/emacs/display.texi (Colors): Specify the convention used for "#RGB" color triplets. - * test/lisp/tty-colors-tests.el: New file. + * test/lisp/term/tty-colors-tests.el: New file. * etc/NEWS: Mention the change. @@ -24393,7 +24552,7 @@ Fix indentation of default clocking definitions. - * verilog-mode.el (verilog-default-clocking-re): Fix indentation of default + * lisp/progmodes/verilog-mode.el (verilog-default-clocking-re): Fix indentation of default clocking definitions, Verilog-Mode bug1457. Reported by Paul Donahue. 2019-07-06 Wilson Snyder @@ -24688,7 +24847,7 @@ Also fix two faulty regexps, save-match-data, and check c-major-mode-is 'c++-mode where needed. - * lis/progmodes/cc-langs.el (c-last-c-comment-end-on-line-re) + * lisp/progmodes/cc-langs.el (c-last-c-comment-end-on-line-re) (c-last-open-c-comment-start-on-line-re): Handle repeated *s in regexp correctly. @@ -25940,7 +26099,7 @@ Support opening a new connection when reverting a telnet buffer - * net/telnet.el (telnet-connect-command): New variable. + * lisp/net/telnet.el (telnet-connect-command): New variable. (telnet-revert-buffer): New function. (telnet-mode): Use `telnet-revert-buffer' as `revert-buffer-function'. (telnet, rsh): Set `telnet-connect-command' accordingly (bug#18312). @@ -25949,7 +26108,7 @@ Suppress warning about unix-sync in nnmaildir.el - * nnmaildir.el (nnmaildir-request-replace-article): Check if the + * lisp/gnus/nnmaildir.el (nnmaildir-request-replace-article): Check if the function `unix-sync' is bound before running it. 2019-06-25 Ivan Shmakov @@ -25978,7 +26137,7 @@ Highlight zsh glob flags and qualifiers in sh-mode - * lisp/progmode/sh-script.el (sh-syntax-propertize-function): + * lisp/progmodes/sh-script.el (sh-syntax-propertize-function): Add regexps to highlight zsh glob flags and alternate qualifiers without mistaking them for comments. (bug#19455). @@ -26168,7 +26327,7 @@ This fixes bug #25111. - * doc/lispref/display.text (Overlay Properties): For the hook property + * doc/lispref/display.texi (Overlay Properties): For the hook property modification-hooks, state that inhibit-modification-hooks is bound to non-nil when calling its functions. This also applies to insert-in-front-hooks and insert-behind-hooks, which refer to modification-hooks. @@ -26182,7 +26341,7 @@ Add imenu support to package-menu-mode - * gnus-cite.el (gnus-message-citation-mode): Fontify if the major + * lisp/gnus/gnus-cite.el (gnus-message-citation-mode): Fontify if the major mode is derived from message-mode (not necessarily equal to message-mode) (bug#25124). @@ -26190,7 +26349,7 @@ Add imenu support to package-menu-mode - * lisp/emacs-list/package.el + * lisp/emacs-lisp/package.el (package--imenu-prev-index-position-function package--imenu-extract-index-name-function): Add Imenu functions to package-menu-mode (bug#27134). @@ -26564,7 +26723,7 @@ build-aux/update-copyright, lib/canonicalize-lgpl.c, lib/gnulib.mk.in, lib/malloca.c, lib/malloca.h, lib/pathmax.h, m4/canonicalize.m4, m4/double-slash-root.m4, m4/gnulib-comp.m4, - m4/malloca.m4, my/pathmax.4: copy from GNUlib or regenerate from + m4/malloca.m4, m4/pathmax.m4: copy from GNUlib or regenerate from update * src/emacs.c: find dump by canonical path @@ -27410,7 +27569,7 @@ Change font_put_extra value for property removal from Qnil to Qunbound - * font.c (font_put_extra): If VAL is Qunbound, delete the slot for PROP from + * src/font.c (font_put_extra): If VAL is Qunbound, delete the slot for PROP from the list of extra properties. Previous value Qnil is valid as boolean. (font_clear_prop): Changed argument of font_put_extra for property removal. @@ -27423,7 +27582,7 @@ 2019-06-19 Roland Winkler - * bookmark.el (bookmark-set-internal): Fix format string. + * lisp/bookmark.el (bookmark-set-internal): Fix format string. 2019-06-19 Juri Linkov @@ -27944,7 +28103,7 @@ 2019-06-17 Roland Winkler - * bookmark.el: Watch bookmark file. Use lexical binding. + * lisp/bookmark.el: Watch bookmark file. Use lexical binding. (bookmark-watch-bookmark-file): New user variable. (bookmark-alist): Fix docstring. @@ -28183,7 +28342,7 @@ 2019-06-16 Roland Winkler - * find-dired.el (find-dired-refine-function): Fix defcustom. + * lisp/find-dired.el (find-dired-refine-function): Fix defcustom. 2019-06-16 Eric Abrahamsen @@ -28661,7 +28820,7 @@ Clean up verilog-mode.el documentation examples to match behavior. - * verilog-mode.el (verilog-auto, verilog-auto-arg) + * lisp/progmodes/verilog-mode.el (verilog-auto, verilog-auto-arg) (verilog-auto-ascii-enum, verilog-auto-inout) (verilog-auto-inout-comp, verilog-auto-inout-in) (verilog-auto-inout-modport, verilog-auto-inout-module) @@ -29231,8 +29390,9 @@ Escape newlines when printing functions in timer list - * timer-list.el (list-timers): Bind `print-escape-newlines' to avoid - newlines in printed representation (bug#36187). + * lisp/emacs-lisp/timer-list.el (list-timers): Bind + `print-escape-newlines' to avoid newlines in printed + representation (bug#36187). 2019-06-13 Lars Ingebrigtsen @@ -29282,7 +29442,7 @@ This variable was declared after an invocation of a defsubst which used it, the defsubst being in another file. - * lisp/progmodes/cc-mode (c-syntax-table-hwm): Move the declaration to earlier + * lisp/progmodes/cc-mode.el (c-syntax-table-hwm): Move the declaration to earlier in the file. 2019-06-12 Glenn Morris @@ -29593,14 +29753,14 @@ Fix to previous commit - * find-dired.el (find-dired-sentinel): Check whether + * lisp/find-dired.el (find-dired-sentinel): Check whether find-dired-refine-function is non-nil. 2019-06-11 Roland Winkler Allow refining the *Find* buffer of find-dired. (Bug#29513) - * find-dired.el (find-dired-refine-function): New user variable. + * lisp/find-dired.el (find-dired-refine-function): New user variable. (find-dired-sentinel): Use it. Simplify. (find-dired-sort-by-filename): New function. @@ -30546,7 +30706,7 @@ 2019-06-04 Stefan Monnier - * sgml-mode.el (sgml-syntax-propertize-rules): More verbose comments + * lisp/textmodes/sgml-mode.el (sgml-syntax-propertize-rules): More verbose comments 2019-06-04 Jackson Ray Hamilton @@ -30747,11 +30907,11 @@ 2019-06-02 Juanma Barranquero - * help-fns.el (help-fns--first-release): Do not fail if no release is found. + * lisp/help-fns.el (help-fns--first-release): Do not fail if no release is found. 2019-06-02 Stefan Monnier - * gnus-(sum|async).el: Eliminate assumptions about gnus-data format + * lisp/gnus/gnus-sum.el, lisp/gnus/gnus-async.el: Eliminate assumptions about gnus-data format * lisp/gnus/gnus-async.el (gnus-async-with-semaphore): Use `declare`. (gnus-async-prefetch-next): Don't assume gnus-data-number == car. @@ -30764,7 +30924,7 @@ 2019-06-02 Stefan Monnier - * gnus.el: Fix cycle in eager macroexpansion + * lisp/gnus/gnus.el: Fix cycle in eager macroexpansion * lisp/gnus/gnus-sum.el (gnus-data): Use cl-defstruct. (gnus-data-set-pos, gnus-data-set-header, gnus-data-set-mark) @@ -30908,7 +31068,7 @@ Make rcirc PART and QUIT reasons customizable (Bug#12857) - * rcirc.el: (rcirc-default-part-reason, rcirc-default-quit-reason): + * lisp/net/rcirc.el: (rcirc-default-part-reason, rcirc-default-quit-reason): New customizable vars. (rcirc-cmd-quit, rcirc-cmd-part): Consult them. @@ -31203,7 +31363,7 @@ Optimize one of CC Mode's syntax caches for long comments and strings. - * lisp/progmoes/cc-langs.el (c-block-comment-awkward-chars): New lang + * lisp/progmodes/cc-langs.el (c-block-comment-awkward-chars): New lang constant and variable. * lisp/progmodes/cc-engine.el (c-state-semi-nonlit-pos-cache): Enhance the @@ -31445,7 +31605,7 @@ 2019-05-28 Stefan Monnier - * mule-cmds.el (encoded-string-description): Require unibyte string as input + * lisp/international/mule-cmds.el (encoded-string-description): Require unibyte string as input 2019-05-28 Stefan Monnier @@ -31658,7 +31818,7 @@ * lisp/startup.el (command-line): Allow XDG-style as well as old style init paths. - * doc/startup.texi: Document the above change. + * doc/emacs/custom.texi: Document the above change. 2019-05-25 Mauro Aranda @@ -32332,7 +32492,7 @@ This avoids clashing with the XColor struct from X. - * src/dispextern [HAVE_X_WINDOWS]: Define Emacs_Color alias. + * src/dispextern.h [HAVE_X_WINDOWS]: Define Emacs_Color alias. [!HAVE_X_WINDOWS]: Rename XColor compatibility struct to Emacs_Color. Remove unused fields. @@ -32944,7 +33104,7 @@ 2019-05-16 Stefan Monnier - * mule.el (set-buffer-file-coding-system): Don't burp on iso-2022-7bit + * lisp/international/mule.el (set-buffer-file-coding-system): Don't burp on iso-2022-7bit 2019-05-16 Paul Pogonyshev @@ -32973,7 +33133,7 @@ 2019-05-16 Stefan Monnier - * cl-macs-tests.el (cl-macs-test--symbol-macrolet): New test + * test/lisp/emacs-lisp/cl-macs-tests.el (cl-macs-test--symbol-macrolet): New test 2019-05-16 Eric Abrahamsen @@ -33398,7 +33558,7 @@ 2019-05-12 Stefan Monnier - * lisp/emacs-lisp/packages.el: Add `all` to package-check-signature + * lisp/emacs-lisp/package.el: Add `all` to package-check-signature (package-check-signature): Add `all` option. (package--check-signature-content): Adjust accordingly. @@ -33782,7 +33942,7 @@ Fix verilog-mode module backticks; whitespace from prev commits. - * verilog-mode.el (verilog-read-inst-module-matcher): + * lisp/progmodes/verilog-mode.el (verilog-read-inst-module-matcher): Work when point is near backtick. Reported by Mattias Engdegard. 2019-05-06 Juri Linkov @@ -34649,7 +34809,7 @@ CC Mode: in certain font lock loops, check point is not beyond limit. - * /lisp/progmodes/cc-fonts.el (c-font-lock-enum-body) + * lisp/progmodes/cc-fonts.el (c-font-lock-enum-body) (autodoc-font-lock-line-markup): As part of the `while' condition, check that the previous iteration of the loop hasn't moved point past `limit', thus obviating "wrong side of point" errors in re-search-forward, etc. @@ -34934,7 +35094,7 @@ Add terminal hook query_frame_background_color - * src/termhooks.c (query_frame_background_color): New terminal hook. + * src/termhooks.h (query_frame_background_color): New terminal hook. * src/image.c (image_query_frame_background_color): Remove. Use the terminal hook instead. @@ -34981,7 +35141,7 @@ * src/w32term.c: * src/xterm.c: Rename x_get_keysym_name to get_keysym_name. - * src/nsfns.c: + * src/nsfns.m: * src/nsterm.m: Rename x_* procedures to ns_*. * src/w32fns.c: @@ -35754,7 +35914,7 @@ 2019-04-22 Mattias Engdegård - * autorevert.el (auto-revert-notify-rm-watch): Simplify. + * lisp/autorevert.el (auto-revert-notify-rm-watch): Simplify. 2019-04-22 Mattias Engdegård @@ -35802,7 +35962,7 @@ Module API: Don’t require null-terminated strings in make_string. - * emacs-module.c (module_make_string): Use make_unibyte_string, which + * src/emacs-module.c (module_make_string): Use make_unibyte_string, which doesn’t require its argument to be null-terminated. Since it always returns a heap-allocated string, we don’t have to copy it any more while decoding. @@ -36002,20 +36162,23 @@ to pacify LeakSanitizer. 2019-04-20 Michael R. Mauger + Fix Bug#35307. - * lisp/progmodes/sql.el Bug#35307 - (sql-product-alist): Added :prompt-cont-regexp for ms. + * lisp/progmodes/sql.el(sql-product-alist): Added + :prompt-cont-regexp for ms. Looking for experience with Microsofts SQLCMD interpreter and adjustments needed for Emacs to support it. 2019-04-20 Michael R. Mauger + Fix Bug#24483. - * lisp/progmodes/sql.el Bug#24483 - (sql-interactive-remove-continuation-prompt): Properly protect `sql-prompt-cont-regexp'. + * lisp/progmodes/sql.el + (sql-interactive-remove-continuation-prompt): Properly protect + `sql-prompt-cont-regexp'. (sql-interactive-mode): Same. - * lisp/progmodes.sql.el + * lisp/progmodes/sql.el (sql-product-alist): Corrected :terminator defns. (sql-debug-send): New variable. (sql-send-string): Use it and correct buffer context. @@ -37986,7 +38149,7 @@ Potentially manifest some new bugs (due to false positives with ‘<’ and ‘>’ and SGML detection). Slow down indentation a fair bit. - * list/progmodes/js.el (js-jsx-syntax, js--jsx-start-tag-re) + * lisp/progmodes/js.el (js-jsx-syntax, js--jsx-start-tag-re) (js--looking-at-jsx-start-tag-p, js--looking-back-at-jsx-end-tag-p): New variables and functions. (js--jsx-find-before-tag, js--jsx-after-tag-re): Deleted. @@ -38149,7 +38312,7 @@ 2019-04-08 Stefan Monnier - * nadvice.el: Add ourselves to package--builtin-versions + * lisp/emacs-lisp/nadvice.el: Add ourselves to package--builtin-versions 2019-04-08 Stefan Monnier @@ -38841,7 +39004,7 @@ string. (c-string-delims): Change doc string to doc comment. - * listp/progmodes/cc-mode.el (c-before-change-check-unbalanced-strings): In + * lisp/progmodes/cc-mode.el (c-before-change-check-unbalanced-strings): In searches and comparisons, take account of the string delimiters possibly being '. Fix argument in call of c-before-change-check-unbalanced-strings. (c-parse-quotes-before-change, c-parse-quotes-after-change): Bind @@ -39186,7 +39349,7 @@ 2019-03-26 Stefan Monnier - * easy-mmode.el: simplify via custom-current-group + * lisp/emacs-lisp/easy-mmode.el: simplify via custom-current-group * lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Don't try and guess a default :group, defcustom does it better anyway. @@ -39483,9 +39646,9 @@ about potential NULL pointer dereferencing. 2019-03-22 Michael R. Mauger - - * lisp/progmodes/sql.el Bug#25424 - (sql-end-of-statement): default terminator as semicolon. + Fix Bug#25424. + * lisp/progmodes/sql.el (sql-end-of-statement): default terminator + as semicolon. 2019-03-22 Stephen Leake @@ -40408,7 +40571,7 @@ 2019-03-09 Christopher Wellons (tiny change) - * list/emulation/viper: Use user-error for "Viper bell" + * lisp/emulation/viper.el: Use user-error for "Viper bell" * lisp/emulation/viper-init.el (viper-ViperBell): New constant. @@ -40437,7 +40600,7 @@ Mention `binary-as-unsigned' in `format' docstring (Bug#34792) - * src/src/editfns.c (format): Update docstring to mention binary-as-unsigned + * src/editfns.c (format): Update docstring to mention binary-as-unsigned (Bug#34792) 2019-03-09 Glenn Morris @@ -41794,7 +41957,7 @@ Jump to the current error in xref with zero prefix arg - * xref.el (xref--next-error-function): Handle the corner case of + * lisp/progmodes/xref.el (xref--next-error-function): Handle the corner case of n == 0. (Bug#34462) 2019-02-22 Paul Eggert @@ -41994,7 +42157,7 @@ Correct implementation of `sql-set-product-feature' (Bug#30494). - * lisp.progmodes/sql.el (sql-add-product): Correct argument spec. + * lisp/progmodes/sql.el (sql-add-product): Correct argument spec. (sql-set-product-feature): Handle all cases as intended. (sql-get-product-feature): Fetch varaiable value by `eval'. * test/lisp/progmodes/sql-tests.el (sql-test-feature-value-[a-d]): @@ -42129,7 +42292,7 @@ (sql-password-search-wallet-function): New variable. (sql-get-login): Handle password wallet search. (sql-product-interactive): Handle password function. - * test/lisp/progmodes/sql-test.el: Test wallet changes. + * test/lisp/progmodes/sql-tests.el: Test wallet changes. (sql-test-login-params): New test variable. (with-sql-test-connect-harness): New macro to wrap test configuration around calls to `sql-connect'. @@ -42268,7 +42431,7 @@ (c-forward-decl-or-cast-1): Recognize a function identifier being declared in parentheses. - * lisp/promodes/cc-mode.el (c-before-change): Supply a `beg' argument to + * lisp/progmodes/cc-mode.el (c-before-change): Supply a `beg' argument to c-invalidate-sws-region-before. * lisp/progmodes/cc-vars.el (c-noise-macro-with-parens-name-re) @@ -42279,7 +42442,7 @@ * Put INLINE and ATTRIBUTE_NO_SANITIZE_UNDEFINED into c-noise-macro-names - * .dir-locals (entry for c-mode): Put the two strings into + * .dir-locals.el (entry for c-mode): Put the two strings into c-noise-macro-names. 2019-02-16 Paul Eggert @@ -43565,7 +43728,7 @@ * lisp/net/tramp-sh.el (tramp-sh-handle-file-notify-add-watch): * lisp/net/tramp-smb.el (tramp-smb-action-get-acl) (tramp-smb-action-set-acl, tramp-smb-wait-for-output): - * tramp-sudoedit.el (tramp-sudoedit-action-sudo): + * lisp/net/tramp-sudoedit.el (tramp-sudoedit-action-sudo): Adapt `accept-process-output' calls wrt timeouts. 2019-01-28 Eli Zaretskii @@ -43707,7 +43870,7 @@ Use minibuffer-default in completion-all-sorted-completions (bug#34083) - * lisp/minibuffer (completion-all-sorted-completions): Sort with the + * lisp/minibuffer.el (completion-all-sorted-completions): Sort with the default on top. 2019-01-25 Alex Branham @@ -44037,7 +44200,7 @@ source symbols could get overwritten when parameter adorn is set to 'appendable. - * list/progmodes/cc-langs.el (c-cpp-include-key): New lang const and var. + * lisp/progmodes/cc-langs.el (c-cpp-include-key): New lang const and var. 2019-01-22 Alan Mackenzie @@ -44173,7 +44336,7 @@ Minor cleanup in pdumper.c - * src/pdumper (subtract_timespec): Function removed. + * src/pdumper.c (subtract_timespec): Function removed. (pdumper_load): Use timespec_sub instead of subtract_timespec. 2019-01-19 Eli Zaretskii @@ -44414,7 +44577,7 @@ Temporarily comment out CC Mode from tests which are incompatible with it. - * tests/electric-tests (electric-pair-test-for): comment out c++-mode from the + * test/lisp/electric-tests.el (electric-pair-test-for): comment out c++-mode from the list of modes to be used in tests. (electric-pair-whitespace-chomping-2-at-point-4-in-c++-mode-in-strings) (ert-deftest electric-layout-int-main-kernel-style) @@ -44629,7 +44792,7 @@ (syms_of_ftcrfont): call it. * src/ftfont.c (syms_of_ftfont_for_pdumper): new function. (syms_of_ftfont): call it. - * src/ftxont.c (syms_of_ftxfont_for_pdumper): new function. + * src/ftxfont.c (syms_of_ftxfont_for_pdumper): new function. (syms_of_ftxfont): call it. * src/gmalloc.c: adjust for pdumper througout (DUMPED): remove weird custom dumped indicator. @@ -44706,7 +44869,7 @@ re_match_object. * src/sysdep.c: use will_dump_with_unexec_p() instead of bss hack thing. - * src/syssignals.h (init_sigsegv): declare. + * src/syssignal.h (init_sigsegv): declare. * src/systime.h (init_timefns): remove bool from signature. * src/textprop.c (syms_of_textprop): move staticpro. * src/thread.c (main_thread_p): constify. @@ -45436,7 +45599,7 @@ Fix electric indent bug in python-mode after dedenting colon - * list/progmodes/python.el (python-indent-post-self-insert-function): + * lisp/progmodes/python.el (python-indent-post-self-insert-function): Use markers instead of positions when reindenting statement(s) after inserting electric colon to avoid reindenting too many statements (bug#22663). @@ -46641,7 +46804,7 @@ 2018-12-16 Stefan Monnier - * lisp/net/tramp: Rework mutual dependencies + * lisp/net/tramp.el: Rework mutual dependencies Functionally split tramp-loaddefs.el into two parts: one part run while loading it at the very beginning of loading tramp.el (holding plain @@ -47929,7 +48092,7 @@ Go into emacs-lisp-compilation-mode rather than the plain compilation-mode. (compile-defun): Bind byte-compile-current-file to current-buffer, not nil. - * lisp/progmodes/compilation-mode + * lisp/progmodes/compile.el (compilation-parse-errors-filename-function): Amend comments to specify that this function may return a buffer, and that it need not save the match data. (Several places): Amend comments to allow for the use of a buffer rather than @@ -48857,7 +49020,7 @@ 2018-11-19 Stefan Monnier - * mouse.el (mouse-posn-property): Add comment + * lisp/mouse.el (mouse-posn-property): Add comment 2018-11-18 Stefan Monnier @@ -49809,7 +49972,7 @@ * emacsclient.c (set_socket): Add support for the EMACS_SOCKET_NAME environment variable. (Bug#33095) - * misc.texi (emacsclient Options): + * doc/emacs/misc.texi (emacsclient Options): * emacsclient.1: Document the EMACS_SOCKET_NAME environment variable. @@ -49874,7 +50037,7 @@ edebug.el: Move window focus switch into edebug-pop-to-buffer - * lisp/emacs-lisp/follow.el (edebug-focus-frame): Remove. + * lisp/follow.el (edebug-focus-frame): Remove. (edebug-pop-to-buffer): Call x-focus-frame for GUI frames. (edebug-default-enter, edebug--display-1): Replace call to edebug-focus-frame with x-focus-frame. @@ -49989,7 +50152,7 @@ 2018-10-19 Stefan Monnier - * emacs-lisp/package.el (package-get-version): Change into a function + * lisp/emacs-lisp/package.el (package-get-version): Change into a function (package-quickstart-refresh): Mangle string so it doesn't turn into a false positive for "no-byte-compile: t". @@ -50121,7 +50284,7 @@ when mouse-drag-copy-region is set to t. (Bug#31240) (mouse-drag-and-drop-region): Allow dragging and dropping rectangular regions. (Bug#31240) - * rect.el (rectangle-intersect-p) + * lisp/rect.el (rectangle-intersect-p) (rectangle-position-as-coordinates): New functions. 2018-10-16 Juri Linkov @@ -50579,10 +50742,10 @@ Improvements on (TICKS . HZ) This patch is in response to Eli's review (Bug#32902#10). - * src/systime.c: Doc strings of affected functions now refer + * src/systime.h: Doc strings of affected functions now refer to format-time-string instead of to Lisp manual, and format-time-string's doc string covers time values. - * test/src/systime-tests.el (format-time-string-with-zone): + * test/src/timefns-tests.el (format-time-string-with-zone): Check decode-time too. (decode-then-encode-time, time-arith-tests): New tests. @@ -50622,7 +50785,7 @@ * lisp/net/ntlm.el (ntlm-compute-timestamp): * lisp/obsolete/vc-arch.el (vc-arch-add-tagline): * lisp/org/org-id.el (org-id-uuid, org-id-time-to-b36): - * lisp/tar-mode (tar-octal-time): + * lisp/tar-mode.el (tar-octal-time): Don't assume timestamps default to list form. * lisp/tar-mode.el (tar-parse-octal-long-integer): Now an obsolete alias for tar-parse-octal-integer. @@ -50662,7 +50825,7 @@ (Fencode_time): Add new two-arg functionality. * src/systime.h (struct lisp_time): Now ticks+hz rather than hi+lo+us+ps, since ticks+hz does not lose info. - * test/src/systime-tests.el (time-equal-p-nil-nil): + * test/src/time-stamp-tests.el (time-equal-p-nil-nil): New test. 2018-10-06 Paul Eggert @@ -50854,7 +51017,7 @@ Automate support for `sql-indent' ELPA package - * progmodes/lisp/sql.el (sql-use-indent-support): New variable. + * lisp/progmodes/sql.el (sql-use-indent-support): New variable. (sql-is-indent-available): New function. (sql-indent-enable): Use above. (sql-mode-hook, sql-interactive-mode-hook): Add `sql-indent-enable'. @@ -52158,7 +52321,7 @@ Do not call mh-next-msg from mh-junk-process-* fns - * mh-junk.el (mh-junk-process-blacklist, mh-junk-process-whitelist): Do + * lisp/mh-e/mh-junk.el (mh-junk-process-blacklist, mh-junk-process-whitelist): Do not call mh-next-msg. Now that these functions are called from mh-execute-commands, they should not change the current message pointer. The calls to mh-next-msg are probably left over from when blacklist and @@ -53460,7 +53623,7 @@ EUDC: Add more BBDB >= 3 support - * lisp/net/eudcb-bbdb.el Declare BBDB >= 3 functions. + * lisp/net/eudcb-bbdb.el: Declare BBDB >= 3 functions. (eudc-bbdb-field): Add translation from company to organization. (eudc-bbdb-extract-phones, eudc-bbdb-extract-addresses) @@ -54808,7 +54971,7 @@ * doc/lispref/edebug.texi (Edebug Misc): Refer to new node. * doc/misc/ert.texi (Running Tests Interactively): Refer to new node. - * lisp/emacs-lisp-backtrace.el: New file. + * lisp/emacs-lisp/backtrace.el: New file. * test/lisp/emacs-lisp/backtrace-tests.el: New file. * lisp/emacs-lisp/debug.el: (debugger-buffer-state): New cl-defstruct. @@ -54858,7 +55021,7 @@ (ert-results-pop-to-backtrace-for-test-at-point): Use backtrace-mode. (ert--insert-backtrace-header): New function. - * tests/lisp/emacs-lisp/ert-tests.el (ert-test--which-file): + * test/lisp/emacs-lisp/ert-tests.el (ert-test--which-file): Use backtrace-frame slot accessor. 2018-08-03 Gemini Lasswell @@ -55026,7 +55189,7 @@ Reset mh-blacklist and mh-whitelist on folder undo - * mh-funcs.el (mh-undo-folder): Set mh-blacklist and mh-whitelist + * lisp/mh-e/mh-funcs.el (mh-undo-folder): Set mh-blacklist and mh-whitelist to nil, as is done with the other lists of pending operations. 2018-07-30 Michael Albinus @@ -56003,7 +56166,7 @@ Avoid infloop in redisplay due to faulty mode-line properties - * xdisp.c (safe_set_text_properties): New function. + * src/xdisp.c (safe_set_text_properties): New function. (display_mode_element): Call Fset_text_properties through internal_condition_case_n, using safe_set_text_properties as a wrapper. (Bug#32038) @@ -56246,9 +56409,9 @@ * test/src/data-tests.el (data-tests-bignum, data-tests-+) (data-tests-/, data-tests-number-predicates): New tests. - * test/src/fns-tests (test-bignum-eql): New test. - * test/src/lread-tests (lread-long-hex-integer): Expect bignum. - * test/src/print-tests (print-bignum): New test. + * test/src/fns-tests.el (test-bignum-eql): New test. + * test/src/lread-tests.el (lread-long-hex-integer): Expect bignum. + * test/src/print-tests.el (print-bignum): New test. 2018-07-12 Tom Tromey @@ -56262,7 +56425,7 @@ Make comparison operators handle bignums - * sc/data.c (bignumcompare): New function. + * src/data.c (bignumcompare): New function. (arithcompare): Handle bignums. 2018-07-12 Tom Tromey @@ -56561,11 +56724,11 @@ Keep interactive uses of 'recenter' backward compatible (Bug#31325) - * window.c (Frecenter): Change the interactive spec to always pass + * src/window.c (Frecenter): Change the interactive spec to always pass a non-nil value to the REDISPLAY argument when called interactively. - * window.el (recenter-top-bottom): Make sure 'recenter's second + * lisp/window.el (recenter-top-bottom): Make sure 'recenter's second argument is non-nil everywhere. - * windows.texi (Textual Scrolling): Update documentation of + * doc/emacs/windows.texi (Textual Scrolling): Update documentation of 'recenter'. 2018-07-07 Eli Zaretskii @@ -56705,12 +56868,12 @@ Make lisp/jsonrpc.el work with Emacs 25.1 - * jsonrpc.el (Package-Requires): Require Emacs 25.1 + * lisp/jsonrpc.el (Package-Requires): Require Emacs 25.1 (jsonrpc-lambda): Use cl-gensym. (jsonrpc--call-deferred): Caddr doesn't exist in emacs 25.1. - * jsonrpc-tests.el + * test/lisp/jsonrpc-tests.el (jsonrpc--call-with-emacsrpc-fixture): New function. (jsonrpc--with-emacsrpc-fixture): Use it. (deferred-action-complex-tests): Adjust test for Emacs 25.1 @@ -56722,7 +56885,7 @@ Add a paragraph to minor mode's docstring documenting the mode's ARG usage if the supplied docstring doesn't already contain the word "ARG". - * easy-mmode.el (easy-mmode--arg-docstring): New const. + * lisp/emacs-lisp/easy-mmode.el (easy-mmode--arg-docstring): New const. (easy-mmode--arg-docstring): New function. (define-minor-mode): Use them. @@ -56743,7 +56906,7 @@ Add a new argument to 'recenter' to allow finer control of redisplay - * window.c (recenter): Add a new REDISPLAY argument to allow the + * src/window.c (recenter): Add a new REDISPLAY argument to allow the caller to control the redisplay behavior. 'recenter' will only redisplay the frame if this new arg and 'recenter-redisplay' are both non-nil. @@ -57192,19 +57355,19 @@ New functions to switch back and forth to another major mode - * subr.el (major-mode--suspended): New var. + * lisp/subr.el (major-mode--suspended): New var. (major-mode-suspend, major-mode-restore): New funs, extracted from doc-view. - * doc-view.el (doc-view--previous-major-mode): Remove. + * lisp/doc-view.el (doc-view--previous-major-mode): Remove. (doc-view-mode): Use major-mode-suspend. (doc-view-fallback-mode): Use major-mode-restore. - * hexl-mode.el (hexl-mode--minor-mode-p, hexl-mode--setq-local): Remove. + * lisp/hexl.el: (hexl-mode--minor-mode-p, hexl-mode--setq-local): Remove. (hexl-mode): Use major-mode-suspend and hexl-follow-ascii-mode. (hexl-mode-exit): Use major-mode-restore. (hexl-activate-ruler, hexl-follow-line): Don't bother trying to preserve earlier state, now that entering/leaving hexl-mode kills local vars. (hexl-follow-ascii-mode): New proper local minor mode. (hexl-follow-ascii): Rewrite, using it. - * image-mode.el (image-mode-previous-major-mode): Remove. + * lisp/image-mode.el (image-mode-previous-major-mode): Remove. (image-mode): Use major-mode-suspend. (image-mode-to-text): Use major-mode-restore. @@ -58220,7 +58383,7 @@ 2018-06-11 Michael R. Mauger - * lisp/progmodes/sql.el Add MariaDB support (Robert Cochran) + * lisp/progmodes/sql.el: Add MariaDB support (Robert Cochran) (sql-product-alist): Add MariaDB entry (sql-mariadb-program, sql-mariadb-options, sql-mariadb-login-params, sql-mode-mariadb-font-lock): New variables, aliases of the MySQL @@ -59322,7 +59485,7 @@ bibtex-search-entry: Reuse the window displaying the buffer. - * textmodes/bibtex.el (bibtex-reposition-window): New optional arg + * lisp/textmodes/bibtex-style.el (bibtex-reposition-window): New optional arg pos. (bibtex-search-crossref, bibtex-search-entry): Use it. (bibtex-search-entry): If possible, reuse the window displaying @@ -59332,7 +59495,7 @@ bibtex-mark-entry: Display no message. - * textmodes/bibtex.el (bibtex-mark-entry): Display no message. + * lisp/textmodes/bibtex.el (bibtex-mark-entry): Display no message. 2018-05-30 Roland Winkler @@ -60168,7 +60331,7 @@ * lisp/net/tramp-gvfs.el (tramp-gvfs-handle-file-attributes): Parse multibyte symlinks correctly. - * test/lisp/net/tramp/tramp-tests.el (tramp--test-utf8): + * test/lisp/net/tramp-tests.el (tramp--test-utf8): Improve backward compatibility. 2018-05-10 Basil L. Contovounesios @@ -61775,7 +61938,7 @@ Do not destructively modify interprogram paste - * simple.el (kill-new, current-kill): Non-destructively reverse list + * lisp/simple.el (kill-new, current-kill): Non-destructively reverse list returned by interprogram-paste-function. (bug#31097) 2018-04-13 Lars Ingebrigtsen @@ -62324,10 +62487,10 @@ Gnus Group Mail Spliting on mailing-list headers - * texi/gnus.texi: Document the new `list' split abbreviation and + * doc/misc/gnus.texi: Document the new `list' split abbreviation and `match-list' group parameter (bug#25346). - * lisp/gnus-mlspl.el: Use the `list' abbreviation when the new + * lisp/gnus/gnus-mlspl.el: Use the `list' abbreviation when the new `match-list' group parameter is set to `t'. The split regexp is modified to match either `@` or `.` as domain separator to comply with RFC2919 IDs too. @@ -62731,7 +62894,10 @@ 2018-04-02 Alan Mackenzie - * lisp/progmodes/cc-{defs,engine,langs,vars}.el: Comment the use of "a\\`" + * lisp/progmodes/cc-defs.el: + * lisp/progmodes/cc-engine.el: + * lisp/progmodes/cc-langs.el: + * lisp/progmodes/cc-vars.el: Comment the use of "a\\`" 2018-04-02 Paul Eggert @@ -63768,7 +63934,7 @@ 2018-03-20 Alan Mackenzie - * cc-engine.el (c-looking-at-or-maybe-in-bracelist): Remove pessimization + * lisp/progmodes/cc-engine.el (c-looking-at-or-maybe-in-bracelist): Remove pessimization 2018-03-20 Eli Zaretskii @@ -64380,7 +64546,7 @@ * doc/emacs/fixit.texi (Transpose): Mention and explain the new command. - * editfns.c (Ftranspose_regions): Add an interactive calling + * src/editfns.c (Ftranspose_regions): Add an interactive calling specification, and add documentation for it. 2018-03-11 Charles A. Roelli @@ -64546,7 +64712,7 @@ Fix wrong behavior of 'outline-headers-as-kill' command (Bug#30209) - * outline.el (outline-headers-as-kill): Fix heading duplication. + * lisp/outline.el (outline-headers-as-kill): Fix heading duplication. 2018-03-10 Eli Zaretskii @@ -65659,7 +65825,7 @@ Add ".xpi" to Tramp file archives * doc/misc/tramp.texi (Archive file names): - * tramp-archive.el (tramp-archive-suffixes): Add ".xpi". + * lisp/net/tramp-archive.el (tramp-archive-suffixes): Add ".xpi". 2018-02-18 Stefan Monnier @@ -65980,7 +66146,7 @@ * lisp/server.el: (server-name): Update :version tag. * etc/NEWS: Document that `server-name' and `server-socket-dir' automatically update. - * doc/misc.texi: (Emacs Server): Likewise. + * doc/emacs/misc.texi: (Emacs Server): Likewise. 2018-02-12 Paul Eggert @@ -67952,7 +68118,7 @@ It already exists in the Cygwin-w32 build. * src/w32fns.c (Fw32_battery_status): Move to... - * src/w32cygwinx: New file, to be used for functions common to + * src/w32cygwinx.c: New file, to be used for functions common to the MS Windows and Cygwin builds. (syms_of_w32cygwinx): New function. * src/lisp.h: Add prototype of syms_of_w32cygwinx. @@ -68253,7 +68419,7 @@ Add macOS character-palette (bug#29837) - * lisp/ns-win.el (ns-do-show-character-palette): New function. + * lisp/term/ns-win.el (ns-do-show-character-palette): New function. * src/nsfns.m (Sns_show_character_palette): New function. * src/nsterm.m (EmacsView::insertText): Handle NSAttributedString. @@ -68377,7 +68543,7 @@ 2018-01-07 Alan Mackenzie - * fns.c (base64-decode-region): Add signal_after_change call for insertion. + * src/fns.c (base64-decode-region): Add signal_after_change call for insertion. 2018-01-06 Noam Postavsky @@ -71090,8 +71256,9 @@ Add support for Windows installer build - * etc/images/slash.bmp,admin/nt/dist-build/emacs.nsi: New files - * admin/nt/dist-build/build-zips.sh: Support building installer + * etc/images/slash.bmp: + * admin/nt/dist-build/emacs.nsi: New files + * admin/nt/dist-build/build-zips.sh: Support building installer 2017-11-04 Andreas Politz @@ -71681,7 +71848,7 @@ * lisp/dired-aux.el (dired-create-destination-dirs): New option. (dired-maybe-create-dirs): New defun. (dired-copy-file-recursive, dired-rename-file): Use it (Bug#28834). - * lisp/dired-aux-tests.el (dired-test-bug28834): Add test. + * test/lisp/dired-aux-tests.el (dired-test-bug28834): Add test. * doc/emacs/dired.texi (Operating on Files): Update manual. * etc/NEWS (Changes in Specialized Modes and Packages in Emacs 27.1) Announce this change. @@ -139259,7 +139426,7 @@ This file records repository revisions from commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to -commit 28399e585e172ab005328f1c970084e53a299eb4 (inclusive). +commit af519a634878dd8e72f8276d82601b6562029107 (inclusive). See ChangeLog.2 for earlier changes. ;; Local Variables: From 29e415d6b04775b4b731cd70f11f353c3f64053e Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Wed, 26 Feb 2020 18:32:43 +0100 Subject: [PATCH 07/93] ; ChangeLog.3 fixes --- ChangeLog.3 | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/ChangeLog.3 b/ChangeLog.3 index 7a07f753b08..07f7be4f2e6 100644 --- a/ChangeLog.3 +++ b/ChangeLog.3 @@ -5590,7 +5590,7 @@ Backwards-compatibility function definitions for so-long.el - * so-long.el (so-long-inhibit-whitespace-mode) + * lisp/so-long.el (so-long-inhibit-whitespace-mode) (so-long-make-buffer-read-only, so-long-revert-buffer-read-only) (so-long-inhibit-global-hl-line-mode): Restore dummy definitions of now-obsolete hook functions used by earlier versions of so-long.el, @@ -7915,7 +7915,7 @@ time-stamp-time-zone: update customization - * time-stamp.el (time-stamp-time-zone): Support customization with + * lisp/time-stamp.el (time-stamp-time-zone): Support customization with an integer offset (a new possible value of the ZONE argument to format-time-string in Emacs 27). Update the safe-local-variable predicate from string-or-null-p @@ -8077,7 +8077,7 @@ time-stamp-tests: add name prefix to tests of formatting - * time-stamp-tests.el: rename all the time-stamp-string formatting tests + * test/lisp/time-stamp-tests.el: rename all the time-stamp-string formatting tests to have the word "format" in their name, to make room in the namespace for other, future tests. @@ -8278,7 +8278,7 @@ time-stamp-tests: consistently name the time vars - * time-stamp-tests.el (with-time-stamp-test-env): rename local variable + * test/lisp/time-stamp-tests.el (with-time-stamp-test-env): rename local variable 'ref-time' to 'ref-time1', for parallelism with ref-time2 and ref-time3. 2019-10-25 Michael Albinus @@ -10416,12 +10416,12 @@ Minor tweaks to time-stamp documentation strings - * time-stamp.el (time-stamp): Reformat the explanation of the + * lisp/time-stamp.el (time-stamp): Reformat the explanation of the variables that affect time-stamp, for easier reading. In particular, wrap the documentation to 75 characters, so that it displays neatly as a before-save-hook customization option. - * time-stamp-tests.el (with-time-stamp-test-env): Use imperative voice, + * test/lisp/time-stamp-tests.el (with-time-stamp-test-env): Use imperative voice, per checkdoc. 2019-10-13 Alan Mackenzie @@ -10918,7 +10918,7 @@ Remove tabs from time-stamp-format documentation - * time-stamp.el (time-stamp-format): Untabify the doc string, so + * lisp/time-stamp.el (time-stamp-format): Untabify the doc string, so the two-column layout displays consistently in several contexts, in particular when displayed by customize-variable. @@ -11070,13 +11070,13 @@ time-stamp: revert recent change to "%04y" - * time-stamp.el (time-stamp-string-preprocess): Revert change to "%04y" + * lisp/time-stamp.el (time-stamp-string-preprocess): Revert change to "%04y" format made 2 weeks ago by commit 0e56883878 (the previous commit to this file). Although undocumented, "%04y" was discovered to be in use in the wild (2016) and had not issued a warning that it would change. Add a warning that it will change. - * time-stamp-tests.el (time-stamp-test-year-2digit): add test of "%04y" + * test/lisp/time-stamp-tests.el (time-stamp-test-year-2digit): add test of "%04y" 2019-10-09 Simen Heggestøyl @@ -40969,7 +40969,7 @@ Fix regexp issues introduced in last trunk commit. - * verilog-mode.el (verilog-coverpoint-re): Fix regexp issues introduced + * lisp/progmodes/verilog-mode.el (verilog-coverpoint-re): Fix regexp issues introduced in last trunk commit. 2019-03-05 Eli Zaretskii @@ -50825,7 +50825,7 @@ (Fencode_time): Add new two-arg functionality. * src/systime.h (struct lisp_time): Now ticks+hz rather than hi+lo+us+ps, since ticks+hz does not lose info. - * test/src/time-stamp-tests.el (time-equal-p-nil-nil): + * test/lisp/time-stamp-tests.el (time-equal-p-nil-nil): New test. 2018-10-06 Paul Eggert @@ -52920,7 +52920,7 @@ This happened when the type of the previous function was a struct, etc., declaration. - * lisp/progmodes/cc-mode (c-guess-basic-syntax CASE 5N): Check here (for + * lisp/progmodes/cc-mode.el (c-guess-basic-syntax CASE 5N): Check here (for 'topmost-intro-cont) that the first opening brace after BOD is the opening brace preceding the starting point. @@ -59501,7 +59501,7 @@ bibtex-format-entry: Preserve opt-alt if possible. - * textmodes/bibtex.el (bibtex-format-entry): + * lisp/textmodes/bibtex.el (bibtex-format-entry): Preserve opt-alt unless its removal is selected. (bibtex-parse-entry): New optional arg keep-opt-alt. From 999d75c0c1ce3dd19dfe376c0063951f9ba45900 Mon Sep 17 00:00:00 2001 From: Robert Pluim Date: Wed, 26 Feb 2020 19:18:54 +0100 Subject: [PATCH 08/93] Range-check width passed to define-fringe-bitmap This prevents a crash when attempting to create a zero-width bitmap. * src/fringe.c (Fdefine_fringe_bitmap): Check value of width, signal an error if outside documented range (Bug#39662). --- src/fringe.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/fringe.c b/src/fringe.c index 97aad843c2e..2a46e3c34f2 100644 --- a/src/fringe.c +++ b/src/fringe.c @@ -1500,7 +1500,8 @@ DEFUN ("define-fringe-bitmap", Fdefine_fringe_bitmap, Sdefine_fringe_bitmap, BITMAP is a symbol identifying the new fringe bitmap. BITS is either a string or a vector of integers. HEIGHT is height of bitmap. If HEIGHT is nil, use length of BITS. -WIDTH must be an integer between 1 and 16, or nil which defaults to 8. +WIDTH must be an integer from 1 to 16, or nil which defaults to 8. An +error is signaled if WIDTH is outside this range. Optional fifth arg ALIGN may be one of `top', `center', or `bottom', indicating the positioning of the bitmap relative to the rows where it is used; the default is to center the bitmap. Fifth arg may also be a @@ -1535,7 +1536,9 @@ If BITMAP already exists, the existing definition is replaced. */) else { CHECK_FIXNUM (width); - fb.width = max (0, min (XFIXNUM (width), 255)); + fb.width = max (1, min (XFIXNUM (width), 16)); + if (fb.width != XFIXNUM (width)) + args_out_of_range (width, build_string ("Width must be from 1 to 16")); } fb.period = 0; From f9e53947c71ddf7f8d176a23c0a585fafa13b952 Mon Sep 17 00:00:00 2001 From: Eric Abrahamsen Date: Wed, 26 Feb 2020 15:47:12 -0500 Subject: [PATCH 09/93] Fix documented slot name of eieio-instance-tracker class * doc/misc/eieio.texi (eieio-instance-tracker): The code has the slot name as `tracking-symbol', not `tracker-symbol'. --- doc/misc/eieio.texi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi index 6c030fcfca9..3943c544c7d 100644 --- a/doc/misc/eieio.texi +++ b/doc/misc/eieio.texi @@ -1285,9 +1285,9 @@ This class is defined in the package @file{eieio-base}. Sometimes it is useful to keep a master list of all instances of a given class. The class @code{eieio-instance-tracker} performs this task. -@deftp {Class} eieio-instance-tracker tracker-symbol +@deftp {Class} eieio-instance-tracker tracking-symbol Enable instance tracking for this class. -The slot @var{tracker-symbol} should be initialized in inheritors of +The slot @var{tracking-symbol} should be initialized in inheritors of this class to a symbol created with @code{defvar}. This symbol will serve as the variable used as a master list of all objects of the given class. From 009c6a17676ff9a6d4664acdb174f332238db64c Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Thu, 27 Feb 2020 17:16:43 +0100 Subject: [PATCH 10/93] ; ChangeLog.3 fixes --- ChangeLog.3 | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/ChangeLog.3 b/ChangeLog.3 index 07f7be4f2e6..df23430c8df 100644 --- a/ChangeLog.3 +++ b/ChangeLog.3 @@ -11090,7 +11090,7 @@ Expand testing of time-stamp format "%y" - * time-stamp-tests.el (time-stamp-test-year): break into two tests, + * test/lisp/time-stamp-tests.el (time-stamp-test-year): break into two tests, time-stamp-test-year-2digit and time-stamp-test-year-4digit. Expand time-stamp-test-year-2digit to look more like tests for other 2-digit conversions. @@ -12640,24 +12640,24 @@ Move undocumented time-stamp formats closer to format-time-string - * time-stamp.el (time-stamp-string-preprocess): Update some undocumented + * lisp/time-stamp.el (time-stamp-string-preprocess): Update some undocumented formatting characters of time-stamp format for closer (still incomplete) alignment with format-time-string. They have displayed a warning since Emacs 20 (released in 1997), so it is unlikely anyone is using them. - * time-stamp-tests.el: Update tests to match new expectations. + * test/lisp/time-stamp-tests.el: Update tests to match new expectations. 2019-09-30 Stephen Gildea time-stamp doc: recommend formats closer to format-time-string - * time-stamp.el (time-stamp-format, time-stamp-pattern): Update + * lisp/time-stamp.el (time-stamp-format, time-stamp-pattern): Update recommended (documented) formats. No code changes, just documentation. All recommended formats are compatible at least as far back as Emacs 22.1 (released in 2007) and are now closer to compatibility with format-time-string. - * time-stamp-tests.el: Update test comments to match. + * test/lisp/time-stamp-tests.el: Update test comments to match. 2019-09-30 Juanma Barranquero @@ -12975,7 +12975,7 @@ Reorganize time-stamp tests - * time-stamp-tests.el: Group tests by when the format was or will be + * test/lisp/time-stamp-tests.el: Group tests by when the format was or will be documented. Add tests for a few more undocumented, volatile formats. Change AM hours test time to be a different hour from PM test time. (Making these changes to the tests now will minimize test changes @@ -13797,15 +13797,15 @@ Expand time-stamp unit tests to cover all formatting options - * time-stamp-tests.el: Expand unit tests to cover all formatting options. + * test/lisp/time-stamp-tests.el: Expand unit tests to cover all formatting options. These tests validate time-stamp-pattern formatting that has existed since at least Emacs 22 (released in 2007). The tests cover both documented behavior and behavior implemented to support future migrations. - * time-stamp.el (time-stamp-string): Add a second argument (TIME) to + * test/lisp/time-stamp-tests.el (time-stamp-string): Add a second argument (TIME) to open a testing seam. Have the unit tests call this public function. - * time-stamp.el (time-stamp-string, time-stamp-string-preprocess): + * test/lisp/time-stamp-tests.el (time-stamp-string, time-stamp-string-preprocess): Remove the second pass through time-string--format. (Previously both functions called it.) It was used only to handle "%", but this is now handled by having time-stamp-string-preprocess not double it. @@ -139426,7 +139426,7 @@ This file records repository revisions from commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to -commit af519a634878dd8e72f8276d82601b6562029107 (inclusive). +commit f9e53947c71ddf7f8d176a23c0a585fafa13b952 (inclusive). See ChangeLog.2 for earlier changes. ;; Local Variables: From 86e4da6eaf501d77ca9912d624de701b89358341 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Thu, 27 Feb 2020 17:16:54 +0100 Subject: [PATCH 11/93] ; ChangeLog.3 update --- ChangeLog.3 | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/ChangeLog.3 b/ChangeLog.3 index df23430c8df..598fe9ad1e0 100644 --- a/ChangeLog.3 +++ b/ChangeLog.3 @@ -1,3 +1,23 @@ +2020-02-26 Eric Abrahamsen + + Fix documented slot name of eieio-instance-tracker class + + * doc/misc/eieio.texi (eieio-instance-tracker): The code has the slot + name as `tracking-symbol', not `tracker-symbol'. + +2020-02-26 Robert Pluim + + Range-check width passed to define-fringe-bitmap + + This prevents a crash when attempting to create a zero-width bitmap. + + * src/fringe.c (Fdefine_fringe_bitmap): Check value of width, + signal an error if outside documented range (Bug#39662). + +2020-02-26 Nicolas Petton + + * admin/authors.el: Add missing entries + 2020-02-26 Noam Postavsky Define libgnutls-version properly From 9261b1ed49755284bb9dc194b6c2a9b407151ee5 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Thu, 27 Feb 2020 18:07:54 +0100 Subject: [PATCH 12/93] * admin/authors.el (authors-ignored-files): Fix entries. --- admin/authors.el | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/admin/authors.el b/admin/authors.el index 1f92c46cfdc..dc42bc72ef3 100644 --- a/admin/authors.el +++ b/admin/authors.el @@ -462,11 +462,12 @@ Changes to files matching one of the regexps in this list are not listed.") ;; ada-mode has been deleted, now in GNU ELPA "ada-mode.texi" "GNUS-NEWS" - "gnus-news.el" - "fingerprint-dummy.c" - "fingerprint.h" + "doc/misc/gnus-news.el" + "src/fingerprint-dummy.c" + "src/fingerprint.h" ;; Replaced by lisp/thread.el - "thread-list.el" + "lisp/emacs-lisp/thread-list.el" + "etc/images/slash.bmp" ) "List of files and directories to ignore. Changes to files in this list are not listed.") @@ -1111,7 +1112,7 @@ in the repository.") ("lisp/net/starttls.el" . "lisp/obsolete/starttls.el") ("url-ns.el" . "lisp/obsolete/url-ns.el") ("gnus-news.texi" . "doc/misc/gnus.texi") - ("multifile.el". "fileloop.el") + ("lisp/multifile.el". "lisp/fileloop.el") ("lisp/emacs-lisp/thread.el". "lisp/thread.el") ) "Alist of files which have been renamed during their lifetime. From 4aa758e53dfa94c616dc5495d748aabd22b756f6 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Thu, 27 Feb 2020 18:18:51 +0100 Subject: [PATCH 13/93] ; ChangeLog.3 update --- ChangeLog.3 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ChangeLog.3 b/ChangeLog.3 index 598fe9ad1e0..fc41c1f7dc3 100644 --- a/ChangeLog.3 +++ b/ChangeLog.3 @@ -1,3 +1,7 @@ +2020-02-27 Nicolas Petton + + * admin/authors.el (authors-ignored-files): Fix entries. + 2020-02-26 Eric Abrahamsen Fix documented slot name of eieio-instance-tracker class @@ -139446,7 +139450,7 @@ This file records repository revisions from commit 9d56a21e6a696ad19ac65c4b405aeca44785884a (exclusive) to -commit f9e53947c71ddf7f8d176a23c0a585fafa13b952 (inclusive). +commit 9261b1ed49755284bb9dc194b6c2a9b407151ee5 (inclusive). See ChangeLog.2 for earlier changes. ;; Local Variables: From 5b7d226779282f01b52fc6308fcf9f4e84c40679 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Thu, 27 Feb 2020 18:21:47 +0100 Subject: [PATCH 14/93] * etc/AUTHORS: Update. --- etc/AUTHORS | 1322 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 815 insertions(+), 507 deletions(-) diff --git a/etc/AUTHORS b/etc/AUTHORS index 2f7e01575bd..ab0cbeefc83 100644 --- a/etc/AUTHORS +++ b/etc/AUTHORS @@ -9,15 +9,16 @@ Aaron Ecay: changed ob-R.el ob-core.el org-src.el ox-latex.el nsterm.m ob-awk.el ob-exp.el ob-python.el ob-tangle.el org-bibtex.el org-id.el org.el org.texi package.el paren.el -Aaron Jensen: changed frameset.el nsterm.m Info.plist.in mouse.el +Aaron Jensen: changed frameset.el nsterm.m Info.plist.in flyspell.el + mouse.el server.el systhread.c w32term.c xdisp.c xterm.c Aaron Larson: co-wrote bibtex.el Aaron S. Hawley: wrote lisp-tests.el undo-tests.el and changed simple.el files.texi isearch.el morse.el sgml-mode.el - tar-mode.el thingatpt.el add-log.el autoinsert.el building.texi calc.el - cc-fonts.el comint.el compare-w.el custom.texi diff.el edebug.el - etags.el ffap.el files.el flyspell.el and 29 other files + tar-mode.el textmodes/table.el thingatpt.el add-log.el autoinsert.el + building.texi calc.el cc-fonts.el comint.el compare-w.el custom.texi + diff.el edebug.el etags.el ffap.el files.el and 31 other files Abdó Roig-Maranges: changed org.el org-agenda.el ox-html.el ox-odt.el @@ -69,6 +70,8 @@ and changed nsterm.m nsfns.m nsfont.m nsterm.h nsmenu.m configure.ac Agustín Martín: changed ispell.el flyspell.el fixit.texi +Ahmed Khanzada: changed battery.el + Aidan Gauland: wrote em-tramp.el and changed eshell.texi em-term.el em-unix.el erc-match.el em-cmpl.el em-dirs.el em-ls.el em-script.el esh-proc.el eshell-tests.el @@ -86,17 +89,19 @@ Aki Vehtari: changed bibtex.el gnus-art.el gnus-score.el gnus-sum.el nnmail.el tar-mode.el Alain Schneble: wrote url-expand-tests.el url-parse-tests.el -and changed url-expand.el process.c url-parse.el w32proc.c shr.el w32.c +and changed url-expand.el process.c url-parse.el w32proc.c message.el + shr.el w32.c Alakazam Petrofsky: changed hanoi.el Alan Mackenzie: wrote cc-awk.el and co-wrote cc-align.el cc-cmds.el cc-defs.el cc-engine.el cc-fonts.el cc-langs.el cc-mode.el cc-styles.el cc-vars.el -and changed cc-mode.texi bytecomp.el subr.el edebug.el follow.el - modes.texi syntax.texi display.texi font-lock.el isearch.el - programs.texi help.el ispell.el lread.c windows.texi control.texi - cus-start.el doc.c eval.c frames.texi help-fns.el and 134 other files +and changed cc-mode.texi bytecomp.el follow.el display.texi subr.el + edebug.el progmodes/compile.el programs.texi syntax.texi modes.texi + font-lock.el isearch.el text.texi help.el ispell.el lread.c syntax.c + windows.texi .dir-locals.el control.texi cus-start.el + and 147 other files Alan Modra: changed unexelf.c @@ -106,11 +111,11 @@ Alan Shutko: changed diary-lib.el calendar.el bindings.el cal-hebrew.el easy-mmode.el gnus-sum.el ibuf-ext.el ibuffer.el lunar.el macros.el solar.el -Alan Third: wrote dabbrev-tests.el -and changed nsterm.m nsfns.m nsterm.h nsmenu.m frame.el macfont.m - nsimage.m ns-win.el xdisp.c Info.plist.in conf_post.h frame.c frame.h - frames.texi keyboard.c macfont.h macos.texi picture.el rect.el - battery.el callproc.c and 12 other files +Alan Third: wrote dabbrev-tests.el image-transforms-tests.el +and changed nsterm.m nsterm.h nsfns.m nsmenu.m ns-win.el nsimage.m + image.c macfont.m configure.ac frame.el xdisp.c display.texi image.el + macos.texi xterm.c Info.plist.in conf_post.h dispextern.h frame.c + frame.h frames.texi and 21 other files Alastair Burt: changed gnus-art.el smiley.el @@ -124,11 +129,10 @@ Aleksei Gusev: changed progmodes/compile.el Alexander Becher: changed vc-annotate.el -Alexander Gramiak: changed faces.el display-line-numbers.el xt-mouse.el - CTAGS.good ETAGS.good_1 ETAGS.good_2 ETAGS.good_3 ETAGS.good_4 - ETAGS.good_5 ETAGS.good_6 Makefile TAGTEST.EL cl-lib-tests.el - cl-macs-tests.el cus-start.el custom.texi display.texi erc-list.el - ert-tests.el ert.el etags.c and 16 other files +Alexander Gramiak: changed w32term.c xterm.c nsterm.m dispextern.h + xdisp.c frame.c image.c nsgui.h w32gui.h xfns.c frame.el termhooks.h + w32fns.c w32term.h faces.el nsterm.h xfaces.c xterm.h frame.h xfont.c + configure.ac and 64 other files Alexander Haeckel: changed getset.el @@ -151,6 +155,8 @@ Alexander Vorobiev: changed org-compat.el Alexander Zhuckov: changed ebrowse.c +Alexandre Garreau: changed message.el + Alexandre Julliard: wrote vc-git.el and changed vc.el ewoc.el @@ -162,17 +168,24 @@ Alexandre Veyrenc: changed fr-refcard.tex Alexandru Harsanyi: wrote soap-client.el soap-inspect.el and changed emacs3.py vc-hooks.el vc.el xml.el -Alex Branham: changed bibtex.el dired-x.el dired.el em-rebind.el eww.el - imenu.el indent.el modes.texi programs.texi text.texi +Alex Branham: changed checkdoc.el bibtex.el em-rebind.el esh-util.el + indent.el js.el lpr.el message.el subr.el text.texi .dir-locals.el + auth-source-pass.el bug-reference.el comint.el conf-mode-tests.el + conf-mode.el dired-x.el dired.el ediff-diff.el ediff-help.el + ediff-hook.el and 41 other files Alex Coventry: changed files.el Alex Dunn: changed subr-tests.el subr.el -Alex Gramiak: changed prolog.el +Alexei Khlebnikov: changed autorevert.el vc-git.el + +Alex Gramiak: changed prolog.el terminal.c Alex Kosorukoff: changed org-capture.el +Alex Murray: changed erc-desktop-notifications.el network-stream.el + Alex Ott: changed TUTORIAL.ru ede/files.el ru-refcard.tex base.el cedet-files.el cpp-root.el ede.el ede/generic.el idle.el ispell.el semantic/format.el @@ -204,8 +217,10 @@ Ali Bahrami: changed configure configure.ac sol2-10.h Alin C. Soare: changed lisp-mode.el hexl.el -Allen Li: changed abbrev.el bookmark.el comint.el dired-x.el misc.texi - nsm.el progmodes/compile.el subr.el +Allen Li: changed abbrev.el abbrev-tests.el abbrevs.texi sending.texi + autoload.el bookmark.el comint.el dired-x.el misc.texi nsm.el + progmodes/compile.el ring-tests.el ring.el sequences.texi subr.el + xref.el Allen S. Rout: changed org-capture.el @@ -220,17 +235,28 @@ Alp Aker: changed nsfont.m nsterm.m buff-menu.el nsfns.m nsmenu.m Ami Fischman: changed bindings.el calendar.el diary-lib.el print.c savehist.el vc-git.el +Amin Bandali: changed erc-button.el erc-desktop-notifications.el + erc-autoaway.el erc-compat.el erc-fill.el erc-ibuffer.el erc-imenu.el + erc-join.el erc-lang.el erc-list.el erc-log.el erc-match.el + erc-notify.el erc-pcomplete.el erc-replace.el erc-ring.el + erc-services.el erc-sound.el erc-speedbar.el erc-spelling.el + erc-stamp.el and 4 other files + Anand Mitra: changed gnus-sum.el Anders Holst: wrote hippie-exp.el -Anders Lindgren: wrote autorevert.el cwarn.el follow.el +Anders Lindgren: wrote autorevert.el cwarn.el faceup-test-basics.el + faceup-test-files.el faceup.el follow.el and changed nsterm.m nsfns.m nsmenu.m nsterm.h font-lock.el nsimage.m - README etags.c term.el window.el Info.plist.in compile.el ert.el - loadup.el lread.c ns-win.el nsfont.m vc-svn.el + README etags.c term.el window.el Info.plist.in compile.el diff-mode.el + ert.el faceup-test-mode.el faceup-test-this-file-directory.el loadup.el + lread.c ns-win.el nsfont.m test1.txt and 3 other files Anders Waldenborg: changed emacsclient.c +Andrea Corallo: changed map-tests.el map.el + Andrea Rossetti: changed ruler-mode.el Andrea Russo: changed erc-dcc.el info-look.el @@ -259,23 +285,26 @@ Andreas Leue: changed artist.el Andreas Luik: changed xfns.c xterm.c -Andreas Politz: changed filenotify.el inotify.c bytecomp.el editfns.c - elp.el filenotify-tests.el frame.c ibuffer.el ido.el imenu.el - modes.texi outline.el sh-script.el sql.el subr.el term.el wid-edit.el - window.el +Andreas Merziger: changed calendar.el + +Andreas Politz: changed filenotify.el inotify.c buffer-tests.el + bytecomp.el editfns.c elp.el filecache.el filenotify-tests.el frame.c + ibuffer.el idlwave.el ido.el imenu.el modes.texi outline.el + sh-script.el sql.el startup.el strokes.el subr.el term.el + and 5 other files Andreas Rottmann: changed emacsclient.1 emacsclient.c misc.texi server.el -Andreas Schwab: changed configure.ac lisp.h process.c xdisp.c alloc.c +Andreas Schwab: changed configure.ac lisp.h xdisp.c process.c alloc.c coding.c Makefile.in files.el fileio.c keyboard.c lread.c xterm.c fns.c editfns.c emacs.c src/Makefile.in print.c eval.c font.c xfns.c sysdep.c - and 639 other files + and 650 other files Andreas Seltenreich: changed nnweb.el gnus.texi message.el gnus-sum.el gnus.el nnslashdot.el gnus-srvr.el gnus-util.el mm-url.el mm-uu.el - url-http.el xterm.c battery.el comint.el easy-mmode.el gmm-utils.el - gnus-art.el gnus-cite.el gnus-draft.el gnus-group.el gnus-ml.el - and 7 other files + url-http.el xterm.c battery.el comint.el doc/misc/gnus.texi + easy-mmode.el gmm-utils.el gnus-art.el gnus-cite.el gnus-draft.el + gnus-group.el and 7 other files Andreas Vögele: changed pgg-def.el @@ -313,7 +342,7 @@ Andrew Hyatt: changed bug-triage CONTRIBUTE org-archive.el org.el Andrew Innes: changed makefile.nt w32fns.c w32term.c w32.c w32proc.c fileio.c w32-fns.el dos-w32.el inc/ms-w32.h w32term.h makefile.def unexw32.c w32menu.c w32xfns.c addpm.c cmdproxy.c emacs.c w32-win.el - w32inevt.c configure.bat lread.c and 130 other files + w32inevt.c configure.bat lread.c and 129 other files Andrew L. Moore: changed executable.el @@ -323,6 +352,8 @@ Andrew Robbins: changed net-utils.el Andrew Schein: changed sql.el +Andrew Schwartzmeyer: changed subr-tests.el subr.el + Andrew W. Nosenko: changed tramp.el Andrew Zhilin: changed emacs22.png emacs22.ico @@ -333,10 +364,17 @@ Andrey Slusar: changed gnus-async.el gnus.el Andrey Zhdanov: changed gud.el +Andrii Kolomoiets: changed vc-hg.el progmodes/python.el vc-git.el vc.el + maintaining.texi vc-svn.el + Andrzej Lichnerowicz: wrote ob-io.el -Andy Moreton: changed gnutls.c image.el package.el unexw32.c vc-hg.el - w32fns.c w32heap.c w32proc.c w32term.c w32xfns.c +Andrzej P: changed gdb-mi.el + +Andy Moreton: changed gnutls.c alloc.c ccl-tests.el ccl.el image.c + w32fns.c w32font.c w32heap.c w32proc.c w32uniscribe.c data.c + decompress.c dynlib.c emacs-module-tests.el emacs.c image.el json.c + lcms.c lisp.h package.el pdumper.c and 12 other files Andy Norman: wrote ange-ftp.el @@ -346,7 +384,7 @@ Andy Sawyer: changed saveplace.el Andy Seaborne: changed keyboard.c -Andy Stewart: wrote org-w3m.el +Andy Stewart: wrote ol-w3m.el and changed erc.el Angelo Graziosi: changed sysdep.c term.c @@ -355,6 +393,10 @@ Anmol Khirbat: changed ido.el Anna M. Bigatti: wrote cal-html.el +Ansgar Burchardt: changed latin-ltx.el + +Antoine Beaupré: changed vc-git.el + Antoine Levitt: changed gnus-group.el gnus-sum.el message.texi ada-prj.el ange-ftp.el cus-edit.el dired-x.el ebnf2ps.el emerge.el erc-button.el erc-goodies.el erc-stamp.el erc-track.el files.el find-file.el @@ -363,11 +405,11 @@ Antoine Levitt: changed gnus-group.el gnus-sum.el message.texi ada-prj.el Antonin Houska: changed newcomment.el -Arash Esbati: changed reftex-vars.el reftex.el reftex-auc.el - reftex-ref.el +Arash Esbati: changed reftex-vars.el reftex-ref.el reftex.el nnmaildir.el + reftex-auc.el reftex-cite.el reftex-dcr.el -Ari Roponen: changed xterm.c atimer.c doc.c hash.texi image.c mule.texi - package.el startup.el subr.el svg.el time-date.el woman.el +Ari Roponen: changed xterm.c image.c atimer.c doc.c ftcrfont.c hash.texi + mule.texi package.el startup.el subr.el svg.el time-date.el woman.el Arisawa Akihiro: changed characters.el coding.c epa-file.el japan-util.el language/tibetan.el message.el mm-decode.el mm-view.el ps-print.el @@ -383,7 +425,7 @@ and changed smime.el mml-smime.el smime-ldap.el flymake.el gnus-art.el mule-conf.el nnimap.el nnrss.el wid-edit.el Arni Magnusson: wrote bat-mode.el -and changed ada-mode.texi frames.texi generic-x.el texinfo.el +and changed frames.texi generic-x.el texinfo.el Artem Chuprina: changed message.el @@ -395,6 +437,8 @@ and changed package.el isearch.el lisp/char-fold.el files.el let-alist-tests.el simple.el subr-tests.el align.el bindings.el cl-lib-tests.el cl-macs.el and 42 other files +Artyom Loenko: changed Info.plist.in + Arun Persaud: changed org-agenda.el org-src.el Ashish Shukla: changed emacs-gnutls.texi gnutls.el @@ -410,10 +454,12 @@ Aubrey Jaffer: changed info.el unexelf.c Aurélien Aptel: changed alloc.c emacs-module.h lisp.h Makefile configure.ac cus-face.el data.c dispextern.h display.texi dynlib.c dynlib.h emacs-module.c faces.el lread.c modhelp.py nsterm.m ox-html.el - print.c src/Makefile.in syntax.c url.texi and 4 other files + print.c src/Makefile.in subr.el syntax.c and 6 other files Axel Boldt: changed ehelp.el electric.el +Axel Svensson: changed x-win.el + Bahodir Mansurov: changed quail/cyrillic.el Bake Timmons: changed gnus.texi mail-source.el @@ -440,21 +486,22 @@ Bartosz Duszel: changed allout.el bib-mode.el cc-cmds.el hexl.el icon.el sendmail.el ses.el simple.el verilog-mode.el vi.el vip.el viper-cmd.el xscheme.el -Basil L. Contovounesios: changed simple.el message.el sequences.texi - bibtex.el css-mode-tests.el css-mode.el customize.texi display.texi - gnus-art.el json-tests.el json.el lists.texi man.el modes.texi - newcomment.el rcirc.el shr-color.el text.texi url-handlers.el +Basil L. Contovounesios: changed simple.el message.el subr.el gravatar.el + custom.el gnus-group.el gnus-sum.el gnus-win.el internals.texi + modes.texi text.texi window.c bibtex.el button.el customize.texi + display.texi eww.el gnus-art.el gnus-msg.el gnus.texi lists.texi + and 150 other files -Bastian Beischer: changed include.el mru-bookmark.el refs.el - semantic/complete.el senator.el +Bastian Beischer: changed semantic/complete.el include.el mru-bookmark.el + refs.el senator.el Bastien Guerry: wrote gnus-bookmark.el -and co-wrote org-bibtex.el org-list.el org-protocol.el org-src.el +and co-wrote ol-bibtex.el org-list.el org-protocol.el org-src.el and changed org.el org-agenda.el org.texi ox-html.el org-clock.el org-capture.el org-table.el ox-latex.el ox.el ox-odt.el org-compat.el ox-publish.el ob.el org-mobile.el org-colview.el org-macs.el org-pcomplete.el org-timer.el org-faces.el ox-ascii.el org-archive.el - and 118 other files + and 120 other files Ben A. Mesander: co-wrote erc-dcc.el @@ -471,9 +518,11 @@ Benjamin Andresen: wrote ob-screen.el Benjamin Drieu: wrote pong.el and changed org-clock.el org.el -Benjamin Riefenstahl: changed w32select.c emacs.c image-mode.el image.el - inc/ms-w32.h lisp.h mac-win.el macterm.c mule-cmds.el runemacs.c tcl.el - w32.c w32.h +Benjamin Ragheb: changed fortune.el + +Benjamin Riefenstahl: changed files.el image-mode.el w32select.c emacs.c + image.el inc/ms-w32.h lisp.h mac-win.el macterm.c mule-cmds.el + runemacs.c tcl.el w32.c w32.h Benjamin Rutt: co-wrote gnus-dired.el and changed vc.el gnus-msg.el message.el diff-mode.el ffap.el nnimap.el @@ -490,6 +539,8 @@ Ben North: changed outline.el buffer.c fill.el isearch.el lisp-mode.el Bernhard Herzog: changed vc-hg.el menu.c xsmfns.c +Bernhard Rotter: changed em-cmpl.el esh-ext.el esh-util.el + Bernt Hansen: changed org-agenda.el org-clock.el org.el org-capture.el org-indent.el org-macs.el org.texi ox-html.el @@ -517,11 +568,11 @@ Bill Wohler: wrote mh-buffers.el mh-comp.el mh-compat.el mh-e.el mh-folder.el mh-funcs.el mh-letter.el mh-mime.el mh-scan.el mh-seq.el mh-show.el mh-utils.el mh-xface.el and co-wrote mh-junk.el -and changed mh-customize.el mh-search.el mh-alias.el Makefile mh-e.texi +and changed mh-customize.el mh-search.el mh-alias.el mh-e.texi Makefile mh-identity.el README mh-speed.el mh-init.el mh-acros.el mh-gnus.el mh-unit.el mh-inc.el mh-xemacs-compat.el mh-print.el lisp/Makefile.in image.el mh-tool-bar.el mh-xemacs.el display.texi mh-pick.el - and 83 other files + and 82 other files Bjarte Johansen: wrote ob-sed.el @@ -541,6 +592,8 @@ and changed isearch.el sendmail.el Bob Halley: changed ccl.c esh-io.el +Bob Newell: changed latin-post.el latin-pre.el + Bob Nnamtrop: changed viper-cmd.el Bob Olson: co-wrote cperl-mode.el @@ -565,7 +618,8 @@ and changed fill.el simple.el indent.el paragraphs.el cmds.c intervals.c Boris Samorodov: changed imap.el -Boruch Baum: changed bookmark.el +Boruch Baum: co-wrote footnote.el +and changed bookmark.el Boyd Lynn Gerber: changed configure.ac @@ -577,6 +631,8 @@ Brad Howes: changed gnus-demon.el Brandon Craig Rhodes: changed flyspell.el +Braun Gábor: changed cua-base.el simple.el + Brendan Kehoe: changed hpux9.h Brent Goodrick: changed abbrev.el @@ -613,7 +669,9 @@ Brian Sniffen: changed gnus-draft.el imap.el mm-decode.el Brian van den Broek: changed org.texi -Bruno Félix Rezende Ribeiro: changed functions.texi +Bruce Stephens: changed calc-ext.el + +Bruno Félix Rezende Ribeiro: changed functions.texi gnus.texi Bruno Haible: co-wrote po.el and changed INSTALL emacs.1 epaths.in info.el paths.el @@ -637,30 +695,33 @@ Carl Edman: co-wrote ns-win.el Carl Henrik Lunde: changed format-spec.el -Carlos Pita: changed erc-pcomplete.el sh-script.el +Carlos Pita: changed erc-pcomplete.el image-mode.el progmodes/python.el + sh-script.el Carsten Bormann: changed ibmrs6000.h latin-post.el Carsten Dominik: wrote idlw-complete-structtag.el idlw-toolbar.el - org-agenda.el org-archive.el org-capture.el org-clock.el org-colview.el - org-compat.el org-datetree.el org-faces.el org-feed.el org-footnote.el - org-id.el org-indent.el org-info.el org-inlinetask.el org-macs.el - org-mobile.el org-rmail.el org-table.el org-timer.el org.el - reftex-auc.el reftex-cite.el reftex-dcr.el reftex-global.el - reftex-index.el reftex-parse.el reftex-ref.el reftex-sel.el - reftex-toc.el reftex-vars.el reftex.el -and co-wrote idlw-help.el idlw-shell.el idlwave.el org-bbdb.el - org-bibtex.el org-entities.el org-gnus.el org-list.el org-pcomplete.el + ol-info.el ol-rmail.el ol.el org-agenda.el org-archive.el + org-capture.el org-clock.el org-colview.el org-compat.el + org-datetree.el org-faces.el org-feed.el org-footnote.el org-goto.el + org-id.el org-indent.el org-inlinetask.el org-macs.el org-mobile.el + org-table.el org-timer.el org.el reftex-auc.el reftex-cite.el + reftex-dcr.el reftex-global.el reftex-index.el reftex-parse.el + reftex-ref.el reftex-sel.el reftex-toc.el reftex-vars.el reftex.el +and co-wrote idlw-help.el idlw-shell.el idlwave.el ol-bbdb.el + ol-bibtex.el ol-gnus.el org-entities.el org-list.el org-pcomplete.el org-src.el ox-beamer.el ox-html.el ox-icalendar.el and changed ox.el ox-latex.el org.texi org-remember.el orgcard.tex - ox-publish.el org-docbook.el ox-ascii.el org-attach.el org-protocol.el - org-mouse.el org-mac-message.el org-wl.el ox-jsinfo.el org-crypt.el - org-freemind.el idlw-rinfo.el org-exp-blocks.el org-habit.el org-mhe.el - org-plot.el and 35 other files + ox-publish.el org-docbook.el ox-ascii.el org-attach.el org-bbdb.el + org-gnus.el org-protocol.el org-mouse.el org-mac-message.el org-wl.el + ox-jsinfo.el org-crypt.el org-freemind.el idlw-rinfo.el + org-exp-blocks.el org-habit.el and 40 other files Caveh Jalali: changed configure.ac intel386.h sol2-4.h -Cédric Chépied: changed newst-treeview.el +Cecilio Pardo: changed DEVEL.HUMOR + +Cédric Chépied: changed newst-treeview.el tree-widget.el Cesar Quiroz: changed maintaining.texi @@ -671,10 +732,10 @@ Changwoo Ryu: changed files.el Chao-Hong Liu: changed TUTORIAL.cn TUTORIAL.zh -Charles A. Roelli: changed nsterm.m display.texi isearch.el nsfns.m - nsterm.h org-clock.el search.texi simple.el DEBUG INSTALL add-log.el - anti.texi buffers.texi comint.el data.c diff-mode.el eldoc.el files.el - fill.el find-func.el flymake.el and 21 other files +Charles A. Roelli: changed nsterm.m vc.el nsfns.m simple.el isearch.el + nsmenu.m nsterm.h process.c register.el diff-mode.el display.texi + files.el files.texi fixit.texi macfont.m minibuf.c nsfont.m nsimage.m + nsselect.m org-clock.el progmodes/python.el and 47 other files Charles Hannum: changed aix3-1.h aix3-2.h configure ibmrs6000.h keyboard.c netbsd.h pop.c sysdep.c systime.h systty.h xrdb.c @@ -687,8 +748,10 @@ Charles Sebold: changed org-plot.el Charlie Martin: wrote autoinsert.el -Cheng Gao: changed MORE.STUFF Makefile.in flymake.el frame.c tips.texi - url-dired.el url-file.el url-handlers.el url-http.el url-nfs.el +Chen Bin: changed fns.c subr-tests.el + +Cheng Gao: changed Makefile.in flymake.el frame.c tips.texi url-dired.el + url-file.el url-handlers.el url-http.el url-nfs.el Chetan Pandya: changed font.c @@ -700,12 +763,12 @@ and co-wrote longlines.el tango-dark-theme.el tango-theme.el and changed simple.el display.texi xdisp.c files.el frames.texi cus-edit.el files.texi custom.el subr.el text.texi faces.el keyboard.c startup.el package.el misc.texi emacs.texi modes.texi mouse.el - custom.texi image.c window.el and 935 other files + custom.texi image.c window.el and 933 other files Chris Chase: co-wrote idlw-shell.el idlwave.el -Chris Feng: changed dispnew.c autoload.el frame.c keyboard-tests.el - keyboard.c process.c +Chris Feng: changed dispnew.c keyboard-tests.el keyboard.c autoload.el + frame.c process.c Chris Foote: changed progmodes/python.el @@ -778,7 +841,7 @@ Christoph Dittmann: changed ox-beamer.el Christophe de Dinechin: co-wrote ns-win.el -Christophe Deleuze: changed icalendar.el +Christophe Deleuze: changed icalendar.el image-dired.el Christoph Egger: changed configure.ac @@ -798,12 +861,17 @@ Christopher J. White: changed url-http.el Christopher Oliver: changed mouse.el -Christopher Schmidt: changed ibuffer.el org.el tips.texi calc-aent.el - calc.el calc.texi calendar.el cl-macs.el comint.el dired-x.el dired.el - files.el files.texi find-dired.el gnus-int.el gnus-msg.el gnus.texi - help-fns.el info.el locate.el lread.c and 15 other files +Christopher Schmidt: changed files.el ibuffer.el org.el tips.texi + calc-aent.el calc.el calc.texi calendar.el cl-macs.el comint.el + dired-x.el dired.el files.texi find-dired.el gnus-int.el gnus-msg.el + gnus.texi help-fns.el info.el locate.el lread.c and 15 other files -Christopher Wellons: changed emacs-lisp/cl-lib.el +Christopher Thorne: changed dired.el progmodes/grep.el + +Christopher Wellons: changed emacs-lisp/cl-lib.el hashcash.el + viper-cmd.el viper-ex.el viper-init.el viper.el + +Christophe Troestler: changed epg.el Christoph Scholtes: changed README.W32 progmodes/python.el stdint.h INSTALL maintaining.texi INSTALL.REPO admin.el bookmark.el @@ -816,7 +884,7 @@ and changed progmodes/python.el format.el gnus-art.el gnus-picon.el message.el prog-mode.el python-tests.el register.el smiley.el texinfmt.el -Chris Zheng: changed gnutls.c calculator.el w32-win.el +Chris Zheng: changed gnutls.c calculator.el json.c w32-win.el Chuck Blake: changed term.c @@ -832,6 +900,8 @@ Claudio Fontana: changed Makefile.in leim/Makefile.in lib-src/Makefile.in Clément Pit--Claudel: changed debugging.texi emacs-lisp/debug.el eval.c progmodes/python.el subr-tests.el subr.el url-http.el url-vars.el +Clément Pit-Claudel: changed keyboard.c text.texi + Colin Marquardt: changed gnus.el message.el Colin Rafferty: changed message.el @@ -862,7 +932,7 @@ and co-wrote sasl-cram.el sasl-digest.el and changed mml2015.el epa.texi mml1991.el pinentry.el auth-source.el mml-smime.el package.el mml.el epg-tests.el gnus.texi mm-decode.el mm-uu.el process.c subr.el auth.texi gnus-sum.el image-mode.el - mm-view.el mml-sec.el processes.texi dbus.el and 35 other files + mm-view.el mml-sec.el processes.texi dbus.el and 36 other files Dale Gulledge: changed TUTORIAL.eo @@ -875,9 +945,10 @@ Dale Sedivec: changed sgml-mode.el wisent/python.el Damien Cassou: wrote auth-source-pass-tests.el and co-wrote auth-source-pass.el auth-source-tests.el -and changed seq-tests.el seq.el simple-tests.el simple.el auth-source.el - auth.texi imenu-tests.el imenu.el info.el isearch.el rmc.el - sequences.texi +and changed auth.texi message.el seq-tests.el seq.el simple-tests.el + simple.el auth-source.el checkdoc-tests.el checkdoc.el imenu-tests.el + imenu.el info.el isearch.el ispell.el json-tests.el json.el + message-tests.el package.el rmc.el sequences.texi xref.el Damien Elmes: changed erc.el erc-dcc.el erc-track.el erc-log.el erc-pcomplete.el README erc-button.el erc-nets.el erc-ring.el Makefile @@ -899,6 +970,8 @@ and changed ob.el ob-sh.el org.el ox.el ox-latex.el ob-tangle.el ob-C.el ob-table.el ob-ditaa.el ob-dot.el ob-gnuplot.el ob-js.el ob-mscgen.el ob-ocaml.el ob-org.el ob-plantuml.el and 14 other files +Daniel Barrett: changed dbnotn.rnc + Daniel Bergey: changed indian.el Daniel Brockman: changed cus-start.el format-spec.el ibuffer.el rcirc.el @@ -908,13 +981,13 @@ Daniel Clemente: changed generic-x.el ox-html.el Daniel Colascione: wrote alloc-tests.el generator-tests.el generator.el lisp-tests.el and co-wrote js.el -and changed w32fns.c emacs.c alloc.c cl-macs.el image.c keyboard.c - configure.ac lisp.h process.c sh-script.el src/Makefile.in cygw32.c - simple.el w32term.h cl-lib-tests.el cygw32.h dbusbind.c fns.c frame.c - sysdep.c unexcw.c and 162 other files +and changed keyboard.c emacs.c w32fns.c alloc.c image.c cl-macs.el lisp.h + src/Makefile.in configure.ac frame.c frame.el process.c xterm.el + sh-script.el xfaces.c coding.c cygw32.c data.c dbusbind.c fns.c font.c + and 216 other files -Daniel Dehennin: changed mml2015.el gnus-mlspl.el gnus-msg.el - mm-decode.el ox.el +Daniel Dehennin: changed gnus-mlspl.el mml2015.el gnus-msg.el gnus.texi + mm-decode.el nnmail.el ox.el Daniel E. Doherty: changed calc.texi @@ -957,7 +1030,7 @@ Daniel Ortmann: changed paragraphs.el Daniel Pfeiffer: wrote conf-mode.el copyright.el executable.el sh-script.el skeleton.el two-column.el -and co-wrote ada-stmt.el apropos.el progmodes/compile.el wyse50.el +and co-wrote apropos.el progmodes/compile.el wyse50.el and changed make-mode.el files.el buff-menu.el font-lock.el mpuz.el progmodes/grep.el sgml-mode.el autoinsert.el cperl-mode.el facemenu.el gomoku.el help.el imenu.el autoload.el autorevert.el bindings.el @@ -965,11 +1038,14 @@ and changed make-mode.el files.el buff-menu.el font-lock.el mpuz.el and 12 other files Daniel Pittman: co-wrote tramp-cache.el -and changed gnus-spec.el gnus-sum.el ispell.el nnimap.el spam-report.el - spam.el tramp-sh.el +and changed gnus-spec.el emacsclient.1 emacsclient.c gnus-sum.el + ispell.el misc.texi nnimap.el spam-report.el spam.el tramp-sh.el + vc-hg.el Daniel Quinlan: changed dired.el info.el +Daniel Ralston: changed rcirc.el + Daniel Schoepe: changed gnus-sum.el Dani Moncayo: changed msys-to-w32 Makefile.in configure.ac buffers.texi @@ -982,7 +1058,7 @@ and co-wrote hideshow.el and changed vc.el configure.ac vc-hg.el vc-git.el src/Makefile.in vc-bzr.el sysdep.c emacs.c process.c vc-cvs.el lisp.h term.c vc-hooks.el xterm.c keyboard.c vc-svn.el xterm.el callproc.c darwin.h - term.el gnu-linux.h and 920 other files + term.el gnu-linux.h and 921 other files Danny Roozendaal: wrote handwrite.el @@ -990,6 +1066,8 @@ Danny Siu: changed gnus-sum.el gnus-picon.el nndoc.el nnimap.el smiley.el Dan Rosenberg: changed movemail.c +Dario Gjorgjevski: changed auth-source.el recentf.el syntax.el + Darren Hoo: changed db-find.el db.el gnus-art.el isearch.el man.el nsmenu.m startup.el @@ -1014,7 +1092,7 @@ and co-wrote latin-ltx.el socks.el and changed configure.ac help.el mule-cmds.el fortran.el mule-conf.el xterm.c browse-url.el mule.el coding.c src/Makefile.in european.el fns.c mule-diag.el simple.el wid-edit.el cus-edit.el cus-start.el - files.el keyboard.c byte-opt.el info.el and 773 other files + files.el keyboard.c byte-opt.el info.el and 772 other files Dave Pearson: wrote 5x5.el quickurl.el @@ -1032,6 +1110,8 @@ David Bakhash: wrote strokes.el David Benjamin: changed xfns.c xterm.c xterm.h +David Beswick: changed startup.el + David Bremner: changed shr.el David Burger: changed macros.el @@ -1049,7 +1129,7 @@ David De La Harpe Golden: changed files.el mouse.el simple.el fileio.c David Edmondson: changed message.el erc.el mml2015.el process.c gnus-cite.el imap.el mm-uu.el mm-view.el nnfolder.el nnimap.el nnml.el - shr.el + rcirc.el shr.el David Engster: wrote mairix.el nnmairix.el and co-wrote gitmerge.el @@ -1080,7 +1160,7 @@ David Hansen: changed dbusbind.c nnrss.el cc-cmds.el dired.el em-dirs.el David Hedbor: changed nnmail.el -David Hull: changed vc-hg.el +David Hull: changed etags.c vc-hg.el David Hunter: changed flymake.el inc/ms-w32.h process.c @@ -1116,6 +1196,8 @@ David M. Brown: wrote array.el David McCabe: changed lisp-mode.el +David Mcfarland: changed gdb-mi.el + David Megginson: wrote derived.el and changed mode-clone.el @@ -1162,7 +1244,7 @@ David Robinow: changed w32inevt.c David Robinson: changed menu-bar.el x-win.el -David Röthlisberger: changed ido.el +David Röthlisberger: changed ido.el shell.el David S. Goldberg: changed message.el gnus-art.el @@ -1217,7 +1299,8 @@ and changed buffer.c Devon Sean McCullough: changed url-http.el buff-menu.el comint.el ns-win.el -Dhruva Krishnamurthy: changed emacsclient.c fontset.c sound.c w32proc.c +Dhruva Krishnamurthy: changed emacsclient.c fontset.c image.c sound.c + w32proc.c Diane Murray: changed erc.el erc-backend.el erc-menu.el erc-button.el erc-track.el erc-match.el erc-nets.el erc-list.el erc-autoaway.el @@ -1225,6 +1308,8 @@ Diane Murray: changed erc.el erc-backend.el erc-menu.el erc-button.el erc-goodies.el erc-ibuffer.el erc-log.el erc-nicklist.el url-http.el Makefile erc-dcc.el and 36 other files +Dick R. Chiang: changed checkdoc.el + Didier Verna: wrote gnus-diary.el nndiary.el and co-wrote nnml.el and changed nntp.el message.el gnus-group.el gnus-sum.el gnus-msg.el @@ -1241,9 +1326,9 @@ Dieter Schuster: changed etags.c Dima Kogan: wrote diff-mode-tests.el and changed diff-mode.el erc-backend.el image.c font.c gud.el hideshow.el - autorevert.el find-file.el subword.el BOOST.tests PCRE.tests PTESTS - TESTS align.el alloc.c ediff-mult.el ediff.el erc-button.el keyboard.c - lisp.el regex-tests.el and 6 other files + autorevert.el comint.el find-file.el subword.el BOOST.tests PCRE.tests + PTESTS TESTS align.el alloc.c ediff-mult.el ediff.el erc-button.el + isearch.el keyboard.c and 11 other files Dirk Herrmann: co-wrote bibtex.el @@ -1267,16 +1352,18 @@ Dmitry Gorbik: changed org.el Dmitry Gutov: wrote elisp-mode-tests.el jit-lock-tests.el json-tests.el vc-hg-tests.el xref-tests.el -and changed ruby-mode.el xref.el vc-git.el elisp-mode.el etags.el - ruby-mode-tests.el project.el js.el package.el vc-hg.el vc.el - symref/grep.el log-edit.el menu-bar.el package-test.el - progmodes/grep.el simple.el vc-svn.el eldoc.el find-func.el lisp.el - and 89 other files +and changed ruby-mode.el xref.el project.el vc-git.el elisp-mode.el + etags.el ruby-mode-tests.el js.el package.el vc-hg.el vc.el + symref/grep.el log-edit.el dired-aux.el simple.el menu-bar.el + minibuffer.el package-test.el progmodes/grep.el vc-svn.el eldoc.el + and 110 other files Dmitry Kurochkin: changed isearch.el Dmitry Lazurkin: changed progmodes/python.el python-tests.el +Dmitry Safronov: changed outline.el + Dominique de Waleffe: changed pcvs-info.el Dominique Quatravaux: changed tramp-sh.el @@ -1297,13 +1384,15 @@ Drake Wilson: changed emacsclient.c files.el misc.texi Drew Adams: wrote light-blue-theme.el and co-wrote color.el -and changed cus-edit.el dired.el faces.el files.el help-mode.el imenu.el - info.el isearch.el ls-lisp.el menu-bar.el modes.texi mouse.el - ange-ftp.el apropos.el bindings.el bookmark.el custom.el descr-text.el - dired.texi etags.el finder.el and 15 other files +and changed dired.el cus-edit.el imenu.el info.el ls-lisp.el faces.el + files.el help-mode.el help.el isearch.el menu-bar.el modes.texi + mouse.el ange-ftp.el apropos.el bindings.el bookmark.el custom.el + descr-text.el dired-aux.el dired.texi and 18 other files E. Choroba: changed simple.el +Edison Ibañez: changed auth-source-pass-tests.el + Ed L. Cashin: changed gnus-sum.el imap.el Ed Swarthout: changed hexl.el textmodes/table.el @@ -1353,9 +1442,9 @@ Eli Zaretskii: wrote [bidirectional display in xdisp.c] chartab-tests.el coding-tests.el doc-tests.el etags-tests.el rxvt.el tty-colors.el and changed xdisp.c msdos.c w32.c display.texi w32fns.c simple.el - files.el fileio.c keyboard.c w32proc.c files.texi w32term.c text.texi - dispnew.c emacs.c frames.texi dispextern.h lisp.h window.c process.c - term.c and 1125 other files + files.el fileio.c keyboard.c w32term.c w32proc.c emacs.c files.texi + text.texi dispnew.c frames.texi lisp.h dispextern.h window.c process.c + term.c and 1184 other files Emanuele Giaquinta: changed configure.ac rxvt.el charset.c etags.c fontset.c frame.el gnus-faq.texi loadup.el lread.c sh-script.el @@ -1367,20 +1456,20 @@ Emilio C. Lopes: changed woman.el cmuscheme.el help.el vc.el advice.el animate.el apropos.el artist.el bookmark.el cal-menu.el calc-prog.el calc-store.el calcalg3.el calendar.el calendar.texi checkdoc.el code-pages.el codepage.el completion.el cus-edit.el diff.el - and 56 other files + and 57 other files -Emmanuel Briot: wrote ada-prj.el xml.el -and co-wrote ada-mode.el ada-xref.el -and changed ada-stmt.el +Emmanuel Briot: wrote xml.el +and changed ada-mode.el ada-stmt.el ada-prj.el ada-xref.el Era Eriksson: changed bibtex.el dired.el json.el ses.el ses.texi shell.el tramp.el tramp.texi -Eric Abrahamsen: changed eieio-base.el registry.el nnimap.el - gnus-registry.el files.el files.texi windows.texi eieio-test-persist.el - eieio.el gnus-start.el gnus-sum.el gnus.texi nnir.el buffers.texi - checkdoc.el files-tests.el gnus-bcklg.el gnus-group.el nnmairix.el - org.el org.texi and 4 other files +Eric Abrahamsen: wrote gnus-test-headers.el +and changed gnus-sum.el gnus-group.el gnus-start.el gnus-registry.el + eieio-base.el nnimap.el gnus.texi nnir.el gnus-agent.el registry.el + gnus-srvr.el gnus.el eieio.el gnus-score.el files.el files.texi + gnus-art.el gnus-cache.el nnmail.el nnmaildir.el nnrss.el + and 43 other files Eric Bélanger: changed image.c @@ -1426,48 +1515,50 @@ Eric M. Ludlam: wrote analyze.el analyze/complete.el analyze/debug.el proj-archive.el proj-aux.el proj-comp.el proj-elisp.el proj-info.el proj-misc.el proj-obj.el proj-prog.el proj-scheme.el proj-shared.el proj.el project-am.el pulse.el refs.el sb-image.el sb.el scm.el - scope.el semantic-ia-utest.el semantic-tests.el semantic-utest-c.el - semantic-utest.el semantic/chart.el semantic/complete.el - semantic/ctxt.el semantic/debug.el semantic/find.el semantic/format.el - semantic/imenu.el semantic/sort.el semantic/texi.el semantic/util.el - source.el speedbar.el srecode-tests.el srecode/compile.el - srecode/ctxt.el srecode/el.el srecode/find.el srecode/java.el - srecode/mode.el srecode/semantic.el srecode/table.el srecode/texi.el - srt.el symref.el symref/grep.el system.el tag-file.el tag-ls.el - tag-write.el tag.el test.el + scope.el semantic-tests.el semantic-utest-c.el semantic-utest-fmt.el + semantic-utest-ia.el semantic-utest.el semantic/chart.el + semantic/complete.el semantic/ctxt.el semantic/debug.el + semantic/find.el semantic/format.el semantic/imenu.el semantic/sort.el + semantic/texi.el semantic/util.el source.el speedbar.el + srecode-tests.el srecode/compile.el srecode/ctxt.el srecode/el.el + srecode/find.el srecode/java.el srecode/mode.el srecode/semantic.el + srecode/table.el srecode/texi.el srt.el symref.el symref/grep.el + system.el tag-file.el tag-ls.el tag-write.el tag.el test-fmt.el test.el and co-wrote db-ebrowse.el srecode/cpp.el util-modes.el -and changed c.srt ede.texi info.el rmail.el speedbspec.el cedet.el +and changed c.srt ede.texi info.el rmail.el speedbspec.el cedet.el ede-autoconf.srt ede-make.srt eieio.texi gud.el sb-dir-minus.xpm sb-dir-plus.xpm sb-dir.xpm sb-mail.xpm sb-pg-minus.xpm sb-pg-plus.xpm sb-pg.xpm sb-tag-gt.xpm sb-tag-minus.xpm sb-tag-plus.xpm - sb-tag-type.xpm and 33 other files + and 50 other files Eric Schulte: wrote ob-asymptote.el ob-awk.el ob-calc.el ob-comint.el ob-coq.el ob-css.el ob-ditaa.el ob-dot.el ob-emacs-lisp.el ob-eval.el - ob-forth.el ob-gnuplot.el ob-haskell.el ob-java.el ob-js.el ob-keys.el - ob-latex.el ob-makefile.el ob-ocaml.el ob-org.el ob-ruby.el ob-sass.el - ob-shell.el ob-shen.el ob-sql.el ob-sqlite.el ob-table.el ob-tangle.el - ob.el org-plot.el + ob-forth.el ob-gnuplot.el ob-haskell.el ob-java.el ob-js.el ob-latex.el + ob-makefile.el ob-ocaml.el ob-org.el ob-ruby.el ob-sass.el ob-shell.el + ob-shen.el ob-sql.el ob-sqlite.el ob-table.el ob-tangle.el ob.el + org-plot.el and co-wrote ob-C.el ob-R.el ob-core.el ob-exp.el ob-fortran.el ob-lisp.el ob-lob.el ob-maxima.el ob-perl.el ob-picolisp.el - ob-python.el ob-ref.el ob-scheme.el org-bibtex.el + ob-python.el ob-ref.el ob-scheme.el ol-bibtex.el and changed org.texi org.el ob-clojure.el org-exp-blocks.el ob-sh.el - ox.el ox-latex.el org-src.el ob-plantuml.el ob-screen.el org-macs.el - org-table.el org-agenda.el org-mouse.el orgcard.tex ob-lilypond.el - ob-mscgen.el ob-octave.el org-clock.el org-compat.el org-footnote.el - and 14 other files + org-bibtex.el ox.el ox-latex.el org-src.el ob-plantuml.el ob-keys.el + ob-screen.el org-macs.el org-table.el org-agenda.el org-mouse.el + orgcard.tex ob-lilypond.el ob-mscgen.el ob-octave.el org-clock.el + and 16 other files Eric S Fraga: wrote ob-ledger.el and co-wrote ob-maxima.el and changed ox-icalendar.el org.texi ox-latex.el +Eric Skoglund: changed esh-proc.el eshell.texi + Eric S. Raymond: wrote AT386.el asm-mode.el cookie1.el finder.el gud.el lisp-mnt.el loadhist.el and co-wrote make-mode.el and changed vc.el vc-hooks.el vc-svn.el vc-cvs.el vc-git.el vc-rcs.el vc-sccs.el vc-hg.el vc-bzr.el vc-dispatcher.el files.texi vc-mcvs.el vc-mtn.el files.el vc-arch.el comint.el emacsbug.el simple.el vc-src.el - Makefile.in add-log.el and 273 other files + Makefile.in add-log.el and 274 other files Eric Youngdale: changed etags-vmslib.c @@ -1506,6 +1597,8 @@ Eugene Exarevsky: changed sql.el Evangelos Evangelou: changed progmodes/f90.el +Evan Moses: changed progmodes/python.el + Evgeni Dobrev: changed man.el Evgeni Kolev: changed perl-mode.el @@ -1514,7 +1607,7 @@ Evgeny Fraimovitch: changed emacsclient.c Evgeny Roubinchtein: changed mail-source.el pc-select.el -Evgeny Zajcev: changed battery.el image.c image.el +Evgeny Zajcev: changed battery.el image.c image.el quail.el Exal de Jesus Garcia Carrillo: changed erc-sound.el erc.texi @@ -1539,7 +1632,18 @@ Faried Nawaz: changed message.el Federico Beffa: changed xscheme.el -Felipe Ochoa: changed faces.el paren.el +Federico Tedin: wrote tempo-tests.el +and changed minibuf.c mouse.el package.el rect.el cursor-sensor.el + cus-start.el doc-view.el edebug.el eww.el files.texi gamegrid.el + keyboard.c minibuf.texi package-tests.el package.texi simple.el + tempo.el vc-git.el xfaces.c + +Felicián Németh: changed project.el xref.el + +Felipe Ochoa: changed faces.el js.el js.js paren.el + +Felix E. Klee: co-wrote svg.el +and changed display.texi Felix H. Dahlke: changed js.el @@ -1558,8 +1662,14 @@ Ferenc Wagner: changed nnweb.el Filipe Cabecinhas: changed nsterm.m -Filipp Gunbin: changed autorevert.el shell.el auth-source-tests.el - auth-source.el cc-menus.el dired-aux.el info.el info.texi +Filipp Gunbin: changed auth-source-tests.el auth-source.el autorevert.el + compilation.txt dired-aux.el gnus-ml.el progmodes/compile.el shell.el + cc-menus.el custom.el dabbrev.el gnus-sum.el imenu.el info.el info.texi + ldap.el search.texi sql.el + +Fix Bug#24483.: changed sql.el sql-tests.el + +Fix Bug#35307.: changed sql.el Flemming Hoejstrup Hansen: changed forms.el @@ -1575,14 +1685,14 @@ Florian Weimer: changed message.el gnus.el coding.c gnus-sum.el gnus.texi Francesco Pizzolante: changed org-clock.el org-macs.el org.el ox-html.el Francesco Potortì: wrote cmacexp.el -and changed etags.c man.el delta.h etags.1 undigest.el comint.el - configure.ac maintaining.texi uniquify.el latin-post.el rmail.el - etags.el latin-alt.el lib-src/Makefile.in sgml-mode.el Makefile.in - data.c european.el filelock.c files.el generic-x.el and 44 other files +and changed etags.c man.el delta.h etags.1 undigest.el rmail.el comint.el + configure.ac maintaining.texi uniquify.el latin-post.el etags.el + latin-alt.el lib-src/Makefile.in sgml-mode.el Makefile.in data.c + european.el filelock.c files.el generic-x.el and 44 other files -Francesc Rocher: changed MORE.STUFF splash.png splash.svg startup.el - README cus-start.el gnus.el gnus.png gnus.svg macterm.c splash.pbm - splash.xpm splash8.xpm w32term.c xdisp.c xterm.c +Francesc Rocher: changed splash.png splash.svg startup.el README + cus-start.el gnus.el gnus.png gnus.svg macterm.c splash.pbm splash.xpm + splash8.xpm w32term.c xdisp.c xterm.c Francis Devereux: changed nsfont.m @@ -1648,6 +1758,8 @@ Friedrich Delgado Friedrichs: changed org.el Fritz Knabe: changed mh-mime.el +Fritz Stelzer: changed xref.el + F. Thomas May: wrote blackbox.el Fujii Hironori: changed w32fns.c @@ -1679,12 +1791,13 @@ G Dinesh Dutt: changed etags.el Geert Kloosterman: changed which-func.el -Gemini Lasswell: wrote edebug-tests.el kmacro-tests.el testcover-tests.el -and changed edebug.el cl-macs.el cl-generic.el ert-x.el cl-print.el - edebug-test-code.el edebug.texi eieio-compat.el generator.el subr.el - autorevert-tests.el cl-print-tests.el eieio.texi emacs-lisp/debug.el - eval-tests.el eval.c filenotify-tests.el generator-tests.el kmacro.el - lread.c map-tests.el and 10 other files +Gemini Lasswell: wrote backtrace-tests.el backtrace.el edebug-tests.el + kmacro-tests.el testcover-tests.el thread-tests.el thread.el +and changed edebug.el cl-print.el edebug.texi cl-print-tests.el + debugging.texi cl-macs.el emacs-lisp/debug.el edebug-test-code.el + subr.el testcases.el testcover.el cl-generic.el ert-x.el eval.c + eieio-compat.el elisp.texi ert.el ert.texi eval-tests.el generator.el + print.c and 24 other files Geoff Gole: changed align.el ibuffer.el whitespace.el @@ -1711,7 +1824,7 @@ Georges Brun-Cottan: wrote easy-mmode.el George V. Reilly: changed emacs.ico makefile.nt -Gerd Möllmann: wrote authors.el ebrowse.el jit-lock.el rx.el tooltip.el +Gerd Möllmann: wrote authors.el ebrowse.el jit-lock.el tooltip.el and changed xdisp.c xterm.c dispnew.c dispextern.h xfns.c xfaces.c window.c keyboard.c lisp.h faces.el alloc.c buffer.c startup.el xterm.h fns.c simple.el term.c configure.ac frame.c xmenu.c emacs.c @@ -1738,10 +1851,10 @@ Giuseppe Scrivano: changed browse-url.el buffer.c configure.ac sysdep.c Glenn Morris: wrote check-declare.el f90-tests.el vc-bzr-tests.el and changed configure.ac Makefile.in src/Makefile.in calendar.el - diary-lib.el lisp/Makefile.in files.el rmail.el make-dist - progmodes/f90.el bytecomp.el simple.el authors.el admin.el emacs.texi - misc/Makefile.in startup.el lib-src/Makefile.in ack.texi display.texi - cal-menu.el and 1681 other files + diary-lib.el lisp/Makefile.in files.el make-dist rmail.el + progmodes/f90.el bytecomp.el simple.el authors.el admin.el startup.el + emacs.texi misc/Makefile.in display.texi lib-src/Makefile.in ack.texi + subr.el and 1760 other files Glynn Clements: wrote gamegrid.el snake.el tetris.el @@ -1783,7 +1896,7 @@ Gregor Schmid: changed intervals.c intervals.h tcl-mode.el textprop.c Gregory Chernov: changed nnslashdot.el -Grégory Mounié: changed man.el +Grégory Mounié: changed display.texi hi-lock.el man.el Gregory Neil Shapiro: changed mailabbrev.el @@ -1882,10 +1995,11 @@ Hoan Ton-That: changed erc-log.el Holger Schauer: wrote fortune.el and changed message-utils.el -Hong Xu: changed paren.el search.c editfns.c em-cmpl.el emacs-mime.texi - files.texi flyspell.el maintaining.texi parse-time-tests.el - parse-time.el progmodes/cpp.el progmodes/python.el programs.texi - python-tests.el subr.el vc.el +Hong Xu: changed etags.el simple.el maintaining.texi minibuf.texi + paren.el progmodes/python.el search.c editfns.c em-cmpl.el + emacs-mime.texi files.texi flyspell.el gnus-cite.el message.el + parse-time-tests.el parse-time.el progmodes/cpp.el programs.texi + python-tests.el subr.el url-util.el and 3 other files Hosoya Kei: changed TUTORIAL.ja @@ -1912,10 +2026,12 @@ Hynek Schlawack: changed gnus-art.el gnus-sum.el Ian D: changed doc-view.el image-mode.el -Ian Dunn: changed eww.el +Ian Dunn: changed eww.el vc-hg.el Ian Eure: changed sql.el url-util.el +Ian Johnson: changed comint.el + Ian Kelling: changed process.c ob-core.el Ian Lance Taylor: changed sco4.h @@ -1923,10 +2039,12 @@ Ian Lance Taylor: changed sco4.h Ian T Zimmerman: wrote gametree.el and changed ange-ftp.el desktop.el tex-mode.el -İ. Göktuğ Kayaalp: changed vc-rcs.el +İ. Göktuğ Kayaalp: changed eww.el vc-rcs.el Igor Kuzmin: wrote cconv.el +Iku Iwasa: changed auth-source-pass-tests.el auth-source-pass.el + Ikumi Keita: changed characters.el japan-util.el kinsoku.el minibuf.c Ilja Weis: co-wrote gnus-topic.el @@ -1969,12 +2087,14 @@ Irie Tetsuya: changed gnus.texi message.texi İsmail Dönmez: changed nsfont.m nsterm.m url-auth.el xterm.c +Ismail S: changed org-capture.el + Istvan Marko: changed gnus-agent.el xfns.c Itai Zukerman: changed mm-decode.el -Ivan Andrus: changed epg.el ffap.el find-file.el ibuf-ext.el ibuffer.el - newcomment.el nxml-mode.el progmodes/python.el +Ivan Andrus: changed editfns.c epg.el ffap.el find-file.el ibuf-ext.el + ibuffer.el newcomment.el nxml-mode.el progmodes/python.el Ivan Boldyrev: changed mml1991.el @@ -1985,9 +2105,9 @@ and changed eww.el shr.el appt.el dired.el help-fns.el saveplace.el Ivan Radanov Ivanov: changed quail/cyrillic.el Ivan Shmakov: changed eww.el shr.el desktop.el eww.texi faces.el files.el - cus-dep.el descr-text.el diff-mode.el enriched.el erc-track.el - facemenu.el files.texi iso-transl.el misearch.el nndoc.el simple.el - tar-mode.el tcl.el tex-mode.el url-cookie.el + tar-mode.el cus-dep.el descr-text.el diff-mode.el diff.el enriched.el + erc-track.el facemenu.el files.texi iso-transl.el misearch.el nndoc.el + rcirc.el simple.el smerge-mode.el and 5 other files Ivan Vilata i Balaguer: changed org-clock.el org.texi @@ -2001,11 +2121,16 @@ Jaap-Henk Hoepman: changed mm-decode.el Jacek Chrząszcz: changed ispell.el +Jack Coughlin: changed calc-prog.el + Jack Duthen: changed which-func.el Jack Repenning: changed unexelfsgi.c -Jackson Ray Hamilton: changed js.el sgml-mode.el +Jackson Ray Hamilton: changed js.el jsx-unclosed-2.jsx jsx.jsx js.js + jsx-comment-string.jsx files.el jsx-align-gt-with-lt.jsx + jsx-indent-level.jsx jsx-quote.jsx jsx-self-closing.jsx + jsx-unclosed-1.jsx sgml-mode.el Jack Twilley: changed message.el @@ -2015,8 +2140,12 @@ Jacques Duthen: co-wrote ps-print.el ps-samp.el Jae-hyeon Park: changed fontset.el +Jaesup Kwak: changed xwidget.c + Jaeyoun Chung: changed hangul3.el hanja3.el gnus-mule.el hangul.el +J. Alexander Branham: wrote conf-mode-tests.el + Jambunathan K: wrote ox-odt.el and co-wrote ox-html.el and changed org-lparse.el org.el org.texi ox.el icomplete.el @@ -2055,10 +2184,10 @@ Jamie Zawinski: wrote mailabbrev.el tar-mode.el and co-wrote byte-opt.el byte-run.el bytecomp.el disass.el font-lock.el and changed bytecode.c mail-extr.el subr.el -Jan Beich: changed configure.ac +Jan Beich: changed configure.ac mml-smime.el -Jan Böcker: wrote org-docview.el -and changed org.el org.texi +Jan Böcker: wrote ol-docview.el +and changed org.el org-docview.el org.texi Jan Djärv: wrote dnd.el dynamic-setting.el x-dnd.el and changed gtkutil.c xterm.c nsterm.m xfns.c configure.ac nsfns.m @@ -2105,7 +2234,7 @@ and changed org-gnus.el org-table.el org.texi Jarno Malmari: wrote url-auth-tests.el and changed url-auth.el -Jarosław Rzeszótko: changed url-http.el +Jarosław Rzeszótko: changed ielm.el url-http.el Jason Baker: changed gnus-art.el @@ -2122,7 +2251,7 @@ Jason Rumney: wrote w32-vars.el and changed w32fns.c w32term.c w32font.c w32menu.c w32-win.el w32term.h w32.c w32uniscribe.c w32-fns.el makefile.nt w32console.c w32bdf.c configure.bat keyboard.c w32proc.c w32select.c font.c image.c w32font.h - w32gui.h xdisp.c and 154 other files + w32gui.h xdisp.c and 153 other files Jason S. Cornez: changed keyboard.c @@ -2134,19 +2263,21 @@ Jay Belanger: changed calc.texi calc.el calc-ext.el calc-units.el Jay K. Adams: wrote jka-cmpr-hook.el jka-compr.el -Jay Kamat: changed erc-goodies.el esh-opt.el +Jay Kamat: changed esh-opt.el em-hist.el em-tramp.el erc-goodies.el + esh-opt-tests.el Jay McCarthy: changed org-colview.el Jay Sachs: changed gnus-score.el gnus-win.el -J.D. Smith: co-wrote idlw-help.el idlw-shell.el idlwave.el -and changed idlw-rinfo.el idlw-toolbar.el comint.el idlwave.texi vc.el - bibtex.el files.texi hideshow.el idlw-complete-structtag.el misc.texi - mouse.el +Jd Smith: co-wrote idlw-help.el idlw-shell.el idlwave.el -Jean-Christophe Helary: changed ns-win.el strings.texi subr-x.el - ucs-normalize.el +J.D. Smith: changed idlwave.el idlw-shell.el idlw-help.el idlw-rinfo.el + idlw-toolbar.el comint.el idlwave.texi vc.el bibtex.el files.texi + hideshow.el idlw-complete-structtag.el misc.texi mouse.el + +Jean-Christophe Helary: changed emacs-lisp-intro.texi ns-win.el + package-tests.el package.el strings.texi subr-x.el ucs-normalize.el Jean Haidouk: changed latin-alt.el latin-post.el latin-pre.el @@ -2178,7 +2309,9 @@ and changed emacstool.1 emacstool.c Jeffrey C Honig: wrote mh-print.el and changed mh-e.el mh-comp.el mh-utils.el mh-mime.el mh-customize.el mh-folder.el mh-funcs.el mh-alias.el mh-seq.el mh-show.el Makefile - bsdos4.h mh-junk.el mh-letter.el + bsdos4.h mh-identity.el mh-junk.el mh-letter.el + +Jelle Licht: changed auth-source-pass-tests.el auth-source-pass.el Jens Krinke: changed smime.el @@ -2199,6 +2332,8 @@ Jens Uwe Schmidt: changed edebug.el Jeramey Crawford: changed amdx86-64.h configure.ac +Jeremie Courreges-Anglas: changed kqueue.c + Jérémie Courrèges-Anglas: changed org.texi ox-latex.el Jeremy Bertram Maitin-Shepard: changed erc.el erc-backend.el @@ -2230,6 +2365,8 @@ and changed gnus-sum.el gnus-art.el message.el gnus-group.el gnus-msg.el Jhair Tocancipa Triana: changed gnus-audio.el +Jiajie Chen: changed button.el + Jihyun Cho: wrote hangul.el hanja-util.el Jim Blandy: wrote tvi970.el @@ -2249,6 +2386,11 @@ Jim Meyering: changed lread.c make-docfile.c w32.c w32font.c copyright.el alloc.c artist.el autoinsert.el buffer.h callproc.c character.h charset.c configure and 55 other files +Jimmy Aguilar Mena: changed xdisp.c xfaces.c dispextern.h face-remap.el + hl-line.el icomplete.el xwidget.c + +Jimmy Yuen Ho Wong: changed nsm.el gnutls.c gnutls.el net-utils.el + Jim Paris: changed process.c Jim Radford: changed gnus-start.el @@ -2285,12 +2427,13 @@ Joanna Pluta: changed TUTORIAL.pl João Cachopo: changed spam.el -João Távora: wrote elec-pair.el electric-tests.el message-tests.el -and changed flymake.el flymake-proc.el flymake-tests.el flymake-elisp.el - flymake.texi elisp-mode.el flymake-ui.el tex-mode.el - errors-and-warnings.c linum.el message.el shr.el xref.el Makefile - bytecomp.el checkdoc.el cperl-mode.el electric.el emacs.texi - lisp-mode.el maintaining.texi and 14 other files +João Távora: wrote elec-pair.el electric-tests.el flymake-cc.el + jsonrpc-tests.el jsonrpc.el message-tests.el +and changed flymake.el flymake-proc.el icomplete.el minibuffer.el + flymake-tests.el flymake.texi elisp-mode.el flymake-elisp.el + electric.el flymake-ui.el text.texi json-tests.el tex-mode.el + errors-and-warnings.c json.c xref.el auth-source-pass.el linum.el + maintaining.texi message.el progmodes/python.el and 29 other files Jochen Hein: changed gnus-art.el @@ -2319,6 +2462,8 @@ Joel N. Weber II: changed comint.el make-dist Joel Ray Holveck: changed gnus-sum.el info.el +Joel Rosdahl: changed flymake-proc.el progmodes/python.el python-tests.el + Joe Matarazzo: changed ebrowse.c Joe Ramey: changed filelock.c rmailsum.el @@ -2341,9 +2486,10 @@ Johan Bockgård: changed erc.el cl-macs.el pcase.el erc-backend.el erc-button.el erc-match.el icomplete.el mouse-sel.el subr.el xdisp.c browse-url.el bytecomp.el custom.el display.texi edebug.el eieio.el erc-compat.el erc-nickserv.el erc-ring.el erc-speak.el erc-track.el - and 62 other files + and 63 other files -Johan Claesson: changed cl.texi filecache.el term.el +Johan Claesson: changed cl.texi filecache.el files-x.el help-fns.el + tabulated-list.el term.el Johan Euphrosine: changed ibuf-ext.el @@ -2365,6 +2511,8 @@ John F. Trudeau: changed make-mode.el John F. Whitehead: changed mule-cmds.el mule-diag.el +John Goerzen: changed erc.el + John Grabowski: changed xfaces.c xfns.c John Heidemann: wrote mouse-copy.el mouse-drag.el @@ -2380,7 +2528,7 @@ John K. Luebs: changed org.el John Marino: changed configure.ac -John Mastro: changed auth-source.el ibuffer.el +John Mastro: changed auth-source.el ibuffer.el w32heap.c John Mongan: changed progmodes/f90.el @@ -2389,7 +2537,8 @@ John Paul Wallington: changed ibuffer.el ibuf-ext.el subr.el help-fns.el bytecomp.el cus-theme.el font-lock.el hexl.el ibuf-macs.el info.el minibuf.c re-builder.el simple.el startup.el and 135 other files -John Shahid: changed easy-mmode.el term.c termhooks.h terminal.c +John Shahid: changed term.el easy-mmode.el tramp.el window.c window.el + env.el flymake.el term.c termhooks.h terminal.c windows.texi John Sullivan: changed window.c @@ -2418,8 +2567,8 @@ John Yates: changed hideshow.el Jon Anders Skorpen: changed ox-publish.el -Jonas Bernoulli: changed eieio.el button.el ido.el lisp-mnt.el - tabulated-list.el tips.texi +Jonas Bernoulli: changed eieio.el button.el cus-edit.el ido.el + lisp-mnt.el tabulated-list.el tips.texi Jonas Hoersch: changed org-inlinetask.el org.el @@ -2431,16 +2580,23 @@ Jonathan I. Kamens: changed pop.c movemail.c rmail.el configure.ac b2m.pl simple.el timezone.el vc-hooks.el Jonathan Kyle Mitchell: changed em-dirs.el em-ls.el em-unix.el esh-cmd.el - esh-ext.el + esh-ext.el esh-mode.el xdisp.c Jonathan Leech-Pepin: wrote ox-texinfo.el Jonathan Marchand: changed cpp-root.el -Jonathan Rockway: changed rcirc.el +Jonathan Marten: changed nnimap.el + +Jonathan Rockway: co-wrote cperl-mode.el +and changed rcirc.el + +Jonathan Shin Hayase: changed sh-script.el Jonathan Stigelman: changed hilit19.el +Jonathan Tomer: changed files-tests.el files.el tramp-tests.el + Jonathan Vail: changed vc.el Jonathan Yavner: wrote ses.el tcover-ses.el tcover-unsafep.el @@ -2458,6 +2614,8 @@ Joost Kremers: changed reftex-toc.el Jordan Wilson: changed doc-view.el +Jordon Biondo: changed subr.el + Jorge A. Alfaro-Murillo: changed message.el Jorgen Schäfer: wrote erc-autoaway.el erc-goodies.el erc-spelling.el @@ -2497,18 +2655,19 @@ Joshua Datko: changed fortune.el Joshua Varner: changed intro.texi -Jostein Kjønigsen: changed progmodes/compile.el +Jostein Kjønigsen: changed nxml-mode.el progmodes/compile.el Jouni K. Seppänen: changed gnus.texi nnimap.el mm-url.el Juan León Lahoz García: wrote wdired.el and changed files.el perl-mode.el -Juanma Barranquero: wrote emacs-lock.el frameset.el keymap-tests.el -and changed subr.el desktop.el w32fns.c server.el emacsclient.c simple.el - faces.el files.el bs.el help-fns.el w32term.c org.el xdisp.c keyboard.c - w32.c buffer.c ido.el image.c window.c allout.el process.c - and 1134 other files +Juanma Barranquero: wrote emacs-lock.el frameset.el help-tests.el + keymap-tests.el +and changed subr.el desktop.el w32fns.c faces.el simple.el emacsclient.c + files.el server.el bs.el help-fns.el xdisp.c org.el w32term.c w32.c + buffer.c keyboard.c ido.el image.c window.c eval.c allout.el + and 1235 other files Juan Pechiar: wrote ob-mscgen.el and changed ob-octave.el @@ -2549,11 +2708,12 @@ Jürgen Hötzel: wrote tramp-adb.el and changed tramp-gvfs.el tramp-sh.el comint.el em-unix.el esh-util.el tramp-cache.el tramp.el url-handlers.el wid-edit.el -Juri Linkov: wrote files-x.el misearch.el replace-tests.el -and changed isearch.el info.el replace.el simple.el progmodes/grep.el - dired.el dired-aux.el progmodes/compile.el startup.el faces.el files.el - menu-bar.el bindings.el display.texi descr-text.el desktop.el comint.el - image-mode.el ispell.el man.el cus-edit.el and 359 other files +Juri Linkov: wrote files-x.el misearch.el replace-tests.el tab-bar.el + tab-line.el +and changed isearch.el info.el simple.el replace.el dired.el dired-aux.el + progmodes/grep.el progmodes/compile.el startup.el subr.el diff-mode.el + files.el menu-bar.el faces.el bindings.el display.texi image-mode.el + desktop.el comint.el minibuffer.el search.texi and 418 other files Jussi Lahdenniemi: changed w32fns.c ms-w32.h msdos.texi w32.c w32.h w32console.c w32heap.c w32inevt.c w32term.h @@ -2595,10 +2755,9 @@ Karel Klíč: changed fileio.c files.el configure.ac eval.c ftfont.c lisp.h src/Makefile.in text.texi tramp.el Karl Berry: changed info.texi emacs.texi elisp.texi text.texi anti.texi - display.texi efaq.texi ada-mode.texi autotype.texi calc.texi - cc-mode.texi cl.texi dired-x.texi ebrowse.texi ediff.texi - emacs-mime.texi emacs-xtra.texi eshell.texi eudc.texi filelock.c - forms.texi and 94 other files + display.texi efaq.texi autotype.texi calc.texi cc-mode.texi cl.texi + dired-x.texi ebrowse.texi ediff.texi emacs-mime.texi emacs-xtra.texi + eshell.texi eudc.texi filelock.c forms.texi gnu.texi and 93 other files Karl Chen: changed files.el align.el cc-vars.el emacsclient.c flymake.el flymake.texi gnus-art.el help-mode.el jka-cmpr-hook.el make-mode.el @@ -2610,10 +2769,10 @@ Karl Eichwalder: changed Makefile.in add-log.el bookmark.el dired-aux.el Karl Fogel: wrote bookmark.el mail-hist.el saveplace.el and co-wrote pcvs.el and changed simple.el files.el doc-view.el image-mode.el info.el - vc-svn.el CONTRIBUTE INSTALL autogen.sh internals.texi isearch.el - menu-bar.el simple-test.el subr.el tex-mode.el thingatpt.el - INSTALL.REPO comint.el configure configure.ac editfns.c - and 18 other files + isearch.el vc-svn.el CONTRIBUTE INSTALL autogen.sh editfns.c + internals.texi menu-bar.el simple-test.el subr.el tex-mode.el + thingatpt.el INSTALL.REPO comint.el configure configure.ac + and 21 other files Karl Heuer: changed keyboard.c lisp.h xdisp.c buffer.c xfns.c xterm.c alloc.c files.el frame.c configure.ac window.c data.c minibuf.c @@ -2628,7 +2787,7 @@ Karl Landstrom: co-wrote js.el Karl M. Hegbloom: changed gnus.el -Karl Otness: changed term.el +Karl Otness: changed configure.ac image.c term.el Karl Pflästerer: changed gnus-art.el gnus-score.el mml.el spam-stat.el vc-svn.el @@ -2643,14 +2802,15 @@ Károly Lőrentey: changed xfns.c bindings.el keyboard.c menu-bar.el Katsuhiro Hermit Endo: changed gnus-group.el gnus-spec.el Katsumi Yamaoka: wrote canlock.el -and changed gnus-art.el message.el gnus-sum.el mm-decode.el gnus.texi - mm-util.el mm-view.el gnus-util.el gnus-group.el gnus-msg.el mml.el +and changed gnus-art.el gnus-sum.el message.el mm-decode.el gnus.texi + mm-util.el mm-view.el gnus-group.el gnus-util.el gnus-msg.el mml.el shr.el rfc2047.el gnus-start.el gnus.el nntp.el gnus-agent.el nnrss.el - mm-uu.el nnmail.el emacs-mime.texi and 160 other files + mm-uu.el nnmail.el emacs-mime.texi and 161 other files Kaushal Modi: changed files.el isearch.el apropos.el calc-yank.el - desktop.el ediff-diff.el eww.el ffap.el maintaining.texi printing.el - ps-print.el variables.texi vc-hooks.el vc1-xtra.texi woman.el + custom.texi desktop.el ediff-diff.el eww.el ffap.el maintaining.texi + printing.el ps-print.el tips.texi variables.texi vc-hooks.el + vc1-xtra.texi woman.el Kaushik Srenevasan: changed gdb-mi.el @@ -2669,6 +2829,9 @@ Keisuke Nishida: changed print.c alloc.c bytecomp.el data.c keymap.c Keitaro Miyazaki: changed re-builder.el +Keith Amidon: co-wrote auth-source-pass.el +and changed auth-source-pass-tests.el + Keith Gabryelski: wrote hexl.c hexl.el Keith Packard: changed font.c @@ -2680,10 +2843,10 @@ Kelly Dean: changed simple.el help-mode.el desktop.el files.el lisp.el Kelvin White: changed erc.el erc-pcomplete.el erc.texi NEWS.24 erc-backend.el erc-ring.el erc-stamp.el -Ken Brown: changed configure.ac gmalloc.c sheap.c w32fns.c emacs.c - w32term.c conf_post.h cygwin.h unexcw.c fileio.c filenotify-tests.el - browse-url.el dispextern.h emacs.rc.in frame.c image.c lisp.h sysdep.c - w32term.h alloc.c keyboard.c and 46 other files +Ken Brown: changed configure.ac gmalloc.c sheap.c emacs.c w32fns.c + fileio.c w32term.c unexcw.c conf_post.h cygwin.h filenotify-tests.el + lisp.h browse-url.el dispextern.h emacs.rc.in fileio-tests.el frame.c + image.c keyboard.c profiler.c src/Makefile.in and 48 other files Ken Brush: changed emacsclient.c @@ -2751,6 +2914,8 @@ and changed gnus-agent.el gnus-sum.el gnus-start.el gnus-int.el nntp.el Kevin Layer: changed mml.el w32proc.c +Kévin Le Gouguec: changed font-lock.el font-lock-tests.el + Kevin Rodgers: changed compile.el mailabbrev.el progmodes/compile.el dired-x.el files.el ange-ftp.el byte-opt.el desktop.el diff-mode.el dired-x.texi ffap.el files.texi flyspell.el isearch.el killing.texi @@ -2760,8 +2925,8 @@ Kevin Rodgers: changed compile.el mailabbrev.el progmodes/compile.el Kevin Ryde: wrote info-xref.el and changed info-look.el info.el checkdoc.el cl.texi compilation.txt etags.c arc-mode.el ffap.el gnus-art.el gnus-sum.el mule.el os.texi - progmodes/compile.el woman.el MORE.STUFF browse-url.el copyright.el - dig.el files.el flyspell.el keyboard.c and 85 other files + progmodes/compile.el woman.el browse-url.el copyright.el dig.el + files.el flyspell.el keyboard.c mailcap.el and 86 other files Kim F. Storm: wrote bindat.el cua-base.el cua-gmrk.el cua-rect.el ido.el keypad.el kmacro.el @@ -2799,11 +2964,17 @@ Kobayashi Yasuhiro: changed w32fns.c configure.bat indent.c info.el Kodi Arfer: changed org.texi ox-html.el -Koichi Arakawa: changed w32proc.c +Koichi Arakawa: changed tramp-sh.el w32proc.c -Konrad Hinsen: wrote org-eshell.el +Konrad Hinsen: wrote ol-eshell.el and changed ob-python.el +Konstantin Kharlamov: changed ada-mode.el calc-aent.el calc-ext.el + calc-lang.el cc-mode.el cperl-mode.el css-mode.el cua-rect.el + diff-mode.el dnd.el ebnf-abn.el ebnf-dtd.el ebnf-ebx.el + emacs-module-tests.el epg.el faces.el gnus-art.el gtkutil.c hideif.el + htmlfontify.el lex.el and 24 other files + Konstantin Kliakhandler: changed org-agenda.el Konstantin Novitsky: changed progmodes/python.el @@ -2860,27 +3031,29 @@ and co-wrote dabbrev.el imenu.el Lars Ljung: changed esh-ext.el isearch.el Lars Magne Ingebrigtsen: wrote compface.el decompress-tests.el dns.el - dom.el ecomplete.el eww.el format-spec.el gnus-agent.el gnus-art.el - gnus-async.el gnus-bcklg.el gnus-cache.el gnus-cloud.el gnus-demon.el - gnus-draft.el gnus-dup.el gnus-eform.el gnus-fun.el gnus-group.el - gnus-html.el gnus-int.el gnus-logic.el gnus-picon.el gnus-range.el - gnus-salt.el gnus-spec.el gnus-srvr.el gnus-start.el gnus-sum.el - gnus-undo.el gnus-util.el gnus-uu.el gnus-win.el ietf-drums.el - mail-parse.el mail-prsvr.el mail-source.el message.el messcompat.el - mm-archive.el mm-view.el mml.el netrc.el network-stream-tests.el - network-stream.el nnagent.el nndir.el nndraft.el nngateway.el nnmail.el - nnoo.el nntp.el nnweb.el nsm.el parse-time-tests.el puny.el qp.el - rfc2045.el rfc2231.el rtree.el score-mode.el shr-tests.el shr.el - spam.el svg.el url-domsuf.el url-queue.el + dom.el ecomplete.el eww.el exif.el format-spec.el gnus-agent.el + gnus-art.el gnus-async.el gnus-bcklg.el gnus-cache.el gnus-cloud.el + gnus-demon.el gnus-draft.el gnus-dup.el gnus-eform.el gnus-fun.el + gnus-group.el gnus-html.el gnus-int.el gnus-logic.el gnus-picon.el + gnus-range.el gnus-salt.el gnus-spec.el gnus-srvr.el gnus-start.el + gnus-sum.el gnus-undo.el gnus-util.el gnus-uu.el gnus-win.el + ietf-drums.el image-converter.el mail-parse.el mail-prsvr.el + mail-source.el message.el messcompat.el mm-archive.el mm-view.el mml.el + netrc.el network-stream-tests.el network-stream.el nnagent.el nndir.el + nndraft.el nngateway.el nnmail.el nnoo.el nntp.el nnweb.el nsm.el + parse-time-tests.el puny.el qp.el rfc2045.el rfc2104-tests.el + rfc2231.el rtree.el score-mode.el shr-tests.el shr.el spam.el + text-property-search-tests.el text-property-search.el url-domsuf.el + url-queue.el and co-wrote gnus-kill.el gnus-mh.el gnus-msg.el gnus-score.el gnus-topic.el gnus.el gssapi.el mailcap.el mm-bodies.el mm-decode.el mm-encode.el mm-util.el nnbabyl.el nndoc.el nneething.el nnfolder.el nnheader.el nnimap.el nnmbox.el nnmh.el nnml.el nnspool.el nnvirtual.el - rfc2047.el time-date.el -and changed gnus.texi process.c gnus-ems.el subr.el gnutls.c gnus-cite.el - pop3.el smtpmail.el display.texi files.el url-http.el gnus-xmas.el - simple.el auth-source.el image.c gnutls.el proto-stream.el dired.el - image.el text.texi nnrss.el and 318 other files + rfc2047.el svg.el time-date.el +and changed gnus.texi process.c subr.el simple.el files.el gnutls.c + gnus-ems.el smtpmail.el display.texi url-http.el auth-source.el + gnus-cite.el pop3.el dired.el edebug.el gnus-xmas.el text.texi image.el + image.c gnutls.el nnrss.el and 651 other files Lars Rasmusson: changed ebrowse.c @@ -2907,14 +3080,14 @@ Lee Duhem: changed eval.c Leigh Stoller: changed emacsclient.c server.el Lele Gaifax: changed progmodes/python.el flymake.el python-tests.el - TUTORIAL.it flymake-proc.el flymake.texi + TUTORIAL.it flymake-proc.el flymake.texi isearch.el Lennart Borgman: co-wrote ert-x.el -and changed nxml-mode.el tutorial.el window.el ada-xref.el buff-menu.el - emacs-lisp/debug.el emacsclient.c filesets.el flymake.el help-fns.el - isearch.el linum.el lisp-mode.el lisp.el mouse.el recentf.el - remember.el replace.el ruby-mode.el shell.el texinfmt.el - and 3 other files +and changed nxml-mode.el tutorial.el re-builder.el window.el ada-xref.el + buff-menu.el emacs-lisp/debug.el emacsclient.c filesets.el flymake.el + help-fns.el isearch.el linum.el lisp-mode.el lisp.el mouse.el + recentf.el remember.el replace.el ruby-mode.el shell.el + and 4 other files Lennart Staflin: changed dired.el diary-ins.el diary-lib.el tq.el xdisp.c @@ -2946,6 +3119,8 @@ Liam Stitt: changed url-file.el url-vars.el Liang Wang: changed etags.el +Lin Sun: changed makefile-edit.el + Lixin Chin: changed bibtex.el Lloyd Zusman: changed mml.el pgg-gpg.el @@ -2954,6 +3129,8 @@ Lluís Vilanova: changed ede/linux.el Luca Capello: changed mm-encode.el +Lucas Werkmeister: changed emacs.c emacs.service + Lucid, Inc.: changed byte-opt.el byte-run.el bytecode.c bytecomp.el delsel.el disass.el faces.el font-lock.el lmenu.el mailabbrev.el select.el xfaces.c xselect.c @@ -2962,7 +3139,7 @@ Luc Teirlinck: wrote help-at-pt.el and changed files.el autorevert.el cus-edit.el subr.el simple.el frames.texi startup.el display.texi files.texi dired.el comint.el modes.texi custom.texi emacs.texi fns.c frame.el ielm.el minibuf.texi - variables.texi buffers.texi commands.texi and 212 other files + variables.texi buffers.texi commands.texi and 211 other files Ludovic Courtès: wrote nnregistry.el and changed configure.ac gnus.texi loadup.el @@ -2975,8 +3152,12 @@ Lukas Huonker: changed tetris.el Łukasz Demianiuk: changed erc.el -Łukasz Stelmach: changed erc.el ps-print.el cookie1.el gtkutil.c - message.el org-agenda.el org-bbdb.el org.el ox-html.el ox.el +Łukasz Jędrzejewski: changed auth-source-pass-tests.el + auth-source-pass.el + +Łukasz Stelmach: changed erc.el ps-print.el cookie1.el gnus-group.el + gtkutil.c message.el org-agenda.el org-bbdb.el org.el org.texi + ox-html.el ox.el simple.el Luke Lee: changed hideif.el @@ -2997,8 +3178,9 @@ Madan Ramakrishnan: changed org-agenda.el Magnus Henoch: wrote sasl-scram-rfc-tests.el sasl-scram-rfc.el and changed url-http.el ispell.el url.el dbusbind.c dns.el configure.ac nnmaildir.el progmodes/compile.el sasl.el url-gw.el url-parse.el - url-proxy.el autoinsert.el cl.texi cyrillic.el dbus.el gnus.texi - hashcash.el image.c latin-pre.el log-edit.el and 16 other files + url-proxy.el auth-source-pass-tests.el auth-source-pass.el + autoinsert.el cl.texi cyrillic.el dbus.el gnus.texi hashcash.el image.c + and 18 other files Maksim Golubev: changed opascal.el @@ -3021,16 +3203,17 @@ Marc Fleischeuers: changed files.el Marc Girod: changed informat.el rmail.el rmailsum.el sendmail.el -Marcin Borkowski: wrote lisp-tests.el -and changed battery.el doc-view.el elisp-mode-tests.el lisp.el +Marcin Borkowski: wrote fill-tests.el lisp-tests.el +and changed battery.el doc-view.el elisp-mode-tests.el fill.el lisp.el parse-time.el studly.el Marc Lefranc: changed gnus-art.el Marco Melgazzi: changed term.el -Marco Wahl: wrote org-eww.el -and changed org-agenda.el org.el +Marco Wahl: wrote ol-eww.el +and changed org-agenda.el page-ext.el org.el scroll-lock-tests.el + scroll-lock.el Marco Walther: changed mips-siemens.h unexelfsni.c unexsni.c @@ -3073,7 +3256,7 @@ Mark D. Baushke: changed mh-e.el mh-utils.el mh-mime.el mh-comp.el mh-speed.el mh-funcs.el mh-alias.el etags.c mh-junk.el mh-tool-bar.el mh-xemacs-compat.el pgg-gpg.el -Mark Diekhans: changed files.el progmodes/compile.el subr.el +Mark Diekhans: changed files.el ispell.el progmodes/compile.el subr.el Mark E. Shoulson: changed org.el org-entities.el @@ -3099,9 +3282,9 @@ Mark Osbourne: changed hexl-mode.el Mark Oteiza: wrote mailcap-tests.el md4-tests.el xdg-tests.el xdg.el and changed image-dired.el dunnet.el mpc.el eww.el json.el calc-units.el - subr.el lcms.c message.el subr-x.el tex-mode.el cl-macs.el cl.texi + subr-x.el subr.el lcms.c message.el tex-mode.el cl-macs.el cl.texi ibuffer.el lcms-tests.el mailcap.el cl-print.el emacs-lisp/chart.el - files.el htmlfontify.el pcase.el and 169 other files + files.el htmlfontify.el pcase.el and 178 other files Mark Plaksin: changed nnrss.el term.el @@ -3117,8 +3300,6 @@ Markus Hauck: changed org-agenda.el Markus Heiser: changed gud.el -Markus Heritsch: co-wrote ada-mode.el ada-stmt.el ada-xref.el - Markus Holmberg: changed thingatpt.el Markus Rost: wrote cus-test.el @@ -3134,7 +3315,7 @@ Markus Triska: wrote linum.el and changed bytecomp.el byte-opt.el doctor.el image-mode.el processes.texi calc-math.el emacs.c expand.el flymake.el flymake.texi flyspell.el handwrite.el internals.texi proced.el prolog.el ps-mode.el - speedbar.el subr.el tumme.el widget.texi windows.texi xterm.c + speedbar.el subr.el text.texi tumme.el widget.texi and 3 other files Mark W. Eichin: changed keyboard.c xterm.c @@ -3153,6 +3334,8 @@ Martin Jesper Low Madsen: changed auth-source.el Martin J. Reed: changed ldap.el +Martin Kletzander: changed erc-join.el + Martin Kretzschmar: changed gnus-spec.el gnus-sum.el Martin Larose: changed message.el @@ -3164,10 +3347,10 @@ Martin Neitzel: changed supercite.el Martin Pohlack: changed iimage.el pc-select.el -Martin Rudalics: changed window.el window.c windows.texi frame.c - frames.texi w32fns.c xdisp.c xterm.c w32term.c frame.el xfns.c help.el - buffer.c display.texi cus-start.el dispnew.c frame.h mouse.el nsfns.m - window.h gtkutil.c and 203 other files +Martin Rudalics: changed window.el window.c windows.texi frame.c xdisp.c + w32fns.c frames.texi xterm.c w32term.c frame.el xfns.c display.texi + help.el buffer.c window.h cus-start.el frame.h dispnew.c mouse.el + nsfns.m dired.el and 209 other files Martin Stjernholm: wrote cc-bytecomp.el and co-wrote cc-align.el cc-cmds.el cc-compat.el cc-defs.el cc-engine.el @@ -3186,6 +3369,8 @@ and changed ob-emacs-lisp.el Masahiko Sato: wrote vip.el +Masahiro Nakamura: changed ns-win.el nsterm.m + Masanobu Umeda: wrote metamail.el rmailsort.el timezone.el and co-wrote gnus-kill.el gnus-mh.el gnus-msg.el gnus.el nnbabyl.el nndoc.el nneething.el nnfolder.el nnheader.el nnmbox.el nnmh.el nnml.el @@ -3199,8 +3384,8 @@ Masatake Yamato: wrote add-log-tests.el imenu-tests.el ld-script.el and co-wrote cc-guess.el and changed etags.el asm-mode.el hexl.el xdisp.c bindings.el man.el xfaces.c simple.el vc.el wid-edit.el add-log.el etags.c faces.el - pcvs.el progmodes/compile.el register.el ruler-mode.el sh-script.el - buffer.c cc-langs.el cus-face.el and 80 other files + pcvs.el progmodes/compile.el progmodes/cpp.el register.el ruler-mode.el + sh-script.el buffer.c cc-langs.el and 80 other files Masayuki Ataka: changed texinfmt.el texinfo.el characters.el cmuscheme.el make-mode.el @@ -3212,23 +3397,27 @@ and changed tumme.el dired.el dired.texi Mathias Megyei: changed lisp/Makefile.in +Mathieu Othacehe: changed tramp-adb.el + Mats Lidell: changed TUTORIAL.sv european.el gnus-art.el org-element.el Matt Armstrong: changed gnus-topic.el gnus.el imap.el message.el shell.el +Matt Bisson: changed xterm.c + Matt Curtis: changed pulse.el Matt Fidler: changed package.el -Matthew Bauer: changed startup.el +Matthew Bauer: changed comint.el startup.el Matthew Carter: changed sql.el Matthew Junker: changed cal-tex.el -Matthew Leach: changed configure.ac arc-mode.el battery.el emacs.c - font-lock.el ispell.el lisp.h misc.texi process.c processes.texi - server.el src/Makefile.in +Matthew Leach: changed server.el process.c configure.ac emacs.c lisp.h + misc.texi processes.texi arc-mode.el battery.el font-lock.el ispell.el + src/Makefile.in Matthew Luckie: changed configure.ac @@ -3238,12 +3427,14 @@ Matthew Mundell: changed calendar.texi diary-lib.el files.texi objects.texi os.texi positions.texi searching.texi subr.el text.texi and 3 other files +Matthew Newton: changed imenu.el + Matthias Dahl: changed faces.el process.c process.h Matthias Förste: changed files.el Matthias Meulien: changed bookmark.el progmodes/python.el buff-menu.el - prog-mode.el simple.el tabify.el vc-dir.el + prog-mode.el simple.el tabify.el vc-dir.el vc-git.el Matthias Wiehl: changed gnus.el @@ -3258,7 +3449,11 @@ Matt Hodges: changed textmodes/table.el faces.el iswitchb.el simple.el edebug.texi eldoc.el em-hist.el em-pred.el fixit.texi icon.el ido.el locate.el paragraphs.el pcomplete.el repeat.el and 3 other files -Mattias Engdegård: changed subr.el +Mattias Engdegård: changed rx.el searching.texi rx-tests.el autorevert.el + regexp-opt.el calc-tests.el filenotify.el subr.el progmodes/compile.el + files.el mouse.el bytecomp.el compile-tests.el autorevert-tests.el + byte-opt.el bytecomp-tests.el calc-alg.el compilation.txt font.c + regex-emacs.c regexp-opt-tests.el and 121 other files Matt Lundin: changed org-agenda.el org.el org-bibtex.el org-footnote.el ox-publish.el org-bbdb.el org-datetree.el org-gnus.el @@ -3272,7 +3467,11 @@ Matt Simmons: changed message.el Matt Swift: changed dired.el editfns.c lisp-mode.el mm-decode.el outline.el progmodes/compile.el rx.el simple.el startup.el -Mauro Aranda: changed autorevert.el files.texi os.texi +Mauro Aranda: changed wid-edit.el cus-edit.el gnus.texi octave.el pong.el + autorevert.el cc-mode.texi control.texi custom-tests.el custom.el + dbus.texi dired-x.texi elisp-mode.el epa.el esh-mode.el + eshell/eshell.el eudc.texi files.texi functions.texi gnus-faq.texi + info.el and 14 other files Maxime Edouard Robert Froumentin: changed gnus-art.el mml.el @@ -3283,16 +3482,16 @@ Memnon Anon: changed org.texi Micah Anderson: changed spook.lines Michael Albinus: wrote autorevert-tests.el dbus-tests.el dbus.el - filenotify-tests.el filenotify.el files-x-tests.el secrets.el - shadowfile-tests.el tramp-cmds.el tramp-compat.el tramp-ftp.el - tramp-gvfs.el tramp-smb.el tramp-tests.el url-tramp-tests.el - url-tramp.el vc-tests.el xesam.el zeroconf.el + filenotify-tests.el filenotify.el files-x-tests.el secrets-tests.el + secrets.el shadowfile-tests.el tramp-archive-tests.el tramp-archive.el + tramp-cmds.el tramp-compat.el tramp-ftp.el tramp-gvfs.el + tramp-integration.el tramp-rclone.el tramp-smb.el tramp-sudoedit.el + tramp-tests.el url-tramp-tests.el url-tramp.el vc-tests.el zeroconf.el and co-wrote tramp-cache.el tramp-sh.el tramp.el and changed tramp.texi tramp-adb.el trampver.el trampver.texi dbusbind.c - file-notify-tests.el ange-ftp.el files.el dbus.texi files.texi + file-notify-tests.el files.el ange-ftp.el files.texi dbus.texi autorevert.el tramp-fish.el kqueue.c tramp-gw.el tramp-imap.el os.texi - configure.ac lisp.h gfilenotify.c inotify.c keyboard.c - and 224 other files + xesam.el configure.ac lisp.h shell.el gfilenotify.c and 253 other files Michael Ben-Gershon: changed acorn.h configure.ac riscix1-1.h riscix1-2.h unexec.c @@ -3300,6 +3499,8 @@ Michael Ben-Gershon: changed acorn.h configure.ac riscix1-1.h riscix1-2.h Michael Brand: changed org.texi org-table.el org.el org-agenda.el org-capture.el ob-tangle.el org-feed.el org-id.el org-list.el +Michael Brumlow: changed htmlfontify.el + Michaël Cadilhac: changed browse-url.el fr-dired-ref.tex gnus-sum.el gnus.texi ido.el Makefile emacsbug.el files.el fill.el flyspell.el fr-refcard.tex ispell.el meta-mode.el nnrss.el anti.texi battery.el @@ -3325,8 +3526,13 @@ Michael Gschwind: wrote iso-cvt.el Michael Harnois: changed nnimap.el -Michael Heerdegen: changed subr-x.el control.texi dired-aux.el dired.el - easy-mmode.el eldoc.el pcase.el shr.el subr-x-tests.el wdired.el +Michael Heerdegen: changed cl-macs.el subr.el control.texi copyright.el + css-mode.el dired.el easy-mmode.el filesets.el hi-lock.el macroexp.el + modula2.el ob-C.el ob-core.el ob-exp.el ob-groovy.el ob-haskell.el + ob-io.el ob-lisp.el ob-lob.el ob-lua.el ob-octave.el + and 227 other files + +Michael Hendricks: changed help.el Michael Hoffman: changed term.el xterm.el @@ -3358,14 +3564,17 @@ Michael Olson: changed erc.el erc-backend.el Makefile erc-track.el erc-log.el erc-stamp.el erc-autoaway.el erc-dcc.el erc-goodies.el erc-list.el erc-compat.el erc-identd.el erc.texi ERC-NEWS erc-bbdb.el erc-match.el erc-notify.el erc-ibuffer.el erc-services.el remember.el - erc-button.el and 55 other files + erc-button.el and 54 other files + +Michael Orlitzky: changed tex-mode.el Michael Piotrowski: changed gnus-art.el gnus-sum.el ps-print.el Michael R. Cook: changed gnus-sum.el gnus-topic.el gnus-art.el -Michael R. Mauger: changed sql.el emacsclient.c comint.el cua-base.el - custom.el facemenu.el recentf.el replace.el server.el tramp.el w32fns.c +Michael R. Mauger: changed sql.el sql-tests.el comint.el emacsclient.c + comint-tests.el cua-base.el custom.el facemenu.el recentf.el replace.el + server.el tramp.el w32fns.c Michael R. Wolf: changed ange-ftp.el @@ -3375,7 +3584,7 @@ Michael Schuldt: changed calc-comb.el Michael Shields: changed spam.el gnus-art.el gnus-sum.el gnus-cite.el Makefile.in gnus-group.el gnus.el intel386.h nndraft.el pgg-def.el - window.c window.el + server.el window.c window.el Michael Sperber: changed org.el nnmail.el aix3-1.h aix4-2.h gnus-sum.el gnus.texi mail-source.el mailcap.el nnml.el org-capture.el @@ -3386,9 +3595,9 @@ Michael Staats: wrote pc-select.el Michael Vehrs: changed quail.el woman.el Michael Welsh Duggan: changed nnimap.el lisp.h sh-script.el w32term.c - buffer.c gnus-spec.el keyboard.c mail/sieve-manage.el nnir.el nnmail.el - print.c termhooks.h url-http.el w32-win.el w32fns.c w32menu.c w32term.h - woman.el xdisp.c xterm.c + buffer.c gnus-spec.el gud.el keyboard.c mail/sieve-manage.el nnir.el + nnmail.el print.c termhooks.h url-http.el w32-win.el w32fns.c w32menu.c + w32term.h woman.el xdisp.c xterm.c Michael Weylandt: changed ox-latex.el @@ -3396,16 +3605,22 @@ Michael Witten: changed TUTORIAL fixit.texi intro.texi Michal Jankowski: changed insdel.c keyboard.c +Michał Kondraciuk: changed cus-edit.el + +Michał Krzywkowski: changed elide-head.el + Michal Nazarewicz: wrote cc-mode-tests.el descr-text-tests.el tildify-tests.el and co-wrote tildify.el -and changed regex.c casefiddle.c regex-tests.el simple.el +and changed regex.c casefiddle.c simple.el test/src/regex-emacs-tests.el casefiddle-tests.el message.el regex.h search.c buffer.h ert-x.el - files.el frame.c remember.el unidata-gen.el README SpecialCasing.txt - bindings.el buffer.c cc-mode.el cfengine.el char-fold-tests.el - and 36 other files + files.el frame.c remember.el sgml-mode.el unidata-gen.el README + SpecialCasing.txt bindings.el buffer.c cc-mode.el cfengine.el + and 37 other files -Michal Sojka: changed ox-icalendar.el +Michal Nowak: changed gnutls.el + +Michal Sojka: changed ox-icalendar.el textmodes/table.el Michelangelo Grigni: wrote ffap.el and changed gnus-score.el @@ -3437,8 +3652,9 @@ Mike Haertel: changed 7300.h Mike Kazantsev: changed erc-dcc.el -Mike Kupfer: changed mh-comp.el mh-e.el emacs-mime.texi gnus-mh.el - gnus.texi mh-acros.el mh-compat.el mh-e.texi mh-mime.el mh-utils.el +Mike Kupfer: changed mh-comp.el mh-e.el ftcrfont.c mh-utils.el + emacs-mime.texi ftxfont.c gnus-mh.el gnus.texi mh-acros.el mh-compat.el + mh-e.texi mh-identity.el mh-mime.el xftfont.c Mike Lamb: changed em-unix.el esh-util.el pcmpl-unix.el @@ -3539,6 +3755,8 @@ Neal Ziring: co-wrote vi.el (public domain) Neil Mager: wrote appt.el +Neil Roberts: changed custom.texi files.el + Neil W. Van Dyke: wrote webjump.el Nelson H. F. Beebe: changed configure.ac @@ -3556,7 +3774,7 @@ Niall Mansfield: changed etags.c Nic Ferrier: changed ert.el tramp.el -Nicholas Drozd: changed calc.texi +Nicholas Drozd: changed calc.texi editfns.c ol.html ol.txt shr.el Nicholas Maniscalco: changed term.el @@ -3567,10 +3785,11 @@ Nick Alcock: changed control.texi customize.texi display.texi files.el Nick Dokos: changed org-table.el ox.el icalendar.el mh-search.el org-mobile.el org.el ox-ascii.el url-cache.el -Nick Drozd: changed eww.el eww.texi +Nick Drozd: changed quail/georgian.el eww.el eww.texi shr.el HELLO + cc-mode-tests.el ido.texi -Nick Helm: changed eldoc.el help.el help.texi whitespace-tests.el - whitespace.el +Nick Helm: changed eldoc.el help.el help.texi nsterm.m + whitespace-tests.el whitespace.el Nick Roberts: wrote gdb-mi.el t-mouse.el and changed gdb-ui.el gud.el building.texi tooltip.el speedbar.el @@ -3586,8 +3805,9 @@ Nicolas Avrutin: changed url-http.el Nicolas Calderon Asselin: changed org-clock.el -Nicolas Goaziou: wrote org-duration.el org-element.el org-lint.el - org-macro.el ox-ascii.el ox-latex.el ox-md.el ox-org.el ox.el +Nicolas Goaziou: wrote org-duration.el org-element.el org-keys.el + org-lint.el org-macro.el org-num.el ox-ascii.el ox-latex.el ox-md.el + ox-org.el ox.el and co-wrote ox-beamer.el ox-icalendar.el ox-man.el and changed org-list.el org.el ox-html.el org-footnote.el ox-texinfo.el org.texi ox-publish.el ox-odt.el org-inlinetask.el org-indent.el @@ -3598,13 +3818,13 @@ and changed org-list.el org.el ox-html.el org-footnote.el ox-texinfo.el Nicolas Graner: changed message.el Nicolas Petton: wrote map-tests.el map.el seq-tests.el seq.el - thunk-tests.el thunk.el + thunk-tests.el thunk.el url-handlers-test.el and co-wrote auth-source-pass.el auth-source-tests.el subr-tests.el -and changed README configure.ac sed2v2.inp sequences.texi authors.el - README.W32 emacs.png emacs23.png arc-mode.el cl-extra.el emacs.svg - manoj-dark-theme.el Emacs.icns HISTORY Makefile.in auth-source.el +and changed README configure.ac sed2v2.inp authors.el sequences.texi + README.W32 emacs.png emacs23.png HISTORY arc-mode.el cl-extra.el + emacs.svg manoj-dark-theme.el Emacs.icns Makefile.in auth-source.el emacs.ico fns.c make-tarball.txt obarray-tests.el obarray.el - and 35 other files + and 37 other files Nicolas Richard: wrote cl-seq-tests.el cmds-tests.el replace-tests.el and changed ffap.el package.el byte-run.el help.el keyboard.c landmark.el @@ -3626,7 +3846,7 @@ Nikolai Weibull: changed org.el Nikolaj Schumacher: changed flymake.el progmodes/compile.el eldoc.el elp.el nsfont.m rx.el -Nikolaus Rath: changed nnimap.el gnus.texi +Nikolaus Rath: changed nnimap.el gnus-sum.el gnus.texi Nikolay Kudryavtsev: changed sql.el vc-git.el @@ -3636,7 +3856,7 @@ Nils Ackermann: changed message.el nnmh.el reftex-vars.el Nitish Chandra: changed simple.el -N. Jackson: changed emacs.texi +N. Jackson: changed emacs.texi forms.texi Noah Friedman: wrote eldoc.el rlogin.el type-break.el and co-wrote erc-dcc.el @@ -3647,13 +3867,16 @@ and changed rsz-mini.el emacs-buffer.gdb comint.el files.el Makefile Noah Lavine: changed tramp.el -Noam Postavsky: changed lisp-mode.el progmodes/python.el xdisp.c - cl-macs.el lisp-mode-tests.el emacs-lisp/debug.el data.c simple.el - term.el ert.el subr.el help-fns.el bytecomp.el cl-print.el - elisp-mode.el eval.c ffap.el modes.texi search.c sh-script.el - cl-preloaded.el and 249 other files +Noah Swainland: changed calc.el + +Noam Postavsky: changed progmodes/python.el lisp-mode.el bytecomp.el + lisp-mode-tests.el term.el xdisp.c cl-macs.el eval.c + emacs-lisp/debug.el simple.el data.c modes.texi subr.el elisp-mode.el + ert.el help-fns.el isearch.el processes.texi cl-print.el ffap.el + print.c and 357 other files Nobuyoshi Nakada: co-wrote ruby-mode.el +and changed ruby-mode-tests.el Nobuyuki Hikichi: changed news-risc.h @@ -3673,27 +3896,32 @@ Nuutti Kotivuori: changed gnus-sum.el flow-fill.el gnus-cache.el Odd Gripenstam: wrote dcl-mode.el -Ogawa Hirofumi: changed calc-aent.el gnus-sum.el nnimap.el +Ogawa Hirofumi: changed calc-aent.el gnus-sum.el nnimap.el sieve-mode.el + sieve.el Ognyan Kulev: changed TUTORIAL.bg cyrillic.el Okazaki Tetsurou: changed cc-fonts.el vc-svn.el vc.el -Olaf Rogalsky: changed help.el keyboard.c mouse.el xt-mouse.el +Olaf Rogalsky: changed keyboard.c help.el mouse.el xt-mouse.el Olaf Sylvester: wrote bs.el +Ola Nilsson: changed sh-script.el + Ole Aamot: changed compile.el +Oleg Pykhalov: changed gnus-sum.el + Oleg S. Tihonov: changed cyrillic.el ispell.el language/cyrillic.el map-ynp.el subr.el Oleh Krehel: wrote ob-J.el and co-wrote subr-tests.el -and changed dired-aux.el outline.el checkdoc.el subr.el buffer.c - check-declare.el alloc.c appt.el buffer.h category.c cl-indent.el - custom.el derived.el dired-x.el dired.el dired.texi display.texi - easy-mmode.el ffap.el gdb-mi.el keyboard.c and 12 other files +and changed dired-aux.el outline.el checkdoc.el files.el subr.el buffer.c + check-declare.el alloc.c appt.el buffer.h calc.el category.c + cl-indent.el custom.el derived.el dired-x.el dired.el dired.texi + display.texi easy-mmode.el ffap.el and 14 other files Oleksandr Gavenko: changed generic-x.el progmodes/grep.el @@ -3728,10 +3956,10 @@ and co-wrote eudc-bob.el eudc-export.el eudc-hotlist.el eudc-vars.el eudc.el eudcb-bbdb.el eudcb-ldap.el eudcb-ph.el and changed ph.el -Óscar Fuentes: changed ido.el vc-hooks.el xfns.c CPP-DEFINES addpm.c - addsection.c browse-url.el cmdproxy.c configure.ac diff-mode.el - emacsclient.c keyboard.c ms-w32.h preprep.c progmodes/grep.el ses.el - vc-bzr.el vc-cvs.el vc-git.el vc-hg.el vc-mtn.el and 7 other files +Óscar Fuentes: changed ido.el password-cache.el ses.el vc-hooks.el xfns.c + CPP-DEFINES addpm.c addsection.c browse-url.el callproc.c cmdproxy.c + configure.ac diff-mode.el emacsclient.c keyboard.c ms-w32.h preprep.c + progmodes/grep.el vc-bzr.el vc-cvs.el vc-git.el and 9 other files Øyvind Stegard: changed gnus-msg.el @@ -3753,9 +3981,9 @@ and changed imenu.el make-mode.el Paul Eggert: wrote rcs2log and co-wrote cal-dst.el and changed lisp.h configure.ac alloc.c process.c fileio.c editfns.c - xdisp.c sysdep.c keyboard.c image.c emacs.c xterm.c data.c lread.c - fns.c callproc.c Makefile.in gnulib.mk eval.c buffer.c frame.c - and 1608 other files + xdisp.c sysdep.c image.c keyboard.c data.c emacs.c fns.c lread.c + xterm.c eval.c callproc.c Makefile.in frame.c buffer.c gnulib-comp.m4 + and 1821 other files Paul Fisher: changed fns.c @@ -3768,10 +3996,10 @@ and changed message.el gnus-util.el gnus-int.el gnus.el gnus-agent.el gnus-start.el gnus-sum.el nnmail.el Paul Pogonyshev: changed subr.el byte-opt.el eval.c progmodes/python.el - which-func.el align.el bytecode.c cc-langs.el cl-macs.el configure.ac - dabbrev.el display.texi eldoc.el elisp-mode.el etags.el fns-tests.el - fns.c functions.texi generator.el hash.texi image-file.el - and 15 other files + which-func.el align.el bytecode.c bytecomp.el cc-langs.el cl-macs.el + configure.ac dabbrev.el display.texi eldoc.el elisp-mode.el + emacs-lisp/debug.el ert.el ert.texi etags.el fns-tests.el fns.c + and 20 other files Paul Rankin: changed outline.el @@ -3787,6 +4015,8 @@ Paul Rubin: changed config.h sun2.h texinfmt.el window.c Paul Sexton: wrote org-ctags.el +Paul Smith: changed compile-tests.el progmodes/compile.el + Paul Stevenson: changed nnvirtual.el Paul Stodghill: changed gnus-agent.el gnus-util.el @@ -3805,7 +4035,8 @@ and changed flymake.texi Peder O. Klingenberg: wrote dns-mode-tests.el and changed dns-mode.el icalendar.el mm-decode.el calc-comb.el calc.texi - dunnet.el emacsbug.el emacsclient.c gnus.texi misc.texi + dunnet.el emacsbug.el emacsclient.c eww.el gnus.texi misc.texi + url-http.el url-queue.el url-util.el url-vars.el url.texi P. E. Jareth Hein: changed gnus-util.el @@ -3870,7 +4101,7 @@ Peter Münster: changed gnus-delay.el gnus-demon.el gnus-group.el Peter O'Gorman: changed configure.ac frame.h hpux10-20.h termhooks.h -Peter Oliver: changed perl-mode.el server.el +Peter Oliver: changed perl-mode.el server.el vc-sccs.el Peter Povinec: changed term.el @@ -3912,14 +4143,18 @@ Petr Salinger: changed configure.ac gnu-kfreebsd.h Phil Hagelberg: wrote ert-x-tests.el and changed package.el pcmpl-unix.el subr.el -Philip Jackson: wrote find-cmd.el org-irc.el +Philip Hudson: changed em-hist.el + +Philip Jackson: wrote find-cmd.el ol-irc.el +and changed org-irc.el Philip K: changed ispell.el Philippe Schnoebelen: wrote gomoku.el mpuz.el +and changed cl-extra.el Philippe Vaucher: changed callint.c composite.el debugging.texi - replace.el subr.el text-mode.el + modes.texi replace.el subr.el tabulated-list.el text-mode.el Philippe Waroquiers: changed etags.el term.c @@ -3928,32 +4163,39 @@ Philipp Haselwarter: changed gnus-agent.el gnus-sum.el gnus-sync.el Philipp Rumpf: changed electric.el -Philipp Stephani: wrote checkdoc-tests.el ediff-diff-tests.el - eval-tests.el ido-tests.el lread-tests.el mouse-tests.el - xt-mouse-tests.el -and changed emacs-module.c eval.c bytecomp.el nsterm.m - emacs-module-tests.el files.el lread.c configure.ac editfns.c - mod-test.c alloc.c electric.el gtkutil.c lisp.h electric-tests.el - emacs.c macfont.m test/Makefile.in xt-mouse.el Makefile - bytecomp-tests.el and 96 other files +Philipp Stephani: wrote callint-tests.el checkdoc-tests.el + cl-preloaded-tests.el ediff-diff-tests.el eval-tests.el ido-tests.el + lread-tests.el mouse-tests.el xt-mouse-tests.el +and changed emacs-module.c emacs-module-tests.el json.c json-tests.el + eval.c mod-test.c lisp.h lread.c nsterm.m configure.ac bytecomp.el + internals.texi gtkutil.c emacs-module.h.in files.el alloc.c electric.el + test/Makefile.in editfns.c electric-tests.el emacs.c + and 126 other files Phillip Lord: wrote ps-print-tests.el -and changed lisp/Makefile.in undo.c simple.el test/Makefile.in Makefile - Makefile.in viper-cmd.el elisp-mode-tests.el keyboard.c ldefs-clean.el - loadup.el autoload.el automated/Makefile.in build-zips.sh cmds.c - dired.el eieio-tests.el fileio.c htmlfontify.el - make-test-deps.emacs-lisp reftex-tests.el and 168 other files +and changed build-zips.sh lisp/Makefile.in undo.c simple.el + build-dep-zips.py test/Makefile.in Makefile Makefile.in emacs.nsi + keyboard.c viper-cmd.el README-windows-binaries README.W32 + elisp-mode-tests.el ldefs-clean.el loadup.el README-scripts autoload.el + automated/Makefile.in cmds.c dired.el and 171 other files -Phil Sainty: changed term.el derived.el easy-mmode.el lisp.el package.el - progmodes/grep.el simple.el subword.el +Phil Sainty: wrote autoload-longlines-mode-tests.el + autoload-major-mode-tests.el autoload-minor-mode-tests.el + so-long-tests-helpers.el so-long-tests.el so-long.el spelling-tests.el +and changed diff.el goto-addr.el term.el cl-macs.el comint.el derived.el + easy-mmode.el emacs.texi files.texi lisp.el misc.texi package.el + progmodes/grep.el simple.el subword.el trouble.texi Phil Sung: changed wdired.el dired.texi follow.el progmodes/python.el -Pierre Lorenzon: changed eieio-custom.el +Pierre Lorenzon: changed eieio-custom.el pconf.el Pierre Poissinger: changed charset.c -Pierre Téchoueyres: changed eieio-test-persist.el epg.el tramp-cmds.el +Pierre Téchoueyres: changed browse-url.el eieio-test-persist.el epg.el + fns-tests.el fns.c mouse.el sql.el text.texi tramp-cmds.el + +Pierre-Yves Luyten: changed bookmark.el cua-rect.el Pieter E.J. Pareit: wrote mixal-mode.el @@ -3961,6 +4203,8 @@ Pieter Praet: changed org-crypt.el Pieter Schoenmakers: changed TUTORIAL.nl +Pieter Van Oostrum: changed package.el shell-tests.el shell.el + Piet van Oostrum: changed data.c fileio.c flyspell.el smtpmail.el Pinku Surana: changed sql.el @@ -3969,7 +4213,10 @@ Piotr Trojanek: changed gnutls.c process.c Piotr Zieliński: wrote org-mouse.el -Pip Cet: changed dispextern.h gtkutil.c xdisp.c xfaces.c xterm.c xterm.h +Pip Cet: changed fns.c display.texi xdisp.c xterm.c dispextern.h frame.el + gtkutil.c image.c json-tests.el json.c mail-utils.el nsterm.m simple.el + subr.el text.texi textprop.c timer-list.el tty-colors-tests.el + tty-colors.el url-http.el xfaces.c xterm.h Pontus Michael: changed simple.el @@ -3984,7 +4231,8 @@ and changed abbrev-tests.el abbrev.el cl-lib-tests.el loadup.el Puneeth Chaganti: changed org.texi ox.el org-agenda.el org-capture.el ox-html.el svg.el -Radon Rosborough: changed eval.c +Radon Rosborough: changed package.el custom.texi package.texi startup.el + eval.c lread.c org.texi os.texi Rafael Laboissiere: changed org-remember.el org-bibtex.el org.el org.texi @@ -3992,7 +4240,8 @@ Rafael Sepúlveda: changed TUTORIAL.es Raffael Mancini: changed misc.el -Raimon Grau: changed replace.el thingatpt.el +Raimon Grau: changed thingatpt.el calc-fin.el eww.el replace.el + thingatpt-tests.el Rainer Orth: changed gtkutil.c lisp/Makefile.in @@ -4025,7 +4274,7 @@ and changed libc.el browse-url.el fileio.c info.el mm-decode.el Ramakrishnan M: changed mlm-util.el -Rami Ylimäki: changed term.c efaq.texi termchar.h tparam.h tty-colors.el +Rami Ylimäki: changed efaq.texi term.c tparam.h termchar.h tty-colors.el xterm.el Randall Smith: changed dired.el @@ -4034,10 +4283,10 @@ Randal Schwartz: wrote pp.el Ransom Williams: changed files.el -Rasmus Pank Roulund: changed ox-latex.el gnus-notifications.el org.el - ange-ftp.el gnus-fun.el gnus-icalendar.el gnus-sum.el gnus.texi ido.el - message.texi ob-C.el org-entities.el org-src.el org.texi ox-html.el - ox.el vc-git.el +Rasmus Pank Roulund: wrote org-tempo.el +and changed ox-latex.el gnus-notifications.el org.el ange-ftp.el + gnus-fun.el gnus-icalendar.el gnus-sum.el gnus.texi ido.el message.texi + ob-C.el org-entities.el org-src.el org.texi ox-html.el ox.el vc-git.el Raul Acevedo: changed info.el options.el @@ -4049,11 +4298,11 @@ and changed gnus-art.el gnus-msg.el gnus.texi message.el nnmail.el R. Bernstein: changed gud.el -Reiner Steib: wrote gmm-utils.el gnus-news.el +Reiner Steib: wrote gmm-utils.el and changed message.el gnus.texi gnus-art.el gnus-sum.el gnus-group.el gnus.el mml.el gnus-faq.texi mm-util.el gnus-score.el message.texi gnus-msg.el gnus-start.el gnus-util.el spam-report.el mm-uu.el spam.el - mm-decode.el files.el gnus-agent.el nnmail.el and 174 other files + mm-decode.el files.el gnus-agent.el nnmail.el and 172 other files Remek Trzaska: changed gnus-ems.el @@ -4073,13 +4322,14 @@ Reuben Thomas: changed ispell.el whitespace.el dired-x.el files.el sh-script.el emacsclient-tests.el remember.el README emacsclient.c misc.texi msdos.c simple.el INSTALL ada-mode.el ada-xref.el alloc.c arc-mode.el authors.el config.bat copyright dired-x.texi - and 34 other files + and 36 other files Ricardo Wurmus: changed xwidget.el xwidget.c configure.ac xwidget.h Riccardo Murri: changed vc-bzr.el tls.el Richard Copley: changed Makefile.in epaths.in epaths.nt gdb-mi.el + text.texi Richard Dawe: changed config.in src/Makefile.in @@ -4115,7 +4365,7 @@ and co-wrote cc-align.el cc-cmds.el cc-defs.el cc-engine.el cc-langs.el and changed files.el keyboard.c simple.el xterm.c xdisp.c rmail.el fileio.c process.c sysdep.c buffer.c xfns.c window.c subr.el configure.ac startup.el sendmail.el emacs.c Makefile.in editfns.c - info.el dired.el and 1339 other files + info.el dired.el and 1338 other files Richard Ryniker: changed sendmail.el @@ -4139,7 +4389,8 @@ Robert Bihlmeyer: changed gnus-score.el gnus-util.el message.el Robert Brown: changed lisp-mode.el -Robert Cochran: changed bytecomp.el checkdoc.el data.c map.el +Robert Cochran: changed tab-bar.el bytecomp.el checkdoc.el data.c + frames.texi map.el Robert Fenk: changed desktop.el @@ -4156,17 +4407,21 @@ Robert Marshall: changed mule-cmds.el Roberto Huelga Díaz: changed org-clock.el org-timer.el -Roberto Rodríguez: changed ada-mode.texi glossary.texi widget.texi +Roberto Rodríguez: changed glossary.texi widget.texi Robert P. Goldman: changed org.texi ob-exp.el org.el ox-latex.el -Robert Pluim: changed gtkutil.c configure.ac files.texi dired-x.texi - ftfont.c misc.texi process.c vc-git.el xfns.c xterm.c bindings.el - desktop.el efaq.texi epa.texi filelock.c font.c ftcrfont.c - gnus-agent.el gnus-demon.el gnus.texi gtkutil.h and 19 other files +Robert Pluim: wrote nsm-tests.el +and changed process.c gtkutil.c processes.texi vc-git.el configure.ac + ftfont.c network-stream.el nsm.el process-tests.el files.texi font.c + ftcrfont.c gnus-icalendar.el gnutls.el gtkutil.h + network-stream-tests.el text.texi w32.c xfns.c xftfont.c auth.texi + and 83 other files Robert Thorpe: changed cus-start.el indent.el +Robert Weiner: changed cus-edit.el + Rob Giardina: changed org-agenda.el Rob Kaut: changed vhdl-mode.el @@ -4196,21 +4451,20 @@ and changed compile.el add-log.el configure.ac files.el vc.el simple.el rlogin.el rmail.el and 139 other files Roland Winkler: wrote proced.el -and changed bibtex.el faces.el crm.el process.c appt.el artist.el - conf-mode.el cus-edit.el diary-lib.el flyspell.el hideshow.el - ibuf-ext.el ibuffer.el ispell.el make-mode.el sgml-mode.el sh-script.el - skeleton.el smtpmail.el +and changed bibtex.el faces.el crm.el find-dired.el bookmark.el process.c + appt.el artist.el bibtex-style.el conf-mode.el cus-edit.el diary-lib.el + flyspell.el hideshow.el ibuf-ext.el ibuffer.el ispell.el make-mode.el + sgml-mode.el sh-script.el skeleton.el smtpmail.el -Rolf Ade: changed sql.el +Rolf Ade: changed sql.el tcl.el -Rolf Ebert: co-wrote ada-mode.el ada-stmt.el ada-xref.el -and changed files.el find-file.el +Rolf Ebert: changed ada-mode.el files.el find-file.el Romain Francoise: changed efaq.texi message.el make-dist gnus.texi dired-x.el Makefile.in comint.el fileio.c ibuf-ext.el subr.el configure.ac files.texi gnus-sum.el gnus-uu.el progmodes/compile.el puresize.h replace.el startup.el doclicense.texi emacs.c gnus-fun.el - and 150 other files + and 149 other files Roman Belenov: changed which-func.el @@ -4231,7 +4485,7 @@ Rüdiger Sonderfeld: wrote inotify-tests.el reftex-tests.el and changed eww.el octave.el shr.el bibtex.el configure.ac misc/Makefile.in reftex-vars.el vc-git.el TUTORIAL.de ada-mode.el autoinsert.el building.texi calc-lang.el cc-langs.el dired.texi - editfns.c emacs.c emacs.texi epa.el erc.el eww.texi and 38 other files + editfns.c emacs.c emacs.texi epa.el erc.el eww.texi and 39 other files Rui-Tao Dong: changed nnweb.el @@ -4245,6 +4499,8 @@ Russ Allbery: changed message.el Ryan Barrett: changed dirtrack.el +Ryan Brown: changed cl-indent.el + Ryan Crum: changed json.el Ryan Thompson: changed advice-tests.el ido.el minibuffer-tests.el @@ -4280,13 +4536,13 @@ Sam Kendall: changed etags.c etags.el Sam Steingold: wrote gulp.el midnight.el and changed progmodes/compile.el cl-indent.el simple.el vc-cvs.el vc.el - mouse.el vc-hg.el files.el font-lock.el tex-mode.el ange-ftp.el - sgml-mode.el window.el add-log.el bindings.el bookmark.el - bug-reference.el calendar.el cperl-mode.el diary-lib.el dired.el - and 152 other files + mouse.el vc-hg.el etags.el files.el font-lock.el tex-mode.el + ange-ftp.el sgml-mode.el vc-git.el window.el add-log.el bindings.el + bookmark.el bug-reference.el calendar.el cperl-mode.el + and 157 other files Samuel Bronson: changed custom.el emacsclient.c keyboard.c - progmodes/grep.el unexmacosx.c + progmodes/grep.el semantic/format.el unexmacosx.c Samuel Freilich: changed simple.el @@ -4357,6 +4613,8 @@ Sebastian Kremer: wrote dired-aux.el dired.el ls-lisp.el and co-wrote dired-x.el find-dired.el and changed add-log.el +Sebastian Reuße: changed find-dired.el + Sebastian Rose: co-wrote org-protocol.el and changed ox-publish.el ftfont.c ox-jsinfo.el @@ -4404,6 +4662,8 @@ Seweryn Kokot: changed positions.texi searching.texi Shakthi Kannan: wrote tamil-dvorak.el and changed ert.texi lisp-mode.el programs.texi text.texi +Shanavas M: changed buffer-tests.el + Shaun Johnson: changed ob-tangle.el org-exp-blocks.el Shawn Boles: changed url-cookie.el @@ -4423,13 +4683,16 @@ Shigeru Fukaya: wrote bytecomp-tests.el and changed apropos.el bs.el byte-opt.el bytecomp.el elint.el rx-new.el ses.el subr.el texinfmt.el +Shingo Tanaka: changed files.el + Shinichirou Sugou: changed etags.c Shoji Nishimura: changed org.el Sho Nakatani: changed doc-view.el -Shuguang Sun: changed dired-aux.el +Shuguang Sun: changed dired-aux.el tramp-adb.el tramp-archive.el + tramp-integration.el Shuhei Kobayashi: wrote hex-util.el hmac-def.el hmac-md5.el and changed gnus-group.el message.el nnmail.el @@ -4442,12 +4705,16 @@ Sidney Markowitz: changed doctor.el nsmenu.m Sigbjorn Finne: changed gnus-srvr.el -Simen Heggestøyl: wrote color-tests.el css-mode-tests.el dom-tests.el - ring-tests.el rot13-tests.el sql-tests.el -and changed css-mode.el json-tests.el json.el sgml-mode.el css-mode.css - scss-mode.scss ring.el rot13.el scheme.el sql.el color.el files.el - js.el less-css-mode.el less-css-mode.less maintaining.texi midnight.el - seq.el sequences.texi +Simen Heggestøyl: wrote asm-mode-tests.el autoinsert-tests.el + color-tests.el css-mode-tests.el dom-tests.el makesum-tests.el + page-tests.el paren-tests.el ring-tests.el rot13-tests.el sql-tests.el +and changed css-mode.el css-mode.css json-tests.el json.el sgml-mode.el + scss-mode.scss page.el ring.el rot13.el scheme.el sql.el asm-mode.el + autoinsert.el color.el files.el js.el less-css-mode.el + less-css-mode.less maintaining.texi makesum.el midnight.el + and 5 other files + +Simona Arizanova: changed help.el Simon Josefsson: wrote dig.el dns-mode.el flow-fill.el fringe.el imap.el mml-sec.el mml-smime.el password-cache.el rfc2104.el sieve-mode.el @@ -4458,7 +4725,7 @@ and changed message.el gnus-sum.el gnus-art.el smtpmail.el pgg-gpg.el pgg.el gnus-agent.el mml2015.el mml.el gnus-group.el mm-decode.el gnus-msg.el gnus.texi mail/sieve-manage.el pgg-pgp5.el browse-url.el gnus-int.el gnus.el hashcash.el mm-view.el password.el - and 102 other files + and 101 other files Simon Law: changed delsel.el electric.el @@ -4483,7 +4750,7 @@ Simon Thum: changed ob-maxima.el Skip Collins: changed w32fns.c w32term.c w32term.h -Slawomir Nowaczyk: changed emacs.py progmodes/python.el TUTORIAL.pl +Sławomir Nowaczyk: changed emacs.py progmodes/python.el TUTORIAL.pl flyspell.el ls-lisp.el w32proc.c Spencer Thomas: changed dabbrev.el emacsclient.c gnus.texi server.el @@ -4499,20 +4766,29 @@ Stefan Bruda: co-wrote prolog.el Stefan Guath: changed find-dired.el +Stefan Kangas: wrote bookmark-tests.el delim-col-tests.el morse-tests.el + paragraphs-tests.el password-cache-tests.el studly-tests.el + tabify-tests.el timezone-tests.el underline-tests.el uudecode-tests.el +and changed bookmark.el package.el efaq.texi package.texi ibuffer.el + mwheel.el cperl-mode.el fns.c gud.el simple.el subr.el autoinsert.el + comint-tests.el cus-edit.el delim-col.el dired-aux.el dired-x.el + em-term.el ert.texi flow-fill.el frames.texi and 146 other files + Stefan Merten: co-wrote rst.el -Stefan Monnier: wrote bibtex-style.el bytecomp-tests.el bzrmerge.el +Stefan Monnier: wrote bibtex-style.el bytecomp-tests.el cl-generic-tests.el cl-generic.el cl-preloaded.el cl-print.el cl.el - css-mode.el cursor-sensor.el cvs-status.el diff-mode.el gv.el inline.el - lisp-tests.el log-edit.el log-view.el minibuffer-tests.el minibuffer.el - mpc.el nadvice.el pcase.el pcvs-defs.el pcvs-info.el pcvs-parse.el - pcvs-util.el radix-tree.el regexp-opt-tests.el reveal.el smerge-mode.el - smie.el subword-tests.el vc-mtn.el + css-mode.el cursor-sensor.el cvs-status.el diff-mode.el fileloop.el + footnote-tests.el gv.el inline.el lisp-tests.el log-edit.el log-view.el + minibuffer-tests.el minibuffer.el mpc.el nadvice.el pcase.el + pcvs-defs.el pcvs-info.el pcvs-parse.el pcvs-util.el radix-tree.el + regexp-opt-tests.el reveal.el smerge-mode.el smie.el subword-tests.el + vc-mtn.el and co-wrote font-lock.el gitmerge.el pcvs.el -and changed subr.el simple.el keyboard.c lisp.h bytecomp.el files.el - vc.el cl-macs.el xdisp.c alloc.c eval.c sh-script.el - progmodes/compile.el keymap.c tex-mode.el newcomment.el buffer.c - window.c lisp-mode.el lread.c vc-hooks.el and 1282 other files +and changed subr.el simple.el keyboard.c bytecomp.el files.el lisp.h + cl-macs.el vc.el xdisp.c alloc.c eval.c sh-script.el + progmodes/compile.el keymap.c tex-mode.el buffer.c newcomment.el + window.c lread.c fileio.c help-fns.el and 1372 other files Stefano Facchini: changed gtkutil.c @@ -4531,9 +4807,9 @@ Stefan Wiens: changed gnus-sum.el Steinar Bang: changed gnus-setup.el imap.el Štěpán Němec: changed INSTALL calc-ext.el cl.texi comint.el edebug.texi - font-lock.el loading.texi maps.texi mark.texi message.texi mini.texi - minibuf.texi misc.texi programs.texi subr.el tips.texi url-vars.el - url.texi vc-git.el window.c windows.texi + font-lock.el functions.texi leim-ext.el loading.texi maps.texi + mark.texi message.texi mini.texi minibuf.texi misc.texi programs.texi + subr.el tips.texi url-vars.el url.texi vc-git.el and 3 other files Stephan Stahl: changed which-func.el buff-menu.el buffer.c dired-x.texi ediff-mult.el @@ -4542,10 +4818,10 @@ Stephen A. Wood: changed fortran.el Stephen Berman: wrote todo-mode-tests.el and co-wrote todo-mode.el -and changed todo-mode.texi diary-lib.el dired-tests.el doc-view.el - files.el minibuffer.el wdired-tests.el dired.el frames.texi hl-line.el - info.el menu-bar.el mouse.el otodo-mode.el subr.el .gitattributes - TUTORIAL allout.el artist.el compile.texi cus-start.el +and changed wdired.el todo-mode.texi diary-lib.el wdired-tests.el + dired-tests.el doc-view.el files.el minibuffer.el dired.el frames.texi + hl-line.el info.el menu-bar.el mouse.el otodo-mode.el subr.el + .gitattributes TUTORIAL allout.el artist.el compile.texi and 43 other files Stephen C. Gilardi: changed configure.ac @@ -4554,24 +4830,25 @@ Stephen Compall: changed saveplace.el texinfo.el Stephen Eglen: wrote iswitchb.el mspools.el and changed diary-lib.el octave.el org-agenda.el locate.el replace.el - hexl.el info-look.el sendmail.el spell.el uce.el MORE.STUFF add-log.el - advice.el allout.el autoinsert.el avoid.el backquote.el battery.el - bib-mode.el bruce.el c-mode.el and 80 other files + hexl.el info-look.el sendmail.el spell.el uce.el add-log.el advice.el + allout.el autoinsert.el avoid.el backquote.el battery.el bib-mode.el + bruce.el c-mode.el ccl.el and 79 other files Stephen Gildea: wrote refcard.tex and co-wrote mh-funcs.el mh-search.el -and changed time-stamp.el mh-e.el mh-comp.el mh-utils.el mh-customize.el - mh-junk.el fileio.c files.el fortran.el mh-e.texi mh-mime.el mwheel.el - tex-mode.el +and changed time-stamp.el time-stamp-tests.el mh-e.el mh-comp.el + mh-utils.el mh-junk.el files.el mh-customize.el mh-e.texi mh-show.el + backups.texi dns-mode.el fileio.c files.texi fortran.el goto-addr.el + mh-mime.el misc.texi mwheel.el tex-mode.el Stephen J. Turnbull: changed ediff-init.el strings.texi subr.el Stephen Leake: wrote elisp-mode-tests.el -and changed ada-mode.el ada-xref.el elisp-mode.el mode-local.el window.el - xref.el CONTRIBUTE vc-mtn.el ada-mode.texi ada-prj.el cedet-global.el - ede/generic.el ada-stmt.el cl-generic.el ede/locate.el files.texi - project.el windows.texi INSTALL.REPO INSTALL.W64 align.el - and 21 other files +and changed ada-mode.el ada-xref.el elisp-mode.el xref.el window.el + mode-local.el CONTRIBUTE ada-prj.el project.el vc-mtn.el ada-stmt.el + cedet-global.el ede/generic.el simple.el autoload.el bytecomp.el + cl-generic.el ede/locate.el files.texi functions.texi package.el + and 30 other files Stephen Pegoraro: changed xterm.c @@ -4583,13 +4860,15 @@ Steve Fisk: co-wrote cal-tex.el Steve Grubb: changed vcdiff -Steven Allen: changed xdg.el +Steven Allen: changed em-prompt.el xdg.el + +Steven De Herdt: changed vc/vc-bzr.el Steven E. Harris: changed nnheader.el Steven Huwig: changed emacs.py progmodes/python.el -Steven L. Baur: wrote footnote.el +Steven L. Baur: co-wrote footnote.el and changed gnus-xmas.el gnus-msg.el add-log.el edebug.el gnus-ems.el gnus-start.el gnus-topic.el message.el nnbabyl.el nntp.el webjump.el @@ -4605,6 +4884,8 @@ Steve Nygard: changed unexnext.c Steve Purcell: wrote less-css-mode.el and changed package.el nnimap.el nsterm.m sql.el +Steve Scott: changed rcirc.el + Steve Strassmann: wrote spook.el Steve Youngs: changed mh-utils.el mh-xemacs-compat.el mh-customize.el @@ -4645,9 +4926,10 @@ Svante Carl V. Erichsen: changed cl-indent.el Svend Tollak Munkejord: changed deuglify.el Sven Joachim: changed files.el de-refcard.tex dired-aux.el emacs.1 - arc-mode.el dired-x.el em-cmpl.el em-hist.el em-ls.el esh-cmd.el - esh-ext.el esh-io.el files.texi gnus-news.texi gnus-sum.el gnus.texi - help.el make-dist message.el movemail.c mule.texi and 9 other files + arc-mode.el dired-x.el doc/misc/gnus.texi em-cmpl.el em-hist.el + em-ls.el esh-cmd.el esh-ext.el esh-io.el files.texi gnus-sum.el + gnus.texi help.el make-dist message.el movemail.c mule.texi + and 9 other files Sylvain Chouleur: changed gnus-icalendar.el icalendar.el @@ -4679,7 +4961,7 @@ Takai Kousuke: changed ccl.el image/compface.el Takeshi Yamada: changed fns.c Tak Kunihiro: wrote pixel-scroll.el -and changed frames.texi mouse.el mwheel.el dired.el +and changed frames.texi mouse.el mwheel.el dired.el ns-win.el Tao Fang: changed url-http.el @@ -4687,12 +4969,12 @@ Taro Kawagishi: wrote md4.el ntlm.el sasl-ntlm.el and changed arc-mode.el Tassilo Horn: wrote doc-view.el -and co-wrote org-gnus.el +and co-wrote ol-gnus.el and changed reftex-vars.el tex-mode.el gnus.texi reftex-cite.el tsdh-dark-theme.el tsdh-light-theme.el gnus-sum.el file-notify-tests.el - reftex.el misc.texi prog-mode.el subword.el image-mode.el lisp-mode.el - cc-cmds.el display.texi em-term.el emacsbug.el files.el gnus-art.el - nnimap.el and 74 other files + reftex.el misc.texi org-gnus.el prog-mode.el subword.el image-mode.el + json.el lisp-mode.el cc-cmds.el display.texi em-term.el emacsbug.el + files.el and 82 other files Tatsuya Ichikawa: changed gnus-agent.el gnus-cache.el @@ -4703,8 +4985,8 @@ Ted Phelps: changed mh-search.el mh-e.el mh-folder.el mh-junk.el Ted Wiles: changed org-habit.el -Teemu Likonen: changed dired.el epg.el erc-backend.el gnus-agent.el - gnus.texi indent.el message.el +Teemu Likonen: changed epg.el dired.el epg-config.el erc-backend.el + gnus-agent.el gnus.texi indent.el message.el mml-sec.el Teodor Zlatanov: wrote auth-source.el gnus-registry.el gnus-tests.el gnutls-tests.el gnutls.el registry.el spam-report.el @@ -4712,7 +4994,7 @@ Teodor Zlatanov: wrote auth-source.el gnus-registry.el gnus-tests.el and changed spam.el gnus.el nnimap.el gnus.texi gnutls.c gnus-sum.el auth.texi cfengine.el gnus-sync.el gnus-util.el gnus-start.el netrc.el gnutls.h message.el spam-stat.el encrypt.el mail-source.el nnir.el - nnmail.el auth-source-tests.el configure.ac and 120 other files + nnmail.el auth-source-tests.el configure.ac and 119 other files Terje Rosten: changed xfns.c version.el xterm.c xterm.h @@ -4741,8 +5023,8 @@ Thien-Thi Nguyen: wrote last-chance.el and co-wrote hideshow.el and changed ewoc.el vc.el info.el processes.texi zone.el lisp-mode.el scheme.el text.texi vc-rcs.el display.texi fileio.c files.el vc-git.el - MORE.STUFF TUTORIAL.it bindat.el cc-vars.el configure.ac dcl-mode.el - diff-mode.el dired.el and 169 other files + TUTORIAL.it bindat.el cc-vars.el configure.ac dcl-mode.el diff-mode.el + dired.el elisp.texi and 168 other files Thierry Banel: co-wrote ob-C.el and changed calc-arith.el @@ -4751,14 +5033,14 @@ Thierry Emery: changed kinsoku.el timezone.el url-http.el wid-edit.el Thierry Volpiatto: changed bookmark.el files.el dired-aux.el eshell/eshell.el gnus-sum.el keyboard.c net-utils.el package.el - tramp.el eldoc.el files.texi image-mode.el info.el man.el pcmpl-gnu.el - subr.el woman.el avoid.el commands.texi dired.el doc-view.el - and 11 other files + tramp.el eldoc.el files.texi image-mode.el info.el man.el minibuffer.el + pcmpl-gnu.el subr.el winner.el woman.el avoid.el commands.texi + and 15 other files Thomas Bach: changed wisent/python.el -Thomas Baumann: wrote org-mhe.el -and co-wrote org-bbdb.el +Thomas Baumann: wrote ol-mhe.el +and co-wrote ol-bbdb.el Thomas Bellman: co-wrote avl-tree.el @@ -4769,9 +5051,10 @@ Thomas Dorner: changed ange-ftp.el Thomas Dye: changed org.texi org-bibtex.el ob-R.el org.el Thomas Fitzsimmons: wrote soap-client.el -and changed soap-inspect.el ldap.el eudc-vars.el eudc.texi ntlm.el - eudc.el eudcb-ldap.el eudc-export.el eudcb-bbdb.el eudcb-ph.el - display.texi url-http.el +and changed soap-inspect.el ldap.el eudc-vars.el eudc.el eudc.texi + ntlm.el eudcb-ldap.el eudcb-bbdb.el eudc-bob.el eudc-export.el + eudcb-ph.el package.el url-http.el diary-lib.el display.texi + eudc-hotlist.el icalendar.el url-auth.el Thomas Horsley: changed cxux-crt0.s cxux.h cxux7.h emacs.c nh3000.h nh4000.h simple.el sysdep.c xterm.c @@ -4840,20 +5123,23 @@ Tim Van Holder: changed emacsclient.c Makefile.in configure.ac Tino Calancha: wrote buff-menu-tests.el ediff-ptch-tests.el em-ls-tests.el ffap-tests.el hi-lock-tests.el ls-lisp-tests.el register-tests.el rmc-tests.el -and changed ibuffer.el dired-tests.el ibuf-ext.el dired.el dired-aux.el - simple.el replace.el ibuffer-tests.el ls-lisp.el diff-mode.el - ibuf-macs.el cl-seq.el dired-x.el dired.texi ediff-ptch.el em-ls.el - files.el replace-tests.el buff-menu.el cl.texi ediff-init.el - and 82 other files +and changed ibuffer.el ibuf-ext.el dired-tests.el dired.el replace.el + dired-aux.el replace-tests.el simple.el ibuf-macs.el subr.el dired.texi + ibuffer-tests.el ls-lisp.el diff-mode.el files.el cl-macs.el cl-seq.el + dired-x.el ediff-ptch.el em-ls.el buff-menu.el and 95 other files Titus von der Malsburg: changed simple.el window.el -Tobias Bading: changed progmodes/compile.el +Tobias Bading: changed gtkutil.c progmodes/compile.el xfns.c Tobias C. Rittweiler: changed font-lock.el searching.texi sendmail.el +Tobias Gerdin: changed xref.el + Tobias Ringström: changed etags.c +Tobias Zawada: changed wid-edit.el + Toby Allsopp: changed ldap.el eudc.el Toby Cubitt: co-wrote avl-tree.el @@ -4877,6 +5163,10 @@ Tom Hageman: changed etags.c Tom Houlder: wrote mantemp.el +Tom Levy: changed sequences.texi + +Tommi Komulainen: changed progmodes/python.el + Tommi Vainikainen: changed gnus-sum.el message.el mml-sec.el Tomohiko Morioka: co-wrote mm-bodies.el mm-decode.el mm-encode.el @@ -4902,12 +5192,12 @@ Tom Seddon: changed w32font.c Tom Tromey: wrote bug-reference.el erc-list.el package-x.el and co-wrote package.el tcl.el -and changed js.el buffer.c lisp.h css-mode.el js-tests.el mhtml-mode.el - makefile.el window.c cmds.c files.el keyboard.c keymap.c process.c - xfns.c buffer.h bytecode.c callint.c callproc.c composite.c - configure.ac dispextern.h and 176 other files +and changed data.c lisp.h js.el buffer.c data-tests.el alloc.c + css-mode.el js-tests.el mhtml-mode.el process.c window.c editfns.c + fns.c keyboard.c keymap.c lread.c makefile.el xfns.c bytecode.c cmds.c + configure.ac and 206 other files -Tom Willemse: changed elec-pair.el package.el prog-mode.el +Tom Willemse: changed elec-pair.el package.el perl-mode.el prog-mode.el progmodes/python.el simple.el Toon Claes: changed latin-alt.el @@ -4930,7 +5220,7 @@ Toshiaki Nomura: changed uxpds.h Trent W. Buck: changed rcirc.el remember.el rx.el -Trevor Murphy: changed gnus.texi nnimap.el org.el +Trevor Murphy: changed find-dired.el gnus.texi nnimap.el org.el Trevor Spiteri: changed progmodes/grep.el @@ -4940,6 +5230,8 @@ Triet Hoai Lai: changed vntelex.el viet-util.el vietnamese.el Troels Nielsen: changed process.c buffer.c progmodes/compile.el window.el +Troy Hinckley: changed progmodes/compile.el + Trung Tran-Duc: changed nntp.el Tsuchiya Masatoshi: changed gnus-art.el mm-view.el gnus-sum.el @@ -4975,10 +5267,11 @@ and changed org-gnus.el smime.el Ulrich Leodolter: changed w32proc.c -Ulrich Müller: changed configure.ac lib-src/Makefile.in src/Makefile.in - version.el calc-units.el doctor.el emacs.1 files.el gamegrid.el gud.el - server.el ChgPane.c ChgSel.c HELLO INSTALL Makefile.in XMakeAssoc.c - authors.el bytecomp.el case-table.el configure and 39 other files +Ulrich Müller: changed configure.ac calc-units.el lib-src/Makefile.in + src/Makefile.in version.el doctor.el emacs.1 files.el gamegrid.el + gud.el server.el ChgPane.c ChgSel.c HELLO INSTALL Makefile.in + XMakeAssoc.c authors.el bytecomp.el case-table.el configure + and 39 other files Ulrich Neumerkel: changed xterm.c @@ -4993,7 +5286,9 @@ Vadim Nasardinov: changed allout.el Vagn Johansen: changed gnus-cache.el vc-svn.el -Vaidheeswaran C: changed help-mode.el +Vaidheeswaran C: changed help-mode.el tabulated-list.el + +Väinö Järvelä: changed nsfns.m Valentin Gatien-Baron: changed emacs-module.c @@ -5001,10 +5296,12 @@ Valentin Wüstholz: changed org.el Valery Alexeev: changed cyril-util.el cyrillic.el +Van L: changed subr.el + Vasilij Schneidermann: changed cus-start.el eww.el cc-mode.el debugging.texi display.texi edebug.el emacs-lisp/debug.el eval.c - ielm.el os.texi redisplay-testsuite.el shr.el snake.el term.el - tetris.el xdisp.c xterm.c + ielm.el os.texi profiler.el redisplay-testsuite.el shr.el snake.el + term.el tetris.el xdisp.c xterm.c Vasily Korytov: changed cyrillic.el message.el cperl-mode.el gnus-art.el gnus-dired.el gnus-msg.el gnus-util.el mail-source.el @@ -5013,9 +5310,10 @@ Vasily Korytov: changed cyrillic.el message.el cperl-mode.el gnus-art.el Vegard Øye: changed viper-init.el Vibhav Pant: changed bytecomp.el byte-opt.el bytecode.c bytecomp-tests.el - esh-mode.el cperl-mode.el disass.el alloc.c browse-url.el category.c - emacs-module.c erc-backend.el erc.el eshell.texi fns.c hangul.el - image.c lisp.h lread.c print.c profiler.c xterm.c + erc.el esh-mode.el cperl-mode.el disass.el erc-backend.el + erc-services.el alloc.c browse-url.el category.c emacs-module.c + erc-dcc.el eshell.texi fns.c hangul.el image.c lisp.h lread.c + and 4 other files Victor J. Orlikowski: changed erc-dcc.el @@ -5045,8 +5343,8 @@ and changed ps-prin1.ps ps-bdf.el ps-prin0.ps blank-mode.el ps-prin3.ps easymenu.el loading.texi menu-bar.el misc.texi progmodes/compile.el ps-print-def.el ps-vars.el -Vitalie Spinu: changed comint.el message.el ob-R.el ob-core.el - ob-tangle.el subr.el +Vitalie Spinu: changed comint.el eieio-base.el message.el ob-R.el + ob-core.el ob-tangle.el subr.el Vitaly Takmazov: changed emacs-x64.manifest emacs-x86.manifest @@ -5078,7 +5376,7 @@ Warren Lynn: changed tramp-sh.el Wei-Wei Guo: co-wrote rst.el -Wenjamin Petrenko: changed files-x.el +Wenjamin Petrenko: changed files-x.el filesets.el Werner Benger: changed keyboard.c @@ -5097,10 +5395,12 @@ Wes Hardaker: changed gnus-score.el gnus-art.el gnus-sum.el gnus-win.el Wesley Dawson: changed icomplete.el +W. Garrett Mitchener: changed ipa-praat.el + Wieland Hoffmann: changed auth-source.el custom.el -Wilfred Hughes: changed button.el byte-opt.el help.el sh-script.el - subr.el vc-git.el +Wilfred Hughes: changed button.el byte-opt.el css-mode.el find-func.el + help-mode.el help.el hexl.el sh-script.el subr.el vc-git.el Will Glozer: changed macterm.c @@ -5139,12 +5439,16 @@ and changed files.el Wim Nieuwenhuizen: changed TUTORIAL.nl Wlodzimierz Bzyl: co-wrote ogonek.el -and changed latin-pre.el pl-refcard.tex survival.tex +and changed pl-refcard.tex + +Włodzimierz Bzyl: changed latin-pre.el pl-refcard.tex survival.tex W. Martin Borgert: changed files.el schemas.xml Wojciech Gac: changed latin-pre.el quail/cyrillic.el +Wojciech S. Gac: wrote sami.el + Wolfgang Glas: changed unexsgi.c Wolfgang Jenkner: wrote man-tests.el textprop-tests.el @@ -5161,7 +5465,7 @@ and changed process.c alloc.c callint.c config.in configure.ac data.c fns.c lisp-mode.el lisp.h loadup.el lread.c net-utils.el nntp.el print.c sort.el -Wolfgang Scherer: changed vc-cvs.el +Wolfgang Scherer: changed vc-cvs.el vc-dir.el vc-svn.el vc.el pcvs.el Wolfgang Schnerring: changed emacsclient.c @@ -5175,7 +5479,7 @@ Xavier Maillard: changed gnus-faq.texi gnus-score.el mh-utils.el spam.el Xi Lu: changed etags.c tramp-sh.el -Xu Chunyang: changed gud.el +Xu Chunyang: changed dom.el eww.el gud.el netrc.el Xue Fuqiao: changed display.texi emacs-lisp-intro.texi files.texi maintaining.texi text.texi windows.texi nonascii.texi frames.texi @@ -5188,15 +5492,17 @@ Yagi Tatsuya: changed gnus-art.el gnus-start.el Yair F: changed hebrew.el Yamamoto Mitsuharu: wrote uvs.el -and changed macterm.c macfns.c mac-win.el mac.c macterm.h macmenu.c - xterm.c macgui.h image.c xdisp.c keyboard.c macselect.c w32term.c - src/Makefile.in unexmacosx.c xfns.c configure.ac emacs.c macfont.m - darwin.h dispnew.c and 97 other files +and changed macterm.c macfns.c mac-win.el xterm.c mac.c macterm.h image.c + macmenu.c macgui.h xdisp.c ftfont.c xfns.c keyboard.c macselect.c + ftcrfont.c configure.ac macfont.m w32term.c dispextern.h + src/Makefile.in unexmacosx.c and 109 other files Yann Dirson: changed imenu.el Yann Hodique: changed ox-publish.el package.el rcirc.el +Yasuhiro Kimura: changed japan-util.el + Yasushi Shoji: changed org-clock.el org.texi ox-ascii.el Yavor Doganov: changed configure.ac Makefile.in emacs.1 etags.1 make-dist @@ -5221,6 +5527,8 @@ Yoshinari Nomura: changed ox-html.el ox.el Yoshinori Koseki: wrote iimage.el and changed fontset.el message.el nnheader.el nnmail.el +Yuan Fu: changed gdb-mi.el + Yuanle Song: changed rng-xsd.el Yu-ji Hosokawa: changed README.W32 From d096bab78750634301ff3c168e9bbbe9b52575d5 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Thu, 27 Feb 2020 18:22:18 +0100 Subject: [PATCH 15/93] Bump Emacs version to 27.0.90 * README: * configure.ac: * msdos/sed2v2.inp: * nt/README.W32: Bump Emacs version. --- README | 2 +- configure.ac | 2 +- msdos/sed2v2.inp | 2 +- nt/README.W32 | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README b/README index 1c3f6109003..787413df8f8 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ Copyright (C) 2001-2020 Free Software Foundation, Inc. See the end of the file for license conditions. -This directory tree holds version 27.0.60 of GNU Emacs, the extensible, +This directory tree holds version 27.0.90 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 aa2d9ef745f..73243001ba1 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, 27.0.60, bug-gnu-emacs@gnu.org, , https://www.gnu.org/software/emacs/) +AC_INIT(GNU Emacs, 27.0.90, bug-gnu-emacs@gnu.org, , https://www.gnu.org/software/emacs/) 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/msdos/sed2v2.inp b/msdos/sed2v2.inp index d6a78ce58a2..67b00112dd3 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 "27.0.60"/ +/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "27.0.90"/ /^#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 31f4fd76c8f..7b4dee08fd4 100644 --- a/nt/README.W32 +++ b/nt/README.W32 @@ -1,7 +1,7 @@ Copyright (C) 2001-2020 Free Software Foundation, Inc. See the end of the file for license conditions. - Emacs version 27.0.60 for MS-Windows + Emacs version 27.0.90 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 From 696ee02c3a40cf0e19f963cfaf8004ca42f7e897 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0t=C4=9Bp=C3=A1n=20N=C4=9Bmec?= Date: Thu, 29 Aug 2019 19:42:21 +0200 Subject: [PATCH 16/93] checkdoc: Don't mistake "cf." for sentence end * lisp/emacs-lisp/checkdoc.el (checkdoc-sentencespace-region-engine): Recognize "cf." as an abbreviation, not a sentence end. --- lisp/emacs-lisp/checkdoc.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el index ccdddb47c35..e15836ee7d8 100644 --- a/lisp/emacs-lisp/checkdoc.el +++ b/lisp/emacs-lisp/checkdoc.el @@ -2073,7 +2073,7 @@ If the offending word is in a piece of quoted text, then it is skipped." ;; piece of an abbreviation ;; FIXME etc (looking-at - "\\([a-zA-Z]\\|[iI]\\.?e\\|[eE]\\.?g\\)\\.")) + "\\([a-zA-Z]\\|[iI]\\.?e\\|[eE]\\.?g\\|[cC]f\\)\\.")) (error t)))) (if (checkdoc-autofix-ask-replace b e From ff729e3f975f8391658cf22c4715552054ed25c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0t=C4=9Bp=C3=A1n=20N=C4=9Bmec?= Date: Tue, 25 Feb 2020 13:53:14 +0100 Subject: [PATCH 17/93] ; bug#39779: Fix some typos in documentation. --- doc/lispref/frames.texi | 2 +- doc/lispref/tips.texi | 2 +- doc/lispref/variables.texi | 2 +- doc/misc/gnus.texi | 6 +++--- etc/DEBUG | 4 ++-- lisp/gnus/gnus-art.el | 6 +++--- lisp/gnus/spam-stat.el | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi index d855ecc0b96..26546ab0964 100644 --- a/doc/lispref/frames.texi +++ b/doc/lispref/frames.texi @@ -3260,7 +3260,7 @@ that deletion fails for whatever reason, the child frame is made a top-level frame. Whether a child frame can have a menu or tool bar is window-system or -window manager dependent. Most window-systems explicitly disallow menus +window manager dependent. Most window-systems explicitly disallow menu bars for child frames. It seems advisable to disable both, menu and tool bars, via the frame's initial parameters settings. diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi index 0610f8029df..1ca97e2f092 100644 --- a/doc/lispref/tips.texi +++ b/doc/lispref/tips.texi @@ -1076,7 +1076,7 @@ package is only activated if all its dependencies have been). Its format is a list of lists on a single line. The @code{car} of each sub-list is the name of a package, as a symbol. The @code{cadr} of each sub-list is the minimum acceptable version number, as a string -that can be parse by @code{version-to-list}. An entry that lacks a +that can be parsed by @code{version-to-list}. An entry that lacks a version (i.e., an entry which is just a symbol, or a sub-list of one element) is equivalent to entry with version "0". For instance: diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index 35eb4d59fb0..33897bb6336 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi @@ -858,7 +858,7 @@ is a buffer if the buffer-local value of the variable is being changed, @code{nil} otherwise. @end defun -@defun remove-variable-watch symbol watch-function +@defun remove-variable-watcher symbol watch-function This function removes @var{watch-function} from @var{symbol}'s list of watchers. @end defun diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index fbdf09420a9..27180f3feda 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -3187,7 +3187,7 @@ For example: (broken-reply-to . t)))) @end lisp -All clauses that matches the group name will be used, but the last +All clauses that match the group name will be used, but the last setting ``wins''. So if you have two clauses that both match the group name, and both set, say @code{display}, the last setting will override the first. @@ -17880,7 +17880,7 @@ presence of 7 special headers. These headers are of the form @code{X-Diary-}, @code{} being one of @code{Minute}, @code{Hour}, @code{Dom}, @code{Month}, @code{Year}, @code{Time-Zone} and @code{Dow}. @code{Dom} means ``Day of Month'', and -@code{dow} means ``Day of Week''. These headers actually behave like +@code{Dow} means ``Day of Week''. These headers actually behave like crontab specifications and define the event date(s): @itemize @bullet @@ -30922,7 +30922,7 @@ description = Believe it or not, but some people who use Gnus haven't really used Emacs much before they embarked on their journey on the Gnus Love Boat. -If you are one of those unfortunates whom ``@kbd{C-M-a}'', ``kill the +If you are one of those unfortunates to whom ``@kbd{C-M-a}'', ``kill the region'', and ``set @code{gnus-flargblossen} to an alist where the key is a regexp that is used for matching on the group name'' are magical phrases with little or no meaning, then this appendix is for you. If diff --git a/etc/DEBUG b/etc/DEBUG index a5e641824ae..7fb7e447583 100644 --- a/etc/DEBUG +++ b/etc/DEBUG @@ -739,9 +739,9 @@ stepping, you will see where the loop starts and ends. Also, examine the data being used in the loop and try to determine why the loop does not exit when it should. -On GNU and Unix systems, you can also trying sending Emacs SIGUSR2, +On GNU and Unix systems, you can also try sending Emacs SIGUSR2, which, if 'debug-on-event' has its default value, will cause Emacs to -attempt to break it out of its current loop and into the Lisp +attempt to break out of its current loop and enter the Lisp debugger. (See the node "Debugging" in the ELisp manual for the details about the Lisp debugger.) This feature is useful when a C-level debugger is not conveniently available. diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index 754655d6793..6b9610d3121 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -7774,11 +7774,11 @@ also be Lisp expression evaluating to a string), BUTTON: is the number of the regexp grouping actually matching the button, FORM: is a Lisp expression which must eval to true for the button to be added, -CALLBACK: is the function to call when the user push this button, and each +CALLBACK: is the function to call when the user pushes this button, and each PAR: is a number of a regexp grouping whose text will be passed to CALLBACK. -CALLBACK can also be a variable, in that case the value of that -variable it the real callback function." +CALLBACK can also be a variable, in which case the value of that +variable is the real callback function." :group 'gnus-article-buttons :type '(repeat (list (choice regexp variable sexp) (integer :tag "Button") diff --git a/lisp/gnus/spam-stat.el b/lisp/gnus/spam-stat.el index 8a4161e7acd..2e03608b5df 100644 --- a/lisp/gnus/spam-stat.el +++ b/lisp/gnus/spam-stat.el @@ -174,7 +174,7 @@ no effect when spam-stat is invoked through spam.el." (defcustom spam-stat-score-buffer-user-functions nil "List of additional scoring functions. -Called one by one on the buffer. +Called one by one on the buffer. If all of these functions return non-nil answers, these numerical answers are added to the computed spam stat score on the buffer. If From 4dec693f703464bab68ec751f341927c5489d592 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Engdeg=C3=A5rd?= Date: Fri, 28 Feb 2020 17:02:00 +0100 Subject: [PATCH 18/93] * lisp/vc/vc-cvs.el (vc-cvs-ignore): Copy-edit doc string --- lisp/vc/vc-cvs.el | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/lisp/vc/vc-cvs.el b/lisp/vc/vc-cvs.el index b6afda69198..e8231ecb289 100644 --- a/lisp/vc/vc-cvs.el +++ b/lisp/vc/vc-cvs.el @@ -1222,23 +1222,24 @@ is non-nil." (defun vc-cvs-ignore (file &optional directory _remove) "Ignore FILE under CVS. -FILE is either absolute or relative to DIRECTORY. The basename -of FILE is written unmodified into the ignore file and is +FILE is either absolute or relative to DIRECTORY. The non-directory +part of FILE is written unmodified into the ignore file and is therefore evaluated by CVS as an ignore pattern which follows glob(7) syntax. If the pattern should match any of the special -characters ‘?*[\\\’ literally, they must be escaped with a +characters `?*[\\' literally, they must be escaped with a backslash. CVS processes one ignore file for each subdirectory. Patterns are separated by whitespace and only match files in the same directory. Since FILE can be a relative filename with leading -diretories, FILE is expanded against DIRECTORY to determine the -correct absolute filename. The directory name of this path is -then used to determine the location of the ignore file. The base -name of this path is used as pattern for the ignore file. +directories, FILE is expanded against DIRECTORY to determine the +correct absolute filename. The directory part of the resulting name +is then used to determine the location of the ignore file. The +non-directory part of the name is used as pattern for the ignore file. -Since patterns are whitespace sparated, it is usually better to -replace spaces in filenames with question marks ‘?’." +Since patterns are whitespace-separated, filenames containing spaces +cannot be represented directly. A work-around is to replace such +spaces with question marks." (setq file (directory-file-name (expand-file-name file directory))) (vc-cvs-append-to-ignore (file-name-directory file) (file-name-nondirectory file))) From 5cca73dd82cc18322c88721f311f8e6a081849fa Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 28 Feb 2020 12:58:28 -0800 Subject: [PATCH 19/93] * src/timefns.c (time_arith): Omit incorrect comment. --- src/timefns.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/timefns.c b/src/timefns.c index 46f9193d6a1..a08d3b816ff 100644 --- a/src/timefns.c +++ b/src/timefns.c @@ -1033,9 +1033,7 @@ lispint_arith (Lisp_Object a, Lisp_Object b, bool subtract) } /* Given Lisp operands A and B, add their values, and return the - result as a Lisp timestamp that is in (TICKS . HZ) form if either A - or B are in that form or are floats, (HI LO US PS) form otherwise. - Subtract instead of adding if SUBTRACT. */ + result as a Lisp timestamp. Subtract instead of adding if SUBTRACT. */ static Lisp_Object time_arith (Lisp_Object a, Lisp_Object b, bool subtract) { From 6dc2ebe00e88d9fb6923bea9125700eb286726c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Engdeg=C3=A5rd?= Date: Fri, 28 Feb 2020 22:13:45 +0100 Subject: [PATCH 20/93] Fix overquoting in mule.el * lisp/international/mule.el (sgml-xml-auto-coding-function): Remove accidental quote. --- lisp/international/mule.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/international/mule.el b/lisp/international/mule.el index 66594791209..86f3d2a34bf 100644 --- a/lisp/international/mule.el +++ b/lisp/international/mule.el @@ -2601,7 +2601,7 @@ This function is intended to be added to `auto-coding-functions'." (detect-coding-region (point-min) size t))))) ;; Pure ASCII always comes back as undecided. (if (memq detected - '(utf-8 'utf-8-with-signature 'utf-8-hfs undecided)) + '(utf-8 utf-8-with-signature utf-8-hfs undecided)) 'utf-8 (warn "File contents detected as %s. Consider adding an encoding attribute to the xml declaration, From d42419590563964fd61b35dea7738e77c0f90cba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Engdeg=C3=A5rd?= Date: Sat, 29 Feb 2020 10:12:10 +0100 Subject: [PATCH 21/93] Fix rx charset generation * lisp/emacs-lisp/rx.el (rx--charset-p): Don't overquote. (rx--generate-alt): Generate '.' for negated newline. * test/lisp/emacs-lisp/rx-tests.el (rx-any, rx-charset-or): Test. --- lisp/emacs-lisp/rx.el | 6 +++++- test/lisp/emacs-lisp/rx-tests.el | 11 +++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lisp/emacs-lisp/rx.el b/lisp/emacs-lisp/rx.el index b4cab5715da..1ee5e8294a6 100644 --- a/lisp/emacs-lisp/rx.el +++ b/lisp/emacs-lisp/rx.el @@ -305,7 +305,7 @@ Return (REGEXP . PRECEDENCE)." "Whether FORM looks like a charset, only consisting of character intervals and set operations." (or (and (consp form) - (or (and (memq (car form) '(any 'in 'char)) + (or (and (memq (car form) '(any in char)) (rx--every (lambda (x) (not (symbolp x))) (cdr form))) (and (memq (car form) '(not or | intersection)) (rx--every #'rx--charset-p (cdr form))))) @@ -450,6 +450,10 @@ classes." (not negated)) (cons (list (regexp-quote (char-to-string (caar items)))) t)) + ;; Negated newline. + ((and (equal items '((?\n . ?\n))) + negated) + (rx--translate-symbol 'nonl)) ;; At least one character or class, possibly negated. (t (cons diff --git a/test/lisp/emacs-lisp/rx-tests.el b/test/lisp/emacs-lisp/rx-tests.el index a6c172adfe7..2e34d65a9aa 100644 --- a/test/lisp/emacs-lisp/rx-tests.el +++ b/test/lisp/emacs-lisp/rx-tests.el @@ -130,7 +130,10 @@ (should (equal (rx (any "") (not (any ""))) "\\`a\\`[^z-a]")) (should (equal (rx (any space ?a digit space)) - "[a[:space:][:digit:]]"))) + "[a[:space:][:digit:]]")) + (should (equal (rx (not "\n") (not ?\n) (not (any "\n")) (not-char ?\n) + (| (not (in "a\n")) (not (char ?\n (?b . ?b))))) + "....."))) (ert-deftest rx-pcase () (should (equal (pcase "a 1 2 3 1 1 b" @@ -298,7 +301,11 @@ (not (any "a-k")))) "[^abh-k]")) (should (equal (rx (or ?f (any "b-e") "a") (not (or ?x "y" (any "s-w")))) - "[a-f][^s-y]"))) + "[a-f][^s-y]")) + (should (equal (rx (not (or (in "abc") (char "bcd")))) + "[^a-d]")) + (should (equal (rx (or (not (in "abc")) (not (char "bcd")))) + "[^bc]"))) (ert-deftest rx-def-in-charset-or () (rx-let ((a (any "badc")) From 5af9e5baad3dc68f75d93eeb4b2f2bb89ad62058 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 29 Feb 2020 15:10:09 +0200 Subject: [PATCH 22/93] ; Add an entry to TODO * etc/TODO: Expand the ligature support entry. Add a new entry about better support of Emoji. --- etc/TODO | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/etc/TODO b/etc/TODO index 0a06484c165..f2594f005c7 100644 --- a/etc/TODO +++ b/etc/TODO @@ -244,6 +244,23 @@ populate composition-function-table with those rules. See composite.el for examples of this, and also grep lisp/language/*.el for references to composition-function-table. +One problem with character compositions that will need to be solved is +that composition-function-table, the char-table which holds the +composition rules, is a global variable, whereas use of ligatures is +inherently specific to buffer-local stuff like the major mode and the +script or language in use. So there should be a buffer-local variable +to augment/customize/override the global composition rules. + +Another problem is that ligatures are frequently composed of ASCII +characters, and some of those ASCII characters are present in the mode +line, for example "--". Since displaying a ligature instead of 2 +separate '-' characters on a mode line is not right, there should be a +way of preventing the ligation from happening. One possibility is to +have a ZWNJ character separate these ASCII characters; another +possibility is to introduce a special text property that prevents +character composition, and place that property on the relevant parts +of the mode line. + The prettify-symbols-mode should be deprecated once ligature support is in place. @@ -267,6 +284,59 @@ should invoke the 'shape' method. 'hbfont_shape' should be extended to pass to 'hb_shape_full' the required array of features, as mentioned in the above HarfBuzz discussion. +** Better support for displaying Emoji + +Emacs is capable of displaying Emoji and some of the Emoji sequences, +provided that its fontsets are configured with a suitable font. To +make this easier out of the box, the following should be done: + +*** Populate composition-function-table with Emoji rules + +The Unicode Character Database (UCD) includes several data files that +define the valid Emoji sequences. These files should be imported into +the Emacs tree, and should be converted by some script at Emacs build +time to Lisp code that populates composition-function-table with the +corresponding composition rules. + +*** Augment the default fontsets with Emoji-capable fonts + +The default fontsets set up by fontest.el should include known free +fonts that provide good support for displaying Emoji sequences. In +addition, the rule that the default face's font is used for symbol and +punctuation characters, disregarding the fontsets, should be modified +to exempt Emoji from this rule (since Emoji characters belong to the +'symbol' script in Emacs), so that use-default-font-for-symbols would +not have to be tweaked to have Emoji display by default with a capable +font. + +*** Consider changing the default display of Variation Selectors + +Emacs by default displays the Variation Selector (VS) codepoints not +composed with base characters as thin 1-pixel space glyphs. The +Unicode FAQ says that if variation sequences cannot be supported, the +VS characters should not be shown, leaving just the base character of +the sequence visible. This could be handled via +glyphless-char-display, by changing the entries for VS codepoints to +'zero-width'. + +*** Special face for displaying text presentation of Emoji + +Emoji-capable fonts support Emoji sequences with the U+FE0F VARIATION +SELECTOR-16 (VS16) for emoji-style display, but usually don't support +the U+FE0F VARIATION SELECTOR-15 (VS15) for text-style display. There +are other fonts which support the text-style sequences, but not +emoji-style. Since Emacs selects a font based on a single character, +it cannot choose 2 different fonts for displaying both styles of the +same base character. To display both styles in the same buffer, one +could use a special face, placing a 'face' text property on portions +of the text. This special face could specify a specific font known to +support text-style Emoji sequences. Emacs could have such a face +built-in. + +See the discussion of bug#39799 for more details about this task. +Another relevant resource is the Unicode Technical Standard #51 +"Unicode Emoji" (http://www.unicode.org/reports/tr51/). + ** Extend text-properties and overlays *** Several text-property planes This would get us rid of font-lock-face property (and I'd be happy to From 60c84ad9922a0299cde76f7671250d9d13eee536 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 29 Feb 2020 19:30:27 +0200 Subject: [PATCH 23/93] ; * etc/TODO: Fix last change. --- etc/TODO | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/etc/TODO b/etc/TODO index f2594f005c7..20262a77e97 100644 --- a/etc/TODO +++ b/etc/TODO @@ -312,12 +312,13 @@ font. *** Consider changing the default display of Variation Selectors Emacs by default displays the Variation Selector (VS) codepoints not -composed with base characters as thin 1-pixel space glyphs. The -Unicode FAQ says that if variation sequences cannot be supported, the -VS characters should not be shown, leaving just the base character of -the sequence visible. This could be handled via -glyphless-char-display, by changing the entries for VS codepoints to -'zero-width'. +composed with base characters as hex codes in a box. The Unicode FAQ +says that if variation sequences cannot be supported, the VS +characters should not be shown, leaving just the base character of the +sequence visible. This could be handled via glyphless-char-display, +by changing the entries for VS codepoints to 'zero-width'. Or we +could display them as a thin 1-pixel space, as we do with format +control characters, by using 'thin-space' there. *** Special face for displaying text presentation of Emoji From c5f255d68156926923232b1edadf50faac527861 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Sat, 29 Feb 2020 22:25:38 +0100 Subject: [PATCH 24/93] ; Update lisp/ldefs-boot.el --- lisp/ldefs-boot.el | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el index 240e02e72f9..4bf87aae1f8 100644 --- a/lisp/ldefs-boot.el +++ b/lisp/ldefs-boot.el @@ -27423,11 +27423,8 @@ nil necessary to ensure that a postfix operator appended to it will apply to the whole expression. -The optional argument KEEP-ORDER, if non-nil, forces the match to -be performed in the order given, as if the strings were made into -a regexp by joining them with the `\\|' operator. If nil or -omitted, the returned regexp is will always match the longest -string possible. +The returned regexp is ordered in such a way that it will always +match the longest string possible. Up to reordering, the resulting regexp is equivalent to but usually more efficient than that of a simplified version: @@ -27443,7 +27440,7 @@ usually more efficient than that of a simplified version: (mapconcat \\='regexp-quote strings \"\\\\|\") (cdr parens)))) -\(fn STRINGS &optional PAREN KEEP-ORDER)" nil nil) +\(fn STRINGS &optional PAREN)" nil nil) (autoload 'regexp-opt-depth "regexp-opt" "\ Return the depth of REGEXP. @@ -31063,7 +31060,11 @@ Use \\[untabify] to convert tabs to spaces before sorting. (autoload 'reverse-region "sort" "\ Reverse the order of lines in a region. -From a program takes two point or marker arguments, BEG and END. +When called from Lisp, takes two point or marker arguments, BEG and END. +If BEG is not at the beginning of a line, the first line of those +to be reversed is the line starting after BEG. +If END is not at the end of a line, the last line to be reversed +is the one that ends before END. \(fn BEG END)" t nil) From 6b48aedb6b3b1de0b41b61b727d14ab8277d2f73 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Sat, 29 Feb 2020 23:49:17 +0200 Subject: [PATCH 25/93] * lisp/tab-line.el: Fix auto-hscrolling (bug#39649) Distinguish offsets between manual-vs-automatic scrolling as integers-vs-floats instead of positive-vs-negative integers. * lisp/tab-line.el (tab-line-format-template): Use 'numberp' instead of 'integerp', and 'truncate' instead of 'abs'. (tab-line-format): When the window-buffer was updated, set window-parameter to float to enable auto-hscroll after it was disabled on manual scrolling. (tab-line-auto-hscroll-buffer): New variable with internal buffer. (tab-line-auto-hscroll): Erase in tab-line-auto-hscroll-buffer. Use 'numberp' instead of 'integerp', 'truncate' instead of 'abs', and 'float' instead of '-'. (tab-line-hscroll): Use 'numberp' instead of 'integerp', and 'truncate' instead of 'abs'. --- lisp/tab-line.el | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/lisp/tab-line.el b/lisp/tab-line.el index 8f1221abe41..902c312ce14 100644 --- a/lisp/tab-line.el +++ b/lisp/tab-line.el @@ -446,17 +446,19 @@ variable `tab-line-tabs-function'." (setq hscroll nil) (set-window-parameter nil 'tab-line-hscroll hscroll)) (list separator - (when (and (integerp hscroll) (not (zerop hscroll))) + (when (and (numberp hscroll) (not (zerop hscroll))) tab-line-left-button) - (when (if (integerp hscroll) - (< (abs hscroll) (1- (length strings))) + (when (if (numberp hscroll) + (< (truncate hscroll) (1- (length strings))) (> (length strings) 1)) tab-line-right-button))) - (if hscroll (nthcdr (abs hscroll) strings) strings) + (if hscroll (nthcdr (truncate hscroll) strings) strings) (when (eq tab-line-tabs-function #'tab-line-tabs-window-buffers) (list (concat separator (when tab-line-new-tab-choice tab-line-new-button))))))) +(defvar tab-line-auto-hscroll) + (defun tab-line-format () "Template for displaying tab line for selected window." (let* ((tabs (funcall tab-line-tabs-function)) @@ -464,6 +466,13 @@ variable `tab-line-tabs-function'." (window-buffer) (window-parameter nil 'tab-line-hscroll))) (cache (window-parameter nil 'tab-line-cache))) + ;; Enable auto-hscroll again after it was disabled on manual scrolling. + ;; The moment to enable it is when the window-buffer was updated. + (when (and tab-line-auto-hscroll ; if auto-hscroll was enabled + (integerp (nth 2 cache-key)) ; integer on manual scroll + cache ; window-buffer was updated + (not (equal (nth 1 (car cache)) (nth 1 cache-key)))) + (set-window-parameter nil 'tab-line-hscroll (float (nth 2 cache-key)))) (or (and cache (equal (car cache) cache-key) (cdr cache)) (cdr (set-window-parameter nil 'tab-line-cache @@ -478,24 +487,27 @@ the selected tab visible." :group 'tab-line :version "27.1") +(defvar tab-line-auto-hscroll-buffer (generate-new-buffer " *tab-line-hscroll*")) + (defun tab-line-auto-hscroll (strings hscroll) - (with-temp-buffer + (with-current-buffer tab-line-auto-hscroll-buffer (let ((truncate-partial-width-windows nil) (inhibit-modification-hooks t) show-arrows) (setq truncate-lines nil) + (erase-buffer) (apply 'insert strings) (goto-char (point-min)) (add-face-text-property (point-min) (point-max) 'tab-line) ;; Continuation means tab-line doesn't fit completely, ;; thus scroll arrows are needed for scrolling. (setq show-arrows (> (vertical-motion 1) 0)) - ;; Try to auto-scroll only when scrolling is needed, + ;; Try to auto-hscroll only when scrolling is needed, ;; but no manual scrolling was performed before. (when (and tab-line-auto-hscroll show-arrows ;; Do nothing when scrolled manually - (not (and (integerp hscroll) (>= hscroll 0)))) + (not (integerp hscroll))) (let ((selected (seq-position strings 'selected (lambda (str prop) (get-pos-property 1 prop str))))) @@ -503,7 +515,7 @@ the selected tab visible." ((null selected) ;; Do nothing if no tab is selected ) - ((or (not (integerp hscroll)) (< selected (abs hscroll))) + ((or (not (numberp hscroll)) (< selected (truncate hscroll))) ;; Selected is scrolled to the left, or no scrolling yet (erase-buffer) (apply 'insert (reverse (seq-subseq strings 0 (1+ selected)))) @@ -520,14 +532,14 @@ the selected tab visible." (lambda (str tab) (eq (get-pos-property 1 'tab str) tab)))))) (when new-hscroll - (setq hscroll (- new-hscroll)) + (setq hscroll (float new-hscroll)) (set-window-parameter nil 'tab-line-hscroll hscroll))) (setq hscroll nil) (set-window-parameter nil 'tab-line-hscroll hscroll))) (t ;; Check if the selected tab is already visible (erase-buffer) - (apply 'insert (seq-subseq strings (abs hscroll) (1+ selected))) + (apply 'insert (seq-subseq strings (truncate hscroll) (1+ selected))) (goto-char (point-min)) (add-face-text-property (point-min) (point-max) 'tab-line) (when (> (vertical-motion 1) 0) @@ -547,7 +559,7 @@ the selected tab visible." (lambda (str tab) (eq (get-pos-property 1 'tab str) tab)))))) (when new-hscroll - (setq hscroll (- new-hscroll)) + (setq hscroll (float new-hscroll)) (set-window-parameter nil 'tab-line-hscroll hscroll))))))))) (list show-arrows hscroll)))) @@ -559,7 +571,7 @@ the selected tab visible." (funcall tab-line-tabs-function)))) (set-window-parameter window 'tab-line-hscroll - (max 0 (min (+ (if (integerp hscroll) (abs hscroll) 0) (or arg 1)) + (max 0 (min (+ (if (numberp hscroll) (truncate hscroll) 0) (or arg 1)) (1- (length tabs))))) (when window (force-mode-line-update t)))) From 49d3cd90bd80a225d5ec26027318ffb4606ff513 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Engdeg=C3=A5rd?= Date: Tue, 11 Feb 2020 20:04:42 +0100 Subject: [PATCH 26/93] rx: Improve 'or' compositionality (bug#37659) Perform 'regexp-opt' on nested 'or' forms, and after expansion of user-defined and 'eval' forms. Characters are now turned into strings for wider 'regexp-opt' scope. This preserves the longest-match semantics for string in 'or' forms over composition. * doc/lispref/searching.texi (Rx Constructs): Document. * lisp/emacs-lisp/rx.el (rx--normalise-or-arg) (rx--all-string-or-args): New. (rx--translate-or): Normalise arguments first, and check for strings in subforms. (rx--expand-eval): Extracted from rx--translate-eval. (rx--translate-eval): Call rx--expand-eval. * test/lisp/emacs-lisp/rx-tests.el (rx-or, rx-def-in-or): Add tests. * etc/NEWS: Announce. --- doc/lispref/searching.texi | 5 ++- etc/NEWS | 6 +++ lisp/emacs-lisp/rx.el | 76 ++++++++++++++++++++------------ test/lisp/emacs-lisp/rx-tests.el | 13 +++++- 4 files changed, 69 insertions(+), 31 deletions(-) diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi index a4d5a27203f..1a090ebe101 100644 --- a/doc/lispref/searching.texi +++ b/doc/lispref/searching.texi @@ -1086,8 +1086,9 @@ Corresponding string regexp: @samp{@var{A}@var{B}@dots{}} @itemx @code{(| @var{rx}@dots{})} @cindex @code{|} in rx Match exactly one of the @var{rx}s. -If all arguments are string literals, the longest possible match -will always be used. Otherwise, either the longest match or the +If all arguments are strings, characters, or @code{or} forms +so constrained, the longest possible match will always be used. +Otherwise, either the longest match or the first (in left-to-right order) will be used. Without arguments, the expression will not match anything at all.@* Corresponding string regexp: @samp{@var{A}\|@var{B}\|@dots{}}. diff --git a/etc/NEWS b/etc/NEWS index e9dfd266b46..6e2b1fe00e2 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -2325,6 +2325,12 @@ expressions from simpler parts. +++ *** 'not' argument can now be a character or single-char string. ++++ +*** Nested 'or' forms of strings guarantee a longest match. +For example, (or (or "IN" "OUT") (or "INPUT" "OUTPUT")) now matches +the whole string "INPUT" if present, not just "IN". Previously, this +was only guaranteed inside a single 'or' form of string literals. + ** Frames +++ diff --git a/lisp/emacs-lisp/rx.el b/lisp/emacs-lisp/rx.el index 1ee5e8294a6..a0b2444346a 100644 --- a/lisp/emacs-lisp/rx.el +++ b/lisp/emacs-lisp/rx.el @@ -254,22 +254,39 @@ Left-fold the list L, starting with X, by the binary function F." (setq l (cdr l))) x) +(defun rx--normalise-or-arg (form) + "Normalise the `or' argument FORM. +Characters become strings, user-definitions and `eval' forms are expanded, +and `or' forms are normalised recursively." + (cond ((characterp form) + (char-to-string form)) + ((and (consp form) (memq (car form) '(or |))) + (cons (car form) (mapcar #'rx--normalise-or-arg (cdr form)))) + ((and (consp form) (eq (car form) 'eval)) + (rx--normalise-or-arg (rx--expand-eval (cdr form)))) + (t + (let ((expanded (rx--expand-def form))) + (if expanded + (rx--normalise-or-arg expanded) + form))))) + +(defun rx--all-string-or-args (body) + "If BODY only consists of strings or such `or' forms, return all the strings. +Otherwise throw `rx--nonstring'." + (mapcan (lambda (form) + (cond ((stringp form) (list form)) + ((and (consp form) (memq (car form) '(or |))) + (rx--all-string-or-args (cdr form))) + (t (throw 'rx--nonstring nil)))) + body)) + (defun rx--translate-or (body) "Translate an or-pattern of zero or more rx items. Return (REGEXP . PRECEDENCE)." ;; FIXME: Possible improvements: ;; - ;; - Turn single characters to strings: (or ?a ?b) -> (or "a" "b"), - ;; so that they can be candidates for regexp-opt. - ;; - ;; - Translate compile-time strings (`eval' forms), again for regexp-opt. - ;; ;; - Flatten sub-patterns first: (or (or A B) (or C D)) -> (or A B C D) - ;; in order to improve effectiveness of regexp-opt. - ;; This would also help composability. - ;; - ;; - Use associativity to run regexp-opt on contiguous subsets of arguments - ;; if not all of them are strings. Example: + ;; Then call regexp-opt on runs of string arguments. Example: ;; (or (+ digit) "CHARLIE" "CHAN" (+ blank)) ;; -> (or (+ digit) (or "CHARLIE" "CHAN") (+ blank)) ;; @@ -279,27 +296,26 @@ Return (REGEXP . PRECEDENCE)." ;; so that (or "@" "%" digit (any "A-Z" space) (syntax word)) ;; -> (any "@" "%" digit "A-Z" space word) ;; -> "[A-Z@%[:digit:][:space:][:word:]]" - ;; - ;; Problem: If a subpattern is carefully written to be - ;; optimizable by regexp-opt, how do we prevent the transforms - ;; above from destroying that property? - ;; Example: (or "a" (or "abc" "abd" "abe")) (cond ((null body) ; No items: a never-matching regexp. (rx--empty)) ((null (cdr body)) ; Single item. (rx--translate (car body))) - ((rx--every #'stringp body) ; All strings. - (cons (list (regexp-opt body nil)) - t)) - ((rx--every #'rx--charset-p body) ; All charsets. - (rx--translate-union nil body)) (t - (cons (append (car (rx--translate (car body))) - (mapcan (lambda (item) - (cons "\\|" (car (rx--translate item)))) - (cdr body))) - nil)))) + (let* ((args (mapcar #'rx--normalise-or-arg body)) + (all-strings (catch 'rx--nonstring (rx--all-string-or-args args)))) + (cond + (all-strings ; Only strings. + (cons (list (regexp-opt all-strings nil)) + t)) + ((rx--every #'rx--charset-p args) ; All charsets. + (rx--translate-union nil args)) + (t + (cons (append (car (rx--translate (car args))) + (mapcan (lambda (item) + (cons "\\|" (car (rx--translate item)))) + (cdr args))) + nil))))))) (defun rx--charset-p (form) "Whether FORM looks like a charset, only consisting of character intervals @@ -840,11 +856,15 @@ Return (REGEXP . PRECEDENCE)." (cons (list (list 'regexp-quote arg)) 'seq)) (t (error "rx `literal' form with non-string argument"))))) -(defun rx--translate-eval (body) - "Translate the `eval' form. Return (REGEXP . PRECEDENCE)." +(defun rx--expand-eval (body) + "Expand `eval' arguments. Return a new rx form." (unless (and body (null (cdr body))) (error "rx `eval' form takes exactly one argument")) - (rx--translate (eval (car body)))) + (eval (car body))) + +(defun rx--translate-eval (body) + "Translate the `eval' form. Return (REGEXP . PRECEDENCE)." + (rx--translate (rx--expand-eval body))) (defvar rx--regexp-atomic-regexp nil) diff --git a/test/lisp/emacs-lisp/rx-tests.el b/test/lisp/emacs-lisp/rx-tests.el index 2e34d65a9aa..4888e1d9d1e 100644 --- a/test/lisp/emacs-lisp/rx-tests.el +++ b/test/lisp/emacs-lisp/rx-tests.el @@ -42,13 +42,24 @@ (ert-deftest rx-or () (should (equal (rx (or "ab" (| "c" nonl) "de")) "ab\\|c\\|.\\|de")) - (should (equal (rx (or "ab" "abc" "a")) + (should (equal (rx (or "ab" "abc" ?a)) "\\(?:a\\(?:bc?\\)?\\)")) + (should (equal (rx (or "ab" (| (or "abcd" "abcde")) (or "a" "abc"))) + "\\(?:a\\(?:b\\(?:c\\(?:de?\\)?\\)?\\)?\\)")) + (should (equal (rx (or "a" (eval (string ?a ?b)))) + "\\(?:ab?\\)")) (should (equal (rx (| nonl "a") (| "b" blank)) "\\(?:.\\|a\\)\\(?:b\\|[[:blank:]]\\)")) (should (equal (rx (|)) "\\`a\\`"))) +(ert-deftest rx-def-in-or () + (rx-let ((a b) + (b (or "abc" c)) + (c ?a)) + (should (equal (rx (or a (| "ab" "abcde") "abcd")) + "\\(?:a\\(?:b\\(?:c\\(?:de?\\)?\\)?\\)?\\)")))) + (ert-deftest rx-char-any () "Test character alternatives with `]' and `-' (Bug#25123)." (should (equal From 366fd4fd07898fa78ed67409f882bd8553f059b1 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Sun, 1 Mar 2020 18:58:16 +0100 Subject: [PATCH 27/93] ; * etc/NEWS: Fix typo. --- etc/NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/NEWS b/etc/NEWS index 6e2b1fe00e2..3d5e0a09569 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -2327,7 +2327,7 @@ expressions from simpler parts. +++ *** Nested 'or' forms of strings guarantee a longest match. -For example, (or (or "IN" "OUT") (or "INPUT" "OUTPUT")) now matches +For example, '(or (or "IN" "OUT") (or "INPUT" "OUTPUT"))' now matches the whole string "INPUT" if present, not just "IN". Previously, this was only guaranteed inside a single 'or' form of string literals. From b42b894d1def7180ab715615116fe6af65b76bd8 Mon Sep 17 00:00:00 2001 From: Sergey Trofimov Date: Sun, 1 Mar 2020 19:49:18 +0100 Subject: [PATCH 28/93] Fix fit-frame-to-buffer for multi-monitor setup * lisp/window.el (fit-frame-to-buffer): Call 'frame-monitor-attributes' instead of 'display-monitor-attributes-list'. Fix geometry calculations for multiple monitors. Copyright-paperwork-exempt: yes --- lisp/window.el | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lisp/window.el b/lisp/window.el index 40c4bf5ad47..ceab43f7cd3 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -8794,8 +8794,7 @@ parameters of FRAME." (parent (frame-parent frame)) (monitor-attributes (unless parent - (car (display-monitor-attributes-list - (frame-parameter frame 'display))))) + (frame-monitor-attributes frame))) ;; FRAME'S parent or display sizes. Used in connection ;; with margins. (geometry @@ -8804,11 +8803,11 @@ parameters of FRAME." (parent-or-display-width (if parent (frame-native-width parent) - (- (nth 2 geometry) (nth 0 geometry)))) + (nth 2 geometry))) (parent-or-display-height (if parent (frame-native-height parent) - (- (nth 3 geometry) (nth 1 geometry)))) + (nth 3 geometry))) ;; FRAME's parent or workarea sizes. Used when no margins ;; are specified. (parent-or-workarea @@ -8870,13 +8869,15 @@ parameters of FRAME." (window--sanitize-margin (nth 2 margins) left-margin parent-or-display-width)) - (nth 2 parent-or-workarea))) + (+ (nth 0 parent-or-workarea) + (nth 2 parent-or-workarea)))) (bottom-margin (if (nth 3 margins) (- parent-or-display-height (window--sanitize-margin (nth 3 margins) top-margin parent-or-display-height)) - (nth 3 parent-or-workarea))) + (+ (nth 1 parent-or-workarea) + (nth 3 parent-or-workarea)))) ;; Minimum and maximum sizes specified for FRAME. (sizes (or (frame-parameter frame 'fit-frame-to-buffer-sizes) fit-frame-to-buffer-sizes)) From fe1a447d52f548441d19af580ed11ef56d4459d2 Mon Sep 17 00:00:00 2001 From: Robert Pluim Date: Fri, 24 Jan 2020 14:11:44 +0100 Subject: [PATCH 29/93] Don't attempt to cache glyph metrics for FONT_INVALID_CODE This was causing massive slowdown in redisplay when eg #xfe0f (VARIATION SELECTOR-16) was present, as the cache ended up very large, unused, and being recreated on every call to font_fill_lglyph_metrics (Bug#39133). * src/composite.c (fill_gstring_body): Hoist FONT_OBJECT_P check out of loop. Calculate glyph code and check for FONT_INVALID_CODE before calling font_fill_lglyph_metrics. Pass glyph code to it. * src/font.c (font_fill_lglyph_metrics): Add code parameter, move glyph code calculation up the call stack into fill_gstring_body. * src/font.h: Adjust font_fill_lglyph_metrics prototype. --- src/composite.c | 18 ++++++++++++++---- src/font.c | 4 +--- src/font.h | 2 +- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/composite.c b/src/composite.c index 53e6930b5f2..364d5c9316e 100644 --- a/src/composite.c +++ b/src/composite.c @@ -818,6 +818,11 @@ fill_gstring_body (Lisp_Object gstring) Lisp_Object header = AREF (gstring, 0); ptrdiff_t len = LGSTRING_CHAR_LEN (gstring); ptrdiff_t i; + struct font *font = NULL; + unsigned int code; + + if (FONT_OBJECT_P (font_object)) + font = XFONT_OBJECT (font_object); for (i = 0; i < len; i++) { @@ -832,10 +837,15 @@ fill_gstring_body (Lisp_Object gstring) LGLYPH_SET_FROM (g, i); LGLYPH_SET_TO (g, i); LGLYPH_SET_CHAR (g, c); - if (FONT_OBJECT_P (font_object)) - { - font_fill_lglyph_metrics (g, font_object); - } + + if (font != NULL) + code = font->driver->encode_char (font, LGLYPH_CHAR (g)); + else + code = FONT_INVALID_CODE; + if (code != FONT_INVALID_CODE) + { + font_fill_lglyph_metrics (g, font, code); + } else { int width = XFIXNAT (CHAR_TABLE_REF (Vchar_width_table, c)); diff --git a/src/font.c b/src/font.c index 2b90903c909..39ec1b3562a 100644 --- a/src/font.c +++ b/src/font.c @@ -4416,10 +4416,8 @@ DEFUN ("clear-font-cache", Fclear_font_cache, Sclear_font_cache, 0, 0, 0, void -font_fill_lglyph_metrics (Lisp_Object glyph, Lisp_Object font_object) +font_fill_lglyph_metrics (Lisp_Object glyph, struct font *font, unsigned int code) { - struct font *font = XFONT_OBJECT (font_object); - unsigned code = font->driver->encode_char (font, LGLYPH_CHAR (glyph)); struct font_metrics metrics; LGLYPH_SET_CODE (glyph, code); diff --git a/src/font.h b/src/font.h index 633d92709c5..6f4792afe55 100644 --- a/src/font.h +++ b/src/font.h @@ -886,7 +886,7 @@ extern Lisp_Object font_update_drivers (struct frame *f, Lisp_Object list); extern Lisp_Object font_range (ptrdiff_t, ptrdiff_t, ptrdiff_t *, struct window *, struct face *, Lisp_Object); -extern void font_fill_lglyph_metrics (Lisp_Object, Lisp_Object); +extern void font_fill_lglyph_metrics (Lisp_Object, struct font *, unsigned int); extern Lisp_Object font_put_extra (Lisp_Object font, Lisp_Object prop, Lisp_Object val); From 1ca6d15656b8ef11fe8ce5993a743c09e071c133 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Tue, 3 Mar 2020 00:33:30 +0200 Subject: [PATCH 30/93] * doc/emacs/mini.texi (Yes or No Prompts): 'y-or-n-p' now uses the minibuffer. --- doc/emacs/mini.texi | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi index 5d2a0077ca4..4aa02321b67 100644 --- a/doc/emacs/mini.texi +++ b/doc/emacs/mini.texi @@ -813,8 +813,8 @@ varieties. @cindex y or n prompt For the first type of yes-or-no query, the prompt ends with -@samp{(y or n)}. Such a query does not actually use the minibuffer; -the prompt appears in the echo area, and you answer by typing either +@samp{(y or n)}. Such a query does actually use the minibuffer; +the prompt appears in the minibuffer, and you answer by typing either @samp{y} or @samp{n}, which immediately delivers the response. For example, if you type @kbd{C-x C-w} (@kbd{write-file}) to save a buffer, and enter the name of an existing file, Emacs issues a prompt @@ -825,9 +825,9 @@ File ‘foo.el’ exists; overwrite? (y or n) @end smallexample @noindent -Because this query does not actually use the minibuffer, the usual -minibuffer editing commands cannot be used. However, you can perform -some window scrolling operations while the query is active: @kbd{C-l} +This query does actually use the minibuffer, so the usual +minibuffer editing commands can be used. You can perform +window scrolling operations while the query is active: @kbd{C-l} recenters the selected window; @kbd{C-v} (or @key{PageDown}, or @key{next}) scrolls forward; @kbd{M-v} (or @key{PageUp}, or @key{prior}) scrolls backward; @kbd{C-M-v} scrolls forward in the next From d373647e8fba8893d9ff00aadf49b97313ee0f4e Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Tue, 3 Mar 2020 18:23:40 +0200 Subject: [PATCH 31/93] ; * doc/emacs/mini.texi (Yes or No Prompts): Fix last change. --- doc/emacs/mini.texi | 47 +++++++++++++++++++-------------------------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi index 4aa02321b67..55e41e38cb7 100644 --- a/doc/emacs/mini.texi +++ b/doc/emacs/mini.texi @@ -813,35 +813,23 @@ varieties. @cindex y or n prompt For the first type of yes-or-no query, the prompt ends with -@samp{(y or n)}. Such a query does actually use the minibuffer; -the prompt appears in the minibuffer, and you answer by typing either -@samp{y} or @samp{n}, which immediately delivers the response. For -example, if you type @kbd{C-x C-w} (@kbd{write-file}) to save a -buffer, and enter the name of an existing file, Emacs issues a prompt -like this: +@w{@samp{(y or n)}}. You answer the query by typing a single key, +either @samp{y} or @samp{n}, which immediately exits the minibuffer +and delivers the response. For example, if you type @kbd{C-x C-w} +(@kbd{write-file}) to save a buffer, and enter the name of an existing +file, Emacs issues a prompt like this: @smallexample File ‘foo.el’ exists; overwrite? (y or n) @end smallexample -@noindent -This query does actually use the minibuffer, so the usual -minibuffer editing commands can be used. You can perform -window scrolling operations while the query is active: @kbd{C-l} -recenters the selected window; @kbd{C-v} (or @key{PageDown}, or -@key{next}) scrolls forward; @kbd{M-v} (or @key{PageUp}, or -@key{prior}) scrolls backward; @kbd{C-M-v} scrolls forward in the next -window; and @kbd{C-M-S-v} scrolls backward in the next window. Typing -@kbd{C-g} dismisses the query, and quits the command that issued it -(@pxref{Quitting}). - @cindex yes or no prompt - The second type of yes-or-no query is typically employed if -giving the wrong answer would have serious consequences; it uses the -minibuffer, and features a prompt ending with @samp{(yes or no)}. For -example, if you invoke @kbd{C-x k} (@code{kill-buffer}) on a -file-visiting buffer with unsaved changes, Emacs activates the -minibuffer with a prompt like this: + The second type of yes-or-no query is typically employed if giving +the wrong answer would have serious consequences; it thus features a +longer prompt ending with @samp{(yes or no)}. For example, if you +invoke @kbd{C-x k} (@code{kill-buffer}) on a file-visiting buffer with +unsaved changes, Emacs activates the minibuffer with a prompt like +this: @smallexample Buffer foo.el modified; kill anyway? (yes or no) @@ -849,7 +837,12 @@ Buffer foo.el modified; kill anyway? (yes or no) @noindent To answer, you must type @samp{yes} or @samp{no} into the minibuffer, -followed by @key{RET}. The minibuffer behaves as described in the -previous sections; you can switch to another window with @kbd{C-x o}, -use the history commands @kbd{M-p} and @kbd{M-n}, etc. Type @kbd{C-g} -to quit the minibuffer and the querying command. +followed by @key{RET}. + +With both types of yes-or-no query the minibuffer behaves as described +in the previous sections; you can recenter the selected window with +@kbd{C-l}, scroll that window (@kbd{C-v} or @kbd{PageDown} scrolls +forward, @kbd{M-v} or @kbd{PageUp} scrolls backward), switch to +another window with @kbd{C-x o}, use the history commands @kbd{M-p} +and @kbd{M-n}, etc. Type @kbd{C-g} to dismiss the query, and quit the +minibuffer and the querying command (@pxref{Quitting}). From a38bebb0c111de65a109f45133aacaf0ac69fe49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Engdeg=C3=A5rd?= Date: Tue, 3 Mar 2020 17:36:29 +0100 Subject: [PATCH 32/93] * etc/NEWS: More complete description of rx 'not' changes. --- etc/NEWS | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/etc/NEWS b/etc/NEWS index 3d5e0a09569..8d0e0b67591 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -2323,7 +2323,10 @@ With 'or' and 'not', it can be used to compose character-matching expressions from simpler parts. +++ -*** 'not' argument can now be a character or single-char string. +*** 'not' now accepts more argument types. +The argument can now also be a character, a single-character string, +an 'intersection' form, or an 'or' form whose arguments each match a +single character. +++ *** Nested 'or' forms of strings guarantee a longest match. From a4e4510ccd92da8ca17743c7dab9b32fc9d850e7 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Tue, 3 Mar 2020 18:40:28 +0200 Subject: [PATCH 33/93] Fix handling MS-Windows keyboard input above the BMP * src/w32term.c (w32_read_socket): If we get a WM_UNICHAR message with a surrogate codepoint, assemble the corresponding character code above the BMP from its UTF-16 encoding, communicated in two consecutive WM_UNICHAR messages. --- src/w32term.c | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/src/w32term.c b/src/w32term.c index 4eb5045fc5b..f515f5604d6 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -4701,6 +4701,10 @@ static short temp_buffer[100]; /* Temporarily store lead byte of DBCS input sequences. */ static char dbcs_lead = 0; +/* Temporarily store pending UTF-16 high surrogate unit and the modifiers. */ +static unsigned short utf16_high; +static DWORD utf16_high_modifiers; + /** mouse_or_wdesc_frame: When not dropping and the mouse was grabbed for DPYINFO, return the frame where the mouse was seen last. If @@ -4912,9 +4916,45 @@ w32_read_socket (struct terminal *terminal, XSETFRAME (inev.frame_or_window, f); inev.timestamp = msg.msg.time; + if (utf16_high + && (msg.msg.message != WM_UNICHAR + || UTF_16_HIGH_SURROGATE_P (msg.msg.wParam))) + { + /* Flush the pending high surrogate if the low one + isn't coming. (This should never happen, but I + have paranoia about this stuff.) */ + struct input_event inev1; + inev1.modifiers = utf16_high_modifiers; + inev1.code = utf16_high; + inev1.timestamp = inev.timestamp; + inev1.arg = Qnil; + kbd_buffer_store_event_hold (&inev1, hold_quit); + utf16_high = 0; + utf16_high_modifiers = 0; + } + if (msg.msg.message == WM_UNICHAR) { - inev.code = msg.msg.wParam; + /* Handle UTF-16 encoded codepoint above the BMP. + This is needed to support Emoji input from input + panel popped up by "Win+." shortcut. */ + if (UTF_16_HIGH_SURROGATE_P (msg.msg.wParam)) + { + utf16_high = msg.msg.wParam; + utf16_high_modifiers = inev.modifiers; + inev.kind = NO_EVENT; + break; + } + else if (UTF_16_LOW_SURROGATE_P (msg.msg.wParam) + && utf16_high) + { + inev.code = surrogates_to_codepoint (msg.msg.wParam, + utf16_high); + utf16_high = 0; + utf16_high_modifiers = 0; + } + else + inev.code = msg.msg.wParam; } else if (msg.msg.wParam < 256) { From add0610ec9327c15ee933f571731401212328810 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Wed, 15 Jan 2020 10:02:10 +0100 Subject: [PATCH 34/93] Fix implicit declaration of getenv and atol * src/gtkutil.c: Include . --- src/gtkutil.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gtkutil.c b/src/gtkutil.c index 6308c38f164..5e7cf3d2114 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c @@ -22,6 +22,7 @@ along with GNU Emacs. If not, see . */ #ifdef USE_GTK #include #include +#include #include From 592b1cfee9f80413290dcd470effa7fa14036df3 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Wed, 4 Mar 2020 01:48:03 +0200 Subject: [PATCH 35/93] Improve documentation of next-error-highlight-no-select (bug#38778) * doc/emacs/building.texi (Compilation Mode): Mention next-error-highlight-no-select. * lisp/simple.el (next-error-highlight): Add reference to next-error-highlight-no-select. (next-error-highlight-no-select): Add reference to next-error-highlight. --- doc/emacs/building.texi | 5 ++++- lisp/simple.el | 13 +++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi index 02f18865f39..e866eea4a29 100644 --- a/doc/emacs/building.texi +++ b/doc/emacs/building.texi @@ -214,6 +214,7 @@ Select a buffer to be used by next invocation of @code{next-error} and @kindex C-x ` @findex next-error @vindex next-error-highlight +@vindex next-error-highlight-no-select To visit errors sequentially, type @w{@kbd{C-x `}} (@code{next-error}), or equivalently @kbd{M-g M-n} or @kbd{M-g n}. This command can be invoked from any buffer, not just a Compilation @@ -258,7 +259,9 @@ to skip any messages. When Emacs visits the locus of an error message, it momentarily highlights the relevant source line. The duration of this highlight -is determined by the variable @code{next-error-highlight}. +is determined by the variable @code{next-error-highlight} for the locus +in the selected buffer, and @code{next-error-highlight-no-select} for +the locus in non-selected buffers. @vindex compilation-context-lines If the @file{*compilation*} buffer is shown in a window with a left diff --git a/lisp/simple.el b/lisp/simple.el index 0d8072bf5f0..cb04c982220 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -75,14 +75,16 @@ value of 1 means that nothing is amalgamated.") :version "22.1") (defcustom next-error-highlight 0.5 - "Highlighting of locations in selected source buffers. + "Highlighting of locations in the selected buffer. If a number, highlight the locus in `next-error' face for the given time in seconds, or until the next command is executed. If t, highlight the locus until the next command is executed, or until some other locus replaces it. If nil, don't highlight the locus in the source buffer. If `fringe-arrow', indicate the locus by the fringe arrow -indefinitely until some other locus replaces it." +indefinitely until some other locus replaces it. +See `next-error-highlight-no-select' to customize highlighting +of the locus in non-selected buffers." :type '(choice (number :tag "Highlight for specified time") (const :tag "Semipermanent highlighting" t) (const :tag "No highlighting" nil) @@ -91,12 +93,15 @@ indefinitely until some other locus replaces it." :version "22.1") (defcustom next-error-highlight-no-select 0.5 - "Highlighting of locations in `next-error-no-select'. + "Highlighting of locations in non-selected source buffers. +Usually non-selected buffers are displayed by `next-error-no-select'. If number, highlight the locus in `next-error' face for given time in seconds. If t, highlight the locus indefinitely until some other locus replaces it. If nil, don't highlight the locus in the source buffer. If `fringe-arrow', indicate the locus by the fringe arrow -indefinitely until some other locus replaces it." +indefinitely until some other locus replaces it. +See `next-error-highlight' to customize highlighting of the locus +in the selected buffer." :type '(choice (number :tag "Highlight for specified time") (const :tag "Semipermanent highlighting" t) (const :tag "No highlighting" nil) From 7cafbbe96434ef616abfef364d82f7250bffc1ed Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Thu, 27 Feb 2020 21:09:59 -0500 Subject: [PATCH 36/93] Fix describe-variable on values with circular syntax (Bug#39805) * lisp/help-fns.el (describe-variable): Set syntax tables before calling pp-buffer. --- lisp/help-fns.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/help-fns.el b/lisp/help-fns.el index 0e2ae6b3c3c..1be8e0ab082 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -1000,6 +1000,8 @@ it is displayed along with the global value." (terpri) (let ((buf (current-buffer))) (with-temp-buffer + (lisp-mode-variables nil) + (set-syntax-table emacs-lisp-mode-syntax-table) (insert print-rep) (pp-buffer) (let ((pp-buffer (current-buffer))) From 60418a1ab21b86cb2d46470ae187e74a25d33212 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Thu, 27 Feb 2020 08:09:44 -0500 Subject: [PATCH 37/93] Explain how to unset mode bindings (Bug#39802) * doc/emacs/custom.texi (Init Rebinding): Explain that passing nil to define-key will unbind keys, and extend the example accordingly. --- doc/emacs/custom.texi | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi index f39ce40931c..e7e879065ed 100644 --- a/doc/emacs/custom.texi +++ b/doc/emacs/custom.texi @@ -1873,15 +1873,19 @@ You can use a vector for the simple cases too: Language and coding systems may cause problems with key bindings for non-@acronym{ASCII} characters. @xref{Init Non-ASCII}. +@findex define-key As described in @ref{Local Keymaps}, major modes and minor modes can define local keymaps. These keymaps are constructed when the mode is -used for the first time in a session. If you wish to change one of -these keymaps, you must use the @dfn{mode hook} (@pxref{Hooks}). +loaded for the first time in a session. The function @code{define-key} +can be used to make changes in a specific keymap. This function can +also unset keys, when passed @code{nil} as the binding. -@findex define-key - For example, Texinfo mode runs the hook @code{texinfo-mode-hook}. -Here's how you can use the hook to add local bindings for @kbd{C-c n} -and @kbd{C-c p} in Texinfo mode: + Since a mode's keymaps are not constructed until it has been loaded, +you must delay running code which modifies them, e.g., by putting it +on a @dfn{mode hook} (@pxref{(Hooks)}). For example, Texinfo mode +runs the hook @code{texinfo-mode-hook}. Here's how you can use the +hook to add local bindings for @kbd{C-c n} and @kbd{C-c p}, and remove +the one for @kbd{C-c C-x x} in Texinfo mode: @example (add-hook 'texinfo-mode-hook @@ -1890,6 +1894,7 @@ and @kbd{C-c p} in Texinfo mode: 'backward-paragraph) (define-key texinfo-mode-map "\C-cn" 'forward-paragraph))) + (define-key texinfo-mode-map "\C-c\C-xx" nil) @end example @node Modifier Keys From 40b217c2bfde6da6529499c9526a460fcdbeec8f Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Wed, 4 Mar 2020 04:41:45 +0100 Subject: [PATCH 38/93] Bump checkdoc-version to match library header * lisp/emacs-lisp/checkdoc.el (checkdoc-version): Bump version. --- lisp/emacs-lisp/checkdoc.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el index e15836ee7d8..fa5d1cff417 100644 --- a/lisp/emacs-lisp/checkdoc.el +++ b/lisp/emacs-lisp/checkdoc.el @@ -168,7 +168,7 @@ ;; not specifically docstring related. Would this even be useful? ;;; Code: -(defvar checkdoc-version "0.6.1" +(defvar checkdoc-version "0.6.2" "Release version of checkdoc you are currently running.") (require 'cl-lib) From db37dd2e84573ceb2fc037dab040b79880ca298c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Engdeg=C3=A5rd?= Date: Wed, 4 Mar 2020 14:46:46 +0100 Subject: [PATCH 39/93] Don't misinterpret doc string as initial value * lisp/loadhist.el (loadhist--restore-autoload): * lisp/progmodes/vhdl-mode.el (vhdl-font-lock-keywords-0): Prevent the doc string from being used as initial value. --- lisp/loadhist.el | 2 +- lisp/progmodes/vhdl-mode.el | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/loadhist.el b/lisp/loadhist.el index dabc8b9457a..a1ff2f6270d 100644 --- a/lisp/loadhist.el +++ b/lisp/loadhist.el @@ -173,7 +173,7 @@ documentation of `unload-feature' for details.") ;; we undefine it. ;; So we use this auxiliary variable to keep track of the last (t . SYMBOL) ;; that occurred. -(defvar loadhist--restore-autoload +(defvar loadhist--restore-autoload nil "If non-nil, this is a symbol for which we should restore a previous autoload if possible.") diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el index b225a9b1d9a..de56f581ddb 100644 --- a/lisp/progmodes/vhdl-mode.el +++ b/lisp/progmodes/vhdl-mode.el @@ -13334,7 +13334,7 @@ File statistics: \"%s\"\n\ (defvar vhdl-font-lock-keywords nil "Regular expressions to highlight in VHDL Mode.") -(defvar vhdl-font-lock-keywords-0 +(defvar vhdl-font-lock-keywords-0 nil ;; set in `vhdl-font-lock-init' because dependent on user options "For consideration as a value of `vhdl-font-lock-keywords'. This does highlighting of template prompts and directives (pragmas).") From a1abf73c7642339c111646afed1d5d05ecada9c7 Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Wed, 4 Mar 2020 19:50:38 +0000 Subject: [PATCH 40/93] Fix combine-change-calls-1 for when buffer-undo-list is t * lisp/subr.c (combine-change-calls-1): Bind before/after-change-functions to nil also when buffer-undo-list is t. --- lisp/subr.el | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/lisp/subr.el b/lisp/subr.el index c1c4cad18d1..5b94343e499 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -3959,19 +3959,18 @@ the function `undo--wrap-and-run-primitive-undo'." (let ((undo--combining-change-calls t)) (if (not inhibit-modification-hooks) (run-hook-with-args 'before-change-functions beg end)) - (if (eq buffer-undo-list t) - (setq result (funcall body)) - (let (;; (inhibit-modification-hooks t) - (before-change-functions - ;; Ugly Hack: if the body uses syntax-ppss/syntax-propertize - ;; (e.g. via a regexp-search or sexp-movement trigerring - ;; on-the-fly syntax-propertize), make sure that this gets - ;; properly refreshed after subsequent changes. - (if (memq #'syntax-ppss-flush-cache before-change-functions) - '(syntax-ppss-flush-cache))) - after-change-functions) - (setq result (funcall body))) - (let ((ap-elt + (let (;; (inhibit-modification-hooks t) + (before-change-functions + ;; Ugly Hack: if the body uses syntax-ppss/syntax-propertize + ;; (e.g. via a regexp-search or sexp-movement trigerring + ;; on-the-fly syntax-propertize), make sure that this gets + ;; properly refreshed after subsequent changes. + (if (memq #'syntax-ppss-flush-cache before-change-functions) + '(syntax-ppss-flush-cache))) + after-change-functions) + (setq result (funcall body))) + (when (not (eq buffer-undo-list t)) + (let ((ap-elt (list 'apply (- end end-marker) beg From d1bbd32dba392f2fb4548d892354e78ff8df4451 Mon Sep 17 00:00:00 2001 From: Alan Third Date: Wed, 4 Mar 2020 20:51:40 +0000 Subject: [PATCH 41/93] Fix more NS_DRAW_TO_BUFFER #ifdefs (bug#39883) * src/nsterm.m (ns_update_end): Make sure the frame is updated after drawing. (ns_focus): (ns_unfocus): Should be checking on NS_DRAW_TO_BUFFER rather than if it's Cocoa or GNUstep. --- src/nsterm.m | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/nsterm.m b/src/nsterm.m index 8e256149220..851a5617d7b 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -1141,6 +1141,7 @@ static NSRect constrain_frame_rect(NSRect frameRect, bool isFullscreen) #ifdef NS_DRAW_TO_BUFFER [NSGraphicsContext setCurrentContext:nil]; + [view setNeedsDisplay:YES]; #else block_input (); @@ -1194,12 +1195,6 @@ static NSRect constrain_frame_rect(NSRect frameRect, bool isFullscreen) /* clipping */ if (r) { -#ifdef NS_IMPL_COCOA - int i; - for (i = 0 ; i < n ; i++) - [view setNeedsDisplayInRect:r[i]]; -#endif - [[NSGraphicsContext currentContext] saveGraphicsState]; if (n == 2) NSRectClipList (r, 2); @@ -1224,7 +1219,9 @@ static NSRect constrain_frame_rect(NSRect frameRect, bool isFullscreen) gsaved = NO; } -#ifdef NS_IMPL_GNUSTEP +#ifdef NS_DRAW_TO_BUFFER + [FRAME_NS_VIEW (f) setNeedsDisplay:YES]; +#else if (f != ns_updating_frame) { if (focus_view != NULL) From a3c2d186eb514b505e61c2a89a1df886dbfcb06b Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Wed, 4 Mar 2020 21:17:04 +0000 Subject: [PATCH 42/93] CC Mode: Fix the handling of two adjacent after-change-functionses. The bug involved failing to set c-new-END correctly, which lead to an args-out-of-range error when after-change-functions was invoked twice without an intervening invocation of before-change-functions. * lisp/progmodes/cc-mode.el (c-after-change): Correct a coding error in the handling of c-just-done-before-change. --- lisp/progmodes/cc-mode.el | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el index 9f95a9ce48b..fd7750b0d82 100644 --- a/lisp/progmodes/cc-mode.el +++ b/lisp/progmodes/cc-mode.el @@ -1992,17 +1992,16 @@ Note that this is a strict tail, so won't match, e.g. \"0x....\".") ;; Note: c-just-done-before-change is nil, t, or 'whole-buffer. (unless (c-called-from-text-property-change-p) - (save-restriction - (widen) - (unless c-just-done-before-change - (c-before-change (point-min) (point-max))) - (unless (eq c-just-done-before-change t) + (unless (eq c-just-done-before-change t) + (save-restriction + (widen) + (when (null c-just-done-before-change) + (c-before-change (point-min) (point-max))) (setq beg (point-min) end (point-max) old-len (- end beg) c-new-BEG (point-min) - c-new-END (point-max))) - (setq c-just-done-before-change nil))) + c-new-END (point-max))))) ;; (c-new-BEG c-new-END) will be the region to fontify. It may become ;; larger than (beg end). From dc3006cf1419e5b22c35fa36d79ba029d0482df1 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 4 Mar 2020 13:48:26 -0800 Subject: [PATCH 43/93] Pacify GCC 9.2.1 20190927 -O3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Original problem report by N. Jackson in: https://lists.gnu.org/r/emacs-devel/2020-03/msg00047.html I found some other warnings when I used gcc, and fixed them with this patch. * lib-src/etags.c: Include verify.h. (xnmalloc, xnrealloc): Tell the compiler that NITEMS is nononnegative and ITEM_SIZE is positive. * src/conf_post.h (__has_attribute_returns_nonnull) (ATTRIBUTE_RETURNS_NONNULL): New macros. * src/editfns.c (Fuser_full_name): Don’t assume Fuser_login_name returns non-nil. * src/intervals.c (rotate_right, rotate_left, update_interval): * src/intervals.h (LENGTH, LEFT_TOTAL_LENGTH, RIGHT_TOTAL_LENGTH): Use TOTAL_LENGTH0 or equivalent on intervals that might be null. * src/intervals.h (TOTAL_LENGTH): Assume arg is nonnull. (TOTAL_LENGTH0): New macro, with the old TOTAL_LENGTH meaning. (make_interval, split_interval_right): Add ATTRIBUTE_RETURNS_NONNULL. * src/pdumper.c (dump_check_dump_off): Now returns void, since no caller uses the return value. Redo assert to pacify GCC. (decode_emacs_reloc): Add a seemingly-random eassume to pacify GCC. Ugly, and I suspect due to a bug in GCC. --- lib-src/etags.c | 5 +++++ src/conf_post.h | 7 +++++++ src/editfns.c | 19 +++++++++++-------- src/intervals.c | 12 ++++++------ src/intervals.h | 24 ++++++++++++++---------- src/pdumper.c | 9 ++++----- 6 files changed, 47 insertions(+), 29 deletions(-) diff --git a/lib-src/etags.c b/lib-src/etags.c index 174c33a7a5f..eee2c596262 100644 --- a/lib-src/etags.c +++ b/lib-src/etags.c @@ -124,6 +124,7 @@ University of California, as described above. */ #include #include #include +#include #include #include @@ -7310,6 +7311,8 @@ static void * xnmalloc (ptrdiff_t nitems, ptrdiff_t item_size) { ptrdiff_t nbytes; + assume (0 <= nitems); + assume (0 < item_size); if (INT_MULTIPLY_WRAPV (nitems, item_size, &nbytes)) memory_full (); return xmalloc (nbytes); @@ -7319,6 +7322,8 @@ static void * xnrealloc (void *pa, ptrdiff_t nitems, ptrdiff_t item_size) { ptrdiff_t nbytes; + assume (0 <= nitems); + assume (0 < item_size); if (INT_MULTIPLY_WRAPV (nitems, item_size, &nbytes) || SIZE_MAX < nbytes) memory_full (); void *result = realloc (pa, nbytes); diff --git a/src/conf_post.h b/src/conf_post.h index 2f8d19fdca8..eb8fb18c00c 100644 --- a/src/conf_post.h +++ b/src/conf_post.h @@ -78,6 +78,7 @@ typedef bool bool_bf; # define __has_attribute_no_address_safety_analysis false # define __has_attribute_no_sanitize_address GNUC_PREREQ (4, 8, 0) # define __has_attribute_no_sanitize_undefined GNUC_PREREQ (4, 9, 0) +# define __has_attribute_returns_nonnull GNUC_PREREQ (4, 9, 0) # define __has_attribute_warn_unused_result GNUC_PREREQ (3, 4, 0) #endif @@ -321,6 +322,12 @@ extern int emacs_setenv_TZ (char const *); #define ATTRIBUTE_MALLOC_SIZE(args) ATTRIBUTE_MALLOC ATTRIBUTE_ALLOC_SIZE (args) +#if __has_attribute (returns_nonnull) +# define ATTRIBUTE_RETURNS_NONNULL __attribute__ ((returns_nonnull)) +#else +# define ATTRIBUTE_RETURNS_NONNULL +#endif + /* Work around GCC bug 59600: when a function is inlined, the inlined code may have its addresses sanitized even if the function has the no_sanitize_address attribute. This bug is fixed in GCC 4.9.0 and diff --git a/src/editfns.c b/src/editfns.c index ddf190b1752..eb15566fb48 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -1262,14 +1262,17 @@ name, or nil if there is no such user. */) if (q) { Lisp_Object login = Fuser_login_name (INT_TO_INTEGER (pw->pw_uid)); - USE_SAFE_ALLOCA; - char *r = SAFE_ALLOCA (strlen (p) + SBYTES (login) + 1); - memcpy (r, p, q - p); - char *s = lispstpcpy (&r[q - p], login); - r[q - p] = upcase ((unsigned char) r[q - p]); - strcpy (s, q + 1); - full = build_string (r); - SAFE_FREE (); + if (!NILP (login)) + { + USE_SAFE_ALLOCA; + char *r = SAFE_ALLOCA (strlen (p) + SBYTES (login) + 1); + memcpy (r, p, q - p); + char *s = lispstpcpy (&r[q - p], login); + r[q - p] = upcase ((unsigned char) r[q - p]); + strcpy (s, q + 1); + full = build_string (r); + SAFE_FREE (); + } } #endif /* AMPERSAND_FULL_NAME */ diff --git a/src/intervals.c b/src/intervals.c index a66594ceea2..594d8924ebc 100644 --- a/src/intervals.c +++ b/src/intervals.c @@ -298,7 +298,7 @@ rotate_right (INTERVAL A) set_interval_parent (c, A); /* A's total length is decreased by the length of B and its left child. */ - A->total_length -= B->total_length - TOTAL_LENGTH (c); + A->total_length -= TOTAL_LENGTH (B) - TOTAL_LENGTH0 (c); eassert (TOTAL_LENGTH (A) > 0); eassert (LENGTH (A) > 0); @@ -349,7 +349,7 @@ rotate_left (INTERVAL A) set_interval_parent (c, A); /* A's total length is decreased by the length of B and its right child. */ - A->total_length -= B->total_length - TOTAL_LENGTH (c); + A->total_length -= TOTAL_LENGTH (B) - TOTAL_LENGTH0 (c); eassert (TOTAL_LENGTH (A) > 0); eassert (LENGTH (A) > 0); @@ -723,13 +723,13 @@ previous_interval (register INTERVAL interval) i->position - LEFT_TOTAL_LENGTH (i) \ - LENGTH (INTERVAL_PARENT (i)) -/* Find the interval containing POS, given some non-NULL INTERVAL in +/* Find the interval containing POS, given some interval I in the same tree. Note that we update interval->position in each interval we traverse, assuming it is already correctly set for the argument I. We don't assume that any other interval already has a correctly set ->position. */ INTERVAL -update_interval (register INTERVAL i, ptrdiff_t pos) +update_interval (INTERVAL i, ptrdiff_t pos) { if (!i) return NULL; @@ -739,7 +739,7 @@ update_interval (register INTERVAL i, ptrdiff_t pos) if (pos < i->position) { /* Move left. */ - if (pos >= i->position - TOTAL_LENGTH (i->left)) + if (pos >= i->position - LEFT_TOTAL_LENGTH (i)) { i->left->position = i->position - TOTAL_LENGTH (i->left) + LEFT_TOTAL_LENGTH (i->left); @@ -757,7 +757,7 @@ update_interval (register INTERVAL i, ptrdiff_t pos) else if (pos >= INTERVAL_LAST_POS (i)) { /* Move right. */ - if (pos < INTERVAL_LAST_POS (i) + TOTAL_LENGTH (i->right)) + if (pos < INTERVAL_LAST_POS (i) + RIGHT_TOTAL_LENGTH (i)) { i->right->position = INTERVAL_LAST_POS (i) + LEFT_TOTAL_LENGTH (i->right); diff --git a/src/intervals.h b/src/intervals.h index a93b10e9fff..9a7ba910a10 100644 --- a/src/intervals.h +++ b/src/intervals.h @@ -96,24 +96,27 @@ struct interval /* True if this interval has both left and right children. */ #define BOTH_KIDS_P(i) ((i)->left != NULL && (i)->right != NULL) -/* The total size of all text represented by this interval and all its - children in the tree. This is zero if the interval is null. */ -#define TOTAL_LENGTH(i) ((i) == NULL ? 0 : (i)->total_length) +/* The total size of all text represented by the nonnull interval I + and all its children in the tree. */ +#define TOTAL_LENGTH(i) ((i)->total_length) + +/* Likewise, but also defined to be zero if I is null. */ +#define TOTAL_LENGTH0(i) ((i) ? TOTAL_LENGTH (i) : 0) /* The size of text represented by this interval alone. */ -#define LENGTH(i) ((i)->total_length \ - - TOTAL_LENGTH ((i)->right) \ - - TOTAL_LENGTH ((i)->left)) +#define LENGTH(i) (TOTAL_LENGTH (i) \ + - RIGHT_TOTAL_LENGTH (i) \ + - LEFT_TOTAL_LENGTH (i)) /* The position of the character just past the end of I. Note that the position cache i->position must be valid for this to work. */ #define INTERVAL_LAST_POS(i) ((i)->position + LENGTH (i)) /* The total size of the left subtree of this interval. */ -#define LEFT_TOTAL_LENGTH(i) ((i)->left ? (i)->left->total_length : 0) +#define LEFT_TOTAL_LENGTH(i) TOTAL_LENGTH0 ((i)->left) /* The total size of the right subtree of this interval. */ -#define RIGHT_TOTAL_LENGTH(i) ((i)->right ? (i)->right->total_length : 0) +#define RIGHT_TOTAL_LENGTH(i) TOTAL_LENGTH0 ((i)->right) /* These macros are for dealing with the interval properties. */ @@ -234,7 +237,7 @@ set_interval_plist (INTERVAL i, Lisp_Object plist) /* Declared in alloc.c. */ -extern INTERVAL make_interval (void); +extern INTERVAL make_interval (void) ATTRIBUTE_RETURNS_NONNULL; /* Declared in intervals.c. */ @@ -246,7 +249,8 @@ extern void traverse_intervals (INTERVAL, ptrdiff_t, Lisp_Object); extern void traverse_intervals_noorder (INTERVAL, void (*) (INTERVAL, void *), void *); -extern INTERVAL split_interval_right (INTERVAL, ptrdiff_t); +extern INTERVAL split_interval_right (INTERVAL, ptrdiff_t) + ATTRIBUTE_RETURNS_NONNULL; extern INTERVAL split_interval_left (INTERVAL, ptrdiff_t); extern INTERVAL find_interval (INTERVAL, ptrdiff_t); extern INTERVAL next_interval (INTERVAL); diff --git a/src/pdumper.c b/src/pdumper.c index 4d81203f46f..e52163cdae2 100644 --- a/src/pdumper.c +++ b/src/pdumper.c @@ -3604,14 +3604,12 @@ dump_unwind_cleanup (void *data) Vprocess_environment = ctx->old_process_environment; } -/* Return DUMP_OFFSET, making sure it is within the heap. */ -static dump_off +/* Check that DUMP_OFFSET is within the heap. */ +static void dump_check_dump_off (struct dump_context *ctx, dump_off dump_offset) { eassert (dump_offset > 0); - if (ctx) - eassert (dump_offset < ctx->end_heap); - return dump_offset; + eassert (!ctx || dump_offset < ctx->end_heap); } static void @@ -3734,6 +3732,7 @@ decode_emacs_reloc (struct dump_context *ctx, Lisp_Object lreloc) } else { + eassume (ctx); /* Pacify GCC 9.2.1 -O3 -Wnull-dereference. */ eassert (!dump_object_emacs_ptr (target_value)); reloc.u.dump_offset = dump_recall_object (ctx, target_value); if (reloc.u.dump_offset <= 0) From cb1e30910ea7972ea82e28545782c75496d7b6d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Fri, 28 Feb 2020 13:30:48 +0000 Subject: [PATCH 44/93] Have pulse.el preserve existing overlay priorities Fixes: bug#39821 * lisp/cedet/pulse.el (pulse-momentary-highlight-overlay): Save overlay priority. (pulse-momentary-unhighlight): Restore. --- lisp/cedet/pulse.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/cedet/pulse.el b/lisp/cedet/pulse.el index 5713a7b0d1f..16243e16b45 100644 --- a/lisp/cedet/pulse.el +++ b/lisp/cedet/pulse.el @@ -181,6 +181,7 @@ Optional argument FACE specifies the face to do the highlighting." (overlay-put o 'original-face (overlay-get o 'face)) ;; Make this overlay take priority over the `transient-mark-mode' ;; overlay. + (overlay-put o 'original-priority (overlay-get o 'priority)) (overlay-put o 'priority 1) (setq pulse-momentary-overlay o) (if (eq pulse-flag 'never) @@ -214,6 +215,7 @@ Optional argument FACE specifies the face to do the highlighting." (let ((ol pulse-momentary-overlay)) (overlay-put ol 'face (overlay-get ol 'original-face)) (overlay-put ol 'original-face nil) + (overlay-put ol 'priority (overlay-get ol 'original-priority)) ;; Clear the overlay if it needs deleting. (when (overlay-get ol 'pulse-delete) (delete-overlay ol))) From 08d7d28d35aa0c755d6f77b382592ba31552adc2 Mon Sep 17 00:00:00 2001 From: Justin Burkett Date: Thu, 5 Mar 2020 09:10:03 +0100 Subject: [PATCH 45/93] Fix args in 'window-text-pixel-size' call in 'fit-window-to-buffer' * lisp/window.el (fit-window-to-buffer): Fix arguments in 'window-text-pixel-size' call. Copyright-paperwork-exempt: yes --- lisp/window.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/window.el b/lisp/window.el index ceab43f7cd3..5c4ff83d82d 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -9113,8 +9113,8 @@ accessible position." ;; wider than its frame's pixel width, its height ;; remains unaltered. (width (+ (car (window-text-pixel-size - window (window-start) (point-max) - (frame-pixel-width) + window (window-start window) nil + (frame-pixel-width (window-frame window)) ;; Add one line-height to assure that ;; we're on the safe side. This ;; overshoots when the first line below From 40fb20061e6b9b2b22aeee5b7e9f038dc9ba843b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Engdeg=C3=A5rd?= Date: Thu, 5 Mar 2020 12:10:51 +0100 Subject: [PATCH 46/93] * lisp/emacs-lisp/rx.el (rx--string-to-intervals): Fix error string. --- lisp/emacs-lisp/rx.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/rx.el b/lisp/emacs-lisp/rx.el index a0b2444346a..d4a91710273 100644 --- a/lisp/emacs-lisp/rx.el +++ b/lisp/emacs-lisp/rx.el @@ -360,7 +360,7 @@ character X becomes (?X . ?X). Return the intervals in a list." (push (cons start end) intervals)) (t (error "Invalid rx `any' range: %s" - (substring str i 3)))) + (substring str i (+ i 3))))) (setq i (+ i 3)))) (t ;; Single character. From 1814c7e158685045278f991de5eba4e40e8c8199 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Engdeg=C3=A5rd?= Date: Thu, 5 Mar 2020 12:49:26 +0100 Subject: [PATCH 47/93] Fix rx error with ? and ?? The ? and ?? rx operators are special in that they can be written as characters (space and '?' respectively). This confused the definition look-up mechanism in rare cases. * lisp/emacs-lisp/rx.el (rx--expand-def): Don't look up non-symbols. * test/lisp/emacs-lisp/rx-tests.el (rx-charset-or): Test. --- lisp/emacs-lisp/rx.el | 2 +- test/lisp/emacs-lisp/rx-tests.el | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lisp/emacs-lisp/rx.el b/lisp/emacs-lisp/rx.el index d4a91710273..aa4b2addd47 100644 --- a/lisp/emacs-lisp/rx.el +++ b/lisp/emacs-lisp/rx.el @@ -134,7 +134,7 @@ Each entry is: (if (cdr def) (error "Not an `rx' symbol definition: %s" form) (car def))))) - ((consp form) + ((and (consp form) (symbolp (car form))) (let* ((op (car form)) (def (rx--lookup-def op))) (and def diff --git a/test/lisp/emacs-lisp/rx-tests.el b/test/lisp/emacs-lisp/rx-tests.el index 4888e1d9d1e..0fece4004bd 100644 --- a/test/lisp/emacs-lisp/rx-tests.el +++ b/test/lisp/emacs-lisp/rx-tests.el @@ -316,7 +316,9 @@ (should (equal (rx (not (or (in "abc") (char "bcd")))) "[^a-d]")) (should (equal (rx (or (not (in "abc")) (not (char "bcd")))) - "[^bc]"))) + "[^bc]")) + (should (equal (rx (or "x" (? "yz"))) + "x\\|\\(?:yz\\)?"))) (ert-deftest rx-def-in-charset-or () (rx-let ((a (any "badc")) From 88c6db91961945e4ede53d66216c2484f0c5342b Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 5 Mar 2020 17:57:21 +0200 Subject: [PATCH 48/93] Avoid crashes when a fontset has strange entries * src/fontset.c (reorder_font_vector): Skip nil entries in the loop that assigns scores to rfont_def's. (fontset_compare_rfontdef): Cope with nil. This has the effect of moving any nil entries to the end of the font-group, and avoids crashing if an element other than the last in the font-group is nil. (Bug#39892) --- src/fontset.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/fontset.c b/src/fontset.c index bca9452418e..c2bb8b21f26 100644 --- a/src/fontset.c +++ b/src/fontset.c @@ -367,8 +367,14 @@ fontset_add (Lisp_Object fontset, Lisp_Object range, Lisp_Object elt, Lisp_Objec static int fontset_compare_rfontdef (const void *val1, const void *val2) { - return (RFONT_DEF_SCORE (*(Lisp_Object *) val1) - - RFONT_DEF_SCORE (*(Lisp_Object *) val2)); + Lisp_Object v1 = *(Lisp_Object *) val1, v2 = *(Lisp_Object *) val2; + if (NILP (v1) && NILP (v2)) + return 0; + else if (NILP (v1)) + return INT_MIN; + else if (NILP (v2)) + return INT_MAX; + return (RFONT_DEF_SCORE (v1) - RFONT_DEF_SCORE (v2)); } /* Update a cons cell which has this form: @@ -400,6 +406,8 @@ reorder_font_vector (Lisp_Object font_group, struct font *font) for (i = 0; i < size; i++) { Lisp_Object rfont_def = AREF (vec, i); + if (NILP (rfont_def)) + continue; Lisp_Object font_def = RFONT_DEF_FONT_DEF (rfont_def); Lisp_Object font_spec = FONT_DEF_SPEC (font_def); int score = RFONT_DEF_SCORE (rfont_def) & 0xFF; From 32261ed15bc4fb7b9d2cf955286aa21562d2fc8e Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Fri, 6 Mar 2020 02:19:00 +0200 Subject: [PATCH 49/93] New command make-frame-on-current-monitor to use in windmove (bug#39875) * lisp/frame.el (make-frame-on-current-monitor): New command. * lisp/windmove.el (windmove-display-in-direction): Use make-frame-on-current-monitor for 'new-frame'. (windmove-display-new-frame): New command. (windmove-display-default-keybindings): Bind windmove-display-new-frame to 'f' key. * lisp/window.el (display-buffer-in-direction): Fix quotes in docstring. --- lisp/frame.el | 12 ++++++++++++ lisp/windmove.el | 12 ++++++++++++ lisp/window.el | 10 +++++----- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/lisp/frame.el b/lisp/frame.el index 16ee7580f89..dc8dabc5a51 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -713,6 +713,18 @@ The optional argument PARAMETERS specifies additional frame parameters." (x-display-list)))) (make-frame (cons (cons 'display display) parameters))) +(defun make-frame-on-current-monitor (&optional parameters) + "Make a frame on the currently selected monitor. +Like `make-frame-on-monitor' and with the same PARAMETERS as in `make-frame'." + (interactive) + (let* ((monitor-workarea + (cdr (assq 'workarea (frame-monitor-attributes)))) + (geometry-parameters + (when monitor-workarea + `((top . ,(nth 1 monitor-workarea)) + (left . ,(nth 0 monitor-workarea)))))) + (make-frame (append geometry-parameters parameters)))) + (defun make-frame-on-monitor (monitor &optional display parameters) "Make a frame on monitor MONITOR. The optional argument DISPLAY can be a display name, and the optional diff --git a/lisp/windmove.el b/lisp/windmove.el index 40adb49e20f..94d2b75210d 100644 --- a/lisp/windmove.el +++ b/lisp/windmove.el @@ -474,6 +474,11 @@ When `switch-to-buffer-obey-display-actions' is non-nil, (tab-bar-new-tab)) (setq type 'tab) (selected-window)) + ((eq dir 'new-frame) + (window--maybe-raise-frame + (make-frame-on-current-monitor pop-up-frame-alist)) + (setq type 'frame) + (selected-window)) ((eq dir 'same-window) (selected-window)) (t (window-in-direction @@ -541,6 +546,12 @@ See the logic of the prefix ARG in `windmove-display-in-direction'." (interactive "P") (windmove-display-in-direction 'same-window arg)) +;;;###autoload +(defun windmove-display-new-frame (&optional arg) + "Display the next buffer in a new frame." + (interactive "P") + (windmove-display-in-direction 'new-frame arg)) + ;;;###autoload (defun windmove-display-new-tab (&optional arg) "Display the next buffer in a new tab." @@ -562,6 +573,7 @@ Default value of MODIFIERS is `shift-meta'." (global-set-key (vector (append modifiers '(up))) 'windmove-display-up) (global-set-key (vector (append modifiers '(down))) 'windmove-display-down) (global-set-key (vector (append modifiers '(?0))) 'windmove-display-same-window) + (global-set-key (vector (append modifiers '(?f))) 'windmove-display-new-frame) (global-set-key (vector (append modifiers '(?t))) 'windmove-display-new-tab)) diff --git a/lisp/window.el b/lisp/window.el index b1a0294ae91..bbd4e9b6dfc 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -7891,15 +7891,15 @@ Info node `(elisp) Buffer Display Action Alists' for details of such alists. ALIST has to contain a `direction' entry whose value should be -one of `left', `above' (or `up'), `right' and `below' (or -'down'). Other values are usually interpreted as `below'. +one of `left', `above' (or `up'), `right' and `below' (or `down'). +Other values are usually interpreted as `below'. If ALIST also contains a `window' entry, its value specifies a reference window. That value can be a special symbol like -'main' (which stands for the selected frame's main window) or -'root' (standings for the selected frame's root window) or an +`main' (which stands for the selected frame's main window) or +`root' (standings for the selected frame's root window) or an arbitrary valid window. Any other value (or omitting the -'window' entry) means to use the selected window as reference +`window' entry) means to use the selected window as reference window. This function tries to reuse or split a window such that the From 7e8b8da9e30c8b3dcb2f7740406358e00a1a42f8 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Fri, 6 Mar 2020 02:27:32 +0200 Subject: [PATCH 50/93] Fix handling of empty input in describe-variable and describe-symbol * lisp/help-fns.el (describe-variable): Use 'user-error' like in 'describe-function'. (describe-symbol): Use empty string for arg SYMBOL when input is empty and there is no default value. This allows to signal the error "You didn't specify a function or variable" instead of displaying help about the symbol 'nil' on empty input. OTOH, still allows to see help about 'nil' when the input is "nil". --- lisp/help-fns.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/help-fns.el b/lisp/help-fns.el index 59eedb5331d..cc00c722ccc 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -944,7 +944,7 @@ it is displayed along with the global value." (unless (buffer-live-p buffer) (setq buffer (current-buffer))) (unless (frame-live-p frame) (setq frame (selected-frame))) (if (not (symbolp variable)) - (message "You did not specify a variable") + (user-error "You didn't specify a variable") (save-excursion (let ((valvoid (not (with-current-buffer buffer (boundp variable)))) val val-start-pos locus) @@ -1435,7 +1435,7 @@ current buffer and the selected frame, respectively." t nil nil (if found (symbol-name v-or-f))))) (list (if (equal val "") - v-or-f (intern val))))) + (or v-or-f "") (intern val))))) (if (not (symbolp symbol)) (user-error "You didn't specify a function or variable")) (unless (buffer-live-p buffer) (setq buffer (current-buffer))) From c996fe1ec69de0082043397d4965d08cb94892fb Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Thu, 5 Mar 2020 17:11:51 -0800 Subject: [PATCH 51/93] Remove ancient OS X process-connection-type handling * src/process.c (init_process_emacs) [DARWIN_OS]: Remove process-connection-type special-casing for OS X < 10.3 (ie pre-2003). Ref https://lists.gnu.org/r/emacs-devel/2005-01/msg00741.html --- src/emacs.c | 1 - src/process.c | 13 ------------- 2 files changed, 14 deletions(-) diff --git a/src/emacs.c b/src/emacs.c index 8b27c63f731..ea9c4cd79dc 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -1964,7 +1964,6 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem /* This calls putenv and so must precede init_process_emacs. */ init_timefns (); - /* This sets Voperating_system_release, which init_process_emacs uses. */ init_editfns (); /* These two call putenv. */ diff --git a/src/process.c b/src/process.c index 91d426103d8..e4e5e57aeee 100644 --- a/src/process.c +++ b/src/process.c @@ -8277,19 +8277,6 @@ init_process_emacs (int sockfd) memset (datagram_address, 0, sizeof datagram_address); #endif -#if defined (DARWIN_OS) - /* PTYs are broken on Darwin < 6, but are sometimes useful for interactive - processes. As such, we only change the default value. */ - if (initialized) - { - char const *release = (STRINGP (Voperating_system_release) - ? SSDATA (Voperating_system_release) - : 0); - if (!release || !release[0] || (release[0] < '7' && release[1] == '.')) { - Vprocess_connection_type = Qnil; - } - } -#endif #endif /* subprocesses */ kbd_is_on_hold = 0; } From 33b31dc314cf71f3b1569f25756d69c6915168ff Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 6 Mar 2020 09:48:10 +0200 Subject: [PATCH 52/93] Attempt to avoid rare segfaults in show_mouse_face * src/xdisp.c (show_mouse_face): Don't display the active region if called on a frame different from the one recorded in HLINFO. (Bug#37671) --- src/xdisp.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/xdisp.c b/src/xdisp.c index 3a8b5e3f1d0..a4de2698ca0 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -31454,6 +31454,10 @@ show_mouse_face (Mouse_HLInfo *hlinfo, enum draw_glyphs_face draw) struct window *w = XWINDOW (hlinfo->mouse_face_window); struct frame *f = XFRAME (WINDOW_FRAME (w)); + /* Don't bother doing anything if we are on a wrong frame. */ + if (f != hlinfo->mouse_face_mouse_frame) + return; + if (/* If window is in the process of being destroyed, don't bother to do anything. */ w->current_matrix != NULL From 3f9c340de04d7572b02ef1a4c3793420d29a768c Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 6 Mar 2020 10:14:42 +0200 Subject: [PATCH 53/93] Improve documentation of 'table-generate-source' * lisp/textmodes/table.el (table-generate-source): Doc fix. (Bug#39935) * etc/NEWS: Fix wording of the 'table-generate-source' entry and mark it as documented. --- etc/NEWS | 5 +++-- lisp/textmodes/table.el | 21 +++++++++++---------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 8d0e0b67591..3332143dc23 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -768,8 +768,9 @@ an offset to absolute line numbers. ** table -*** 'table-generate-source' and friends now support outputting wiki and -mediawiki format tables. ++++ +*** 'table-generate-source' now supports wiki and mediawiki +This command can now output wiki and mediawiki format tables. --- ** telnet-mode diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el index 4482e7d4d23..bd2cac7aebb 100644 --- a/lisp/textmodes/table.el +++ b/lisp/textmodes/table.el @@ -2912,16 +2912,17 @@ WHERE is provided the cell and table at that location is reported." (defun table-generate-source (language &optional dest-buffer caption) "Generate source of the current table in the specified language. LANGUAGE is a symbol that specifies the language to describe the -structure of the table. It must be either `html', `latex' or `cals'. -The resulted source text is inserted into DEST-BUFFER and the buffer -object is returned. When DEST-BUFFER is omitted or nil the default -buffer specified in `table-dest-buffer-name' is used. In this case -the content of the default buffer is erased prior to the generation. -When DEST-BUFFER is non-nil it is expected to be either a destination -buffer or a name of the destination buffer. In this case the -generated result is inserted at the current point in the destination -buffer and the previously existing contents in the buffer are -untouched. +structure of the table. It must be either `html', `latex', `cals', +`wiki', or `mediawiki'. +The function inserts the resulting source text into DEST-BUFFER, and +returns the buffer object. When DEST-BUFFER is omitted or nil, the +function uses the default buffer specified in `table-dest-buffer-name'. +In this case, the function erases the default buffer prior to the +source generation. +When DEST-BUFFER is non-nil, it should be either a destination +buffer or a name of the destination buffer. In that case, the +function inserts the generated result at point in the destination +buffer, and leaves the previous contents of the buffer untouched. References used for this implementation: From cb1877321b8a04cdb9b890d76d99a9f5a7ed5bce Mon Sep 17 00:00:00 2001 From: Roland Winkler Date: Fri, 6 Mar 2020 09:37:55 +0100 Subject: [PATCH 54/93] Use regexp-opt to define bibtex-autokey-transcriptions. (Bug#39686) --- lisp/textmodes/bibtex.el | 50 ++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el index a7be57e5a3f..670e763814c 100644 --- a/lisp/textmodes/bibtex.el +++ b/lisp/textmodes/bibtex.el @@ -1006,32 +1006,36 @@ See `bibtex-generate-autokey' for details." :type 'boolean) (defvar bibtex-autokey-transcriptions - '(;; language specific characters - ("\\\\aa" . "a") ; \aa -> a - ("\\\\AA" . "A") ; \AA -> A - ("\\\"a\\|\\\\\\\"a\\|\\\\ae" . "ae") ; "a,\"a,\ae -> ae - ("\\\"A\\|\\\\\\\"A\\|\\\\AE" . "Ae") ; "A,\"A,\AE -> Ae - ("\\\\i" . "i") ; \i -> i - ("\\\\j" . "j") ; \j -> j - ("\\\\l" . "l") ; \l -> l - ("\\\\L" . "L") ; \L -> L - ("\\\"o\\|\\\\\\\"o\\|\\\\o\\|\\\\oe" . "oe") ; "o,\"o,\o,\oe -> oe - ("\\\"O\\|\\\\\\\"O\\|\\\\O\\|\\\\OE" . "Oe") ; "O,\"O,\O,\OE -> Oe - ("\\\"s\\|\\\\\\\"s\\|\\\\3" . "ss") ; "s,\"s,\3 -> ss - ("\\\"u\\|\\\\\\\"u" . "ue") ; "u,\"u -> ue - ("\\\"U\\|\\\\\\\"U" . "Ue") ; "U,\"U -> Ue - ;; accents - ("\\\\`\\|\\\\'\\|\\\\\\^\\|\\\\~\\|\\\\=\\|\\\\\\.\\|\\\\u\\|\\\\v\\|\\\\H\\|\\\\t\\|\\\\c\\|\\\\d\\|\\\\b" . "") - ;; braces, quotes, concatenation. - ("[`'\"{}#]" . "") - ("\\\\-" . "") ; \- -> - ;; spaces - ("\\\\?[ \t\n]+\\|~" . " ")) + (nconc + (mapcar (lambda (a) (cons (regexp-opt (car a)) (cdr a))) + '(;; language specific characters + (("\\aa") . "a") ; \aa -> a + (("\\AA") . "A") ; \AA -> A + (("\"a" "\\\"a" "\\ae") . "ae") ; "a,\"a,\ae -> ae + (("\"A" "\\\"A" "\\AE") . "Ae") ; "A,\"A,\AE -> Ae + (("\\i") . "i") ; \i -> i + (("\\j") . "j") ; \j -> j + (("\\l") . "l") ; \l -> l + (("\\L") . "L") ; \L -> L + (("\"o" "\\\"o" "\\o" "\\oe") . "oe") ; "o,\"o,\o,\oe -> oe + (("\"O" "\\\"O" "\\O" "\\OE") . "Oe") ; "O,\"O,\O,\OE -> Oe + (("\"s" "\\\"s" "\\3") . "ss") ; "s,\"s,\3 -> ss + (("\"u" "\\\"u") . "ue") ; "u,\"u -> ue + (("\"U" "\\\"U") . "Ue") ; "U,\"U -> Ue + ;; hyphen, accents + (("\\-" "\\`" "\\'" "\\^" "\\~" "\\=" "\\." "\\u" "\\v" + "\\H" "\\t" "\\c" "\\d" "\\b") . "") + ;; space + (("~") . " "))) + ;; more spaces + '(("[\s\t\n]*\\(?:\\\\\\)?[\s\t\n]+" . " ") + ;; braces, quotes, concatenation. + ("[`'\"{}#]" . ""))) "Alist of (OLD-REGEXP . NEW-STRING) pairs. -Used by the default values of `bibtex-autokey-name-change-strings' and +Used as default values of `bibtex-autokey-name-change-strings' and `bibtex-autokey-titleword-change-strings'. Defaults to translating some language specific characters to their ASCII transcriptions, and -removing any character accents.") +removing any accent characters.") (defcustom bibtex-autokey-name-change-strings bibtex-autokey-transcriptions From 5cb312b5b913540ab3dcedbfef7acfc58da50c41 Mon Sep 17 00:00:00 2001 From: Amin Bandali Date: Fri, 6 Mar 2020 12:54:23 -0500 Subject: [PATCH 55/93] Update ERC mailing list address * lisp/erc/erc.el (erc-official-location): As part of bringing ERC under the Emacs umbrella, erc-discuss has been renamed to emacs-erc, and will be *the* mailing list for discussions and announcements about ERC going forward. The other two lists, erc-announce and erc-commit, are now retired. For more details, see the announcement at . --- lisp/erc/erc.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el index a46755153e3..81325df3f4f 100644 --- a/lisp/erc/erc.el +++ b/lisp/erc/erc.el @@ -75,7 +75,7 @@ (eval-when-compile (require 'subr-x)) (defvar erc-official-location - "https://www.emacswiki.org/emacs/ERC (mailing list: erc-discuss@gnu.org)" + "https://www.emacswiki.org/emacs/ERC (mailing list: emacs-erc@gnu.org)" "Location of the ERC client on the Internet.") (defgroup erc nil From 10c58356e4e7ab1bae9b5fe1c1304e1f8dc82f83 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 7 Mar 2020 13:32:52 +0200 Subject: [PATCH 56/93] Document changes in lexical-binding * doc/lispref/variables.texi (Using Lexical Binding): Document that lexical-binding is now turned on by default in more cases. * etc/NEWS: Fix wording of the NEWS entry about the above, and mark it as fully documented. --- doc/lispref/variables.texi | 10 ++++++++-- etc/NEWS | 11 +++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index 33897bb6336..abcd4bbd0f7 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi @@ -1187,8 +1187,14 @@ When evaluating Emacs Lisp code directly using an @code{eval} call, lexical binding is enabled if the @var{lexical} argument to @code{eval} is non-@code{nil}. @xref{Eval}. -Lexical binding is also enabled in Lisp Interaction and IELM -mode, used in the @file{*scratch*} and @file{*ielm*} buffers. +@findex eval-expression@r{, and }lexical-binding +Lexical binding is also enabled in Lisp Interaction and IELM mode, +used in the @file{*scratch*} and @file{*ielm*} buffers, and also when +evaluating expressions via @kbd{M-:} (@code{eval-expression}) and when +processing the @option{--eval} command-line options of Emacs +(@pxref{Action Arguments,,, emacs, The GNU Emacs Manual}) and +@command{emacsclient} (@pxref{emacsclient Options,,, emacs, The GNU +Emacs Manual}). @cindex special variables Even when lexical binding is enabled, certain variables will diff --git a/etc/NEWS b/etc/NEWS index 3332143dc23..2d719fb7a5b 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -351,10 +351,13 @@ The default value is 30000, as the previously hard-coded threshold. answers, but also function keys like 'F1', character events such as 'C-M-h', and control characters like 'C-h'. -** Lexical binding is now used when evaluating interactive Elisp forms. -More specifically, 'lexical-binding' is now used for 'M-:', '--eval', -as well as in 'lisp-interaction-mode' and 'ielm-mode', used in the -"*scratch*" and "*ielm*" buffers. ++++ +** Lexical binding is now used by default when evaluating interactive Elisp. +More specifically, 'lexical-binding' is now used by default for 'M-:' +and '--eval' (including in evaluations invoked from 'emacsclient' via +its '--eval' command-line option), as well as in +'lisp-interaction-mode' and 'ielm-mode', used in the "*scratch*" and +"*ielm*" buffers. --- ** The new user option 'tooltip-resize-echo-area' avoids truncating From fdbe7cacfb1e56e8a2115971ad2a09cdd1b0fd85 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 7 Mar 2020 13:40:10 +0200 Subject: [PATCH 57/93] Document the changes in 'read-answer' * doc/lispref/minibuf.texi (Multiple Queries): Document the fact that 'read-answer' can now accept non-character input events. --- doc/lispref/minibuf.texi | 20 ++++++++++---------- etc/NEWS | 1 + 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi index 1266cf8ef65..c1615993f5e 100644 --- a/doc/lispref/minibuf.texi +++ b/doc/lispref/minibuf.texi @@ -2227,16 +2227,16 @@ the end of @var{question}. The possible responses are provided in @noindent where @var{long-answer} is the complete text of the user response, a string; @var{short-answer} is a short form of the same response, a -single character; and @var{help-message} is the text that describes -the meaning of the answer. If the variable @code{read-answer-short} -is non-@code{nil}, the prompt will show the short variants of the -possible answers and the user is expected to type the single -characters shown in the prompt; otherwise the prompt will show the -long variants of the answers, and the user is expected to type the -full text of one of the answers and end by pressing @key{RET}. If -@code{use-dialog-box} is non-@code{nil}, and this function was invoked -by mouse events, the question and the answers will be displayed in a -GUI dialog box. +single character or a function key; and @var{help-message} is the text +that describes the meaning of the answer. If the variable +@code{read-answer-short} is non-@code{nil}, the prompt will show the +short variants of the possible answers and the user is expected to +type the single characters/keys shown in the prompt; otherwise the +prompt will show the long variants of the answers, and the user is +expected to type the full text of one of the answers and end by +pressing @key{RET}. If @code{use-dialog-box} is non-@code{nil}, and +this function was invoked by mouse events, the question and the +answers will be displayed in a GUI dialog box. The function returns the text of the @var{long-answer} selected by the user, regardless of whether long or short answers were shown in the diff --git a/etc/NEWS b/etc/NEWS index 2d719fb7a5b..08bd2af1595 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -347,6 +347,7 @@ The default value is 30000, as the previously hard-coded threshold. +++ ** The function 'read-passwd' uses "*" as default character to hide passwords. ++++ ** The function 'read-answer' now accepts not only single character answers, but also function keys like 'F1', character events such as 'C-M-h', and control characters like 'C-h'. From 89307ebccd709a75e2bdc6858efcfdcfe9d7bda2 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 7 Mar 2020 13:42:35 +0200 Subject: [PATCH 58/93] ; * etc/NEWS: Mark 'completion-common-part' face entry as not documented. --- etc/NEWS | 1 + 1 file changed, 1 insertion(+) diff --git a/etc/NEWS b/etc/NEWS index 08bd2af1595..b960c336b32 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -493,6 +493,7 @@ matches strings where the pattern appears as a subsequence. Put simply, makes "foo" complete to both "barfoo" and "frodo". Add 'flex' to 'completion-styles' or 'completion-category-overrides' to use it. +--- ** The 'completion-common-part' face is now visible by default. +++ From ec5a267ddc0532a192604664ba6bd8f9021b4a8c Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 7 Mar 2020 13:46:06 +0200 Subject: [PATCH 59/93] ; * etc/NEWS: Mark 'byte-count-to-string-function' as undocumented. --- etc/NEWS | 1 + 1 file changed, 1 insertion(+) diff --git a/etc/NEWS b/etc/NEWS index b960c336b32..f52c04012b2 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -560,6 +560,7 @@ mode, they are described in the manual "(emacs) Display". ** New user option 'xref-file-name-display' controls the display of file names in xref buffers. +--- ** New user option 'byte-count-to-string-function'. It is used for displaying file sizes and disk space in some cases. From e252341e114364b0e2d5326841fe8a77b182a869 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 7 Mar 2020 13:48:06 +0200 Subject: [PATCH 60/93] ; * etc/NEWS: 'backup-by-copying-when-privileged-mismatch' is documented. --- etc/NEWS | 1 + 1 file changed, 1 insertion(+) diff --git a/etc/NEWS b/etc/NEWS index f52c04012b2..1d5634890a4 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -592,6 +592,7 @@ The HIST argument of 'read-from-minibuffer' now works correctly with buffer-local variables. This means that different buffers can have their own separated input history list if desired. ++++ ** 'backup-by-copying-when-privileged-mismatch' applies to file gid, too. In addition to checking the file owner uid, Emacs also checks that the group gid is not greater than 'backup-by-copying-when-privileged-mismatch'; From 6281ed58bec81ab6cd4804aee866384b1aeb2468 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 7 Mar 2020 13:54:03 +0200 Subject: [PATCH 61/93] ; * etc/NEWS: No need to document the change in 'list-processes'. --- etc/NEWS | 1 + 1 file changed, 1 insertion(+) diff --git a/etc/NEWS b/etc/NEWS index 1d5634890a4..cf0252c0fd6 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -746,6 +746,7 @@ non-nil. what they're named, and the 'battery-linux-sysfs-regexp' variable has been removed. +--- ** The 'list-processes' command now includes port numbers in the network connection information (in addition to the host name). From 98306fdfb8a59dc9ff6a077a00281ca02b2e5ba7 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 7 Mar 2020 13:55:37 +0200 Subject: [PATCH 62/93] ; * etc/NEWS: No need to document deprecation of 'cl'. --- etc/NEWS | 1 + 1 file changed, 1 insertion(+) diff --git a/etc/NEWS b/etc/NEWS index cf0252c0fd6..1936b252136 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -750,6 +750,7 @@ been removed. ** The 'list-processes' command now includes port numbers in the network connection information (in addition to the host name). +--- ** The 'cl' package is now officially deprecated in favor of 'cl-lib'. --- From 3103c01c3e41fe37afed908e9982a98ff9d31c94 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 7 Mar 2020 14:05:52 +0200 Subject: [PATCH 63/93] ; * etc/NEWS: Formatting fixes. --- etc/NEWS | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 1936b252136..fcf9dbf0fec 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -759,20 +759,21 @@ network connection information (in addition to the host name). *** When called interactively with a prefix arg 'C-u', 'desktop-read' now prompts the user for the directory containing the desktop file. -+++ ** display-line-numbers-mode ++++ *** New faces 'line-number-major-tick' and 'line-number-minor-tick', and user options 'display-line-numbers-major-tick' and 'display-line-numbers-minor-tick' can be used to highlight the line numbers of lines multiple of certain numbers. ++++ *** New variable 'display-line-numbers-offset', when non-zero, adds an offset to absolute line numbers. -+++ ** winner ++++ *** A new user option, 'winner-boring-buffers-regexp', has been added. ** table @@ -781,9 +782,9 @@ an offset to absolute line numbers. *** 'table-generate-source' now supports wiki and mediawiki This command can now output wiki and mediawiki format tables. ---- ** telnet-mode +--- *** Reverting a buffer in 'telnet-mode' will restart a closed connection. ** goto-addr @@ -792,9 +793,9 @@ This command can now output wiki and mediawiki format tables. be ignored has been added via the 'goto-address-uri-schemes-ignored' variable. -+++ ** tex-mode ++++ *** 'latex-noindent-commands' controls indentation of certain commands. You can use this new user option to control indentation of arguments of \emph, \footnote, and similar commands. @@ -1819,7 +1820,6 @@ keyboard macros. 'isearch-yank-symbol-or-char'. 'isearch-del-char' is now bound to 'C-M-d'. -+++ 'M-s h l' invokes 'highlight-lines-matching-regexp' using the search string to highlight lines matching the search string. This is similar to the existing binding 'M-s h r' ('highlight-regexp') that highlights @@ -2650,6 +2650,7 @@ overrides all system and Emacs-provided defaults. To get the old method back, set 'mailcap-prefer-mailcap-viewers' to nil. ** MH-E + +++ *** The hook 'mh-show-mode-hook' is now called before the message is inserted. Functions that want to affect the message text (for example, to change From 512b66abd7437d908fae781c312e141bdaeed90c Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 7 Mar 2020 14:10:14 +0200 Subject: [PATCH 64/93] ; * etc/NEWS: No need to document 'goto-address-uri-schemes-ignored'. --- etc/NEWS | 1 + 1 file changed, 1 insertion(+) diff --git a/etc/NEWS b/etc/NEWS index fcf9dbf0fec..02394768066 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -789,6 +789,7 @@ This command can now output wiki and mediawiki format tables. ** goto-addr +--- *** A way to more conveniently specify what URI address schemes should be ignored has been added via the 'goto-address-uri-schemes-ignored' variable. From 08c042bd26f9a194a25aef241f8747ce47ac2798 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 7 Mar 2020 14:23:23 +0200 Subject: [PATCH 65/93] Document that 'byte-compile-dynamic' is obsolete * doc/lispref/compile.texi (Dynamic Loading): Document that this is deprecated. * etc/NEWS: mark the 'byte-compile-dynamic' entry as documented. --- doc/lispref/compile.texi | 6 +++++- etc/NEWS | 5 +++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi index 311b6f5b3fb..e979fda41eb 100644 --- a/doc/lispref/compile.texi +++ b/doc/lispref/compile.texi @@ -302,7 +302,7 @@ function is called, it reads the full definition from the file, to replace the place-holder. The advantage of dynamic function loading is that loading the file -becomes much faster. This is a good thing for a file which contains +should become faster. This is a good thing for a file which contains many separate user-callable functions, if using one of them does not imply you will probably also use the rest. A specialized mode which provides many keyboard commands often has that usage pattern: a user may @@ -326,6 +326,10 @@ installed Emacs files. But they are quite likely to happen with Lisp files that you are changing. The easiest way to prevent these problems is to reload the new compiled file immediately after each recompilation. + @emph{Experience shows that using dynamic function loading provides +benefits that are hardly measurable, so this feature is deprecated +since Emacs 27.1.} + The byte compiler uses the dynamic function loading feature if the variable @code{byte-compile-dynamic} is non-@code{nil} at compilation time. Do not set this variable globally, since dynamic loading is diff --git a/etc/NEWS b/etc/NEWS index 02394768066..6b2de77f1bb 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -803,10 +803,11 @@ You can use this new user option to control indentation of arguments of ** byte compiler ++++ *** 'byte-compile-dynamic' is now obsolete. This is because on the one hand it suffers from misbehavior in corner -cases that have plagued it for years, and on the other experiments indicated -that it doesn't bring any measurable benefit. +cases that have plagued it for years, and on the other hand experience +indicates that it doesn't bring any measurable benefit. --- *** The 'g' keystroke in "*Compile-Log*" buffers has been bound to a From d4ac478cb39548bd0af360c94505b0a385180acc Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 7 Mar 2020 14:32:06 +0200 Subject: [PATCH 66/93] ; * etc/NEWS: No need to document news of doc-view.el. --- etc/NEWS | 3 +++ 1 file changed, 3 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index 6b2de77f1bb..e5751409783 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -845,10 +845,13 @@ its functions. ** doc-view.el +--- *** New commands 'doc-view-presentation' and 'doc-view-fit-window-to-page'. +--- *** Added support for password-protected PDF files. +--- *** A new user option 'doc-view-pdftotext-program-args' has been added to allow controlling how the conversion to text is done. From fc4d0f86daef4d00a2a7f7a251adcf97de601eb5 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 7 Mar 2020 14:33:16 +0200 Subject: [PATCH 67/93] ; * etc/NEWS: No need to document Ido news. --- etc/NEWS | 1 + 1 file changed, 1 insertion(+) diff --git a/etc/NEWS b/etc/NEWS index e5751409783..357d2ef8066 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -857,6 +857,7 @@ to allow controlling how the conversion to text is done. ** Ido +--- *** New user option 'ido-big-directories' to mark directories whose names match certain regular expressions as big. Ido won't attempt to list the contents of such directories when completing file names. From 25b4d6fa2863cf8759424bcc676f001179954b65 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 7 Mar 2020 14:38:07 +0200 Subject: [PATCH 68/93] ; * etc/NEWS: No need to document changes in map.el and seq.el. --- etc/NEWS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index 357d2ef8066..75319253b21 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -888,6 +888,7 @@ at the end of the active minibuffer. *** Some commands that previously used 'read-char-choice' now read a character using the minibuffer by 'read-char-from-minibuffer'. +--- ** map.el *** Now also understands plists. @@ -899,6 +900,7 @@ a character using the minibuffer by 'read-char-from-minibuffer'. +++ *** The 'type' arg can be a list '(hash-table :key1 VAL1 :key2 VAL2 ...)'. +--- ** seq.el New convenience functions 'seq-first' and 'seq-rest' give easy access to respectively the first and all but the first elements of sequences. From 9e8456cf0f6344619e6935ca6b59a7c75b1d62ee Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 7 Mar 2020 14:39:29 +0200 Subject: [PATCH 69/93] ; * etc/NEWS: No need to document changes in Octave mode. --- etc/NEWS | 1 + 1 file changed, 1 insertion(+) diff --git a/etc/NEWS b/etc/NEWS index 75319253b21..9b952fa71fe 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -960,6 +960,7 @@ functions 'windmove-coord-add', 'windmove-constrain-to-range', 'windmove-constrain-loc-for-movement', 'windmove-wrap-loc-for-movement', 'windmove-reference-loc' and 'windmove-other-window-loc'. +--- ** Octave mode The mode is automatically enabled in files that start with the 'function' keyword. From fc4f4efabf13d61823514f99ba8da51de84e42c8 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 7 Mar 2020 14:42:19 +0200 Subject: [PATCH 70/93] ; * etc/NEWS: No need to document vc-hg and mergebase changes. --- etc/NEWS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index 9b952fa71fe..b733b5b7209 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1123,9 +1123,11 @@ for a revision. *** 'C-u C-x v D' ('vc-root-version-diff') prompts for two revisions and compares their entire trees. +--- *** New user option 'vc-hg-revert-switches'. It specifies switches to pass to Hg's 'revert' command. +--- *** 'C-x v M D' ('vc-diff-mergebase') and 'C-x v M L' ('vc-log-mergebase') print diffs and logs between the merge base (common ancestor) of two given revisions. From d1d56a9fd9f7d44dc86947656f4c74f2ebc2e523 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 7 Mar 2020 14:48:33 +0200 Subject: [PATCH 71/93] ; * etc/NEWS: 'thunk-let' and 'thunk-let*' are fully documented. --- etc/NEWS | 1 + 1 file changed, 1 insertion(+) diff --git a/etc/NEWS b/etc/NEWS index b733b5b7209..f2472d69094 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1985,6 +1985,7 @@ This is useful for games where lower scores are better, like time-based games. *** Completing file names in the minibuffer via 'C-TAB' now uses the styles as configured by the user option 'completion-styles'. ++++ ** New macros 'thunk-let' and 'thunk-let*'. These macros are analogue to 'let' and 'let*', but create bindings that are evaluated lazily. From d28b73841b2233c9bdde5a24a7778bab2066e385 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 7 Mar 2020 14:50:50 +0200 Subject: [PATCH 72/93] ; * etc/NEWS: Fix the 'mml-secure-openpgp-sign-with-sender' entry. --- etc/NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/etc/NEWS b/etc/NEWS index f2472d69094..ba1f657bcbb 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -2209,8 +2209,9 @@ are formatted as MIME digests. *** 'message-forward-included-headers' has changed its default to exclude most headers when forwarding. +--- *** 'mml-secure-openpgp-sign-with-sender' sets also "gpg --sender". -When 'mml-secure-openpgp-sign-with-sender' is non-nil message sender's +When 'mml-secure-openpgp-sign-with-sender' is non-nil, message sender's email address (in addition to its old behavior) will also be used to set gpg's "--sender email@domain" option. From 34132d4bf663b1acc61c04e2b962339f75912f2d Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 7 Mar 2020 14:55:43 +0200 Subject: [PATCH 73/93] ; * etc/NEWS: Mark 2 entries as fully documented. --- etc/NEWS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index ba1f657bcbb..e576bc11d5f 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -3108,6 +3108,7 @@ with POSIX.1-2017. 'decoded-time-weekday', 'decoded-time-dst' and 'decoded-time-zone' accessors can be used. ++++ *** The new functions 'date-days-in-month' (which will say how many days there are in a month in a specific year), 'date-ordinal-to-time' (that computes the date of an ordinal day), 'decoded-time-add' (for @@ -3167,6 +3168,7 @@ throughput of reading from sub-processes that produces vast ** The new user option 'quit-window-hook' is now run first when executing the 'quit-window' command. ++++ ** The user options 'help-enable-completion-auto-load', 'help-enable-auto-load' and 'vhdl-project-auto-load', as well as the function 'vhdl-auto-load-project' have been renamed to have "autoload" From 335a9bd2157300266614a9ef5e5f106a10b3218a Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Thu, 5 Mar 2020 01:52:58 +0200 Subject: [PATCH 74/93] minibuffer-force-complete-and-exit: Allow input with no matches * lisp/minibuffer.el (minibuffer--require-match): New variable. (completing-read-default): Bind it to the REQUIRE-MATCH value. (minibuffer-force-complete-and-exit): Consult it to allow input with no matches when a match is not required (bug#38992). * lisp/icomplete.el (icomplete-exhibit): Use it to render the correct parens around matches. --- lisp/icomplete.el | 2 +- lisp/minibuffer.el | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lisp/icomplete.el b/lisp/icomplete.el index a1a67e2330a..efe64d855a2 100644 --- a/lisp/icomplete.el +++ b/lisp/icomplete.el @@ -541,7 +541,7 @@ See `icomplete-mode' and `minibuffer-setup-hook'." (icomplete--completion-table) (icomplete--completion-predicate) (if (window-minibuffer-p) - (not minibuffer-completion-confirm))))) + (eq minibuffer--require-match t))))) (buffer-undo-list t) deactivate-mark) ;; Do nothing if while-no-input was aborted. diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 49daabc44e3..7f5b597542a 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -1400,7 +1400,11 @@ scroll the window of possible completions." (minibuffer-prompt-end) (point-max) #'exit-minibuffer ;; If the previous completion completed to an element which fails ;; test-completion, then we shouldn't exit, but that should be rare. - (lambda () (minibuffer-message "Incomplete")))) + (lambda () + (if minibuffer--require-match + (minibuffer-message "Incomplete") + ;; If a match is not required, exit after all. + (exit-minibuffer))))) (defun minibuffer-force-complete (&optional start end dont-cycle) "Complete the minibuffer to an exact match. @@ -1464,6 +1468,9 @@ DONT-CYCLE tells the function not to setup cycling." "List of commands which cause an immediately following `minibuffer-complete-and-exit' to ask for extra confirmation.") +(defvar minibuffer--require-match nil + "Value of REQUIRE-MATCH passed to `completing-read'.") + (defun minibuffer-complete-and-exit () "Exit if the minibuffer contains a valid completion. Otherwise, try to complete the minibuffer contents. If @@ -3748,8 +3755,10 @@ See `completing-read' for the meaning of the arguments." (let* ((minibuffer-completion-table collection) (minibuffer-completion-predicate predicate) + ;; FIXME: Remove/rename this var, see the next one. (minibuffer-completion-confirm (unless (eq require-match t) require-match)) + (minibuffer--require-match require-match) (base-keymap (if require-match minibuffer-local-must-match-map minibuffer-local-completion-map)) From e734961d4cb8f67ab677b97b9bb70c5e2e2cfb6d Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Thu, 5 Mar 2020 01:58:32 +0200 Subject: [PATCH 75/93] icomplete-fido-exit: New command for the M-j binding * lisp/icomplete.el (icomplete-fido-exit): New command. (icomplete-fido-mode-map): Use it (bug#38992). --- lisp/icomplete.el | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lisp/icomplete.el b/lisp/icomplete.el index efe64d855a2..0a655d1e9e9 100644 --- a/lisp/icomplete.el +++ b/lisp/icomplete.el @@ -284,6 +284,13 @@ require user confirmation." (t (icomplete-force-complete-and-exit))))) +(defun icomplete-fido-exit () + "Exit minibuffer properly honoring the REQUIRE-MATCH argument." + (interactive) + (if minibuffer--require-match + (minibuffer-complete-and-exit) + (exit-minibuffer))) + (defun icomplete-fido-backward-updir () "Delete char before or go up directory, like `ido-mode'." (interactive) @@ -299,7 +306,7 @@ require user confirmation." (define-key map (kbd "RET") 'icomplete-fido-ret) (define-key map (kbd "C-m") 'icomplete-fido-ret) (define-key map (kbd "DEL") 'icomplete-fido-backward-updir) - (define-key map (kbd "M-j") 'exit-minibuffer) + (define-key map (kbd "M-j") 'icomplete-fido-exit) (define-key map (kbd "C-s") 'icomplete-forward-completions) (define-key map (kbd "C-r") 'icomplete-backward-completions) (define-key map (kbd "") 'icomplete-forward-completions) From fc47e3ad99170649de5f318ab9c6aa06cd353af1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Sat, 7 Mar 2020 13:10:07 +0000 Subject: [PATCH 76/93] Let fido-mode users force a minibuffer-exit * lisp/icomplete.el (icomplete-fido-exit): Add FORCE arg. Rewrite docstring. (bug#38992) --- lisp/icomplete.el | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lisp/icomplete.el b/lisp/icomplete.el index 0a655d1e9e9..66bc731f67f 100644 --- a/lisp/icomplete.el +++ b/lisp/icomplete.el @@ -284,10 +284,14 @@ require user confirmation." (t (icomplete-force-complete-and-exit))))) -(defun icomplete-fido-exit () - "Exit minibuffer properly honoring the REQUIRE-MATCH argument." - (interactive) - (if minibuffer--require-match +(defun icomplete-fido-exit (force) + "Attempt to exit minibuffer immediately with current input. +Unless FORCE is non-nil (interactively with a prefix argument), +honour a non-nil REQUIRE-MATCH argument to `completing-read' by +trying to complete as much as possible and disallowing the exit +if that doesn't produce a completion match." + (interactive "P") + (if (and (not force) minibuffer--require-match) (minibuffer-complete-and-exit) (exit-minibuffer))) From 5b19db98adcfccf432ac40ccdad831723a4c1c06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Sat, 7 Mar 2020 13:47:07 +0000 Subject: [PATCH 77/93] ; * etc/NEWS: correctly describe what fido-mode is --- etc/NEWS | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index e576bc11d5f..cfa946f2b13 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1497,9 +1497,9 @@ strings and report all the spelling mistakes. +++ *** New minor mode Fido mode. This mode is based on Icomplete, and its name stands for "Fake Ido". -The point of this mode is to be an 'ido-mode' workalike, but provide -most of the functionality present in Icomplete that is not in -'ido-mode', while being much more compatible with all of Emacs's +The point of this mode is to be an 'ido-mode' workalike, providing +most of the functionality present in 'ido-mode' that is not in +Icomplete, which is much more compatible with all of Emacs's completion facilities. ** Ecomplete From 72f87f88739befce2adf202749b7d651a8ef1551 Mon Sep 17 00:00:00 2001 From: Alan Third Date: Sat, 7 Mar 2020 14:39:05 +0000 Subject: [PATCH 78/93] NS port documentation updates * doc/emacs/macos.texi (Mac / GNUstep Customization): Document some more of the ns- variables and remove incorrect font back-end information. * etc/NEWS: Update the documentation status of macOS news entries. --- doc/emacs/macos.texi | 69 +++++++++++++++++++++++++++++++++++++------- etc/NEWS | 4 +++ 2 files changed, 62 insertions(+), 11 deletions(-) diff --git a/doc/emacs/macos.texi b/doc/emacs/macos.texi index ae1b8d654f0..00daa8b35d3 100644 --- a/doc/emacs/macos.texi +++ b/doc/emacs/macos.texi @@ -143,6 +143,64 @@ The variables for right-hand keys, like @code{ns-right-alternate-modifier}, may also be set to @code{left}, which means to use the same behavior as the corresponding left-hand key. +@subsection Frame Variables + +@table @code +@vindex ns-use-proxy-icon +@item ns-use-proxy-icon +This variable specifies whether to display the proxy icon in the +titlebar. + +@vindex ns-confirm-quit +@item ns-confirm-quit +This variable specifies whether to display a graphical confirmation +dialogue on quitting. + +@vindex ns-auto-hide-menu-bar +@item ns-auto-hide-menu-bar +This variable specifies whether the macOS menu bar is hidden when an +Emacs frame is selected. If non-nil the menu bar is not shown unless +the mouse pointer is moved near to the top of the screen. + +@vindex ns-use-native-fullscreen +@item ns-use-native-fullscreen +This variable controls whether to use native, or non-native +fullscreen. Native fullscreen is only available on macOS 10.7 and +above. +@end table + +@subsection macOS Trackpad/Mousewheel Variables + +These variables only apply to macOS 10.7 (Lion) and above. + +@table @code +@vindex ns-use-mwheel-acceleration +@item ns-use-mwheel-acceleration +This variable controls whether Emacs ignores the system mousewheel +acceleration. When nil each `click' of the mousewheel will correspond +exactly with one mousewheel event. When non-nil, the default, each +`click' may correspond with more than one mousewheel event, depending +on the user's input. + +@vindex ns-use-mwheel-momentum +@item ns-use-mwheel-momentum +This variable controls whether Emacs ignores the system `momentum' +when scrolling using a trackpad. When non-nil, the default, scrolling +rapidly may result in the buffer continuing to scroll for a short +while after the user has lifted their fingers off the trackpad. + +@vindex ns-mwheel-line-height +@item ns-mwheel-line-height +This variable controls the sensitivity of scrolling with the trackpad. +Apple trackpads scroll by pixels, not lines, so Emacs converts the +system's pixel values into lines. When set to a number, this variable +sets the number of pixels Emacs will consider as one line. When nil +or a non-number the default line height is used. + +Setting a lower number makes the trackpad more sensitive, and a higher +number makes the trackpad less sensitive. +@end table + @subsection Font Panel @findex ns-popup-font-panel @@ -153,17 +211,6 @@ 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}. -@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: - -@example -% defaults write org.gnu.Emacs FontBackend ns -@end example - - @node Mac / GNUstep Events @section Windowing System Events under macOS / GNUstep @cindex events on macOS diff --git a/etc/NEWS b/etc/NEWS index cfa946f2b13..1eff9261147 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -3649,15 +3649,18 @@ signal 'user-error' if there is no buffer to switch to. ** Battery status is now supported in all Cygwin builds. Previously it was supported only in the Cygwin-w32 build. +--- ** Emacs now handles key combinations involving the macOS "command" and "option" modifier keys more correctly. ++++ ** MacOS modifier key behavior is now more adjustable. The behavior of the macOS "Option", "Command", "Control" and "Function" keys can now be specified separately for use with ordinary keys, function keys and mouse clicks. This allows using them in their standard macOS way for composing characters. ++++ ** The special handling of 'frame-title-format' on NS where setting it to t would enable the macOS proxy icon has been replaced with a separate variable, 'ns-use-proxy-icon'. 'frame-title-format' will now @@ -3708,6 +3711,7 @@ modifier keys in line with Apples guidelines. This makes the drag and drop behavior more consistent, as previously the sending application was able to 'set' modifiers without the knowledge of the user. +--- ** On NS multicolor font display is enabled again since it is also implemented in Emacs on free operating systems via Cairo drawing. From 818333c85a513dc2d0ae9ee00ecde983c4fe0269 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 7 Mar 2020 09:30:19 -0800 Subject: [PATCH 79/93] * doc/lispref/os.texi (time-subtract): Doc fix. --- doc/lispref/os.texi | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi index 201ca18c1e4..92aaf24b851 100644 --- a/doc/lispref/os.texi +++ b/doc/lispref/os.texi @@ -1978,10 +1978,9 @@ The result is @code{nil} if either argument is a NaN. @defun time-subtract t1 t2 This returns the time difference @var{t1} @minus{} @var{t2} between -two time values, normally as a Lisp timestamp but as a float -if either argument is infinite or a NaN@. -When the result is a timestamp, it is exact and its clock +two time values, as a Lisp time value. The result is exact and its clock resolution is no worse than the worse of its two arguments' resolutions. +The result is floating-point only if it is infinite or a NaN. If you need the difference in units of elapsed seconds, you can convert it with @code{time-convert} or @code{float-time}. @xref{Time Conversion}. From 363d927086dbdc4e5073393889b76eb0470785f4 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 7 Mar 2020 09:47:03 -0800 Subject: [PATCH 80/93] Fix bug with JIT stealth timers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * lisp/emacs-lisp/timer.el (run-at-time): Don’t assume that Lisp time values must be conses (Bug#39944). --- lisp/emacs-lisp/timer.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/timer.el b/lisp/emacs-lisp/timer.el index 74a94957e73..9eb8feed0f1 100644 --- a/lisp/emacs-lisp/timer.el +++ b/lisp/emacs-lisp/timer.el @@ -378,7 +378,7 @@ This function returns a timer object which you can use in (decoded-time-year now) (decoded-time-zone now))))))) - (or (consp time) + (or (time-equal-p time time) (error "Invalid time format")) (let ((timer (timer-create))) From 9f4b260c2b98ea05a02e0ab7213156ce2e60e5a9 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 7 Mar 2020 11:58:20 -0800 Subject: [PATCH 81/93] Update from Gnulib This incorporates: 2020-03-07 open, openat: port to (O_RDWR | O_RDONLY) != 0 * lib/open.c: Copy from Gnulib. --- lib/open.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/open.c b/lib/open.c index 487194f6652..bb180fde292 100644 --- a/lib/open.c +++ b/lib/open.c @@ -110,7 +110,9 @@ open (const char *filename, int flags, ...) directories, - if O_WRONLY or O_RDWR is specified, open() must fail because the file does not contain a '.' directory. */ - if (flags & (O_CREAT | O_WRONLY | O_RDWR)) + if ((flags & O_CREAT) + || (flags & O_ACCMODE) == O_RDWR + || (flags & O_ACCMODE) == O_WRONLY) { size_t len = strlen (filename); if (len > 0 && filename[len - 1] == '/') From 5d4cf1fef85bc24bc4cd9705ebb14150263ad707 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 7 Mar 2020 12:04:05 -0800 Subject: [PATCH 82/93] =?UTF-8?q?Add=20=E2=80=98nofollow=E2=80=99=20flag?= =?UTF-8?q?=20to=20set-file-times?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a companion to the recent set-file-modes patch. It adds support for a ‘nofollow’ flag to set-file-times (Bug#39773). Like the set-file-modes patch, it needs work in the w32 port. * admin/merge-gnulib (GNULIB_MODULES): Add futimens, utimensat. Remove utimens. * doc/lispref/files.texi (Changing Files): * etc/NEWS: Mention the change. * lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate. * lisp/files.el (copy-directory): * lisp/gnus/gnus-cloud.el (gnus-cloud-replace-file): * lisp/net/tramp-adb.el (tramp-adb-handle-copy-file): * lisp/net/tramp-smb.el (tramp-smb-handle-copy-file): * lisp/tar-mode.el (tar-copy): * test/lisp/filenotify-tests.el (file-notify-test03-events): * test/lisp/files-tests.el: (files-tests-file-name-non-special-set-file-times): * test/lisp/net/tramp-tests.el (tramp-test22-file-times): When setting file times, avoid following symbolic links when the file is not supposed to be a symbolic link. * lib/futimens.c, lib/utimensat.c, m4/futimens.m4, m4/utimensat.m4: New files, copied from Gnulib. * lisp/gnus/gnus-cloud.el (gnus-cloud-replace-file): When creating a file that is not supposed to exist already, use the excl flag to check this. * lisp/net/tramp-adb.el (tramp-adb-handle-set-file-times): * lisp/net/tramp-sh.el (tramp-sh-handle-set-file-times): * lisp/net/tramp-sudoedit.el (tramp-sudoedit-handle-set-file-times): Accept an optional FLAG arg that is currently ignored, and add a FIXME comment for it. * lisp/net/tramp-gvfs.el (tramp-gvfs-handle-set-file-times): * src/fileio.c (Fset_file_times): Support an optional FLAG arg. * src/fileio.c (Fcopy_file): Use futimens instead of set_file_times, as it’s simpler and is a POSIX API. * src/sysdep.c (set_file_times): Move from here ... * src/w32.c (set_file_times): ... to here, and make it static, since it is now used only in w32.c. Presumably w32.c should also add support for futimens and utimensat (the POSIX APIs, which Emacs now uses) and it can remove fdutimens (the Gnulib API, which Emacs no longer uses). --- admin/merge-gnulib | 4 +- doc/lispref/files.texi | 10 ++- etc/NEWS | 4 +- lib/futimens.c | 37 ++++++++ lib/gnulib.mk.in | 28 +++++- lib/utimensat.c | 160 ++++++++++++++++++++++++++++++++++ lisp/files.el | 7 +- lisp/gnus/gnus-cloud.el | 4 +- lisp/net/tramp-adb.el | 6 +- lisp/net/tramp-gvfs.el | 4 +- lisp/net/tramp-sh.el | 3 +- lisp/net/tramp-smb.el | 3 +- lisp/net/tramp-sudoedit.el | 3 +- lisp/tar-mode.el | 2 +- m4/futimens.m4 | 65 ++++++++++++++ m4/gnulib-comp.m4 | 38 +++++++- m4/utimensat.m4 | 69 +++++++++++++++ src/fileio.c | 51 +++++------ src/sysdep.c | 15 ---- src/systime.h | 3 - src/w32.c | 15 ++++ test/lisp/filenotify-tests.el | 8 +- test/lisp/files-tests.el | 4 +- test/lisp/net/tramp-tests.el | 3 +- 24 files changed, 476 insertions(+), 70 deletions(-) create mode 100644 lib/futimens.c create mode 100644 lib/utimensat.c create mode 100644 m4/futimens.m4 create mode 100644 m4/utimensat.m4 diff --git a/admin/merge-gnulib b/admin/merge-gnulib index 557119441e4..768e5051f0b 100755 --- a/admin/merge-gnulib +++ b/admin/merge-gnulib @@ -34,7 +34,7 @@ GNULIB_MODULES=' d-type diffseq dosname double-slash-root dtoastr dtotimespec dup2 environ execinfo explicit_bzero faccessat fchmodat fcntl fcntl-h fdopendir - filemode filevercmp flexmember fpieee fstatat fsusage fsync + filemode filevercmp flexmember fpieee fstatat fsusage fsync futimens getloadavg getopt-gnu gettime gettimeofday gitlog-to-changelog ieee754-h ignore-value intprops largefile lstat manywarnings memmem-simple mempcpy memrchr minmax mkostemp mktime nstrftime @@ -43,7 +43,7 @@ GNULIB_MODULES=' sig2str socklen stat-time std-gnu11 stdalign stddef stdio stpcpy strnlen strtoimax symlink sys_stat sys_time tempname time time_r time_rz timegm timer-time timespec-add timespec-sub - update-copyright unlocked-io utimens + update-copyright unlocked-io utimensat vla warnings ' diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi index a69a4e5dd38..b3ad9b99649 100644 --- a/doc/lispref/files.texi +++ b/doc/lispref/files.texi @@ -1909,11 +1909,19 @@ omitted or @code{nil}, it defaults to 0, i.e., no access rights at all. @end defun -@defun set-file-times filename &optional time +@defun set-file-times filename &optional time flag This function sets the access and modification times of @var{filename} to @var{time}. The return value is @code{t} if the times are successfully set, otherwise it is @code{nil}. @var{time} defaults to the current time and must be a time value (@pxref{Time of Day}). + +By default this function follows symbolic links. However, if the +optional argument @var{flag} is the symbol @code{nofollow}, this +function does not follow @var{filename} if it is a symbolic link; +this can help prevent inadvertently changing the times of a file +somewhere else. On platforms that do not support changing times +on a symbolic link, this function signals an error when @var{filename} +is a symbolic link and @var{flag} is @code{nofollow}. @end defun @defun set-file-extended-attributes filename attribute-alist diff --git a/etc/NEWS b/etc/NEWS index fcdf6dbe249..47b87afbc60 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -225,8 +225,8 @@ called when the function object is garbage-collected. Use 'set_function_finalizer' to set the finalizer and 'get_function_finalizer' to retrieve it. -** 'file-modes' and 'set-file-modes' now have an optional argument -specifying whether to follow symbolic links. +** 'file-modes', 'set-file-modes', and 'set-file-times' now have an +optional argument specifying whether to follow symbolic links. ** 'parse-time-string' can now parse ISO 8601 format strings, such as "2020-01-15T16:12:21-08:00". diff --git a/lib/futimens.c b/lib/futimens.c new file mode 100644 index 00000000000..83fb27cb6aa --- /dev/null +++ b/lib/futimens.c @@ -0,0 +1,37 @@ +/* Set the access and modification time of an open fd. + Copyright (C) 2009-2020 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* written by Eric Blake */ + +#include + +#include + +#include "utimens.h" + +/* Set the access and modification timestamps of FD to be + TIMESPEC[0] and TIMESPEC[1], respectively. + Fail with ENOSYS on systems without futimes (or equivalent). + If TIMESPEC is null, set the timestamps to the current time. + Return 0 on success, -1 (setting errno) on failure. */ +int +futimens (int fd, struct timespec const times[2]) +{ + /* fdutimens also works around bugs in native futimens, when running + with glibc compiled against newer headers but on a Linux kernel + older than 2.6.32. */ + return fdutimens (fd, NULL, times); +} diff --git a/lib/gnulib.mk.in b/lib/gnulib.mk.in index d4dc6a3df33..e90d2e39049 100644 --- a/lib/gnulib.mk.in +++ b/lib/gnulib.mk.in @@ -106,6 +106,7 @@ # fstatat \ # fsusage \ # fsync \ +# futimens \ # getloadavg \ # getopt-gnu \ # gettime \ @@ -155,7 +156,7 @@ # timespec-sub \ # unlocked-io \ # update-copyright \ -# utimens \ +# utimensat \ # vla \ # warnings @@ -1087,6 +1088,7 @@ gl_GNULIB_ENABLED_lchmod = @gl_GNULIB_ENABLED_lchmod@ gl_GNULIB_ENABLED_malloca = @gl_GNULIB_ENABLED_malloca@ gl_GNULIB_ENABLED_open = @gl_GNULIB_ENABLED_open@ gl_GNULIB_ENABLED_strtoll = @gl_GNULIB_ENABLED_strtoll@ +gl_GNULIB_ENABLED_utimens = @gl_GNULIB_ENABLED_utimens@ gl_LIBOBJS = @gl_LIBOBJS@ gl_LTLIBOBJS = @gl_LTLIBOBJS@ gltests_LIBOBJS = @gltests_LIBOBJS@ @@ -1733,6 +1735,17 @@ EXTRA_libgnu_a_SOURCES += fsync.c endif ## end gnulib module fsync +## begin gnulib module futimens +ifeq (,$(OMIT_GNULIB_MODULE_futimens)) + + +EXTRA_DIST += futimens.c + +EXTRA_libgnu_a_SOURCES += futimens.c + +endif +## end gnulib module futimens + ## begin gnulib module getdtablesize ifeq (,$(OMIT_GNULIB_MODULE_getdtablesize)) @@ -3375,13 +3388,26 @@ endif ## begin gnulib module utimens ifeq (,$(OMIT_GNULIB_MODULE_utimens)) +ifneq (,$(gl_GNULIB_ENABLED_utimens)) libgnu_a_SOURCES += utimens.c +endif EXTRA_DIST += utimens.h endif ## end gnulib module utimens +## begin gnulib module utimensat +ifeq (,$(OMIT_GNULIB_MODULE_utimensat)) + + +EXTRA_DIST += at-func.c utimensat.c + +EXTRA_libgnu_a_SOURCES += at-func.c utimensat.c + +endif +## end gnulib module utimensat + ## begin gnulib module verify ifeq (,$(OMIT_GNULIB_MODULE_verify)) diff --git a/lib/utimensat.c b/lib/utimensat.c new file mode 100644 index 00000000000..63788d56480 --- /dev/null +++ b/lib/utimensat.c @@ -0,0 +1,160 @@ +/* Set the access and modification time of a file relative to directory fd. + Copyright (C) 2009-2020 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* written by Eric Blake */ + +#include + +/* Specification. */ +#include + +#include +#include +#include + +#include "stat-time.h" +#include "timespec.h" +#include "utimens.h" + +#if HAVE_UTIMENSAT + +# undef utimensat + +/* If we have a native utimensat, but are compiling this file, then + utimensat was defined to rpl_utimensat by our replacement + sys/stat.h. We assume the native version might fail with ENOSYS, + or succeed without properly affecting ctime (as is the case when + using newer glibc but older Linux kernel). In this scenario, + rpl_utimensat checks whether the native version is usable, and + local_utimensat provides the fallback manipulation. */ + +static int local_utimensat (int, char const *, struct timespec const[2], int); +# define AT_FUNC_NAME local_utimensat + +/* Like utimensat, but work around native bugs. */ + +int +rpl_utimensat (int fd, char const *file, struct timespec const times[2], + int flag) +{ +# if defined __linux__ || defined __sun + struct timespec ts[2]; +# endif + + /* See comments in utimens.c for details. */ + static int utimensat_works_really; /* 0 = unknown, 1 = yes, -1 = no. */ + if (0 <= utimensat_works_really) + { + int result; +# if defined __linux__ || defined __sun + struct stat st; + /* As recently as Linux kernel 2.6.32 (Dec 2009), several file + systems (xfs, ntfs-3g) have bugs with a single UTIME_OMIT, + but work if both times are either explicitly specified or + UTIME_NOW. Work around it with a preparatory [l]stat prior + to calling utimensat; fortunately, there is not much timing + impact due to the extra syscall even on file systems where + UTIME_OMIT would have worked. + + The same bug occurs in Solaris 11.1 (Apr 2013). + + FIXME: Simplify this in 2024, when these file system bugs are + no longer common on Gnulib target platforms. */ + if (times && (times[0].tv_nsec == UTIME_OMIT + || times[1].tv_nsec == UTIME_OMIT)) + { + if (fstatat (fd, file, &st, flag)) + return -1; + if (times[0].tv_nsec == UTIME_OMIT && times[1].tv_nsec == UTIME_OMIT) + return 0; + if (times[0].tv_nsec == UTIME_OMIT) + ts[0] = get_stat_atime (&st); + else + ts[0] = times[0]; + if (times[1].tv_nsec == UTIME_OMIT) + ts[1] = get_stat_mtime (&st); + else + ts[1] = times[1]; + times = ts; + } +# ifdef __hppa__ + /* Linux kernel 2.6.22.19 on hppa does not reject invalid tv_nsec + values. */ + else if (times + && ((times[0].tv_nsec != UTIME_NOW + && ! (0 <= times[0].tv_nsec + && times[0].tv_nsec < TIMESPEC_HZ)) + || (times[1].tv_nsec != UTIME_NOW + && ! (0 <= times[1].tv_nsec + && times[1].tv_nsec < TIMESPEC_HZ)))) + { + errno = EINVAL; + return -1; + } +# endif +# endif + result = utimensat (fd, file, times, flag); + /* Linux kernel 2.6.25 has a bug where it returns EINVAL for + UTIME_NOW or UTIME_OMIT with non-zero tv_sec, which + local_utimensat works around. Meanwhile, EINVAL for a bad + flag is indeterminate whether the native utimensat works, but + local_utimensat will also reject it. */ + if (result == -1 && errno == EINVAL && (flag & ~AT_SYMLINK_NOFOLLOW)) + return result; + if (result == 0 || (errno != ENOSYS && errno != EINVAL)) + { + utimensat_works_really = 1; + return result; + } + } + /* No point in trying openat/futimens, since on Linux, futimens is + implemented with the same syscall as utimensat. Only avoid the + native utimensat due to an ENOSYS failure; an EINVAL error was + data-dependent, and the next caller may pass valid data. */ + if (0 <= utimensat_works_really && errno == ENOSYS) + utimensat_works_really = -1; + return local_utimensat (fd, file, times, flag); +} + +#else /* !HAVE_UTIMENSAT */ + +# define AT_FUNC_NAME utimensat + +#endif /* !HAVE_UTIMENSAT */ + +/* Set the access and modification timestamps of FILE to be + TIMESPEC[0] and TIMESPEC[1], respectively; relative to directory + FD. If flag is AT_SYMLINK_NOFOLLOW, change the times of a symlink, + or fail with ENOSYS if not possible. If TIMESPEC is null, set the + timestamps to the current time. If possible, do it without + changing the working directory. Otherwise, resort to using + save_cwd/fchdir, then utimens/restore_cwd. If either the save_cwd + or the restore_cwd fails, then give a diagnostic and exit nonzero. + Return 0 on success, -1 (setting errno) on failure. */ + +/* AT_FUNC_NAME is now utimensat or local_utimensat. */ +#define AT_FUNC_F1 lutimens +#define AT_FUNC_F2 utimens +#define AT_FUNC_USE_F1_COND AT_SYMLINK_NOFOLLOW +#define AT_FUNC_POST_FILE_PARAM_DECLS , struct timespec const ts[2], int flag +#define AT_FUNC_POST_FILE_ARGS , ts +#include "at-func.c" +#undef AT_FUNC_NAME +#undef AT_FUNC_F1 +#undef AT_FUNC_F2 +#undef AT_FUNC_USE_F1_COND +#undef AT_FUNC_POST_FILE_PARAM_DECLS +#undef AT_FUNC_POST_FILE_ARGS diff --git a/lisp/files.el b/lisp/files.el index 2e7694d7677..8ce0187f5b7 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -5944,9 +5944,10 @@ into NEWNAME instead." ;; Set directory attributes. (let ((modes (file-modes directory)) (times (and keep-time (file-attribute-modification-time - (file-attributes directory))))) - (if modes (set-file-modes newname modes (unless follow 'nofollow))) - (if times (set-file-times newname times)))))) + (file-attributes directory)))) + (follow-flag (unless follow 'nofollow))) + (if modes (set-file-modes newname modes follow-flag)) + (if times (set-file-times newname times follow-flag)))))) ;; At time of writing, only info uses this. diff --git a/lisp/gnus/gnus-cloud.el b/lisp/gnus/gnus-cloud.el index 4d8764bacca..da6231d7330 100644 --- a/lisp/gnus/gnus-cloud.el +++ b/lisp/gnus/gnus-cloud.el @@ -285,8 +285,8 @@ Use old data if FORCE-OLDER is not nil." (insert new-contents) (when (file-exists-p file-name) (rename-file file-name (car (find-backup-file-name file-name)))) - (write-region (point-min) (point-max) file-name) - (set-file-times file-name (parse-iso8601-time-string date)))) + (write-region (point-min) (point-max) file-name nil nil nil 'excl) + (set-file-times file-name (parse-iso8601-time-string date) 'nofollow))) (defun gnus-cloud-file-covered-p (file-name) (let ((matched nil)) diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el index 2c9674fa36f..7ee740f93cb 100644 --- a/lisp/net/tramp-adb.el +++ b/lisp/net/tramp-adb.el @@ -674,8 +674,9 @@ But handle the case, if the \"test\" command is not available." (tramp-adb-send-command-and-check v (format "chmod %o %s" mode localname))))) -(defun tramp-adb-handle-set-file-times (filename &optional time) +(defun tramp-adb-handle-set-file-times (filename &optional time flag) "Like `set-file-times' for Tramp files." + flag ;; FIXME: Support 'nofollow'. (with-parsed-tramp-file-name filename nil (tramp-flush-file-properties v localname) (let ((time (if (or (null time) @@ -777,7 +778,8 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." (set-file-times newname (tramp-compat-file-attribute-modification-time - (file-attributes filename)))))) + (file-attributes filename)) + (unless ok-if-already-exists 'nofollow))))) (defun tramp-adb-handle-rename-file (filename newname &optional ok-if-already-exists) diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el index 3ce7bbbd4a3..1ad57c59a5b 100644 --- a/lisp/net/tramp-gvfs.el +++ b/lisp/net/tramp-gvfs.el @@ -1571,7 +1571,7 @@ If FILE-SYSTEM is non-nil, return file system attributes." (tramp-gvfs-url-file-name (tramp-make-tramp-file-name v)) "unix::mode" (number-to-string mode)))) -(defun tramp-gvfs-handle-set-file-times (filename &optional time) +(defun tramp-gvfs-handle-set-file-times (filename &optional time flag) "Like `set-file-times' for Tramp files." (with-parsed-tramp-file-name filename nil (tramp-flush-file-properties v localname) @@ -1582,7 +1582,7 @@ If FILE-SYSTEM is non-nil, return file system attributes." (current-time) time))) (tramp-gvfs-send-command - v "gvfs-set-attribute" "-t" "uint64" + v "gvfs-set-attribute" (if flag "-nt" "-t") "uint64" (tramp-gvfs-url-file-name (tramp-make-tramp-file-name v)) "time::modified" (format-time-string "%s" time))))) diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 84b8191bd3d..560941c4d5b 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -1495,11 +1495,12 @@ of." mode (tramp-shell-quote-argument localname)) "Error while changing file's mode %s" filename)))) -(defun tramp-sh-handle-set-file-times (filename &optional time) +(defun tramp-sh-handle-set-file-times (filename &optional time flag) "Like `set-file-times' for Tramp files." (with-parsed-tramp-file-name filename nil (when (tramp-get-remote-touch v) (tramp-flush-file-properties v localname) + flag ;; FIXME: Support 'nofollow'. (let ((time (if (or (null time) (tramp-compat-time-equal-p time tramp-time-doesnt-exist) diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el index 42954cbda3d..d91362c879c 100644 --- a/lisp/net/tramp-smb.el +++ b/lisp/net/tramp-smb.el @@ -619,7 +619,8 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." (set-file-times newname (tramp-compat-file-attribute-modification-time - (file-attributes filename)))))) + (file-attributes filename)) + (unless ok-if-already-exists 'nofollow))))) (defun tramp-smb-handle-delete-directory (directory &optional recursive _trash) "Like `delete-directory' for Tramp files." diff --git a/lisp/net/tramp-sudoedit.el b/lisp/net/tramp-sudoedit.el index 7d8c8a90618..c054f405e3d 100644 --- a/lisp/net/tramp-sudoedit.el +++ b/lisp/net/tramp-sudoedit.el @@ -523,10 +523,11 @@ the result will be a local, non-Tramp, file name." (string-to-number (match-string 2))) (string-to-number (match-string 3))))))))) -(defun tramp-sudoedit-handle-set-file-times (filename &optional time) +(defun tramp-sudoedit-handle-set-file-times (filename &optional time flag) "Like `set-file-times' for Tramp files." (with-parsed-tramp-file-name filename nil (tramp-flush-file-properties v localname) + flag ;; FIXME: Support 'nofollow'. (let ((time (if (or (null time) (tramp-compat-time-equal-p time tramp-time-doesnt-exist) diff --git a/lisp/tar-mode.el b/lisp/tar-mode.el index 97d883eebd9..a3c1715b1e1 100644 --- a/lisp/tar-mode.el +++ b/lisp/tar-mode.el @@ -1056,7 +1056,7 @@ extracted file." (write-region start end to-file nil nil nil t)) (when (and tar-copy-preserve-time date) - (set-file-times to-file date))) + (set-file-times to-file date 'nofollow))) (message "Copied tar entry %s to %s" name to-file))) (defun tar-new-entry (filename &optional index) diff --git a/m4/futimens.m4 b/m4/futimens.m4 new file mode 100644 index 00000000000..dc5cfa94119 --- /dev/null +++ b/m4/futimens.m4 @@ -0,0 +1,65 @@ +# serial 8 +# See if we need to provide futimens replacement. + +dnl Copyright (C) 2009-2020 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# Written by Eric Blake. + +AC_DEFUN([gl_FUNC_FUTIMENS], +[ + AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) + AC_CHECK_FUNCS_ONCE([futimens]) + if test $ac_cv_func_futimens = no; then + HAVE_FUTIMENS=0 + else + AC_CACHE_CHECK([whether futimens works], + [gl_cv_func_futimens_works], + [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ +#include +#include +#include +#include +]], [[struct timespec ts[2]; + int fd = creat ("conftest.file", 0600); + struct stat st; + if (fd < 0) return 1; + ts[0].tv_sec = 1; + ts[0].tv_nsec = UTIME_OMIT; + ts[1].tv_sec = 1; + ts[1].tv_nsec = UTIME_NOW; + errno = 0; + if (futimens (AT_FDCWD, NULL) == 0) return 2; + if (errno != EBADF) return 3; + if (futimens (fd, ts)) return 4; + sleep (1); + ts[0].tv_nsec = UTIME_NOW; + ts[1].tv_nsec = UTIME_OMIT; + if (futimens (fd, ts)) return 5; + if (fstat (fd, &st)) return 6; + if (st.st_ctime < st.st_atime) return 7; + ]])], + [gl_cv_func_futimens_works=yes], + [gl_cv_func_futimens_works=no], + [case "$host_os" in + # Guess no on glibc systems. + *-gnu* | gnu*) gl_cv_func_futimens_works="guessing no" ;; + # Guess no on musl systems. + *-musl*) gl_cv_func_futimens_works="guessing no" ;; + # Guess yes otherwise. + *) gl_cv_func_futimens_works="guessing yes" ;; + esac + ]) + rm -f conftest.file]) + case "$gl_cv_func_futimens_works" in + *yes) ;; + *) + REPLACE_FUTIMENS=1 + ;; + esac + fi +]) diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4 index 1465ce811b8..3228aa42b57 100644 --- a/m4/gnulib-comp.m4 +++ b/m4/gnulib-comp.m4 @@ -95,6 +95,7 @@ AC_DEFUN([gl_EARLY], # Code from module fstatat: # Code from module fsusage: # Code from module fsync: + # Code from module futimens: # Code from module getdtablesize: # Code from module getgroups: # Code from module getloadavg: @@ -179,6 +180,7 @@ AC_DEFUN([gl_EARLY], # Code from module unlocked-io: # Code from module update-copyright: # Code from module utimens: + # Code from module utimensat: # Code from module vararrays: # Code from module verify: # Code from module vla: @@ -297,6 +299,11 @@ AC_DEFUN([gl_INIT], gl_PREREQ_FSYNC fi gl_UNISTD_MODULE_INDICATOR([fsync]) + gl_FUNC_FUTIMENS + if test $HAVE_FUTIMENS = 0 || test $REPLACE_FUTIMENS = 1; then + AC_LIBOBJ([futimens]) + fi + gl_SYS_STAT_MODULE_INDICATOR([futimens]) gl_GETLOADAVG if test $HAVE_GETLOADAVG = 0; then AC_LIBOBJ([getloadavg]) @@ -466,7 +473,11 @@ AC_DEFUN([gl_INIT], gl_TIMESPEC gl_UNISTD_H gl_FUNC_GLIBC_UNLOCKED_IO - gl_UTIMENS + gl_FUNC_UTIMENSAT + if test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1; then + AC_LIBOBJ([utimensat]) + fi + gl_SYS_STAT_MODULE_INDICATOR([utimensat]) AC_C_VARARRAYS gl_gnulib_enabled_260941c0e5dc67ec9e87d1fb321c300b=false gl_gnulib_enabled_cloexec=false @@ -485,6 +496,7 @@ AC_DEFUN([gl_INIT], gl_gnulib_enabled_03e0aaad4cb89ca757653bd367a6ccb7=false gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c=false gl_gnulib_enabled_strtoll=false + gl_gnulib_enabled_utimens=false gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec=false func_gl_gnulib_m4code_260941c0e5dc67ec9e87d1fb321c300b () { @@ -663,6 +675,13 @@ AC_DEFUN([gl_INIT], gl_gnulib_enabled_strtoll=true fi } + func_gl_gnulib_m4code_utimens () + { + if ! $gl_gnulib_enabled_utimens; then + gl_UTIMENS + gl_gnulib_enabled_utimens=true + fi + } func_gl_gnulib_m4code_682e609604ccaac6be382e4ee3a4eaec () { if ! $gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec; then @@ -705,6 +724,9 @@ AC_DEFUN([gl_INIT], if test $HAVE_FSTATAT = 0 || test $REPLACE_FSTATAT = 1; then func_gl_gnulib_m4code_03e0aaad4cb89ca757653bd367a6ccb7 fi + if test $HAVE_FUTIMENS = 0 || test $REPLACE_FUTIMENS = 1; then + func_gl_gnulib_m4code_utimens + fi if test $REPLACE_GETOPT = 1; then func_gl_gnulib_m4code_be453cec5eecf5731a274f2de7f2db36 fi @@ -729,6 +751,15 @@ AC_DEFUN([gl_INIT], if test $HAVE_TIMEGM = 0 || test $REPLACE_TIMEGM = 1; then func_gl_gnulib_m4code_5264294aa0a5557541b53c8c741f7f31 fi + if test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1; then + func_gl_gnulib_m4code_260941c0e5dc67ec9e87d1fb321c300b + fi + if test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1; then + func_gl_gnulib_m4code_03e0aaad4cb89ca757653bd367a6ccb7 + fi + if test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1; then + func_gl_gnulib_m4code_utimens + fi m4_pattern_allow([^gl_GNULIB_ENABLED_]) AM_CONDITIONAL([gl_GNULIB_ENABLED_260941c0e5dc67ec9e87d1fb321c300b], [$gl_gnulib_enabled_260941c0e5dc67ec9e87d1fb321c300b]) AM_CONDITIONAL([gl_GNULIB_ENABLED_cloexec], [$gl_gnulib_enabled_cloexec]) @@ -747,6 +778,7 @@ AC_DEFUN([gl_INIT], AM_CONDITIONAL([gl_GNULIB_ENABLED_03e0aaad4cb89ca757653bd367a6ccb7], [$gl_gnulib_enabled_03e0aaad4cb89ca757653bd367a6ccb7]) AM_CONDITIONAL([gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c], [$gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c]) AM_CONDITIONAL([gl_GNULIB_ENABLED_strtoll], [$gl_gnulib_enabled_strtoll]) + AM_CONDITIONAL([gl_GNULIB_ENABLED_utimens], [$gl_gnulib_enabled_utimens]) AM_CONDITIONAL([gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec], [$gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec]) # End of code from modules m4_ifval(gl_LIBSOURCES_LIST, [ @@ -956,6 +988,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/fsync.c lib/ftoastr.c lib/ftoastr.h + lib/futimens.c lib/get-permissions.c lib/getdtablesize.c lib/getgroups.c @@ -1063,6 +1096,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/unlocked-io.h lib/utimens.c lib/utimens.h + lib/utimensat.c lib/verify.h lib/vla.h lib/warn-on-use.h @@ -1103,6 +1137,7 @@ AC_DEFUN([gl_FILE_LIST], [ m4/fstatat.m4 m4/fsusage.m4 m4/fsync.m4 + m4/futimens.m4 m4/getdtablesize.m4 m4/getgroups.m4 m4/getloadavg.m4 @@ -1184,6 +1219,7 @@ AC_DEFUN([gl_FILE_LIST], [ m4/unistd_h.m4 m4/unlocked-io.m4 m4/utimens.m4 + m4/utimensat.m4 m4/utimes.m4 m4/vararrays.m4 m4/warn-on-use.m4 diff --git a/m4/utimensat.m4 b/m4/utimensat.m4 new file mode 100644 index 00000000000..2bc1bfebb5d --- /dev/null +++ b/m4/utimensat.m4 @@ -0,0 +1,69 @@ +# serial 6 +# See if we need to provide utimensat replacement. + +dnl Copyright (C) 2009-2020 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# Written by Eric Blake. + +AC_DEFUN([gl_FUNC_UTIMENSAT], +[ + AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) + AC_CHECK_FUNCS_ONCE([utimensat]) + if test $ac_cv_func_utimensat = no; then + HAVE_UTIMENSAT=0 + else + AC_CACHE_CHECK([whether utimensat works], + [gl_cv_func_utimensat_works], + [AC_RUN_IFELSE( + [AC_LANG_PROGRAM([[ +#include +#include +#include +]], [[int result = 0; + const char *f = "conftest.file"; + if (close (creat (f, 0600))) + return 1; + /* Test whether the AT_SYMLINK_NOFOLLOW flag is supported. */ + { + if (utimensat (AT_FDCWD, f, NULL, AT_SYMLINK_NOFOLLOW)) + result |= 2; + } + /* Test whether UTIME_NOW and UTIME_OMIT work. */ + { + struct timespec ts[2]; + ts[0].tv_sec = 1; + ts[0].tv_nsec = UTIME_OMIT; + ts[1].tv_sec = 1; + ts[1].tv_nsec = UTIME_NOW; + if (utimensat (AT_FDCWD, f, ts, 0)) + result |= 4; + } + sleep (1); + { + struct stat st; + struct timespec ts[2]; + ts[0].tv_sec = 1; + ts[0].tv_nsec = UTIME_NOW; + ts[1].tv_sec = 1; + ts[1].tv_nsec = UTIME_OMIT; + if (utimensat (AT_FDCWD, f, ts, 0)) + result |= 8; + if (stat (f, &st)) + result |= 16; + else if (st.st_ctime < st.st_atime) + result |= 32; + } + return result; + ]])], + [gl_cv_func_utimensat_works=yes], + [gl_cv_func_utimensat_works=no], + [gl_cv_func_utimensat_works="guessing yes"])]) + if test "$gl_cv_func_utimensat_works" = no; then + REPLACE_UTIMENSAT=1 + fi + fi +]) diff --git a/src/fileio.c b/src/fileio.c index 2532f5233c4..82fd7989206 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -2253,9 +2253,8 @@ permissions. */) if (!NILP (keep_time)) { - struct timespec atime = get_stat_atime (&st); - struct timespec mtime = get_stat_mtime (&st); - if (set_file_times (ofd, SSDATA (encoded_newname), atime, mtime) != 0) + struct timespec ts[] = { get_stat_atime (&st), get_stat_mtime (&st) }; + if (futimens (ofd, ts) != 0) xsignal2 (Qfile_date_error, build_string ("Cannot set file date"), newname); } @@ -3430,39 +3429,41 @@ The value is an integer. */) } -DEFUN ("set-file-times", Fset_file_times, Sset_file_times, 1, 2, 0, +DEFUN ("set-file-times", Fset_file_times, Sset_file_times, 1, 3, 0, doc: /* Set times of file FILENAME to TIMESTAMP. -Set both access and modification times. -Return t on success, else nil. -Use the current time if TIMESTAMP is nil. TIMESTAMP is in the format of -`current-time'. */) - (Lisp_Object filename, Lisp_Object timestamp) +If optional FLAG is `nofollow', do not follow FILENAME if it is a +symbolic link. Set both access and modification times. Return t on +success, else nil. Use the current time if TIMESTAMP is nil. +TIMESTAMP is in the format of `current-time'. */) + (Lisp_Object filename, Lisp_Object timestamp, Lisp_Object flag) { - Lisp_Object absname, encoded_absname; - Lisp_Object handler; - struct timespec t = lisp_time_argument (timestamp); + int nofollow = symlink_nofollow_flag (flag); - absname = Fexpand_file_name (filename, BVAR (current_buffer, directory)); + struct timespec ts[2]; + if (!NILP (timestamp)) + ts[0] = ts[1] = lisp_time_argument (timestamp); + else + ts[0].tv_nsec = ts[1].tv_nsec = UTIME_NOW; /* If the file name has special constructs in it, call the corresponding file name handler. */ - handler = Ffind_file_name_handler (absname, Qset_file_times); + Lisp_Object + absname = Fexpand_file_name (filename, BVAR (current_buffer, directory)), + handler = Ffind_file_name_handler (absname, Qset_file_times); if (!NILP (handler)) - return call3 (handler, Qset_file_times, absname, timestamp); + return call4 (handler, Qset_file_times, absname, timestamp, flag); - encoded_absname = ENCODE_FILE (absname); + Lisp_Object encoded_absname = ENCODE_FILE (absname); - { - if (set_file_times (-1, SSDATA (encoded_absname), t, t) != 0) - { + if (utimensat (AT_FDCWD, SSDATA (encoded_absname), ts, nofollow) != 0) + { #ifdef MSDOS - /* Setting times on a directory always fails. */ - if (file_directory_p (encoded_absname)) - return Qnil; + /* Setting times on a directory always fails. */ + if (file_directory_p (encoded_absname)) + return Qnil; #endif - report_file_error ("Setting file times", absname); - } - } + report_file_error ("Setting file times", absname); + } return Qt; } diff --git a/src/sysdep.c b/src/sysdep.c index e8e8bbfb502..149d80f19ec 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -2752,21 +2752,6 @@ emacs_perror (char const *message) errno = err; } -/* Set the access and modification time stamps of FD (a.k.a. FILE) to be - ATIME and MTIME, respectively. - FD must be either negative -- in which case it is ignored -- - or a file descriptor that is open on FILE. - If FD is nonnegative, then FILE can be NULL. */ -int -set_file_times (int fd, const char *filename, - struct timespec atime, struct timespec mtime) -{ - struct timespec timespec[2]; - timespec[0] = atime; - timespec[1] = mtime; - return fdutimens (fd, filename, timespec); -} - /* Rename directory SRCFD's entry SRC to directory DSTFD's entry DST. This is like renameat except that it fails if DST already exists, or if this operation is not supported atomically. Return 0 if diff --git a/src/systime.h b/src/systime.h index 00ca4a1c58d..b59a3d1c690 100644 --- a/src/systime.h +++ b/src/systime.h @@ -67,9 +67,6 @@ timespec_valid_p (struct timespec t) return t.tv_nsec >= 0; } -/* defined in sysdep.c */ -extern int set_file_times (int, const char *, struct timespec, struct timespec); - /* defined in keyboard.c */ extern void set_waiting_for_input (struct timespec *); diff --git a/src/w32.c b/src/w32.c index cf1a3b37678..40f286ad6cf 100644 --- a/src/w32.c +++ b/src/w32.c @@ -3189,6 +3189,21 @@ fdutimens (int fd, char const *file, struct timespec const timespec[2]) } } +/* Set the access and modification time stamps of FD (a.k.a. FILE) to be + ATIME and MTIME, respectively. + FD must be either negative -- in which case it is ignored -- + or a file descriptor that is open on FILE. + If FD is nonnegative, then FILE can be NULL. */ +static int +set_file_times (int fd, const char *filename, + struct timespec atime, struct timespec mtime) +{ + struct timespec timespec[2]; + timespec[0] = atime; + timespec[1] = mtime; + return fdutimens (fd, filename, timespec); +} + /* ------------------------------------------------------------------------- */ /* IO support and wrapper functions for the Windows API. */ diff --git a/test/lisp/filenotify-tests.el b/test/lisp/filenotify-tests.el index 39156fbb5dc..a184fabb9ff 100644 --- a/test/lisp/filenotify-tests.el +++ b/test/lisp/filenotify-tests.el @@ -771,9 +771,9 @@ delivered." (copy-file file-notify--test-tmpfile file-notify--test-tmpfile1) ;; The next two events shall not be visible. (file-notify--test-read-event) - (set-file-modes file-notify--test-tmpfile 000) + (set-file-modes file-notify--test-tmpfile 000 'nofollow) (file-notify--test-read-event) - (set-file-times file-notify--test-tmpfile '(0 0)) + (set-file-times file-notify--test-tmpfile '(0 0) 'nofollow) (file-notify--test-read-event) (delete-directory file-notify--test-tmpdir 'recursive)) (file-notify-rm-watch file-notify--test-desc) @@ -864,9 +864,9 @@ delivered." (write-region "any text" nil file-notify--test-tmpfile nil 'no-message) (file-notify--test-read-event) - (set-file-modes file-notify--test-tmpfile 000) + (set-file-modes file-notify--test-tmpfile 000 'nofollow) (file-notify--test-read-event) - (set-file-times file-notify--test-tmpfile '(0 0)) + (set-file-times file-notify--test-tmpfile '(0 0) 'nofollow) (file-notify--test-read-event) (delete-file file-notify--test-tmpfile)) (file-notify-rm-watch file-notify--test-desc) diff --git a/test/lisp/files-tests.el b/test/lisp/files-tests.el index ac56a7732f2..05d9ceebf1d 100644 --- a/test/lisp/files-tests.el +++ b/test/lisp/files-tests.el @@ -1003,9 +1003,9 @@ unquoted file names." (ert-deftest files-tests-file-name-non-special-set-file-times () (files-tests--with-temp-non-special (tmpfile nospecial) - (set-file-times nospecial)) + (set-file-times nospecial nil 'nofollow)) (files-tests--with-temp-non-special-and-file-name-handler (tmpfile nospecial) - (should-error (set-file-times nospecial)))) + (should-error (set-file-times nospecial nil 'nofollow)))) (ert-deftest files-tests-file-name-non-special-set-visited-file-modtime () (files-tests--with-temp-non-special (tmpfile nospecial) diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index be0f418c943..dcf376e70b4 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el @@ -3743,7 +3743,8 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." (file-attributes tmp-name1)))) ;; Skip the test, if the remote handler is not able to set ;; the correct time. - (skip-unless (set-file-times tmp-name1 (seconds-to-time 1))) + (skip-unless (set-file-times tmp-name1 (seconds-to-time 1) + 'nofollow)) ;; Dumb remote shells without perl(1) or stat(1) are not ;; able to return the date correctly. They say "don't know". (unless (tramp-compat-time-equal-p From 6ce20525585cc9c4c865cfdd32b43ab268bb17ec Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 7 Mar 2020 12:16:44 -0800 Subject: [PATCH 83/93] Skip filenotify tests on hydra.nixos.org They frequently hang for hours. * test/lisp/filenotify-tests.el (file-notify--test-remote-enabled-checked): Default to off on hydra. --- test/lisp/filenotify-tests.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/lisp/filenotify-tests.el b/test/lisp/filenotify-tests.el index a184fabb9ff..42d86ee1538 100644 --- a/test/lisp/filenotify-tests.el +++ b/test/lisp/filenotify-tests.el @@ -219,7 +219,8 @@ remote case we return always t." (or file-notify--library (file-remote-p temporary-file-directory))) -(defvar file-notify--test-remote-enabled-checked nil +(defvar file-notify--test-remote-enabled-checked + (if (getenv "EMACS_HYDRA_CI") '(t . nil)) "Cached result of `file-notify--test-remote-enabled'. If the function did run, the value is a cons cell, the `cdr' being the result.") From 3cbf4cb79600ade39a186f31448e56e0e6fdd364 Mon Sep 17 00:00:00 2001 From: Andrew Eggenberger Date: Thu, 27 Feb 2020 21:43:47 -0600 Subject: [PATCH 84/93] Eliminate use of cl-concatenate in 'seq' package Fixes (Bug#39761) by making cl-extra dependent on seq rather than vice versa. * lisp/emacs-lisp/seq.el (seq-concatenate): Move cl-concatenate's code here instead of calling it. * lisp/emacs-lisp/cl-extra.el (cl-concatenate): Use cl-concatenate. Copyright-paperwork-exempt: yes --- lisp/emacs-lisp/cl-extra.el | 6 +----- lisp/emacs-lisp/seq.el | 6 +++++- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el index e3dabdfcef2..e9bfe8df5f2 100644 --- a/lisp/emacs-lisp/cl-extra.el +++ b/lisp/emacs-lisp/cl-extra.el @@ -556,11 +556,7 @@ too large if positive or too small if negative)." (defun cl-concatenate (type &rest sequences) "Concatenate, into a sequence of type TYPE, the argument SEQUENCEs. \n(fn TYPE SEQUENCE...)" - (pcase type - ('vector (apply #'vconcat sequences)) - ('string (apply #'concat sequences)) - ('list (apply #'append (append sequences '(nil)))) - (_ (error "Not a sequence type name: %S" type)))) + (seq-concatenate type sequences)) ;;; List functions. diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el index 0b946dd7365..629a7a5fb30 100644 --- a/lisp/emacs-lisp/seq.el +++ b/lisp/emacs-lisp/seq.el @@ -285,7 +285,11 @@ sorted. FUNCTION must be a function of one argument." TYPE must be one of following symbols: vector, string or list. \n(fn TYPE SEQUENCE...)" - (apply #'cl-concatenate type (seq-map #'seq-into-sequence sequences))) + (pcase type + ('vector (apply #'vconcat sequences)) + ('string (apply #'concat sequences)) + ('list (apply #'append (append sequences '(nil)))) + (_ (error "Not a sequence type name: %S" type)))) (cl-defgeneric seq-into-sequence (sequence) "Convert SEQUENCE into a sequence. From b16ba4041db928826df5f58e9bfac9fb38208145 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sat, 7 Mar 2020 18:45:23 -0500 Subject: [PATCH 85/93] ; lisp/emacs-lisp/seq.el: Explain why we don't use cl-lib here --- lisp/emacs-lisp/seq.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el index 629a7a5fb30..e3037a71901 100644 --- a/lisp/emacs-lisp/seq.el +++ b/lisp/emacs-lisp/seq.el @@ -58,6 +58,10 @@ (eval-when-compile (require 'cl-generic)) +;; We used to use some sequence functions from cl-lib, but this +;; dependency was swapped around so that it will be easier to make +;; seq.el preloaded in the future. See also Bug#39761#26. + (defmacro seq-doseq (spec &rest body) "Loop over a sequence. Evaluate BODY with VAR bound to each element of SEQUENCE, in turn. From e4fb95fa18072cedb021a82f7aa0e79fa6ca387a Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Sat, 7 Mar 2020 23:28:12 -0500 Subject: [PATCH 86/93] * lisp/emacs-lisp/bytecomp.el: Drop warning for loading into Emacs<23 Stash the major version of the compiling Emacs such that the loading Emacs can later detect when loading a file compiled by a too-new Emacs. (byte-compile-fix-header): Remove. (byte-compile-from-buffer): Don't call it any more. (byte-compile-insert-header): Stash the emacs-major-version in it. Don't leave space for `byte-compile-fix-header`. --- lisp/emacs-lisp/bytecomp.el | 68 ++++++++----------------------------- 1 file changed, 15 insertions(+), 53 deletions(-) diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 63348456a15..4f01918bdb9 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -2140,50 +2140,9 @@ With argument ARG, insert value in current buffer after the form." ;; Make warnings about unresolved functions ;; give the end of the file as their position. (setq byte-compile-last-position (point-max)) - (byte-compile-warn-about-unresolved-functions)) - ;; Fix up the header at the front of the output - ;; if the buffer contains multibyte characters. - (and byte-compile-current-file - (with-current-buffer byte-compile--outbuffer - (byte-compile-fix-header byte-compile-current-file)))) + (byte-compile-warn-about-unresolved-functions))) byte-compile--outbuffer))) -(defun byte-compile-fix-header (_filename) - "If the current buffer has any multibyte characters, insert a version test." - (when (< (point-max) (position-bytes (point-max))) - (goto-char (point-min)) - ;; Find the comment that describes the version condition. - (when (search-forward "\n;;; This file does not contain utf-8" nil t) - (narrow-to-region (line-beginning-position) (point-max)) - ;; Find the first line of ballast semicolons. - (search-forward ";;;;;;;;;;") - (beginning-of-line) - (narrow-to-region (point-min) (point)) - (let ((old-header-end (point)) - (minimum-version "23") - delta) - (delete-region (point-min) (point-max)) - (insert - ";;; This file contains utf-8 non-ASCII characters,\n" - ";;; and so cannot be loaded into Emacs 22 or earlier.\n" - ;; Have to check if emacs-version is bound so that this works - ;; in files loaded early in loadup.el. - "(and (boundp 'emacs-version)\n" - ;; If there is a name at the end of emacs-version, - ;; don't try to check the version number. - " (< (aref emacs-version (1- (length emacs-version))) ?A)\n" - (format " (string-lessp emacs-version \"%s\")\n" minimum-version) - ;; Because the header must fit in a fixed width, we cannot - ;; insert arbitrary-length file names (Bug#11585). - " (error \"`%s' was compiled for " - (format "Emacs %s or later\" #$))\n\n" minimum-version)) - ;; Now compensate for any change in size, to make sure all - ;; positions in the file remain valid. - (setq delta (- (point-max) old-header-end)) - (goto-char (point-max)) - (widen) - (delete-char delta))))) - (defun byte-compile-insert-header (_filename outbuffer) "Insert a header at the start of OUTBUFFER. Call from the source buffer." @@ -2201,7 +2160,19 @@ Call from the source buffer." ;; 0 string ;ELC GNU Emacs Lisp compiled file, ;; >4 byte x version %d (insert - ";ELC" 23 "\000\000\000\n" + ";ELC" + (let ((version + (if (zerop emacs-minor-version) + ;; Let's allow silently loading into Emacs-27 + ;; files compiled with Emacs-28.0.NN since the two can + ;; be almost identical (e.g. right after cutting the + ;; release branch) and people running the development + ;; branch can be presumed to know that it's risky anyway. + (1- emacs-major-version) emacs-major-version))) + ;; Make sure the version is a plain byte that doesn't end the comment! + (cl-assert (and (> version 13) (< version 128))) + version) + "\000\000\000\n" ";;; Compiled\n" ";;; in Emacs version " emacs-version "\n" ";;; with" @@ -2213,16 +2184,7 @@ Call from the source buffer." ".\n" (if dynamic ";;; Function definitions are lazy-loaded.\n" "") - "\n" - ;; Note that byte-compile-fix-header may change this. - ";;; This file does not contain utf-8 non-ASCII characters,\n" - ";;; and so can be loaded in Emacs versions earlier than 23.\n\n" - ;; Insert semicolons as ballast, so that byte-compile-fix-header - ;; can delete them so as to keep the buffer positions - ;; constant for the actual compiled code. - ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n" - ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n" - ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\n\n")))) + "\n\n")))) (defun byte-compile-output-file-form (form) ;; Write the given form to the output buffer, being careful of docstrings From 0a3682a566d5563e3d57defe49359cee236e0274 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 8 Mar 2020 00:16:17 -0800 Subject: [PATCH 87/93] * src/timefns.c: Add comments. --- src/timefns.c | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/timefns.c b/src/timefns.c index a08d3b816ff..8e2bb214ed8 100644 --- a/src/timefns.c +++ b/src/timefns.c @@ -491,11 +491,14 @@ timespec_mpz (struct timespec t) static Lisp_Object timespec_ticks (struct timespec t) { + /* For speed, use intmax_t arithmetic if it will do. */ intmax_t accum; if (FASTER_TIMEFNS && !INT_MULTIPLY_WRAPV (t.tv_sec, TIMESPEC_HZ, &accum) && !INT_ADD_WRAPV (t.tv_nsec, accum, &accum)) return make_int (accum); + + /* Fall back on bignum arithmetic. */ timespec_mpz (t); return make_integer_mpz (); } @@ -505,12 +508,17 @@ timespec_ticks (struct timespec t) static Lisp_Object lisp_time_hz_ticks (struct lisp_time t, Lisp_Object hz) { + /* For speed, just return TICKS if T is (TICKS . HZ). */ if (FASTER_TIMEFNS && EQ (t.hz, hz)) return t.ticks; + + /* Check HZ for validity. */ if (FIXNUMP (hz)) { if (XFIXNUM (hz) <= 0) invalid_hz (hz); + + /* For speed, use intmax_t arithmetic if it will do. */ intmax_t ticks; if (FASTER_TIMEFNS && FIXNUMP (t.ticks) && FIXNUMP (t.hz) && !INT_MULTIPLY_WRAPV (XFIXNUM (t.ticks), XFIXNUM (hz), &ticks)) @@ -520,6 +528,7 @@ lisp_time_hz_ticks (struct lisp_time t, Lisp_Object hz) else if (! (BIGNUMP (hz) && 0 < mpz_sgn (*xbignum_val (hz)))) invalid_hz (hz); + /* Fall back on bignum arithmetic. */ mpz_mul (mpz[0], *bignum_integer (&mpz[0], t.ticks), *bignum_integer (&mpz[1], hz)); @@ -533,9 +542,13 @@ lisp_time_seconds (struct lisp_time t) { if (!FASTER_TIMEFNS) return lisp_time_hz_ticks (t, make_fixnum (1)); + + /* For speed, use EMACS_INT arithmetic if it will do. */ if (FIXNUMP (t.ticks) && FIXNUMP (t.hz)) return make_fixnum (XFIXNUM (t.ticks) / XFIXNUM (t.hz) - (XFIXNUM (t.ticks) % XFIXNUM (t.hz) < 0)); + + /* For speed, inline what lisp_time_hz_ticks would do. */ mpz_fdiv_q (mpz[0], *bignum_integer (&mpz[0], t.ticks), *bignum_integer (&mpz[1], t.hz)); @@ -1116,21 +1129,22 @@ time_arith (Lisp_Object a, Lisp_Object b, bool subtract) (subtract ? mpz_submul : mpz_addmul) (*iticks, *fa, *nb); /* Normalize iticks/ihz by dividing both numerator and - denominator by ig = gcd (iticks, ihz). However, if that - would cause the denominator to become less than hzmin, - rescale the denominator upwards from its ordinary value by - multiplying numerator and denominator so that the denominator - becomes at least hzmin. This rescaling avoids returning a - timestamp that is less precise than both a and b, or a - timestamp that looks obsolete when that might be a problem. */ + denominator by ig = gcd (iticks, ihz). For speed, though, + skip this division if ihz = 1. */ mpz_t *ig = &mpz[3]; mpz_gcd (*ig, *iticks, *ihz); - if (!FASTER_TIMEFNS || mpz_cmp_ui (*ig, 1) > 0) { mpz_divexact (*iticks, *iticks, *ig); mpz_divexact (*ihz, *ihz, *ig); + /* However, if dividing the denominator by ig would cause the + denominator to become less than hzmin, rescale the denominator + upwards by multiplying the normalized numerator and denominator + so that the resulting denominator becomes at least hzmin. + This rescaling avoids returning a timestamp that is less precise + than both a and b, or a timestamp that looks obsolete when that + might be a problem. */ if (!FASTER_TIMEFNS || mpz_cmp (*ihz, *hzmin) < 0) { /* Rescale straightforwardly. Although this might not @@ -1144,6 +1158,8 @@ time_arith (Lisp_Object a, Lisp_Object b, bool subtract) mpz_mul (*ihz, *ihz, *rescale); } } + + /* mpz[0] and iticks now correspond to the (HZ . TICKS) pair. */ hz = make_integer_mpz (); mpz_swap (mpz[0], *iticks); ticks = make_integer_mpz (); From 0a3f8da6e1a56ada409cf1677ac40fcc75a8a33c Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 8 Mar 2020 00:25:15 -0800 Subject: [PATCH 88/93] Simplify run-at-time * lisp/emacs-lisp/timer.el (run-at-time): Remove unnecessary test (Bug#39944). --- lisp/emacs-lisp/timer.el | 3 --- 1 file changed, 3 deletions(-) diff --git a/lisp/emacs-lisp/timer.el b/lisp/emacs-lisp/timer.el index 9eb8feed0f1..61fd05cbb80 100644 --- a/lisp/emacs-lisp/timer.el +++ b/lisp/emacs-lisp/timer.el @@ -378,9 +378,6 @@ This function returns a timer object which you can use in (decoded-time-year now) (decoded-time-zone now))))))) - (or (time-equal-p time time) - (error "Invalid time format")) - (let ((timer (timer-create))) (timer-set-time timer time repeat) (timer-set-function timer function args) From 66bc47d12aba72ff738a9f5575e0b93eefc641ba Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sun, 8 Mar 2020 17:00:10 +0200 Subject: [PATCH 89/93] Fix the MinGW build as followup to recent "nofollow" changes * src/w32.c (fdutimens): Call utimensat instead of utime. (set_file_times): Function deleted. (convert_from_timespec): Renamed from convert_from_time_t and modified to accept 'struct timespec' argument instead of 'time_t'. (utimensat): Renamed from utime and modified to accept 'struct timespec [2]' argument and an additional argument FLAG. Emulate Posix 'utimensat'. Call 'convert_from_timespec'. (w32_copy_file): Call 'utimensat' instead of 'set_file_times'. * src/fileio.c (Fcopy_file) [WINDOWSNT]: Make the error message be identical to that on Posix platforms. * nt/inc/sys/stat.h (utimensat): Provide prototype. * nt/mingw-cfg.site (ac_cv_func_futimens) (gl_cv_func_futimens_works, ac_cv_func_utimensat) (gl_cv_func_utimensat_works): Override Gnulib tests. * nt/gnulib-cfg.mk (OMIT_GNULIB_MODULE_futimens) (OMIT_GNULIB_MODULE_utimensat): Disable these Gnulib modules. --- nt/gnulib-cfg.mk | 2 + nt/inc/sys/stat.h | 5 ++ nt/mingw-cfg.site | 4 ++ src/fileio.c | 2 +- src/w32.c | 121 +++++++++++++++++++++++++++++----------------- 5 files changed, 88 insertions(+), 46 deletions(-) diff --git a/nt/gnulib-cfg.mk b/nt/gnulib-cfg.mk index 1d120a973d1..e3b945720d6 100644 --- a/nt/gnulib-cfg.mk +++ b/nt/gnulib-cfg.mk @@ -65,3 +65,5 @@ OMIT_GNULIB_MODULE_unistd = true OMIT_GNULIB_MODULE_canonicalize-lgpl = true OMIT_GNULIB_MODULE_fchmodat = true OMIT_GNULIB_MODULE_lchmod = true +OMIT_GNULIB_MODULE_futimens = true +OMIT_GNULIB_MODULE_utimensat = true diff --git a/nt/inc/sys/stat.h b/nt/inc/sys/stat.h index 7bf780dbaa2..f58d5ab6573 100644 --- a/nt/inc/sys/stat.h +++ b/nt/inc/sys/stat.h @@ -164,4 +164,9 @@ int __cdecl __MINGW_NOTHROW fstatat (int, char const *, struct stat *, int); int __cdecl __MINGW_NOTHROW chmod (const char*, int); +/* Provide prototypes of library functions that are emulated on w32 + and whose prototypes are usually found in sys/stat.h on POSIX + platforms. */ +extern int utimensat (int, const char *, struct timespec const[2], int); + #endif /* INC_SYS_STAT_H_ */ diff --git a/nt/mingw-cfg.site b/nt/mingw-cfg.site index 5bd5b834634..2271eef98d6 100644 --- a/nt/mingw-cfg.site +++ b/nt/mingw-cfg.site @@ -105,6 +105,10 @@ gl_cv_func_fstatat_zero_flag=yes ac_cv_func_fchmodat=yes gl_cv_func_fchmodat_works="not-needed-so-yes" ac_cv_func_lchmod=yes +ac_cv_func_futimens=not-needed +gl_cv_func_futimens_works="not-needed-so-yes" +ac_cv_func_utimensat=yes +gl_cv_func_utimensat_works=yes # Aliased to _commit in ms-w32.h ac_cv_func_fsync=yes ac_cv_func_fdatasync=yes diff --git a/src/fileio.c b/src/fileio.c index 82fd7989206..ffe79559a3f 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -2077,7 +2077,7 @@ permissions. */) report_file_error ("Copying permissions from", file); case -3: xsignal2 (Qfile_date_error, - build_string ("Resetting file times"), newname); + build_string ("Cannot set file date"), newname); case -4: report_file_error ("Copying permissions to", newname); } diff --git a/src/w32.c b/src/w32.c index 40f286ad6cf..698e10e234e 100644 --- a/src/w32.c +++ b/src/w32.c @@ -3178,33 +3178,9 @@ fdutimens (int fd, char const *file, struct timespec const timespec[2]) return _futime (fd, &_ut); } else - { - struct utimbuf ut; - - ut.actime = timespec[0].tv_sec; - ut.modtime = timespec[1].tv_sec; - /* Call 'utime', which is implemented below, not the MS library - function, which fails on directories. */ - return utime (file, &ut); - } + return utimensat (fd, file, timespec, 0); } -/* Set the access and modification time stamps of FD (a.k.a. FILE) to be - ATIME and MTIME, respectively. - FD must be either negative -- in which case it is ignored -- - or a file descriptor that is open on FILE. - If FD is nonnegative, then FILE can be NULL. */ -static int -set_file_times (int fd, const char *filename, - struct timespec atime, struct timespec mtime) -{ - struct timespec timespec[2]; - timespec[0] = atime; - timespec[1] = mtime; - return fdutimens (fd, filename, timespec); -} - - /* ------------------------------------------------------------------------- */ /* IO support and wrapper functions for the Windows API. */ /* ------------------------------------------------------------------------- */ @@ -4985,7 +4961,7 @@ convert_time (FILETIME ft) } static void -convert_from_time_t (time_t time, FILETIME * pft) +convert_from_timespec (struct timespec time, FILETIME * pft) { ULARGE_INTEGER tmp; @@ -4996,7 +4972,8 @@ convert_from_time_t (time_t time, FILETIME * pft) } /* time in 100ns units since 1-Jan-1601 */ - tmp.QuadPart = (ULONGLONG) time * 10000000L + utc_base; + tmp.QuadPart = + (ULONGLONG) time.tv_sec * 10000000L + time.tv_nsec / 100 + utc_base; pft->dwHighDateTime = tmp.HighPart; pft->dwLowDateTime = tmp.LowPart; } @@ -5663,8 +5640,8 @@ fstatat (int fd, char const *name, struct stat *st, int flags) return stat_worker (name, st, ! (flags & AT_SYMLINK_NOFOLLOW)); } -/* Provide fstat and utime as well as stat for consistent handling of - file timestamps. */ +/* Provide fstat and utimensat as well as stat for consistent handling + of file timestamps. */ int fstat (int desc, struct stat * buf) { @@ -5775,23 +5752,65 @@ fstat (int desc, struct stat * buf) return 0; } -/* A version of 'utime' which handles directories as well as - files. */ +/* Emulate utimensat. */ int -utime (const char *name, struct utimbuf *times) +utimensat (int fd, const char *name, const struct timespec times[2], int flag) { - struct utimbuf deftime; + struct timespec ltimes[2]; HANDLE fh; FILETIME mtime; FILETIME atime; + DWORD flags_and_attrs = FILE_FLAG_BACKUP_SEMANTICS; + + /* Rely on a hack: an open directory is modeled as file descriptor 0. + This is good enough for the current usage in Emacs, but is fragile. + + FIXME: Add proper support for utimensat. + Gnulib does this and can serve as a model. */ + char fullname[MAX_UTF8_PATH]; + + if (fd != AT_FDCWD) + { + char lastc = dir_pathname[strlen (dir_pathname) - 1]; + + if (_snprintf (fullname, sizeof fullname, "%s%s%s", + dir_pathname, IS_DIRECTORY_SEP (lastc) ? "" : "/", name) + < 0) + { + errno = ENAMETOOLONG; + return -1; + } + name = fullname; + } if (times == NULL) { - deftime.modtime = deftime.actime = time (NULL); - times = &deftime; + memset (ltimes, 0, sizeof (ltimes)); + ltimes[0] = ltimes[1] = current_timespec (); + } + else + { + if (times[0].tv_nsec == UTIME_OMIT && times[1].tv_nsec == UTIME_OMIT) + return 0; /* nothing to do */ + if ((times[0].tv_nsec != UTIME_NOW && times[0].tv_nsec != UTIME_OMIT + && !(0 <= times[0].tv_nsec && times[0].tv_nsec < 1000000000)) + || (times[1].tv_nsec != UTIME_NOW && times[1].tv_nsec != UTIME_OMIT + && !(0 <= times[1].tv_nsec && times[1].tv_nsec < 1000000000))) + { + errno = EINVAL; /* reject invalid timespec values */ + return -1; + } + + memcpy (ltimes, times, sizeof (ltimes)); + if (ltimes[0].tv_nsec == UTIME_NOW) + ltimes[0] = current_timespec (); + if (ltimes[1].tv_nsec == UTIME_NOW) + ltimes[1] = current_timespec (); } + if (flag == AT_SYMLINK_NOFOLLOW) + flags_and_attrs |= FILE_FLAG_OPEN_REPARSE_POINT; if (w32_unicode_filenames) { wchar_t name_utf16[MAX_PATH]; @@ -5805,7 +5824,7 @@ utime (const char *name, struct utimbuf *times) allows other processes to delete files inside it, while we have the directory open. */ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, - 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); + 0, OPEN_EXISTING, flags_and_attrs, NULL); } else { @@ -5816,13 +5835,26 @@ utime (const char *name, struct utimbuf *times) fh = CreateFileA (name_ansi, FILE_WRITE_ATTRIBUTES, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, - 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); + 0, OPEN_EXISTING, flags_and_attrs, NULL); } if (fh != INVALID_HANDLE_VALUE) { - convert_from_time_t (times->actime, &atime); - convert_from_time_t (times->modtime, &mtime); - if (!SetFileTime (fh, NULL, &atime, &mtime)) + FILETIME *patime, *pmtime; + if (ltimes[0].tv_nsec == UTIME_OMIT) + patime = NULL; + else + { + convert_from_timespec (ltimes[0], &atime); + patime = &atime; + } + if (ltimes[1].tv_nsec == UTIME_OMIT) + pmtime = NULL; + else + { + convert_from_timespec (ltimes[1], &mtime); + pmtime = &mtime; + } + if (!SetFileTime (fh, NULL, patime, pmtime)) { CloseHandle (fh); errno = EACCES; @@ -6741,16 +6773,16 @@ w32_copy_file (const char *from, const char *to, FIXME? */ else if (!keep_time) { - struct timespec now; + struct timespec tnow[2]; DWORD attributes; + tnow[0] = tnow[1] = current_timespec (); if (w32_unicode_filenames) { /* Ensure file is writable while its times are set. */ attributes = GetFileAttributesW (to_w); SetFileAttributesW (to_w, attributes & ~FILE_ATTRIBUTE_READONLY); - now = current_timespec (); - if (set_file_times (-1, to, now, now)) + if (utimensat (AT_FDCWD, to, tnow, 0)) { /* Restore original attributes. */ SetFileAttributesW (to_w, attributes); @@ -6765,8 +6797,7 @@ w32_copy_file (const char *from, const char *to, { attributes = GetFileAttributesA (to_a); SetFileAttributesA (to_a, attributes & ~FILE_ATTRIBUTE_READONLY); - now = current_timespec (); - if (set_file_times (-1, to, now, now)) + if (utimensat (AT_FDCWD, to, tnow, 0)) { SetFileAttributesA (to_a, attributes); if (acl) From 35a13fca32c3371ca25d87f7447b4bd4f65de710 Mon Sep 17 00:00:00 2001 From: Alan Mackenzie Date: Sun, 8 Mar 2020 16:21:15 +0000 Subject: [PATCH 90/93] CC Mode: allow specified directives (e.g. pragma) to be indented as statements * lisp/progmodes/cc-cmds.el (c-align-cpp-indent-to-body) (c-cpp-indent-to-body-flag, c-electric-pragma) (c-add-indent-to-body-to-abbrev-table, c-clear-stale-indent-to-body-abbrevs) (c-toggle-cpp-indent-to-body): New functions and variables. * lisp/progmodes/cc-langs.el (c-std-abbrev-keywords): New lang const/var. * lisp/progmodes/cc-mode.el (c-populate-abbrev-table): New function. (c-basic-common-init): call the c-populate-abbrev-table. (c-mode, c++-mode, objc-mode, java-mode, idl-mode, pike-mode, awk-mode): Remove the setting of MODE-abbrev-table. * lisp/progmodes/cc-vars.el (c-cpp-indent-to-body-directives): New defcustom. * doc/misc/cc-mode.texi (Custom Macros): Introduce and refer to .... (Indenting Directives): New page documenting the new mechanism. --- doc/misc/cc-mode.texi | 52 ++++++++++++++++++++- lisp/progmodes/cc-cmds.el | 93 ++++++++++++++++++++++++++++++++++++++ lisp/progmodes/cc-langs.el | 9 +++- lisp/progmodes/cc-mode.el | 61 ++++++++++--------------- lisp/progmodes/cc-vars.el | 9 ++++ 5 files changed, 185 insertions(+), 39 deletions(-) diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi index 544ff853351..f99a890670f 100644 --- a/doc/misc/cc-mode.texi +++ b/doc/misc/cc-mode.texi @@ -350,11 +350,12 @@ Line-Up Functions * Misc Line-Up:: -Customizing Macros +Custom Macros * Macro Backslashes:: * Macros with ;:: * Noise Macros:: +* Indenting Directives:: @end detailmenu @end menu @@ -6949,6 +6950,10 @@ is @code{nil}, all lines inside macro definitions are analyzed as @code{cpp-macro-cont}. @end defopt +Sometimes you may want to indent particular directives +(e.g. @code{#pragma}) as though they were statements. To do this, see +@ref{Indenting Directives}. + Because a macro can expand into anything at all, near where one is invoked @ccmode{} can only indent and fontify code heuristically. Sometimes it gets it wrong. Usually you should try to design your @@ -6965,6 +6970,7 @@ Macros}. * Macro Backslashes:: * Macros with ;:: * Noise Macros:: +* Indenting Directives:: @end menu @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -7074,7 +7080,7 @@ initialization code, after the mode hooks have run. @end defun @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -@node Noise Macros, , Macros with ;, Custom Macros +@node Noise Macros, Indenting Directives, Macros with ;, Custom Macros @comment node-name, next, previous, up @section Noise Macros @cindex noise macros @@ -7130,6 +7136,48 @@ has run. This function is called by @ccmode{}'s initialization code, after the mode hooks have run. @end defun +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +@node Indenting Directives, , Noise Macros, Custom Macros +@comment node-name, next, previous, up +@section Indenting Directives +@cindex Indenting Directives +@cindex Indenting #pragma +@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +Sometimes you may want to indent particular preprocessor directives +(e.g. @code{#pragma}) as though they were statements. To do this, +first set up @code{c-cpp-indent-to-body-directives} to include the +directive name(s), then enable the ``indent to body'' feature with +@code{c-toggle-cpp-indent-to-body}. + +@defopt c-cpp-indent-to-body-directives +@vindex cpp-indent-to-body-directives (c-) +This variable is a list of names of CPP directives (not including the +introducing @samp{#}) which will be indented as though statements. +Each element is a string, and must be a valid identifier. The default +value is @code{("pragma")}. + +If you add more directives to this variable, or remove directives from +it, whilst ``indent to body'' is active, you need to re-enable the +feature by calling @code{c-toggle-cpp-indent-to-body} for these +changes to take effect@footnote{Note that the removal of directives +doesn't work satisfactorally on XEmacs or on very old versions of +Emacs}. +@end defopt + +@defun c-toggle-cpp-indent-to-body +@findex toggle-cpp-indent-to-body (c-) +With @kbd{M-x c-toggle-cpp-indent-to-body}, you enable or disable the +``indent to body'' feature. When called programmatically, it takes an +optional numerical argument. A positive value will enable the +feature, a zero or negative value will disable it. + +You should set up @code{c-cpp-indent-to-body-directives} before +calling this function, since the function sets internal state which +depends on that variable. +@end defun + + @comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @node Odds and Ends, Sample Init File, Custom Macros, Top @comment node-name, next, previous, up diff --git a/lisp/progmodes/cc-cmds.el b/lisp/progmodes/cc-cmds.el index a60812230b8..1b557c41a5d 100644 --- a/lisp/progmodes/cc-cmds.el +++ b/lisp/progmodes/cc-cmds.el @@ -48,6 +48,7 @@ (cc-bytecomp-defvar filladapt-mode) ; c-fill-paragraph contains a kludge ; which looks at this. (cc-bytecomp-defun electric-pair-post-self-insert-function) +(cc-bytecomp-defvar c-indent-to-body-directives) ;; Indentation / Display syntax functions (defvar c-fix-backslashes t) @@ -1441,6 +1442,98 @@ keyword on the line, the keyword is not inserted inside a literal, and (indent-according-to-mode) (delete-char -2))))) +(defun c-align-cpp-indent-to-body () + "Align a \"#pragma\" line under the previous line. +This function is intented for use as a member of `c-special-indent-hook'." + (when (assq 'cpp-macro c-syntactic-context) + (when + (save-excursion + (save-match-data + (back-to-indentation) + (and + (looking-at (concat c-opt-cpp-symbol "[ \t]*\\([a-zA-Z0-9_]+\\)")) + (member (match-string-no-properties 1) + c-cpp-indent-to-body-directives)))) + (c-indent-line (delete '(cpp-macro) c-syntactic-context))))) + +(defvar c-cpp-indent-to-body-flag nil) +;; Non-nil when CPP directives such as "#pragma" should be indented to under +;; the preceding statement. +(make-variable-buffer-local 'c-cpp-indent-to-body-flag) + +(defun c-electric-pragma () + "Reindent the current line if appropriate. + +This function is used to reindent a preprocessor line when the +symbol for the directive, typically \"pragma\", triggers this +function as a hook function of an abbreviation. + +The \"#\" of the preprocessor construct is aligned under the +first anchor point of the line's syntactic context. + +The line is reindented if the construct is not in a string or +comment, there is exactly one \"#\" contained in optional +whitespace before it on the current line, and `c-electric-flag' +and `c-syntactic-indentation' are both non-nil." + (save-excursion + (save-match-data + (when + (and + c-cpp-indent-to-body-flag + c-electric-flag + c-syntactic-indentation + last-abbrev-location + c-opt-cpp-symbol ; "#" or nil. + (progn (back-to-indentation) + (looking-at (concat c-opt-cpp-symbol "[ \t]*"))) + (>= (match-end 0) last-abbrev-location) + (not (c-literal-limits))) + (c-indent-line (delete '(cpp-macro) (c-guess-basic-syntax))))))) + +(defun c-add-indent-to-body-to-abbrev-table (d) + ;; Create an abbreviation table entry for the directive D, and add it to the + ;; current abbreviation table. Existing abbreviation (e.g. for "else") do + ;; not get overwritten. + (when (and c-buffer-is-cc-mode + local-abbrev-table + (not (abbrev-symbol d local-abbrev-table))) + (condition-case nil + (define-abbrev local-abbrev-table d d 'c-electric-pragma 0 t) + (wrong-number-of-arguments + (define-abbrev local-abbrev-table d d 'c-electric-pragma))))) + +(defun c-clear-stale-indent-to-body-abbrevs () + ;; Fill in this comment. FIXME!!! + (when (fboundp 'abbrev-get) + (mapatoms (lambda (a) + (when (and (abbrev-get a ':system) ; Preserve a user's abbrev! + (not (member (symbol-name a) c-std-abbrev-keywords)) + (not (member (symbol-name a) + c-cpp-indent-to-body-directives))) + (unintern a local-abbrev-table))) + local-abbrev-table))) + +(defun c-toggle-cpp-indent-to-body (&optional arg) + "Toggle the C preprocessor indent-to-body feature. +When enabled, preprocessor directives which are words in +`c-indent-to-body-directives' are indented as if they were statements. + +Optional numeric ARG, if supplied, turns on the feature when positive, +turns it off when negative, and just toggles it when zero or +left out." + (interactive "P") + (setq c-cpp-indent-to-body-flag + (c-calculate-state arg c-cpp-indent-to-body-flag)) + (if c-cpp-indent-to-body-flag + (progn + (c-clear-stale-indent-to-body-abbrevs) + (mapc 'c-add-indent-to-body-to-abbrev-table + c-cpp-indent-to-body-directives) + (add-hook 'c-special-indent-hook 'c-align-cpp-indent-to-body nil t)) + (remove-hook 'c-special-indent-hook 'c-align-cpp-indent-to-body t)) + (message "c-cpp-indent-to-body %sabled" + (if c-cpp-indent-to-body-flag "en" "dis"))) + (declare-function subword-forward "subword" (&optional arg)) diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el index e7e7cfd4b09..1e72352f719 100644 --- a/lisp/progmodes/cc-langs.el +++ b/lisp/progmodes/cc-langs.el @@ -3030,7 +3030,14 @@ Note that Java specific rules are currently applied to tell this from ;; can start a declaration.) "entity" "process" "service" "session" "storage")) - +(c-lang-defconst c-std-abbrev-keywords + "List of keywords which may need to cause electric indentation." + t '("else" "while") + c++ (append (c-lang-const c-std-abbrev-keywords) '("catch")) + java (append (c-lang-const c-std-abbrev-keywords) '("catch" "finally")) + idl nil) +(c-lang-defvar c-std-abbrev-keywords (c-lang-const c-std-abbrev-keywords)) + ;;; Constants built from keywords. ;; Note: No `*-kwds' language constants may be defined below this point. diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el index a39c50e4138..f92d3efdeb7 100644 --- a/lisp/progmodes/cc-mode.el +++ b/lisp/progmodes/cc-mode.el @@ -278,6 +278,29 @@ control). See \"cc-mode.el\" for more info." (setq defs (cdr defs))))) (put 'c-define-abbrev-table 'lisp-indent-function 1) +(defun c-populate-abbrev-table () + ;; Insert the standard keywords which may need electric indentation into the + ;; current mode's abbreviation table. + (let ((table (intern (concat (symbol-name major-mode) "-abbrev-table"))) + (defs c-std-abbrev-keywords) + ) + (unless (and (boundp table) + (abbrev-table-p (symbol-value table))) + (define-abbrev-table table nil)) + (setq local-abbrev-table (symbol-value table)) + (while defs + (unless (intern-soft (car defs) local-abbrev-table) ; Don't overwrite the + ; abbrev's use count. + (condition-case nil + (define-abbrev (symbol-value table) + (car defs) (car defs) + 'c-electric-continued-statement 0 t) + (wrong-number-of-arguments + (define-abbrev (symbol-value table) + (car defs) (car defs) + 'c-electric-continued-statement 0)))) + (setq defs (cdr defs))))) + (defun c-bind-special-erase-keys () ;; Only used in Emacs to bind C-c C- and C-c C- ;; to the proper keys depending on `normal-erase-is-backspace'. @@ -550,6 +573,8 @@ that requires a literal mode spec at compile time." (setq c-buffer-is-cc-mode mode) + (c-populate-abbrev-table) + ;; these variables should always be buffer local; they do not affect ;; indentation style. (make-local-variable 'comment-start) @@ -2444,11 +2469,6 @@ opening \" and the next unescaped end of line." (funcall (c-lang-const c-make-mode-syntax-table c)) "Syntax table used in c-mode buffers.") -(c-define-abbrev-table 'c-mode-abbrev-table - '(("else" "else" c-electric-continued-statement 0) - ("while" "while" c-electric-continued-statement 0)) - "Abbreviation table used in c-mode buffers.") - (defvar c-mode-map (let ((map (c-make-inherited-keymap))) map) @@ -2560,12 +2580,6 @@ the code is C or C++ and based on that chooses whether to enable (funcall (c-lang-const c-make-mode-syntax-table c++)) "Syntax table used in c++-mode buffers.") -(c-define-abbrev-table 'c++-mode-abbrev-table - '(("else" "else" c-electric-continued-statement 0) - ("while" "while" c-electric-continued-statement 0) - ("catch" "catch" c-electric-continued-statement 0)) - "Abbreviation table used in c++-mode buffers.") - (defvar c++-mode-map (let ((map (c-make-inherited-keymap))) map) @@ -2614,11 +2628,6 @@ Key bindings: (funcall (c-lang-const c-make-mode-syntax-table objc)) "Syntax table used in objc-mode buffers.") -(c-define-abbrev-table 'objc-mode-abbrev-table - '(("else" "else" c-electric-continued-statement 0) - ("while" "while" c-electric-continued-statement 0)) - "Abbreviation table used in objc-mode buffers.") - (defvar objc-mode-map (let ((map (c-make-inherited-keymap))) map) @@ -2665,13 +2674,6 @@ Key bindings: (funcall (c-lang-const c-make-mode-syntax-table java)) "Syntax table used in java-mode buffers.") -(c-define-abbrev-table 'java-mode-abbrev-table - '(("else" "else" c-electric-continued-statement 0) - ("while" "while" c-electric-continued-statement 0) - ("catch" "catch" c-electric-continued-statement 0) - ("finally" "finally" c-electric-continued-statement 0)) - "Abbreviation table used in java-mode buffers.") - (defvar java-mode-map (let ((map (c-make-inherited-keymap))) map) @@ -2722,9 +2724,6 @@ Key bindings: (funcall (c-lang-const c-make-mode-syntax-table idl)) "Syntax table used in idl-mode buffers.") -(c-define-abbrev-table 'idl-mode-abbrev-table nil - "Abbreviation table used in idl-mode buffers.") - (defvar idl-mode-map (let ((map (c-make-inherited-keymap))) map) @@ -2767,11 +2766,6 @@ Key bindings: (funcall (c-lang-const c-make-mode-syntax-table pike)) "Syntax table used in pike-mode buffers.") -(c-define-abbrev-table 'pike-mode-abbrev-table - '(("else" "else" c-electric-continued-statement 0) - ("while" "while" c-electric-continued-statement 0)) - "Abbreviation table used in pike-mode buffers.") - (defvar pike-mode-map (let ((map (c-make-inherited-keymap))) map) @@ -2819,11 +2813,6 @@ Key bindings: ;;;###autoload (add-to-list 'interpreter-mode-alist '("nawk" . awk-mode)) ;;;###autoload (add-to-list 'interpreter-mode-alist '("gawk" . awk-mode)) -(c-define-abbrev-table 'awk-mode-abbrev-table - '(("else" "else" c-electric-continued-statement 0) - ("while" "while" c-electric-continued-statement 0)) - "Abbreviation table used in awk-mode buffers.") - (defvar awk-mode-map (let ((map (c-make-inherited-keymap))) map) diff --git a/lisp/progmodes/cc-vars.el b/lisp/progmodes/cc-vars.el index 556ff6059f1..3995b211854 100644 --- a/lisp/progmodes/cc-vars.el +++ b/lisp/progmodes/cc-vars.el @@ -1649,6 +1649,15 @@ white space either before or after the operator, but not both." :type 'boolean :group 'c) +(defcustom c-cpp-indent-to-body-directives '("pragma") + "Preprocessor directives which will be indented as statements. + +A list of Preprocessor directives which when reindented, or newly +typed in, will cause the \"#\" introducing the directive to be +indented as a statement." + :type '(repeat string) + :group 'c) + ;; Initialize the next two to a regexp which never matches. (defvar c-noise-macro-with-parens-name-re regexp-unmatchable) (make-variable-buffer-local 'c-noise-macro-with-parens-name-re) From d00df0aaf9105128d80f6e395974474cf5975499 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Gr=C3=B6ber?= Date: Sun, 8 Mar 2020 14:04:13 -0400 Subject: [PATCH 91/93] * lisp/term/rxvt.el: Enable backeted paste and window title rxvt-unicode uses the same escape sequences as xterm so just re-use the xterm functions to enable them. The `xterm-rxvt-function-map` keymap already has (define-key map "\e[200~" [xterm-paste]) so we're already handling the paste sequence and only need to enable it. Tested on rxvt-unicode version 9.22. (rxvt-set-window-title): New var. (terminal-init-rxvt): Use it; enable bracketed paste mode; run terminal-init-rxvt-hook. --- lisp/term/rxvt.el | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/lisp/term/rxvt.el b/lisp/term/rxvt.el index ca6c468f525..31e3d6ede4f 100644 --- a/lisp/term/rxvt.el +++ b/lisp/term/rxvt.el @@ -26,6 +26,16 @@ (require 'term/xterm) +(defgroup rxvt nil + "(U)RXVT support." + :version "28.1" + :group 'terminals) + +(defcustom rxvt-set-window-title nil + "Whether Emacs should set window titles to an Emacs frame in RXVT." + :version "28.1" + :type 'boolean) + (defvar rxvt-function-map (let ((map (make-sparse-keymap))) (set-keymap-parent map xterm-rxvt-function-map) @@ -171,7 +181,16 @@ (xterm-register-default-colors rxvt-standard-colors) (rxvt-set-background-mode) ;; This recomputes all the default faces given the colors we've just set up. - (tty-set-up-initial-frame-faces)) + (tty-set-up-initial-frame-faces) + + ;; Unconditionally enable bracketed paste mode: terminals that don't + ;; support it just ignore the sequence. + (xterm--init-bracketed-paste-mode) + + (when rxvt-set-window-title + (xterm--init-frame-title)) + + (run-hooks 'terminal-init-rxvt-hook)) ;; rxvt puts the default colors into an environment variable ;; COLORFGBG. We use this to set the background mode in a more From 20d3d3a9509ed24b4fb701919bf4a677c7d9e249 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 8 Mar 2020 16:43:54 -0700 Subject: [PATCH 92/93] * src/timefns.c: Add comments. --- src/timefns.c | 49 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/src/timefns.c b/src/timefns.c index 8e2bb214ed8..4079358fc5d 100644 --- a/src/timefns.c +++ b/src/timefns.c @@ -421,6 +421,9 @@ decode_float_time (double t, struct lisp_time *result) else if (flt_radix_power_size <= scale) return isnan (t) ? EDOM : EOVERFLOW; + /* Compute TICKS, HZ such that TICKS / HZ exactly equals T, where HZ is + T's frequency or 1, whichever is greater. Here, “frequency” means + 1/precision. Cache HZ values in flt_radix_power. */ double scaled = scalbn (t, scale); eassert (trunc (scaled) == scaled); ticks = double_to_integer (scaled); @@ -442,6 +445,7 @@ decode_float_time (double t, struct lisp_time *result) static Lisp_Object ticks_hz_list4 (Lisp_Object ticks, Lisp_Object hz) { + /* mpz[0] = floor ((ticks * trillion) / hz). */ mpz_t const *zticks = bignum_integer (&mpz[0], ticks); #if FASTER_TIMEFNS && TRILLION <= ULONG_MAX mpz_mul_ui (mpz[0], *zticks, TRILLION); @@ -449,6 +453,9 @@ ticks_hz_list4 (Lisp_Object ticks, Lisp_Object hz) mpz_mul (mpz[0], *zticks, ztrillion); #endif mpz_fdiv_q (mpz[0], mpz[0], *bignum_integer (&mpz[1], hz)); + + /* mpz[0] = floor (mpz[0] / trillion), with US = the high six digits of the + 12-digit remainder, and PS = the low six digits. */ #if FASTER_TIMEFNS && TRILLION <= ULONG_MAX unsigned long int fullps = mpz_fdiv_q_ui (mpz[0], mpz[0], TRILLION); int us = fullps / 1000000; @@ -458,11 +465,14 @@ ticks_hz_list4 (Lisp_Object ticks, Lisp_Object hz) int ps = mpz_fdiv_q_ui (mpz[1], mpz[1], 1000000); int us = mpz_get_ui (mpz[1]); #endif + + /* mpz[0] = floor (mpz[0] / 1 << LO_TIME_BITS), with lo = remainder. */ unsigned long ulo = mpz_get_ui (mpz[0]); if (mpz_sgn (mpz[0]) < 0) ulo = -ulo; int lo = ulo & ((1 << LO_TIME_BITS) - 1); mpz_fdiv_q_2exp (mpz[0], mpz[0], LO_TIME_BITS); + return list4 (make_integer_mpz (), make_fixnum (lo), make_fixnum (us), make_fixnum (ps)); } @@ -482,6 +492,7 @@ mpz_set_time (mpz_t rop, time_t t) static void timespec_mpz (struct timespec t) { + /* mpz[0] = sec * TIMESPEC_HZ + nsec. */ mpz_set_ui (mpz[0], t.tv_nsec); mpz_set_time (mpz[1], t.tv_sec); mpz_addmul_ui (mpz[0], mpz[1], TIMESPEC_HZ); @@ -508,7 +519,9 @@ timespec_ticks (struct timespec t) static Lisp_Object lisp_time_hz_ticks (struct lisp_time t, Lisp_Object hz) { - /* For speed, just return TICKS if T is (TICKS . HZ). */ + /* The idea is to return the floor of ((T.ticks * HZ) / T.hz). */ + + /* For speed, just return T.ticks if T.hz == HZ. */ if (FASTER_TIMEFNS && EQ (t.hz, hz)) return t.ticks; @@ -540,6 +553,8 @@ lisp_time_hz_ticks (struct lisp_time t, Lisp_Object hz) static Lisp_Object lisp_time_seconds (struct lisp_time t) { + /* The idea is to return the floor of T.ticks / T.hz. */ + if (!FASTER_TIMEFNS) return lisp_time_hz_ticks (t, make_fixnum (1)); @@ -587,6 +602,7 @@ frac_to_double (Lisp_Object numerator, Lisp_Object denominator) && integer_to_intmax (numerator, &intmax_numerator)) return intmax_numerator; + /* Compute number of base-FLT_RADIX digits in numerator and denominator. */ mpz_t const *n = bignum_integer (&mpz[0], numerator); mpz_t const *d = bignum_integer (&mpz[1], denominator); ptrdiff_t nbits = mpz_sizeinbase (*n, 2); @@ -599,7 +615,8 @@ frac_to_double (Lisp_Object numerator, Lisp_Object denominator) /* Scale with SCALE when doing integer division. That is, compute (N * FLT_RADIX**SCALE) / D [or, if SCALE is negative, N / (D * FLT_RADIX**-SCALE)] as a bignum, convert the bignum to double, - then divide the double by FLT_RADIX**SCALE. */ + then divide the double by FLT_RADIX**SCALE. First scale N + N (or scale D, if SCALE is negative) ... */ ptrdiff_t scale = ddig - ndig + DBL_MANT_DIG + 1; if (scale < 0) { @@ -614,12 +631,12 @@ frac_to_double (Lisp_Object numerator, Lisp_Object denominator) mpz_mul_2exp (mpz[0], *n, scale * LOG2_FLT_RADIX); n = &mpz[0]; } - + /* ... and then divide, with quotient Q and remainder R. */ mpz_t *q = &mpz[2]; mpz_t *r = &mpz[3]; mpz_tdiv_qr (*q, *r, *n, *d); - /* The amount to add to the absolute value of *Q so that truncating + /* The amount to add to the absolute value of Q so that truncating it to double will round correctly. */ int incr; @@ -658,6 +675,7 @@ frac_to_double (Lisp_Object numerator, Lisp_Object denominator) if (!FASTER_TIMEFNS || incr != 0) (mpz_sgn (*n) < 0 ? mpz_sub_ui : mpz_add_ui) (*q, *q, incr); + /* Rescale the integer Q back to double. This step does not round. */ return scalbn (mpz_get_d (*q), -scale); } @@ -902,6 +920,10 @@ lisp_to_timespec (struct lisp_time t) mpz_t *q = &mpz[0]; mpz_t const *qt = q; + /* Floor-divide (T.ticks * TIMESPEC_HZ) by T.hz, + yielding quotient Q (tv_sec) and remainder NS (tv_nsec). + Return an invalid timespec if Q does not fit in time_t. + For speed, prefer fixnum arithmetic if it works. */ if (FASTER_TIMEFNS && EQ (t.hz, timespec_hz)) { if (FIXNUMP (t.ticks)) @@ -945,8 +967,8 @@ lisp_to_timespec (struct lisp_time t) ns = mpz_fdiv_q_ui (*q, *q, TIMESPEC_HZ); } - /* With some versions of MinGW, tv_sec is a 64-bit type, whereas - time_t is a 32-bit type. */ + /* Check that Q fits in time_t, not merely in T.tv_sec. With some versions + of MinGW, tv_sec is a 64-bit type, whereas time_t is a 32-bit type. */ time_t sec; if (mpz_time (*qt, &sec)) { @@ -1026,10 +1048,14 @@ lispint_arith (Lisp_Object a, Lisp_Object b, bool subtract) { if (EQ (b, make_fixnum (0))) return a; + + /* For speed, use EMACS_INT arithmetic if it will do. */ if (FIXNUMP (a)) return make_int (subtract ? XFIXNUM (a) - XFIXNUM (b) : XFIXNUM (a) + XFIXNUM (b)); + + /* For speed, use mpz_add_ui/mpz_sub_ui if it will do. */ if (eabs (XFIXNUM (b)) <= ULONG_MAX) { ((XFIXNUM (b) < 0) == subtract ? mpz_add_ui : mpz_sub_ui) @@ -1038,6 +1064,7 @@ lispint_arith (Lisp_Object a, Lisp_Object b, bool subtract) } } + /* Fall back on bignum arithmetic if necessary. */ if (!mpz_done) (subtract ? mpz_sub : mpz_add) (mpz[0], *bignum_integer (&mpz[0], a), @@ -1221,6 +1248,8 @@ time_cmp (Lisp_Object a, Lisp_Object b) if (EQ (a, b)) return 0; + /* Compare (ATICKS . AZ) to (BTICKS . BHZ) by comparing + ATICKS * BHZ to BTICKS * AHZ. */ struct lisp_time tb = lisp_time_struct (b, 0); mpz_t const *za = bignum_integer (&mpz[0], ta.ticks); mpz_t const *zb = bignum_integer (&mpz[1], tb.ticks); @@ -1498,6 +1527,7 @@ SEC is always an integer between 0 and 59.) usage: (decode-time &optional TIME ZONE FORM) */) (Lisp_Object specified_time, Lisp_Object zone, Lisp_Object form) { + /* Compute broken-down local time LOCAL_TM from SPECIFIED_TIME and ZONE. */ struct lisp_time lt = lisp_time_struct (specified_time, 0); struct timespec ts = lisp_to_timespec (lt); if (! timespec_valid_p (ts)) @@ -1512,6 +1542,7 @@ usage: (decode-time &optional TIME ZONE FORM) */) if (!tm) time_error (localtime_errno); + /* Let YEAR = LOCAL_TM.tm_year + TM_YEAR_BASE. */ Lisp_Object year; if (FASTER_TIMEFNS && MOST_NEGATIVE_FIXNUM - TM_YEAR_BASE <= local_tm.tm_year @@ -1528,12 +1559,15 @@ usage: (decode-time &optional TIME ZONE FORM) */) year = make_integer_mpz (); } + /* Compute SEC from LOCAL_TM.tm_sec and HZ. */ Lisp_Object hz = lt.hz, sec; if (EQ (hz, make_fixnum (1)) || !EQ (form, Qt)) sec = make_fixnum (local_tm.tm_sec); else { - Lisp_Object ticks; /* hz * tm_sec + mod (lt.ticks, hz) */ + /* Let TICKS = HZ * LOCAL_TM.tm_sec + mod (LT.ticks, HZ) + and SEC = (TICKS . HZ). */ + Lisp_Object ticks; intmax_t n; if (FASTER_TIMEFNS && FIXNUMP (lt.ticks) && FIXNUMP (hz) && !INT_MULTIPLY_WRAPV (XFIXNUM (hz), local_tm.tm_sec, &n) @@ -1663,6 +1697,7 @@ usage: (encode-time TIME &rest OBSOLESCENT-ARGUMENTS) */) yeararg = args[5]; } + /* Let SEC = floor (LT.ticks / HZ), with SUBSECTICKS the remainder. */ struct lisp_time lt; decode_lisp_time (secarg, 0, <, 0); Lisp_Object hz = lt.hz, sec, subsecticks; From cf223dc928119bb544c3370ad59fe3e175a8236e Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 8 Mar 2020 16:49:32 -0700 Subject: [PATCH 93/93] ; * src/timefns.c: Fix typo in previous change. --- src/timefns.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/timefns.c b/src/timefns.c index 4079358fc5d..553daf6e6a9 100644 --- a/src/timefns.c +++ b/src/timefns.c @@ -616,7 +616,7 @@ frac_to_double (Lisp_Object numerator, Lisp_Object denominator) (N * FLT_RADIX**SCALE) / D [or, if SCALE is negative, N / (D * FLT_RADIX**-SCALE)] as a bignum, convert the bignum to double, then divide the double by FLT_RADIX**SCALE. First scale N - N (or scale D, if SCALE is negative) ... */ + (or scale D, if SCALE is negative) ... */ ptrdiff_t scale = ddig - ndig + DBL_MANT_DIG + 1; if (scale < 0) {