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