emacs-devel
[Top][All Lists]
Advanced

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

Re: pre-command-hook with input methods


From: Phillip Lord
Subject: Re: pre-command-hook with input methods
Date: Mon, 09 Feb 2015 15:30:45 +0000
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux)

Stefan Monnier <address@hidden> writes:

>>> The Right Way to fix this is to change the default value to be non-nil.
>>> In this case, I think using #'list might work.
>> I am not sure how that would work.  Surely the point of having this as a
>> variable is that it can be changed?
>
> I'm only suggesting to change the default value from nil to `list',
> which I just did in "master".
>
> This then allows you to use `add-function' on that variable.

Ah, sorry. The advice is actually on the variable, and no on the
symbol stored in the variable? So it runs even if the value changes?



> But I still think there's room for improvement with something like
> a `pre-interaction-hook' or something like that.  Brings me to the next
> question.  We know you'd like such a pre-interaction-hook to be run just
> before processing the first char in a multi-char input-method element,
> but what about the simpler/common case of a key prefix:
>
> When the user hits C-x C-f, would you like to run this
> pre-interaction-hook right when the user hits C-x, or only after the
> user hit C-x C-f?
>
> Maybe what you're after is just an input-event-hook?

So, currently, the offered completion remains in buffer until the key
sequence has been completed. Once you have typed the first part of the
keysequence through (C-u or C-x) then the abbreviation is going to
disappear one way or the other. Either you complete the sequence (which
runs a command) or you quit (which runs a command).

I think for consistency, the hook should run immediately before or after
Emacs responds to C-u (or C-x) depending on whether it is pre- or post-.
Effectively, the C-x of a C-xC-f is, I think equivalent to the first "a"
of a "a`" post-fix input key sequence. The only reason that the former works
fine for me, and the latter is problematic is the latter changes the
display of the buffer while the former changes just the mini-buffer.

So, my initial feeling is that it doesn't make any difference for this
particular use case.

The other possibility is not to have an interaction hook but to have a
"the buffer has just changed in some way that is liable to cause a
redisplay"-hook. I don't know that this would be better. I throw it out
as a possibility, depending on which is easier.

Phil



reply via email to

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