From 5dedfb991f271f6248734e54c97db9843821fa73 Mon Sep 17 00:00:00 2001 From: Jonathan Apodaca Date: Mon, 25 Aug 2025 21:23:57 -0600 Subject: [PATCH] (renderer) subtle bugfix For text changes, we want to fire for any tag that the cursor is adjacent to. --- lua/u/logger.lua | 26 +++++++++++++++----------- lua/u/renderer.lua | 2 +- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/lua/u/logger.lua b/lua/u/logger.lua index 07fdf04..f89480a 100644 --- a/lua/u/logger.lua +++ b/lua/u/logger.lua @@ -1,9 +1,9 @@ local M = {} +local LOG_ROOT = vim.fs.joinpath(vim.fn.stdpath 'cache', 'u.log') + --- @params name string -function M.file_for_name(name) - return vim.fs.joinpath(vim.fn.stdpath 'cache', 'u.log', name .. '.log.jsonl') -end +function M.file_for_name(name) return vim.fs.joinpath(LOG_ROOT, name .. '.log.jsonl') end -------------------------------------------------------------------------------- -- Logger class @@ -11,7 +11,6 @@ end --- @class u.Logger --- @field name string ---- @field private fd number local Logger = {} Logger.__index = Logger M.Logger = Logger @@ -20,10 +19,7 @@ M.Logger = Logger function Logger.new(name) local file_path = M.file_for_name(name) vim.fn.mkdir(vim.fs.dirname(file_path), 'p') - local self = setmetatable({ - name = name, - fd = (vim.uv or vim.loop).fs_open(file_path, 'a', tonumber('644', 8)), - }, Logger) + local self = setmetatable({ name = name }, Logger) return self end @@ -32,10 +28,12 @@ end function Logger:write(level, ...) local data = { ... } if #data == 1 then data = data[1] end - (vim.uv or vim.loop).fs_write( - self.fd, - vim.json.encode { ts = os.date(), level = level, data = data } .. '\n' + local f = assert(io.open(M.file_for_name(self.name), 'a'), 'could not open file') + assert( + f:write(vim.json.encode { ts = os.date(), level = level, data = data } .. '\n'), + 'could not write to file' ) + f:close() end function Logger:trace(...) self:write('INFO', ...) end @@ -64,6 +62,12 @@ function M.setup() vim.cmd.terminal('tail -f "' .. log_file_path .. '"') vim.cmd.startinsert() end, { nargs = '*' }) + + vim.api.nvim_create_user_command( + 'Logroot', + function() vim.api.nvim_echo({ { LOG_ROOT } }, false, {}) end, + {} + ) end return M diff --git a/lua/u/renderer.lua b/lua/u/renderer.lua index 2a1d353..aa68168 100644 --- a/lua/u/renderer.lua +++ b/lua/u/renderer.lua @@ -361,7 +361,7 @@ function Renderer:_on_text_changed() -- {{{ --- @type integer, integer local l, c = unpack(vim.api.nvim_win_get_cursor(0)) l = l - 1 -- make it actually 0-based - local pos_infos = self:get_tags_at { l, c } + local pos_infos = self:get_tags_at({ l, c }, 'i') for _, pos_info in ipairs(pos_infos) do local extmark_inf = pos_info.extmark local tag = pos_info.tag