• Stars
    star
    210
  • Rank 187,585 (Top 4 %)
  • Language
    Emacs Lisp
  • Created almost 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

childframe doc for eglot and anything that uses eldoc

ElDoc box

This package displays ElDoc documentations in a childframe. The childframe is selectable and scrollable with mouse, even though the cursor is hidden.

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

./screenshot.png

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
Enables a minor mode that displays 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 slow-down.
eldoc-box-help-at-point
Display the documentation of the symbol at point in a temporary childframe, moving point or typing C-g disposes the childframe. This command simply displays what would be displayed by eldoc-doc-buffer in a childframe, so it requires Emacs 28, and eldoc-box-hover-mode doesn’t need to be on for this command to work.

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.

Hooks

eldoc-box-buffer-hook
A hook that runs after buffer for doc is setup. Run inside the new buffer every time before the new documentation is displayed.
eldoc-box-frame-hook
A hook that runs 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 the sole argument.

Variable

eldoc-box-max-pixel-width & eldoc-box-max-pixel-height
The max width/height of the childframe.
eldoc-box-only-multi-line
Set this to non-nil and eldoc-box will only display multi-line message in childframe, and one line messages are left in minibuffer.
eldoc-box-cleanup-interval
After this amount of seconds, eldoc-box will 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
Whether to set fringe’s background color 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 (ie, when this-command is self-insert-command). But if you bind something else to your keys, eldoc-box can’t recognize it and will hide childframe when you type. Add your command to this list so eldoc-box won’t hide childframe when this command is called.
eldoc-box-lighter
Lighter displayed on the mode line.

Use with eglot

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

Default prettifier

By default, eldoc-box tries to prettify the displayed markdown documentation as shown below. If you wish to disable them, remove the prettifier functions from eldoc-box-buffer-hook. Report an issue if there are other things can be prettfied away.

./demo.png

Credit

  • Thanks to João Távora for valuable contribution and explaining eldoc and eglot internals to me.
  • This package is initially adapted from Sebastien Chapuis’s package lsp-ui.el.

More Repositories

1

valign

Pixel-perfect visual alignment for Org and Markdown tables.
Emacs Lisp
386
star
2

vundo

Visualize the undo tree.
Emacs Lisp
284
star
3

lunarymacs

Moon-based Emacs configuration.
Emacs Lisp
220
star
4

tree-sitter-module

Building script for tree-sitter language definitions
Shell
106
star
5

OrgMark

Insert and edit drawing in Org mode with iPad.
Swift
94
star
6

xeft

Fast, interactive Emacs note searching
Emacs Lisp
62
star
7

undo-hl

Highlight undo operations so you never get lost
Emacs Lisp
57
star
8

iscroll

Smooth scrolling over images in Emacs
Emacs Lisp
52
star
9

isolate

Surrounding magics, extensible
Emacs Lisp
49
star
10

ftable

Fill (auto-layout) tables
Emacs Lisp
44
star
11

ghelp

Emacs generic Help
Emacs Lisp
36
star
12

collab-mode

Cross-editor collaboration (WIP)
Rust
36
star
13

emacs-mission-control

Mac mission-control-like buffer switch
Emacs Lisp
34
star
14

ivy-filthy-rich

Richer information for ivy candidates, fully customizable
Emacs Lisp
19
star
15

casouri.github.io

My blog
HTML
16
star
16

trivial-copy

Copy, paste and move files like you do in Finder in Dired.
Emacs Lisp
14
star
17

awesome-himawari8

A collection of a bunch of implementations of himawari8 live earth desktop in many languages
12
star
18

nerdtab

Keyboard oriented tabs for Emacs
Emacs Lisp
9
star
19

expreg

Your friendly neighborhood expand-region clone
Emacs Lisp
6
star
20

quick-mathlive

Quick mathlive from commandline
JavaScript
6
star
21

weibo2mast

微博转发毛象(mastodon)bot
Python
5
star
22

highres-tab-line

High-res tab-line icons
4
star
23

config

my configurations
Python
4
star
24

zeft

Yet another Deft
Emacs Lisp
4
star
25

lunarySpoon

Sequential key binding for hammerspoon
Lua
4
star
26

find-char

A taste of the `f` operator of vim in Emacs.
Emacs Lisp
4
star
27

xapian-lite

Xapian dynamic module for Emacs
C
4
star
28

emacs-module-prelude

Convenient functions for Emacs dynamic modules.
C
3
star
29

emacs-file-icon

icons for emacs openable files
Python
3
star
30

nyan-lite

Nyan Mode Lite
Emacs Lisp
3
star
31

lunarymacs-stars

Default (my own) stars of lunarymacs
Emacs Lisp
3
star
32

pbcopyf

copy/paste/move files from command line for macOS
Swift
2
star
33

cq-80

Splatoon 2 Octo Expansion CQ-80 terminal replica
C++
2
star
34

lunaryline

A minimum alternative of spaceline.
Emacs Lisp
2
star
35

camelsnake-mode

Type camelCase and get snake_case
Emacs Lisp
2
star
36

fshell

M-x shell improved
Emacs Lisp
1
star
37

monovault

CSE 223B class project
TeX
1
star
38

mac-greek-substitution

macOS substitution for greek
1
star
39

launchdman

launchd parser and manager for Python
Python
1
star
40

hmx

Haskell
1
star
41

grade-analyzer

Fetch grade from Canvas and analyze it.
Python
1
star