From a38046a8cc7a97c725e5bb2024b661da368a71ab Mon Sep 17 00:00:00 2001 From: Tovi Jaeschke-Rogers Date: Tue, 26 Jul 2022 20:21:44 +0930 Subject: [PATCH] Tue 26 Jul 2022 20:21:44 ACST --- .config/nvim/lua/general/autocmd.lua | 84 ++++++++++------- .config/nvim/lua/packer-plugins.lua | 53 ++++++++++- .config/nvim/plugin/coc.lua | 46 ++++----- .config/nvim/plugin/packer_compiled.lua | 118 +++++++++++++++++++++++- update.sh | 6 ++ 5 files changed, 244 insertions(+), 63 deletions(-) diff --git a/.config/nvim/lua/general/autocmd.lua b/.config/nvim/lua/general/autocmd.lua index f49f3ee..1f54e2a 100644 --- a/.config/nvim/lua/general/autocmd.lua +++ b/.config/nvim/lua/general/autocmd.lua @@ -1,38 +1,52 @@ --- Remove any trailing whitespace from the file on write -vim.api.nvim_create_autocmd({ 'BufWritePre' }, { command = [[%s/\s\+$//e]] }) +local aucmd_dict = { + FileType = { + { + pattern = "dart,vue,js", + callback = function() + vim.opt_local.tabstop = 2 + vim.opt_local.softtabstop = 2 + vim.opt_local.shiftwidth = 2 + end, + }, + }, + BufWritePre = { + { + command = [[%s/\s\+$//e]], + }, + { + pattern = 'go', + callback = function () require('go.format').gofmt() end, + }, + }, + BufRead = { + { + command = [[if @% !~# '\.git[\/\\]COMMIT_EDITMSG$' && line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif]] + }, + { + pattern = { '*.docker' }, + callback = function() + vim.opt_local.syntax = 'dockerfile' + end + } + }, + BufNewFile = { + { + pattern = { '*.docker' }, + callback = function() + vim.opt_local.syntax = 'dockerfile' + end + } + }, + VimLeave = { + { + command = [[mksession! ~/.config/nvim/session/shutdown_session.vim]] + }, + }, +} -vim.api.nvim_create_autocmd({ 'BufWritePre' }, { - pattern = { '*.go' }, - callback = function () require('go.format').gofmt() end, -}) - --- Load file on last line --- TODO: change this to use lua -vim.api.nvim_create_autocmd({ 'BufRead' }, { - command = [[if @% !~# '\.git[\/\\]COMMIT_EDITMSG$' && line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif]] -}) - --- Save session on VimLeave -vim.api.nvim_create_autocmd({ 'VimLeave' }, { - command = [[mksession! ~/.config/nvim/session/shutdown_session.vim]] -}) - --- Set tabs to 2 for dart, vue, and js files -vim.api.nvim_create_autocmd({ 'BufNewFile', 'BufRead' }, { - pattern = { '*.dart', '*.vue', '*.js' }, - callback = function() - vim.o.tabstop = 2 - vim.o.softtabstop = 2 - vim.o.shiftwidth = 2 +for event, opt_tbls in pairs(aucmd_dict) do + for _, opt_tbl in pairs(opt_tbls) do + vim.api.nvim_create_autocmd(event, opt_tbl) end -}) - --- Ensure to read .docker files as a dockerfile -vim.api.nvim_create_autocmd({ 'BufNewFile', 'BufRead' }, { - pattern = { '*.docker' }, - callback = function() - vim.o.syntax = 'dockerfile' - end -}) - +end diff --git a/.config/nvim/lua/packer-plugins.lua b/.config/nvim/lua/packer-plugins.lua index 9141520..f8859ba 100644 --- a/.config/nvim/lua/packer-plugins.lua +++ b/.config/nvim/lua/packer-plugins.lua @@ -5,9 +5,55 @@ return require('packer').startup(function() -- colorscheme use 'gruvbox-community/gruvbox' - use { 'neoclide/coc.nvim', run = 'yarn install' } + use { 'neoclide/coc.nvim', run = 'yarn install', disable = true } - use 'nvim-lua/popup.nvim' + use { "williamboman/nvim-lsp-installer" } + + use { + "neovim/nvim-lspconfig", + wants = { "cmp-nvim-lsp", "nvim-lsp-installer", "lsp_signature.nvim" }, + config = function() + -- require("lsp").setup() + end, + requires = { + "williamboman/nvim-lsp-installer", + }, + } + + use { + "ray-x/lsp_signature.nvim", + } + + use { + "hrsh7th/nvim-cmp", + event = "InsertEnter", + requires = { + { "hrsh7th/cmp-nvim-lsp", after = "nvim-cmp" }, + { "f3fora/cmp-spell", after = "nvim-cmp" }, + { "hrsh7th/cmp-path", after = "nvim-cmp" }, + { "hrsh7th/cmp-buffer", after = "nvim-cmp" }, + { "hrsh7th/cmp-calc", after = "nvim-cmp" }, + { "quangnguyen30192/cmp-nvim-ultisnips", after = "nvim-cmp" }, + { + "L3MON4D3/LuaSnip", + -- after = 'nvim-cmp', + wants = "friendly-snippets", + requires = { + { "rafamadriz/friendly-snippets", after = 'nvim-cmp' }, + }, + config = function() + require("config.luasnip").setup() + end, + }, + + }, + config = function() + require("config.cmp").setup() + end, + disable = false, + } + + use 'nvim-lua/popup.nvim' use 'nvim-lua/plenary.nvim' use 'nvim-telescope/telescope.nvim' use 'nvim-telescope/telescope-fzy-native.nvim' @@ -24,4 +70,7 @@ return require('packer').startup(function() use 'ray-x/guihua.lua' use 'aserowy/tmux.nvim' + + -- Local nvim plugin development + -- use '~/Software/nvim-phpdoc/phpdoc.nvim' end) diff --git a/.config/nvim/plugin/coc.lua b/.config/nvim/plugin/coc.lua index 560b662..868502a 100644 --- a/.config/nvim/plugin/coc.lua +++ b/.config/nvim/plugin/coc.lua @@ -1,23 +1,23 @@ -vim.o.signcolumn = 'number' - -vim.cmd[[highlight CocErrorSign ctermfg=Black ctermbg=Magenta]] - --- Bind tab to select next tab complete -vim.api.nvim_set_keymap("i", "", "pumvisible() ? '' : ''", {noremap = true, silent = true, expr = true}) - -vim.api.nvim_set_keymap("n", ".", "(coc-codeaction)", {}) -vim.api.nvim_set_keymap("n", "l", ":CocCommand eslint.executeAutofix", {}) -vim.api.nvim_set_keymap("n", "gd", "(coc-definition)", {silent = true}) -vim.api.nvim_set_keymap("n", "gr", "(coc-references)", {silent = true}) -vim.api.nvim_set_keymap("n", "K", ":call CocActionAsync('doHover')", {silent = true, noremap = true}) -vim.api.nvim_set_keymap("n", "rn", "(coc-rename)", {}) -vim.api.nvim_set_keymap("n", "f", ":CocCommand prettier.formatFile", {noremap = true}) - -vim.api.nvim_set_keymap("n", "g[", ":call CocActionAsync('diagnosticPrevious')", {silent = true, noremap = true}) -vim.api.nvim_set_keymap("n", "g]", ":call CocActionAsync('diagnosticNext')", {silent = true, noremap = true}) - -vim.keymap.set("n", "", vim.fn['coc#refresh'](), {silent = true, noremap = true}) - --- Bind Ctrl + j,k to up and down for COC completion -vim.api.nvim_set_keymap('i', '', "pumvisible() ? '' : ''", { noremap = true, expr = true, silent = true }) -vim.api.nvim_set_keymap('i', '', "pumvisible() ? '' : ''", { noremap = true, expr = true, silent = true }) +-- vim.o.signcolumn = 'number' +-- +-- vim.cmd[[highlight CocErrorSign ctermfg=Black ctermbg=Magenta]] +-- +-- -- Bind tab to select next tab complete +-- vim.api.nvim_set_keymap("i", "", "pumvisible() ? '' : ''", {noremap = true, silent = true, expr = true}) +-- +-- vim.api.nvim_set_keymap("n", ".", "(coc-codeaction)", {}) +-- vim.api.nvim_set_keymap("n", "l", ":CocCommand eslint.executeAutofix", {}) +-- vim.api.nvim_set_keymap("n", "gd", "(coc-definition)", {silent = true}) +-- vim.api.nvim_set_keymap("n", "gr", "(coc-references)", {silent = true}) +-- vim.api.nvim_set_keymap("n", "K", ":call CocActionAsync('doHover')", {silent = true, noremap = true}) +-- vim.api.nvim_set_keymap("n", "rn", "(coc-rename)", {}) +-- vim.api.nvim_set_keymap("n", "f", ":CocCommand prettier.formatFile", {noremap = true}) +-- +-- vim.api.nvim_set_keymap("n", "g[", ":call CocActionAsync('diagnosticPrevious')", {silent = true, noremap = true}) +-- vim.api.nvim_set_keymap("n", "g]", ":call CocActionAsync('diagnosticNext')", {silent = true, noremap = true}) +-- +-- vim.keymap.set("n", "", vim.fn['coc#refresh'](), {silent = true, noremap = true}) +-- +-- -- Bind Ctrl + j,k to up and down for COC completion +-- vim.api.nvim_set_keymap('i', '', "pumvisible() ? '' : ''", { noremap = true, expr = true, silent = true }) +-- vim.api.nvim_set_keymap('i', '', "pumvisible() ? '' : ''", { noremap = true, expr = true, silent = true }) diff --git a/.config/nvim/plugin/packer_compiled.lua b/.config/nvim/plugin/packer_compiled.lua index 0a85bcf..0c994a2 100644 --- a/.config/nvim/plugin/packer_compiled.lua +++ b/.config/nvim/plugin/packer_compiled.lua @@ -69,16 +69,87 @@ end time([[try_loadstring definition]], false) time([[Defining packer_plugins]], true) _G.packer_plugins = { - ["coc.nvim"] = { + LuaSnip = { + config = { "\27LJ\2\n<\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\19config.luasnip\frequire\0" }, loaded = true, - path = "/home/tovi/.local/share/nvim/site/pack/packer/start/coc.nvim", - url = "https://github.com/neoclide/coc.nvim" + path = "/home/tovi/.local/share/nvim/site/pack/packer/start/LuaSnip", + url = "https://github.com/L3MON4D3/LuaSnip", + wants = { "friendly-snippets" } + }, + ["cmp-buffer"] = { + after_files = { "/home/tovi/.local/share/nvim/site/pack/packer/opt/cmp-buffer/after/plugin/cmp_buffer.lua" }, + load_after = { + ["nvim-cmp"] = true + }, + loaded = false, + needs_bufread = false, + path = "/home/tovi/.local/share/nvim/site/pack/packer/opt/cmp-buffer", + url = "https://github.com/hrsh7th/cmp-buffer" + }, + ["cmp-calc"] = { + after_files = { "/home/tovi/.local/share/nvim/site/pack/packer/opt/cmp-calc/after/plugin/cmp_calc.lua" }, + load_after = { + ["nvim-cmp"] = true + }, + loaded = false, + needs_bufread = false, + path = "/home/tovi/.local/share/nvim/site/pack/packer/opt/cmp-calc", + url = "https://github.com/hrsh7th/cmp-calc" + }, + ["cmp-nvim-lsp"] = { + after_files = { "/home/tovi/.local/share/nvim/site/pack/packer/opt/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua" }, + load_after = { + ["nvim-cmp"] = true + }, + loaded = false, + needs_bufread = false, + path = "/home/tovi/.local/share/nvim/site/pack/packer/opt/cmp-nvim-lsp", + url = "https://github.com/hrsh7th/cmp-nvim-lsp" + }, + ["cmp-nvim-ultisnips"] = { + after_files = { "/home/tovi/.local/share/nvim/site/pack/packer/opt/cmp-nvim-ultisnips/after/plugin/cmp_nvim_ultisnips.lua" }, + load_after = { + ["nvim-cmp"] = true + }, + loaded = false, + needs_bufread = false, + path = "/home/tovi/.local/share/nvim/site/pack/packer/opt/cmp-nvim-ultisnips", + url = "https://github.com/quangnguyen30192/cmp-nvim-ultisnips" + }, + ["cmp-path"] = { + after_files = { "/home/tovi/.local/share/nvim/site/pack/packer/opt/cmp-path/after/plugin/cmp_path.lua" }, + load_after = { + ["nvim-cmp"] = true + }, + loaded = false, + needs_bufread = false, + path = "/home/tovi/.local/share/nvim/site/pack/packer/opt/cmp-path", + url = "https://github.com/hrsh7th/cmp-path" + }, + ["cmp-spell"] = { + after_files = { "/home/tovi/.local/share/nvim/site/pack/packer/opt/cmp-spell/after/plugin/cmp-spell.lua" }, + load_after = { + ["nvim-cmp"] = true + }, + loaded = false, + needs_bufread = false, + path = "/home/tovi/.local/share/nvim/site/pack/packer/opt/cmp-spell", + url = "https://github.com/f3fora/cmp-spell" }, ["dart-vim-plugin"] = { loaded = true, path = "/home/tovi/.local/share/nvim/site/pack/packer/start/dart-vim-plugin", url = "https://github.com/dart-lang/dart-vim-plugin" }, + ["friendly-snippets"] = { + load_after = { + ["nvim-cmp"] = true + }, + loaded = false, + needs_bufread = false, + path = "/home/tovi/.local/share/nvim/site/pack/packer/opt/friendly-snippets", + url = "https://github.com/rafamadriz/friendly-snippets" + }, ["git-blame.nvim"] = { loaded = true, path = "/home/tovi/.local/share/nvim/site/pack/packer/start/git-blame.nvim", @@ -99,6 +170,32 @@ _G.packer_plugins = { path = "/home/tovi/.local/share/nvim/site/pack/packer/start/guihua.lua", url = "https://github.com/ray-x/guihua.lua" }, + ["lsp_signature.nvim"] = { + loaded = true, + path = "/home/tovi/.local/share/nvim/site/pack/packer/start/lsp_signature.nvim", + url = "https://github.com/ray-x/lsp_signature.nvim" + }, + ["nvim-cmp"] = { + after = { "cmp-spell", "friendly-snippets", "cmp-buffer", "cmp-calc", "cmp-nvim-ultisnips", "cmp-path", "cmp-nvim-lsp" }, + config = { "\27LJ\2\n8\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\15config.cmp\frequire\0" }, + loaded = false, + needs_bufread = false, + only_cond = false, + path = "/home/tovi/.local/share/nvim/site/pack/packer/opt/nvim-cmp", + url = "https://github.com/hrsh7th/nvim-cmp" + }, + ["nvim-lsp-installer"] = { + loaded = true, + path = "/home/tovi/.local/share/nvim/site/pack/packer/start/nvim-lsp-installer", + url = "https://github.com/williamboman/nvim-lsp-installer" + }, + ["nvim-lspconfig"] = { + config = { "\27LJ\2\n\v\0\0\1\0\0\0\1K\0\1\0\0" }, + loaded = true, + path = "/home/tovi/.local/share/nvim/site/pack/packer/start/nvim-lspconfig", + url = "https://github.com/neovim/nvim-lspconfig", + wants = { "cmp-nvim-lsp", "nvim-lsp-installer", "lsp_signature.nvim" } + }, ["nvim-treesitter"] = { loaded = true, path = "/home/tovi/.local/share/nvim/site/pack/packer/start/nvim-treesitter", @@ -142,6 +239,21 @@ _G.packer_plugins = { } time([[Defining packer_plugins]], false) +-- Config for: nvim-lspconfig +time([[Config for nvim-lspconfig]], true) +try_loadstring("\27LJ\2\n\v\0\0\1\0\0\0\1K\0\1\0\0", "config", "nvim-lspconfig") +time([[Config for nvim-lspconfig]], false) +-- Config for: LuaSnip +time([[Config for LuaSnip]], true) +try_loadstring("\27LJ\2\n<\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\19config.luasnip\frequire\0", "config", "LuaSnip") +time([[Config for LuaSnip]], false) +vim.cmd [[augroup packer_load_aucmds]] +vim.cmd [[au!]] + -- Event lazy-loads +time([[Defining lazy-load event autocommands]], true) +vim.cmd [[au InsertEnter * ++once lua require("packer.load")({'nvim-cmp'}, { event = "InsertEnter *" }, _G.packer_plugins)]] +time([[Defining lazy-load event autocommands]], false) +vim.cmd("augroup END") if should_profile then save_profiles() end end) diff --git a/update.sh b/update.sh index 684cfe3..baeca0a 100755 --- a/update.sh +++ b/update.sh @@ -13,6 +13,12 @@ declare -a FILES=( .config/nvim/lua/general/remaps.lua .config/nvim/lua/general/options.lua .config/nvim/lua/general/autocmd.lua + .config/nvim/lua/config/cmp.lua + .config/nvim/lua/config/luasnip.lua + .config/nvim/lua/lsp/init.lua + .config/nvim/lua/lsp/installer.lua + .config/nvim/lua/lsp/keymaps.lua + .config/nvim/lua/utils/init.lua .config/nvim/lua/helper/toggle-tab-width.lua .config/nvim/plugin .config/nvim/lua/packer-plugins.lua