]> code.delx.au - gnu-emacs/commitdiff
(occur-1): Bind inhibit-read-only so that erase-buffer doesn't barf
authorEli Zaretskii <eliz@gnu.org>
Sat, 7 May 2005 13:46:42 +0000 (13:46 +0000)
committerEli Zaretskii <eliz@gnu.org>
Sat, 7 May 2005 13:46:42 +0000 (13:46 +0000)
on read-only text properties (likewise for add-text-properties in
occur-engine).  Mark buffer as unmodified.
(occur-engine): Don't set buffer-read-only here.

lisp/ChangeLog
lisp/replace.el

index d6cc0b606572c057df79aaa7af3c18a470141948..48253061bfa1d48d7044d32995b335a39f259e92 100644 (file)
@@ -1,3 +1,11 @@
+2005-05-07  Matt Hodges  <MPHodges@member.fsf.org>  (tiny change)
+
+       * replace.el (occur-1): Bind inhibit-read-only so that
+       erase-buffer doesn't barf on read-only text properties (likewise
+       for add-text-properties in occur-engine).  Mark buffer as
+       unmodified.
+       (occur-engine): Don't set buffer-read-only here.
+
 2005-05-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * pcvs.el (cvs-mode-commit, cvs-mode-edit-log): Don't fiddle with
index dc8eb131b72104f83c803948d6d231a9f547f3ae..1cef7ecc52abb1f87add7d2575bf131736bfccbb 100644 (file)
@@ -977,32 +977,33 @@ See also `multi-occur'."
     (setq occur-buf (get-buffer-create buf-name))
 
     (with-current-buffer occur-buf
-      (setq buffer-read-only nil)
       (occur-mode)
-      (erase-buffer)
-      (let ((count (occur-engine
-                   regexp active-bufs occur-buf
-                   (or nlines list-matching-lines-default-context-lines)
-                   (and case-fold-search
-                        (isearch-no-upper-case-p regexp t))
-                   list-matching-lines-buffer-name-face
-                   nil list-matching-lines-face t)))
-       (let* ((bufcount (length active-bufs))
-              (diff (- (length bufs) bufcount)))
-         (message "Searched %d buffer%s%s; %s match%s for `%s'"
-                  bufcount (if (= bufcount 1) "" "s")
-                  (if (zerop diff) "" (format " (%d killed)" diff))
-                  (if (zerop count) "no" (format "%d" count))
-                  (if (= count 1) "" "es")
-                  regexp))
-       (setq occur-revert-arguments (list regexp nlines bufs)
-             buffer-read-only t)
-       (if (> count 0)
-           (progn
-             (display-buffer occur-buf)
-             (setq next-error-last-buffer occur-buf))
-         (kill-buffer occur-buf)))
-      (run-hooks 'occur-hook))))
+      (let ((inhibit-read-only t))
+       (erase-buffer)
+       (let ((count (occur-engine
+                     regexp active-bufs occur-buf
+                     (or nlines list-matching-lines-default-context-lines)
+                     (and case-fold-search
+                          (isearch-no-upper-case-p regexp t))
+                     list-matching-lines-buffer-name-face
+                     nil list-matching-lines-face t)))
+         (let* ((bufcount (length active-bufs))
+                (diff (- (length bufs) bufcount)))
+           (message "Searched %d buffer%s%s; %s match%s for `%s'"
+                    bufcount (if (= bufcount 1) "" "s")
+                    (if (zerop diff) "" (format " (%d killed)" diff))
+                    (if (zerop count) "no" (format "%d" count))
+                    (if (= count 1) "" "es")
+                    regexp))
+         (setq occur-revert-arguments (list regexp nlines bufs))
+         (if (> count 0)
+             (progn
+               (display-buffer occur-buf)
+               (setq next-error-last-buffer occur-buf))
+           (kill-buffer occur-buf)))
+       (run-hooks 'occur-hook))
+      (setq buffer-read-only t)
+      (set-buffer-modified-p nil))))
 
 (defun occur-engine-add-prefix (lines)
   (mapcar
@@ -1013,7 +1014,6 @@ See also `multi-occur'."
 (defun occur-engine (regexp buffers out-buf nlines case-fold-search
                            title-face prefix-face match-face keep-props)
   (with-current-buffer out-buf
-    (setq buffer-read-only nil)
     (let ((globalcount 0)
          (coding nil))
       ;; Map over all the buffers