[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 68d4339 1/2: Merge from origin/emacs-27
From: |
Glenn Morris |
Subject: |
master 68d4339 1/2: Merge from origin/emacs-27 |
Date: |
Thu, 6 Feb 2020 10:55:17 -0500 (EST) |
branch: master
commit 68d43392a65186a944c839dc576b2b01deafbb0d
Merge: cf14fa0 09eed01
Author: Glenn Morris <address@hidden>
Commit: Glenn Morris <address@hidden>
Merge from origin/emacs-27
09eed01afb Wrap some set-auto-mode calls with delay-mode-hooks (bug#3...
4a0a114505 Support ido-vertical-mode better
ef5fba9f40 Fix faces tab-bar and tab-line.
831508422e Cater for 3-argument version of pthread_setname_np
f27187f963 Clarify lexvar restrictions for add-to-ordered-list, add-t...
32763dac46 Replace add-to-list to lexical variable with push (bug#39373)
d07f177382 Clarify add-to-list documentation (bug#39373)
d3d2ea927c MH-E: alter content in mh-display-msg, not mh-show-mode
db7fa2546f Update documentation for mh-show-mode-hook
d10be6bf28 Example goto-addr hook: MH-E already uses goto-address
# Conflicts:
# etc/NEWS
---
configure.ac | 15 +++++++++++++++
doc/emacs/misc.texi | 5 ++---
doc/lispref/lists.texi | 9 +++++++--
doc/lispref/minibuf.texi | 1 +
doc/misc/mh-e.texi | 6 +++---
etc/NEWS.27 | 8 ++++++++
lisp/autoinsert.el | 2 +-
lisp/cedet/mode-local.el | 14 ++++++--------
lisp/gnus/mm-view.el | 4 +++-
lisp/ido.el | 3 +++
lisp/mh-e/mh-e.el | 9 +++++----
lisp/mh-e/mh-show.el | 8 ++++----
lisp/net/goto-addr.el | 8 ++++----
lisp/net/tramp-cache.el | 4 ++--
lisp/net/zeroconf.el | 12 ++++++------
lisp/org/org.el | 5 +++--
lisp/subr.el | 5 ++++-
lisp/tab-bar.el | 4 ++--
lisp/tab-line.el | 4 ++--
lisp/vc/diff-mode.el | 4 +++-
lisp/vc/vc.el | 4 +++-
lisp/whitespace.el | 2 +-
src/systhread.c | 8 +++++---
test/lisp/emacs-lisp/map-tests.el | 2 +-
24 files changed, 94 insertions(+), 52 deletions(-)
diff --git a/configure.ac b/configure.ac
index 94f0bf3..a4daf14 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4192,6 +4192,21 @@ if test "$ac_cv_func_pthread_setname_np" = "yes"; then
AC_DEFINE(
HAVE_PTHREAD_SETNAME_NP_1ARG, 1,
[Define to 1 if pthread_setname_np takes a single argument.])
+ else
+ AC_CACHE_CHECK(
+ [whether pthread_setname_np takes three arguments],
+ [emacs_cv_pthread_setname_np_3arg],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <pthread.h>]],
+ [[pthread_setname_np (0, "%s", "a");]])],
+ [emacs_cv_pthread_setname_np_3arg=yes],
+ [emacs_cv_pthread_setname_np_3arg=no])])
+ if test "$emacs_cv_pthread_setname_np_3arg" = "yes"; then
+ AC_DEFINE(
+ HAVE_PTHREAD_SETNAME_NP_3ARG, 1,
+ [Define to 1 if pthread_setname_np takes three arguments.])
+ fi
fi
fi
diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index 6b95b12..d097f4e 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -2939,9 +2939,8 @@ done by calling @code{browse-url} as a subroutine
It can be useful to add @code{goto-address-mode} to mode hooks and
hooks for displaying an incoming message
-(e.g., @code{rmail-show-message-hook} for Rmail, and
-@code{mh-show-mode-hook} for MH-E). This is not needed for Gnus,
-which has a similar feature of its own.
+(e.g., @code{rmail-show-message-hook} for Rmail). This is not needed
+for Gnus or MH-E, which have similar features of their own.
@node FFAP
@subsection Finding Files and URLs at Point
diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi
index 5ef21d0..27fa538 100644
--- a/doc/lispref/lists.texi
+++ b/doc/lispref/lists.texi
@@ -777,6 +777,9 @@ non-@code{nil}, it is added at the end.
The argument @var{symbol} is not implicitly quoted; @code{add-to-list}
is an ordinary function, like @code{set} and unlike @code{setq}. Quote
the argument yourself if that is what you want.
+
+Do not use this function when @var{symbol} refers to a lexical
+variable.
@end defun
Here's a scenario showing how to use @code{add-to-list}:
@@ -799,8 +802,9 @@ foo ;; @r{@code{foo} was changed.}
@var{value})} is this:
@example
-(or (member @var{value} @var{var})
- (setq @var{var} (cons @var{value} @var{var})))
+(if (member @var{value} @var{var})
+ @var{var}
+ (setq @var{var} (cons @var{value} @var{var})))
@end example
@defun add-to-ordered-list symbol element &optional order
@@ -828,6 +832,7 @@ and unlike @code{setq}. Quote the argument yourself if
necessary.
The ordering information is stored in a hash table on @var{symbol}'s
@code{list-order} property.
+@var{symbol} cannot refer to a lexical variable.
@end defun
Here's a scenario showing how to use @code{add-to-ordered-list}:
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index 0f60b3f..ac38b9d 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -572,6 +572,7 @@ and returns the updated history list. It limits the list
length to
the value of @var{maxelt} (if non-@code{nil}) or @code{history-length}
(described below). The possible values of @var{maxelt} have the same
meaning as the values of @code{history-length}.
+@var{history-var} cannot refer to a lexical variable.
Normally, @code{add-to-history} removes duplicate members from the
history list if @code{history-delete-duplicates} is non-@code{nil}.
diff --git a/doc/misc/mh-e.texi b/doc/misc/mh-e.texi
index 0630b60..962f22a 100644
--- a/doc/misc/mh-e.texi
+++ b/doc/misc/mh-e.texi
@@ -2256,10 +2256,10 @@ signature block is more to your liking.
Two hooks can be used to control how messages are displayed. The first
hook, @code{mh-show-mode-hook}, is called early on in the process of
the message display. It is usually used to perform some action on the
-message's content. The second hook, @code{mh-show-hook}, is the last
+message's buffer. The second hook, @code{mh-show-hook}, is the last
thing called after messages are displayed. It's used to affect the
-behavior of MH-E in general or when @code{mh-show-mode-hook} is too
-early.
+message's content, the behavior of MH-E in general, or when
+@code{mh-show-mode-hook} is too early.
@cindex MH-Show mode
@cindex modes, MH-Show
diff --git a/etc/NEWS.27 b/etc/NEWS.27
index 433f1f7..54a71c9 100644
--- a/etc/NEWS.27
+++ b/etc/NEWS.27
@@ -2630,6 +2630,14 @@ will be chosen even if you have an entry for "image/*"
in your
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
+highlighting) can no longer use 'mh-show-mode-hook', because the
+message contents will not yet have been inserted when the hook is
+called. Such functions should now be attached to 'mh-show-hook'.
+
** URL
---
diff --git a/lisp/autoinsert.el b/lisp/autoinsert.el
index 9bc3aad..25961d4 100644
--- a/lisp/autoinsert.el
+++ b/lisp/autoinsert.el
@@ -171,7 +171,7 @@ If this contains a %s, that will be replaced by the
matching rule."
(mapatoms (lambda (mode)
(let ((name (symbol-name mode)))
(when (string-match "-mode$" name)
- (add-to-list 'modes name)))))
+ (push name modes)))))
(sort modes 'string<)))
(completing-read "Local variables for mode: " v1 nil t)
" . (("
diff --git a/lisp/cedet/mode-local.el b/lisp/cedet/mode-local.el
index a6e143c..a1aea30 100644
--- a/lisp/cedet/mode-local.el
+++ b/lisp/cedet/mode-local.el
@@ -819,14 +819,12 @@ META-NAME is a cons (OVERLOADABLE-SYMBOL . MAJOR-MODE)."
)
;; Order symbols by type
(mapatoms
- #'(lambda (s)
- (add-to-list (cond
- ((get s 'mode-variable-flag)
- (if (get s 'constant-flag) 'mc 'mv))
- ((get s 'override-flag)
- (if (get s 'constant-flag) 'fo 'ov))
- ('us))
- s))
+ (lambda (s) (push s (cond
+ ((get s 'mode-variable-flag)
+ (if (get s 'constant-flag) mc mv))
+ ((get s 'override-flag)
+ (if (get s 'constant-flag) fo ov))
+ (t us))))
table)
;; Print symbols by type
(when us
diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el
index a6be04e..828ac63 100644
--- a/lisp/gnus/mm-view.el
+++ b/lisp/gnus/mm-view.el
@@ -497,7 +497,9 @@ If MODE is not set, try to find mode automatically."
(let ((auto-mode-alist
(delq (rassq 'doc-view-mode-maybe auto-mode-alist)
(copy-sequence auto-mode-alist))))
- (set-auto-mode)
+ ;; Don't run hooks that might assume buffer-file-name
+ ;; really associates buffer with a file (bug#39190).
+ (delay-mode-hooks (set-auto-mode))
(setq mode major-mode)))
;; Do not fontify if the guess mode is fundamental.
(unless (eq major-mode 'fundamental-mode)
diff --git a/lisp/ido.el b/lisp/ido.el
index 355be5e..6707d81 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -4732,6 +4732,9 @@ For details of keybindings, see `ido-find-file'."
(delete-overlay ido--overlay))
(let ((o (make-overlay (point-max) (point-max) nil t t)))
(when (> (length inf) 0)
+ ;; For hacks that redefine ido-completions function (bug#39379)
+ (when (eq (aref inf 0) ?\n)
+ (setq inf (concat " " inf)))
(put-text-property 0 1 'cursor t inf))
(overlay-put o 'after-string inf)
(setq ido--overlay o)))
diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el
index 5c85b39..dd05d69 100644
--- a/lisp/mh-e/mh-e.el
+++ b/lisp/mh-e/mh-e.el
@@ -3380,13 +3380,14 @@ used to affect the behavior of MH-E in general or when
(defcustom-mh mh-show-mode-hook nil
"Hook run upon entry to `mh-show-mode'.
-This hook is called early on in the process of the message
-display. It is usually used to perform some action on the
-message's content. See `mh-show-hook'."
+This hook is called early on in the process of the message display,
+before the message contents have been inserted into the buffer.
+It is usually used to perform some action on the
+buffer itself. See also `mh-show-hook'."
:type 'hook
:group 'mh-hooks
:group 'mh-show
- :package-version '(MH-E . "6.0"))
+ :package-version '(MH-E . "8.7"))
(defcustom-mh mh-unseen-updated-hook nil
"Hook run after the unseen sequence has been updated.
diff --git a/lisp/mh-e/mh-show.el b/lisp/mh-e/mh-show.el
index 952579f..3c07d42 100644
--- a/lisp/mh-e/mh-show.el
+++ b/lisp/mh-e/mh-show.el
@@ -63,7 +63,7 @@ you wish to see all of them, use the command
\\[mh-header-display].
Two hooks can be used to control how messages are displayed. The
first hook, `mh-show-mode-hook', is called early on in the
process of the message display. It is usually used to perform
-some action on the message's content. The second hook,
+some action on the message's buffer. The second hook,
`mh-show-hook', is the last thing called after messages are
displayed. It's used to affect the behavior of MH-E in general or
when `mh-show-mode-hook' is too early.
@@ -234,6 +234,9 @@ Sets the current buffer to the show buffer."
(mh-add-missing-mime-version-header)
(setf (mh-buffer-data) (mh-make-buffer-data))
(mh-mime-display))
+ (mh-show-unquote-From)
+ (mh-show-xface)
+ (mh-show-addr)
;; Header cleanup
(goto-char (point-min))
(cond (clean-message-header
@@ -840,9 +843,6 @@ See also `mh-folder-mode'.
(mh-tool-bar-init :show))
(set (make-local-variable 'mail-header-separator) mh-mail-header-separator)
(setq paragraph-start (default-value 'paragraph-start))
- (mh-show-unquote-From)
- (mh-show-xface)
- (mh-show-addr)
(setq buffer-invisibility-spec '((vanish . t) t))
(set (make-local-variable 'line-move-ignore-invisible) t)
(make-local-variable 'font-lock-defaults)
diff --git a/lisp/net/goto-addr.el b/lisp/net/goto-addr.el
index 7dd778d..9436f45 100644
--- a/lisp/net/goto-addr.el
+++ b/lisp/net/goto-addr.el
@@ -5,7 +5,7 @@
;; Author: Eric Ding <address@hidden>
;; Maintainer: address@hidden
;; Created: 15 Aug 1995
-;; Keywords: mh-e, www, mouse, mail
+;; Keywords: www, mouse, mail
;; This file is part of GNU Emacs.
@@ -32,10 +32,10 @@
;; INSTALLATION
;;
-;; To use goto-address in a particular mode (for example, while
-;; reading mail in mh-e), add this to your init file:
+;; To use goto-address in a particular mode (this example uses
+;; the fictional rich-text-mode), add this to your init file:
;;
-;; (add-hook 'mh-show-mode-hook 'goto-address)
+;; (add-hook 'rich-text-mode-hook 'goto-address)
;;
;; The mouse click method is bound to [mouse-2] on highlighted URLs or
;; e-mail addresses only; it functions normally everywhere else. To bind
diff --git a/lisp/net/tramp-cache.el b/lisp/net/tramp-cache.el
index 92c9848..1998042 100644
--- a/lisp/net/tramp-cache.el
+++ b/lisp/net/tramp-cache.el
@@ -368,7 +368,7 @@ used to cache connection properties of the local machine."
(let ((hash (gethash key tramp-cache-data))
properties)
(when (hash-table-p hash)
- (maphash (lambda (x _y) (add-to-list 'properties x 'append)) hash))
+ (maphash (lambda (x _y) (push x properties)) hash))
properties))
(setq tramp-cache-data-changed t)
(remhash key tramp-cache-data))
@@ -417,7 +417,7 @@ used to cache connection properties of the local machine."
(when (and (tramp-file-name-p key)
(null (tramp-file-name-localname key))
(tramp-connection-property-p key "process-buffer"))
- (add-to-list 'result key)))
+ (push key result)))
tramp-cache-data)
result))
diff --git a/lisp/net/zeroconf.el b/lisp/net/zeroconf.el
index b8becd7..cb3c0f2 100644
--- a/lisp/net/zeroconf.el
+++ b/lisp/net/zeroconf.el
@@ -256,17 +256,17 @@ supported keys depend on the service type.")
"Return all discovered Avahi service names as list."
(let (result)
(maphash
- (lambda (_key value) (add-to-list 'result (zeroconf-service-name value)))
+ (lambda (_key value) (push (zeroconf-service-name value) result))
zeroconf-services-hash)
- result))
+ (delete-dups result)))
(defun zeroconf-list-service-types ()
"Return all discovered Avahi service types as list."
(let (result)
(maphash
- (lambda (_key value) (add-to-list 'result (zeroconf-service-type value)))
+ (lambda (_key value) (push (zeroconf-service-type value) result))
zeroconf-services-hash)
- result))
+ (delete-dups result)))
(defun zeroconf-list-services (type)
"Return all discovered Avahi services for a given service type TYPE.
@@ -278,9 +278,9 @@ format of SERVICE."
(maphash
(lambda (_key value)
(when (equal type (zeroconf-service-type value))
- (add-to-list 'result value)))
+ (push value result)))
zeroconf-services-hash)
- result))
+ (delete-dups result)))
(defvar zeroconf-service-added-hooks-hash (make-hash-table :test 'equal)
"Hash table of hooks for newly added services.
diff --git a/lisp/org/org.el b/lisp/org/org.el
index 1581625..e8e1ef9 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -18682,13 +18682,14 @@ With prefix arg UNCOMPILED, load the uncompiled
versions."
(and (string= org-dir contrib-dir)
(org-load-noerror-mustsuffix (concat
contrib-dir f)))
(and (org-load-noerror-mustsuffix (concat
(org-find-library-dir f) f))
- (add-to-list 'load-uncore f 'append)
+ (push f load-uncore)
't)
f))
lfeat)))
(when load-uncore
(message "The following feature%s found in load-path, please check if
that's correct:\n%s"
- (if (> (length load-uncore) 1) "s were" " was") load-uncore))
+ (if (> (length load-uncore) 1) "s were" " was")
+ (reverse load-uncore)))
(if load-misses
(message "Some error occurred while reloading Org feature%s\n%s\nPlease
check *Messages*!\n%s"
(if (> (length load-misses) 1) "s" "") load-misses
(org-version nil 'full))
diff --git a/lisp/subr.el b/lisp/subr.el
index 0e09228..b5ec0de 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1845,6 +1845,7 @@ COMPARE-FN if that's non-nil.
If ELEMENT is added, it is added at the beginning of the list,
unless the optional argument APPEND is non-nil, in which case
ELEMENT is added at the end.
+LIST-VAR should not refer to a lexical variable.
The return value is the new value of LIST-VAR.
@@ -1934,6 +1935,7 @@ of ELEMENT if it has one.
The list order for each element is stored in LIST-VAR's
`list-order' property.
+LIST-VAR cannot refer to a lexical variable.
The return value is the new value of LIST-VAR."
(let ((ordering (get list-var 'list-order)))
@@ -1962,7 +1964,8 @@ variable. The possible values of maximum length have the
same meaning as
the values of `history-length'.
Remove duplicates of NEWELT if `history-delete-duplicates' is non-nil.
If optional fourth arg KEEP-ALL is non-nil, add NEWELT to history even
-if it is empty or duplicates the most recent entry in the history."
+if it is empty or duplicates the most recent entry in the history.
+HISTORY-VAR cannot refer to a lexical variable."
(unless maxelt
(setq maxelt (or (get history-var 'history-length)
history-length)))
diff --git a/lisp/tab-bar.el b/lisp/tab-bar.el
index ebb0c56..fac27f4 100644
--- a/lisp/tab-bar.el
+++ b/lisp/tab-bar.el
@@ -51,11 +51,11 @@
:version "27.1")
(defface tab-bar
- '((((type x w32 ns) (class color))
+ '((((class color) (min-colors 88))
:inherit variable-pitch
:background "grey85"
:foreground "black")
- (((type x) (class mono))
+ (((class mono))
:background "grey")
(t
:inverse-video t))
diff --git a/lisp/tab-line.el b/lisp/tab-line.el
index 149fe82..8f1221a 100644
--- a/lisp/tab-line.el
+++ b/lisp/tab-line.el
@@ -42,12 +42,12 @@
:version "27.1")
(defface tab-line
- '((((type x w32 ns) (class color))
+ '((((class color) (min-colors 88))
:inherit variable-pitch
:height 0.9
:background "grey85"
:foreground "black")
- (((type x) (class mono))
+ (((class mono))
:background "grey")
(t
:inverse-video t))
diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el
index 2dbab80..d61c363 100644
--- a/lisp/vc/diff-mode.el
+++ b/lisp/vc/diff-mode.el
@@ -2719,7 +2719,9 @@ hunk text is not found in the source file."
(cl-assert (null buffer-file-name))
(let ((enable-local-variables :safe) ;; to find `mode:'
(buffer-file-name file))
- (set-auto-mode)
+ ;; Don't run hooks that might assume buffer-file-name
+ ;; really associates buffer with a file (bug#39190).
+ (delay-mode-hooks (set-auto-mode))
;; FIXME: Is this really worth the trouble?
(when (and (fboundp 'generic-mode-find-file-hook)
(memq #'generic-mode-find-file-hook
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index f64b6c0..ec252b7 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -2098,7 +2098,9 @@ Unlike `vc-find-revision-save', doesn't save the buffer
to the file."
;; For non-interactive, skip any questions
(let ((enable-local-variables :safe) ;; to find `mode:'
(buffer-file-name file))
- (ignore-errors (set-auto-mode)))
+ ;; Don't run hooks that might assume buffer-file-name
+ ;; really associates buffer with a file (bug#39190).
+ (ignore-errors (delay-mode-hooks (set-auto-mode))))
(normal-mode))
(set-buffer-modified-p nil)
(setq buffer-read-only t))
diff --git a/lisp/whitespace.el b/lisp/whitespace.el
index fde7329..0137ddc 100644
--- a/lisp/whitespace.el
+++ b/lisp/whitespace.el
@@ -1684,7 +1684,7 @@ cleaning up these problems."
(mapcar
#'(lambda (option)
(when force
- (add-to-list 'style (car option)))
+ (push (car option) style))
(goto-char rstart)
(let ((regexp
(cond
diff --git a/src/systhread.c b/src/systhread.c
index c649ae8..0d600d6 100644
--- a/src/systhread.c
+++ b/src/systhread.c
@@ -214,11 +214,13 @@ sys_thread_set_name (const char *name)
char p_name[TASK_COMM_LEN];
strncpy (p_name, name, TASK_COMM_LEN - 1);
p_name[TASK_COMM_LEN - 1] = '\0';
- #ifdef HAVE_PTHREAD_SETNAME_NP_1ARG
+# ifdef HAVE_PTHREAD_SETNAME_NP_1ARG
pthread_setname_np (p_name);
- #else
+# elif defined HAVE_PTHREAD_SETNAME_NP_3ARG
+ pthread_setname_np (pthread_self (), "%s", p_name);
+# else
pthread_setname_np (pthread_self (), p_name);
- #endif
+# endif
#endif
}
diff --git a/test/lisp/emacs-lisp/map-tests.el
b/test/lisp/emacs-lisp/map-tests.el
index 3ffef17..1888baf 100644
--- a/test/lisp/emacs-lisp/map-tests.el
+++ b/test/lisp/emacs-lisp/map-tests.el
@@ -227,7 +227,7 @@ Evaluate BODY for each created map.
(with-maps-do map
(let ((result nil))
(map-do (lambda (k v)
- (add-to-list 'result (list (int-to-string k) v)))
+ (push (list (int-to-string k) v) result))
map)
(should (equal result '(("2" 5) ("1" 4) ("0" 3)))))))