summaryrefslogtreecommitdiffstats
path: root/.config/nvim/lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua')
-rw-r--r--.config/nvim/lua/plugins/cmp.lua56
-rw-r--r--.config/nvim/lua/plugins/cutlass.lua75
-rw-r--r--.config/nvim/lua/plugins/telescope.lua32
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
2return { 1return {
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 @@
1return { 1return {
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}