Merge from origin/emacs-27

5b7d226779 * etc/AUTHORS: Update.
4aa758e53d ; ChangeLog.3 update
9261b1ed49 * admin/authors.el (authors-ignored-files): Fix entries.
86e4da6eaf ; ChangeLog.3 update
009c6a1767 ; ChangeLog.3 fixes
f9e53947c7 Fix documented slot name of eieio-instance-tracker class
999d75c0c1 Range-check width passed to define-fringe-bitmap
29e415d6b0 ; ChangeLog.3 fixes
4653baa6a5 ; ChangeLog.3 update & fixes.
a95ec6e060 * admin/authors.el: Add missing entries
af519a6348 Define libgnutls-version properly
9ec6eb1065 vc-dir-ignore: More accurately choose base directory
e74fb4688b * lisp/emacs-lisp/cursor-sensor.el (cursor-sensor--detect)...
3bce7ec382 CC Mode: Protect against consecutive calls to before-chang...
This commit is contained in:
Glenn Morris 2020-03-04 13:57:56 -08:00
commit 1c81bb8c24
10 changed files with 1301 additions and 765 deletions

File diff suppressed because it is too large Load diff

View file

@ -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,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"
"doc/misc/gnus-news.el"
"src/fingerprint-dummy.c"
"src/fingerprint.h"
;; Replaced by lisp/thread.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.")
@ -1103,6 +1112,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")
("lisp/multifile.el". "lisp/fileloop.el")
("lisp/emacs-lisp/thread.el". "lisp/thread.el")
)
"Alist of files which have been renamed during their lifetime.
Elements are (OLDNAME . NEWNAME).")

View file

@ -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.

File diff suppressed because it is too large Load diff

View file

@ -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

View file

@ -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).

View file

@ -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)))

View file

@ -1427,14 +1427,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))
@ -1447,6 +1440,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.

View file

@ -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;

View file

@ -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);