snap
snap copied to clipboard
Tags
Adding tags support for GLOBAL and TTAGS.
ttags - https://github.com/tex/ttags global - https://www.gnu.org/software/global
Example use:
pcall(require, 'luarocks.loader')
local snap = require'snap'
snap.register.map({"n"}, {"<Leader>ft"}, function ()
snap.run {
producer = snap.get'consumer.positions'(
snap.get'consumer.score'(
snap.get'producer.tags.symbol')),
prompt = "tag completion>",
steps = {{
consumer = snap.get'consumer.fzy',
config = {prompt = "tag fzy>", initial_filter = function (filter) return string.gsub(filter, "%%", "") end}
}},
select = function (result)
snap.run {
producer = snap.get'consumer.score'(snap.get'producer.tags.def'),
initial_filter = tostring(result),
prompt = "tag def>",
steps = {{
consumer = snap.get'consumer.fzy',
config = {prompt = "tag fzy>"}
}},
select = snap.get'select.grep'.select,
multiselect = snap.get'select.grep'.multiselect,
views = {snap.get'preview.grep'},
} end,
}
end)
snap.register.map({"n"}, {"<Leader>fd"}, function ()
snap.run {
producer = snap.get'consumer.score'(
snap.get'producer.tags.def'),
prompt = "tag def>",
initial_filter = snap.config.get_initial_filter({filter_with = "cword"}),
steps = {{
consumer = snap.get'consumer.fzy',
config = {prompt = "tag fzy>"}
}},
select = snap.get'select.grep'.select,
multiselect = snap.get'select.grep'.multiselect,
views = {snap.get'preview.grep'},
}
end)
snap.register.map({"n"}, {"<Leader>fr"}, function ()
snap.run {
producer = snap.get'consumer.score'(
snap.get'producer.tags.ref'),
prompt = "tag ref>",
initial_filter = snap.config.get_initial_filter({filter_with = "cword"}),
steps = {{
consumer = snap.get'consumer.fzy',
config = {prompt = "tag fzy>"}
}},
select = snap.get'select.grep'.select,
multiselect = snap.get'select.grep'.multiselect,
views = {snap.get'preview.grep'},
}
end)
PS: I really love how Snap is easy understandable, extendable, performant, usable and written in lisp.
@camspiers