diff --git a/vim/.config/nvim/init.lua b/vim/.config/nvim/init.lua index fbddb79..edc41d4 100644 --- a/vim/.config/nvim/init.lua +++ b/vim/.config/nvim/init.lua @@ -2,131 +2,10 @@ -- License: WTFPL -- Description: Personal neovim configuration -local cmd, fn, opt, g = vim.cmd, vim.fn, vim.opt, vim.g - -require('impatient') -- Should be at the top -require('filetypes').config() - -cmd [[packadd packer.nvim]] -local packer = require('packer') -local use = packer.use - --- NB: Difference between config and setup (https://github.com/wbthomason/packer.nvim#specifying-plugins) --- --- `config` - Specifies code to run after this plugin is loaded. --- --- The setup key implies opt = true --- `setup` - Specifies code to run before this plugin is loaded. The code is ran even if --- the plugin is waiting for other conditions (ft, cond...) to be met. - -packer.startup(function() - -- Lua - use { 'wbthomason/packer.nvim', opt = true } - use 'lewis6991/impatient.nvim' - use 'nvim-lua/plenary.nvim' - use { 'shaunsingh/nord.nvim', - config = function() - require('plugins.nord').config() - end, - setup = function() - require('plugins.nord').setup() - end - } - use { - 'nvim-treesitter/nvim-treesitter', - run = ':TSUpdate', - event = { 'BufRead', 'BufNewFile' }, - config = function() - require('plugins/treesitter').config() - end, - requires = { - { - 'nvim-treesitter/nvim-treesitter-textobjects', - after = 'nvim-treesitter' - }, - { - 'nvim-treesitter/playground', - cmd = 'TSPlaygroundToggle', - } - } - } - use 'nvim-tree/nvim-tree.lua' - use 'numtostr/comment.nvim' - use 'ellisonleao/glow.nvim' - - use { 'nvim-telescope/telescope-fzf-native.nvim', run = 'make', cond = fn.executable "make" == 1 } - use { 'nvim-telescope/telescope.nvim', - module = 'telescope', - requires = { 'nvim-lua/plenary.nvim' }, - config = function() - require('plugins/telescope').config() - end, - setup = function() - require('plugins/telescope').setup() - end - } - - -- TODO: make sense of it - -- use "jose-elias-alvarez/null-ls.nvim" - - -- Vimscript - use 'junegunn/vim-easy-align' - use 'christoomey/vim-tmux-navigator' - use 'lewis6991/gitsigns.nvim' - - -- tpope - use 'tpope/vim-surround' - use 'tpope/vim-fugitive' - use 'tpope/vim-rails' - use 'tpope/vim-rhubarb' - use 'tpope/vim-repeat' - - -- tests - use 'vim-test/vim-test' - use 'benmills/vimux' - - -- TODO: find lua replacement / or learn :grep / cfdo - use 'dyng/ctrlsf.vim' - - use 'andrewradev/splitjoin.vim' - - use { - 'vonheikemen/lsp-zero.nvim', - requires = { - -- LSP Support - {'neovim/nvim-lspconfig'}, - {'williamboman/mason.nvim'}, - {'williamboman/mason-lspconfig.nvim'}, - - -- Autocompletion - {'hrsh7th/nvim-cmp'}, - {'hrsh7th/cmp-buffer'}, - {'hrsh7th/cmp-path'}, - {'saadparwaiz1/cmp_luasnip'}, - {'hrsh7th/cmp-nvim-lsp'}, - {'hrsh7th/cmp-nvim-lua'}, - - -- Snippets - {'L3MON4D3/LuaSnip'}, - {'rafamadriz/friendly-snippets'}, - } - } - - use { "dstein64/vim-startuptime", cmd = "StartupTime" } - - -- EXPERIMENTAL: trying out different plugins - use { 'phaazon/hop.nvim' } -end) - +-- require('impatient') -- Should be at the top +require('filetypes') require('builtins') -require('plugins.gitgutter') -require('plugins.lsp') -require('plugins.nvim-tree') -require('plugins.comment') -require('plugins.gitsigns') --- require('plugins.mason') --- require('plugins.null-ls') -require('plugins.hop') +require('plugins') require('util') require('settings') require('mappings') diff --git a/vim/.config/nvim/lua/filetypes.lua b/vim/.config/nvim/lua/filetypes.lua index 73d5488..a115170 100644 --- a/vim/.config/nvim/lua/filetypes.lua +++ b/vim/.config/nvim/lua/filetypes.lua @@ -1,22 +1,16 @@ -local M = {} - -function M.config() - vim.filetype.add({ - extension = { - yml = 'yaml', - docker = 'dockerfile', - }, - filename = { - ['.gitignore'] = 'conf', - Podfile = 'ruby', - Brewfile = 'ruby', - Vagrantfile = 'ruby', - }, - pattern = { - ['*.gradle'] = 'groovy', - ['*.env.*'] = 'env', - }, - }) -end - -return M +vim.filetype.add({ + extension = { + yml = 'yaml', + docker = 'dockerfile', + }, + filename = { + ['.gitignore'] = 'conf', + Podfile = 'ruby', + Brewfile = 'ruby', + Vagrantfile = 'ruby', + }, + pattern = { + ['*.gradle'] = 'groovy', + ['*.env.*'] = 'env', + }, +}) diff --git a/vim/.config/nvim/lua/mappings.lua b/vim/.config/nvim/lua/mappings.lua index 60257ff..530afe1 100644 --- a/vim/.config/nvim/lua/mappings.lua +++ b/vim/.config/nvim/lua/mappings.lua @@ -71,8 +71,8 @@ nmap('gb',':Git blame') nmap('a', ':A') -- test --- nmap('r', ':TestFile') --- nmap('R', ':TestSuite') +nmap('r', ':TestFile') +nmap('R', ':TestSuite') -- CtrlSF nmap('', 'CtrlSFPrompt') diff --git a/vim/.config/nvim/lua/plugins/cmp.lua b/vim/.config/nvim/lua/plugins/cmp.lua deleted file mode 100644 index de2feee..0000000 --- a/vim/.config/nvim/lua/plugins/cmp.lua +++ /dev/null @@ -1,63 +0,0 @@ -local cmp = require 'cmp' -local luasnip = require 'luasnip' - -local has_words_before = function() - local line, col = unpack(vim.api.nvim_win_get_cursor(0)) - return col ~= 0 and - vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub( - col, col):match("%s") == nil -end - -cmp.setup({ - snippet = { - expand = function(args) - require('luasnip').lsp_expand(args.body) -- For `luasnip` 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 }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - elseif has_words_before() then - cmp.complete() - else - fallback() - end - end, { "i", "s" }), - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, { "i", "s" }), - }), - sources = cmp.config.sources({ - { name = 'nvim_lsp' }, - { name = 'luasnip' }, -- For luasnip users. - }, { - { name = 'buffer' }, - }) -}) - --- Set up lspconfig. -local capabilities = require('cmp_nvim_lsp').default_capabilities() --- require('lspconfig')['solargraph'].setup({ capabilities = capabilities }) - --- require("luasnip.loaders.from_lua").lazy_load() - -require('luasnip').filetype_extend("ruby", {"rails"}) -require('luasnip.loaders.from_vscode').lazy_load() diff --git a/vim/.config/nvim/lua/plugins/gitgutter.lua b/vim/.config/nvim/lua/plugins/gitgutter.lua deleted file mode 100644 index 24fc452..0000000 --- a/vim/.config/nvim/lua/plugins/gitgutter.lua +++ /dev/null @@ -1,5 +0,0 @@ -vim.g.gitgutter_sign_added = '│' -vim.g.gitgutter_sign_modified = '│' -vim.g.gitgutter_sign_removed = '│' -vim.g.gitgutter_sign_modified_removed = '│' -vim.g.gitgutter_sign_removed_first_line = '│' diff --git a/vim/.config/nvim/lua/plugins/hop.lua b/vim/.config/nvim/lua/plugins/hop.lua deleted file mode 100644 index faab3cb..0000000 --- a/vim/.config/nvim/lua/plugins/hop.lua +++ /dev/null @@ -1,17 +0,0 @@ --- place this in one of your configuration file(s) -local hop = require('hop') -local directions = require('hop.hint').HintDirection -vim.keymap.set('', 'f', function() - hop.hint_char1({ direction = directions.AFTER_CURSOR, current_line_only = true }) -end, {remap=true}) -vim.keymap.set('', 'F', function() - hop.hint_char1({ direction = directions.BEFORE_CURSOR, current_line_only = true }) -end, {remap=true}) -vim.keymap.set('', 't', function() - hop.hint_char1({ direction = directions.AFTER_CURSOR, current_line_only = true, hint_offset = -1 }) -end, {remap=true}) -vim.keymap.set('', 'T', function() - hop.hint_char1({ direction = directions.BEFORE_CURSOR, current_line_only = true, hint_offset = 1 }) -end, {remap=true}) - -require'hop'.setup { keys = 'etovxqpdygfblzhckisuran' } diff --git a/vim/.config/nvim/lua/plugins/init.lua b/vim/.config/nvim/lua/plugins/init.lua new file mode 100644 index 0000000..8a4583c --- /dev/null +++ b/vim/.config/nvim/lua/plugins/init.lua @@ -0,0 +1,130 @@ +local cmd, fn, opt, g = vim.cmd, vim.fn, vim.opt, vim.g + +cmd [[packadd packer.nvim]] +local packer = require('packer') +local use = packer.use + +-- NB: Difference between config and setup (https://github.com/wbthomason/packer.nvim#specifying-plugins) +-- +-- `config` - Specifies code to run after this plugin is loaded. +-- +-- The setup key implies opt = true +-- `setup` - Specifies code to run before this plugin is loaded. The code is ran even if +-- the plugin is waiting for other conditions (ft, cond...) to be met. + +packer.startup(function() + use { 'wbthomason/packer.nvim', opt = true } + + use 'lewis6991/impatient.nvim' + use 'nvim-lua/plenary.nvim' + + use { + 'shaunsingh/nord.nvim', + config = function() + require('plugins.nord').config() + end, + setup = function() + require('plugins.nord').setup() + end + } + + use { + 'nvim-treesitter/nvim-treesitter', + run = ':TSUpdate', + event = { 'BufRead', 'BufNewFile' }, + config = function() + require('plugins/treesitter').config() + end, + requires = { + { + 'nvim-treesitter/nvim-treesitter-textobjects', + after = 'nvim-treesitter' + }, + { + 'nvim-treesitter/playground', + cmd = 'TSPlaygroundToggle', + } + } + } + + use { 'nvim-tree/nvim-tree.lua', + config = function() + require('plugins/nvim-tree').config() + end + } + + use 'numtostr/comment.nvim' + use 'ellisonleao/glow.nvim' + + use { 'nvim-telescope/telescope-fzf-native.nvim', run = 'make', cond = fn.executable "make" == 1 } + use { 'nvim-telescope/telescope.nvim', + module = 'telescope', + requires = { 'nvim-lua/plenary.nvim' }, + config = function() + require('plugins/telescope').config() + end, + setup = function() + require('plugins/telescope').setup() + end + } + + -- Vimscript + use 'junegunn/vim-easy-align' + use 'christoomey/vim-tmux-navigator' + use 'lewis6991/gitsigns.nvim' + + -- tpope + use 'tpope/vim-surround' + use 'tpope/vim-fugitive' + use 'tpope/vim-rails' + use 'tpope/vim-rhubarb' + use 'tpope/vim-repeat' + + -- tests + use 'vim-test/vim-test' + use 'benmills/vimux' + + -- TODO: find lua replacement / or learn :grep / cfdo + use 'dyng/ctrlsf.vim' + + use 'andrewradev/splitjoin.vim' + + use { + 'VonHeikemen/lsp-zero.nvim', + branch = 'v1.x', + requires = { + -- LSP Support + {'neovim/nvim-lspconfig'}, -- Required + { -- Optional + 'williamboman/mason.nvim', + run = function() + pcall(vim.cmd, 'MasonUpdate') + end, + }, + {'williamboman/mason-lspconfig.nvim'}, -- Optional + + -- Autocompletion + {'hrsh7th/nvim-cmp'}, -- Required + {'hrsh7th/cmp-nvim-lsp'}, -- Required + {'hrsh7th/cmp-buffer'}, -- Optional + {'hrsh7th/cmp-path'}, -- Optional + {'saadparwaiz1/cmp_luasnip'}, -- Optional + {'hrsh7th/cmp-nvim-lua'}, -- Optional + + -- Snippets + {'L3MON4D3/LuaSnip'}, -- Required + {'rafamadriz/friendly-snippets'}, -- Optional + } + } + + use { "dstein64/vim-startuptime", cmd = "StartupTime" } + + -- EXPERIMENTAL: trying out different plugins + use { 'skywind3000/asyncrun.vim' } + + use {'kevinhwang91/nvim-bqf', ft = 'qf'} -- better qf +end) + +require('plugins.lsp') +require('plugins.comment') +require('plugins.gitsigns') diff --git a/vim/.config/nvim/lua/plugins/lsp.lua b/vim/.config/nvim/lua/plugins/lsp.lua index 4bb8d25..57083e2 100644 --- a/vim/.config/nvim/lua/plugins/lsp.lua +++ b/vim/.config/nvim/lua/plugins/lsp.lua @@ -78,25 +78,35 @@ -local lsp = require('lsp-zero') +-- local lsp = require('lsp-zero') -- lsp.preset('recommended') -lsp.set_preferences({ - suggest_lsp_servers = true, - setup_servers_on_start = true, +-- lsp.set_preferences({ +-- suggest_lsp_servers = true, +-- setup_servers_on_start = true, +-- set_lsp_keymaps = true, +-- configure_diagnostics = true, +-- cmp_capabilities = true, +-- manage_nvim_cmp = true, +-- call_servers = 'local', +-- sign_icons = { +-- error = 'E', +-- warn = 'W', +-- hint = 'H', +-- info = 'I' +-- } +-- }) + +local lsp = require('lsp-zero').preset({ + name = 'minimal', set_lsp_keymaps = true, - configure_diagnostics = true, - cmp_capabilities = true, manage_nvim_cmp = true, - call_servers = 'local', - sign_icons = { - error = 'E', - warn = 'W', - hint = 'H', - info = 'I' - } + suggest_lsp_servers = false, }) +-- (Optional) Configure lua language server for neovim +-- lsp.nvim_workspace() + lsp.setup() -- should be after setup diff --git a/vim/.config/nvim/lua/plugins/mason.lua b/vim/.config/nvim/lua/plugins/mason.lua deleted file mode 100644 index 758b255..0000000 --- a/vim/.config/nvim/lua/plugins/mason.lua +++ /dev/null @@ -1,11 +0,0 @@ --- require("mason").setup({}) --- require("mason-tool-installer").setup({ --- -- https://github.com/williamboman/mason-lspconfig.nvim/blob/main/doc/server-mapping.md --- ensure_installed = { "bash-language-server", "black", "dockerfile-language-server", --- "isort", "json-lsp", "jsonlint", "lua-language-server", "marksman", "prettierd", --- "python-lsp-server", "rubocop", "shfmt", "solargraph", "terraform-ls", --- "vim-language-server", "yaml-language-server", --- }, --- auto_update = true, --- run_on_start = true --- }) diff --git a/vim/.config/nvim/lua/plugins/null-ls.lua b/vim/.config/nvim/lua/plugins/null-ls.lua deleted file mode 100644 index 8078c44..0000000 --- a/vim/.config/nvim/lua/plugins/null-ls.lua +++ /dev/null @@ -1,30 +0,0 @@ --- TODO: figure this out -local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) -require("null-ls").setup({ - sources = { - require("null-ls").builtins.formatting.jq, - require("null-ls").builtins.formatting.gofmt, - require("null-ls").builtins.formatting.prettierd, - require("null-ls").builtins.formatting.terraform_fmt, - require("null-ls").builtins.diagnostics.jsonlint, - }, - -- you can reuse a shared lspconfig on_attach callback here - 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, - async = false, - filter = function(client) - return client.name == "null-ls" - end - }) - end, - }) - end - end, -}) diff --git a/vim/.config/nvim/lua/plugins/nvim-tree.lua b/vim/.config/nvim/lua/plugins/nvim-tree.lua index c00b33a..91e1ffd 100644 --- a/vim/.config/nvim/lua/plugins/nvim-tree.lua +++ b/vim/.config/nvim/lua/plugins/nvim-tree.lua @@ -1,14 +1,20 @@ -require("nvim-tree").setup({ - sort_by = "case_sensitive", - renderer = { - icons = { - show = { - file = false, - folder = false, - folder_arrow = false, - git = false, - } - }, - group_empty = true, - } -}) +local M = {} + +function M.config() + require("nvim-tree").setup({ + sort_by = "case_sensitive", + renderer = { + icons = { + show = { + file = false, + folder = false, + folder_arrow = false, + git = false, + } + }, + group_empty = true, + } + }) +end + +return M diff --git a/vim/.config/nvim/lua/plugins/treesitter.lua b/vim/.config/nvim/lua/plugins/treesitter.lua index 466dfd0..60cb546 100644 --- a/vim/.config/nvim/lua/plugins/treesitter.lua +++ b/vim/.config/nvim/lua/plugins/treesitter.lua @@ -29,6 +29,7 @@ function M.config() textobjects = { -- syntax-aware textobjects select = { enable = true, + lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim disable = {}, keymaps = { -- You can use the capture groups defined in textobjects.scm @@ -48,6 +49,8 @@ function M.config() ['im'] = '@call.inner', ['ad'] = '@comment.outer', ['id'] = '@comment.inner', + ['aa'] = '@parameter.outer', + ['ia'] = '@parameter.inner', }, }, } diff --git a/vim/.config/nvim/lua/settings.lua b/vim/.config/nvim/lua/settings.lua index 9881991..ea020ff 100644 --- a/vim/.config/nvim/lua/settings.lua +++ b/vim/.config/nvim/lua/settings.lua @@ -12,16 +12,38 @@ opt.shiftwidth = 2 -- Numbers of spaces to (auto)indent opt.expandtab = true -- Tabs to spaces opt.clipboard = 'unnamedplus' -- Share clipboard with the OS opt.number = true -- Display line numbers + +-- opt.fillchars = { +-- vert = '▕', -- alternatives │ +-- eob = ' ', -- suppress ~ at EndOfBuffer +-- msgsep = '‾', +-- diff = '⣿', +-- fold = ' ', +-- foldopen = '▾', +-- foldsep = '│', +-- foldclose = '▸', +-- } +-- +opt.listchars = { + nbsp = '⦸', -- CIRCLED REVERSE SOLIDUS (U+29B8, UTF-8: E2 A6 B8) + extends = '»', -- RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (U+00BB, UTF-8: C2 BB) + precedes = '«', -- LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (U+00AB, UTF-8: C2 AB) + -- tab = ' ', -- '▷─' WHITE RIGHT-POINTING TRIANGLE (U+25B7, UTF-8: E2 96 B7) + BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL (U+2505, UTF-8: E2 94 85) + trail = '•', -- BULLET (U+2022, UTF-8: E2 80 A2) + space = ' ', +} + opt.fillchars = { - vert = '▕', -- alternatives │ - eob = ' ', -- suppress ~ at EndOfBuffer - msgsep = '‾', diff = '⣿', - fold = ' ', + eob = ' ', -- NO-BREAK SPACE (U+00A0, UTF-8: C2 A0) to suppress ~ at EndOfBuffer + vert = '│', -- window border when window splits vertically ─ ┴ ┬ ┤ ├ ┼ + msgsep = '‾', + fold = '·', -- MIDDLE DOT (U+00B7, UTF-8: C2 B7) foldopen = '▾', foldsep = '│', - foldclose = '▸', + foldclose = '▸' } + opt.synmaxcol = 500 -- Do not try to highlight lines longer than 500 characters opt.lazyredraw = true -- Do not redraw while running macros opt.showmatch = true -- Show matching braces @@ -86,7 +108,7 @@ opt.wildignore = { } -- vim-test -g['test#strategy'] = 'neovim' +g['test#strategy'] = 'asyncrun_background' -- CtrlSF g.ctrlsf_ackprg = 'rg' diff --git a/vim/.config/nvim/plugin/packer_compiled.lua b/vim/.config/nvim/plugin/packer_compiled.lua index f50bf48..4299845 100644 --- a/vim/.config/nvim/plugin/packer_compiled.lua +++ b/vim/.config/nvim/plugin/packer_compiled.lua @@ -79,6 +79,11 @@ _G.packer_plugins = { path = "/Users/madundead/.local/share/nvim/site/pack/packer/start/LuaSnip", url = "https://github.com/L3MON4D3/LuaSnip" }, + ["asyncrun.vim"] = { + loaded = true, + path = "/Users/madundead/.local/share/nvim/site/pack/packer/start/asyncrun.vim", + url = "https://github.com/skywind3000/asyncrun.vim" + }, ["cmp-buffer"] = { loaded = true, path = "/Users/madundead/.local/share/nvim/site/pack/packer/start/cmp-buffer", @@ -129,11 +134,6 @@ _G.packer_plugins = { path = "/Users/madundead/.local/share/nvim/site/pack/packer/start/glow.nvim", url = "https://github.com/ellisonleao/glow.nvim" }, - ["hop.nvim"] = { - loaded = true, - path = "/Users/madundead/.local/share/nvim/site/pack/packer/start/hop.nvim", - url = "https://github.com/phaazon/hop.nvim" - }, ["impatient.nvim"] = { loaded = true, path = "/Users/madundead/.local/share/nvim/site/pack/packer/start/impatient.nvim", @@ -142,7 +142,7 @@ _G.packer_plugins = { ["lsp-zero.nvim"] = { loaded = true, path = "/Users/madundead/.local/share/nvim/site/pack/packer/start/lsp-zero.nvim", - url = "https://github.com/vonheikemen/lsp-zero.nvim" + url = "https://github.com/VonHeikemen/lsp-zero.nvim" }, ["mason-lspconfig.nvim"] = { loaded = true, @@ -161,6 +161,13 @@ _G.packer_plugins = { path = "/Users/madundead/.local/share/nvim/site/pack/packer/opt/nord.nvim", url = "https://github.com/shaunsingh/nord.nvim" }, + ["nvim-bqf"] = { + loaded = false, + needs_bufread = true, + only_cond = false, + path = "/Users/madundead/.local/share/nvim/site/pack/packer/opt/nvim-bqf", + url = "https://github.com/kevinhwang91/nvim-bqf" + }, ["nvim-cmp"] = { loaded = true, path = "/Users/madundead/.local/share/nvim/site/pack/packer/start/nvim-cmp", @@ -340,13 +347,6 @@ time([[Conditional loading of telescope-fzf-native.nvim]], false) -- Command lazy-loads time([[Defining lazy-load commands]], true) -pcall(vim.api.nvim_create_user_command, 'TSPlaygroundToggle', function(cmdargs) - require('packer.load')({'playground'}, { cmd = 'TSPlaygroundToggle', l1 = cmdargs.line1, l2 = cmdargs.line2, bang = cmdargs.bang, args = cmdargs.args, mods = cmdargs.mods }, _G.packer_plugins) - end, - {nargs = '*', range = true, bang = true, complete = function() - require('packer.load')({'playground'}, {}, _G.packer_plugins) - return vim.fn.getcompletion('TSPlaygroundToggle ', 'cmdline') - end}) pcall(vim.api.nvim_create_user_command, 'StartupTime', function(cmdargs) require('packer.load')({'vim-startuptime'}, { cmd = 'StartupTime', l1 = cmdargs.line1, l2 = cmdargs.line2, bang = cmdargs.bang, args = cmdargs.args, mods = cmdargs.mods }, _G.packer_plugins) end, @@ -354,10 +354,21 @@ pcall(vim.api.nvim_create_user_command, 'StartupTime', function(cmdargs) require('packer.load')({'vim-startuptime'}, {}, _G.packer_plugins) return vim.fn.getcompletion('StartupTime ', 'cmdline') end}) +pcall(vim.api.nvim_create_user_command, 'TSPlaygroundToggle', function(cmdargs) + require('packer.load')({'playground'}, { cmd = 'TSPlaygroundToggle', l1 = cmdargs.line1, l2 = cmdargs.line2, bang = cmdargs.bang, args = cmdargs.args, mods = cmdargs.mods }, _G.packer_plugins) + end, + {nargs = '*', range = true, bang = true, complete = function() + require('packer.load')({'playground'}, {}, _G.packer_plugins) + return vim.fn.getcompletion('TSPlaygroundToggle ', 'cmdline') + end}) time([[Defining lazy-load commands]], false) vim.cmd [[augroup packer_load_aucmds]] vim.cmd [[au!]] + -- Filetype lazy-loads +time([[Defining lazy-load filetype autocommands]], true) +vim.cmd [[au FileType qf ++once lua require("packer.load")({'nvim-bqf'}, { ft = "qf" }, _G.packer_plugins)]] +time([[Defining lazy-load filetype autocommands]], false) -- Event lazy-loads time([[Defining lazy-load event autocommands]], true) vim.cmd [[au BufRead * ++once lua require("packer.load")({'nvim-treesitter'}, { event = "BufRead *" }, _G.packer_plugins)]]