aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorHirokazu Hata <h.hata.ai.t@gmail.com>2020-06-09 12:06:45 +0900
committerGitHub <noreply@github.com>2020-06-09 12:06:45 +0900
commit8e95e496a86bd6766d2274d68798a5e6b8197ea5 (patch)
tree4a924941dc5984ff2dc6df8d03fdce4b2431cecd /lua
parent[docgen] Update README.md (diff)
parentAdd link to extension (diff)
downloadnvim-lspconfig-8e95e496a86bd6766d2274d68798a5e6b8197ea5.tar
nvim-lspconfig-8e95e496a86bd6766d2274d68798a5e6b8197ea5.tar.gz
nvim-lspconfig-8e95e496a86bd6766d2274d68798a5e6b8197ea5.tar.bz2
nvim-lspconfig-8e95e496a86bd6766d2274d68798a5e6b8197ea5.tar.lz
nvim-lspconfig-8e95e496a86bd6766d2274d68798a5e6b8197ea5.tar.xz
nvim-lspconfig-8e95e496a86bd6766d2274d68798a5e6b8197ea5.tar.zst
nvim-lspconfig-8e95e496a86bd6766d2274d68798a5e6b8197ea5.zip
Merge pull request #263 from Shatur95/add-clangd-switch-source-header
Diffstat (limited to 'lua')
-rw-r--r--lua/nvim_lsp/clangd.lua28
1 files changed, 28 insertions, 0 deletions
diff --git a/lua/nvim_lsp/clangd.lua b/lua/nvim_lsp/clangd.lua
index 24b8f2c8..47e00741 100644
--- a/lua/nvim_lsp/clangd.lua
+++ b/lua/nvim_lsp/clangd.lua
@@ -1,6 +1,17 @@
local configs = require 'nvim_lsp/configs'
local util = require 'nvim_lsp/util'
+-- https://clangd.llvm.org/extensions.html#switch-between-sourceheader
+local function switch_source_header(bufnr)
+ bufnr = util.validate_bufnr(bufnr)
+ local params = { uri = vim.uri_from_bufnr(bufnr) }
+ vim.lsp.buf_request(bufnr, 'textDocument/switchSourceHeader', params, function(err, _, result)
+ if err then error(tostring(err)) end
+ if not result then print ("Corresponding file can’t be determined") return end
+ vim.api.nvim_command('edit '..vim.uri_to_fname(result))
+ end)
+end
+
local root_pattern = util.root_pattern("compile_commands.json", "compile_flags.txt", ".git")
configs.clangd = {
default_config = util.utf8_config {
@@ -11,6 +22,21 @@ configs.clangd = {
or util.path.join(vim.loop.cwd(), fname)
return root_pattern(filename) or util.path.dirname(filename)
end;
+ capabilities = {
+ textDocument = {
+ completion = {
+ editsNearCursor = true
+ }
+ }
+ },
+ };
+ commands = {
+ ClangdSwitchSourceHeader = {
+ function()
+ switch_source_header(0)
+ end;
+ description = "Switch between source/header";
+ };
};
docs = {
description = [[
@@ -28,4 +54,6 @@ as compile_commands.json or, for simpler projects, a compile_flags.txt.
};
};
}
+
+configs.clangd.switch_source_header = switch_source_header
-- vim:et ts=2 sw=2