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/mappings.lua | 52 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 21 deletions(-) (limited to 'vim/lua/mappings.lua') 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) -- cgit v1.2.3-70-g09d2