summaryrefslogtreecommitdiff
path: root/ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/snippets.lua
diff options
context:
space:
mode:
authorTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-01-24 20:35:27 +0900
committerTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-01-24 20:35:27 +0900
commitc80a54e42b52ce297f0f2f71af23c562832025c7 (patch)
treedcce8bb977a770f473325d48f6f70b21d9818a40 /ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/snippets.lua
init
Diffstat (limited to 'ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/snippets.lua')
-rw-r--r--ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/snippets.lua72
1 files changed, 72 insertions, 0 deletions
diff --git a/ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/snippets.lua b/ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/snippets.lua
new file mode 100644
index 0000000..eac9161
--- /dev/null
+++ b/ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/snippets.lua
@@ -0,0 +1,72 @@
+return {
+ {
+ "L3MON4D3/LuaSnip",
+ version = "v2.*",
+ build = "make install_jsregexp",
+ dependencies = {
+ "rafamadriz/friendly-snippets",
+ config = function()
+ require("luasnip.loaders.from_vscode").lazy_load()
+ end,
+ },
+ config = function()
+ local ls = require("luasnip")
+ ls.setup({
+ link_children = true,
+ link_roots = false,
+ keep_roots = false,
+ update_events = { "TextChanged", "TextChangedI" },
+ })
+ local c = ls.choice_node
+ ls.choice_node = function(pos, choices, opts)
+ if opts then
+ opts.restore_cursor = true
+ else
+ opts = { restore_cursor = true }
+ end
+ return c(pos, choices, opts)
+ end
+
+ require("luasnip.loaders.from_vscode").lazy_load({
+ paths = { '"' .. vim.fn.stdpath("config") .. '/lua/thesiahxyz/snippets"' },
+ })
+
+ vim.cmd.runtime({ args = { "lua/thesiahxyz/snippets/*.lua" }, bang = true }) -- load custom snippets
+
+ vim.keymap.set({ "i", "x" }, "<A-L>", function()
+ if ls.expand_or_jumpable() then
+ ls.expand_or_jump()
+ end
+ end, { silent = true, desc = "Expand snippet or jump to the next snippet node" })
+
+ vim.keymap.set({ "i", "x" }, "<A-H>", function()
+ if ls.jumpable(-1) then
+ ls.jump(-1)
+ end
+ end, { silent = true, desc = "Previous spot in the snippet" })
+
+ vim.keymap.set({ "i", "x" }, "<A-l>", function()
+ if ls.choice_active() then
+ ls.change_choice(1)
+ end
+ end, { silent = true, desc = "Next snippet choice" })
+
+ vim.keymap.set({ "i", "x" }, "<A-h>", function()
+ if ls.choice_active() then
+ ls.change_choice(-1)
+ end
+ end, { silent = true, desc = "Previous snippet choice" })
+ end,
+ keys = {
+ vim.keymap.set("i", "<tab>", function()
+ return require("luasnip").jumpable(1) and "<Plug>luasnip-jump-next" or "<tab>"
+ end, { expr = true, silent = true, desc = "Jump to next snippet" }),
+ vim.keymap.set("s", "<tab>", function()
+ require("luasnip").jump(1)
+ end, { desc = "Jump to next snippet" }),
+ vim.keymap.set({ "i", "s" }, "<s-tab>", function()
+ require("luasnip").jump(-1)
+ end, { desc = "Jump to Previous Snippet" }),
+ },
+ },
+}