From 78ffcc22d0bdef531e07a398373085cc1c037a48 Mon Sep 17 00:00:00 2001 From: joe Date: Fri, 17 Oct 2025 11:05:25 +0200 Subject: up --- .config/nvim/lua/lsp/ccls.lua | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .config/nvim/lua/lsp/ccls.lua (limited to '.config/nvim/lua/lsp/ccls.lua') 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') -- cgit v1.2.3