aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/lsp.lua
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2019-11-21 10:29:54 +0100
committerBjörn Linse <bjorn.linse@gmail.com>2019-11-21 11:12:57 +0100
commit76e0a8bd935b27270f8f6a594c3025bc494f4422 (patch)
treea54d57e5883dc781992da4ada7f7a7931f9b0e8e /runtime/lua/vim/lsp.lua
parent525bb1b55d8771939f0a9d72a532abc8f2134445 (diff)
downloadrneovim-76e0a8bd935b27270f8f6a594c3025bc494f4422.tar.gz
rneovim-76e0a8bd935b27270f8f6a594c3025bc494f4422.tar.bz2
rneovim-76e0a8bd935b27270f8f6a594c3025bc494f4422.zip
lsp: transmit "\n" after last line when 'eol' is set
Otherwise some servers like clangd will emit spurious "no newline at end of file" warnings.
Diffstat (limited to 'runtime/lua/vim/lsp.lua')
-rw-r--r--runtime/lua/vim/lsp.lua13
1 files changed, 10 insertions, 3 deletions
diff --git a/runtime/lua/vim/lsp.lua b/runtime/lua/vim/lsp.lua
index 9dbe03dace..0c1a145c04 100644
--- a/runtime/lua/vim/lsp.lua
+++ b/runtime/lua/vim/lsp.lua
@@ -23,7 +23,6 @@ local lsp = {
-- format_rpc_error = lsp_rpc.format_rpc_error;
}
--- TODO consider whether 'eol' or 'fixeol' should change the nvim_buf_get_lines that send.
-- TODO improve handling of scratch buffers with LSP attached.
local function resolve_bufnr(bufnr)
@@ -175,6 +174,14 @@ local function validate_client_config(config)
}
end
+local function buf_get_full_text(bufnr)
+ local text = table.concat(nvim_buf_get_lines(bufnr, 0, -1, true), '\n')
+ if nvim_buf_get_option(bufnr, 'eol') then
+ text = text .. '\n'
+ end
+ return text
+end
+
local function text_document_did_open_handler(bufnr, client)
if not client.resolved_capabilities.text_document_open_close then
return
@@ -188,7 +195,7 @@ local function text_document_did_open_handler(bufnr, client)
uri = vim.uri_from_bufnr(bufnr);
-- TODO make sure our filetypes are compatible with languageId names.
languageId = nvim_buf_get_option(bufnr, 'filetype');
- text = table.concat(nvim_buf_get_lines(bufnr, 0, -1, false), '\n');
+ text = buf_get_full_text(bufnr);
}
}
client.notify('textDocument/didOpen', params)
@@ -551,7 +558,7 @@ do
end)
local full_changes = once(function()
return {
- text = table.concat(nvim_buf_get_lines(bufnr, 0, -1, false), "\n");
+ text = buf_get_full_text(bufnr);
};
end)
local uri = vim.uri_from_bufnr(bufnr)