diff options
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/bufferline.lua | 20 | ||||
| -rw-r--r-- | plugins/catppuccin.lua | 28 | ||||
| -rw-r--r-- | plugins/cmp.lua | 38 | ||||
| -rw-r--r-- | plugins/default.nix | 177 | ||||
| -rw-r--r-- | plugins/dressing.lua | 11 | ||||
| -rw-r--r-- | plugins/lspconfig.lua | 49 | ||||
| -rw-r--r-- | plugins/lualine.lua | 8 | ||||
| -rw-r--r-- | plugins/neo-tree.lua | 7 | ||||
| -rw-r--r-- | plugins/noice.lua | 30 | ||||
| -rw-r--r-- | plugins/null-ls.lua | 50 |
10 files changed, 418 insertions, 0 deletions
diff --git a/plugins/bufferline.lua b/plugins/bufferline.lua new file mode 100644 index 0000000..5ec89e5 --- /dev/null +++ b/plugins/bufferline.lua @@ -0,0 +1,20 @@ +return function() + require("bufferline").setup({ + options = { + always_show_bufferline = false, + highlights = require("catppuccin.groups.integrations.bufferline").get(), + diagnostics = "nvim_lsp", + mode = "buffers", + numbers = "ordinal", + separator_style = "slant", + offsets = { + { + filetype = "neo-tree", + text = "neo-tree", + highlight = "Directory", + text_align = "left", + }, + }, + }, + }) +end diff --git a/plugins/catppuccin.lua b/plugins/catppuccin.lua new file mode 100644 index 0000000..2679b48 --- /dev/null +++ b/plugins/catppuccin.lua @@ -0,0 +1,28 @@ +return function() + require("catppuccin").setup({ + compile_path = compile_path, + flavour = "mocha", -- mocha, macchiato, frappe, latte + integrations = { + cmp = true, + flash = true, + gitsigns = true, + indent_blankline = { + enabled = true, + }, + lsp_trouble = true, + native_lsp = { + enabled = true, + }, + neotree = true, + notify = true, + treesitter_context = true, + treesitter = true, + telescope = true, + which_key = true, + }, + + no_italic = true, + }) + + vim.cmd.colorscheme("catppuccin") +end diff --git a/plugins/cmp.lua b/plugins/cmp.lua new file mode 100644 index 0000000..a61dc4a --- /dev/null +++ b/plugins/cmp.lua @@ -0,0 +1,38 @@ +return function() + local cmp = require("cmp") + local luasnip = require("luasnip") + local mapping = cmp.mapping + + return { + completion = { + completeopt = "menu,menuone,noinsert", + }, + + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + + mapping = mapping.preset.insert({ + ["<C-n>"] = mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), + ["<C-p>"] = mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), + ["<C-b>"] = mapping.scroll_docs(-4), + ["<C-f>"] = mapping.scroll_docs(4), + ["<C-Space>"] = mapping.complete(), + ["<C-e>"] = mapping.abort(), + ["<CR>"] = mapping.confirm({ select = true }), + ["<S-CR>"] = mapping.confirm({ + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }), + }), + + sources = cmp.config.sources({ + { name = "nvim_lsp" }, + { name = "luasnip" }, + { name = "async_path" }, + { name = "buffer" }, + }), + } +end diff --git a/plugins/default.nix b/plugins/default.nix new file mode 100644 index 0000000..6f36f04 --- /dev/null +++ b/plugins/default.nix @@ -0,0 +1,177 @@ +{pkgs, ...}: let + inherit (pkgs) vimPlugins; +in rec { + config = { + src = ../config; + lazy = false; + priority = 1000; + }; + + catppuccin-nvim = { + package = vimPlugins.catppuccin-nvim; + + config = ./catppuccin.lua; + }; + + fidget-nvim = { + package = vimPlugins.fidget-nvim.overrideAttrs (_: { + src = pkgs.fetchFromGitHub { + owner = "j-hui"; + repo = "fidget.nvim"; + rev = "41f327b53c7977d47aee56f05e0bdbb4b994c5eb"; + hash = "sha256-v9qARsW8Gozit4Z3+igiemjI467QgRhwM+crqwO9r6U="; + }; + }); + }; + + flash-nvim = { + package = vimPlugins.flash-nvim; + event = "VeryLazy"; + }; + + gitsigns-nvim = { + package = vimPlugins.gitsigns-nvim; + event = ["BufReadPre" "BufNewFile"]; + }; + + indent-blankline-nvim = { + package = vimPlugins.indent-blankline-nvim; + + event = ["BufReadPost" "BufNewFile"]; + + config = { + filetype_exclude = [ + "help" + "neo-tree" + "Trouble" + "lazy" + "mason" + "notify" + "toggleterm" + ]; + show_trailing_blankline_indent = false; + show_current_context = false; + }; + }; + + lualine-nvim = { + package = vimPlugins.lualine-nvim; + + event = "VeryLazy"; + + dependencies = { + nvim-web-devicons.package = vimPlugins.nvim-web-devicons; + }; + + config = ./lualine.lua; + }; + + neo-tree-nvim = { + package = vimPlugins.neo-tree-nvim; + dependencies = { + plenary-nvim.package = vimPlugins.plenary-nvim; + inherit (lualine-nvim.dependencies) nvim-web-devicons; + inherit nui-nvim; + }; + + config = ./neo-tree.lua; + }; + + # TODO: configure mini.pairs, mini.indentscope, & mini.comment + mini-nvim.package = vimPlugins.mini-nvim; + + nvim-cmp = { + package = vimPlugins.nvim-cmp; + dependencies = { + cmp-nvim-lsp.package = vimPlugins.cmp-nvim-lsp; + cmp-buffer.package = vimPlugins.cmp-buffer; + cmp_luasnip.package = vimPlugins.cmp_luasnip; + cmp-async-path.package = vimPlugins.cmp-async-path; + luasnip.package = vimPlugins.luasnip; + }; + + event = "InsertEnter"; + config = ./cmp.lua; + }; + + dressing-nvim = { + package = vimPlugins.dressing-nvim; + lazy = true; + init = ./dressing.lua; + }; + + noice-nvim = { + package = vimPlugins.noice-nvim; + event = "VeryLazy"; + + config = ./noice.lua; + }; + + nui-nvim = { + package = vimPlugins.nui-nvim; + lazy = true; + }; + + nvim-lspconfig = { + package = vimPlugins.nvim-lspconfig; + + event = ["BufReadPre" "BufNewFile"]; + config = ./lspconfig.lua; + }; + + nvim-treesitter = { + package = vimPlugins.nvim-treesitter.withAllGrammars; + dependencies = { + nvim-ts-context-commentstring.package = vimPlugins.nvim-ts-context-commentstring; + }; + + event = ["BufReadPost" "BufNewFile"]; + config = { + auto_install = false; + highlight.enable = true; + indent.enable = true; + context_commentstring = { + enable = true; + enable_autocmd = false; + }; + }; + }; + + null-ls = { + package = vimPlugins.null-ls-nvim; + dependencies = { + inherit (neo-tree-nvim.dependencies) plenary-nvim; + }; + + config = ./null-ls.lua; + }; + + bufferline-nvim = { + package = vimPlugins.bufferline-nvim; + dependencies = { + inherit (lualine-nvim.dependencies) nvim-web-devicons; + inherit catppuccin-nvim; + }; + + config = ./bufferline.lua; + }; + + telescope-nvim.package = vimPlugins.telescope-nvim; + + trouble-nvim = { + package = vimPlugins.trouble-nvim; + dependencies = { + inherit (lualine-nvim.dependencies) nvim-web-devicons; + }; + }; + + which-key-nvim = { + package = vimPlugins.which-key-nvim; + event = "VeryLazy"; + config = { + plugins = { + spelling = true; + }; + }; + }; +} diff --git a/plugins/dressing.lua b/plugins/dressing.lua new file mode 100644 index 0000000..1f0e70a --- /dev/null +++ b/plugins/dressing.lua @@ -0,0 +1,11 @@ +return function() + vim.ui.select = function(...) + require("lazy").load({ plugins = { "dressing-nvim" } }) + return vim.ui.select(...) + end + + vim.ui.input = function(...) + require("lazy").load({ plugins = { "dressing-nvim" } }) + return vim.ui.input(...) + end +end diff --git a/plugins/lspconfig.lua b/plugins/lspconfig.lua new file mode 100644 index 0000000..a17d5ab --- /dev/null +++ b/plugins/lspconfig.lua @@ -0,0 +1,49 @@ +return function() + local sources = { + ["bashls"] = "bash-language-server", + ["clangd"] = "clangd", + ["eslint"] = "eslint", + ["nil_ls"] = "nil", + ["pyright"] = "pyright-langserver", + ["rust_analyzer"] = "rust-analyzer", + ["tsserver"] = "typescript-language-server", + } + + local capabilities = vim.tbl_deep_extend( + "force", + require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()), + { workspace = { didChangeWatchedFiles = { dynamicRegistration = true } } } + ) + + local all_config = { + capabilities = capabilities, + } + + local servers = {} + for server, binary in pairs(sources) do + if vim.fn.executable(binary) == 1 then + servers[server] = all_config + end + end + + servers["lua_ls"] = { + capabilities = capabilities, + settings = { + Lua = { + runtime = { + version = "LuaJIT", + }, + diagnostics = { + globals = { "vim" }, + }, + workspace = { + library = vim.api.nvim_get_runtime_file("", true), + }, + }, + }, + } + + for server, settings in pairs(servers) do + require("lspconfig")[server].setup(settings) + end +end diff --git a/plugins/lualine.lua b/plugins/lualine.lua new file mode 100644 index 0000000..dbf8602 --- /dev/null +++ b/plugins/lualine.lua @@ -0,0 +1,8 @@ +return function() + require("lualine").setup({ + options = { + theme = "catppuccin", + }, + extensions = { "neo-tree", "trouble" }, + }) +end diff --git a/plugins/neo-tree.lua b/plugins/neo-tree.lua new file mode 100644 index 0000000..8d690d9 --- /dev/null +++ b/plugins/neo-tree.lua @@ -0,0 +1,7 @@ +return function() + require("neo-tree").setup({ + filetype_exclude = { "help", "neo-tree", "Trouble", "lazy", "mason", "notify", "toggleterm" }, + show_current_context = false, + show_trailing_blankline_indent = false, + }) +end diff --git a/plugins/noice.lua b/plugins/noice.lua new file mode 100644 index 0000000..ac8879e --- /dev/null +++ b/plugins/noice.lua @@ -0,0 +1,30 @@ +return function() + require("noice").setup({ + lsp = { + override = { + ["vim.lsp.util.convert_input_to_markdown_lines"] = true, + ["vim.lsp.util.stylize_markdown"] = true, + ["cmp.entry.get_documentation"] = true, + }, + }, + routes = { + { + filter = { + event = "msg_show", + any = { + { find = "%d+L, %d+B" }, + { find = "; after #%d+" }, + { find = "; before #%d+" }, + }, + }, + view = "mini", + }, + }, + presets = { + bottom_search = true, + command_palette = true, + long_message_to_split = true, + inc_rename = true, + }, + }) +end diff --git a/plugins/null-ls.lua b/plugins/null-ls.lua new file mode 100644 index 0000000..a2a71f1 --- /dev/null +++ b/plugins/null-ls.lua @@ -0,0 +1,50 @@ +return function() + local null_ls = require("null-ls") + local diagnostics = null_ls.builtins.diagnostics + local formatting = null_ls.builtins.formatting + + local lsp_formatting = function(bufnr) + vim.lsp.buf.format({ + filter = function(client) + return client.name == "null-ls" + end, + bufnr = bufnr, + }) + end + + local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) + + null_ls.setup({ + 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() + lsp_formatting(bufnr) + end, + }) + end + end, + sources = { + diagnostics.actionlint, + diagnostics.alex, + diagnostics.codespell, + diagnostics.deadnix, + diagnostics.pylint, + diagnostics.shellcheck, + diagnostics.statix, + formatting.alejandra, + formatting.beautysh, + formatting.codespell, + formatting.just, + formatting.nimpretty, + formatting.prettier, + formatting.rustfmt, + formatting.shellharden, + formatting.stylua, + formatting.yapf, + }, + }) +end |
