72 lines
1.9 KiB
Lua
72 lines
1.9 KiB
Lua
local function markdown()
|
|
local pandoc_process = vim.system({
|
|
"pandoc",
|
|
vim.fn.expand("%:p"),
|
|
"-o",
|
|
vim.fn.expand("%:p:r") .. ".pdf",
|
|
"--verbose",
|
|
})
|
|
local pandoc_result = pandoc_process:wait()
|
|
vim.notify(pandoc_result.stdout, vim.log.levels.INFO);
|
|
vim.notify(pandoc_result.stderr, vim.log.levels.ERROR);
|
|
end
|
|
|
|
local function arduino()
|
|
local arduino_process = vim.system({
|
|
"arduino-cli",
|
|
"board",
|
|
"listall",
|
|
"--json"
|
|
})
|
|
local boards_json = arduino_process:wait()
|
|
|
|
local jq_process = vim.system({
|
|
"jq",
|
|
"[.boards.[] | {(.name): .fqbn}] | add",
|
|
}, { stdin = boards_json.stdout })
|
|
local boards_jq = jq_process:wait().stdout or {}
|
|
local boards_table = vim.json.decode(boards_jq)
|
|
|
|
local function table_keys(t)
|
|
local keys = {}
|
|
for k in pairs(t) do keys[#keys + 1] = k end
|
|
return keys
|
|
end
|
|
|
|
local keys = table_keys(boards_table)
|
|
table.sort(keys)
|
|
require("fzf-lua").fzf_exec(keys, {
|
|
actions = {
|
|
['default'] = function(selected, opts)
|
|
local process = vim.system({
|
|
"arduino-cli",
|
|
"compile",
|
|
"--fqbn",
|
|
boards_table[selected[1]],
|
|
vim.fn.expand("%:p:h")
|
|
})
|
|
local result = process:wait()
|
|
|
|
vim.notify(result.stdout, vim.log.levels.INFO)
|
|
vim.notify(result.stderr, vim.log.levels.ERROR)
|
|
end,
|
|
}
|
|
})
|
|
end
|
|
|
|
vim.keymap.set("n", "<F5>", function()
|
|
local default = {
|
|
__index = function()
|
|
return function() end
|
|
end,
|
|
}
|
|
local fttable = {
|
|
["markdown"] = markdown,
|
|
["arduino"] = arduino,
|
|
}
|
|
setmetatable(fttable, default)
|
|
|
|
fttable[vim.bo.filetype]()
|
|
end)
|
|
|