unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Juri Linkov <juri@linkov.net>
To: Tino Calancha <tino.calancha@gmail.com>
Cc: spacibba@aol.com, npostavs@gmail.com, 39512@debbugs.gnu.org,
	contovob@tcd.ie
Subject: bug#39512: 28.0.50; Add command isearch-yank-region
Date: Sun, 09 Feb 2020 02:31:50 +0200	[thread overview]
Message-ID: <877e0wiosp.fsf@mail.linkov.net> (raw)
In-Reply-To: <87eev52bw6.fsf@calancha-pc.dy.bbexcite.jp> (Tino Calancha's message of "Sat, 08 Feb 2020 19:04:57 +0100")

> I wish to have this command; it naturally completes other
> isearch-yank-... cases.
>
> This topic has been already discussed in the following links:
>
> https://lists.gnu.org/archive/html/emacs-devel/2019-04/msg01125.html
> https://lists.gnu.org/archive/html/emacs-devel/2019-05/msg00003.html
>
> Note that in those threads there were plenty of discussions; here I'd
> like to focus just in this proposed command.  If needed, I'd recommend
> to open further bugs to discuss about other commands.

Thanks for creating a new feature request that unlike these discussions
on emacs-devel won't fall into oblivion.

> I let this command to start the interactive search if we are
> not already there; from the above links I realized that
> such a functionality was also missing.  This is consistent with
> `isearch-yank-kill' (I think we should mention that in its docstring).

Please add this useful feature of `isearch-yank-kill' to the documentation.
Maybe it should be bound to a special key on the global `M-s' prefix map.
The most natural key would be `M-s C-y'.

>     Add command isearch-yank-region
>
>     During an incremental search, this command appends the region
>     to the search string.  Otherwise, start an incremental search
>     using the region as the search string.

What use cases do you think it could be used for?

I don't see any useful case for appending the region to the search string.

I see only 2 useful cases that don't append the region to the search string:

1. Before starting isearch, the user selects the region,
   then types a special command bound to a key on the global `M-s' prefix
   that yanks the region to the initially empty search string
   (i.e. it doesn't append, it replaces the empty search string)

I used such command to do this:

(defun isearch-forward-region ()
  "Do incremental search forward for text from the active region.
Like ordinary incremental search except that text from the region
is added to the search string initially if the region is active."
  (interactive)
  (isearch-forward nil 1)
  (cond
   ((use-region-p)
    (when (< (mark) (point))
      (exchange-point-and-mark))
    (isearch-yank-string
     (buffer-substring-no-properties (region-beginning) (region-end)))
    (deactivate-mark))
   (t
    (setq isearch-error "No active region")
    (isearch-push-state)
    (isearch-update))))

(define-key search-map "\M-." 'isearch-forward-region)

2. The second useful case is to activate the region, start isearch,
   use isearch to find the string at the region end, thus moving the region end
   to a new position, replace (don't append) the search string with region text -
   this is what isearch-yank-region could do.
   IOW, sync the region with the search string.

> +(defun isearch-yank-region ()
> +  "Pull region into search string.
> +If called out of an incremental search, then start an incremental
> +search with the region as the search string."
> +  (interactive)
> +  (cond ((use-region-p)
> +         (unless isearch-mode (isearch-mode t))
> +         (isearch-yank-string (funcall region-extract-function))

Here (funcall region-extract-function) signals the error

  (wrong-number-of-arguments (1 . 1) 0)

Have you tested your patch?





  parent reply	other threads:[~2020-02-09  0:31 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-08 18:04 bug#39512: 28.0.50; Add command isearch-yank-region Tino Calancha
2020-02-08 23:47 ` Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-02-09  0:31 ` Juri Linkov [this message]
2020-02-09 11:21   ` Tino Calancha
2020-02-09 12:38   ` Tino Calancha
2020-02-10  0:45     ` Juri Linkov
2020-02-12 22:10       ` Juri Linkov
2020-08-09 11:28   ` Lars Ingebrigtsen
2020-08-09 23:23     ` Juri Linkov
2020-08-10  1:19       ` Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-08-10 23:49         ` Juri Linkov
2020-08-11  1:12           ` Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-08-11 23:13             ` Juri Linkov
2020-08-12 17:41               ` Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-08-12 23:44                 ` Juri Linkov
2020-08-13  3:14                   ` Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-04-15 20:52                     ` Juri Linkov
2021-04-18 15:34                       ` Ergus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-04-20 20:29                         ` Juri Linkov
2021-04-21 20:41                           ` Juri Linkov
2020-08-10 17:00       ` Tino Calancha

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=877e0wiosp.fsf@mail.linkov.net \
    --to=juri@linkov.net \
    --cc=39512@debbugs.gnu.org \
    --cc=contovob@tcd.ie \
    --cc=npostavs@gmail.com \
    --cc=spacibba@aol.com \
    --cc=tino.calancha@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 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).