From 0bed649a238b300f7b960d52d161cbb0adc717af Mon Sep 17 00:00:00 2001 From: Hsieh Chin Fan Date: Tue, 2 Jul 2024 18:10:23 +0800 Subject: Update --- vim/lua/configs/telescope.lua | 2 +- vim/lua/mappings.lua | 52 ++++++++++++++++++++++++++----------------- vim/lua/plugins/init.lua | 17 +++++++------- 3 files changed, 41 insertions(+), 30 deletions(-) (limited to 'vim/lua') 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 { i = { -- [""] = "move_selection_next", -- [""] = "move_selection_previous", - [""] = require("telescope.actions.layout").toggle_preview, + [""] = require("telescope.actions.layout").toggle_preview, [""] = false, [""] = function(p_bufnr) 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', 'ss', function() local current_filetype = vim.bo.filetype local cwd = os.getenv("HOME") .. '/snippets' require('telescope.builtin').find_files { - prompt_title = 'Select a snippet for ' .. current_filetype, + prompt_title = 'Press to edit a snippet', default_text = current_filetype .. "_", cwd = cwd, attach_mappings = function(prompt_bufnr, map) - local insert_selected_snippet = function() - local file = require('telescope.actions.state').get_selected_entry()[1] - local snippet_content = vim.fn.readfile(cwd .. "/" .. file) - require('telescope.actions').close(prompt_bufnr) - vim.api.nvim_put(snippet_content, '', false, true) + local get_prompt_or_entry = function() + local file_list = require('telescope.actions.state').get_selected_entry() + if file_list then + return file_list[1] + else + local current_picker = require('telescope.actions.state').get_current_picker(prompt_bufnr) + return current_picker:_get_prompt() + end end - local edit_selected_snippet = function() - local file = require('telescope.actions.state').get_selected_entry()[1] + + local edit_snippet = function() + local file = get_prompt_or_entry() require('telescope.actions').close(prompt_bufnr) + local prefix_filetype = string.match(file, "([^_]+)") vim.cmd(":e " .. cwd .. "/" .. file) + vim.bo.filetype(prefix_filetype) + vim.cmd("set filetype?") + end + + local insert_selected_snippet = function() + local file = get_prompt_or_entry() + local path = cwd .. "/" .. file + if vim.fn.filereadable(path) ~= 0 then + local snippet_content = vim.fn.readfile(path) + require('telescope.actions').close(prompt_bufnr) + vim.fn.setreg('"', snippet_content) + print('Snippet saved to register') + else + edit_snippet() + end end map('i', '', insert_selected_snippet) - map('i', '', edit_selected_snippet) + map('i', '', edit_snippet) map('n', '', insert_selected_snippet) return true @@ -91,16 +111,6 @@ vim.keymap.set('n', 'sd', function() } end, { desc = 'Search Directory' }) -vim.keymap.set('n', 'sn', function() - local current_filetype = vim.bo.filetype - vim.ui.input({ prompt = 'Snippet Name: ', default = current_filetype .. "_" }, function(snippet) - vim.cmd("cd ~/snippets") - vim.cmd("e " .. snippet) - vim.cmd("set filetype=" .. current_filetype) - vim.cmd("set filetype?") - end) -end, { desc = "Create a new snippet" }) - -- map("n", "ma", "Telescope marks", { desc = "telescope find marks" }) -- map("n", "cm", "Telescope git_commits", { desc = "telescope git commits" }) @@ -172,5 +182,5 @@ vim.cmd('vmap s S') -- [ Aerial ] vim.keymap.set("n", "{", "AerialPrev", {}) vim.keymap.set("n", "}", "AerialNext", {}) -vim.keymap.set("n", "gN", "Telescope aerial") -vim.keymap.set("n", "gn", function() require("aerial").toggle({ direction = "left" }) end) +vim.keymap.set("n", "a", "Telescope aerial") +vim.keymap.set("n", "", 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 { changedelete = { text = '~' }, }, on_attach = function(bufnr) - vim.keymap.set('n', 'gp', require('gitsigns').prev_hunk, - { buffer = bufnr, desc = '[G]o to [P]revious Hunk' }) - vim.keymap.set('n', 'gn', require('gitsigns').next_hunk, { buffer = bufnr, desc = '[G]o to [N]ext Hunk' }) - vim.keymap.set('n', 'ph', require('gitsigns').preview_hunk, { buffer = bufnr, desc = '[P]review [H]unk' }) - vim.keymap.set('n', 'hd', require('gitsigns').diffthis, { buffer = bufnr, desc = '[h]unk [d]iff' }) - vim.keymap.set('n', 'hD', function() require('gitsigns').diffthis('~') end, - { buffer = bufnr, desc = '[h]unk [d]iff for ~' }) - vim.keymap.set('v', 'hr', ":Gitsigns reset_hunk", { buffer = bufnr, desc = '[h]unk [r]eset' }) + local gs = require('gitsigns') + vim.keymap.set('n', 'gp', gs.prev_hunk, { buffer = bufnr, desc = '[G]o to [P]revious Hunk' }) + vim.keymap.set('n', 'gn', gs.next_hunk, { buffer = bufnr, desc = '[G]o to [N]ext Hunk' }) + vim.keymap.set('n', 'hp', gs.preview_hunk, { buffer = bufnr, desc = '[P]review [H]unk' }) + vim.keymap.set('n', 'hd', gs.diffthis, { buffer = bufnr, desc = '[h]unk [d]iff' }) + vim.keymap.set('n', 'hD', function() gs.diffthis('~') end, { buffer = bufnr, desc = '[h]unk [d]iff for ~' }) + -- vim.keymap.set("n", "gb", gs.blame_line{full=true}, { desc = "Git Blame" }) + vim.keymap.set("n", "gb", gs.toggle_current_line_blame, { desc = "Blame Line" }) + vim.keymap.set('v', 'hr', gs.reset_hunk, { buffer = bufnr, desc = '[h]unk [r]eset' }) end, }, }, -- cgit v1.2.3-70-g09d2