From 4fbda15494ffde9980fb12b0aa9d361a5219f3f6 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Tue, 13 Mar 2018 01:21:13 -0400 Subject: [PATCH] ui/posframe: cleanup invisible posframes on ESC This is meant to resolve an issue where posframes go rogue (e.g. after an error), by deleting all (invisible) posframes when you press ESC or C-g (doom/escape). --- modules/ui/posframe/autoload.el | 11 ++++++++++- modules/ui/posframe/config.el | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/modules/ui/posframe/autoload.el b/modules/ui/posframe/autoload.el index 45ecab756..7ff93493b 100644 --- a/modules/ui/posframe/autoload.el +++ b/modules/ui/posframe/autoload.el @@ -10,4 +10,13 @@ "TODO" (let ((pos (posframe-poshandler-frame-center info))) (cons (car pos) - (truncate (* (cdr pos) 1.60))))) + (truncate (* (cdr pos) 1.4))))) + +;;;###autoload +(defun +posframe|delete-on-escape () + "TODO" + (when (cl-loop for frame in (frame-list) + if (and (frame-parameter frame 'posframe-buffer) + (not (frame-visible-p frame))) + return t) + (posframe-delete-all))) diff --git a/modules/ui/posframe/config.el b/modules/ui/posframe/config.el index a92eca480..8fcb2d9fc 100644 --- a/modules/ui/posframe/config.el +++ b/modules/ui/posframe/config.el @@ -7,7 +7,7 @@ (def-package! posframe :defer t :config - (setq posframe-inhibit-double-buffering t)) + (add-hook 'doom-escape-hook #'+posframe|delete-on-escape)) (def-package! company-childframe