This commit is contained in:
2025-06-18 14:38:36 +01:00
commit 71b7bd7373
32 changed files with 1494 additions and 0 deletions

1
lua/snippets/elixir.lua Normal file
View File

@ -0,0 +1 @@
return {}

116
lua/snippets/erlang.lua Normal file
View File

@ -0,0 +1,116 @@
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
local ms = ls.multi_snippet
local k = require('luasnip.nodes.key_indexer').new_key
return {
s({ trig = 'mod', name = 'Module', description = 'insert module with filename populated' }, {
t '-module(',
f(function(args, snip)
local filename = snip.env.TM_FILENAME
local rev = string.reverse(filename)
local dot = string.find(rev, '.', 1, true)
if dot == nil then
return filename
else
return filename:sub(1, -(dot + 1))
end
end, {}),
t ').',
}),
s({ trig = 'fn', name = 'function', description = 'new function' }, {
i(1, 'function_name'),
t '(',
i(2),
t { ') ->', '' },
i(0),
t '.',
}),
s({ trig = 'case', name = 'case statement', description = 'new case statement' }, {
t 'case ',
i(1),
t { ' of', '' },
i(2),
t 'end',
}),
s({ trig = 'HT', name = 'list pattern', description = 'list pattern' }, {
t '[ ',
i(1, 'Head'),
t ' | ',
i(2, 'Tail'),
t ' ]',
}),
s({ trig = 'tup', name = 'tuple pattern', description = 'tuple pattern' }, {
t '{ ',
i(1, 'Value'),
t ' }',
}),
s({ trig = 'DOWN', name = 'Down message', description = 'down message for matching' }, {
t "{'DOWN', Ref, process, Pid, Reason}",
}),
s({ trig = 'mexp', name = 'merge exports', description = 'merge multiple lines of exports into one' }, {
t '-export([',
f(function(_, snip)
local all_exports = ''
local is_first = true
for _, line in ipairs(snip.env.LS_SELECT_RAW) do
local exports = line:gsub('-export%(%[(.*)%]%).', '%1')
if is_first then
all_exports = all_exports .. exports
is_first = false
else
all_exports = all_exports .. ',' .. exports
end
end
return all_exports
end, {}),
t ']).',
}),
s({ trig = 'server', name = 'gen server template', description = 'create gen server outline' }, {
t {
'-behavoir(gen_server).',
'-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]).',
'',
'init(State) ->',
'\t{ok, State}.',
'',
'handle_call(_Event, _From, State) ->',
'\t{noreply, State}.',
'',
'handle_cast(_Event, State) ->',
'\t{noreply, State}.',
'',
'handle_info(_Event, State) ->',
'\t{noreply, State}.',
'',
'terminate(_Reason, _State) ->',
'\tok.',
'',
'code_change(_OldSvn, State, _Extra) ->',
'\t{ok, State}.',
},
}),
}

73
lua/snippets/go.lua Normal file
View File

@ -0,0 +1,73 @@
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
local ms = ls.multi_snippet
local k = require('luasnip.nodes.key_indexer').new_key
return {
s({ trig = 'struct', name = 'struct', description = 'Create a new struct' }, {
t 'type ',
i(1, 'StructName'),
t { ' struct {', '\t' },
i(0),
t { '', '}' },
}),
s({ trig = 'enil', name = 'err is nil', description = 'check if err is nil' }, {
t 'if ',
i(1, 'err'),
t { ' != nil {', '\t' },
i(2),
t { '', '}' },
}),
s({ trig = 'snil', name = 'err is nil (surround)', description = 'check if err is nil (surround)' }, {
t 'if ',
i(1, 'err'),
t { ' != nil {', '' },
f(function(_, snip)
local res, env = {}, snip.env
for _, ele in ipairs(env.LS_SELECT_RAW) do
table.insert(res, ele)
end
return res
end, {}),
t { '', '}' },
}),
s({ trig = 'erris', name = 'errors.Is', description = 'repalce err == with errors.Is' }, {
t 'error.Is(',
f(function(_, snip)
local line = snip.env.LS_SELECT_RAW[1]
return line:gsub(' ?== ?', ', ')
end, {}),
t ')',
}),
s({ trig = 'errnis', name = 'not errors.Is', description = 'repalce err != with !errors.Is' }, {
t '!error.Is(',
f(function(_, snip)
local line = snip.env.LS_SELECT_RAW[1]
return line:gsub(' ?!= ?', ', ')
end, {}),
t ')',
}),
}