[Top][All Lists]

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

bug#17642: pre-command-hook has thousands of `clear-transient-map' in 24

From: Stefan Monnier
Subject: bug#17642: pre-command-hook has thousands of `clear-transient-map' in
Date: Fri, 30 May 2014 21:36:59 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux)

> Helm is using `set-transient-map' a lot and it seems `set-transient-map'
> doesn't remove properly its `clearfun' from `pre-command-hook' or more
> exactly the `clearfun' doesn't remove itself from `pre-command-hook'.

Clearly, that's what we see, but the question is "why".  The code does do

                (remove-hook 'pre-command-hook clearfun)

so why is this code not run?

Maybe it's because of the new condition:

                       ((not (eq map (cadr overriding-terminal-local-map)))
                        ;; There's presumably some other transient-map in
                        ;; effect.  Wait for that one to terminate before we
                        ;; remove ourselves.
                        ;; For example, if isearch and C-u both use transient
                        ;; maps, then the lifetime of the C-u should be nested
                        ;; within isearch's, so the pre-command-hook of
                        ;; isearch should be suspended during the C-u one so
                        ;; we don't exit isearch just because we hit 1 after
                        ;; C-u and that 1 exits isearch whereas it doesn't
                        ;; exit C-u.

IOW, could it be that Helm keeps adding new transient-maps, rather than
follow the usual "nesting" of transient maps?


reply via email to

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