126 lines
2.4 KiB
Lua
126 lines
2.4 KiB
Lua
local ls = require("luasnip")
|
|
local s = ls.snippet
|
|
local t = ls.text_node
|
|
local i = ls.insert_node
|
|
local fmt = require("luasnip.extras.fmt").fmt
|
|
|
|
-- Configure snippet options
|
|
local snippet_opts = {
|
|
condition = function()
|
|
return not ls.in_snippet()
|
|
end,
|
|
show_condition = function()
|
|
return not ls.in_snippet()
|
|
end
|
|
}
|
|
|
|
return {
|
|
-- Complete main setup
|
|
s("main", fmt([[
|
|
package main
|
|
|
|
import "fmt"
|
|
|
|
func main() {{
|
|
{}
|
|
}}
|
|
]], { i(1, 'fmt.Println("Hello, World!")') }), snippet_opts),
|
|
|
|
-- Package declaration
|
|
s("pkg", fmt([[
|
|
package {}
|
|
]], { i(1, "main") }), snippet_opts),
|
|
|
|
-- Function
|
|
s("func", fmt([[
|
|
func {}({}) {{
|
|
{}
|
|
}}
|
|
]], { i(1, "name"), i(2), i(3) }), snippet_opts),
|
|
|
|
-- Function with return
|
|
s("funcr", fmt([[
|
|
func {}() {} {{
|
|
{}
|
|
}}
|
|
]], { i(1, "name"), i(2, "string"), i(3, 'return ""') }), snippet_opts),
|
|
|
|
-- If error
|
|
s("iferr", fmt([[
|
|
if err != nil {{
|
|
{}
|
|
}}
|
|
]], { i(1, "return err") }), snippet_opts),
|
|
|
|
-- For loop
|
|
s("for", fmt([[
|
|
for {} {{
|
|
{}
|
|
}}
|
|
]], { i(1, "i := 0; i < 10; i++"), i(2) }), snippet_opts),
|
|
|
|
-- Printf
|
|
s("pf", fmt([[
|
|
fmt.Printf("{}\n", {})
|
|
]], { i(1, "%v"), i(2, "value") }), snippet_opts),
|
|
|
|
-- Println
|
|
s("pl", fmt([[
|
|
fmt.Println({})
|
|
]], { i(1, '"Hello"') }), snippet_opts),
|
|
|
|
-- Variable declaration
|
|
s("var", fmt([[
|
|
var {} {}
|
|
]], { i(1, "name"), i(2, "string") }), snippet_opts),
|
|
|
|
-- Short variable declaration
|
|
s(":=", fmt([[
|
|
{} := {}
|
|
]], { i(1, "name"), i(2, "value") }), snippet_opts),
|
|
|
|
-- Struct
|
|
s("struct", fmt([[
|
|
type {} struct {{
|
|
{}
|
|
}}
|
|
]], { i(1, "Name"), i(2, "Field string") }), snippet_opts),
|
|
|
|
-- Interface
|
|
s("interface", fmt([[
|
|
type {} interface {{
|
|
{}
|
|
}}
|
|
]], { i(1, "Name"), i(2, "Method()") }), snippet_opts),
|
|
|
|
-- Test function
|
|
s("test", fmt([[
|
|
func Test{}(t *testing.T) {{
|
|
{}
|
|
}}
|
|
]], { i(1, "Name"), i(2) }), snippet_opts),
|
|
|
|
-- Method
|
|
s("method", fmt([[
|
|
func ({} *{}) {}() {{
|
|
{}
|
|
}}
|
|
]], { i(1, "r"), i(2, "Receiver"), i(3, "Method"), i(4) }), snippet_opts),
|
|
|
|
-- Goroutine
|
|
s("go", fmt([[
|
|
go func() {{
|
|
{}
|
|
}}()
|
|
]], { i(1) }), snippet_opts),
|
|
|
|
-- Channel
|
|
s("chan", fmt([[
|
|
{} := make(chan {})
|
|
]], { i(1, "ch"), i(2, "string") }), snippet_opts),
|
|
|
|
-- Defer
|
|
s("defer", fmt([[
|
|
defer {}
|
|
]], { i(1, "cleanup()") }), snippet_opts),
|
|
} |