diff options
Diffstat (limited to 'lua/common_lsp')
| -rw-r--r-- | lua/common_lsp/clangd.lua | 40 | ||||
| -rw-r--r-- | lua/common_lsp/gopls.lua | 2 |
2 files changed, 41 insertions, 1 deletions
diff --git a/lua/common_lsp/clangd.lua b/lua/common_lsp/clangd.lua new file mode 100644 index 00000000..465af674 --- /dev/null +++ b/lua/common_lsp/clangd.lua @@ -0,0 +1,40 @@ +local skeleton = require 'common_lsp/skeleton' +local util = require 'common_lsp/util' +local lsp = vim.lsp + +local default_capabilities = lsp.protocol.make_client_capabilities() +default_capabilities.offsetEncoding = {"utf-8", "utf-16"} + +skeleton.clangd = { + default_config = { + cmd = {"clangd", "--background-index"}; + filetypes = {"c", "cpp", "objc", "objcpp"}; + root_dir = util.root_pattern("compile_commands.json", "compile_flags.txt", ".git"); + log_level = lsp.protocol.MessageType.Warning; + settings = {}; + capabilities = default_capabilities; + on_init = vim.schedule_wrap(function(client, result) + if result.offsetEncoding then + client.offset_encoding = result.offsetEncoding + end + end) + }; + -- commands = {}; + -- on_new_config = function(new_config) end; + -- on_attach = function(client, bufnr) end; + docs = { + description = [[ +https://clang.llvm.org/extra/clangd/Installation.html + +clangd relies on a [JSON compilation database](https://clang.llvm.org/docs/JSONCompilationDatabase.html) specified +as compile_commands.json or, for simpler projects, a compile_flags.txt. +]]; + default_config = { + root_dir = [[root_pattern("compile_commands.json", "compile_flags.txt", ".git")]]; + on_init = [[function to handle changing offsetEncoding]]; + capabilities = [[default capabilities, with offsetEncoding utf-8]]; + }; + }; +} +-- vim:et ts=2 sw=2 + diff --git a/lua/common_lsp/gopls.lua b/lua/common_lsp/gopls.lua index 306c7f2c..e3061d16 100644 --- a/lua/common_lsp/gopls.lua +++ b/lua/common_lsp/gopls.lua @@ -19,7 +19,7 @@ https://github.com/golang/tools/tree/master/gopls Google's lsp server for golang. ]]; default_config = { - root_dir = "vim's starting directory"; + root_dir = [[root_pattern("go.mod", ".git")]]; }; }; } |
