eldoc-frame/README.org

53 lines
3.3 KiB
Org Mode
Raw Normal View History

2018-12-14 23:05:54 +00:00
#+TITLE: ElDoc box
2018-12-11 14:17:31 +00:00
This package displays ElDoc documentations in a childframe.
2018-12-17 03:40:26 +00:00
2019-07-11 12:18:04 +00:00
[[https://melpa.org/#/eldoc-box][file:https://melpa.org/packages/eldoc-box-badge.svg]]
[[https://stable.melpa.org/#/eldoc-box][file:https://stable.melpa.org/packages/eldoc-box-badge.svg]]
2018-12-17 03:40:26 +00:00
#+CAPTION: Using with eglot in python-mode
[[./screenshot.png]]
2018-12-11 01:30:33 +00:00
* Install
Get the file, add to load path, and
#+BEGIN_SRC emacs-lisp
2018-12-11 14:17:31 +00:00
(require 'eldoc-box)
2018-12-11 01:30:33 +00:00
#+END_SRC
2019-07-11 08:01:16 +00:00
2020-04-06 18:44:01 +00:00
It is also available on [[https://melpa.org/#/eldoc-box][MELPA]].
2019-07-11 08:01:16 +00:00
2018-12-11 01:30:33 +00:00
* Usage
2020-04-06 18:44:01 +00:00
*Note:* If you use Gnome and Emacs 27, set ~x-gtk-resize-child-frames~ to ~resize-mode~ to avoid breakage of childframe.
2018-12-11 16:17:17 +00:00
** Function
2018-12-26 21:38:01 +00:00
- =eldoc-box-hover-mode= :: Display documentation of the symbol at point in a childframe on upper corner.
- =eldoc-box-hover-at-point-mode= :: Same as =eldoc-box-hover-mode= except the childframe is displayed at point, instead of on the upper corner. /Note that this mode brings a small but noticeable slowness./
2023-02-28 02:29:42 +00:00
- =eldoc-box-help-at-point= :: Display the documentation of the symbol at point in a childframe. This requires Emacs 28. (=eldoc-box-hover-mode= doesnt need to be on.)
2018-12-11 16:17:17 +00:00
** Face
2023-02-28 02:29:42 +00:00
- =eldoc-box-border= :: Adjust =:background= of this face for border color.
- =eldoc-box-body= :: Default face used by childframe. I suggest to use a nice Sans Serif font such as Source Sans Pro, and a lighter or darker background.
2023-02-28 02:29:42 +00:00
2019-08-13 05:44:28 +00:00
** Hooks
- =eldoc-box-buffer-hook= :: Hook run after buffer for doc is setup.Run inside the new buffer.
- =eldoc-box-frame-hook= :: Hook run after doc frame is setup but just before it is made visible.Each function runs inside the child frame and receives the main frame as argument.
2023-02-28 02:29:42 +00:00
2018-12-11 16:17:17 +00:00
** Variable
- =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.
2018-12-21 03:19:58 +00:00
- =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). This doesn't apply to =eldoc-box-hover-at-point-mode=, in that mode the childframe is cleared as soon as point moves.
- =eldoc-box-fringe-use-same-bg= :: T means fringe's background color is set to as same as that of default. Default to t.
2019-10-08 14:36:46 +00:00
- =eldoc-box-self-insert-command-list= :: By default =eldoc-box-hover-at-point-mode= only keeps childframe display while you are typing (=self-insert-command=). But if you bind something else to your keys, eldoc-box cant recognize it and will hide childframe while yu hit that key. Add your command to this list so eldoc-box wont hide childframe when this command is called.
** Use with eglot
As of writing this README, eglot doesn't have a public mode hook, use this hook:
#+BEGIN_SRC emacs-lisp
(add-hook 'eglot-managed-mode-hook #'eldoc-box-hover-mode t)
#+END_SRC
2019-01-01 06:44:57 +00:00
To keep eldoc from displaying documentation at point without enabling any minor mode above: =(add-to-list 'eglot-ignored-server-capabilites :hoverProvider)=.
2018-12-26 21:42:42 +00:00
* Credit
- Thanks to for [[https://github.com/joaotavora][João Távora]] for some valuable contribution and explain on eldoc and eglot internals.
- This package is initially adapted from Sebastien Chapuiss package lsp-ui.el.