neovim configuration using rocks.nvim plugin manager
1require("luasnip.session.snippet_collection").clear_snippets("go")
2
3local ls = require("luasnip")
4local s = ls.snippet
5local sn = ls.snippet_node
6local i = ls.insert_node
7local t = ls.text_node
8local c = ls.choice_node
9local fmt = require("luasnip.extras.fmt").fmt
10
11-- stylua: ignore
12ls.add_snippets("go", {
13 s("ife", {
14 t{"if err != nil {", ""},
15 t"\t", c(1, {
16 sn(nil, { t"return", i(1), t" err" }),
17 t"log.Fatalln(err)",
18 t"panic(err)",
19 }),
20 t{"", "}"}, i(0),
21 }),
22 s("fn", fmt([[
23 func {}({}){} {{
24 {}{}
25 }}
26 ]], { i(1), i(2), i(3), t("\t"), i(4) })),
27 s("cl", fmt([[
28 func({}){} {{
29 {}{}
30 }}
31 ]], { i(1), i(2), t("\t"), i(3) })),
32 s("me", fmt([[
33 func ({}) {}({}){} {{
34 {}{}
35 }}
36 ]], { i(1), i(2), i(3), i(4), t("\t"), i(5) })),
37
38 s("midfn", fmt([[
39 func {}(next http.Handler) http.Handler {{
40 {}return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {{
41 {}{}
42 {}}})
43 }}
44 ]], { i(1, "sampleMiddleware"), t("\t"), t("\t\t"), i(2), t("\t") })),
45})