diff options
author | Mathias Fußenegger <mfussenegger@users.noreply.github.com> | 2023-03-01 15:33:13 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-01 15:33:13 +0100 |
commit | 896d672736b32a8f4a4fa51844b44f266dcdcc6c (patch) | |
tree | 9d1d76c626640a9aab6c0dd2782416e342342036 /runtime/lua/vim/lsp/util.lua | |
parent | d66832c76d6fce1627c33ae60a1b8efec1e32bdd (diff) | |
download | rneovim-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.lua | 9 |
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 |