From 15bd6c9a4b0f07ee3f4b836b348be17b4ed7f80a Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Thu, 20 Apr 2023 17:22:07 +0300 Subject: [PATCH] Created autorun on save script --- lua/user/autosave.lua | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 lua/user/autosave.lua diff --git a/lua/user/autosave.lua b/lua/user/autosave.lua new file mode 100644 index 0000000..82ee767 --- /dev/null +++ b/lua/user/autosave.lua @@ -0,0 +1,33 @@ +local attach_on_buffer = function(output_bufnr, pattern, command) + vim.api.nvim_create_autocmd("BufWritePost", { + group = vim.api.nvim_create_augroup("autosave", { clear = true }), + pattern = pattern, + callback = function() + local append_data = function(_, data) + if data then + vim.api.nvim_buf_set_lines(output_bufnr, -1, -1, false, data) + end + end + + local file_path = vim.api.nvim_buf_get_name(vim.api.nvim_get_current_buf()) + vim.api.nvim_buf_set_lines(output_bufnr, 0, -1, false, { file_path }) + vim.fn.jobstart(command, { + stdout_buffered = true, + on_stdout = append_data, + on_stderr = append_data, + }) + end, + }) +end + +vim.api.nvim_create_user_command("AutoRun", function() + print("AutoRun starts now...") + local bufnr = vim.api.nvim_get_current_buf() + local command = vim.fn.input("Command: ") + local pattern = vim.split(vim.fn.input("Pattern: "), " ") + attach_on_buffer(tonumber(bufnr), pattern, command) +end, {}) + +vim.api.nvim_create_user_command("AutoStop", function() + vim.api.nvim_create_augroup("autosave", { clear = true }) +end, {})