This repository has been archived on 2023-10-17. You can view files and clone it, but cannot push or open issues or pull requests.
dotfiles/.config/vis/plugins/complete-word.lua

23 lines
805 B
Lua

-- complete word at primary selection location using vis-complete(1)
vis:map(vis.modes.INSERT, "<C-n>", function()
local win = vis.win
local file = win.file
local pos = win.selection.pos
if not pos then return end
local range = file:text_object_word(pos > 0 and pos-1 or pos);
if not range then return end
if range.finish > pos then range.finish = pos end
if range.start == range.finish then return end
local prefix = file:content(range)
if not prefix then return end
local cmd = string.format("vis-complete --word '%s'", prefix:gsub("'", "'\\''"))
local status, out, err = vis:pipe(file, { start = 0, finish = file.size }, cmd)
if status ~= 0 or not out then
if err then vis:info(err) end
return
end
file:insert(pos, out)
win.selection.pos = pos + #out
end, "Complete word in file")