aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/lsp/util.lua
diff options
context:
space:
mode:
authorMathias Fußenegger <mfussenegger@users.noreply.github.com>2023-03-01 15:33:13 +0100
committerGitHub <noreply@github.com>2023-03-01 15:33:13 +0100
commit896d672736b32a8f4a4fa51844b44f266dcdcc6c (patch)
tree9d1d76c626640a9aab6c0dd2782416e342342036 /runtime/lua/vim/lsp/util.lua
parentd66832c76d6fce1627c33ae60a1b8efec1e32bdd (diff)
downloadrneovim-896d672736b32a8f4a4fa51844b44f266dcdcc6c.tar.gz
rneovim-896d672736b32a8f4a4fa51844b44f266dcdcc6c.tar.bz2
rneovim-896d672736b32a8f4a4fa51844b44f266dcdcc6c.zip
fix(lsp): use buffer scheme for files not stored on disk (#22407)
Sending `didOpen` with a `file` scheme causes problems with some language servers because they expect the file to exist on disk. See https://github.com/microsoft/language-server-protocol/pull/1679
Diffstat (limited to 'runtime/lua/vim/lsp/util.lua')
-rw-r--r--runtime/lua/vim/lsp/util.lua9
1 files changed, 7 insertions, 2 deletions
diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua
index 4beb4fc367..554e26022c 100644
--- a/runtime/lua/vim/lsp/util.lua
+++ b/runtime/lua/vim/lsp/util.lua
@@ -2032,7 +2032,12 @@ end
---@returns `TextDocumentIdentifier`
---@see https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocumentIdentifier
function M.make_text_document_params(bufnr)
- return { uri = vim.uri_from_bufnr(bufnr or 0) }
+ bufnr = bufnr or 0
+ local uri = vim.uri_from_bufnr(bufnr)
+ if not uv.fs_stat(api.nvim_buf_get_name(bufnr)) then
+ uri = uri:gsub('^file://', 'buffer://')
+ end
+ return { uri = uri }
end
--- Create the workspace params
@@ -2065,7 +2070,7 @@ function M.make_formatting_params(options)
insertSpaces = vim.bo.expandtab,
})
return {
- textDocument = { uri = vim.uri_from_bufnr(0) },
+ textDocument = M.make_text_document_params(0),
options = options,
}
end