* lisp/dired.el (dired-mode-map): Use defvar-keymap.

This commit is contained in:
Stefan Kangas 2021-12-18 15:53:00 +01:00
parent cb10eed97c
commit 21ef1740f0

View file

@ -1920,154 +1920,152 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST."
;;; Dired mode key bindings and menus
(defvar dired-mode-map
(defvar-keymap dired-mode-map
:doc "Local keymap for Dired mode buffers."
:full t
:parent special-mode-map
;; This looks ugly when substitute-command-keys uses C-d instead d:
;; (define-key dired-mode-map "\C-d" 'dired-flag-file-deletion)
(let ((map (make-keymap)))
(set-keymap-parent map special-mode-map)
(define-key map [mouse-2] 'dired-mouse-find-file-other-window)
(define-key map [follow-link] 'mouse-face)
;; Commands to mark or flag certain categories of files
(define-key map "#" 'dired-flag-auto-save-files)
(define-key map "." 'dired-clean-directory)
(define-key map "~" 'dired-flag-backup-files)
;; Upper case keys (except !) for operating on the marked files
(define-key map "A" 'dired-do-find-regexp)
(define-key map "C" 'dired-do-copy)
(define-key map "B" 'dired-do-byte-compile)
(define-key map "D" 'dired-do-delete)
(define-key map "G" 'dired-do-chgrp)
(define-key map "H" 'dired-do-hardlink)
(define-key map "L" 'dired-do-load)
(define-key map "M" 'dired-do-chmod)
(define-key map "O" 'dired-do-chown)
(define-key map "P" 'dired-do-print)
(define-key map "Q" 'dired-do-find-regexp-and-replace)
(define-key map "R" 'dired-do-rename)
(define-key map "S" 'dired-do-symlink)
(define-key map "T" 'dired-do-touch)
(define-key map "X" 'dired-do-shell-command)
(define-key map "Z" 'dired-do-compress)
(define-key map "c" 'dired-do-compress-to)
(define-key map "!" 'dired-do-shell-command)
(define-key map "&" 'dired-do-async-shell-command)
;; Comparison commands
(define-key map "=" 'dired-diff)
;; Tree Dired commands
(define-key map "\M-\C-?" 'dired-unmark-all-files)
(define-key map "\M-\C-d" 'dired-tree-down)
(define-key map "\M-\C-u" 'dired-tree-up)
(define-key map "\M-\C-n" 'dired-next-subdir)
(define-key map "\M-\C-p" 'dired-prev-subdir)
;; move to marked files
(define-key map "\M-{" 'dired-prev-marked-file)
(define-key map "\M-}" 'dired-next-marked-file)
;; Make all regexp commands share a `%' prefix:
;; We used to get to the submap via a symbol dired-regexp-prefix,
;; but that seems to serve little purpose, and copy-keymap
;; does a better job without it.
(define-key map "%" nil)
(define-key map "%u" 'dired-upcase)
(define-key map "%l" 'dired-downcase)
(define-key map "%d" 'dired-flag-files-regexp)
(define-key map "%g" 'dired-mark-files-containing-regexp)
(define-key map "%m" 'dired-mark-files-regexp)
(define-key map "%r" 'dired-do-rename-regexp)
(define-key map "%C" 'dired-do-copy-regexp)
(define-key map "%H" 'dired-do-hardlink-regexp)
(define-key map "%R" 'dired-do-rename-regexp)
(define-key map "%S" 'dired-do-symlink-regexp)
(define-key map "%&" 'dired-flag-garbage-files)
;; Commands for marking and unmarking.
(define-key map "*" nil)
(define-key map "**" 'dired-mark-executables)
(define-key map "*/" 'dired-mark-directories)
(define-key map "*@" 'dired-mark-symlinks)
(define-key map "*%" 'dired-mark-files-regexp)
(define-key map "*N" 'dired-number-of-marked-files)
(define-key map "*c" 'dired-change-marks)
(define-key map "*s" 'dired-mark-subdir-files)
(define-key map "*m" 'dired-mark)
(define-key map "*u" 'dired-unmark)
(define-key map "*?" 'dired-unmark-all-files)
(define-key map "*!" 'dired-unmark-all-marks)
(define-key map "U" 'dired-unmark-all-marks)
(define-key map "*\177" 'dired-unmark-backward)
(define-key map "*\C-n" 'dired-next-marked-file)
(define-key map "*\C-p" 'dired-prev-marked-file)
(define-key map "*t" 'dired-toggle-marks)
;; Lower keys for commands not operating on all the marked files
(define-key map "a" 'dired-find-alternate-file)
(define-key map "d" 'dired-flag-file-deletion)
(define-key map "e" 'dired-find-file)
(define-key map "f" 'dired-find-file)
(define-key map "\C-m" 'dired-find-file)
(put 'dired-find-file :advertised-binding "\C-m")
(define-key map "g" 'revert-buffer)
(define-key map "i" 'dired-maybe-insert-subdir)
(define-key map "j" 'dired-goto-file)
(define-key map "k" 'dired-do-kill-lines)
(define-key map "l" 'dired-do-redisplay)
(define-key map "m" 'dired-mark)
(define-key map "n" 'dired-next-line)
(define-key map "o" 'dired-find-file-other-window)
(define-key map "\C-o" 'dired-display-file)
(define-key map "p" 'dired-previous-line)
(define-key map "s" 'dired-sort-toggle-or-edit)
(define-key map "t" 'dired-toggle-marks)
(define-key map "u" 'dired-unmark)
(define-key map "v" 'dired-view-file)
(define-key map "w" 'dired-copy-filename-as-kill)
(define-key map "W" 'browse-url-of-dired-file)
(define-key map "x" 'dired-do-flagged-delete)
(define-key map "y" 'dired-show-file-type)
(define-key map "+" 'dired-create-directory)
;; moving
(define-key map "<" 'dired-prev-dirline)
(define-key map ">" 'dired-next-dirline)
(define-key map "^" 'dired-up-directory)
(define-key map " " 'dired-next-line)
(define-key map [?\S-\ ] 'dired-previous-line)
(define-key map [remap next-line] 'dired-next-line)
(define-key map [remap previous-line] 'dired-previous-line)
;; hiding
(define-key map "$" 'dired-hide-subdir)
(define-key map "\M-$" 'dired-hide-all)
(define-key map "(" 'dired-hide-details-mode)
;; isearch
(define-key map (kbd "M-s a C-s") 'dired-do-isearch)
(define-key map (kbd "M-s a M-C-s") 'dired-do-isearch-regexp)
(define-key map (kbd "M-s f C-s") 'dired-isearch-filenames)
(define-key map (kbd "M-s f M-C-s") 'dired-isearch-filenames-regexp)
;; misc
(define-key map [remap read-only-mode] 'dired-toggle-read-only)
;; `toggle-read-only' is an obsolete alias for `read-only-mode'
(define-key map [remap toggle-read-only] 'dired-toggle-read-only)
(define-key map "?" 'dired-summary)
(define-key map "\177" 'dired-unmark-backward)
(define-key map [remap undo] 'dired-undo)
(define-key map [remap advertised-undo] 'dired-undo)
(define-key map [remap vc-next-action] 'dired-vc-next-action)
;; thumbnail manipulation (image-dired)
(define-key map "\C-td" 'image-dired-display-thumbs)
(define-key map "\C-tt" 'image-dired-tag-files)
(define-key map "\C-tr" 'image-dired-delete-tag)
(define-key map "\C-tj" 'image-dired-jump-thumbnail-buffer)
(define-key map "\C-ti" 'image-dired-dired-display-image)
(define-key map "\C-tx" 'image-dired-dired-display-external)
(define-key map "\C-ta" 'image-dired-display-thumbs-append)
(define-key map "\C-t." 'image-dired-display-thumb)
(define-key map "\C-tc" 'image-dired-dired-comment-files)
(define-key map "\C-tf" 'image-dired-mark-tagged-files)
(define-key map "\C-t\C-t" 'image-dired-dired-toggle-marked-thumbs)
(define-key map "\C-te" 'image-dired-dired-edit-comment-and-tags)
;; encryption and decryption (epa-dired)
(define-key map ":d" 'epa-dired-do-decrypt)
(define-key map ":v" 'epa-dired-do-verify)
(define-key map ":s" 'epa-dired-do-sign)
(define-key map ":e" 'epa-dired-do-encrypt)
map)
"Local keymap for Dired mode buffers.")
;; "C-d" #'dired-flag-file-deletion
"<mouse-2>" #'dired-mouse-find-file-other-window
"<follow-link>" 'mouse-face
;; Commands to mark or flag certain categories of files
"#" #'dired-flag-auto-save-files
"." #'dired-clean-directory
"~" #'dired-flag-backup-files
;; Upper case keys (except !) for operating on the marked files
"A" #'dired-do-find-regexp
"C" #'dired-do-copy
"B" #'dired-do-byte-compile
"D" #'dired-do-delete
"G" #'dired-do-chgrp
"H" #'dired-do-hardlink
"L" #'dired-do-load
"M" #'dired-do-chmod
"O" #'dired-do-chown
"P" #'dired-do-print
"Q" #'dired-do-find-regexp-and-replace
"R" #'dired-do-rename
"S" #'dired-do-symlink
"T" #'dired-do-touch
"X" #'dired-do-shell-command
"Z" #'dired-do-compress
"c" #'dired-do-compress-to
"!" #'dired-do-shell-command
"&" #'dired-do-async-shell-command
;; Comparison commands
"=" #'dired-diff
;; Tree Dired commands
"M-DEL" #'dired-unmark-all-files
"C-M-d" #'dired-tree-down
"C-M-u" #'dired-tree-up
"C-M-n" #'dired-next-subdir
"C-M-p" #'dired-prev-subdir
;; move to marked files
"M-{" #'dired-prev-marked-file
"M-}" #'dired-next-marked-file
;; Make all regexp commands share a `%' prefix:
;; We used to get to the submap via a symbol dired-regexp-prefix,
;; but that seems to serve little purpose, and copy-keymap
;; does a better job without it.
"% u" #'dired-upcase
"% l" #'dired-downcase
"% d" #'dired-flag-files-regexp
"% g" #'dired-mark-files-containing-regexp
"% m" #'dired-mark-files-regexp
"% r" #'dired-do-rename-regexp
"% C" #'dired-do-copy-regexp
"% H" #'dired-do-hardlink-regexp
"% R" #'dired-do-rename-regexp
"% S" #'dired-do-symlink-regexp
"% &" #'dired-flag-garbage-files
;; Commands for marking and unmarking.
"* *" #'dired-mark-executables
"* /" #'dired-mark-directories
"* @" #'dired-mark-symlinks
"* %" #'dired-mark-files-regexp
"* N" #'dired-number-of-marked-files
"* c" #'dired-change-marks
"* s" #'dired-mark-subdir-files
"* m" #'dired-mark
"* u" #'dired-unmark
"* ?" #'dired-unmark-all-files
"* !" #'dired-unmark-all-marks
"U" #'dired-unmark-all-marks
"* DEL" #'dired-unmark-backward
"* C-n" #'dired-next-marked-file
"* C-p" #'dired-prev-marked-file
"* t" #'dired-toggle-marks
;; Lower keys for commands not operating on all the marked files
"a" #'dired-find-alternate-file
"d" #'dired-flag-file-deletion
"e" #'dired-find-file
"f" #'dired-find-file
"C-m" #'dired-find-file
"g" #'revert-buffer
"i" #'dired-maybe-insert-subdir
"j" #'dired-goto-file
"k" #'dired-do-kill-lines
"l" #'dired-do-redisplay
"m" #'dired-mark
"n" #'dired-next-line
"o" #'dired-find-file-other-window
"C-o" #'dired-display-file
"p" #'dired-previous-line
"s" #'dired-sort-toggle-or-edit
"t" #'dired-toggle-marks
"u" #'dired-unmark
"v" #'dired-view-file
"w" #'dired-copy-filename-as-kill
"W" #'browse-url-of-dired-file
"x" #'dired-do-flagged-delete
"y" #'dired-show-file-type
"+" #'dired-create-directory
;; moving
"<" #'dired-prev-dirline
">" #'dired-next-dirline
"^" #'dired-up-directory
"SPC" #'dired-next-line
"S-SPC" #'dired-previous-line
"<remap> <next-line>" #'dired-next-line
"<remap> <previous-line>" #'dired-previous-line
;; hiding
"$" #'dired-hide-subdir
"M-$" #'dired-hide-all
"(" #'dired-hide-details-mode
;; isearch
"M-s a C-s" #'dired-do-isearch
"M-s a C-M-s" #'dired-do-isearch-regexp
"M-s f C-s" #'dired-isearch-filenames
"M-s f C-M-s" #'dired-isearch-filenames-regexp
;; misc
"<remap> <read-only-mode>" #'dired-toggle-read-only
;; `toggle-read-only' is an obsolete alias for `read-only-mode'
"<remap> <toggle-read-only>" #'dired-toggle-read-only
"?" #'dired-summary
"DEL" #'dired-unmark-backward
"<remap> <undo>" #'dired-undo
"<remap> <advertised-undo>" #'dired-undo
"<remap> <vc-next-action>" #'dired-vc-next-action
;; thumbnail manipulation (image-dired)
"C-t d" #'image-dired-display-thumbs
"C-t t" #'image-dired-tag-files
"C-t r" #'image-dired-delete-tag
"C-t j" #'image-dired-jump-thumbnail-buffer
"C-t i" #'image-dired-dired-display-image
"C-t x" #'image-dired-dired-display-external
"C-t a" #'image-dired-display-thumbs-append
"C-t ." #'image-dired-display-thumb
"C-t c" #'image-dired-dired-comment-files
"C-t f" #'image-dired-mark-tagged-files
"C-t C-t" #'image-dired-dired-toggle-marked-thumbs
"C-t e" #'image-dired-dired-edit-comment-and-tags
;; encryption and decryption (epa-dired)
": d" #'epa-dired-do-decrypt
": v" #'epa-dired-do-verify
": s" #'epa-dired-do-sign
": e" #'epa-dired-do-encrypt)
(put 'dired-find-file :advertised-binding (kbd "RET"))
(easy-menu-define dired-mode-subdir-menu dired-mode-map
"Subdir menu for Dired mode."