From: Juri Linkov <juri@jurta.org>
To: Thien-Thi Nguyen <ttn@gnuvola.org>
Cc: emacs-devel@gnu.org
Subject: Re: texinfo-show-structure and occur
Date: Mon, 15 Mar 2010 23:51:45 +0200 [thread overview]
Message-ID: <87vdcxtgoz.fsf@mail.jurta.org> (raw)
In-Reply-To: <873a02wok1.fsf@mail.jurta.org> (Juri Linkov's message of "Sun, 14 Mar 2010 23:57:05 +0200")
> `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/
prev parent reply other threads:[~2010-03-15 21:51 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-14 11:28 texinfo-show-structure and occur Thien-Thi Nguyen
2010-03-14 21:57 ` Juri Linkov
2010-03-15 3:57 ` Thien-Thi Nguyen
2010-03-21 10:55 ` Juri Linkov
2010-03-21 20:20 ` Thien-Thi Nguyen
2010-03-15 21:51 ` Juri Linkov [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87vdcxtgoz.fsf@mail.jurta.org \
--to=juri@jurta.org \
--cc=emacs-devel@gnu.org \
--cc=ttn@gnuvola.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).