From d66ecdbb4ac22a85e63af7f5cda3eac007e3abd3 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Sun, 21 Mar 2010 12:52:51 +0200 Subject: [PATCH] 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. --- lisp/ChangeLog | 12 ++++++++++++ lisp/replace.el | 27 +++++++++++++++++++++++---- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f6b8fea964d..06e80db356d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -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 --git a/lisp/replace.el b/lisp/replace.el index 92edd2e2657..081d5c45f1d 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1166,12 +1166,15 @@ See also `multi-occur'." (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 @@ See also `multi-occur'." (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 @@ See also `multi-occur'." `(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 -- 2.39.2