From 6d180fac42e0716b80912d6b1f83192d6564bdaf Mon Sep 17 00:00:00 2001 From: Evan Reichard Date: Tue, 12 Mar 2024 23:26:11 -0700 Subject: [PATCH] feat(nvim): add dap & golang lint --- nvim/config/lua/dap-config.lua | 58 +++++++++++++++++++++++++++++++--- nvim/config/lua/lsp-config.lua | 14 ++++++++ nvim/default.nix | 3 ++ 3 files changed, 71 insertions(+), 4 deletions(-) diff --git a/nvim/config/lua/dap-config.lua b/nvim/config/lua/dap-config.lua index c6e7bb5..35eb73f 100644 --- a/nvim/config/lua/dap-config.lua +++ b/nvim/config/lua/dap-config.lua @@ -2,15 +2,65 @@ local dap = require("dap") local dapui = require("dapui") local dapgo = require("dap-go") -dapui.setup() +dapui.setup({ + controls = { + element = "repl", + enabled = true, + icons = { + disconnect = "", + pause = "", + play = "", + run_last = "", + step_back = "", + step_into = "", + step_out = "", + step_over = "", + terminate = "" + } + }, + element_mappings = {}, + expand_lines = false, + floating = {border = "single", mappings = {close = {"q", ""}}}, + force_buffers = true, + icons = {collapsed = "", current_frame = "", expanded = ""}, + layouts = { + { + elements = {{id = "repl", size = 0.5}, {id = "scopes", size = 0.5}}, + position = "bottom", + size = 10 + }, { + elements = { + {id = "breakpoints", size = 0.5}, {id = "stacks", size = 0.5} + }, + position = "left", + size = 40 + } + }, + mappings = { + edit = "e", + expand = {"", "<2-LeftMouse>"}, + open = "o", + remove = "d", + repl = "r", + toggle = "t" + }, + render = {indent = 1, max_value_lines = 100} +}) dapgo.setup() -- Auto Open UI dap.listeners.before.attach.dapui_config = function() dapui.open() end dap.listeners.before.launch.dapui_config = function() dapui.open() end -dap.listeners.before.event_terminated.dapui_config = - function() dapui.close() end -dap.listeners.before.event_exited.dapui_config = function() dapui.close() end + +-- Continue Hotkey ("c") +vim.api.nvim_create_autocmd("FileType", { + pattern = "dap-repl", + callback = function() + vim.api.nvim_buf_set_keymap(0, 'n', 'c', + "lua require'dap'.continue()", + {noremap = true, silent = true}) + end +}) -- Leader Keys local opts = {noremap = true, silent = true} diff --git a/nvim/config/lua/lsp-config.lua b/nvim/config/lua/lsp-config.lua index da0785d..8f67df5 100644 --- a/nvim/config/lua/lsp-config.lua +++ b/nvim/config/lua/lsp-config.lua @@ -119,6 +119,20 @@ nvim_lsp.gopls.setup { cmd = {nix_vars.gopls} } +-- Go LSP Linting +nvim_lsp.golangci_lint_ls.setup { + on_attach = on_attach_no_formatting, + flags = lsp_flags, + capabilities = capabilities, + cmd = {nix_vars.golintls}, + init_options = { + command = { + "golangci-lint", "run", "--enable-all", "--disable", "lll", + "--out-format", "json", "--issues-exit-code=1" + } + } +} + ------------------------------------------------------ --------------------- Null-LS LSP -------------------- ------------------------------------------------------ diff --git a/nvim/default.nix b/nvim/default.nix index c25745b..05f0c09 100644 --- a/nvim/default.nix +++ b/nvim/default.nix @@ -92,6 +92,8 @@ in # LSP Dependencies go + golangci-lint + golangci-lint-langserver gopls nodePackages.eslint nodePackages.eslint_d @@ -129,6 +131,7 @@ in gopls = "${pkgs.gopls}/bin/gopls", sveltels = "${pkgs.nodePackages.svelte-language-server}/bin/svelteserver", tsls = "${pkgs.nodePackages.typescript-language-server}/bin/typescript-language-server", + golintls = "${pkgs.golangci-lint-langserver}/bin/golangci-lint-langserver", vscls = "${pkgs.nodePackages.vscode-langservers-extracted}", } return nix_vars