Files
chatgpt.vim/lua/chatgpt_nvim/handler.lua

77 lines
2.1 KiB
Lua

local M = {}
local uv = vim.loop
local config = require('chatgpt_nvim.config')
local function ensure_dir(path)
local st = uv.fs_stat(path)
if st and st.type == 'directory' then
return true
end
local parent = path:match("(.*)/")
if parent and parent ~= "" then
ensure_dir(parent)
end
uv.fs_mkdir(path, 511)
return true
end
function M.get_clipboard_content()
local conf = config.load()
local content = vim.fn.getreg('+')
if conf.debug then
vim.api.nvim_out_write("[chatgpt_nvim:handler] Clipboard content length: " .. #content .. "\n")
end
return content
end
function M.write_file(filepath, content)
local conf = config.load()
local dir = filepath:match("(.*)/")
if dir and dir ~= "" then
ensure_dir(dir)
end
local fd = uv.fs_open(filepath, "w", 438)
if not fd then
vim.api.nvim_err_writeln("Could not open file for writing: " .. filepath)
if conf.debug then
vim.api.nvim_out_write("[chatgpt_nvim:handler] Failed to open file for writing: " .. filepath .. "\n")
end
return
end
uv.fs_write(fd, content, -1)
uv.fs_close(fd)
if conf.debug then
vim.api.nvim_out_write("[chatgpt_nvim:handler] Successfully wrote file: " .. filepath .. "\n")
end
end
function M.delete_file(filepath)
local conf = config.load()
local st = uv.fs_stat(filepath)
if st then
local success, err = uv.fs_unlink(filepath)
if not success then
vim.api.nvim_err_writeln("Could not delete file: " .. filepath .. " - " .. (err or "unknown error"))
if conf.debug then
vim.api.nvim_out_write("[chatgpt_nvim:handler] Failed to delete file: " .. filepath .. "\n")
end
else
if conf.debug then
vim.api.nvim_out_write("[chatgpt_nvim:handler] Deleted file: " .. filepath .. "\n")
end
end
else
vim.api.nvim_err_writeln("File not found, cannot delete: " .. filepath)
if conf.debug then
vim.api.nvim_out_write("[chatgpt_nvim:handler] File not found for deletion: " .. filepath .. "\n")
end
end
end
function M.finish()
print("Finished processing files.")
end
return M