unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Drew Adams <drew.adams@oracle.com>
To: Ergus <spacibba@aol.com>
Cc: contovob@tcd.ie, Eli Zaretskii <eliz@gnu.org>,
	emacs-devel@gnu.org, juri@linkov.net
Subject: RE: isearch region or thing at point.
Date: Sat, 4 May 2019 08:24:21 -0700 (PDT)	[thread overview]
Message-ID: <19478b8e-f8cb-48cd-9231-dd82b42b734b@default> (raw)
In-Reply-To: <20190504145636.34kaiqrji7zxsdhh@Ergus>

> >> This patch has changed a lot because some others made suggestions I
> >> considered useful. I will attach the new patch in another mail.
> >>
> >> On the other hand it makes sense that M-w should be used in case the
> >> user wants to add the text in the minibuffer to the kill-ring.
> >> (Something like isearchp-kill-ring-save)
> >>
> >> So maybe M-r (region) or M-i (insert) must be used for what I propose
> >> and Drew may add the isearch-kill-ring-save function he wrote and bind
> >> it to M-w. That way there will be all the copy functionalities in place.
> >
> >I would prefer that, yes.  `M-w' to copy to the
> >kill-ring (as usual).
> >
> >Do you need an actual patch to include the command
> >I sent, or can you please just include it (renaming
> >prefix `isearchp-' to `isearch-')?
> 
> >> But then we must recommend bind M-r or M-i (or whatever) for similar
> >> functionalities. And if possible correct other modes to be consistent
> >> with that (if that does not start a religious war here please).
>
> There are similar modes with commands to copy text from region into
> minibuffer and all them use different bindings. I just propose to unify
> that somehow when possible.
>
> >Sorry, I don't know what you mean, there.  `M-r' is
> >(and has long been) `isearch-toggle-regexp'.
>
> Sorry, I forgot that, So the only alternative is M-i.

There are other alternatives, too (but I'm not saying
they are necessarily better).  We have prefix `M-s',
for example.

But aside from a few, I prefer that we use it for
toggle commands.  Vanilla Emacs uses it for these:

M-s C-e	isearch-yank-line
M-s SPC	isearch-toggle-lax-whitespace
M-s '		isearch-toggle-char-fold
M-s _		isearch-toggle-symbol
M-s c		isearch-toggle-case-fold
M-s e		isearch-edit-string
M-s h r	isearch-highlight-regexp
M-s i		isearch-toggle-invisible
M-s o		isearch-occur
M-s r		isearch-toggle-regexp
M-s w		isearch-toggle-word

(Note that we already give 2 bindings to
`isearch-toggle-case-fold', which we need not do.)

And Isearch+ uses `M-s' additionally for these:

M-s M-SPC       isearchp-toggle-set-region
M-s M-k         isearchp-toggle-repeat-search-if-fail
M-s #           isearchp-toggle-showing-match-number
M-s %           isearchp-toggle-limit-match-numbers-to-region
M-s h L         isearchp-toggle-lazy-highlighting
M-s h R         isearchp-toggle-highlighting-regexp-groups
M-s h b         isearchp-toggle-lazy-highlight-full-buffer
M-s h d         isearchp-toggle-dimming-filter-failures
M-s h f         isearchp-highlight-matches-other-face
M-s h h         hlt-highlight-isearch-matches
M-s h l         isearchp-toggle-lazy-highlight-cleanup
M-s h u         hlt-unhighlight-isearch-matches
M-s u f         isearchp-unhighlight-last-face
M-s v           isearchp-toggle-option-toggle

> >> I will try to do the same for replace-like commands.
> >
> >(Not sure what you mean by that, either.)
> 
> When region is active; replace-string (and related) limits the replaces
> to the active region. But alternatively we could provide a simple hint
> that inserts the region text into minibuffer and deactivate it, so
> instead of limiting the replace to the region, the region can be used as
> the string to replace.
> 
> M-w M-% C-y RET => M-% M-i
> 
> Or similar.

Got it.  I agree that for Isearch and other things,
such as replacement, there are at least those two
very different ways to use the active region:

1. Copy its content to the kill ring (or the secondary
   selection or a register or...).

2. Limit the action to the region (e.g., limit search
   or replacement to the region).

That was in fact one of the points underlying my
message, though I didn't state it explicitly.

Replacement commands already let you limit the action
to the active region, even in vanilla Emacs.

Isearch+ (but not yet vanilla Isearch) also lets you
limit the search to the active region.

And in general when the region is active, the typical
change in behavior a command makes is to act on the
region instead of the whole buffer or the part of it
following point.

I agree that it might be good to have key bindings
that consistently reflect this difference - these
two different ways to use the active region.

There are additional ways in which a command can
make use of the active region, of course.  But these
two stand out as fairly general possibilities.

It would be good to "standardize" bindings - say
reserve `M-w' (e.g. on a prefix key) for the
"copy-region" (or similar) action, and find another
key (e.g. on a prefix key) for the "limit-to-region"
action.



  reply	other threads:[~2019-05-04 15:24 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-27  0:14 isearch region or thing at point Ergus
2019-04-27  2:15 ` Basil L. Contovounesios
2019-04-29  0:41   ` Ergus
2019-04-29  1:30     ` Ergus
2019-04-29  1:31     ` Ergus
2019-04-29 19:41     ` Juri Linkov
2019-04-29 20:50       ` Ergus
2019-04-30 15:39       ` Drew Adams
2019-04-30 16:57         ` Ergus
2019-04-30 19:58           ` Juri Linkov
2019-04-30 16:25       ` Ergus
2019-04-30 18:49         ` Noam Postavsky
2019-04-30 19:03           ` Ergus
2019-04-30 19:24             ` Noam Postavsky
2019-04-30 20:05               ` Ergus
2019-04-30 20:38                 ` Noam Postavsky
2019-04-30 22:39         ` Basil L. Contovounesios
2019-04-30 23:16           ` Ergus
2019-04-30 23:33             ` Basil L. Contovounesios
2019-05-01  0:13               ` Ergus
2019-05-01 20:57                 ` Juri Linkov
2019-05-03 16:27                 ` Basil L. Contovounesios
2019-05-01 11:20               ` Ergus
2019-05-01 14:33                 ` Drew Adams
2019-05-01 16:03                   ` Ergus
2019-05-01 16:25                     ` Drew Adams
2019-05-03 16:28                     ` Basil L. Contovounesios
2019-05-04  9:29                     ` Eli Zaretskii
2019-05-03 16:28                 ` Basil L. Contovounesios
2019-05-04  9:26                 ` Eli Zaretskii
2019-05-04 12:15                   ` Ergus
2019-05-04 14:17                     ` Drew Adams
2019-05-04 14:56                       ` Ergus
2019-05-04 15:24                         ` Drew Adams [this message]
2019-05-04 21:06                           ` Juri Linkov
2019-05-04 22:40                             ` Drew Adams
2019-05-06 19:41                               ` Juri Linkov
2019-05-07  2:56                                 ` Drew Adams
2019-05-07 19:56                                   ` Ergus

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=19478b8e-f8cb-48cd-9231-dd82b42b734b@default \
    --to=drew.adams@oracle.com \
    --cc=contovob@tcd.ie \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=juri@linkov.net \
    --cc=spacibba@aol.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 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).