feat(complete): add forge shorthand omnifunc completions
Problem: no completion support for `gh:`, `gl:`, or `cb:` tokens, requiring users to type owner/repo from memory. Solution: extend `omnifunc` to detect `gh:`/`gl:`/`cb:` prefixes and complete with `owner/repo#` candidates from existing forge refs in the store.
This commit is contained in:
parent
f4e62b148c
commit
3a994e6284
1 changed files with 21 additions and 0 deletions
|
|
@ -128,6 +128,9 @@ function M.omnifunc(findstart, base)
|
||||||
{ vim.pesc(dk) .. ':([%S]*)$', dk },
|
{ vim.pesc(dk) .. ':([%S]*)$', dk },
|
||||||
{ 'cat:([%S]*)$', 'cat' },
|
{ 'cat:([%S]*)$', 'cat' },
|
||||||
{ vim.pesc(rk) .. ':([%S]*)$', rk },
|
{ vim.pesc(rk) .. ':([%S]*)$', rk },
|
||||||
|
{ 'gh:([%S]*)$', 'gh' },
|
||||||
|
{ 'gl:([%S]*)$', 'gl' },
|
||||||
|
{ 'cb:([%S]*)$', 'cb' },
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, check in ipairs(checks) do
|
for _, check in ipairs(checks) do
|
||||||
|
|
@ -169,6 +172,24 @@ function M.omnifunc(findstart, base)
|
||||||
table.insert(matches, { word = c.word, menu = '[' .. source .. ']', info = c.info })
|
table.insert(matches, { word = c.word, menu = '[' .. source .. ']', info = c.info })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
elseif source == 'gh' or source == 'gl' or source == 'cb' then
|
||||||
|
local s = require('pending.buffer').store()
|
||||||
|
if s then
|
||||||
|
local seen = {}
|
||||||
|
for _, task in ipairs(s:tasks()) do
|
||||||
|
if task._extra and task._extra._forge_ref then
|
||||||
|
local ref = task._extra._forge_ref
|
||||||
|
local key = ref.owner .. '/' .. ref.repo
|
||||||
|
if not seen[key] then
|
||||||
|
seen[key] = true
|
||||||
|
local word = key .. '#'
|
||||||
|
if base == '' or word:sub(1, #base) == base then
|
||||||
|
table.insert(matches, { word = word, menu = '[' .. source .. ']' })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return matches
|
return matches
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue