aboutsummaryrefslogtreecommitdiffhomepage
path: root/vim/lua/mappings.lua
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 /vim/lua/mappings.lua
parent1aa36200150cd8744c9c8c3bede9110cbf382c90 (diff)
Update
Diffstat (limited to 'vim/lua/mappings.lua')
-rw-r--r--vim/lua/mappings.lua52
1 files changed, 31 insertions, 21 deletions
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)