[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 24.3.91.1 |
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.
t)
IOW, could it be that Helm keeps adding new transient-maps, rather than
follow the usual "nesting" of transient maps?
Stefan
bug#17642: pre-command-hook has thousands of `clear-transient-map' in 24.3.91.1, Le Wang, 2014/05/31