starter/lua/config/autocmds.lua

66 lines
2.1 KiB
Lua

-- Autocmds are automatically loaded on the VeryLazy event
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
-- Add any additional autocmds here
-- autocmds.lua
local function create_dev_output()
local group = vim.api.nvim_create_augroup("DevOutput", { clear = true })
-- Create the command
vim.api.nvim_create_user_command("DevOutput", function()
local buf = vim.api.nvim_create_buf(false, true)
vim.api.nvim_command("split")
vim.api.nvim_win_set_buf(0, buf)
vim.api.nvim_command("wincmd J")
vim.api.nvim_buf_set_name(buf, "[Development Output]")
vim.api.nvim_buf_set_option(buf, "buftype", "nofile")
vim.api.nvim_buf_set_option(buf, "swapfile", false)
vim.api.nvim_buf_set_option(buf, "bufhidden", "hide")
vim.api.nvim_buf_set_option(buf, "filetype", "DevOutput")
vim.api.nvim_win_set_height(0, 10)
return buf
end, {})
-- Make the dev_print function globally available
_G.dev_print = function(msg)
local bufnr = nil
for _, buf in ipairs(vim.api.nvim_list_bufs()) do
if vim.api.nvim_buf_get_name(buf):match("Development Output") then
bufnr = buf
break
end
end
if not bufnr then
bufnr = vim.api.nvim_exec2("DevOutput", { output = true }).output
end
local timestamp = os.date("%H:%M:%S")
local formatted_msg = string.format("[%s] %s", timestamp, msg)
vim.api.nvim_buf_set_lines(bufnr, -1, -1, false, { formatted_msg })
for _, win in ipairs(vim.api.nvim_list_wins()) do
if vim.api.nvim_win_get_buf(win) == bufnr then
vim.api.nvim_win_set_cursor(
win,
{ vim.api.nvim_buf_line_count(bufnr), 0 }
)
break
end
end
end
-- Optional: Add any autocmds related to the output window
vim.api.nvim_create_autocmd("FileType", {
group = group,
pattern = "DevOutput",
callback = function()
-- Set any buffer-local options for DevOutput buffers
vim.opt_local.wrap = true
vim.opt_local.number = true
end,
})
end
-- Initialize the dev output setup
create_dev_output()