Simple ElDoc frontend that displays documentation in a floating child frame
Go to file
Yuan Fu d88e7a5ba1
Make credit more regular
* README.org (Credit):
* eldoc-box.el:
2023-03-04 22:42:36 -08:00
eldoc-box.el Make credit more regular 2023-03-04 22:42:36 -08:00
README.org Make credit more regular 2023-03-04 22:42:36 -08:00
screenshot.png Update README (and screenshot) 2018-12-26 16:38:01 -05:00

ElDoc box

This package displays ElDoc documentations in a childframe.

https://melpa.org/packages/eldoc-box-badge.svg https://stable.melpa.org/packages/eldoc-box-badge.svg

/jessieh/eldoc-frame/media/commit/d88e7a5ba1fd0e33dbe18e30866735fdea3ef239/screenshot.png
Using with eglot in python-mode

Install

Get the file, add to load path, and

(require 'eldoc-box)

It is also available on MELPA.

Usage

Note: If you use Gnome and Emacs 27, set x-gtk-resize-child-frames to resize-mode to avoid breakage of childframe.

Function

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.
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.)

Face

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.

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.

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.
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.
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:

(add-hook 'eglot-managed-mode-hook #'eldoc-box-hover-mode t)

To keep eldoc from displaying documentation at point without enabling any minor mode above: (add-to-list 'eglot-ignored-server-capabilites :hoverProvider).

Credit

  • Thanks to for 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.