aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/recentf.el24
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.
1052IGNORE arguments." 1052IGNORE 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.
1119IGNORE arguments." 1120IGNORE 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.
1140Click on Cancel or type \\[recentf-cancel-dialog] to cancel.\n"))) 1142Click 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