snips.lua 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. local M = {
  2. "L3MON4D3/LuaSnip",
  3. version = "v2.*",
  4. build = "make install_jsregexp",
  5. dependencies = {
  6. "rafamadriz/friendly-snippets",
  7. },
  8. }
  9. M.config = function()
  10. local ls = require("luasnip")
  11. local s = ls.snippet
  12. local t = ls.text_node
  13. local i = ls.insert_node
  14. ls.setup({
  15. history = true, -- Allow jumping back into snippets
  16. update_events = "TextChanged,TextChangedI", -- Update snippets as you type
  17. -- Make sure LuaSnip works well with blink.cmp
  18. region_check_events = "CursorMoved,CursorHold,InsertEnter",
  19. delete_check_events = "TextChanged,InsertLeave",
  20. })
  21. -- Markdown code block snippets with multiple language support
  22. local code_block_langs = {
  23. bash = "bash",
  24. go = "go",
  25. python = "python",
  26. javascript = "javascript",
  27. typescript = "typescript",
  28. rust = "rust",
  29. lua = "lua",
  30. cpp = "cpp",
  31. json = "json",
  32. html = "html",
  33. css = "css",
  34. }
  35. local code_block_snippets = {}
  36. for trigger, lang in pairs(code_block_langs) do
  37. table.insert(
  38. code_block_snippets,
  39. s({ trig = "`" .. trigger, regTrig = false, snippetType = "autosnippet" }, {
  40. t({ "", "```" .. lang }),
  41. t({ "", "" }),
  42. i(1, "# your " .. lang .. " code here"),
  43. t({ "", "```" }),
  44. })
  45. )
  46. end
  47. ls.add_snippets("markdown", code_block_snippets)
  48. require("luasnip.loaders.from_vscode").lazy_load()
  49. require("luasnip.loaders.from_vscode").lazy_load({ paths = vim.fn.stdpath("config") .. "/lua/plugins/snippets/" })
  50. end
  51. return M