aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/home/.config/nvim/lsp
diff options
context:
space:
mode:
authorLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2025-09-11 16:38:11 +0100
committerLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2025-09-11 16:38:11 +0100
commitaa62e1f27b0cb3d712d6f2b13071cca0f09379be (patch)
treea6d2a4ba09d66490bc7c1a23f35be707fa0f5c8b /home/.config/nvim/lsp
parentc1f310bcc39f6cf4684d938d7be45bb25b427335 (diff)
downloaddotfiles-master.tar.gz
dotfiles-master.tar.bz2
dotfiles-master.zip
Add a lot of changesHEADmaster
Diffstat (limited to 'home/.config/nvim/lsp')
-rw-r--r--home/.config/nvim/lsp/clangd.lua57
-rw-r--r--home/.config/nvim/lsp/lua_ls.lua9
2 files changed, 66 insertions, 0 deletions
diff --git a/home/.config/nvim/lsp/clangd.lua b/home/.config/nvim/lsp/clangd.lua
new file mode 100644
index 0000000..e9868ae
--- /dev/null
+++ b/home/.config/nvim/lsp/clangd.lua
@@ -0,0 +1,57 @@
+local function validate_bufnr(bufnr)
+ vim.validate("bufnr", bufnr, "number")
+ return bufnr == 0 and vim.api.nvim_get_current_buf() or bufnr
+end
+
+local function switch_source_header_splitcmd(bufnr, splitcmd)
+ local method_name = "textDocument/switchSourceHeader"
+ bufnr = validate_bufnr(bufnr)
+ local client = vim.lsp.get_clients({ bufnr = bufnr, name = "clangd" })[1]
+ if not client then
+ return vim.notify(
+ ("method %s is not supported by any servers active on the current buffer"):format(
+ method_name
+ )
+ )
+ end
+ 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.api.nvim_cmd({
+ cmd = splitcmd,
+ args = { vim.uri_to_fname(result) },
+ }, {})
+ end, bufnr)
+end
+
+return {
+ capabilities = {
+ offsetEncoding = { "utf-16" },
+ },
+ on_attach = function(_, bufnr)
+ local function nmap(l, r, desc)
+ vim.keymap.set("n", l, r, { buffer = bufnr, desc = desc })
+ end
+ nmap("gH", function()
+ switch_source_header_splitcmd(bufnr, "edit")
+ end, "[G]o to [H]eader")
+ nmap("gvH", function()
+ switch_source_header_splitcmd(bufnr, "vsplit")
+ end, "[G]o in a [V]ertical split to [H]eader")
+ nmap("gxH", function()
+ switch_source_header_splitcmd(bufnr, "split")
+ end, "[G]o in a [X]horizontal split to [H]eader")
+ nmap("gtH", function()
+ switch_source_header_splitcmd(bufnr, "tabedit")
+ end, "[G]o in a [T]ab to [H]eader")
+ end,
+ init_options = {
+ clangdFileStatus = true,
+ },
+}
diff --git a/home/.config/nvim/lsp/lua_ls.lua b/home/.config/nvim/lsp/lua_ls.lua
new file mode 100644
index 0000000..af0e681
--- /dev/null
+++ b/home/.config/nvim/lsp/lua_ls.lua
@@ -0,0 +1,9 @@
+return {
+ settings = {
+ Lua = {
+ diagnostics = {
+ disable = { "missing-fields" },
+ },
+ },
+ },
+}