From 1733e35085684ffb11147ce8380bacf195297200 Mon Sep 17 00:00:00 2001 From: Yuan Fu Date: Thu, 20 Dec 2018 10:26:03 -0500 Subject: [PATCH] Add eldoc-box-clear-with-C-g, update README --- README.org | 7 +++++++ eldoc-box.el | 10 ++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/README.org b/README.org index 52d2d90..a37f494 100644 --- a/README.org +++ b/README.org @@ -19,6 +19,13 @@ Get the file, add to load path, and - =eldoc-box-max-pixel-width= & =eldoc-box-max-pixel-height= :: Set them according to the screen resolution of your machine. - =eldoc-box-only-multi-line= :: Set this to non-nil and eldoc-box only display multi-line message in childframe. One line messages are left in minibuffer. - =eldoc-box-cleanup-interval= :: After this amount of seconds will eldoc-box attempt to cleanup the childframe. E.g. if it is set to 1, the childframe is cleared 1 second after you moved the point to somewhere else (that doesn't have a doc to show). + +** Pop at point instead of on the upper corner +I don't use this, but if you do: +1. set =eldoc-box-position-function= to =eldoc-box--default-at-point-position-function=. +2. Set =eldoc-box-clear-with-C-g= to =t=, so =C-g= will clear the childframe. +3. Maybe set =eldoc-box-max-pixel-width= & =eldoc-box-max-pixel-height= to some custom functions. + ** Use with eglot As of writing this README, eglot doesn't have a public mode hook, use this hook: #+BEGIN_SRC emacs-lisp diff --git a/eldoc-box.el b/eldoc-box.el index 25d4530..7e5e2a9 100644 --- a/eldoc-box.el +++ b/eldoc-box.el @@ -59,6 +59,9 @@ E.g. if it is set to 1, the childframe is cleared 1 second after you moved the point to somewhere else (that doesn't have a doc to show)") +(defvar eldoc-box-clear-with-C-g nil + "If set to non-nil, eldoc-box clears cildframe when you hit \C-g.") + (defvar eldoc-box-frame-parameters '( ;; (left . -1) @@ -120,9 +123,12 @@ It will be passes with two arguments: WIDTH and HEIGHT of the childframe.") "Displays hover documentations in a childframe. This mode is buffer local." :lighter " ELDOC-BOX" (if eldoc-box-hover-mode - (add-function :before-until (local 'eldoc-message-function) - #'eldoc-box--eldoc-message-function) + (progn (add-function :before-until (local 'eldoc-message-function) + #'eldoc-box--eldoc-message-function) + (when eldoc-box-clear-with-C-g + (advice-add #'keyboard-quit :before #'eldoc-box-quit-frame))) (remove-function (local 'eldoc-message-function) #'eldoc-box--eldoc-message-function) + (advice-remove #'keyboard-quit #'eldoc-box-quit-frame) ;; if minor mode is turned off when childframe is visible ;; hide it (when eldoc-box--frame