From 836501c6a04ecdec7215a8dcfe80787c0bf5f3ad Mon Sep 17 00:00:00 2001 From: Heng-Yi Wu <2316687+henry40408@users.noreply.github.com> Date: Wed, 16 Oct 2024 04:41:28 +0800 Subject: [PATCH 1/6] refactor: disable mini.completion --- home-manager/common/neovim/init.lua | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/home-manager/common/neovim/init.lua b/home-manager/common/neovim/init.lua index 880bb39..9bf24dc 100644 --- a/home-manager/common/neovim/init.lua +++ b/home-manager/common/neovim/init.lua @@ -123,30 +123,6 @@ later(function() require("mini.bufremove").setup({}) require("mini.comment").setup({}) - require("mini.completion").setup({}) - local imap_expr = function(lhs, rhs) vim.keymap.set("i", lhs, rhs, { expr = true }) end - imap_expr("", [[pumvisible() ? "\" : "\"]]) - imap_expr("", [[pumvisible() ? "\" : "\"]]) - local keycode = vim.keycode or function(x) return vim.api.nvim_replace_termcodes(x, true, true, true) end - local keys = { - ["cr"] = keycode(""), - ["ctrl-y"] = keycode(""), - ["ctrl-y_cr"] = keycode(""), - } - _G.cr_action = function() - if vim.fn.pumvisible() ~= 0 then - -- If popup is visible, confirm selected item or add new line otherwise - local item_selected = vim.fn.complete_info()["selected"] ~= -1 - return item_selected and keys["ctrl-y"] or keys["ctrl-y_cr"] - else - -- If popup is not visible, use plain ``. You might want to customize - -- according to other plugins. For example, to use 'mini.pairs', replace - -- next line with `return require('mini.pairs').cr()` - return keys["cr"] - end - end - vim.keymap.set("i", "", "v:lua._G.cr_action()", { expr = true }) - require("mini.cursorword").setup({}) require("mini.diff").setup({}) require("mini.extra").setup({}) From 1c84e327e21d3107e1f62e028506fd5527eec15e Mon Sep 17 00:00:00 2001 From: Heng-Yi Wu <2316687+henry40408@users.noreply.github.com> Date: Wed, 16 Oct 2024 04:52:18 +0800 Subject: [PATCH 2/6] refactor: cmp for snippets --- home-manager/common/neovim/init.lua | 76 ++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 1 deletion(-) diff --git a/home-manager/common/neovim/init.lua b/home-manager/common/neovim/init.lua index 9bf24dc..3f4b8ab 100644 --- a/home-manager/common/neovim/init.lua +++ b/home-manager/common/neovim/init.lua @@ -200,6 +200,78 @@ later( end ) +-- completion +add({ source = "L3MON4D3/LuaSnip", commit = "e808bee" }) +add({ source = "hrsh7th/cmp-buffer", commit = "3022dbc" }) +add({ source = "hrsh7th/cmp-cmdline", commit = "d250c63" }) +add({ source = "hrsh7th/cmp-nvim-lsp", commit = "39e2eda" }) +add({ source = "hrsh7th/cmp-path", commit = "91ff86c" }) +add({ source = "saadparwaiz1/cmp_luasnip", commit = "05a9ab2" }) +add({ + source = "hrsh7th/nvim-cmp", + commit = "ae644fe", + depends = { + "L3MON4D3/LuaSnip", + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-cmdline", + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-path", + "saadparwaiz1/cmp_luasnip", + }, +}) +later(function() + local cmp = require("cmp") + local luasnip = require("luasnip") + cmp.setup({ + snippet = { + expand = function(args) require("luasnip").lsp_expand(args.body) end, + }, + mapping = cmp.mapping.preset.insert({ + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.abort(), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + if luasnip.expandable() then + luasnip.expand() + else + cmp.confirm({ + select = true, + }) + end + else + fallback() + end + end), + [""] = 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" }), + [""] = 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 = "buffer" }, + }), + }) +end) + -- language server protocols add({ source = "neovim/nvim-lspconfig", commit = "d3f169f" }) later(function() @@ -227,6 +299,7 @@ later(function() end local lspconfig = require("lspconfig") + local capabilities = require("cmp_nvim_lsp").default_capabilities() local servers = { "eslint", "gopls", @@ -235,9 +308,10 @@ later(function() "rust_analyzer", } for _, lsp in ipairs(servers) do - lspconfig[lsp].setup({ on_attach = on_attach }) + lspconfig[lsp].setup({ capabilities = capabilities, on_attach = on_attach }) end lspconfig.volar.setup({ + capabilities = capabilities, filetypes = { "javascript", "javascriptreact", From a7bbdd79995d075c0cf5f4dfb39d416f4fb25adc Mon Sep 17 00:00:00 2001 From: Heng-Yi Wu <2316687+henry40408@users.noreply.github.com> Date: Wed, 16 Oct 2024 05:12:16 +0800 Subject: [PATCH 3/6] refactor: add friendly-snippets --- home-manager/common/neovim/init.lua | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/home-manager/common/neovim/init.lua b/home-manager/common/neovim/init.lua index 3f4b8ab..061b8e1 100644 --- a/home-manager/common/neovim/init.lua +++ b/home-manager/common/neovim/init.lua @@ -201,10 +201,18 @@ later( ) -- completion -add({ source = "L3MON4D3/LuaSnip", commit = "e808bee" }) +add({ source = "rafamadriz/friendly-snippets", commit = "de8fce9" }) +add({ + source = "L3MON4D3/LuaSnip", + commit = "e808bee", + depends = { + "rafamadriz/friendly-snippets", + }, +}) add({ source = "hrsh7th/cmp-buffer", commit = "3022dbc" }) add({ source = "hrsh7th/cmp-cmdline", commit = "d250c63" }) add({ source = "hrsh7th/cmp-nvim-lsp", commit = "39e2eda" }) +add({ source = "hrsh7th/cmp-nvim-lsp-signature-help", commit = "031e6ba" }) add({ source = "hrsh7th/cmp-path", commit = "91ff86c" }) add({ source = "saadparwaiz1/cmp_luasnip", commit = "05a9ab2" }) add({ @@ -215,11 +223,15 @@ add({ "hrsh7th/cmp-buffer", "hrsh7th/cmp-cmdline", "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-nvim-lsp-signature-help", "hrsh7th/cmp-path", "saadparwaiz1/cmp_luasnip", }, }) later(function() + -- load snippets such as vbase-3-ts-setup + require("luasnip.loaders.from_vscode").lazy_load() + local cmp = require("cmp") local luasnip = require("luasnip") cmp.setup({ @@ -265,9 +277,12 @@ later(function() }), sources = cmp.config.sources({ { name = "nvim_lsp" }, + { name = "nvim_lsp_signature_help" }, { name = "luasnip" }, + { name = "path" }, + { name = "cmdline" }, }, { - { name = "buffer" }, + { name = "buffer", keyword_length = 3 }, }), }) end) From af9e47f5947e658590f4c2512c72128a7604c605 Mon Sep 17 00:00:00 2001 From: Heng-Yi Wu <2316687+henry40408@users.noreply.github.com> Date: Wed, 16 Oct 2024 05:14:32 +0800 Subject: [PATCH 4/6] refactor: load mini.pick immediately --- home-manager/common/neovim/init.lua | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/home-manager/common/neovim/init.lua b/home-manager/common/neovim/init.lua index 061b8e1..23ec51d 100644 --- a/home-manager/common/neovim/init.lua +++ b/home-manager/common/neovim/init.lua @@ -98,6 +98,8 @@ end) -- mini.nvim add({ source = "echasnovski/mini.nvim", checkout = "c235203", depends = { "folke/which-key.nvim" } }) now(function() + local wk = require("which-key") + require("mini.basics").setup({}) local starter = require("mini.starter") @@ -114,6 +116,11 @@ now(function() starter.gen_hook.padding(3, 2), }, }) + + require("mini.pick").setup({}) + wk.add({ "fb", "Pick buffers", desc = "Buffers", mode = "n" }) + wk.add({ "ff", "Pick files", desc = "Find Files", mode = "n" }) + wk.add({ "sg", "Pick grep_live", desc = "Grep", mode = "n" }) end) later(function() local wk = require("which-key") @@ -146,11 +153,6 @@ later(function() require("mini.operators").setup({}) require("mini.pairs").setup() - require("mini.pick").setup({}) - wk.add({ "fb", "Pick buffers", desc = "Buffers", mode = "n" }) - wk.add({ "ff", "Pick files", desc = "Find Files", mode = "n" }) - wk.add({ "sg", "Pick grep_live", desc = "Grep", mode = "n" }) - require("mini.statusline").setup({}) require("mini.tabline").setup({}) From 3f935fa296a27a3aad169e7e98dc3dd6ab202a2a Mon Sep 17 00:00:00 2001 From: Heng-Yi Wu <2316687+henry40408@users.noreply.github.com> Date: Wed, 16 Oct 2024 05:32:47 +0800 Subject: [PATCH 5/6] refactor: plugin to measure startup time --- home-manager/common/neovim/init.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home-manager/common/neovim/init.lua b/home-manager/common/neovim/init.lua index 23ec51d..c3f3487 100644 --- a/home-manager/common/neovim/init.lua +++ b/home-manager/common/neovim/init.lua @@ -440,3 +440,6 @@ later(function() vim.keymap.set({ "o", "x" }, "R", function() require("flash").treesitter_search() end, { desc = "Treesitter Search" }) vim.keymap.set("c", "", function() require("flash").toggle() end, { desc = "Toggle Flash Search" }) end) + +-- startup time +add({ source = "dstein64/vim-startuptime", commit = "ac2cccb" }) From 6a80f2a21b78471ba2ea84784479333a717ddb77 Mon Sep 17 00:00:00 2001 From: Heng-Yi Wu <2316687+henry40408@users.noreply.github.com> Date: Wed, 16 Oct 2024 05:49:14 +0800 Subject: [PATCH 6/6] perf: statuptime --- home-manager/common/neovim/init.lua | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/home-manager/common/neovim/init.lua b/home-manager/common/neovim/init.lua index c3f3487..1ea58a4 100644 --- a/home-manager/common/neovim/init.lua +++ b/home-manager/common/neovim/init.lua @@ -23,11 +23,28 @@ local add, now, later = MiniDeps.add, MiniDeps.now, MiniDeps.later -- vim options now(function() vim.g.mapleader = " " - vim.opt.clipboard = "unnamedplus" vim.opt.expandtab = true vim.opt.sessionoptions = "buffers" vim.opt.shiftwidth = 2 vim.opt.tabstop = 2 + + -- https://github.com/Alexis12119/nvim-config/blob/9efdf7bc943fe7f6d6dd39fdb6f070972e7c91e6/lua/core/autocommands.lua#L49-L61 + local autocmd = vim.api.nvim_create_autocmd + local augroup = vim.api.nvim_create_augroup + local general = augroup("General", { clear = true }) + autocmd({ "BufReadPost", "BufNewFile" }, { + once = true, + callback = function() + -- In wsl 2, just install xclip + -- Ubuntu + -- sudo apt install xclip + -- Arch linux + -- sudo pacman -S xclip + vim.opt.clipboard = "unnamedplus" -- allows neovim to access the system clipboard + end, + group = general, + desc = "Lazy load clipboard", + }) end) -- keymap management