1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
local ls = require("luasnip")
local s = ls.snippet
local sn = ls.snippet_node
local isn = ls.indent_snippet_node
local t = ls.text_node
local i = ls.insert_node
local f = ls.function_node
local c = ls.choice_node
local d = ls.dynamic_node
local r = ls.restore_node
local events = require("luasnip.util.events")
local ai = require("luasnip.nodes.absolute_indexer")
local extras = require("luasnip.extras")
local l = extras.lambda
local rep = extras.rep
local p = extras.partial
local m = extras.match
local n = extras.nonempty
local dl = extras.dynamic_lambda
local fmt = require("luasnip.extras.fmt").fmt
local fmta = require("luasnip.extras.fmt").fmta
local conds = require("luasnip.extras.expand_conditions")
local postfix = require("luasnip.extras.postfix").postfix
local types = require("luasnip.util.types")
local parse = require("luasnip.util.parser").parse_snippet
-- keymaps
vim.keymap.set({"i", "s"}, "<C-k>", "<Plug>luasnip-expand-or-jump", { noremap = true })
vim.keymap.set({"i", "s"}, "<C-j>", "<Plug>luasnip-jump-prev", { noremap = true })
vim.keymap.set({"i", "s"}, "<C-l>", "<Plug>luasnip-next-choice", { noremap = true })
vim.keymap.set("n", "<leader><leader>s", function()
ls.cleanup()
vim.cmd("source ~/.config/nvim/after/plugin/luasnip.lua")
print("snippets reloaded.")
end, { noremap = true })
local same = function(index)
return f(function (arg)
return arg[1]
end, { index })
end
ls.add_snippets("lua", {
-- print
s("pt", {
t("print(\""),
i(1, "Hello World!"),
t("\")"), i(0)
}),
-- local function
parse("lf", "local $1 = function($2)\n\t$3\nend$0", {}),
-- require
s("req", fmt("local {} = require('{}')", { i(1), rep(1) })),
parse("rq", "require('$1')$0", {}),
-- function
s("fn", fmt(
[[
function {}({})
{}
end
]],
{ i(1), i(2), i(3) }
), i(0)),
})
ls.add_snippets("html", {
s("<!DOCTYPE>", {
t({"<!DOCTYPE html>", "<html lang=\"en\">", "\t<head>", "\t\t<title>"}),
i(1, "title"),
t("</title>"), i(2),
t({"", "\t</head>", "\t<body>", "\t\t<h1>"}),
i(3, "Header"),
t("</h1>"), i(4),
t({"", "\t</body>", "</html>"}), i(0)
}),
})
ls.add_snippets("java", {
-- function
s("fn", fmt(
[[
{}static {} {} ({}) {{
{}
}}
]],
{
c(1, {t "", t "public ", t "private "}),
i(2, "type"),
i(3, "f"),
i(4), i(0)
})),
-- setter function
s("sfn", fmt(
[[
{}void set_{} ({}) {{
this.{} = {};
}}
]],
{ c(1, {t "", t "public ", t "private "}),
i(2), rep(2), rep(2), rep(2) })),
-- getter function
s("gfn", fmt(
[[
{}void get_{} () {{
return this.{};
}}
]],
{ c(1, {t "", t "public ", t "private "}), i(2), rep(2) })),
s("psv", fmt(
[[
public class Main
{{
public static void main (String[] args)
{{
{}
}}
}}
]],
{ i(0) })),
s("pt", fmt(
[[
System.out.{}("{}");
{}
]],
{ c(1, {t "print", t "println", t "printf"}), i(2), i(0) })),
})
|