From fcec1cf7770fbc3acae15d8dfb6ea3e1d45e7cc6 Mon Sep 17 00:00:00 2001 From: Steins7 Date: Mon, 17 Jul 2023 21:43:29 +0200 Subject: [PATCH] Moved to lazy plugin manager --- lua/plugins.lua | 589 ++++++++++++++++++++++++------------------------ 1 file changed, 292 insertions(+), 297 deletions(-) diff --git a/lua/plugins.lua b/lua/plugins.lua index 12d3d76..841203e 100644 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -6,7 +6,8 @@ local has_words_before = function() end local feedkey = function(key, mode) - vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes(key, true, true, true), mode, true) + vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes(key, true, true, true), + mode, true) end -- LSP keybindings @@ -32,313 +33,307 @@ local lsp_on_attach = function(_, bufnr) -- Create a command `:Format` local to the LSP buffer vim.api.nvim_buf_create_user_command(bufnr, 'Format', - vim.lsp.buf.format or vim.lsp.buf.formatting, { desc = 'Format current buffer with LSP' }) + vim.lsp.buf.format or vim.lsp.buf.formatting, + { desc = 'Format current buffer with LSP' }) end --- plugins definition -local function manage_plugins() - - local plugins = { - ["https://github.com/faerryn/plogins.nvim.git"] = {}, - ["https://github.com/tpope/vim-sensible.git"] = {}, - ["https://github.com/kevinhwang91/rnvimr.git"] = { - packadd_hook = function() - vim.api.nvim_set_keymap('n', 'f', ":RnvimrToggle", {}) - vim.g.rnvimr_action = { - [''] = "NvimEdit tabedit", - [''] = "NvimEdit split", - [''] = "NvimEdit vsplit", - } - end - }, - ["https://github.com/ojroques/nvim-hardline.git"] = { - packadd_hook = function() - require('hardline').setup() - end - }, - ["https://github.com/EdenEast/nightfox.nvim.git"] = { - packadd_hook = function() - require('nightfox').setup({ - options = { - modules = { - gitgutter = true, - } - }, - palettes = { - nightfox = { - bg0 = '#121212', - bg1 = '#161616', - bg2 = '#222222', - bg3 = '#282828', - bg4 = '#404040', - sel0 = "#2a2a2a", - sel1 = "#525253", - } - }, - specs = { - nightfox = { - syntax = { - func = "red", - } - } - }, - }) - - vim.o.termguicolors = true - vim.cmd("colorscheme nightfox") - end - }, - - -- Auto-completion - ["https://github.com/hrsh7th/cmp-nvim-lsp.git"] = {}, - ["https://github.com/hrsh7th/cmp-buffer.git"] = {}, - ["https://github.com/hrsh7th/cmp-path.git"] = {}, - ["https://github.com/hrsh7th/cmp-cmdline.git"] = {}, - ["https://github.com/hrsh7th/cmp-nvim-lsp-signature-help.git"] = {}, - ["https://github.com/hrsh7th/cmp-vsnip.git"] = {}, - ["https://github.com/hrsh7th/vim-vsnip.git"] = {}, - ["https://github.com/hrsh7th/nvim-cmp.git"] = { - packadd_after = { - ["https://github.com/hrsh7th/cmp-nvim-lsp.git"] = true, - ["https://github.com/hrsh7th/cmp-buffer.git"] = true, - ["https://github.com/hrsh7th/cmp-path.git"] = true, - ["https://github.com/hrsh7th/cmp-cmdline.git"] = true, - ["https://github.com/hrsh7th/cmp-nvim-lsp-signature-help.git"] = true, - ["https://github.com/hrsh7th/cmp-vsnip.git"] = true, - ["https://github.com/hrsh7th/vim-vsnip.git"] = true, - }, - packadd_hook = function() - vim.o.completeopt = "menu,menuone,noselect" - local cmp = require("cmp") - - cmp.setup({ - snippet = { - -- snippet engine is required - expand = function(args) - vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users. - 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 }), - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif vim.fn["vsnip#available"](1) == 1 then - feedkey("(vsnip-expand-or-jump)", "") - elseif has_words_before() then - cmp.complete() - else - -- The fallback function sends a already mapped key. - -- In this case, it's probably ``. - fallback() - end - end, { "i", "s" }), - [""] = cmp.mapping(function() - if cmp.visible() then - cmp.select_prev_item() - elseif vim.fn["vsnip#jumpable"](-1) == 1 then - feedkey("(vsnip-jump-prev)", "") - end - end, { "i", "s" }), - - }), - sources = cmp.config.sources({ - { name = 'nvim_lsp' }, - { name = 'nvim_lsp_signature_help' }, - { name = 'vsnip' }, - }, { - { name = 'buffer' }, - }) - }) - -- Set configuration for specific filetype. - cmp.setup.filetype('gitcommit', { - sources = cmp.config.sources({ - { name = 'cmp_git' }, - }, { - { name = 'buffer' }, - }) - }) - - -- Use buffer source for `/` and `?` - cmp.setup.cmdline({ '/', '?' }, { - mapping = cmp.mapping.preset.cmdline(), - sources = { - { name = 'buffer' } - } - }) - - -- Use cmdline & path source for ':' - cmp.setup.cmdline(':', { - mapping = cmp.mapping.preset.cmdline(), - sources = cmp.config.sources({ - { name = 'path' } - }, { - { name = 'cmdline' } - }) - }) - end - }, - - -- LSP configuration - ["https://github.com/neovim/nvim-lspconfig.git"] = { - packadd_after = { - ["https://github.com/hrsh7th/nvim-cmp.git"] = true, - }, - packadd_hook = function() - local capabilities = require("cmp_nvim_lsp").default_capabilities() - local lsp_config = require("lspconfig") - local servers = { "clangd", "rust_analyzer", "pylsp" } - - for _, lsp in ipairs(servers) do - lsp_config[lsp].setup { - capabilities = capabilities, - on_attach = lsp_on_attach, - } - end - end, +plugins = { + { "tpope/vim-sensible", lazy = false }, + { + "EdenEast/nightfox.nvim", + lazy = false, + dependencies = { + { "airblade/vim-gitgutter" }, }, - - -- LSP alternative - ["https://github.com/nvim-lua/plenary.nvim.git"] = {}, - ["https://github.com/ludovicchabant/vim-gutentags.git"] = {}, - ["https://github.com/nvim-telescope/telescope.nvim.git"] = { - packadd_after = { - ["https://github.com/nvim-lua/plenary.nvim.git"] = true, - ["https://github.com/ludovicchabant/vim-gutentags.git"] = true, - }, - packadd_hook = function() - require("telescope").setup{ - defaults = { - -- Default configuration for telescope goes here: - -- config_key = value, - mappings = { - i = { - -- map actions.which_key to (default: ) - -- actions.which_key shows the mappings for your picker, - -- e.g. git_{create, delete, ...}_branch for the git_branches picker - [""] = "which_key" - } - } - }, - pickers = { - -- Default configuration for builtin pickers goes here: - -- picker_name = { - -- picker_config_key = value, - -- ... - -- } - -- Now the picker_config_key will be applied every time you call this - -- builtin picker - }, - extensions = { - -- Your extension configuration goes here: - -- extension_name = { - -- extension_config_key = value, - -- } - -- please take a look at the readme of the extension you want to configure + init = function() + require('nightfox').setup({ + options = { + modules = { gitgutter = true } + }, + palettes = { + nightfox = { + bg0 = '#121212', + bg1 = '#161616', + bg2 = '#222222', + bg3 = '#282828', + bg4 = '#404040', + sel0 = "#2a2a2a", + sel1 = "#525253", } + }, + specs = { + nightfox = { + syntax = { func = "red" } + } + }, + }) + + vim.o.termguicolors = true + vim.cmd("colorscheme nightfox") + end, + }, + { + "ojroques/nvim-hardline", + lazy = false, + init = function() + require('hardline').setup() + end, + }, + { + "kevinhwang91/rnvimr", + lazy = false, + init = function() + vim.api.nvim_set_keymap('n', 'f', ":RnvimrToggle", {}) + vim.g.rnvimr_action = { + [''] = "NvimEdit tabedit", + [''] = "NvimEdit split", + [''] = "NvimEdit vsplit", + } + end, + }, + { + "hrsh7th/nvim-cmp", + lazy = false, + dependencies = { + { "hrsh7th/cmp-nvim-lsp" }, + { "hrsh7th/cmp-buffer" }, + { "hrsh7th/cmp-path" }, + { "hrsh7th/cmp-cmdline" }, + { "hrsh7th/cmp-nvim-lsp-signature-help" }, + { "hrsh7th/cmp-vsnip" }, + { "hrsh7th/vim-vsnip" }, + }, + init = function() + vim.o.completeopt = "menu,menuone,noselect" + local cmp = require("cmp") + + cmp.setup({ + snippet = { + -- snippet engine is required + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users. + 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 }), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif vim.fn["vsnip#available"](1) == 1 then + feedkey("(vsnip-expand-or-jump)", "") + elseif has_words_before() then + cmp.complete() + else + -- The fallback function sends a already mapped key. + -- In this case, it's probably ``. + fallback() + end + end, { "i", "s" }), + [""] = cmp.mapping(function() + if cmp.visible() then + cmp.select_prev_item() + elseif vim.fn["vsnip#jumpable"](-1) == 1 then + feedkey("(vsnip-jump-prev)", "") + end + end, { "i", "s" }), + + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'nvim_lsp_signature_help' }, + { name = 'vsnip' }, + }, { + { name = 'buffer' }, + }) + }) + -- Set configuration for specific filetype. + cmp.setup.filetype('gitcommit', { + sources = cmp.config.sources({ + { name = 'cmp_git' }, + }, { + { name = 'buffer' }, + }) + }) + + -- Use buffer source for `/` and `?` + cmp.setup.cmdline({ '/', '?' }, { + mapping = cmp.mapping.preset.cmdline(), + sources = { + { name = 'buffer' } } + }) - vim.api.nvim_set_keymap('n', 'tf', ":Telescope find_files", {}) - vim.api.nvim_set_keymap('n', 'tg', ":Telescope live_grep", {}) - vim.api.nvim_set_keymap('n', 'ts', ":Telescope grep_string", {}) - vim.api.nvim_set_keymap('n', 'tt', ":Telescope current_buffer_tags", {}) - vim.api.nvim_set_keymap('n', 'tc', ":Telescope git_commits", {}) - vim.api.nvim_set_keymap('n', 'ta', ":Telescope git_status", {}) - vim.api.nvim_set_keymap('n', 'td', ":Telescope lsp_definitions", {}) - vim.api.nvim_set_keymap('n', 'tr', ":Telescope lsp_references", {}) - vim.api.nvim_set_keymap('n', 'tc', ":Telescope lsp_outgoing_calls", {}) - vim.api.nvim_set_keymap('n', 'te', ":Telescope diagnostics", {}) + -- Use cmdline & path source for ':' + cmp.setup.cmdline(':', { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = 'path' } + }, { + { name = 'cmdline' } + }) + }) + end, + }, + { + "neovim/nvim-lspconfig", + lazy = false, + dependencies = "hrsh7th/nvim-cmp", + init = function() + local capabilities = require("cmp_nvim_lsp").default_capabilities() + local lsp_config = require("lspconfig") + local servers = { "clangd", "rust_analyzer", "pylsp" } + + for _, lsp in ipairs(servers) do + lsp_config[lsp].setup { + capabilities = capabilities, + on_attach = lsp_on_attach, + } end + end, + }, + { + "nvim-telescope/telescope.nvim", + tag = "0.1.2", + lazy = false, + dependencies = { + { "nvim-lua/plenary.nvim" }, + { "ludovicchabant/vim-gutentags" }, + { "nvim-telescope/telescope-fzf-native.nvim", build = "make" }, }, + init = function() + require("telescope").setup{ + defaults = { + -- Default configuration for telescope goes here: + -- config_key = value, + mappings = { + i = { + -- map actions.which_key to (default: ) + -- actions.which_key shows the mappings for your picker, + -- e.g. git_{create, delete, ...}_branch for the git_branches picker + [""] = "which_key" + } + } + }, + pickers = { + -- Default configuration for builtin pickers goes here: + -- picker_name = { + -- picker_config_key = value, + -- ... + -- } + -- Now the picker_config_key will be applied every time you call this + -- builtin picker + }, + extensions = { + fzf = { + fuzzy = true, -- false will only do exact matching + override_generic_sorter = true, -- override the generic sorter + override_file_sorter = true, -- override the file sorter + case_mode = "smart_case", -- or "ignore_case" or "respect_case" + -- the default case_mode is "smart_case" + }, + } + } + require("telescope").load_extension("fzf") - -- Git integration - ["https://github.com/tpope/vim-fugitive.git"] = {}, - ["https://github.com/airblade/vim-gitgutter.git"] = { - packadd_after = { ["https://github.com/EdenEast/nightfox.nvim.git"] = true }, - packadd_hook = function() - -- put sign in number column to avoid screen-shifting - vim.cmd('set signcolumn=number') - end - }, - ["https://github.com/sindrets/diffview.nvim.git"] = { - packadd_after = { ["https://github.com/nvim-lua/plenary.nvim.git"] = true }, - packadd_hook = function() - vim.api.nvim_set_keymap('n', 'g', ":DiffviewOpen", {}) - end - }, + vim.api.nvim_set_keymap('n', 'tf', + ":Telescope find_files", {}) + vim.api.nvim_set_keymap('n', 'tg', + ":Telescope live_grep", {}) + vim.api.nvim_set_keymap('n', 'ts', + ":Telescope grep_string", {}) + vim.api.nvim_set_keymap('n', 'tt', + ":Telescope current_buffer_tags", {}) + vim.api.nvim_set_keymap('n', 'tc', + ":Telescope git_commits", {}) + vim.api.nvim_set_keymap('n', 'ta', + ":Telescope git_status", {}) + vim.api.nvim_set_keymap('n', 'td', + ":Telescope lsp_definitions", {}) + vim.api.nvim_set_keymap('n', 'tr', + ":Telescope lsp_references", {}) + vim.api.nvim_set_keymap('n', 'te', + ":Telescope diagnostics", {}) + end, + }, + { + "airblade/vim-gitgutter", + lazy = false, + dependencies = { + { "tpope/vim-fugitive" }, + }, + init = function() + -- put sign in number column to avoid screen-shifting + vim.cmd('set signcolumn=number') + end, + }, + { + "sindrets/diffview.nvim", + lazy = false, + dependencies = { + { "nvim-lua/plenary.nvim" }, + }, + init = function() + vim.api.nvim_set_keymap('n', 'g', ":DiffviewOpen", {}) + end, + }, + { + "nvim-treesitter/nvim-treesitter", + lazy = false, + init = function() + local conf = require("nvim-treesitter.configs") - -- Syntax highlight - ["https://github.com/nvim-treesitter/nvim-treesitter.git"] = { - packadd_hook = function() - local conf = require("nvim-treesitter.configs") + conf.setup { + -- only enable tested parsers + ensure_installed = { "c", "cpp", "lua", "rust" }, + -- Install parsers synchronously (only applied to `ensure_installed`) + sync_install = false, + -- Automatically install missing parsers when entering buffer + auto_install = false, + -- List of parsers to ignore installing (for "all") + ignore_install = {}, + highlight = { + -- `false` will disable the whole extension + enable = true, + -- list of language that will be disabled + disable = {}, + -- disable slow treesitter highlight for large files + disable = function(lang, buf) + local max_filesize = 200 * 1024 -- 200 KB + local ok, stats = + pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) + if ok and stats and stats.size > max_filesize then + return true + end + end, + -- run `:h syntax` and tree-sitter at the same time. + additional_vim_regex_highlighting = false, + } + } + end, + }, + { "ARM9/arm-syntax-vim", lazy = false }, +} - conf.setup { - -- only enable tested parsers - ensure_installed = { "c", "cpp", "lua", "rust" }, - -- Install parsers synchronously (only applied to `ensure_installed`) - sync_install = false, - -- Automatically install missing parsers when entering buffer - auto_install = false, - -- List of parsers to ignore installing (for "all") - ignore_install = {}, - highlight = { - -- `false` will disable the whole extension - enable = true, - -- list of language that will be disabled - disable = {}, - -- disable slow treesitter highlight for large files - disable = function(lang, buf) - local max_filesize = 200 * 1024 -- 200 KB - local ok, stats = - pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) - if ok and stats and stats.size > max_filesize then - return true - end - end, - -- run `:h syntax` and tree-sitter at the same time. - additional_vim_regex_highlighting = false, - - } - } - end - }, - -- to activate it, use ':set filetype=arm " arm = armv7' - ["https://github.com/ARM9/arm-syntax-vim.git"] = {}, - } - - local manager = require("plogins").manage(plugins) - - vim.api.nvim_create_user_command("PloginsUpgrade", - manager.upgrade, {}) - vim.api.nvim_create_user_command("PloginsAutoremove", - manager.autoremove, {}) -end - -local plogins_source = "https://github.com/faerryn/plogins.nvim.git" -local plogins_name = plogins_source:gsub("/", "%%") -local plogins_dir = ("%s/site/pack/plogins/opt/%s"):format((vim.fn.stdpath("data")), -plogins_name) - -if not vim.loop.fs_stat(plogins_dir) then - vim.loop.spawn("git", - { args = { "clone", "--depth", "1", plogins_source, plogins_dir } }, - function(code, signal) - vim.defer_fn(function() - vim.cmd(("packadd %s"):format(vim.fn.fnameescape(plogins_name))) - manage_plugins() - end, 0) - end) -else - vim.cmd(("packadd %s"):format(vim.fn.fnameescape(plogins_name))) - manage_plugins() +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not vim.loop.fs_stat(lazypath) then + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", -- latest stable release + lazypath, + }) end +vim.opt.rtp:prepend(lazypath) +require("lazy").setup(plugins, opts)