[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: texinfo-show-structure and occur
From: |
Juri Linkov |
Subject: |
Re: texinfo-show-structure and occur |
Date: |
Mon, 15 Mar 2010 23:51:45 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (x86_64-pc-linux-gnu) |
> `occur' already displays this information in the first line of the output
> buffer. I think we don't need to duplicate this information in the echo area
> that should be as concise as possible, like:
>
> Searched 1 buffer; found 573 matches
This patch ensures that the length of the message in the echo area
never gets more than the width of the window:
=== modified file 'lisp/replace.el'
--- lisp/replace.el 2010-01-13 08:35:10 +0000
+++ lisp/replace.el 2010-03-15 21:49:59 +0000
@@ -1162,12 +1162,13 @@ (defun occur-1 (regexp nlines bufs &opti
(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))
+ (if (> (length regexp) (- (window-width) 42))
+ "" (format " for `%s'" regexp))))
(setq occur-revert-arguments (list regexp nlines bufs))
(if (= count 0)
(kill-buffer occur-buf)
There is also a related problem with multi-occur. In the output it duplicates
the regexp for every found buffer. For instance, see how the string
`for "chapter"' is repeated:
2 matches for "chapter" in buffer: commands.texi
6:@chapter Characters, Keys and Commands
8: This chapter explains the character sets used by Emacs for input
1 match for "chapter" in buffer: cmdargs.texi
31:in batch mode. The sections of this chapter describe the available
and there is no information about the total number of the found matches.
The following patch adds a line with total number of matches and the regexp,
and removes duplicate regexp output for multi-occur, so the above example
becomes:
3 matches for "chapter":
2 matches in buffer: commands.texi
6:@chapter Characters, Keys and Commands
8: This chapter explains the character sets used by Emacs for input
1 match in buffer: cmdargs.texi
31:in batch mode. The sections of this chapter describe the available
=== modified file 'lisp/replace.el'
--- lisp/replace.el 2010-01-13 08:35:10 +0000
+++ lisp/replace.el 2010-03-15 21:47:14 +0000
@@ -1294,9 +1295,11 @@ (defun occur-engine (regexp buffers out-
(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)))
+ (if (> (length buffers) 1)
+ "" (format " for \"%s\"" regexp))
+ (buffer-name buf)))
(setq end (point))
(add-text-properties beg end
(append
@@ -1304,6 +1307,17 @@ (defun occur-engine (regexp buffers out-
`(font-lock-face ,title-face))
`(occur-title ,buf))))
(goto-char (point-min)))))))
+ (when (and (not (zerop globalcount)) (> (length buffers) 1))
+ (goto-char (point-min))
+ (let ((beg (point))
+ end)
+ (insert (format "%d match%s for \"%s\":\n"
+ globalcount (if (= globalcount 1) "" "es")
+ 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
--
Juri Linkov
http://www.jurta.org/emacs/