First commit
This commit is contained in:
commit
847c9e64c0
51 changed files with 4058 additions and 0 deletions
63
.config/hilbish/carapace.lua
Executable file
63
.config/hilbish/carapace.lua
Executable file
|
@ -0,0 +1,63 @@
|
|||
local json = require "json"
|
||||
local lunacolors = require "lunacolors"
|
||||
|
||||
local M = {}
|
||||
|
||||
M.fmt = function(str, style)
|
||||
local styles = style:split(" ")
|
||||
local formatStr = ""
|
||||
for _, v in pairs(styles) do
|
||||
formatStr = formatStr .. "{" .. v .. "}"
|
||||
end
|
||||
formatStr = formatStr .. str
|
||||
return lunacolors.format(formatStr)
|
||||
end
|
||||
|
||||
M.complete_func = function(query, ctx, fields)
|
||||
local carapace_arg = ctx
|
||||
|
||||
-- If the ctx ends in a space, we need to append a "" to the carapace command
|
||||
if ctx:sub(-1, -1):match("%s") ~= nil then
|
||||
carapace_arg = carapace_arg .. '""'
|
||||
end
|
||||
|
||||
-- Run carapace
|
||||
local carapace_cmd = "carapace " .. fields[1] .. " export " .. carapace_arg
|
||||
local res = io.popen(carapace_cmd)
|
||||
local out = res:read("*all")
|
||||
|
||||
-- Extract completion items
|
||||
local out_table = json.decode(out)
|
||||
local values = {}
|
||||
|
||||
if out_table["values"] ~= nil then
|
||||
for _, v in pairs(out_table["values"]) do
|
||||
-- Some completion items are styled; some aren't.
|
||||
if v["style"] ~= nil then
|
||||
if v["description"] ~= nil then
|
||||
values[v["value"]] = { M.fmt(v["description"], v["style"]) }
|
||||
else
|
||||
table.insert(values, v["value"])
|
||||
end
|
||||
else
|
||||
if v["description"] ~= nil then
|
||||
values[v["value"]] = { v["description"] }
|
||||
else
|
||||
table.insert(values, v["value"])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Construct completion items table
|
||||
local comp = {
|
||||
{
|
||||
items = values,
|
||||
type = "list"
|
||||
}
|
||||
}
|
||||
|
||||
return comp, query
|
||||
end
|
||||
|
||||
return M
|
Loading…
Add table
Add a link
Reference in a new issue