dotfiles/nvim/lua/snippets/init.lua

408 lines
8.4 KiB
Lua
Raw Normal View History

2024-05-02 06:31:31 +01:00
local ls = require('luasnip')
local snip = ls.snippet
local text = ls.text_node
local function lines(str)
local result = {}
for line in str:gmatch '[^\n]+' do
table.insert(result, line)
end
return result
end
local cpp_include = require('snippets.cpp-include')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'include',
namr = 'cpp-include',
dscr = 'Useful Macros',
},{
text(lines(cpp_include))
})
}
})
local segtree_generic = require('snippets.segtree-generic')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'segtree',
namr = 'segtree_generic',
dscr = 'Segment Tree with Lazy Propagation',
},{
text(lines(segtree_generic))
})
}
})
local fhq_treap = require('snippets.fhq-treap')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'treap',
namr = 'fhq_treap',
dscr = 'FHQ Treap',
},{
text(lines(fhq_treap))
})
}
})
local bit = require('snippets.bit')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'bit',
namr = 'bit',
dscr = 'Bit-Indexed Tree',
},{
text(lines(bit))
})
}
})
local quick_union = require('snippets.quick-union')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'quick_union',
namr = 'quick_union',
dscr = 'Union Find',
},{
text(lines(quick_union))
})
}
})
2024-10-05 12:28:38 +01:00
local quick_union_rollback = require('snippets.quick-union-rollback')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'quick_union_rollback',
namr = 'quick_union_rollback',
dscr = 'Union Find (with Rollback)',
},{
text(lines(quick_union_rollback))
})
}
})
2024-05-02 06:31:31 +01:00
local sparse_table = require('snippets.sparse-table')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'sparse_table',
namr = 'sparse_table',
dscr = 'Sparse Table',
},{
text(lines(sparse_table))
})
}
})
2024-09-13 18:38:00 +01:00
local sparse_table_2d = require('snippets.sparse-table-2d')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'sparse_table_2d',
namr = 'sparse_table_2d',
dscr = '2D Sparse Table',
},{
text(lines(sparse_table_2d))
})
}
})
2024-05-02 06:31:31 +01:00
local hash_vec = require('snippets.hash-vec')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'hash_vec',
namr = 'hash_vec',
dscr = 'Hashable Vector',
},{
text(lines(hash_vec))
})
}
})
local exgcd = require('snippets.exgcd')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'exgcd',
namr = 'exgcd',
dscr = 'Extended GCD and Related',
},{
text(lines(exgcd))
})
}
})
local lpf = require('snippets.lpf')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'lpf',
namr = 'lpf',
dscr = 'Least Prime Factor',
},{
text(lines(lpf))
})
}
})
local pollard_rho = require('snippets.pollard-rho')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'pollard_rho',
namr = 'pollard_rho',
dscr = 'Pollard-Rho',
},{
text(lines(pollard_rho))
})
}
})
local tarjan = require('snippets.tarjan')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'tarjan',
namr = 'tarjan',
dscr = 'Tarjan and Related',
},{
text(lines(tarjan))
})
}
})
2024-05-20 07:46:53 +01:00
local edmonds_karp = require('snippets.edmonds-karp')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'edmonds_karp',
namr = 'edmonds_karp',
dscr = 'Max flow using Edmonds-Karp',
},{
text(lines(edmonds_karp))
})
}
})
local dinic = require('snippets.dinic')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'dinic',
namr = 'dinic',
dscr = 'Max flow using Dinic',
},{
text(lines(dinic))
})
}
})
local mcmf = require('snippets.mcmf')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'mcmf',
namr = 'mcmf',
dscr = 'Minimum cost max flow',
},{
text(lines(mcmf))
})
}
})
local bounded_mcmf = require('snippets.bounded-mcmf')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'bounded_mcmf',
namr = 'bounded_mcmf',
dscr = 'Minimum cost (max) flow with bounds',
},{
text(lines(bounded_mcmf))
})
}
})
local bounded_flow = require('snippets.bounded-flow')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'bounded_flow',
namr = 'bounded_flow',
dscr = 'Max/min-flow with bounds',
},{
text(lines(bounded_flow))
})
}
})
2024-05-22 04:50:35 +01:00
local soe = require('snippets.soe')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'soe',
namr = 'soe',
dscr = 'Sieve of Euler',
},{
text(lines(soe))
})
}
})
local get_phi = require('snippets.get-phi')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'get_phi',
namr = 'get_phi',
dscr = 'Sieve of Euler',
},{
text(lines(get_phi))
})
}
})
local hld = require('snippets.hld')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'hld',
namr = 'hld',
dscr = 'Heavy-light decomposition',
},{
text(lines(hld))
})
}
})
2024-05-30 17:05:21 +01:00
local factcount = require('snippets.factcount')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'factcount',
namr = 'factcount',
dscr = 'Get primes and the count of factors of each number',
},{
text(lines(factcount))
})
}
})
2024-06-04 18:04:44 +01:00
local binary_trie = require('snippets.binary-trie')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'binary_trie',
namr = 'binary_trie',
dscr = '01-Trie',
},{
text(lines(binary_trie))
})
}
})
2024-07-29 11:06:36 +01:00
local lca = require('snippets.lca')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'lca',
namr = 'lca',
dscr = 'LCA',
},{
text(lines(lca))
})
}
})
2024-09-02 14:10:02 +01:00
local fft = require('snippets.fft')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'fft',
namr = 'fft',
dscr = 'FFT',
},{
text(lines(fft))
})
}
})
local ntt = require('snippets.ntt')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'ntt',
namr = 'ntt',
dscr = 'NTT',
},{
text(lines(ntt))
})
}
})
2024-09-13 18:38:00 +01:00
local basis = require('snippets.basis')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'basis',
namr = 'basis',
dscr = 'Bit-mask space basis',
},{
text(lines(basis))
})
}
})
2024-10-05 12:28:38 +01:00
local hierholzer = require('snippets.hierholzer')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'hierholzer',
namr = 'hierholzer',
dscr = 'Find Euler path',
},{
text(lines(hierholzer))
})
}
})
2024-11-24 17:24:13 +00:00
local ebcc = require('snippets.ebcc')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'ebcc',
namr = 'ebcc',
dscr = 'eBCC on simple undirected graph',
},{
text(lines(ebcc))
})
}
})
local ebcc_with_mult = require('snippets.ebcc-with-mult')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'ebcc_with_mult',
namr = 'ebcc_with_mult',
dscr = 'eBCC on common undirected graph (with multiple edges)',
},{
text(lines(ebcc_with_mult))
})
}
})
local manacher = require('snippets.manacher')
ls.add_snippets(nil, {
cpp = {
snip({
trig = 'manacher',
namr = 'manacher',
dscr = 'Manacher algorithm for counting palindrome substrings',
},{
text(lines(manacher))
})
}
})