mirror of
https://github.com/doomemacs/doomemacs
synced 2025-08-01 12:17:25 -05:00
fix(format): eglot format scratch buffer
This commit is contained in:
committed by
Henrik Lissner
parent
4ca742a281
commit
50a2ba0586
@ -72,14 +72,36 @@ Won't forward the buffer to chained formatters if successful."
|
|||||||
(lsp--apply-text-edits edits 'format)))
|
(lsp--apply-text-edits edits 'format)))
|
||||||
t)))
|
t)))
|
||||||
|
|
||||||
(cl-defun +format--with-eglot (beg end &key buffer callback &allow-other-keys)
|
(cl-defun +format--with-eglot (beg end &key scratch buffer callback &allow-other-keys)
|
||||||
"Format the current buffer or region with any available eglot formatter.
|
"Format the current buffer or region with any available eglot formatter.
|
||||||
|
|
||||||
Won't forward the buffer to chained formatters if successful."
|
Won't forward the buffer to chained formatters if successful."
|
||||||
(with-current-buffer buffer
|
(let ((edits
|
||||||
(or (with-demoted-errors "%s"
|
(with-current-buffer buffer
|
||||||
(always (eglot-format beg end)))
|
(pcase-let
|
||||||
;; try next chained formatter(s)
|
((`(,method ,args)
|
||||||
(ignore (funcall callback)))))
|
(cond ((and (not beg) (eglot-server-capable :documentFormattingProvider))
|
||||||
|
'(:textDocument/formatting nil))
|
||||||
|
((eglot-server-capable :documentRangeFormattingProvider)
|
||||||
|
`(:textDocument/rangeFormatting
|
||||||
|
(:range ,(list :start (eglot--pos-to-lsp-position (or beg (point-min)))
|
||||||
|
:end (eglot--pos-to-lsp-position (or end (point-max)))))))
|
||||||
|
;; try next chained formatter(s)
|
||||||
|
((cl-return (ignore (funcall callback)))))))
|
||||||
|
(eglot--request
|
||||||
|
(eglot--current-server-or-lose)
|
||||||
|
method
|
||||||
|
(cl-list*
|
||||||
|
:textDocument (eglot--TextDocumentIdentifier)
|
||||||
|
:options (list :tabSize tab-width
|
||||||
|
:insertSpaces (if indent-tabs-mode :json-false t)
|
||||||
|
:insertFinalNewline (if require-final-newline t :json-false)
|
||||||
|
:trimFinalNewlines (if delete-trailing-lines t :json-false))
|
||||||
|
args))))))
|
||||||
|
(unless (seq-empty-p edits)
|
||||||
|
(with-current-buffer scratch
|
||||||
|
(with-demoted-errors "%s"
|
||||||
|
(eglot--apply-text-edits edits))))
|
||||||
|
t))
|
||||||
|
|
||||||
;;; lsp.el ends here
|
;;; lsp.el ends here
|
||||||
|
Reference in New Issue
Block a user