unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#10477: zap-to-char should allow picking from history
@ 2012-01-11  3:27 jidanni
  2012-01-15  1:23 ` Drew Adams
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: jidanni @ 2012-01-11  3:27 UTC (permalink / raw)
  To: 10477

zap-to-char should allow typing e.g., the up arrow to pick a recently used
character, and then RET.

Currently the only way is to type the actual character back in again!
Even if hard to type CKS!

Currently one gets 'Non-character input-event'.

It should work something like one can maneuver at M-x occur's 'List
lines matching regexp:' prompt.

So: if a-z etc. is pressed, then no RET should be required.

If any 'Non-character input-event' is pressed, then we should be able to
manipulate from a history list of recently zapped chars.

emacs-version "24.0.92.1"





^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#10477: zap-to-char should allow picking from history
  2012-01-11  3:27 bug#10477: zap-to-char should allow picking from history jidanni
@ 2012-01-15  1:23 ` Drew Adams
  2012-01-15  1:38 ` jidanni
  2019-10-14  3:11 ` Lars Ingebrigtsen
  2 siblings, 0 replies; 13+ messages in thread
From: Drew Adams @ 2012-01-15  1:23 UTC (permalink / raw)
  To: jidanni, 10477

> zap-to-char should allow typing e.g., the up arrow to pick a 
> recently used character, and then RET.
> 
> Currently the only way is to type the actual character back in again!
> Even if hard to type CKS!
> 
> Currently one gets 'Non-character input-event'.
> 
> It should work something like one can maneuver at M-x occur's 'List
> lines matching regexp:' prompt.
> So: if a-z etc. is pressed, then no RET should be required.
> 
> If any 'Non-character input-event' is pressed, then we should 
> be able to manipulate from a history list of recently zapped chars.

This sounds similar to bug #1580 (which jidanni also filed), though the emphasis
seems a bit different.

---

