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", "", function() local default = { __index = function() return function() end end, } local fttable = { ["markdown"] = markdown, ["arduino"] = arduino, } setmetatable(fttable, default) fttable[vim.bo.filetype]() end)