From e9ea3cc5913cb0a996158a3cc855fe94c15a2b7d Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 14 Feb 2024 17:44:38 -0500 Subject: [PATCH] feat(format): add eglot support Fix: #7673 --- modules/editor/format/autoload/format.el | 17 +++++++++++++++++ modules/editor/format/config.el | 3 ++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/modules/editor/format/autoload/format.el b/modules/editor/format/autoload/format.el index a581e2560..b341da4d1 100644 --- a/modules/editor/format/autoload/format.el +++ b/modules/editor/format/autoload/format.el @@ -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" diff --git a/modules/editor/format/config.el b/modules/editor/format/config.el index 397dc92db..0af781fb0 100644 --- a/modules/editor/format/config.el +++ b/modules/editor/format/config.el @@ -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