feat(format): add eglot support

Fix: #7673
This commit is contained in:
Henrik Lissner 2024-02-14 17:44:38 -05:00 committed by Yann Esposito (Yogsototh)
parent 4426d10692
commit 02ce4ee2b9
Signed by untrusted user who does not match committer: yogsototh
GPG key ID: 7B19A4C650D59646
2 changed files with 19 additions and 1 deletions

View file

@ -107,6 +107,23 @@ the requested feature."
#'lsp-format-region))
t))
;;;###autoload
(defun +format-with-eglot-fn (beg end op)
"Format the region/buffer using any available eglot formatter.
Does nothing if `+format-with-lsp' is nil or the active server doesn't support
the requested feature."
(when (and +format-with-lsp
(bound-and-true-p eglot-managed-mode)
(eglot--server-capable
(if (eq op 'buffer)
:documentFormattingProvider
:documentRangeFormattingProvider)))
(if (eq op 'buffer)
(eglot-format-buffer)
(eglot-format beg end))
t))
;;;###autoload
(defun +format-in-org-src-blocks-fn (beg end _op)
"TODO"

View file

@ -29,7 +29,8 @@ This has no effect on the +onsave flag, apheleia will always be used there.")
(defvar +format-functions
'(+format-in-org-src-blocks-fn
+format-with-lsp-fn)
+format-with-lsp-fn
+format-with-eglot-fn)
"A list of functions to run when formatting a buffer or region.
Each function is given three arguments: the starting point, end point, and a