From: Tino Calancha <tino.calancha@gmail.com>
To: Juri Linkov <juri@linkov.net>
Cc: 39154@debbugs.gnu.org
Subject: bug#39154: 27.0.60; Use character history in zap-up-to-char
Date: Thu, 23 Jan 2020 14:51:23 +0100 [thread overview]
Message-ID: <87lfpyp9gk.fsf@calancha-pc.dy.bbexcite.jp> (raw)
In-Reply-To: <87a76jm0u9.fsf@mail.linkov.net> (Juri Linkov's message of "Mon, 20 Jan 2020 02:24:30 +0200")
Juri Linkov <juri@linkov.net> writes:
> Better to leave alone the name of the existing command since
> "up-to-char" and "until-char" are synonyms.
>
>> - Add similar funtion `iseach-yank-to-char' (i.e. one that inserts CHAR
>> in the seach string).
>
> Yes, this is a good name consistent with zap-to-char.
We have discussed two topics in this report, thus I am proposing the
following two commits:
I) Adjust interactive specificaion for `zap-up-to-char':
--8<-----------------------------cut here---------------start------------->8---
commit fe77bb9c2793fd7856c514f41e7a2ce4ccbc4f18
Author: Tino Calancha <tino.calancha@gmail.com>
Date: Thu Jan 23 14:42:29 2020 +0100
Use character history in zap-up-to-char
Extend commit
'Add CHARS arg to read-char-from-minibuffer compatible with read-char-choice.'
(04ab67470706f1c66bdf08e4078ea3dffd79b41e)
to `zap-up-to-char'.
* lisp/misc.el (lisp/misc.el): Use same interactive specification
as in `zap-to-char' (Bug#39154).
* etc/NEWS (Editing Changes in Emacs 27.1): Mention zap-up-to-char as well.
diff --git a/etc/NEWS b/etc/NEWS
index 792851e5af..2228a4bd25 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -603,10 +603,10 @@ navigation and editing of large files.
+++
** 'zap-to-char' now uses the history of characters you used to zap to.
-'zap-to-char' uses the new 'read-char-from-minibuffer' function to allow
-navigating through the history of characters that have been input.
-This is mostly useful for characters that have complex input methods
-where inputting the character again may involve many keystrokes.
+'zap-to-char' and 'zap-up-to-char' use the new 'read-char-from-minibuffer'
+function to allow navigating through the history of characters that
+have been input. This is mostly useful for characters that have complex
+input methods where inputting the character again may involve many keystrokes.
+++
** 'save-some-buffers' now has a new action in the prompt: 'C-f' will
diff --git a/lisp/misc.el b/lisp/misc.el
index 05244a6ea2..af5725555b 100644
--- a/lisp/misc.el
+++ b/lisp/misc.el
@@ -69,7 +69,9 @@ zap-up-to-char
Case is ignored if `case-fold-search' is non-nil in the current buffer.
Goes backward if ARG is negative; error if CHAR not found.
Ignores CHAR at point."
- (interactive "p\ncZap up to char: ")
+ (interactive (list (prefix-numeric-value current-prefix-arg)
+ (read-char-from-minibuffer "Zap up to char: "
+ nil 'read-char-history)))
(let ((direction (if (>= arg 0) 1 -1)))
(kill-region (point)
(progn
--8<-----------------------------cut here---------------end--------------->8---
II) Add new command `isearch-yank-to-char'.
- It is desirable to add a keybinding for it as well. Tentatively, I
have used C-M-p in this patch; please, suggest me the one that fit better.
--8<-----------------------------cut here---------------start------------->8---
commit 97ffdf08dc5311989d8ee8fa0a07ce0f6695c021
Author: Tino Calancha <tino.calancha@gmail.com>
Date: Thu Jan 23 14:42:34 2020 +0100
Add command isearch-yank-to-char
* lisp/isearch.el (isearch-yank-to-char): New command; bind it to
C-M-p at isearch-mode-map (Bug#39154).
* etc/NEWS (Search and Replace): Announce it.
* doc/emacs/search.texi (Isearch Yank): Update the manual.
diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi
index 16916617a2..0ebae16d99 100644
--- a/doc/emacs/search.texi
+++ b/doc/emacs/search.texi
@@ -283,6 +283,14 @@ Isearch Yank
useful for keyboard macros, for example in programming languages or
markup languages in which that character marks a token boundary. With
a prefix numeric argument of @var{n}, the command appends everything
+from point up to the @var{n}th occurrence of the specified character.
+
+@kindex C-M-p @r{(Incremental search)}
+@findex isearch-yank-to-char
+ Likewise, @kbd{C-M-p} (@code{isearch-yank-to-char}) appends to
+the search string everything from point to the next occurrence of
+a specified character (including that character). With
+a prefix numeric argument of @var{n}, the command appends everything
from point to the @var{n}th occurrence of the specified character.
@kindex C-y @r{(Incremental search)}
diff --git a/etc/NEWS b/etc/NEWS
index 2228a4bd25..10dd121c50 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1803,7 +1803,9 @@ highlight in one iteration while processing the full buffer.
'C-M-z' invokes new function 'isearch-yank-until-char', which yanks
everything from point up to but not including the specified
character into the search string. This is especially useful for
-keyboard macros.
+keyboard macros. Likewise, 'C-M-p' calls the new function
+'isearch-yank-to-char', which yanks everything from point to
+the specified character (including it) into the search string.
'C-M-w' in isearch changed from 'isearch-del-char' to the new function
'isearch-yank-symbol-or-char'. 'isearch-del-char' is now bound to
diff --git a/lisp/isearch.el b/lisp/isearch.el
index ddf9190dc6..cb52e4ffd4 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -709,6 +709,7 @@ isearch-mode-map
(define-key map "\M-\C-y" 'isearch-yank-char)
(define-key map "\C-y" 'isearch-yank-kill)
(define-key map "\M-\C-z" 'isearch-yank-until-char)
+ (define-key map "\M-\C-p" 'isearch-yank-to-char)
(define-key map "\M-s\C-e" 'isearch-yank-line)
(define-key map "\M-s\M-<" 'isearch-beginning-of-buffer)
@@ -1004,6 +1005,8 @@ isearch-forward
string and search for it.
Type \\[isearch-yank-until-char] to yank from point until the next instance of a
specified character onto end of search string and search for it.
+Type \\[isearch-yank-to-char] to yank from point to the next instance of a
+ specified character onto end of search string and search for it.
Type \\[isearch-yank-line] to yank rest of line onto end of search string\
and search for it.
Type \\[isearch-yank-kill] to yank the last string of killed text.
@@ -2593,6 +2596,24 @@ isearch-yank-until-char
(sit-for 2)))
(point)))))
+(defun isearch-yank-to-char (char &optional arg)
+ "Pull everything to next instance of CHAR from buffer into search string.
+Interactively, prompt for CHAR.
+If optional ARG is non-nil, pull to next ARGth instance of CHAR.
+
+See `isearch-yank-until-char' for a similar command that pull everything
+until CHAR, i.e. it doesn't include CHAR."
+ (interactive "cYank to character: \np")
+ (isearch-yank-internal
+ (lambda () (let ((inhibit-field-text-motion t))
+ (condition-case nil
+ (progn
+ (search-forward (char-to-string char) nil nil arg))
+ (search-failed
+ (message "`%c' not found" char)
+ (sit-for 2)))
+ (point)))))
+
(defun isearch-yank-line (&optional arg)
"Pull rest of line from buffer into search string.
If optional ARG is non-nil, yank the next ARG lines."
--8<-----------------------------cut here---------------end--------------->8---
Patches on top of emacs-27 commit
'Minor doc string clarification in use-hard-newlines'
(7d1e9c943ffa3ded122ef3c8755e05dfb5e9c33f)
next prev parent reply other threads:[~2020-01-23 13:51 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-16 18:49 bug#39154: 27.0.60; Use character history in zap-up-to-char Tino Calancha
2020-01-16 18:56 ` Tino Calancha
[not found] ` <877e1rexzi.fsf@mail.linkov.net>
2020-01-18 14:37 ` Tino Calancha
2020-01-20 0:24 ` Juri Linkov
2020-01-23 13:51 ` Tino Calancha [this message]
2020-01-23 18:16 ` Eli Zaretskii
2020-01-25 19:43 ` Tino Calancha
2020-01-28 23:49 ` Juri Linkov
2020-02-02 13:54 ` Tino Calancha
2020-02-05 7:21 ` Tino Calancha
2020-02-05 15:22 ` Drew Adams
2020-02-05 19:46 ` Tino Calancha
2020-02-05 21:10 ` Drew Adams
2020-02-05 21:56 ` Juri Linkov
2020-09-25 11:28 ` Lars Ingebrigtsen
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=87lfpyp9gk.fsf@calancha-pc.dy.bbexcite.jp \
--to=tino.calancha@gmail.com \
--cc=39154@debbugs.gnu.org \
--cc=juri@linkov.net \
/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.