1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
return {
"neovim/nvim-lspconfig",
init = function()
local keys = require("lazyvim.plugins.lsp.keymaps").get()
-- change a keymap
-- keys[#keys + 1] = { "K", "<cmd>echo 'hello'<cr>" }
-- keys[#keys + 1] = { "<c-k>", mode = { "i" }, false }
-- disable a keymap
-- keys[#keys + 1] = { "K", false }
keys[#keys + 1] = { mode = { "i" }, "<c-k>", false }
-- add a keymap
-- keys[#keys + 1] = { "H", "<cmd>echo 'hello'<cr>" }
end,
opts = {
servers = {
-- Ensure mason installs the server
clangd = {
keys = {
{ "<leader>cR", "<cmd>ClangdSwitchSourceHeader<cr>", desc = "Switch Source/Header (C/C++)" },
},
root_dir = function(fname)
return require("lspconfig.util").root_pattern(
"Makefile",
"configure.ac",
"configure.in",
"config.h.in",
"meson.build",
"meson_options.txt",
"build.ninja"
)(fname) or require("lspconfig.util").root_pattern("compile_commands.json", "compile_flags.txt")(
fname
) or require("lspconfig.util").find_git_ancestor(fname)
end,
capabilities = {
offsetEncoding = { "utf-16" },
},
cmd = {
"clangd",
"--background-index",
"--clang-tidy",
"--header-insertion=iwyu",
"--completion-style=detailed",
"--function-arg-placeholders",
"--fallback-style=llvm",
},
init_options = {
usePlaceholders = true,
completeUnimported = true,
clangdFileStatus = true,
},
},
},
setup = {
clangd = function(_, opts)
local clangd_ext_opts = require("lazyvim.util").opts("clangd_extensions.nvim")
require("clangd_extensions").setup(vim.tbl_deep_extend("force", clangd_ext_opts or {}, { server = opts }))
return false
end,
},
},
keys = {
{
-- mode = "n",
"<leader>rr",
":w | :TermExec cmd='compiler \"%\"' size=50 direction=tab go_back=0<cr>",
desc = "Run Code",
},
{
-- mode = "n",
"<leader>rd",
":w | :TermExec cmd='compiler \"%\" -d' size=50 direction=tab go_back=0<cr>",
desc = "Debug Code",
},
},
}
|