diff options
author | joe <rbo@gmx.us> | 2025-10-17 11:05:25 +0200 |
---|---|---|
committer | joe <rbo@gmx.us> | 2025-10-17 11:05:25 +0200 |
commit | 78ffcc22d0bdef531e07a398373085cc1c037a48 (patch) | |
tree | 45d05939b38a5f848689b36c4176778778e8e851 | |
parent | up (diff) | |
download | dotfiles-bsd-78ffcc22d0bdef531e07a398373085cc1c037a48.tar.gz dotfiles-bsd-78ffcc22d0bdef531e07a398373085cc1c037a48.tar.bz2 dotfiles-bsd-78ffcc22d0bdef531e07a398373085cc1c037a48.tar.xz dotfiles-bsd-78ffcc22d0bdef531e07a398373085cc1c037a48.tar.zst dotfiles-bsd-78ffcc22d0bdef531e07a398373085cc1c037a48.zip |
up
Diffstat (limited to '')
-rw-r--r-- | .config/nvim/lua/lsp/ccls.lua | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/.config/nvim/lua/lsp/ccls.lua b/.config/nvim/lua/lsp/ccls.lua new file mode 100644 index 0000000..431d547 --- /dev/null +++ b/.config/nvim/lua/lsp/ccls.lua @@ -0,0 +1,30 @@ +local function switch_source_header(client, bufnr) + local method_name = 'textDocument/switchSourceHeader' + local params = vim.lsp.util.make_text_document_params(bufnr) + client:request(method_name, params, function(err, result) + if err then + error(tostring(err)) + end + if not result then + vim.notify('corresponding file cannot be determined') + return + end + vim.cmd.edit(vim.uri_to_fname(result)) + end, bufnr) +end + +vim.lsp.config('ccls', { + cmd = { 'ccls' }, + filetypes = { 'c', 'cpp', 'objc', 'objcpp', 'cuda' }, + root_markers = { 'compile_commands.json', '.ccls', '.git' }, + offset_encoding = 'utf-32', + -- ccls does not support sending a null root directory + workspace_required = true, + on_attach = function(client, bufnr) + vim.api.nvim_buf_create_user_command(bufnr, 'LspCclsSwitchSourceHeader', function() + switch_source_header(client, bufnr) + end, { desc = 'Switch between source/header' }) + end, +}) + +vim.lsp.enable('ccls') |