# HG changeset patch # User Juri Linkov # Date 1269168771 -7200 # Node ID e64817c0ab402723158545ec319247ab1f15224d # Parent c34ce344379ef7db32251e75e41e70c7c99b3e3f Fix message of multi-line occur regexps and multi-buffer header lines. http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg00457.html * replace.el (occur-1): Don't display regexp if it is longer than window-width. Use `query-replace-descr' to display regexp. (occur-engine): Don't display regexp in the buffer header for multi-buffer occur. Display a separate header line with total match count and regexp for multi-buffer occur. Use `query-replace-descr' to display regexp. diff -r c34ce344379e -r e64817c0ab40 lisp/ChangeLog --- a/lisp/ChangeLog Sat Mar 20 17:46:31 2010 -0400 +++ b/lisp/ChangeLog Sun Mar 21 12:52:51 2010 +0200 @@ -1,3 +1,15 @@ +2010-03-21 Juri Linkov + + Fix message of multi-line occur regexps and multi-buffer header lines. + http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg00457.html + + * replace.el (occur-1): Don't display regexp if it is longer + than window-width. Use `query-replace-descr' to display regexp. + (occur-engine): Don't display regexp in the buffer header for + multi-buffer occur. Display a separate header line with total + match count and regexp for multi-buffer occur. + Use `query-replace-descr' to display regexp. + 2010-03-20 Teodor Zlatanov * net/secrets.el: Fix parenthesis. diff -r c34ce344379e -r e64817c0ab40 lisp/replace.el --- a/lisp/replace.el Sat Mar 20 17:46:31 2010 -0400 +++ b/lisp/replace.el Sun Mar 21 12:52:51 2010 +0200 @@ -1166,12 +1166,15 @@ (not (eq occur-excluded-properties t))))) (let* ((bufcount (length active-bufs)) (diff (- (length bufs) bufcount))) - (message "Searched %d buffer%s%s; %s match%s for `%s'" + (message "Searched %d buffer%s%s; %s match%s%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)) + ;; Don't display regexp if with remaining text + ;; it is longer than window-width. + (if (> (+ (length regexp) 42) (window-width)) + "" (format " for `%s'" (query-replace-descr regexp))))) (setq occur-revert-arguments (list regexp nlines bufs)) (if (= count 0) (kill-buffer occur-buf) @@ -1298,9 +1301,13 @@ (goto-char headerpt) (let ((beg (point)) end) - (insert (format "%d match%s for \"%s\" in buffer: %s\n" + (insert (format "%d match%s%s in buffer: %s\n" matches (if (= matches 1) "" "es") - regexp (buffer-name buf))) + ;; Don't display regexp for multi-buffer. + (if (> (length buffers) 1) + "" (format " for \"%s\"" + (query-replace-descr regexp))) + (buffer-name buf))) (setq end (point)) (add-text-properties beg end (append @@ -1308,6 +1315,18 @@ `(font-lock-face ,title-face)) `(occur-title ,buf)))) (goto-char (point-min))))))) + ;; Display total match count and regexp for multi-buffer. + (when (and (not (zerop globalcount)) (> (length buffers) 1)) + (goto-char (point-min)) + (let ((beg (point)) + end) + (insert (format "%d match%s total for \"%s\":\n" + globalcount (if (= globalcount 1) "" "es") + (query-replace-descr regexp))) + (setq end (point)) + (add-text-properties beg end (when title-face + `(font-lock-face ,title-face)))) + (goto-char (point-min))) (if coding ;; CODING is buffer-file-coding-system of the first buffer ;; that locally binds it. Let's use it also for the output