unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
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/




      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).