diff options
| author | Stefan Kangas | 2022-06-22 13:36:19 +0200 |
|---|---|---|
| committer | Stefan Kangas | 2022-06-23 01:18:57 +0200 |
| commit | feb88fa8abe94dbd39ed05dd68008a4eccbf56cd (patch) | |
| tree | 0b96f539bc55da1542b5963fa9753be5edcc51c7 | |
| parent | ec1fffdeca9c87a92b8c35545121b4ee3eec3ece (diff) | |
| download | emacs-feb88fa8abe94dbd39ed05dd68008a4eccbf56cd.tar.gz emacs-feb88fa8abe94dbd39ed05dd68008a4eccbf56cd.zip | |
Bind C-c C-c and C-c C-k in recentf-dialog-mode
* lisp/recentf.el (recentf-dialog-mode-map): Prefer defvar-keymap.
Bind `C-c C-c' and `C-c C-k' to confirm/cancel the dialog.
(recentf-cancel-dialog, recentf-edit-list-validate): Add
interactive mode tags for 'recentf-dialog-mode'.
(recentf-dialog-mode): Mark as non-interactive.
(recentf-edit-list): Display key binding.
| -rw-r--r-- | lisp/recentf.el | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/lisp/recentf.el b/lisp/recentf.el index b3bb6482d48..1005d4855ff 100644 --- a/lisp/recentf.el +++ b/lisp/recentf.el | |||
| @@ -1050,7 +1050,7 @@ That is, remove a non kept file from the recent list." | |||
| 1050 | (defun recentf-cancel-dialog (&rest _ignore) | 1050 | (defun recentf-cancel-dialog (&rest _ignore) |
| 1051 | "Cancel the current dialog. | 1051 | "Cancel the current dialog. |
| 1052 | IGNORE arguments." | 1052 | IGNORE arguments." |
| 1053 | (interactive) | 1053 | (interactive nil recentf-dialog-mode) |
| 1054 | (kill-buffer (current-buffer)) | 1054 | (kill-buffer (current-buffer)) |
| 1055 | (message "Dialog canceled")) | 1055 | (message "Dialog canceled")) |
| 1056 | 1056 | ||
| @@ -1068,19 +1068,20 @@ Go to the beginning of buffer if not found." | |||
| 1068 | (error | 1068 | (error |
| 1069 | (goto-char (point-min))))) | 1069 | (goto-char (point-min))))) |
| 1070 | 1070 | ||
| 1071 | (defvar recentf-dialog-mode-map | 1071 | (defvar-keymap recentf-dialog-mode-map |
| 1072 | (let ((km (copy-keymap recentf--shortcuts-keymap))) | 1072 | :doc "Keymap used in recentf dialogs." |
| 1073 | (set-keymap-parent km widget-keymap) | 1073 | :parent (make-composed-keymap recentf--shortcuts-keymap widget-keymap) |
| 1074 | (define-key km "q" #'recentf-cancel-dialog) | 1074 | "q" #'recentf-cancel-dialog |
| 1075 | (define-key km "n" #'next-line) | 1075 | "n" #'next-line |
| 1076 | (define-key km "p" #'previous-line) | 1076 | "p" #'previous-line |
| 1077 | km) | 1077 | "C-c C-c" #'recentf-edit-list-validate |
| 1078 | "Keymap used in recentf dialogs.") | 1078 | "C-c C-k" #'recentf-cancel-dialog) |
| 1079 | 1079 | ||
| 1080 | (define-derived-mode recentf-dialog-mode nil "recentf-dialog" | 1080 | (define-derived-mode recentf-dialog-mode nil "recentf-dialog" |
| 1081 | "Major mode of recentf dialogs. | 1081 | "Major mode of recentf dialogs. |
| 1082 | 1082 | ||
| 1083 | \\{recentf-dialog-mode-map}" | 1083 | \\{recentf-dialog-mode-map}" |
| 1084 | :interactive nil | ||
| 1084 | :syntax-table nil | 1085 | :syntax-table nil |
| 1085 | :abbrev-table nil | 1086 | :abbrev-table nil |
| 1086 | (setq truncate-lines t)) | 1087 | (setq truncate-lines t)) |
| @@ -1117,6 +1118,7 @@ IGNORE other arguments." | |||
| 1117 | (defun recentf-edit-list-validate (&rest _ignore) | 1118 | (defun recentf-edit-list-validate (&rest _ignore) |
| 1118 | "Process the recent list when the edit list dialog is committed. | 1119 | "Process the recent list when the edit list dialog is committed. |
| 1119 | IGNORE arguments." | 1120 | IGNORE arguments." |
| 1121 | (interactive nil recentf-dialog-mode) | ||
| 1120 | (if recentf-edit-list | 1122 | (if recentf-edit-list |
| 1121 | (let ((i 0)) | 1123 | (let ((i 0)) |
| 1122 | (dolist (e recentf-edit-list) | 1124 | (dolist (e recentf-edit-list) |
| @@ -1136,8 +1138,8 @@ IGNORE arguments." | |||
| 1136 | (widget-insert | 1138 | (widget-insert |
| 1137 | (format-message | 1139 | (format-message |
| 1138 | (substitute-command-keys | 1140 | (substitute-command-keys |
| 1139 | "Click on OK to delete selected files from the recent list. | 1141 | "Click on \"OK\" or type \\[recentf-edit-list-validate] to delete selected files from the recent list. |
| 1140 | Click on Cancel or type \\[recentf-cancel-dialog] to cancel.\n"))) | 1142 | Click on \"Cancel\" or type \\[recentf-cancel-dialog] to cancel.\n"))) |
| 1141 | ;; Insert the list of files as checkboxes | 1143 | ;; Insert the list of files as checkboxes |
| 1142 | (dolist (item recentf-list) | 1144 | (dolist (item recentf-list) |
| 1143 | (widget-create 'checkbox | 1145 | (widget-create 'checkbox |