aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorHsieh Chin Fan <pham@topo.tw>2024-07-02 18:10:23 +0800
committerHsieh Chin Fan <pham@topo.tw>2024-07-02 18:10:23 +0800
commit0bed649a238b300f7b960d52d161cbb0adc717af (patch)
treed62cca138f00ce42784516797a6a666ef9a2a7a6
parent1aa36200150cd8744c9c8c3bede9110cbf382c90 (diff)
Update
-rw-r--r--vim/init/keymaps.vim21
-rw-r--r--vim/lua/configs/telescope.lua2
-rw-r--r--vim/lua/mappings.lua52
-rw-r--r--vim/lua/plugins/init.lua17
4 files changed, 51 insertions, 41 deletions
diff --git a/vim/init/keymaps.vim b/vim/init/keymaps.vim
index d0e2cd0..e4bdfd4 100644
--- a/vim/init/keymaps.vim
+++ b/vim/init/keymaps.vim
@@ -47,6 +47,9 @@ nnoremap <C-p> "0p
47nmap <leader>w :w!<CR> 47nmap <leader>w :w!<CR>
48 48
49" Fast quit with error 49" Fast quit with error
50nmap <leader>q :q<CR>
51
52" Fast quit with error
50nmap cq :cq<CR> 53nmap cq :cq<CR>
51 54
52" Switch wrap 55" Switch wrap
@@ -74,7 +77,6 @@ augroup END
74" Open terminal 77" Open terminal
75" nnoremap <leader>, :terminal ++noclose<CR> 78" nnoremap <leader>, :terminal ++noclose<CR>
76vnoremap <leader>, :terminal<CR> 79vnoremap <leader>, :terminal<CR>
77echo foo
78 80
79" Toggle paste mode on and off 81" Toggle paste mode on and off
80map <leader>pp :setlocal paste!<CR> 82map <leader>pp :setlocal paste!<CR>
@@ -312,20 +314,17 @@ nnoremap <leader>rr :Redir
312"---------------------------------------------------------------------- 314"----------------------------------------------------------------------
313" QUICK_SUBSTITUTE 315" QUICK_SUBSTITUTE
314"---------------------------------------------------------------------- 316"----------------------------------------------------------------------
315function! IsSubstituteTextSelected() 317let g:text_selected = 1
316 execute "norm \<ESC>"
317 " Get position of the first/last char
318 echo col("'<") col("'>") len(getline('.'))+1
319 return col("'<") != 1 || col("'>") != len(getline('.')) + 1
320endfunction
321function! SelectAreaOrDoSubstitute() 318function! SelectAreaOrDoSubstitute()
322 if IsSubstituteTextSelected() 319 if g:text_selected
323 call feedkeys('gv"aygv*NVL') 320 call feedkeys("\"sygv/\<C-R>s\<CR>gn")
321 let g:text_selected = 0
324 else 322 else
325 call feedkeys("gv:s//\<C-R>a/g\<Left>\<Left>") 323 call feedkeys(":s//\<C-R>//g\<Left>\<Left>")
324 let g:text_selected = 1
326 endif 325 endif
327endfunction 326endfunction
328vnoremap <CR> <Cmd>call SelectAreaOrDoSubstitute()<CR> 327vnoremap <TAB> <Cmd>call SelectAreaOrDoSubstitute()<CR>
329 328
330 329
331"---------------------------------------------------------------------- 330"----------------------------------------------------------------------
diff --git a/vim/lua/configs/telescope.lua b/vim/lua/configs/telescope.lua
index 70eddf4..6efa391 100644
--- a/vim/lua/configs/telescope.lua
+++ b/vim/lua/configs/telescope.lua
@@ -4,7 +4,7 @@ return {
4 i = { 4 i = {
5 -- ["<c-j>"] = "move_selection_next", 5 -- ["<c-j>"] = "move_selection_next",
6 -- ["<c-k>"] = "move_selection_previous", 6 -- ["<c-k>"] = "move_selection_previous",
7 ["<C-w>"] = require("telescope.actions.layout").toggle_preview, 7 ["<C-e>"] = require("telescope.actions.layout").toggle_preview,
8 ["<C-u>"] = false, 8 ["<C-u>"] = false,
9 ["<C-o>"] = function(p_bufnr) 9 ["<C-o>"] = function(p_bufnr)
10 require("telescope.actions").send_selected_to_qflist(p_bufnr) 10 require("telescope.actions").send_selected_to_qflist(p_bufnr)
diff --git a/vim/lua/mappings.lua b/vim/lua/mappings.lua
index d3cfda0..788a6ab 100644
--- a/vim/lua/mappings.lua
+++ b/vim/lua/mappings.lua
@@ -46,24 +46,44 @@ vim.keymap.set('n', '<leader>ss', function()
46 local current_filetype = vim.bo.filetype 46 local current_filetype = vim.bo.filetype
47 local cwd = os.getenv("HOME") .. '/snippets' 47 local cwd = os.getenv("HOME") .. '/snippets'
48 require('telescope.builtin').find_files { 48 require('telescope.builtin').find_files {
49 prompt_title = 'Select a snippet for ' .. current_filetype, 49 prompt_title = 'Press <C-T> to edit a snippet',
50 default_text = current_filetype .. "_", 50 default_text = current_filetype .. "_",
51 cwd = cwd, 51 cwd = cwd,
52 attach_mappings = function(prompt_bufnr, map) 52 attach_mappings = function(prompt_bufnr, map)
53 local insert_selected_snippet = function() 53 local get_prompt_or_entry = function()
54 local file = require('telescope.actions.state').get_selected_entry()[1] 54 local file_list = require('telescope.actions.state').get_selected_entry()
55 local snippet_content = vim.fn.readfile(cwd .. "/" .. file) 55 if file_list then
56 require('telescope.actions').close(prompt_bufnr) 56 return file_list[1]
57 vim.api.nvim_put(snippet_content, '', false, true) 57 else
58 local current_picker = require('telescope.actions.state').get_current_picker(prompt_bufnr)
59 return current_picker:_get_prompt()
60 end
58 end 61 end
59 local edit_selected_snippet = function() 62
60 local file = require('telescope.actions.state').get_selected_entry()[1] 63 local edit_snippet = function()
64 local file = get_prompt_or_entry()
61 require('telescope.actions').close(prompt_bufnr) 65 require('telescope.actions').close(prompt_bufnr)
66 local prefix_filetype = string.match(file, "([^_]+)")
62 vim.cmd(":e " .. cwd .. "/" .. file) 67 vim.cmd(":e " .. cwd .. "/" .. file)
68 vim.bo.filetype(prefix_filetype)
69 vim.cmd("set filetype?")
70 end
71
72 local insert_selected_snippet = function()
73 local file = get_prompt_or_entry()
74 local path = cwd .. "/" .. file
75 if vim.fn.filereadable(path) ~= 0 then
76 local snippet_content = vim.fn.readfile(path)
77 require('telescope.actions').close(prompt_bufnr)
78 vim.fn.setreg('"', snippet_content)
79 print('Snippet saved to register')
80 else
81 edit_snippet()
82 end
63 end 83 end
64 84
65 map('i', '<CR>', insert_selected_snippet) 85 map('i', '<CR>', insert_selected_snippet)
66 map('i', '<C-T>', edit_selected_snippet) 86 map('i', '<C-T>', edit_snippet)
67 map('n', '<CR>', insert_selected_snippet) 87 map('n', '<CR>', insert_selected_snippet)
68 88
69 return true 89 return true
@@ -91,16 +111,6 @@ vim.keymap.set('n', '<leader>sd', function()
91 } 111 }
92end, { desc = 'Search Directory' }) 112end, { desc = 'Search Directory' })
93 113
94vim.keymap.set('n', '<leader>sn', function()
95 local current_filetype = vim.bo.filetype
96 vim.ui.input({ prompt = 'Snippet Name: ', default = current_filetype .. "_" }, function(snippet)
97 vim.cmd("cd ~/snippets")
98 vim.cmd("e " .. snippet)
99 vim.cmd("set filetype=" .. current_filetype)
100 vim.cmd("set filetype?")
101 end)
102end, { desc = "Create a new snippet" })
103
104 114
105-- map("n", "<leader>ma", "<cmd>Telescope marks<CR>", { desc = "telescope find marks" }) 115-- map("n", "<leader>ma", "<cmd>Telescope marks<CR>", { desc = "telescope find marks" })
106-- map("n", "<leader>cm", "<cmd>Telescope git_commits<CR>", { desc = "telescope git commits" }) 116-- map("n", "<leader>cm", "<cmd>Telescope git_commits<CR>", { desc = "telescope git commits" })
@@ -172,5 +182,5 @@ vim.cmd('vmap s S')
172-- [ Aerial ] 182-- [ Aerial ]
173vim.keymap.set("n", "{", "<cmd>AerialPrev<CR>", {}) 183vim.keymap.set("n", "{", "<cmd>AerialPrev<CR>", {})
174vim.keymap.set("n", "}", "<cmd>AerialNext<CR>", {}) 184vim.keymap.set("n", "}", "<cmd>AerialNext<CR>", {})
175vim.keymap.set("n", "gN", "<cmd>Telescope aerial<CR>") 185vim.keymap.set("n", "<C-W>a", "<cmd>Telescope aerial<CR>")
176vim.keymap.set("n", "gn", function() require("aerial").toggle({ direction = "left" }) end) 186vim.keymap.set("n", "<C-W><C-A>", function() require("aerial").toggle({ direction = "left" }) end)
diff --git a/vim/lua/plugins/init.lua b/vim/lua/plugins/init.lua
index c74e8d4..0e9911e 100644
--- a/vim/lua/plugins/init.lua
+++ b/vim/lua/plugins/init.lua
@@ -61,14 +61,15 @@ return {
61 changedelete = { text = '~' }, 61 changedelete = { text = '~' },
62 }, 62 },
63 on_attach = function(bufnr) 63 on_attach = function(bufnr)
64 vim.keymap.set('n', '<leader>gp', require('gitsigns').prev_hunk, 64 local gs = require('gitsigns')
65 { buffer = bufnr, desc = '[G]o to [P]revious Hunk' }) 65 vim.keymap.set('n', '<leader>gp', gs.prev_hunk, { buffer = bufnr, desc = '[G]o to [P]revious Hunk' })
66 vim.keymap.set('n', '<leader>gn', require('gitsigns').next_hunk, { buffer = bufnr, desc = '[G]o to [N]ext Hunk' }) 66 vim.keymap.set('n', '<leader>gn', gs.next_hunk, { buffer = bufnr, desc = '[G]o to [N]ext Hunk' })
67 vim.keymap.set('n', '<leader>ph', require('gitsigns').preview_hunk, { buffer = bufnr, desc = '[P]review [H]unk' }) 67 vim.keymap.set('n', '<leader>hp', gs.preview_hunk, { buffer = bufnr, desc = '[P]review [H]unk' })
68 vim.keymap.set('n', '<leader>hd', require('gitsigns').diffthis, { buffer = bufnr, desc = '[h]unk [d]iff' }) 68 vim.keymap.set('n', '<leader>hd', gs.diffthis, { buffer = bufnr, desc = '[h]unk [d]iff' })
69 vim.keymap.set('n', '<leader>hD', function() require('gitsigns').diffthis('~') end, 69 vim.keymap.set('n', '<leader>hD', function() gs.diffthis('~') end, { buffer = bufnr, desc = '[h]unk [d]iff for ~' })
70 { buffer = bufnr, desc = '[h]unk [d]iff for ~' }) 70 -- vim.keymap.set("n", "<leader>gb", gs.blame_line{full=true}, { desc = "Git Blame" })
71 vim.keymap.set('v', 'hr', ":Gitsigns reset_hunk<CR>", { buffer = bufnr, desc = '[h]unk [r]eset' }) 71 vim.keymap.set("n", "<leader>gb", gs.toggle_current_line_blame, { desc = "Blame Line" })
72 vim.keymap.set('v', 'hr', gs.reset_hunk, { buffer = bufnr, desc = '[h]unk [r]eset' })
72 end, 73 end,
73 }, 74 },
74 }, 75 },