Add eldoc-box-clear-with-C-g, update README

This commit is contained in:
Yuan Fu 2018-12-20 10:26:03 -05:00
parent 8f71b3c65e
commit 1733e35085
No known key found for this signature in database
GPG Key ID: 1CF5ECABEC37A901
2 changed files with 15 additions and 2 deletions

View File

@ -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-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-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). - =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 ** Use with eglot
As of writing this README, eglot doesn't have a public mode hook, use this hook: As of writing this README, eglot doesn't have a public mode hook, use this hook:
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp

View File

@ -59,6 +59,9 @@
E.g. if it is set to 1, the childframe is cleared 1 second after 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)") 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 (defvar eldoc-box-frame-parameters
'( '(
;; (left . -1) ;; (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." "Displays hover documentations in a childframe. This mode is buffer local."
:lighter " ELDOC-BOX" :lighter " ELDOC-BOX"
(if eldoc-box-hover-mode (if eldoc-box-hover-mode
(add-function :before-until (local 'eldoc-message-function) (progn (add-function :before-until (local 'eldoc-message-function)
#'eldoc-box--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) (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 ;; if minor mode is turned off when childframe is visible
;; hide it ;; hide it
(when eldoc-box--frame (when eldoc-box--frame