aboutsummaryrefslogtreecommitdiff
path: root/lua/simple-denote/search.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/simple-denote/search.lua')
-rw-r--r--lua/simple-denote/search.lua40
1 files changed, 40 insertions, 0 deletions
diff --git a/lua/simple-denote/search.lua b/lua/simple-denote/search.lua
new file mode 100644
index 0000000..eab25dd
--- /dev/null
+++ b/lua/simple-denote/search.lua
@@ -0,0 +1,40 @@
+local M = {}
+
+function M.search(options)
+ local width = vim.o.columns - 8
+ local height = vim.o.lines - 8
+
+ vim.api.nvim_open_win(
+ vim.api.nvim_create_buf(false, true),
+ true,
+ {
+ relative = 'editor',
+ style = 'minimal',
+ border = 'rounded',
+ noautocmd = true,
+ width = width,
+ height = height,
+ col = math.min((vim.o.columns - width) / 2),
+ row = math.min((vim.o.lines - height) / 2 - 1),
+ }
+ )
+ local file = vim.fn.tempname()
+ -- This feels like the wrong way to call a script from a relative path
+ local lua_file_path = debug.getinfo(1, "S").source:sub(2)
+ local lua_file_dir = vim.fn.fnamemodify(lua_file_path, ":h")
+ local script_path = lua_file_dir .. "/scripts/search.sh"
+ if not script_path then
+ error("Script not found")
+ end
+ vim.api.nvim_command('startinsert')
+ vim.fn.termopen(script_path .. " " .. options.dir .. " > " .. file, {
+ on_exit = function(jobid, data, event)
+ vim.api.nvim_command('bdelete!')
+ local f = io.open(file, 'r')
+ local stdout = f:read('*all')
+ f:close()
+ os.remove(file)
+ vim.api.nvim_command('edit ' .. stdout)
+ end})
+end
+return M