From b55ec74888dc9a8c4d0326f01db8575573b749c7 Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 7 Dec 2024 16:03:21 +0000 Subject: [PATCH] feat: Added nvim without git confusion --- nvim/.config/nvim/lua/custom/chadrc.lua | 9 +++ .../nvim/lua/custom/configs/lspconfig.lua | 36 +++++++++ .../nvim/lua/custom/configs/mappings.lua | 48 +++++++++++ .../nvim/lua/custom/configs/null-ls-go.lua | 29 +++++++ .../nvim/lua/custom/configs/null-ls-py.lua | 9 +++ .../nvim/lua/custom/configs/null-ls-ts.lua | 25 ++++++ nvim/.config/nvim/lua/custom/plugins.lua | 80 +++++++++++++++++++ 7 files changed, 236 insertions(+) create mode 100644 nvim/.config/nvim/lua/custom/chadrc.lua create mode 100644 nvim/.config/nvim/lua/custom/configs/lspconfig.lua create mode 100644 nvim/.config/nvim/lua/custom/configs/mappings.lua create mode 100644 nvim/.config/nvim/lua/custom/configs/null-ls-go.lua create mode 100644 nvim/.config/nvim/lua/custom/configs/null-ls-py.lua create mode 100644 nvim/.config/nvim/lua/custom/configs/null-ls-ts.lua create mode 100644 nvim/.config/nvim/lua/custom/plugins.lua diff --git a/nvim/.config/nvim/lua/custom/chadrc.lua b/nvim/.config/nvim/lua/custom/chadrc.lua new file mode 100644 index 0000000..cb71add --- /dev/null +++ b/nvim/.config/nvim/lua/custom/chadrc.lua @@ -0,0 +1,9 @@ +local M = {} + +M.ui = { theme = 'catppuccin', tabufline= {enabled= false} } +M.plugins = "custom.plugins" +M.mappings = require "custom.configs.mappings" +vim.opt.spelllang = 'en_gb' +vim.opt.spell = true + +return M diff --git a/nvim/.config/nvim/lua/custom/configs/lspconfig.lua b/nvim/.config/nvim/lua/custom/configs/lspconfig.lua new file mode 100644 index 0000000..1482111 --- /dev/null +++ b/nvim/.config/nvim/lua/custom/configs/lspconfig.lua @@ -0,0 +1,36 @@ +local on_attach = require("plugins.configs.lspconfig").on_attach +local capabilities = require("plugins.configs.lspconfig").capabilities + +local lspconfig = require("lspconfig") +local util = require "lspconfig/util" + +lspconfig.gopls.setup { + on_attach = on_attach, + capabilities = capabilities, + cmd= {"gopls"}, + filetypes = { "go", "gomod", "gowork", "gotmpl" }, + root_dir = util.root_pattern("go.work", "go.mod", ".git"), + settings = { + completeUnimported = true, + usePlaceholders = true, + analyses = { + unusedparams = true, + } + } +} + +lspconfig.tsserver.setup{ + on_attach=on_attach, + capabilities=capabilities, + init_options = { + preferences = { + disableSuggestions = true, + } + } +} + +lspconfig.pyright.setup({ + on_attach = on_attach, + capabilities = capabilities, + filetypes= {"python"}, +}) diff --git a/nvim/.config/nvim/lua/custom/configs/mappings.lua b/nvim/.config/nvim/lua/custom/configs/mappings.lua new file mode 100644 index 0000000..ce3d52c --- /dev/null +++ b/nvim/.config/nvim/lua/custom/configs/mappings.lua @@ -0,0 +1,48 @@ +local M = {} + +M.dap = { + plugin = true, + n = { + ["db"] = { + " DapToggleBreakpoint ", + "Add breakpoint at line" + }, + ["dus"] = { + function () + local widgets = require("dap.ui.widgets"); + local sidebar = widgets.sidebar(widgets.scopes); + sidebar.open(); + end, + "open debugging sidebar" + } + } +} +M.dap_go = { + plugin=true, + n = { + ["gdt"] = { + function() + require("dap-go").debug_test() + end, + "Debug go test" + }, + ["gdl"] = { + function() + require("dap-go").debug_last() + end, + "Debug last go test" + } + } +} +M.dapui = { + n = { + ["dui"] = { + function() + require("dapui").toggle() + end, + "Open debuging ui" + } + } +} + +return M diff --git a/nvim/.config/nvim/lua/custom/configs/null-ls-go.lua b/nvim/.config/nvim/lua/custom/configs/null-ls-go.lua new file mode 100644 index 0000000..39c9df1 --- /dev/null +++ b/nvim/.config/nvim/lua/custom/configs/null-ls-go.lua @@ -0,0 +1,29 @@ +local null_ls = require("null-ls") +local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) + +local opts = { + sources = { + null_ls.builtins.formatting.gofmt, + null_ls.builtins.formatting.goimports, + null_ls.builtins.diagnostics.mypy, + null_ls.builtins.diagnostics.ruff, + null_ls.builtins.formatting.eslint, + null_ls.builtins.formatting.prettier, + }, + on_attach = function(client, bufnr) + if client.supports_method("textDocument/formatting") then + vim.api.nvim_clear_autocmds({ + group = augroup, + buffer = bufnr, + }) + vim.api.nvim_create_autocmd("BufWritePre", { + group = augroup, + buffer = bufnr, + callback = function() + vim.lsp.buf.format({ bufnr = bufnr }) + end, + }) + end + end, +} +return opts diff --git a/nvim/.config/nvim/lua/custom/configs/null-ls-py.lua b/nvim/.config/nvim/lua/custom/configs/null-ls-py.lua new file mode 100644 index 0000000..693ada0 --- /dev/null +++ b/nvim/.config/nvim/lua/custom/configs/null-ls-py.lua @@ -0,0 +1,9 @@ + +local null_ls = require("null-ls") +local opts = { + sources = { + null_ls.builtins.diagnostics.mypy, + null_ls.builtins.diagnostics.ruff, + }, +} +return opts diff --git a/nvim/.config/nvim/lua/custom/configs/null-ls-ts.lua b/nvim/.config/nvim/lua/custom/configs/null-ls-ts.lua new file mode 100644 index 0000000..ee07773 --- /dev/null +++ b/nvim/.config/nvim/lua/custom/configs/null-ls-ts.lua @@ -0,0 +1,25 @@ +local null_ls = require("null-ls") +local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) + +local opts = { + sources = { + null_ls.builtins.formatting.eslint, + null_ls.builtins.formatting.prettier, + }, + on_attach = function(client, bufnr) + if client.supports_method("textDocument/formatting") then + vim.api.nvim_clear_autocmds({ + group = augroup, + buffer = bufnr, + }) + vim.api.nvim_create_autocmd("BufWritePre", { + group = augroup, + buffer = bufnr, + callback = function() + vim.lsp.buf.format({ bufnr = bufnr }) + end, + }) + end + end, +} +return opts diff --git a/nvim/.config/nvim/lua/custom/plugins.lua b/nvim/.config/nvim/lua/custom/plugins.lua new file mode 100644 index 0000000..2fb6b8e --- /dev/null +++ b/nvim/.config/nvim/lua/custom/plugins.lua @@ -0,0 +1,80 @@ +local plugins = { + { + "williamboman/mason.nvim", + opts = { + ensure_installed = { + "typescript-language-server", + "eslint-lsp", + "lua-language-server", + "html-lsp", + "pyright", + "mypy", + "ruff", + "gopls", + "goimports", + "debugpy", + } + } + }, + { + "neovim/nvim-lspconfig", + config=function () + require "plugins.configs.lspconfig" + require "custom.configs.lspconfig" + end, + },{ + "jose-elias-alvarez/null-ls.nvim", + ft = "go", + opts = function() + return require "custom.configs.null-ls-go" + end, + }, { + "mfussenegger/nvim-dap", + init = function() + require("core.utils").load_mappings("dap") + end + }, { + "leoluz/nvim-dap-go", + ft = "go", + dependencies = "mfussenegger/nvim-dap", + config = function (_, opts) + require("dap-go").setup(opts) + require("core.utils").load_mappings("dap_go") + require('dap.ext.vscode').load_launchjs(nil, {}) + end + },{ + "mfussenegger/nvim-dap-python", + ft = "python", + dependencies = "mfussenegger/nvim-dap", + config = function (_, opts) + local path = "~/.local/share/nvim/mason/packages/debugpy/venv/bin/python" + require("dap-python").setup(path) + end + }, + { + "NVChad/nvim-autopairs", + enabled = false + }, + { + "rcarriga/nvim-dap-ui", + init = function() + require("dapui").setup() + vim.fn.sign_define('DapBreakpoint', { text = '🐞' }) + vim.fn.sign_define('DapBreakpointRejected', { text = '🐞' }) + local dap, dapui = require("dap"), require("dapui") + 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 + end + } +} +return plugins