branch: externals/eglot
commit 9882bf243cc5b2a4f3700838d2a42a2d9d792f18
Author: João Távora <[email protected]>
Commit: João Távora <[email protected]>
Cleanup mistake with TextDocumentItem and TextDocumentIdentifier
Also introduce eglot--path-to-uri
* eglot.el (eglot--path-to-uri): Rename from eglot--uri and rework.
(eglot--connect): Use it.
(eglot--current-buffer-TextDocumentIdentifier): New function.
(eglot--current-buffer-VersionedTextDocumentIdentifier)
(eglot--signal-textDocument/didChange)
(eglot--signal-textDocument/didClose)
(eglot--signal-textDocument/willSave)
(eglot--signal-textDocument/didSave): Use it.
---
eglot.el | 30 ++++++++++++++++--------------
1 file changed, 16 insertions(+), 14 deletions(-)
diff --git a/eglot.el b/eglot.el
index 2b3f270..2afb0e7 100644
--- a/eglot.el
+++ b/eglot.el
@@ -254,9 +254,8 @@ SUCCESS-FN with no args if all goes well."
(eglot--obj :processId (unless (eq (process-type proc)
'network)
(emacs-pid))
- :rootUri (eglot--uri
- (expand-file-name (car (project-roots
- (project-current)))))
+ :rootUri (eglot--path-to-uri
+ (car (project-roots (project-current))))
:initializationOptions []
:capabilities (eglot--client-capabilities))
:success-fn
@@ -699,7 +698,11 @@ identifier. ERROR is non-nil if this is a JSON-RPC error."
(apply #'format format args)
:warning)))
-(defun eglot--uri (path) "Add file:// to PATH." (concat "file://" path))
+(defun eglot--path-to-uri (path)
+ "Urify PATH."
+ (url-hexify-string
+ (concat "file://" (file-truename path))
+ url-path-allowed-chars))
;;; Minor modes
@@ -1033,15 +1036,14 @@ running. INTERACTIVE is t if called interactively."
(defvar-local eglot--versioned-identifier 0)
+(defun eglot--current-buffer-TextDocumentIdentifier ()
+ "Compute TextDocumentIdentifier object for current buffer."
+ (eglot--obj :uri (eglot--path-to-uri buffer-file-name)))
+
(defun eglot--current-buffer-VersionedTextDocumentIdentifier ()
"Compute VersionedTextDocumentIdentifier object for current buffer."
- (eglot--obj :uri
- (eglot--uri
- (url-hexify-string
- (file-truename buffer-file-name)
- url-path-allowed-chars))
- ;; FIXME: later deal with workspaces
- :version eglot--versioned-identifier))
+ (append (eglot--current-buffer-TextDocumentIdentifier)
+ (eglot--obj :version eglot--versioned-identifier)))
(defun eglot--current-buffer-TextDocumentItem ()
"Compute TextDocumentItem object for current buffer."
@@ -1154,7 +1156,7 @@ Records START, END and PRE-CHANGE-LENGTH locally."
(eglot--notify proc
:textDocument/didClose
(eglot--obj :textDocument
- (eglot--current-buffer-TextDocumentItem)))))
+
(eglot--current-buffer-TextDocumentIdentifier)))))
(defun eglot--signal-textDocument/willSave ()
"Send textDocument/willSave to server."
@@ -1163,7 +1165,7 @@ Records START, END and PRE-CHANGE-LENGTH locally."
:textDocument/willSave
(eglot--obj
:reason 1 ; Manual, emacs laughs in the face of auto-save muahahahaha
- :textDocument (eglot--current-buffer-TextDocumentItem))))
+ :textDocument (eglot--current-buffer-TextDocumentIdentifier))))
(defun eglot--signal-textDocument/didSave ()
"Send textDocument/didSave to server."
@@ -1173,7 +1175,7 @@ Records START, END and PRE-CHANGE-LENGTH locally."
(eglot--obj
;; TODO: Handle TextDocumentSaveRegistrationOptions to control this.
:text (buffer-substring-no-properties (point-min) (point-max))
- :textDocument (eglot--current-buffer-TextDocumentItem))))
+ :textDocument (eglot--current-buffer-TextDocumentIdentifier))))
(defun eglot-flymake-backend (report-fn &rest _more)
"An EGLOT Flymake backend.