From: Drew Adams <drew.adams@oracle.com>
To: Jean-Christophe Helary <jean.christophe.helary@gmail.com>,
emacs-devel <emacs-devel@gnu.org>
Subject: RE: isearch and region ?
Date: Tue, 7 Nov 2017 07:26:25 -0800 (PST) [thread overview]
Message-ID: <c30934be-48f1-4a68-be67-b11a33c7f4a6@default> (raw)
In-Reply-To: <53A25592-F1EF-4216-A85A-63CDDBF41A4D@gmail.com>
>> isearch is incremental, so most of the region-affecting
>> actions would conflict with it.
>
> But search is not incremental and does not return a region either.
> It just puts point at the end of the match. I guess that's useful
> when you are trying to create a region from the original point
> (where you'd put the mark) to the end of the matching string,
> but that's quite a limited use. Or is search designed only for
> navigation in the document? What's the point having a search that
> does not *find*?
>
> Is there a search that returns the matching string as a region?
...
> I see that there are lots of isearch-yank commands, but no
> isearch-kill...
I responded to this already on help-gnu-emacs. You have that
possibility with Isearch+, using `C-M-RET'.
> On the help list, I was suggested to use C-backspace after
> an isearch since the point is at the end of the match, but
> that only deletes a "word" and not the full match.
>
> By the way, what is the status of the beginning of the
> match as highlighted by isearch? It is not a mark, and
> it is not point...
>
> You would need an isearch command that (1) marks the current
> occurrence as a region, and (2) exits isearch mode so you
> can affect the region with your next command. I understand that.
>
> On the other hand, some commands could work right out of
> isearch mode, if suitably implemented:
> * Deleting with Delete.
> * Cutting (killing) and copying.
The behavior of `isearchp-act-on-demand' (`C-M-RET', by
default) in Isearch+ is arbitrary - configurable, bindable.
You can have it do anything you want to the current search
hit.
You can also define any number of different commands that
use it as their base, let-binding different actions for
their purposes. Bind those commands to different keys in
Isearch. End of story.
You don't need to have the search hit be selected as the
active region; you just need to act on it.
But if, for some reason, you really wanted to activate it
as the region temporarily, e.g., to leverage an existing
function that acts on the region, that too is trivial to
do in a function that you use as the value of
`isearchp-on-demand-action-function' (which is what is
used by `isearchp-act-on-demand').
As for other uses of the region wrt Isearch: Isearch+
offers these possibilities:
* Set the region around the last search hit visited:
option `isearchp-set-region-flag', toggle with
`M-s M-SPC'. (_After_ searching you can also use
command `isearchp-set-region-around-search-target'
to set the region.)
* Restrict search to the active region: option
`isearchp-restrict-to-region-flag', toggle with
`C-x n'. Vanilla Emacs has this for query-replace
but not for Isearch.
Restriction of searching to the active region works
also for a rectangular region.
* Option `isearchp-deactivate-region-flag': whether to
deactivate the region during searching (e.g. for
better visibility)
If you use also library `isearch-prop.el' then you
can use command `isearchp-put-prop-on-region' to add
any text property to the region. This gives you an
easy way to set up contexts for text-property search
(which is provided by that library). For property
`face', empty input to `isearchp-put-prop-on-region'
removes all faces from the region.
next prev parent reply other threads:[~2017-11-07 15:26 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-07 7:39 isearch and region ? Jean-Christophe Helary
2017-11-07 8:31 ` Yuri Khan
2017-11-07 9:08 ` Jean-Christophe Helary
2017-11-07 15:26 ` Drew Adams [this message]
2017-11-07 15:54 ` Jean-Christophe Helary
2017-11-07 9:13 ` Damien Wyart
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=c30934be-48f1-4a68-be67-b11a33c7f4a6@default \
--to=drew.adams@oracle.com \
--cc=emacs-devel@gnu.org \
--cc=jean.christophe.helary@gmail.com \
/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.