branch: externals/elpa commit ac9239bed5e3bfbf057382d1a75cdfa23f2caddd Author: João Távora <joaotav...@gmail.com> Commit: João Távora <joaotav...@gmail.com>
Fix small problems around Eglot's help buffer Specifically: - correctly format the message shown to the user about doc being truncated - don't show message if the buffer is showing in some frame's window - correctly name the help buffer switched to with `C-h .'. This is still not ideal: - When the `C-h .' suggestion is shown to the user, typing that keybinding shouldn't result in a new LSP request to fetch probably the same info; - All this functionality belongs in eldoc.el. * eglot.el (eglot-help-at-point): Fix buffer name. (eglot--update-doc): Provide more help. --- eglot.el | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/eglot.el b/eglot.el index 4b25368..733b69c 100644 --- a/eglot.el +++ b/eglot.el @@ -2270,12 +2270,12 @@ is not active." (jsonrpc-request (eglot--current-server-or-lose) :textDocument/hover (eglot--TextDocumentPositionParams)) (let ((blurb (and (not (seq-empty-p contents)) - (eglot--hover-info contents range)))) + (eglot--hover-info contents range))) + (hint (thing-at-point 'symbol))) (if blurb (with-current-buffer (eglot--help-buffer) (with-help-window (current-buffer) - (rename-buffer (format "*eglot-help for %s*" - (thing-at-point 'symbol))) + (rename-buffer (format "*eglot-help for %s*" hint)) (with-current-buffer standard-output (insert blurb)) (setq-local nobreak-char-display nil))) (display-local-help))))) @@ -2350,16 +2350,18 @@ documentation. Honour `eglot-put-doc-in-help-buffer', (erase-buffer) (insert string) (goto-char (point-min))) - (if eglot-auto-display-help-buffer - (display-buffer (current-buffer)) - (unless (get-buffer-window (current-buffer)) - ;; This prints two lines. Should it print 1? Or - ;; honour max-mini-window-height? - (eglot--message - "%s\n(...truncated. Full help is in `%s')" - (eglot--truncate-string string 1 (- (frame-width) 8)) - (buffer-name eglot--help-buffer)))) - (help-mode)))) + (help-mode))) + (if eglot-auto-display-help-buffer + (display-buffer eglot--help-buffer) + (unless (get-buffer-window eglot--help-buffer t) + ;; Hand-tweaked to print two lines. Should it print + ;; 1? Or honour max-mini-window-height? + (eglot--message + "%s\n(Truncated, %sfull help in buffer %s)" + (eglot--truncate-string string 1 (- (frame-width) 9)) + (if-let (key (car (where-is-internal 'eglot-help-at-point))) + (format "use %s to see " (key-description key)) "") + (buffer-name eglot--help-buffer))))) ((eq eldoc-echo-area-use-multiline-p t) (if-let ((available (eglot-doc-too-large-for-echo-area string))) (eldoc-message (eglot--truncate-string string available))