emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master feb88fa8ab 1/3: Bind C-c C-c and C-c C-k in recentf-dialog-mode


From: Stefan Kangas
Subject: master feb88fa8ab 1/3: Bind C-c C-c and C-c C-k in recentf-dialog-mode
Date: Wed, 22 Jun 2022 19:21:58 -0400 (EDT)

branch: master
commit feb88fa8abe94dbd39ed05dd68008a4eccbf56cd
Author: Stefan Kangas <stefan@marxist.se>
Commit: Stefan Kangas <stefan@marxist.se>

    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.
---
 lisp/recentf.el | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/lisp/recentf.el b/lisp/recentf.el
index b3bb6482d4..1005d4855f 100644
--- a/lisp/recentf.el
+++ b/lisp/recentf.el
@@ -1050,7 +1050,7 @@ That is, remove a non kept file from the recent list."
 (defun recentf-cancel-dialog (&rest _ignore)
   "Cancel the current dialog.
 IGNORE arguments."
-  (interactive)
+  (interactive nil recentf-dialog-mode)
   (kill-buffer (current-buffer))
   (message "Dialog canceled"))
 
@@ -1068,19 +1068,20 @@ Go to the beginning of buffer if not found."
     (error
      (goto-char (point-min)))))
 
-(defvar recentf-dialog-mode-map
-  (let ((km (copy-keymap recentf--shortcuts-keymap)))
-    (set-keymap-parent km widget-keymap)
-    (define-key km "q" #'recentf-cancel-dialog)
-    (define-key km "n" #'next-line)
-    (define-key km "p" #'previous-line)
-    km)
-  "Keymap used in recentf dialogs.")
+(defvar-keymap recentf-dialog-mode-map
+  :doc "Keymap used in recentf dialogs."
+  :parent (make-composed-keymap recentf--shortcuts-keymap widget-keymap)
+  "q"       #'recentf-cancel-dialog
+  "n"       #'next-line
+  "p"       #'previous-line
+  "C-c C-c" #'recentf-edit-list-validate
+  "C-c C-k" #'recentf-cancel-dialog)
 
 (define-derived-mode recentf-dialog-mode nil "recentf-dialog"
   "Major mode of recentf dialogs.
 
 \\{recentf-dialog-mode-map}"
+  :interactive nil
   :syntax-table nil
   :abbrev-table nil
   (setq truncate-lines t))
@@ -1117,6 +1118,7 @@ IGNORE other arguments."
 (defun recentf-edit-list-validate (&rest _ignore)
   "Process the recent list when the edit list dialog is committed.
 IGNORE arguments."
+  (interactive nil recentf-dialog-mode)
   (if recentf-edit-list
       (let ((i 0))
         (dolist (e recentf-edit-list)
@@ -1136,8 +1138,8 @@ IGNORE arguments."
     (widget-insert
      (format-message
       (substitute-command-keys
-       "Click on OK to delete selected files from the recent list.
-Click on Cancel or type \\[recentf-cancel-dialog] to cancel.\n")))
+       "Click on \"OK\" or type \\[recentf-edit-list-validate] to delete 
selected files from the recent list.
+Click on \"Cancel\" or type \\[recentf-cancel-dialog] to cancel.\n")))
     ;; Insert the list of files as checkboxes
     (dolist (item recentf-list)
       (widget-create 'checkbox



reply via email to

[Prev in Thread] Current Thread [Next in Thread]