bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#39512: 28.0.50; Add command isearch-yank-region


From: Ergus
Subject: bug#39512: 28.0.50; Add command isearch-yank-region
Date: Sun, 18 Apr 2021 17:34:00 +0200

On Thu, Apr 15, 2021 at 11:52:03PM +0300, Juri Linkov wrote:
So without any other alternative, `M-s M-.` will be good enough. In
general it would be better (for consistency) if we "reserve" `M-.`
"suffixes" for future thing-at-point-or-region commands right?

In the previous message you sent a link to `ivy-thing-at-point` that
also uses (thing-at-point 'url) and also tries to get a filename at point.
Do you think `thing-at-point-or-region` should do the same?

With the interactive experience in mind I think this could make sense as
it does in `ivy-thing-at-point`.

In my opinion from the api point of view, the important modification
could be the method to know the "kind the thing" detected after calling
the function (region, word, symbol, url) but also a function to get the
bounds instead of the text (like bounds-of-thing-at-point-or-region).

I continued trying to do what you suggested some time ago
and immediately stumbled upon a question what "thing"
to use by default as an argument of '(thing-at-point thing)'?

Trying these priorities:

(or (thing-at-point 'region)
   (thing-at-point 'url)
   ;; (thing-at-point 'filename)
   ;; (thing-at-point 'list)
   (thing-at-point 'symbol))

has several problems:

1. There is no such "thing" as 'region'.  Maybe could be added to thingatpt.el?

This was actually the most important part in the request. Maybe an extra
optional parameter like use-region could be added to
bounds-of-thing-at-point that uses the active region when
region-active-p or use-region-p.

As I already mentioned; IMO the idea is to follow the same logic than here:

https://github.com/abo-abo/swiper/blob/471d644d6bdd7d5dc6ca4efb405e6a6389dff245/ivy.el#L427

where `(thing-at-point 'region)` is basically the first branch in the
cond.

2. 'url' returns nil when there is no url at point, good.  But
  'filename' returns non-nil on any string, not only on real filenames.

'filename' must match a local filename or a path... but it may be costly
to check in the filesystem if the match is an existing file... specially
when using tramp... so I don't have a solution for this. But the linked
code uses some ffap api for that.

3. It would be nice to use (thing-at-point 'list) only when point
  is on the open/close parens.  This is how double-clicking by mouse
  selects the thing at point of mouse click.  When clicked on a paren,
  the whole list is selected by 'mouse-start-end'.
  'isearch-forward-thing-at-point' could be the same logic.

now I use C-M-SPC for this selection and then M-w to copy and C-s
C-y. If you add the command, then it will save the M-w and the C-y to
copy the region, because region will be already active... But will
require the M-s prefix any way... so not 2 but at least 1 bind will be
saved. You can consider this option in the future if you want...





reply via email to

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