From e98ca32176871011451b04c0b952aef07d658f72 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Fri, 10 Dec 2021 12:32:49 +0100 Subject: [PATCH 1/6] Make dired-buffers-for-dir expand the DIR argument * lisp/dired.el (dired-buffers-for-dir): Expand DIR argument (bug#52395). (dired-find-buffer-nocreate, dired-clean-up-after-deletion): Adjust callers. --- lisp/dired.el | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lisp/dired.el b/lisp/dired.el index d0e547ba0b1..4e2a32de676 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -1265,8 +1265,7 @@ The return value is the target column for the file names." ;; Don't try to find a wildcard as a subdirectory. (string-equal dirname (file-name-directory dirname))) (let* ((cur-buf (current-buffer)) - (buffers (nreverse - (dired-buffers-for-dir (expand-file-name dirname)))) + (buffers (nreverse (dired-buffers-for-dir dirname))) (cur-buf-matches (and (memq cur-buf buffers) ;; Wildcards must match, too: (equal dired-directory dirname)))) @@ -2967,7 +2966,7 @@ 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'." - (setq dir (file-name-as-directory dir)) + (setq dir (file-name-as-directory (expand-file-name dir))) (let (result buf) (dolist (elt dired-buffers) (setq buf (cdr elt)) @@ -3518,7 +3517,7 @@ If the buffer has a wildcard pattern, check that it matches FILE. FILE may be nil, in which case ignore it. Return list of buffers where FUN succeeded (i.e., returned non-nil)." (let (success-list) - (dolist (buf (dired-buffers-for-dir (expand-file-name directory) file)) + (dolist (buf (dired-buffers-for-dir directory file)) (with-current-buffer buf (when (apply fun args) (push (buffer-name buf) success-list)))) @@ -3567,8 +3566,7 @@ 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 (expand-file-name fn) - nil 'subdirs))) + (let ((buf-list (dired-buffers-for-dir fn nil 'subdirs))) (and buf-list (or (and dired-clean-confirm-killing-deleted-buffers (y-or-n-p From 79825f724f5d04820d154725f83186efaa2b90e8 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Fri, 10 Dec 2021 13:11:26 +0100 Subject: [PATCH 2/6] Make keymap-lookup work for keymap results, too * lisp/keymap.el (keymap-lookup): Make this function work for non-symbol lookups, too (bug#52374). --- lisp/keymap.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lisp/keymap.el b/lisp/keymap.el index 48f087c5287..fd91689f887 100644 --- a/lisp/keymap.el +++ b/lisp/keymap.el @@ -411,9 +411,10 @@ specified buffer position instead of point are used." (error "Can't pass in both keymap and position")) (if keymap (let ((value (lookup-key keymap (key-parse key) accept-default))) - (when (and (not no-remap) + (if (and (not no-remap) (symbolp value)) - (or (command-remapping value) value))) + (or (command-remapping value) value) + value)) (key-binding (kbd key) accept-default no-remap position))) (defun keymap-local-lookup (keys &optional accept-default) From 88ea736c351c5a44460dff0de03010e764b64ab8 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Fri, 10 Dec 2021 14:11:22 +0100 Subject: [PATCH 3/6] ; * etc/NEWS: Improve recently added entry. --- etc/NEWS | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 0fee98d1191..5285f526d4d 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -617,8 +617,9 @@ flagging an image in either the thumbnail or display buffer shows the next image. --- -*** Now shows image information in the header line. -This replaces the message shown at the bottom of the screen. +*** Image information is now shown in the header line. +This replaces the message most navigation commands in the thumbnail +buffer used to show at the bottom of the screen. +++ *** 'image-dired-show-all-from-dir-max-files' has been increased to 500. From 9ccd3d323110cbb8f2a6f16655c241b5f42bbcbc Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Fri, 10 Dec 2021 15:33:54 +0100 Subject: [PATCH 4/6] Use defvar-keymap for package-menu-mode-map * lisp/emacs-lisp/package.el (package-menu-mode-map): Use defvar-keymap. --- lisp/emacs-lisp/package.el | 56 ++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 66bbd631a72..de4cebccca3 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -2768,35 +2768,33 @@ either a full name or nil, and EMAIL is a valid email address." ;;;; Package menu mode. -(defvar package-menu-mode-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map tabulated-list-mode-map) - (define-key map "\C-m" 'package-menu-describe-package) - (define-key map "u" 'package-menu-mark-unmark) - (define-key map "\177" 'package-menu-backup-unmark) - (define-key map "d" 'package-menu-mark-delete) - (define-key map "i" 'package-menu-mark-install) - (define-key map "U" 'package-menu-mark-upgrades) - (define-key map "r" 'revert-buffer) - (define-key map "~" 'package-menu-mark-obsolete-for-deletion) - (define-key map "w" 'package-browse-url) - (define-key map "x" 'package-menu-execute) - (define-key map "h" 'package-menu-quick-help) - (define-key map "H" #'package-menu-hide-package) - (define-key map "?" 'package-menu-describe-package) - (define-key map "(" #'package-menu-toggle-hiding) - (define-key map (kbd "/ /") 'package-menu-clear-filter) - (define-key map (kbd "/ a") 'package-menu-filter-by-archive) - (define-key map (kbd "/ d") 'package-menu-filter-by-description) - (define-key map (kbd "/ k") 'package-menu-filter-by-keyword) - (define-key map (kbd "/ N") 'package-menu-filter-by-name-or-description) - (define-key map (kbd "/ n") 'package-menu-filter-by-name) - (define-key map (kbd "/ s") 'package-menu-filter-by-status) - (define-key map (kbd "/ v") 'package-menu-filter-by-version) - (define-key map (kbd "/ m") 'package-menu-filter-marked) - (define-key map (kbd "/ u") 'package-menu-filter-upgradable) - map) - "Local keymap for `package-menu-mode' buffers.") +(defvar-keymap package-menu-mode-map + :doc "Local keymap for `package-menu-mode' buffers." + :parent tabulated-list-mode-map + "C-m" #'package-menu-describe-package + "u" #'package-menu-mark-unmark + "DEL" #'package-menu-backup-unmark + "d" #'package-menu-mark-delete + "i" #'package-menu-mark-install + "U" #'package-menu-mark-upgrades + "r" #'revert-buffer + "~" #'package-menu-mark-obsolete-for-deletion + "w" #'package-browse-url + "x" #'package-menu-execute + "h" #'package-menu-quick-help + "H" #'package-menu-hide-package + "?" #'package-menu-describe-package + "(" #'package-menu-toggle-hiding + "/ /" #'package-menu-clear-filter + "/ a" #'package-menu-filter-by-archive + "/ d" #'package-menu-filter-by-description + "/ k" #'package-menu-filter-by-keyword + "/ N" #'package-menu-filter-by-name-or-description + "/ n" #'package-menu-filter-by-name + "/ s" #'package-menu-filter-by-status + "/ v" #'package-menu-filter-by-version + "/ m" #'package-menu-filter-marked + "/ u" #'package-menu-filter-upgradable) (easy-menu-define package-menu-mode-menu package-menu-mode-map "Menu for `package-menu-mode'." From eba5cd3ca1acc581c4670e484ddc70a77d778192 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Fri, 10 Dec 2021 15:39:23 +0100 Subject: [PATCH 5/6] ; * lisp/dired.el: Remove code commented out since 2000. --- lisp/dired.el | 6 ------ 1 file changed, 6 deletions(-) diff --git a/lisp/dired.el b/lisp/dired.el index 4e2a32de676..b964fd9c181 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -2066,12 +2066,6 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST." (define-key map ":v" 'epa-dired-do-verify) (define-key map ":s" 'epa-dired-do-sign) (define-key map ":e" 'epa-dired-do-encrypt) - - ;; No need to do this, now that top-level items are fewer. - ;;;; - ;; Get rid of the Edit menu bar item to save space. - ;;(define-key map [menu-bar edit] 'undefined) - map) "Local keymap for Dired mode buffers.") From c9cb59bc4f68d6050451bc0a619fd3eb6a6ed554 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Fri, 10 Dec 2021 15:47:09 +0100 Subject: [PATCH 6/6] * etc/TODO: Entry about converting to defvar-keymap. --- etc/TODO | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/etc/TODO b/etc/TODO index cd06b1ea26e..22f5c099607 100644 --- a/etc/TODO +++ b/etc/TODO @@ -80,6 +80,10 @@ all interactive commands to see if they are only relevant in one particular mode. This requires care as some commands might be useful outside of the mode they were written for. +** Convert defvar foo-mode-map to defvar-keymap +Verify the conversion by comparing the value of the keymap before +converting it and after (you can see the value in 'C-h v'). + ** Write more tests Pick a fixed bug from the database, write a test case to make sure it stays fixed. Or pick your favorite programming major-mode, and write