From a2bb124a3f2e57c032fc264bcd08219fa3d513d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tu=E1=BA=A5n-Anh=20Nguy=E1=BB=85n?= Date: Thu, 23 May 2019 21:36:36 +0700 Subject: [PATCH] hydra.el (hydra-posframe-hide): Delay hiding hint when it makes sense Fixes flickering on OSX. Fixes #329 Fixes #330 --- hydra.el | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/hydra.el b/hydra.el index daf9404..2b1a7ee 100644 --- a/hydra.el +++ b/hydra.el @@ -217,8 +217,14 @@ the body or the head." :poshandler posframe-poshandler-window-center) "List of parameters passed to `posframe-show'.") +(defvar hydra--posframe-timer nil + "Timer for hiding posframe hint.") + (defun hydra-posframe-show (str) (require 'posframe) + (when hydra--posframe-timer + (cancel-timer hydra--posframe-timer)) + (setq hydra--posframe-timer nil) (apply #'posframe-show " *hydra-posframe*" :string str @@ -226,7 +232,12 @@ the body or the head." (defun hydra-posframe-hide () (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 (list (list 'lv #'lv-message #'lv-delete-window)