all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Stefan Monnier via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: StrawberryTea <look@strawberrytea.xyz>
Cc: 66755@debbugs.gnu.org
Subject: bug#66755: 30.0.50; how do i lookup a key but also respect key translations?
Date: Wed, 10 Jan 2024 22:41:15 -0500	[thread overview]
Message-ID: <jwvfrz4sg6b.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <87ttqeja59.fsf@strawberrytea.xyz> (StrawberryTea's message of "Wed, 25 Oct 2023 22:57:58 -0500")

> Hello. So I am trying to define a function which obtains the command
> that would be called if 'corfu-mode' was not enabled:

I recommend you try and avoid needing to do that.

> (defun +corfu--get-passthrough-command ()
>   (keymap-lookup
>    (thread-last
>      (current-active-maps t)
>      (delq corfu-map)
>      (delq (and (featurep 'evil)
>                 (evil-get-auxiliary-keymap corfu-map evil-state))))
>    (key-description (this-command-keys-vector))))

[ Eww... `keymap-lookup` forcing you to use `key-description` here is
  pretty hideous.  ]

> but I don't know how to look up that translation from Elisp. I looked at
> the code for 'help.el' and found the above description comes from
> 'read-key-sequence' returning 'C-?' and 'this-single-command-raw-keys'
> returning '[backspace]' but 'read-key-sequence' is defined in C and I
> don't know how trigger it's translation logic programmatically from
> Elisp.

Are you saying that `this-command-keys-vector` returns the same
`[backspace]` as `this-single-command-raw-keys` here?  That's odd, I'd
have expected to return `[?\C-?]`.
In any case it still won't always be the answer you're looking for.

There is simply no reliable way to do what you want, because even
deciding when the sequence of keys ends (to run your (presumably Corfu)
command) can be affected by the existence of a binding to that command.

I think the "closest" you can get is to take
`this-single-command-raw-keys` and push it back on `unread-command-events`.

Or else, arrange for your command's binding to be disabled when you
don't actually want to run it, rather than make it delegate manually to
the "next" binding.


        Stefan






      parent reply	other threads:[~2024-01-11  3:41 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-26  3:57 bug#66755: 30.0.50; how do i lookup a key but also respect key translations? StrawberryTea
2023-10-26  7:22 ` Eli Zaretskii
2023-10-26 14:31   ` How do i lookup a key but also respect key translations? (was: bug#66755: 30.0.50) Stefan Monnier
2023-10-28 15:12     ` StrawberryTea
2024-01-10 18:00   ` bug#66755: 30.0.50; how do i lookup a key but also respect key translations? Stefan Kangas
2024-01-11  3:41 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors [this message]

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=jwvfrz4sg6b.fsf-monnier+emacs@gnu.org \
    --to=bug-gnu-emacs@gnu.org \
    --cc=66755@debbugs.gnu.org \
    --cc=look@strawberrytea.xyz \
    --cc=monnier@iro.umontreal.ca \
    /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.