hydra.el (hydra-posframe-hide): Delay hiding hint when it makes sense

Fixes flickering on OSX.

Fixes #329
Fixes #330
master
Tuấn-Anh Nguyễn 7 years ago committed by Oleh Krehel
parent 406988f6e9
commit a2bb124a3f
  1. 13
      hydra.el

@ -217,8 +217,14 @@ the body or the head."
:poshandler posframe-poshandler-window-center) :poshandler posframe-poshandler-window-center)
"List of parameters passed to `posframe-show'.") "List of parameters passed to `posframe-show'.")
(defvar hydra--posframe-timer nil
"Timer for hiding posframe hint.")
(defun hydra-posframe-show (str) (defun hydra-posframe-show (str)
(require 'posframe) (require 'posframe)
(when hydra--posframe-timer
(cancel-timer hydra--posframe-timer))
(setq hydra--posframe-timer nil)
(apply #'posframe-show (apply #'posframe-show
" *hydra-posframe*" " *hydra-posframe*"
:string str :string str
@ -226,7 +232,12 @@ the body or the head."
(defun hydra-posframe-hide () (defun hydra-posframe-hide ()
(require 'posframe) (require 'posframe)
(posframe-hide " *hydra-posframe*")) (unless hydra--posframe-timer
(setq hydra--posframe-timer
(run-with-idle-timer
0 nil (lambda ()
(setq hydra--posframe-timer nil)
(posframe-hide " *hydra-posframe*"))))))
(defvar hydra-hint-display-alist (defvar hydra-hint-display-alist
(list (list 'lv #'lv-message #'lv-delete-window) (list (list 'lv #'lv-message #'lv-delete-window)

Loading…
Cancel
Save