From: Juri Linkov <juri@jurta.org>
To: rms@gnu.org
Cc: emacs-devel@gnu.org
Subject: Re: isearch multiple buffers
Date: Sat, 20 Oct 2007 03:08:08 +0300 [thread overview]
Message-ID: <87lk9ylkbb.fsf@jurta.org> (raw)
In-Reply-To: <E1IgMvR-0001IP-R9@fencepost.gnu.org> (Richard Stallman's message of "Fri\, 12 Oct 2007 11\:59\:45 -0400")
[-- Attachment #1: Type: text/plain, Size: 5194 bytes --]
> > Perhaps, we should add a new user option with 3 possible values:
> > 1. don't stop in the initial buffer
> > 2. stop once in the initial buffer
> 3. stop in every buffer which contains the search string
> (and always stop in the first buffer)
>
> So there are three useful options (and let's try using the 3-rd as the
> default).
>
> If you want to implement all three, please do.
I implemented a new user option isearch-buffers-pause with these
three values, with the default to pause in every buffer that contains
the search string.
Also I implemented a new minor mode isearch-buffers-minor-mode
that sets a group of variables necessary for this feature.
Turning off this minor mode deletes all created buffer-local bindings.
So any major mode that uses this feature can simply set the variable
isearch-buffers-next-buffer-function and call isearch-buffers-minor-mode.
The code implementing this feature has so many lines now that I think it
needs a separate file. One possible name would be isearchb.el, but this
name is already occupied by another package. So I think a good name will
be isearch-et.el (isearch everything :-) as I plan to add more isearch
extensions to this new file.
Below are two NEWS entries, a patch for the first package add-log.el
that uses this feature, a small patch for isearch.el, and a new file
isearch-et.el:
** The package isearch-et.el has been added. It implements a new mode
`isearch-buffers-minor-mode' that allows isearch to search through
multiple buffers. In this mode a new variable
`isearch-buffers-next-buffer-function' defines the function to call to get
the next buffer to search in the series of multiple buffers.
** isearch can now search through multiple ChangeLog files.
When running isearch in a ChangeLog file, if the search fails,
then another C-s tries searching the previous ChangeLog,
if there is one (e.g. go from ChangeLog to ChangeLog.12).
Index: lisp/add-log.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/add-log.el,v
retrieving revision 1.197
diff -c -r1.197 add-log.el
*** lisp/add-log.el 10 Oct 2007 18:52:44 -0000 1.197
--- lisp/add-log.el 20 Oct 2007 00:00:55 -0000
***************
*** 760,766 ****
'change-log-resolve-conflict)
(set (make-local-variable 'adaptive-fill-regexp) "\\s *")
(set (make-local-variable 'font-lock-defaults)
! '(change-log-font-lock-keywords t nil nil backward-paragraph)))
;; It might be nice to have a general feature to replace this. The idea I
;; have is a variable giving a regexp matching text which should not be
--- 760,788 ----
'change-log-resolve-conflict)
(set (make-local-variable 'adaptive-fill-regexp) "\\s *")
(set (make-local-variable 'font-lock-defaults)
! '(change-log-font-lock-keywords t nil nil backward-paragraph))
! (set (make-local-variable 'isearch-buffers-next-buffer-function)
! 'change-log-next-buffer)
! (isearch-buffers-minor-mode))
!
! (defun change-log-next-buffer (&optional buffer wrap)
! "Return the next buffer in the series of ChangeLog file buffers.
! This function is used for multiple buffers isearch.
! A sequence of buffers is formed by ChangeLog files with decreasing
! numeric file name suffixes in the directory of the initial ChangeLog
! file were isearch was started."
! (let* ((name (change-log-name))
! (files (cons name (sort (file-expand-wildcards
! (concat name "[-.][0-9]*"))
! (lambda (a b)
! (version< (substring b (length name))
! (substring a (length name)))))))
! (files (if isearch-forward files (reverse files))))
! (find-file-noselect
! (if wrap
! (car files)
! (cadr (member (file-name-nondirectory (buffer-file-name buffer))
! files))))))
;; It might be nice to have a general feature to replace this. The idea I
;; have is a variable giving a regexp matching text which should not be
Index: lisp/isearch.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/isearch.el,v
retrieving revision 1.303
diff -c -r1.303 isearch.el
*** lisp/isearch.el 29 Aug 2007 05:28:05 -0000 1.303
--- lisp/isearch.el 20 Oct 2007 00:02:31 -0000
***************
*** 2035,2042 ****
(if isearch-forward (< pos2 pos1) (> pos2 pos1))))
(setq pos1 pos2)
(set-match-data match-data)))))
! (if pos1
! (goto-char pos1))
pos1))
(defun isearch-search ()
--- 2045,2059 ----
(if isearch-forward (< pos2 pos1) (> pos2 pos1))))
(setq pos1 pos2)
(set-match-data match-data)))))
! (when pos1
! ;; When using multiple buffers isearch, switch to the new buffer here,
! ;; because `save-excursion' above doesn't allow doing it inside funcall.
! (if (and (boundp 'isearch-buffers-next-buffer-function)
! isearch-buffers-next-buffer-function
! (boundp 'isearch-buffers-current-buffer)
! (buffer-live-p isearch-buffers-current-buffer))
! (switch-to-buffer isearch-buffers-current-buffer))
! (goto-char pos1))
pos1))
(defun isearch-search ()
[-- Attachment #2: isearch-et.el --]
[-- Type: application/emacs-lisp, Size: 7445 bytes --]
[-- Attachment #3: Type: text/plain, Size: 45 bytes --]
--
Juri Linkov
http://www.jurta.org/emacs/
[-- Attachment #4: Type: text/plain, Size: 142 bytes --]
_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel
next prev parent reply other threads:[~2007-10-20 0:08 UTC|newest]
Thread overview: 164+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-06 19:52 isearch multiple buffers Juri Linkov
2007-10-07 15:37 ` Dan Nicolaescu
2007-10-08 18:03 ` Richard Stallman
2007-10-08 19:18 ` Juri Linkov
2007-10-08 19:59 ` Eric Hanchrow
2007-10-08 22:52 ` Juri Linkov
2007-10-11 9:25 ` Johan Bockgård
2007-10-11 9:45 ` Juri Linkov
2007-10-11 14:14 ` Stefan Monnier
2007-10-11 23:48 ` Juri Linkov
2007-10-11 17:41 ` Richard Stallman
2007-10-11 23:52 ` Juri Linkov
2007-10-12 8:42 ` Johan Bockgård
2007-10-12 15:59 ` Richard Stallman
2007-10-12 16:37 ` Stefan Monnier
2007-10-20 0:08 ` Juri Linkov [this message]
2007-10-21 7:26 ` Richard Stallman
2007-10-21 20:37 ` Juri Linkov
2007-10-21 23:39 ` Miles Bader
2007-10-21 23:50 ` Lennart Borgman (gmail)
2007-10-22 0:51 ` Stefan Monnier
2007-10-22 1:01 ` Miles Bader
2007-10-23 7:12 ` Richard Stallman
2007-10-23 8:17 ` David Kastrup
2007-10-23 17:53 ` Richard Stallman
2007-10-23 20:04 ` Eli Zaretskii
2007-10-23 21:44 ` Andreas Schwab
2007-10-24 4:22 ` Eli Zaretskii
2007-10-25 2:10 ` Richard Stallman
2007-10-24 8:33 ` Richard Stallman
2007-10-23 20:01 ` Eli Zaretskii
2007-10-23 23:33 ` Miles Bader
2007-10-24 0:52 ` Stefan Monnier
2007-10-24 4:18 ` Eli Zaretskii
2007-10-24 5:51 ` Stefan Monnier
2007-10-24 19:00 ` Eli Zaretskii
2007-10-24 4:16 ` Eli Zaretskii
2007-10-24 4:51 ` Miles Bader
2007-10-24 18:58 ` Eli Zaretskii
2007-10-24 23:55 ` Miles Bader
2007-10-25 4:15 ` Eli Zaretskii
2007-10-25 6:21 ` Miles Bader
2007-10-25 20:55 ` Juri Linkov
2007-10-25 21:42 ` Eli Zaretskii
2007-10-25 11:02 ` Robert J. Chassell
2007-10-25 22:08 ` Eli Zaretskii
2007-10-26 1:30 ` Robert J. Chassell
2007-10-26 9:32 ` Eli Zaretskii
2007-10-26 10:05 ` Robert J. Chassell
2007-10-29 0:08 ` Michael Olson
2007-10-26 15:16 ` Dan Nicolaescu
2007-10-26 15:32 ` Juanma Barranquero
2007-10-26 15:36 ` David Kastrup
2007-10-26 15:42 ` Juanma Barranquero
2007-10-26 18:42 ` Stefan Monnier
2007-10-26 19:23 ` Eli Zaretskii
2007-10-26 18:52 ` Eli Zaretskii
2007-10-26 18:49 ` Eli Zaretskii
2007-10-26 19:21 ` Eli Zaretskii
2007-10-26 19:41 ` Dan Nicolaescu
2007-10-26 20:01 ` Jason Rumney
2007-10-26 20:19 ` David Kastrup
2007-10-26 20:01 ` Eli Zaretskii
2007-10-26 20:38 ` Stefan Monnier
2007-10-27 13:57 ` Richard Stallman
2007-10-27 15:01 ` Eli Zaretskii
2007-10-28 13:50 ` Richard Stallman
2007-10-27 17:28 ` Dan Nicolaescu
2007-10-27 22:16 ` Eli Zaretskii
2007-10-28 13:50 ` Richard Stallman
2007-10-28 13:50 ` Richard Stallman
2007-10-28 16:45 ` desupporting X10 and old X11 releases (was: Re: isearch multiple buffers) Dan Nicolaescu
2007-10-29 7:30 ` desupporting X10 and old X11 releases Jan Djärv
2007-10-29 19:42 ` Eli Zaretskii
2007-10-30 7:33 ` Jan Djärv
2007-10-29 23:35 ` Richard Stallman
2007-10-30 13:52 ` Ulrich Mueller
2007-10-31 7:46 ` Richard Stallman
2007-10-29 9:21 ` desupporting X10 and old X11 releases (was: Re: isearch multiple buffers) Richard Stallman
2007-10-29 9:21 ` Richard Stallman
2007-10-28 18:38 ` abandon K&R C ?(was: " Dan Nicolaescu
2007-10-29 9:21 ` Richard Stallman
2007-10-29 19:46 ` Eli Zaretskii
2007-10-29 23:41 ` abandon K&R C ? Miles Bader
2007-10-29 7:21 ` isearch multiple buffers Jan Djärv
2007-10-29 23:35 ` Richard Stallman
2007-10-31 3:35 ` remove support for Sun windows (was Re: isearch multiple buffers) Dan Nicolaescu
2007-10-31 23:57 ` Richard Stallman
2007-11-01 3:09 ` Dan Nicolaescu
2007-11-01 7:44 ` isearch multiple buffers Jan Djärv
2007-11-09 8:26 ` List of platforms to delete (was: Re: isearch multiple buffers) Dan Nicolaescu
2007-10-25 6:47 ` isearch multiple buffers martin rudalics
2007-10-25 7:02 ` Miles Bader
2007-10-25 8:26 ` Juanma Barranquero
2007-10-25 11:08 ` David Kastrup
2007-10-25 11:19 ` Juanma Barranquero
2007-10-25 14:03 ` David Kastrup
2007-10-25 14:08 ` Juanma Barranquero
2007-10-25 20:54 ` Juri Linkov
2007-10-25 21:56 ` Juanma Barranquero
2007-10-25 7:45 ` 8.3 filename restriction Kenichi Handa
2007-10-25 10:53 ` tomas
2007-10-25 22:01 ` Eli Zaretskii
2007-10-25 12:36 ` martin rudalics
2007-10-25 22:11 ` Eli Zaretskii
2007-10-25 21:48 ` Eli Zaretskii
2007-10-26 3:48 ` Richard Stallman
2007-10-22 0:33 ` isearch multiple buffers Juri Linkov
2007-10-22 23:48 ` Juri Linkov
2007-10-23 7:12 ` Richard Stallman
2007-10-23 7:12 ` Richard Stallman
2007-10-23 23:59 ` Juri Linkov
2007-10-24 0:32 ` Drew Adams
2007-10-24 16:31 ` buffer order [was: isearch multiple buffers] Drew Adams
2007-10-25 0:47 ` buffer order Miles Bader
2007-10-24 21:33 ` isearch multiple buffers Juri Linkov
2007-10-24 22:52 ` Drew Adams
2007-10-24 8:33 ` Richard Stallman
2007-10-24 21:23 ` Juri Linkov
2007-10-25 9:01 ` Richard Stallman
2007-10-25 20:57 ` Juri Linkov
2007-10-25 21:51 ` Drew Adams
2007-10-26 23:05 ` Juri Linkov
2007-10-27 0:01 ` Lennart Borgman (gmail)
2007-10-27 0:19 ` Drew Adams
2007-10-27 7:22 ` Lennart Borgman (gmail)
2007-10-27 16:20 ` Drew Adams
2007-10-27 22:54 ` Juri Linkov
2007-10-27 23:37 ` Drew Adams
2007-10-28 1:31 ` Juri Linkov
2007-10-28 13:50 ` Richard Stallman
2007-10-28 15:03 ` Juri Linkov
2007-10-29 9:21 ` Richard Stallman
2007-10-27 23:41 ` Richard Stallman
2007-10-28 0:18 ` Drew Adams
2007-10-28 1:32 ` Juri Linkov
2007-10-28 3:22 ` Drew Adams
2007-10-28 4:14 ` Luc Teirlinck
2007-10-28 10:52 ` Juri Linkov
2007-10-27 0:13 ` Drew Adams
2007-10-27 2:10 ` Miles Bader
2007-10-27 2:39 ` Drew Adams
2007-10-27 3:46 ` Miles Bader
2007-10-27 4:29 ` Drew Adams
2007-10-27 23:27 ` Juri Linkov
2007-10-28 0:10 ` Drew Adams
2007-10-28 1:33 ` Juri Linkov
2007-10-27 13:58 ` Richard Stallman
2007-10-27 16:20 ` Drew Adams
2007-10-27 22:47 ` Juri Linkov
2007-10-27 23:26 ` Drew Adams
2007-10-28 13:51 ` Richard Stallman
2007-10-25 9:01 ` Richard Stallman
2007-10-09 20:03 ` Richard Stallman
2008-07-20 0:40 ` Juri Linkov
2008-07-20 4:11 ` Miles Bader
2008-07-20 19:34 ` Juri Linkov
2008-07-20 17:21 ` Richard M Stallman
2008-07-20 19:38 ` Juri Linkov
2008-07-21 3:29 ` Richard M Stallman
2008-07-21 9:07 ` Juri Linkov
2008-07-21 6:53 ` Thomas Link
2008-07-21 9:09 ` Juri Linkov
2008-07-21 10:42 ` Thomas Link
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87lk9ylkbb.fsf@jurta.org \
--to=juri@jurta.org \
--cc=emacs-devel@gnu.org \
--cc=rms@gnu.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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.