emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: isearch and region ?


From: Drew Adams
Subject: RE: isearch and region ?
Date: Tue, 7 Nov 2017 07:26:25 -0800 (PST)

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]