]> git.eshelyaron.com Git - emacs.git/commitdiff
(dired-isearch-filenames): Add new context-dependent
authorJuri Linkov <juri@jurta.org>
Sat, 22 Nov 2008 20:40:28 +0000 (20:40 +0000)
committerJuri Linkov <juri@jurta.org>
Sat, 22 Nov 2008 20:40:28 +0000 (20:40 +0000)
option `dwim'.  Change non-dwim option from `dired-filename' to `t'.
Doc fix.
(dired-isearch-filenames-setup): Run filename Isearch only when
dired-isearch-filenames is t or dired-isearch-filenames is `dwim'
and the text property `dired-filename' at point is non-nil.
In this case also set isearch-message-prefix-add to "filename ".
(dired-isearch-filenames-end): Set isearch-message-prefix-add to nil.
(dired-isearch-filenames, dired-isearch-filenames-regexp):
Don't let-bind isearch-message-prefix-add since this is done now
in dired-isearch-filenames-setup.

lisp/dired-aux.el

index 1df5dc82dcff89e52fe72f2b5f7a6ab75bc58cc0..358e852c3ae9a03db5243c32aea29166f914f1f3 100644 (file)
@@ -2304,9 +2304,13 @@ Use \\[dired-hide-subdir] to (un)hide a particular subdirectory."
 ;; Search only in file names in the Dired buffer.
 
 (defcustom dired-isearch-filenames nil
-  "*If non-nil, Isearch in Dired matches only file names."
+  "*Non-nil to Isearch in file names only.
+If t, Isearch in Dired always matches only file names.
+If `dwim', Isearch matches file names when initial point position is on
+a file name.  Otherwise, it searches the whole buffer without restrictions."
   :type '(choice (const :tag "No restrictions" nil)
-                (const :tag "Isearch only in file names" dired-filename))
+                (const :tag "When point is on a file name initially, search file names" dwim)
+                (const :tag "Always search in file names" t))
   :group 'dired
   :version "23.1")
 
@@ -2329,7 +2333,10 @@ When off, it uses the default predicate `isearch-filter-invisible'."
 (defun dired-isearch-filenames-setup ()
   "Set up isearch to search in Dired file names.
 Intended to be added to `isearch-mode-hook'."
-  (when dired-isearch-filenames
+  (when (or (eq dired-isearch-filenames t)
+           (and (eq dired-isearch-filenames 'dwim)
+                (get-text-property (point) 'dired-filename)))
+    (setq isearch-message-prefix-add "filename ")
     (define-key isearch-mode-map "\M-sf" 'dired-isearch-filenames-toggle)
     (setq dired-isearch-filter-predicate-orig
          (default-value 'isearch-filter-predicate))
@@ -2338,6 +2345,7 @@ Intended to be added to `isearch-mode-hook'."
 
 (defun dired-isearch-filenames-end ()
   "Clean up the Dired file name search after terminating isearch."
+  (setq isearch-message-prefix-add nil)
   (define-key isearch-mode-map "\M-sf" nil)
   (setq-default isearch-filter-predicate dired-isearch-filter-predicate-orig)
   (remove-hook 'isearch-mode-end-hook 'dired-isearch-filenames-end t))
@@ -2354,16 +2362,14 @@ Intended to be added to `isearch-mode-hook'."
 (defun dired-isearch-filenames ()
   "Search for a string using Isearch only in file names in the Dired buffer."
   (interactive)
-  (let ((dired-isearch-filenames t)
-       (isearch-message-prefix-add "filename "))
+  (let ((dired-isearch-filenames t))
     (isearch-forward)))
 
 ;;;###autoload
 (defun dired-isearch-filenames-regexp ()
   "Search for a regexp using Isearch only in file names in the Dired buffer."
   (interactive)
-  (let ((dired-isearch-filenames t)
-       (isearch-message-prefix-add "filename "))
+  (let ((dired-isearch-filenames t))
     (isearch-forward-regexp)))
 
 \f