Luigit
repositories / dotfiles

dotfiles

bugabingas dorkfiles

owned by admin

neovim/lua/std/dbg/init.lua.bak

Raw
local file = require 'std.dbg.file'
local kinds = require 'std.dbg.kinds'
local format = require 'std.dbg.format'
local user_command = require 'std.user_command'

if vim.g.bugabinga_debug_mode == nil then
	vim.g.bugabinga_debug_mode = false
end

local function is_debug_mode()
	return vim.g.bugabinga_debug_mode
end

local function toggle_debug_mode()
	vim.g.bugabinga_debug_mode = not vim.g.bugabinga_debug_mode
	vim.notify( 'Toggled debug mode to ' .. tostring( is_debug_mode() ) )
end

local function print_debug_kind( kind_name, message, ... )
	if not is_debug_mode() then
		return
	end
	local now = os.time()
	local user_data = { ... }
	local filename, function_name, line_number = file.get_context()
	local event = {
		kind = kind_name,
		date = now,
		format = message,
		data = user_data,
		filename = filename,
		fn = function_name,
		line = line_number,
	}
	file.write( event )
end

local function print_debug( message, ... )
	if not is_debug_mode() then
		return
	end
	print_debug_kind( 'DEBUG', message, ... )
end

local function open_special_debug_buffer()
	vim.notify( 'Debug viewer not yet implemented (Stage 2)', vim.log.levels.WARN )
end

local function open_raw_debug_file()
	vim.cmd.edit( file.get_path() )
end

user_command.Debug 'Toggle global vim config debug mode.' ( toggle_debug_mode )
user_command.DebugOpen 'Open special buffer with debug events' ( open_special_debug_buffer )
user_command.DebugOpenRaw 'Opens the JSON debug file in normal buffer' ( open_raw_debug_file )

return setmetatable(
	{
		kind = print_debug_kind,
		toggle = toggle_debug_mode,
		get = is_debug_mode,
	},
	{
		__call = print_debug,
		__newindex = function ( ... )
			error( 'Assignments are not supported for std.dbg.\n' .. vim.inspect( ... ), 2 )
		end,
	}
)