bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#60815: 28.2; Hard-coded M-sff key binding in dired-aux.el


From: Juri Linkov
Subject: bug#60815: 28.2; Hard-coded M-sff key binding in dired-aux.el
Date: Sat, 14 Jan 2023 20:19:57 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu)

> I have set "(dired-isearch-filenames t)", and have rebound "M-s" to
> something that is not a keymap (other-window). The problem appears
> when I try to "isearch" in a Dired buffer. Then the following code:
>
> (defun dired-isearch-filenames-end ()
>   "Clean up the Dired file name search after terminating isearch."
>   (define-key isearch-mode-map "\M-sff" nil)
>   (dired-isearch-filenames-mode -1)
>   (remove-hook 'isearch-mode-end-hook #'dired-isearch-filenames-end t)
>   (unless isearch-suspended
>     (kill-local-variable 'dired-isearch-filenames)))
>
> runs and fails, because it can not bind to "M-sff". It works when I
> change "M-sff" to something that starts with a keymap-binding. This is
> also a problem in Emacs 27.

Maybe it should be configurable:

```
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index c390017e190..27ab35c04d2 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -3530,6 +3530,9 @@ dired-isearch-filenames-mode
     (setq isearch-success t isearch-adjusted t)
     (isearch-update)))
 
+(defvar dired-isearch-filenames-toggle-key "\M-sff"
+  "Key to toggle `dired-isearch-filenames-setup' in `isearch-mode'.")
+
 ;;;###autoload
 (defun dired-isearch-filenames-setup ()
   "Set up isearch to search in Dired file names.
@@ -3537,13 +3540,16 @@ dired-isearch-filenames-setup
   (when (or (eq dired-isearch-filenames t)
            (and (eq dired-isearch-filenames 'dwim)
                 (get-text-property (point) 'dired-filename)))
-    (define-key isearch-mode-map "\M-sff" 'dired-isearch-filenames-mode)
+    (when dired-isearch-filenames-toggle-key
+      (define-key isearch-mode-map dired-isearch-filenames-toggle-key
+                  'dired-isearch-filenames-mode))
     (dired-isearch-filenames-mode 1)
     (add-hook 'isearch-mode-end-hook #'dired-isearch-filenames-end nil t)))
 
 (defun dired-isearch-filenames-end ()
   "Clean up the Dired file name search after terminating isearch."
-  (define-key isearch-mode-map "\M-sff" nil)
+  (when dired-isearch-filenames-toggle-key
+    (define-key isearch-mode-map dired-isearch-filenames-toggle-key nil))
   (dired-isearch-filenames-mode -1)
   (remove-hook 'isearch-mode-end-hook #'dired-isearch-filenames-end t)
   (unless isearch-suspended
```





reply via email to

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