Something went wrong. Try again.
My personal nvim config files
Something went wrong. Try again.
5.1 kB · 260 lines
Lua
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261local lsp_list = { -- Python "ruff", "zuban", "djlsp", "basedpyright",
-- Javascript / Typescript "eslint", "ts_ls",
-- JSON "jsonls",
-- Lua "lua_ls",
-- Zig "zls",
-- Rust "rust_analyzer",
-- Go "gopls",
-- SASS "somesass_ls",
-- HTML "html", "emmet_language_server",
-- Bash "bashls",
-- TOML "taplo",
-- YAML "yamlls",
-- Markdown "marksman",
-- Docker "dockerls", "docker_compose_language_service",
-- Terraform "terraformls",
-- Helm "helm_ls",}
local tools_list = { -- C# "roslyn-nightly", "netcoredbg",}
local ts_parser_list = { "bash", "c", "c_sharp", "cpp", "css", "dockerfile", "go", "gomod", "gosum", "gotmpl", "gowork", "helm", "html", "htmldjango", "http", "javascript", "json", "lua", "markdown", "markdown_inline", "python", "razor", "regex", "rust", "terraform", "toml", "typescript", "vim", "vimdoc", "yaml", "zig",}
return { -- Language server installer { "mason-org/mason.nvim", opts = { registries = { "github:mason-org/mason-registry", "github:Crashdummyy/mason-registry", }, ui = { border = "rounded", icons = { package_installed = "✓", package_pending = "➜", package_uninstalled = "✗" } } }, },
-- Language server configuration { "mason-org/mason-lspconfig.nvim", dependencies = { "mason-org/mason.nvim", "neovim/nvim-lspconfig", }, opts = { ensure_installed = lsp_list, automatic_enable = lsp_list, auto_install = true, }, },
-- Language tools installer { "WhoIsSethDaniel/mason-tool-installer.nvim", dependencies = { "mason-org/mason.nvim", "neovim/nvim-lspconfig", }, config = function() require("mason-tool-installer").setup { ensure_installed = tools_list, } end, },
-- Code highlight { "romus204/tree-sitter-manager.nvim", dependencies = {}, -- tree-sitter CLI must be installed system-wide config = function() require("tree-sitter-manager").setup({ ensure_installed = ts_parser_list, border = "rounded", }) end },
-- Code snippets { "L3MON4D3/LuaSnip", dependencies = { "saadparwaiz1/cmp_luasnip", "rafamadriz/friendly-snippets", }, }, { "hrsh7th/nvim-cmp", dependencies = { "hrsh7th/cmp-buffer", "hrsh7th/cmp-cmdline", "hrsh7th/cmp-nvim-lsp", "hrsh7th/cmp-path", }, config = function() local cmp, luasnip = require("cmp"), require("luasnip") 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({ ["<C-b>"] = cmp.mapping.scroll_docs(-4), ["<C-f>"] = cmp.mapping.scroll_docs(4), ["<C-Space>"] = cmp.mapping.complete(), ["<C-e>"] = cmp.mapping.abort(), ["<CR>"] = cmp.mapping(function(fallback) if cmp.visible() and luasnip.expandable() then luasnip.expand() elseif cmp.visible() and cmp.get_selected_entry() then cmp.confirm({ select = true, }) else fallback() end end), ["<Tab>"] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_next_item() elseif luasnip.locally_jumpable(1) then luasnip.jump(1) else fallback() end end, { "i", "s" }), ["<S-Tab>"] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_prev_item() elseif luasnip.locally_jumpable(-1) then luasnip.jump(-1) else fallback() end end, { "i", "s" }), }), sources = cmp.config.sources({ { name = "nvim_lsp" }, { name = "luasnip" }, { name = "render-markdown" } }, { { name = "buffer" }, }), })
cmp.setup.cmdline({ "/", "?" }, { mapping = cmp.mapping.preset.cmdline(), sources = { { name = "buffer" } } })
cmp.setup.cmdline(":", { mapping = cmp.mapping.preset.cmdline(), sources = cmp.config.sources({ { name = "path" } }, { { name = "cmdline" } }), matching = { disallow_symbol_nonprefix_matching = false } }) end, },
-- Python specific { "Vimjas/vim-python-pep8-indent", },
-- C# specific { "seblyng/roslyn.nvim", ft = { "cs", "razor" } },}