diff --git a/lazy-lock.json b/lazy-lock.json index 014abbf..852639b 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -1,14 +1,25 @@ { + "LuaSnip": { "branch": "master", "commit": "c9b9a22904c97d0eb69ccb9bab76037838326817" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" }, + "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, + "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, "github-theme": { "branch": "main", "commit": "c106c9472154d6b2c74b74565616b877ae8ed31d" }, "lazy.nvim": { "branch": "main", "commit": "d8f26efd456190241afd1b0f5235fe6fdba13d4a" }, "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "e942edf5c85b6a2ab74059ea566cac5b3e1514a4" }, "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, "neo-tree.nvim": { "branch": "v3.x", "commit": "e6645ecfcba3e064446a6def1c10d788c9873f51" }, + "none-ls-extras.nvim": { "branch": "main", "commit": "6557f20e631d2e9b2a9fd27a5c045d701a3a292c" }, + "none-ls.nvim": { "branch": "main", "commit": "3291afdff94e5083c7d6a4e9e661c3682c4b9b2a" }, "nui.nvim": { "branch": "main", "commit": "53e907ffe5eedebdca1cd503b00aa8692068ca46" }, + "nvim-cmp": { "branch": "main", "commit": "8c82d0bd31299dbff7f8e780f5e06d2283de9678" }, + "nvim-dap": { "branch": "master", "commit": "99807078c5089ed30e0547aa4b52c5867933f426" }, + "nvim-dap-ui": { "branch": "master", "commit": "727c032a8f63899baccb42a1c26f27687e62fc5e" }, "nvim-lspconfig": { "branch": "master", "commit": "339ccc81e08793c3af9b83882a6ebd90c9cc0d3b" }, + "nvim-nio": { "branch": "master", "commit": "a428f309119086dc78dd4b19306d2d67be884eee" }, "nvim-treesitter": { "branch": "master", "commit": "fd59f984416f696d85119fd4d15ce0965b179944" }, "nvim-web-devicons": { "branch": "master", "commit": "aafa5c187a15701a7299a392b907ec15d9a7075f" }, + "omnisharp-extended-lsp.nvim": { "branch": "main", "commit": "ec1a2431f8872f650a85ed71c24f0715df2e49c2" }, "plenary.nvim": { "branch": "master", "commit": "3707cdb1e43f5cea73afb6037e6494e7ce847a66" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" } diff --git a/lua/plugins/completions.lua b/lua/plugins/completions.lua new file mode 100644 index 0000000..752cc63 --- /dev/null +++ b/lua/plugins/completions.lua @@ -0,0 +1,46 @@ +return { + { + "hrsh7th/cmp-nvim-lsp", + }, + { + "L3MON4D3/LuaSnip", + dependencies = { + "saadparwaiz1/cmp_luasnip", + "rafamadriz/friendly-snippets", + }, + }, + { + "hrsh7th/nvim-cmp", + config = function() + local cmp = require("cmp") + require("luasnip.loaders.from_vscode").lazy_load() + + cmp.setup({ + snippet = { + expand = function(args) + require("luasnip").lsp_expand(args.body) + end, + }, + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered(), + }, + mapping = cmp.mapping.preset.insert({ + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.abort(), + [""] = cmp.mapping.confirm({ select = true }), + }), + sources = cmp.config.sources( + { + { name = "nvim_lsp" }, + { name = "luasnip" }, + }, + { + { name = "buffer" }, + }), + }) + end + } +} diff --git a/lua/plugins/debugging.lua b/lua/plugins/debugging.lua new file mode 100644 index 0000000..2a64adc --- /dev/null +++ b/lua/plugins/debugging.lua @@ -0,0 +1,46 @@ +return { + "mfussenegger/nvim-dap", + dependencies = { + "rcarriga/nvim-dap-ui", + "nvim-neotest/nvim-nio", + }, + config = function() + local dap = require("dap") + local dapui = require("dapui") + + dapui.setup() + + dap.adapters.coreclr = { + type = 'executable', + command = 'C:/Users/sfree/AppData/Local/nvim-data/mason/packages/netcoredbg/netcoredbg/netcoredbg.exe', + args = {'--interpreter=vscode'} + } + + dap.configurations.cs = { + { + type = "coreclr", + name = "launch - netcoredbg", + request = "launch", + program = function() + return vim.fn.input('Path to dll', vim.fn.getcwd() .. '/bin/Debug/', 'file') + end, + }, + } + + 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 + + vim.keymap.set("n", "dt", dap.toggle_breakpoint, {}) + vim.keymap.set("n", "dc", dap.continue, {}) + end, +} diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index 19b1896..abc9b9d 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -7,25 +7,75 @@ return { }, { "williamboman/mason-lspconfig.nvim", - config = function() - require("mason-lspconfig").setup({ - ensure_installed = { "lua_ls", "ts_ls" } - }) - end + lazy = false, + opts = { + auto_install = true, + } }, { "neovim/nvim-lspconfig", + dependencies = { 'hoffs/omnisharp-extended-lsp.nvim' }, + lazy = false, config = function() local lspconfig = require("lspconfig") - lspconfig.lua_ls.setup({}) - lspconfig.ts_ls.setup({}) + local capabilities = require("cmp_nvim_lsp").default_capabilities() - vim.keymap.set('n', 'K', vim.lsp.buf.hover, { desc = "Display symbol info" }) - vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, { desc = "Go to declaration" }) - vim.keymap.set('n', 'gd', vim.lsp.buf.definition, { desc = "Go to definition" }) - vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, { desc = "Go to implementation" }) - vim.keymap.set('n', '', vim.lsp.buf.signature_help, { desc = "Get signature help" }) - vim.keymap.set({ 'n', 'v' }, 'ca', vim.lsp.buf.code_action, { desc = "Get code actions" }) + lspconfig.omnisharp.setup({ + handlers = { + ["textDocument/definition"] = require("omnisharp_extended").handler, + }, + cmd = { "dotnet", "C:/Users/sfree/AppData/Local/nvim-data/omnisharp/OmniSharp.dll" }, + capabilities = capabilities, + settings = { + FormattingOptions = { + EnableEditorConfigSupport = true, + OrganizeImports = true, + }, + Sdk = { + IncludePrereleases = true, + }, + }, + }) + + lspconfig.lua_ls.setup({ + capabilities = capabilities, + }) + + lspconfig.ts_ls.setup({ + capabilities = capabilities, + }) + + lspconfig.html.setup({ + capabilities = capabilities, + }) + + lspconfig.cssls.setup({ + capabilities = capabilities, + }) + + lspconfig.cssmodules_ls.setup({ + capabilities = capabilities, + }) + + vim.api.nvim_create_autocmd('LspAttach', { + group = vim.api.nvim_create_augroup('UserLspConfig', {}), + callback = function(ev) + local client = vim.lsp.get_client_by_id(ev.data.client_id) + local omnisharp = require('omnisharp_extended'); + + if client.name == "omnisharp" then + vim.keymap.set('n', 'gd', omnisharp.lsp_definition, { desc = "Go to definition", buffer = ev.buf }) + vim.keymap.set('n', 'gi', omnisharp.lsp_implementation, { desc = "Go to implementation", buffer = ev.buf }) + vim.keymap.set('n', 'D', omnisharp.lsp_type_definition, { desc = "Go to type definition", buffer = ev.buf }) + else + vim.keymap.set('n', 'gd', vim.lsp.buf.definition, { desc = "Go to definition", buffer = ev.buf }) + vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, { desc = "Go to declaration", buffer = ev.buf }) + vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, { desc = "Go to implementation", buffer = ev.buf }) + end + + vim.keymap.set('n', 'K', vim.lsp.buf.hover, { desc = "Display symbol info", buffer = ev.buf }) + end + }) end - }, + } } diff --git a/lua/plugins/none-ls.lua b/lua/plugins/none-ls.lua new file mode 100644 index 0000000..1e853c0 --- /dev/null +++ b/lua/plugins/none-ls.lua @@ -0,0 +1,23 @@ +return { + "nvimtools/none-ls.nvim", + dependencies = { + "nvimtools/none-ls-extras.nvim", + }, + config = function() + local null_ls = require("null-ls") + + null_ls.setup({ + sources = { + null_ls.builtins.formatting.stylua, + null_ls.builtins.formatting.prettier, + null_ls.builtins.formatting.black, + null_ls.builtins.formatting.isort, + require("none-ls.diagnostics.eslint_d"), + null_ls.builtins.diagnostics.pylint, + null_ls.builtins.completion.spell, + } + }) + + vim.keymap.set("n", "gf", vim.lsp.buf.format, { desc = "Format" }) + end, +} diff --git a/lua/vim-options.lua b/lua/vim-options.lua index 695a269..5c04402 100644 --- a/lua/vim-options.lua +++ b/lua/vim-options.lua @@ -2,6 +2,10 @@ vim.cmd("set expandtab") vim.cmd("set tabstop=2") vim.cmd("set softtabstop=2") vim.cmd("set shiftwidth=2") +vim.cmd("set shellslash") +vim.cmd("set number") +vim.cmd("set shell=pwsh") +vim.cmd("let &shellcmdflag = '-NoLogo'") vim.g.mapleader = " " vim.g.maplocalleader = "\\"