diff options
Diffstat (limited to '.config/nvim/lua')
| -rw-r--r-- | .config/nvim/lua/plugins/cmp.lua | 56 | ||||
| -rw-r--r-- | .config/nvim/lua/plugins/cutlass.lua | 75 | ||||
| -rw-r--r-- | .config/nvim/lua/plugins/telescope.lua | 32 |
3 files changed, 127 insertions, 36 deletions
diff --git a/.config/nvim/lua/plugins/cmp.lua b/.config/nvim/lua/plugins/cmp.lua index 78ff9a9..828d7c2 100644 --- a/.config/nvim/lua/plugins/cmp.lua +++ b/.config/nvim/lua/plugins/cmp.lua | |||
| @@ -1,4 +1,3 @@ | |||
| 1 | -- autocompletion | ||
| 2 | return { | 1 | return { |
| 3 | { | 2 | { |
| 4 | "hrsh7th/nvim-cmp", | 3 | "hrsh7th/nvim-cmp", |
| @@ -46,18 +45,35 @@ return { | |||
| 46 | TypeParameter = "", | 45 | TypeParameter = "", |
| 47 | } | 46 | } |
| 48 | 47 | ||
| 48 | ---@diagnostic disable-next-line: missing-fields | ||
| 49 | cmp.setup({ | 49 | cmp.setup({ |
| 50 | enabled = true, | 50 | enabled = function() |
| 51 | -- disable autocompletion in prompt | ||
| 52 | local buftype = vim.api.nvim_buf_get_option(0, "buftype") | ||
| 53 | if buftype == "prompt" then return false end | ||
| 54 | |||
| 55 | local context = require 'cmp.config.context' | ||
| 56 | -- disable autocompletion in comments | ||
| 57 | return not context.in_treesitter_capture("comment") and not context.in_syntax_group("Comment") | ||
| 58 | end, | ||
| 59 | ---@diagnostic disable-next-line: missing-fields | ||
| 60 | completion = { | ||
| 61 | completeopt = "menu,menuone,noselect", | ||
| 62 | }, | ||
| 63 | window = { | ||
| 64 | documentation = cmp.config.window.bordered(), | ||
| 65 | completion = cmp.config.window.bordered(), | ||
| 66 | }, | ||
| 51 | snippet = { | 67 | snippet = { |
| 52 | expand = function(args) | 68 | expand = function(args) |
| 53 | luasnip.lsp_expand(args.body) | 69 | luasnip.lsp_expand(args.body) |
| 54 | end, | 70 | end, |
| 55 | }, | 71 | }, |
| 56 | mapping = cmp.mapping.preset.insert({ | 72 | mapping = cmp.mapping.preset.insert({ |
| 73 | ["<C-f>"] = cmp.mapping.scroll_docs(-4), | ||
| 74 | ["<C-d>"] = cmp.mapping.scroll_docs(4), | ||
| 57 | ["<C-k>"] = cmp.mapping.select_prev_item(), | 75 | ["<C-k>"] = cmp.mapping.select_prev_item(), |
| 58 | ["<C-j>"] = cmp.mapping.select_next_item(), | 76 | ["<C-j>"] = cmp.mapping.select_next_item(), |
| 59 | ["<C-d>"] = cmp.mapping.scroll_docs(-4), | ||
| 60 | ["<C-f>"] = cmp.mapping.scroll_docs(4), | ||
| 61 | ["<CR>"] = cmp.mapping.confirm({ | 77 | ["<CR>"] = cmp.mapping.confirm({ |
| 62 | behavior = cmp.ConfirmBehavior.Replace, | 78 | behavior = cmp.ConfirmBehavior.Replace, |
| 63 | select = false, | 79 | select = false, |
| @@ -81,6 +97,7 @@ return { | |||
| 81 | end | 97 | end |
| 82 | end, { "i", "s" }), | 98 | end, { "i", "s" }), |
| 83 | }), | 99 | }), |
| 100 | ---@diagnostic disable-next-line: missing-fields | ||
| 84 | formatting = { | 101 | formatting = { |
| 85 | fields = { "kind", "abbr", "menu" }, | 102 | fields = { "kind", "abbr", "menu" }, |
| 86 | format = function(entry, vim_item) | 103 | format = function(entry, vim_item) |
| @@ -103,12 +120,41 @@ return { | |||
| 103 | }, | 120 | }, |
| 104 | }) | 121 | }) |
| 105 | 122 | ||
| 106 | -- If you want insert `(` after select function or method item | 123 | -- insert `(` after select function or method item |
| 107 | local cmp_autopairs = require('nvim-autopairs.completion.cmp') | 124 | local cmp_autopairs = require('nvim-autopairs.completion.cmp') |
| 108 | cmp.event:on( | 125 | cmp.event:on( |
| 109 | 'confirm_done', | 126 | 'confirm_done', |
| 110 | cmp_autopairs.on_confirm_done() | 127 | cmp_autopairs.on_confirm_done() |
| 111 | ) | 128 | ) |
| 129 | |||
| 130 | ---@diagnostic disable-next-line: missing-fields | ||
| 131 | cmp.setup.filetype('gitcommit', { | ||
| 132 | sources = cmp.config.sources({ | ||
| 133 | { name = 'git' }, | ||
| 134 | }, { | ||
| 135 | { name = 'buffer' }, | ||
| 136 | }) | ||
| 137 | }) | ||
| 138 | |||
| 139 | -- use buffer source for `/` . | ||
| 140 | ---@diagnostic disable-next-line: missing-fields | ||
| 141 | cmp.setup.cmdline('/', { | ||
| 142 | mapping = cmp.mapping.preset.cmdline(), | ||
| 143 | sources = { | ||
| 144 | { name = 'buffer' } | ||
| 145 | } | ||
| 146 | }) | ||
| 147 | |||
| 148 | -- use cmdline & path source for ':' . | ||
| 149 | ---@diagnostic disable-next-line: missing-fields | ||
| 150 | cmp.setup.cmdline(':', { | ||
| 151 | mapping = cmp.mapping.preset.cmdline(), | ||
| 152 | sources = cmp.config.sources({ | ||
| 153 | { name = 'path' } | ||
| 154 | }, { | ||
| 155 | { name = 'cmdline' } | ||
| 156 | }) | ||
| 157 | }) | ||
| 112 | end, | 158 | end, |
| 113 | }, | 159 | }, |
| 114 | } | 160 | } |
diff --git a/.config/nvim/lua/plugins/cutlass.lua b/.config/nvim/lua/plugins/cutlass.lua index 0b8ef52..b9332a9 100644 --- a/.config/nvim/lua/plugins/cutlass.lua +++ b/.config/nvim/lua/plugins/cutlass.lua | |||
| @@ -3,26 +3,36 @@ return { | |||
| 3 | 'svermeulen/vim-cutlass', | 3 | 'svermeulen/vim-cutlass', |
| 4 | }, | 4 | }, |
| 5 | { | 5 | { |
| 6 | 'svermeulen/vim-subversive', | 6 | 'gbprod/substitute.nvim', |
| 7 | config = function() | 7 | config = function() |
| 8 | local map = require("helpers.keys").map | 8 | local map = require("helpers.keys").map |
| 9 | 9 | ||
| 10 | -- substitute from yank | 10 | map("n", "s", require('substitute').operator, "substitute") |
| 11 | map('n', '<Leader>ys', '<plug>(SubversiveSubstitute)', "substitute from yank") | 11 | map("n", "ss", require('substitute').line, "substitute: linewise") |
| 12 | map('n', '<Leader>yss', '<plug>(SubversiveSubstituteLine)', "substitute from yank, line") | 12 | map("n", "S", require('substitute').eol, "substitute: eol") |
| 13 | map('n', '<Leader>yS', '<plug>(SubversiveSubstituteToEndOfLine)', "substitute from yank, eol") | 13 | map("x", "s", require('substitute').visual, "substitute: visual") |
| 14 | 14 | ||
| 15 | -- substitute over range | 15 | map("n", "<leader>s", require('substitute.range').operator, "substitute: over range") |
| 16 | map( { 'n', 'x' }, '<Leader>s', '<plug>(SubversiveSubstituteRange)', "start substitude over range") | 16 | map("x", "<leader>s", require('substitute.range').visual, "substitute: over visual") |
| 17 | map('n', '<Leader>ss', '<plug>(SubversiveSubstituteWordRange)', "start substitude over range") | 17 | map("n", "<leader>ss", require('substitute.range').word, "substitute: with word over range") |
| 18 | end | 18 | |
| 19 | map("n", "sx", require('substitute.exchange').operator, "exchange") | ||
| 20 | map("n", "sxx", require('substitute.exchange').line, "exchange line") | ||
| 21 | map("x", "sX", require('substitute.exchange').visual, "exchange visual") | ||
| 22 | map("n", "sxc", require('substitute.exchange').cancel, "exchange cancel") | ||
| 23 | |||
| 24 | require("substitute").setup({ | ||
| 25 | highlight_substituted_text = { | ||
| 26 | enabled = true, | ||
| 27 | timer = 300, | ||
| 28 | }, | ||
| 29 | }) | ||
| 30 | end, | ||
| 19 | }, | 31 | }, |
| 20 | { | 32 | { |
| 21 | 'svermeulen/vim-yoink', | 33 | "gbprod/yanky.nvim", |
| 22 | config = function() | 34 | config = function() |
| 23 | vim.g.yoinkIncludeDeleteOperations = 1 | 35 | -- fix Target STRING not available |
| 24 | |||
| 25 | -- fix the Target STRING not available | ||
| 26 | vim.g.clipboard = { | 36 | vim.g.clipboard = { |
| 27 | name = 'xsel_override', | 37 | name = 'xsel_override', |
| 28 | copy = { | 38 | copy = { |
| @@ -38,14 +48,41 @@ return { | |||
| 38 | 48 | ||
| 39 | local map = require("helpers.keys").map | 49 | local map = require("helpers.keys").map |
| 40 | 50 | ||
| 41 | -- yoink paste | 51 | map({ "n", "x" }, 'p', '<Plug>(YankyPutAfter)') |
| 42 | map('n', 'p', '<Plug>(YoinkPaste_p)') | 52 | map({ "n", "x" }, 'P', '<Plug>(YankyPutBefore)') |
| 43 | map('n', 'P', '<Plug>(YoinkPaste_P)') | 53 | |
| 54 | map("n", "<c-n>", "<Plug>(YankyCycleForward)") | ||
| 55 | map("n", "<c-p>", "<Plug>(YankyCycleBackward)") | ||
| 44 | 56 | ||
| 45 | -- iterate over yank list | 57 | local utils = require("yanky.utils") |
| 46 | map('n', '<c-n>', '<Plug>(YoinkPostPasteSwapBack)') | 58 | local mapping = require("yanky.telescope.mapping") |
| 47 | map('n', '<c-p>', '<Plug>(YoinkPostPasteSwapForward)') | 59 | |
| 60 | require("yanky").setup({ | ||
| 61 | ring = { | ||
| 62 | history_length = 100, | ||
| 63 | storage = "shada", | ||
| 64 | sync_with_numbered_registers = true, | ||
| 65 | cancel_event = "update", | ||
| 66 | ignore_registers = { "_" }, | ||
| 67 | }, | ||
| 68 | system_clipboard = { | ||
| 69 | sync_with_ring = true, | ||
| 70 | }, | ||
| 71 | picker = { | ||
| 72 | telescope = { | ||
| 73 | use_default_mappings = false, | ||
| 74 | mappings = { | ||
| 75 | default = mapping.set_register(utils.get_default_register()), | ||
| 76 | }, | ||
| 77 | }, | ||
| 78 | }, | ||
| 79 | highlight = { | ||
| 80 | on_put = true, | ||
| 81 | on_yank = true, | ||
| 82 | timer = 300, | ||
| 83 | }, | ||
| 48 | 84 | ||
| 85 | }) | ||
| 49 | end, | 86 | end, |
| 50 | } | 87 | } |
| 51 | } | 88 | } |
diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua index ecea32b..be6fdd7 100644 --- a/.config/nvim/lua/plugins/telescope.lua +++ b/.config/nvim/lua/plugins/telescope.lua | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | return { | 1 | return { |
| 2 | { | 2 | { |
| 3 | "nvim-telescope/telescope.nvim", | 3 | "nvim-telescope/telescope.nvim", |
| 4 | priority = 500, | ||
| 4 | dependencies = { | 5 | dependencies = { |
| 5 | "nvim-lua/plenary.nvim", | 6 | "nvim-lua/plenary.nvim", |
| 6 | { | 7 | { |
| @@ -8,38 +9,45 @@ return { | |||
| 8 | build = "make", | 9 | build = "make", |
| 9 | cond = vim.fn.executable("make") == 1 | 10 | cond = vim.fn.executable("make") == 1 |
| 10 | }, | 11 | }, |
| 12 | "gbprod/yanky.nvim", | ||
| 11 | }, | 13 | }, |
| 14 | lazy = false, | ||
| 12 | config = function() | 15 | config = function() |
| 13 | require('telescope').setup({ | 16 | require('telescope').setup({ |
| 17 | defaults = { | ||
| 18 | path_display = { "truncate" }, | ||
| 19 | }, | ||
| 14 | extensions = { | 20 | extensions = { |
| 15 | fzf = { | 21 | fzf = { |
| 16 | fuzzy = true, -- false will only do exact matching | 22 | fuzzy = true, -- false will only do exact matching |
| 17 | override_generic_sorter = true, | 23 | override_generic_sorter = true, |
| 18 | override_file_sorter = true, | 24 | override_file_sorter = true, |
| 19 | case_mode = "smart_case", | 25 | case_mode = "smart_case", |
| 20 | } | 26 | }, |
| 21 | } | 27 | }, |
| 22 | }) | 28 | }) |
| 23 | -- Enable telescope fzf native, if installed | 29 | -- Enable telescope fzf native, if installed |
| 24 | pcall(require("telescope").load_extension, "fzf") | 30 | pcall(require("telescope").load_extension, "fzf") |
| 25 | 31 | ||
| 26 | local map = require("helpers.keys").map | 32 | local map = require("helpers.keys").map |
| 27 | 33 | ||
| 28 | map("n", "<leader>fr", require("telescope.builtin").oldfiles, "recently opened") | 34 | map("n", "<leader>fr", require("telescope.builtin").oldfiles, "🔭: recently opened") |
| 29 | map("n", "<leader><space>", require("telescope.builtin").buffers, "open buffers") | 35 | map("n", "<leader><space>", require("telescope.builtin").buffers, "🔭: open buffers") |
| 30 | map("n", "<leader>/", function() | 36 | map("n", "<leader>/", function() |
| 31 | -- You can pass additional configuration to telescope to change theme, layout, etc. | 37 | -- you can pass additional configuration to telescope to change theme, layout, etc. |
| 32 | require("telescope.builtin").current_buffer_fuzzy_find(require("telescope.themes").get_dropdown({ | 38 | require("telescope.builtin").current_buffer_fuzzy_find(require("telescope.themes").get_dropdown({ |
| 33 | winblend = 10, | 39 | winblend = 10, |
| 34 | previewer = false, | 40 | previewer = false, |
| 35 | })) | 41 | })) |
| 36 | end, "search in current buffer") | 42 | end, "🔭: search in current buffer") |
| 37 | 43 | ||
| 38 | map("n", "<leader>sf", require("telescope.builtin").find_files, "files") | 44 | map("n", "<leader>sf", require("telescope.builtin").find_files, "🔭: find files") |
| 39 | map("n", "<leader>sh", require("telescope.builtin").help_tags, "help") | 45 | map("n", "<leader>sh", require("telescope.builtin").help_tags, "🔭: help") |
| 40 | map("n", "<leader>sw", require("telescope.builtin").grep_string, "current word") | 46 | map("n", "<leader>sw", require("telescope.builtin").grep_string, "🔭: current word") |
| 41 | map("n", "<leader>sg", require("telescope.builtin").live_grep, "grep") | 47 | map("n", "<leader>sg", require("telescope.builtin").live_grep, "🔭: live grep") |
| 42 | map("n", "<leader>sd", require("telescope.builtin").diagnostics, "diagnostics") | 48 | map("n", "<leader>sd", require("telescope.builtin").diagnostics, "🔭: diagnostics") |
| 49 | require("telescope").load_extension("yank_history") | ||
| 50 | map("n", "<leader>sp", require("telescope").extensions.yank_history.yank_history, "🔭: yank history") | ||
| 43 | end, | 51 | end, |
| 44 | }, | 52 | }, |
| 45 | } | 53 | } |
