summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ace-window-posframe.el18
1 files changed, 15 insertions, 3 deletions
diff --git a/ace-window-posframe.el b/ace-window-posframe.el
index 99dd8a6..8f32169 100644
--- a/ace-window-posframe.el
+++ b/ace-window-posframe.el
@@ -2,6 +2,14 @@
;; Copyright (C) 2015-2022 Free Software Foundation, Inc.
+(require 'ace-window)
+
+;; Suppress warnings
+(declare-function posframe-poshandler-window-center "ext:posframe")
+(declare-function posframe-show "ext:posframe")
+(declare-function posframe-hide "ext:posframe")
+(declare-function posframe-workable-p "ext:posframe")
+
(defvar aw--posframe-frames '())
(defvar aw-posframe-position-handler #'posframe-poshandler-window-center)
@@ -23,8 +31,8 @@
:string str
:poshandler aw-posframe-position-handler
:font (face-font 'aw-leading-char-face)
- :foreground-color (face-foreground 'aw-leading-char-face)
- :background-color (face-background 'aw-leading-char-face)))))
+ :foreground-color (face-foreground 'aw-leading-char-face nil t)
+ :background-color (face-background 'aw-leading-char-face nil t)))))
(defun aw--remove-leading-chars-posframe ()
;; Hide rather than delete. See aw--lead-overlay-posframe for why.
@@ -32,6 +40,9 @@
(setq aw--posframe-frames nil))
(defun ace-window-posframe-enable ()
+ (unless (and (require 'posframe nil t) (posframe-workable-p))
+ (error "Posframe is not workable"))
+
(setq aw--lead-overlay-fn #'aw--lead-overlay-posframe)
(setq aw--remove-leading-chars-fn #'aw--remove-leading-chars-posframe))
@@ -41,9 +52,10 @@
;;;###autoload
(define-minor-mode ace-window-posframe-mode
- ""
+ "Minor mode for showing the ace window key with child frames."
:global t
:require 'ace-window
+ :group 'ace-window
:init-value nil
(if ace-window-posframe-mode
(ace-window-posframe-enable)