diff options
author | Eli Zaretskii <eliz@gnu.org> | 2022-04-13 16:52:50 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2022-04-13 16:52:50 +0300 |
commit | 5a14406ecfbd1efd03a00c49a84c19d31bb77f48 (patch) | |
tree | 0ef3345816636a1530806b2585ba1f40c30c84de /lisp | |
parent | be42fdc6dc60bec1d14065d04dc43b693398c591 (diff) | |
parent | f2ae39829812098d8269eafbc0fcb98959ee5bb7 (diff) | |
download | emacs-5a14406ecfbd1efd03a00c49a84c19d31bb77f48.tar.gz emacs-5a14406ecfbd1efd03a00c49a84c19d31bb77f48.tar.bz2 emacs-5a14406ecfbd1efd03a00c49a84c19d31bb77f48.zip |
Merge from origin/emacs-28
# Conflicts:
# etc/NEWS
# lisp/desktop.el
# lisp/dired.el
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/dired.el | 55 | ||||
-rw-r--r-- | lisp/font-lock.el | 10 |
2 files changed, 40 insertions, 25 deletions
diff --git a/lisp/dired.el b/lisp/dired.el index 5accad8efd2..d0cf72adc58 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -3063,12 +3063,10 @@ You can then feed the file name(s) to other commands with \\[yank]." ;;; Keeping Dired buffers in sync with the filesystem and with each other -(defun dired-buffers-for-dir (dir &optional file subdirs) +(defun dired-buffers-for-dir (dir &optional file) "Return a list of buffers for DIR (top level or in-situ subdir). If FILE is non-nil, include only those whose wildcard pattern (if any) matches FILE. -If SUBDIRS is non-nil, also include the dired buffers of -directories below DIR. The list is in reverse order of buffer creation, most recent last. As a side effect, killed dired buffers for DIR are removed from `dired-buffers'." @@ -3080,20 +3078,35 @@ As a side effect, killed dired buffers for DIR are removed from ((null (buffer-name buf)) ;; Buffer is killed - clean up: (setq dired-buffers (delq elt dired-buffers))) - ((dired-in-this-tree-p (car elt) dir) + ((dired-in-this-tree-p dir (car elt)) (with-current-buffer buf - (when (and (or subdirs - (assoc dir dired-subdir-alist)) - (or (null file) - (if (stringp dired-directory) - (let ((wildcards (file-name-nondirectory - dired-directory))) - (or (zerop (length wildcards)) - (string-match-p (dired-glob-regexp wildcards) - file))) - (member (expand-file-name file dir) - (cdr dired-directory))))) - (setq result (cons buf result))))))) + (and (assoc dir dired-subdir-alist) + (or (null file) + (if (stringp dired-directory) + (let ((wildcards (file-name-nondirectory + dired-directory))) + (or (zerop (length wildcards)) + (string-match-p (dired-glob-regexp wildcards) + file))) + (member (expand-file-name file dir) + (cdr dired-directory)))) + (setq result (cons buf result))))))) + result)) + +(defun dired-buffers-for-dir-or-subdir (dir) + "Return a list of buffers for DIR or a subdirectory thereof. +As a side effect, killed dired buffers for DIR are removed from +`dired-buffers'." + (setq dir (file-name-as-directory dir)) + (let (result buf) + (dolist (elt dired-buffers) + (setq buf (cdr elt)) + (cond + ((null (buffer-name buf)) + ;; Buffer is killed - clean up: + (setq dired-buffers (delq elt dired-buffers))) + ((dired-in-this-tree-p (car elt) dir) + (setq result (cons buf result))))) result)) (defun dired-glob-regexp (pattern) @@ -3672,14 +3685,16 @@ confirmation. To disable the confirmation, see (file-name-nondirectory fn)))) (not dired-clean-confirm-killing-deleted-buffers)) (kill-buffer buf))) - (let ((buf-list (dired-buffers-for-dir fn nil 'subdirs))) + (let ((buf-list (dired-buffers-for-dir-or-subdir + (expand-file-name fn)))) (and buf-list (or (and dired-clean-confirm-killing-deleted-buffers (y-or-n-p (format - (ngettext "Kill Dired buffer of %s, too? " - "Kill Dired buffers of %s, too? " - (length buf-list)) + (ngettext + "Kill Dired buffer of %s, too? " + "Kill Dired buffers of %s and its sub-directories, too? " + (length buf-list)) (file-name-nondirectory ;; FN may end in a / if `dired-listing-switches' ;; contains -p, so we need to strip that diff --git a/lisp/font-lock.el b/lisp/font-lock.el index 5034c98d26e..488874a1755 100644 --- a/lisp/font-lock.el +++ b/lisp/font-lock.el @@ -391,7 +391,7 @@ This can be an \"!\" or the \"n\" in \"ifndef\".") ;; Fontification variables: (defvar font-lock-keywords nil - "A list of the keywords to highlight. + "A list of keywords and corresponding font-lock highlighting rules. There are two kinds of values: user-level, and compiled. A user-level keywords list is what a major mode or the user would @@ -416,10 +416,10 @@ point, and set `match-data' appropriately if it succeeds; like `re-search-forward' would). MATCHER regexps can be generated via the function `regexp-opt'. -FORM is an expression, whose value should be a keyword element, -evaluated when the keyword is (first) used in a buffer. This -feature can be used to provide a keyword that can only be -generated when Font Lock mode is actually turned on. +FORM is an expression, whose value should be a keyword element +of one of the above forms, evaluated when the keyword is (first) +used in a buffer. This feature can be used to provide a keyword +that can only be generated when Font Lock mode is actually turned on. HIGHLIGHT should be either MATCH-HIGHLIGHT or MATCH-ANCHORED. |