summaryrefslogtreecommitdiff
path: root/.config/micro/plug/fzf/main.lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/micro/plug/fzf/main.lua')
-rw-r--r--.config/micro/plug/fzf/main.lua38
1 files changed, 38 insertions, 0 deletions
diff --git a/.config/micro/plug/fzf/main.lua b/.config/micro/plug/fzf/main.lua
new file mode 100644
index 0000000..fbdcd97
--- /dev/null
+++ b/.config/micro/plug/fzf/main.lua
@@ -0,0 +1,38 @@
+VERSION = "1.1.1"
+
+local micro = import("micro")
+local shell = import("micro/shell")
+local config = import("micro/config")
+local buffer = import("micro/buffer")
+
+function fzf(bp)
+ if shell.TermEmuSupported then
+ local err = shell.RunTermEmulator(bp, "fzf", false, true, fzfOutput, {bp})
+ if err ~= nil then
+ micro.InfoBar():Error(err)
+ end
+ else
+ local output, err = shell.RunInteractiveShell("fzf", false, true)
+ if err ~= nil then
+ micro.InfoBar():Error(err)
+ else
+ fzfOutput(output, {bp})
+ end
+ end
+end
+
+function fzfOutput(output, args)
+ local bp = args[1]
+ local strings = import("strings")
+ output = strings.TrimSpace(output)
+ if output ~= "" then
+ local buf, err = buffer.NewBufferFromFile(output)
+ if err == nil then
+ bp:OpenBuffer(buf)
+ end
+ end
+end
+
+function init()
+ config.MakeCommand("fzf", fzf, config.NoComplete)
+end