[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
```
bug#60815: 28.2; Hard-coded M-sff key binding in dired-aux.el,
Juri Linkov <=