]> git.eshelyaron.com Git - emacs.git/commitdiff
Eglot: unbreak eglot-extend-to-xref on w32
authorJoão Távora <joaotavora@gmail.com>
Thu, 30 Mar 2023 22:52:27 +0000 (23:52 +0100)
committerJoão Távora <joaotavora@gmail.com>
Thu, 30 Mar 2023 22:57:06 +0000 (23:57 +0100)
Because of a drive-letter casing mismatch between 'buffer-file-name'
and the return value of 'url-generic-parse-url', the hash-table test
'equal' in 'eglot-current-server' failed.

This failed to recognize that the file xref landed us on really is
managed by the language server that facilitated that jump.

The function w32-long-file-name seems to convert "C:/Users/" to
"c:/Users" consistently and so is a good addition to
eglot--uri-to-path.

* lisp/progmodes/eglot.el (eglot--uri-to-path): Use
w32-long-file-name.

lisp/progmodes/eglot.el

index 3f5245397a090324c58be12b51dbb3954a8a2d5e..8f64f849d72f8ec86cc5ac036ea7b4df2966a745 100644 (file)
@@ -1620,10 +1620,9 @@ If optional MARKER, return a marker instead"
                (normalized (if (and (not remote-prefix)
                                     (eq system-type 'windows-nt)
                                     (cl-plusp (length retval)))
-                               (substring retval 1)
+                               (w32-long-file-name (substring retval 1))
                              retval)))
           (concat remote-prefix normalized))
-
       uri)))
 
 (defun eglot--snippet-expansion-fn ()