Function: eglot-path-to-uri
eglot-path-to-uri is a byte-compiled function defined in eglot.el.gz.
Signature
(eglot-path-to-uri PATH &key TRUENAMEP)
Documentation
Convert PATH, a file name, to LSP URI string and return it.
TRUENAMEP indicated PATH is already a truename.
Aliases
eglot--path-to-uri (obsolete since 1.16)
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/eglot.el.gz
(cl-defun eglot-path-to-uri (path &key truenamep)
"Convert PATH, a file name, to LSP URI string and return it.
TRUENAMEP indicated PATH is already a truename."
;; LSP servers should not be expected to access the filesystem, and
;; therefore are generally oblivious that some filenames are
;; different, but point to the same file, like a symlink and its
;; target. Make sure we hand the server the true name of a file by
;; calling file-truename.
(let ((truepath (if truenamep path (file-truename path))))
(if (and (url-type (url-generic-parse-url path))
;; PATH might be MS Windows file name which includes a
;; drive letter that looks like a URL scheme (bug#59338).
(not (and (eq system-type 'windows-nt)
(file-name-absolute-p truepath))))
;; PATH is already a URI, so forward it to the LSP server
;; untouched. The server should be able to handle it, since
;; it provided this URI to clients in the first place.
path
(concat "file://"
;; Add a leading "/" for local MS Windows-style paths.
(if (and (eq system-type 'windows-nt)
(not (file-remote-p truepath)))
"/")
(url-hexify-string
;; Again watch out for trampy paths.
(directory-file-name (file-local-name truepath))
eglot--uri-path-allowed-chars)))))