Add `wdired-isearch-filter-read-only' to lisp/wdired.el.
authorJuri Linkov <juri@jurta.org>
Fri, 9 Sep 2011 15:49:00 +0000 (18:49 +0300)
committerJuri Linkov <juri@jurta.org>
Fri, 9 Sep 2011 15:49:00 +0000 (18:49 +0300)
* lisp/wdired.el (wdired-change-to-wdired-mode): Set buffer-local
`isearch-filter-predicate' to `wdired-isearch-filter-read-only'.
(wdired-isearch-filter-read-only): New function.

Fixes: debbugs:6362

lisp/ChangeLog
lisp/wdired.el

index 2cd03d9..7b0b489 100644 (file)
@@ -1,3 +1,9 @@
+2011-09-09  Juri Linkov  <juri@jurta.org>
+
+       * wdired.el (wdired-change-to-wdired-mode): Set buffer-local
+       `isearch-filter-predicate' to `wdired-isearch-filter-read-only'.
+       (wdired-isearch-filter-read-only): New function.  (Bug#6362)
+
 2011-09-09  Alan Mackenzie  <acm@muc.de>
 
        * progmodes/cc-mode.el (awk-mode): Prevent `define-derived-mode'
index f71979e..cc99bd4 100644 (file)
@@ -216,6 +216,8 @@ See `wdired-mode'."
        (buffer-substring (point-min) (point-max)))
   (set (make-local-variable 'wdired-old-point) (point))
   (set (make-local-variable 'query-replace-skip-read-only) t)
+  (set (make-local-variable 'isearch-filter-predicate)
+       'wdired-isearch-filter-read-only)
   (use-local-map wdired-mode-map)
   (force-mode-line-update)
   (setq buffer-read-only nil)
@@ -241,6 +243,11 @@ See `wdired-mode'."
                 "Press \\[wdired-finish-edit] when finished \
 or \\[wdired-abort-changes] to abort changes")))
 
+(defun wdired-isearch-filter-read-only (beg end)
+  "Skip matches that have a read-only property."
+  (and (isearch-filter-visible beg end)
+       (not (text-property-not-all (min beg end) (max beg end)
+                                  'read-only nil))))
 
 ;; Protect the buffer so only the filenames can be changed, and put
 ;; properties so filenames (old and new) can be easily found.