aboutsummaryrefslogtreecommitdiffstats
path: root/oni-hydra.el
diff options
context:
space:
mode:
authorGravatar Tom Willemse2021-01-20 16:25:25 -0800
committerGravatar Tom Willemse2021-01-20 16:33:44 -0800
commit624b9916d7680278a96d7c638a6420bad1edec21 (patch)
tree3a3dbfa193e34670d553a8e9aa06b1c81274742d /oni-hydra.el
parent86afae7567f3dbafdb46835c5750620f8637eaa9 (diff)
downloademacs-config-624b9916d7680278a96d7c638a6420bad1edec21.tar.gz
emacs-config-624b9916d7680278a96d7c638a6420bad1edec21.zip
Add fallback for hydra display
In case posframe can’t be used, when working from a non-graphical client for example, fall back to the default ‘lv’.
Diffstat (limited to 'oni-hydra.el')
-rw-r--r--oni-hydra.el24
1 files changed, 21 insertions, 3 deletions
diff --git a/oni-hydra.el b/oni-hydra.el
index 7960d4c..6c95ca8 100644
--- a/oni-hydra.el
+++ b/oni-hydra.el
@@ -4,7 +4,7 @@
;; Author: Tom Willemse <tom@ryuslash.org>
;; Keywords: local
-;; Version: 2020.0306.225035
+;; Version: 2021.0120.162336
;; Package-Requires: (hydra posframe)
;; This program is free software; you can redistribute it and/or modify
@@ -27,8 +27,26 @@
;;; Code:
(require 'hydra)
-
-(setq hydra-hint-display-type 'posframe)
+(require 'lv)
+(require 'posframe)
+
+(defun oni-hydra-custom-show (&rest args)
+ "Use ‘hydra-posframe-show’ when possible, fall back to ‘lv-message’.
+ARGS are passed on without modification."
+ (if (posframe-workable-p)
+ (apply #'hydra-posframe-show args)
+ (apply #'lv-message args)))
+
+(defun oni-hydra-custom-hide (&rest args)
+ "Use ‘hydra-posframe-hide’ when possible, fall back to ‘lv-delete-window’.
+ARGS are passed on without modification."
+ (if (posframe-workable-p)
+ (apply #'hydra-posframe-hide args)
+ (apply #'lv-delete-window args)))
+
+(add-to-list 'hydra-hint-display-alist '(custom oni-hydra-custom-show oni-hydra-custom-hide))
+
+(setq hydra-hint-display-type 'custom)
;;;###autoload(with-eval-after-load 'hydra (require 'oni-hydra))