From 2f3efabd0e59a0f232d11bbb8a0d4aee9dd975fd Mon Sep 17 00:00:00 2001 From: Zedhugh Chen Date: Mon, 9 Oct 2023 18:07:29 +0800 Subject: [PATCH] add multiple line doc support for eglot --- lisp/init-eglot.el | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/lisp/init-eglot.el b/lisp/init-eglot.el index 29409cf..849145a 100644 --- a/lisp/init-eglot.el +++ b/lisp/init-eglot.el @@ -9,6 +9,26 @@ (locate-library "markdown-mode")) (require 'markdown-mode))) +(defun creature/eglot-hover-eldoc-function (cb) + "Multiple line version of `eglot-hover-eldoc-function'." + (let ((eglot-server-capable-fn + (if (fboundp 'eglot-server-capable) + 'eglot-server-capable + 'eglot--server-capable))) + (when (funcall eglot-server-capable-fn :hoverProvider) + (let ((buf (current-buffer))) + (jsonrpc-async-request + (eglot--current-server-or-lose) + :textDocument/hover (eglot--TextDocumentPositionParams) + :success-fn (eglot--lambda ((Hover) contents range) + (eglot--when-buffer-window buf + (let ((info (unless (seq-empty-p contents) + (eglot--hover-info contents range)))) + (funcall cb info :buffer t)))) + :deferred :textDocument/hover)) + (eglot--highlight-piggyback cb) + t))) + (with-eval-after-load 'eglot (setq eglot-events-buffer-size 0) (setq eglot-confirm-server-initiated-edits nil) @@ -17,6 +37,11 @@ (add-hook 'eglot-managed-mode-hook #'creature/eglot-load-markdown-for-doc) + ;; variable `eglot-prefer-plaintext' invoked in eglot-1.14 + ;; and document only show one line by eldoc since eglot-1.14 + (when (boundp 'eglot-prefer-plaintext) + (advice-add 'eglot-hover-eldoc-function :override #'creature/eglot-hover-eldoc-function)) + (lazy-load-set-keys '(("M-." . xref-find-definitions) ("M-?" . xref-find-references)