FWIW, in Icicles, command `icicle-zap-to-char' uses function
`icicle-read-char-maybe-completing' interactively, which is like `read-char'
unless you hit a completing key (e.g. `TAB') or you hit `C-q'.

If you hit a completing key, you complete a character name against either the
names of your previously entered Unicode chars (default behavior) or all Unicode
char names (depends on an option setting).

It is function `icicle-read-char-by-name', a replacement for
`read-char-by-name', which does the completion.  It also populates the
Unicode-char history list used by `icicle-read-char-maybe-completing'.

You can read (and zap to) a TAB char by hitting C-q first: `C-q TAB'.  You can
read (and zap to) a `C-q' char by hitting `C-q C-q'.

The idea is to try to make it easier to zap to Unicode (e.g. Chinese) chars that
you have already inserted.  The tradeoff is that zapping to a TAB or C-q char
requires you to hit `C-q' first.

(I don't really know whether completing against a char name is necessarily
easier than "to type the actual character back in again".  Completing against a
history list instead of all Unicode chars as candidates, the thought was that it
might be.  Dunno.)






^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#10477: zap-to-char should allow picking from history
  2012-01-11  3:27 bug#10477: zap-to-char should allow picking from history jidanni
  2012-01-15  1:23 ` Drew Adams
@ 2012-01-15  1:38 ` jidanni
  2012-01-15  3:47   ` Drew Adams
  2019-10-14  3:11 ` Lars Ingebrigtsen
  2 siblings, 1 reply; 13+ messages in thread
From: jidanni @ 2012-01-15  1:38 UTC (permalink / raw)
  To: drew.adams; +Cc: 10477

>>>>> "DA" == Drew Adams <drew.adams@oracle.com> writes:
DA> The idea is to try to make it easier to zap to Unicode (e.g. Chinese) chars that
DA> you have already inserted.  The tradeoff is that zapping to a TAB or C-q char
DA> requires you to hit `C-q' first.
Well pros with embedded control characters probably have other means of zapping.
DA> (I don't really know whether completing against a char name is necessarily
DA> easier than "to type the actual character back in again".  Completing against a
DA> history list instead of all Unicode chars as candidates, the thought was that it
DA> might be.  Dunno.)
I don't know if "completion" is relevant in the case of just one character.
All I know is hitting one or two up arrows and then RET is what the user
would like to do.





^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#10477: zap-to-char should allow picking from history
  2012-01-15  1:38 ` jidanni
@ 2012-01-15  3:47   ` Drew Adams
  0 siblings, 0 replies; 13+ messages in thread
From: Drew Adams @ 2012-01-15  3:47 UTC (permalink / raw)
  To: jidanni; +Cc: 10477

> DA> The idea is to try to make it easier to zap to Unicode 
> DA> (e.g. Chinese) chars that you have already inserted.
> DA> The tradeoff is that zapping to a TAB or C-q char
> DA> requires you to hit `C-q' first.
>
> Well pros with embedded control characters probably have 
> other means of zapping.
>
> DA> (I don't really know whether completing against a char 
> DA> name is necessarily easier than "to type the actual
> DA> character back in again".  Completing against a
> DA> history list instead of all Unicode chars as candidates, 
> DA> the thought was that it might be.  Dunno.)
>
> I don't know if "completion" is relevant in the case of just 
> one character.  All I know is hitting one or two up arrows
> and then RET is what the user would like to do.

You can do that as well in Icicles during completion.  You have the choice: type
chars to match candidates (in this case, Unicode char names) or cycle using,
e.g., arrow keys.  E.g., you can do this:

M-z TAB <up> <up> <up>...






^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#10477: zap-to-char should allow picking from history
  2012-01-11  3:27 bug#10477: zap-to-char should allow picking from history jidanni
  2012-01-15  1:23 ` Drew Adams
  2012-01-15  1:38 ` jidanni
@ 2019-10-14  3:11 ` Lars Ingebrigtsen
  2019-10-27 21:30   ` Juri Linkov
  2 siblings, 1 reply; 13+ messages in thread
From: Lars Ingebrigtsen @ 2019-10-14  3:11 UTC (permalink / raw)
  To: jidanni; +Cc: 10477

jidanni@jidanni.org writes:

> zap-to-char should allow typing e.g., the up arrow to pick a recently used
> character, and then RET.
>
> Currently the only way is to type the actual character back in again!
> Even if hard to type CKS!
>
> Currently one gets 'Non-character input-event'.

I've now implemented this in Emacs 27 -- it was more code than expected,
so perhaps simple.el isn't the right place for it.  On the other hand,
`zap-to-char' is there, so perhaps that's the right place for it?

Or it could go to subr-x.el with an autoload -- `zap-to-char' probably
isn't the most used command ever, anyway, and I'm not sure
`read-char-with-history' has much utility outside that command.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#10477: zap-to-char should allow picking from history
  2019-10-14  3:11 ` Lars Ingebrigtsen
@ 2019-10-27 21:30   ` Juri Linkov
  2019-10-27 22:14     ` Lars Ingebrigtsen
  0 siblings, 1 reply; 13+ messages in thread
From: Juri Linkov @ 2019-10-27 21:30 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 10477, jidanni

>> zap-to-char should allow typing e.g., the up arrow to pick a recently used
>> character, and then RET.
>>
>> Currently the only way is to type the actual character back in again!
>> Even if hard to type CKS!
>>
>> Currently one gets 'Non-character input-event'.
>
> I've now implemented this in Emacs 27 -- it was more code than expected,
> so perhaps simple.el isn't the right place for it.  On the other hand,
> `zap-to-char' is there, so perhaps that's the right place for it?

I tried typing the up arrow, but it fails with the error
"Non-character input-event".  Is this intentional?

> Or it could go to subr-x.el with an autoload -- `zap-to-char' probably
> isn't the most used command ever, anyway, and I'm not sure
> `read-char-with-history' has much utility outside that command.

Indeed, subr-x.el looks like a more suitable place.

Another variant is create a new file for commands reading input
with a name like read-x.el (or maybe minibuffer-x.el or prompt-x.el).
Then put here `read-char-with-history', also all functions from
lisp/emacs-lisp/map-ynp.el and lisp/emacs-lisp/rmc.el,
maybe also read-char-choice from subr.el.





^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#10477: zap-to-char should allow picking from history
  2019-10-27 21:30   ` Juri Linkov
@ 2019-10-27 22:14     ` Lars Ingebrigtsen
  2019-10-27 22:34       ` Juri Linkov
  0 siblings, 1 reply; 13+ messages in thread
From: Lars Ingebrigtsen @ 2019-10-27 22:14 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 10477, jidanni

Juri Linkov <juri@linkov.net> writes:

>> I've now implemented this in Emacs 27 -- it was more code than expected,
>> so perhaps simple.el isn't the right place for it.  On the other hand,
>> `zap-to-char' is there, so perhaps that's the right place for it?
>
> I tried typing the up arrow, but it fails with the error
> "Non-character input-event".  Is this intentional?

That's the way the command has always worked, so I didn't change that.

>> Or it could go to subr-x.el with an autoload -- `zap-to-char' probably
>> isn't the most used command ever, anyway, and I'm not sure
>> `read-char-with-history' has much utility outside that command.
>
> Indeed, subr-x.el looks like a more suitable place.
>
> Another variant is create a new file for commands reading input
> with a name like read-x.el (or maybe minibuffer-x.el or prompt-x.el).
> Then put here `read-char-with-history', also all functions from
> lisp/emacs-lisp/map-ynp.el and lisp/emacs-lisp/rmc.el,
> maybe also read-char-choice from subr.el.

Makes sense to me.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#10477: zap-to-char should allow picking from history
  2019-10-27 22:14     ` Lars Ingebrigtsen
@ 2019-10-27 22:34       ` Juri Linkov
  2019-10-28 10:48         ` Lars Ingebrigtsen
  0 siblings, 1 reply; 13+ messages in thread
From: Juri Linkov @ 2019-10-27 22:34 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 10477, jidanni

>>> I've now implemented this in Emacs 27 -- it was more code than expected,
>>> so perhaps simple.el isn't the right place for it.  On the other hand,
>>> `zap-to-char' is there, so perhaps that's the right place for it?
>>
>> I tried typing the up arrow, but it fails with the error
>> "Non-character input-event".  Is this intentional?
>
> That's the way the command has always worked, so I didn't change that.

I tried the up arrow because this is what OP asked to implement:

  "zap-to-char should allow typing e.g., the up arrow to pick a recently used
   character, and then RET."

Using read-from-minibuffer would allow this for free.





^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#10477: zap-to-char should allow picking from history
  2019-10-27 22:34       ` Juri Linkov
@ 2019-10-28 10:48         ` Lars Ingebrigtsen
  2019-10-28 22:17           ` Juri Linkov
  0 siblings, 1 reply; 13+ messages in thread
From: Lars Ingebrigtsen @ 2019-10-28 10:48 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 10477, jidanni

Juri Linkov <juri@linkov.net> writes:

> I tried the up arrow because this is what OP asked to implement:
>
>   "zap-to-char should allow typing e.g., the up arrow to pick a recently used
>    character, and then RET."

I wasn't aware that <up> traversed the history -- I've always used
`M-p'.  But, yes, <up> should work in zap-to-char, too, then.

> Using read-from-minibuffer would allow this for free.

How would you implement read-char-with-history using
read-from-minibuffer?  Rebind self-insert-command?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#10477: zap-to-char should allow picking from history
  2019-10-28 10:48         ` Lars Ingebrigtsen
@ 2019-10-28 22:17           ` Juri Linkov
  2019-10-29 11:32             ` Lars Ingebrigtsen
  2019-10-29 23:01             ` Lars Ingebrigtsen
  0 siblings, 2 replies; 13+ messages in thread
From: Juri Linkov @ 2019-10-28 22:17 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 10477, jidanni

>> Using read-from-minibuffer would allow this for free.
>
> How would you implement read-char-with-history using
> read-from-minibuffer?  Rebind self-insert-command?

Exactly, by rebinding self-insert-command:

(defvar read-char-from-minibuffer-map
  (let ((map (make-sparse-keymap)))
    (set-keymap-parent map minibuffer-local-map)
    (define-key map [remap self-insert-command]
      (lambda ()
        (interactive)
        (delete-minibuffer-contents)
        (insert (event-basic-type last-command-event))
        (exit-minibuffer)))
    map))

(defun read-char-from-minibuffer (prompt)
  (read-from-minibuffer prompt nil
   read-char-from-minibuffer-map nil
  'read-char-from-minibuffer-history))

(read-char-from-minibuffer "Please type a character: ")





^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#10477: zap-to-char should allow picking from history
  2019-10-28 22:17           ` Juri Linkov
@ 2019-10-29 11:32             ` Lars Ingebrigtsen
  2019-10-29 23:01             ` Lars Ingebrigtsen
  1 sibling, 0 replies; 13+ messages in thread
From: Lars Ingebrigtsen @ 2019-10-29 11:32 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 10477, jidanni

Juri Linkov <juri@linkov.net> writes:

>>> Using read-from-minibuffer would allow this for free.
>>
>> How would you implement read-char-with-history using
>> read-from-minibuffer?  Rebind self-insert-command?
>
> Exactly, by rebinding self-insert-command:
>
> (defvar read-char-from-minibuffer-map
>   (let ((map (make-sparse-keymap)))
>     (set-keymap-parent map minibuffer-local-map)
>     (define-key map [remap self-insert-command]
>       (lambda ()
>         (interactive)
>         (delete-minibuffer-contents)
>         (insert (event-basic-type last-command-event))
>         (exit-minibuffer)))
>     map))
>
> (defun read-char-from-minibuffer (prompt)
>   (read-from-minibuffer prompt nil
>    read-char-from-minibuffer-map nil
>   'read-char-from-minibuffer-history))
>
> (read-char-from-minibuffer "Please type a character: ")

Hm, interesting.

That indeed seems a lot better than the current read-char-with-history.
(Minor tweak -- this returns a string, but should return a char.)

And this presumably works with "complicated" input methods, too?  Xim
etc.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#10477: zap-to-char should allow picking from history
  2019-10-28 22:17           ` Juri Linkov
  2019-10-29 11:32             ` Lars Ingebrigtsen
@ 2019-10-29 23:01             ` Lars Ingebrigtsen
  2019-10-30  0:00               ` Juri Linkov
  1 sibling, 1 reply; 13+ messages in thread
From: Lars Ingebrigtsen @ 2019-10-29 23:01 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 10477, jidanni

Juri Linkov <juri@linkov.net> writes:

> Exactly, by rebinding self-insert-command:

OK; I've taken your code and tweaked it a bit and used it to replace
read-char-with-history.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#10477: zap-to-char should allow picking from history
  2019-10-29 23:01             ` Lars Ingebrigtsen
@ 2019-10-30  0:00               ` Juri Linkov
  0 siblings, 0 replies; 13+ messages in thread
From: Juri Linkov @ 2019-10-30  0:00 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 10477, jidanni

>> Exactly, by rebinding self-insert-command:
>
> OK; I've taken your code and tweaked it a bit and used it to replace
> read-char-with-history.

I also renamed it to a better name: by analogy with read-from-minibuffer,
and to hint that it relies on, the new name is read-char-from-minibuffer.





^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2019-10-30  0:00 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-11  3:27 bug#10477: zap-to-char should allow picking from history jidanni
2012-01-15  1:23 ` Drew Adams
2012-01-15  1:38 ` jidanni
2012-01-15  3:47   ` Drew Adams
2019-10-14  3:11 ` Lars Ingebrigtsen
2019-10-27 21:30   ` Juri Linkov
2019-10-27 22:14     ` Lars Ingebrigtsen
2019-10-27 22:34       ` Juri Linkov
2019-10-28 10:48         ` Lars Ingebrigtsen
2019-10-28 22:17           ` Juri Linkov
2019-10-29 11:32             ` Lars Ingebrigtsen
2019-10-29 23:01             ` Lars Ingebrigtsen
2019-10-30  0:00               ` Juri Linkov

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