jujutsu file annotations for neovim (like blame)
4

Configure Feed

Select the types of activity you want to include in your feed.

revision_uri accepts a jjannotate.Revision

Signed-off-by: Ron Shavit <me@ronshavit.com>

Ron Shavit (May 30, 2026, 9:21 PM +0300) f3dca27a 7e94d7ea

+8 -7
+5 -3
lua/jjannotate/annotate_window.lua
··· 68 68 69 69 ---@class jjannotate.AnnotateWindow 70 70 ---@field id integer 71 - -- TODO: bundle path/change_id into a Revision object { path: string, change_id: string } 72 71 ---@field revision jjannotate.Revision 73 72 ---@field annotate { win: integer, buf: integer } 74 73 ---@field original { win: integer, buf: integer, win_opts: table<string, any> } ··· 129 128 vim.bo[w.annotate.buf].buftype = "nofile" 130 129 vim.bo[w.annotate.buf].bufhidden = "wipe" 131 130 vim.bo[w.annotate.buf].swapfile = false 132 - vim.api.nvim_buf_set_name(w.annotate.buf, util.revision_uri("annotate", change_id, path)) 131 + vim.api.nvim_buf_set_name(w.annotate.buf, util.revision_uri("annotate", w.revision)) 133 132 134 133 vim.wo[w.annotate.win].list = false 135 134 vim.wo[w.annotate.win].spell = false ··· 418 417 vim.bo[buf].swapfile = false 419 418 420 419 vim.api.nvim_buf_set_lines(buf, 0, -1, false, vim.split(contents, "\n")) 421 - vim.api.nvim_buf_set_name(buf, util.revision_uri("file", change_id, path)) 420 + vim.api.nvim_buf_set_name( 421 + buf, 422 + util.revision_uri("file", { path = path, change_id = change_id }) 423 + ) 422 424 423 425 vim.bo[buf].modified = false 424 426 vim.bo[buf].modifiable = false
+3 -4
lua/jjannotate/util.lua
··· 6 6 ) 7 7 8 8 ---@param subject string 9 - ---@param path string 10 - ---@param change_id string 9 + ---@param revision jjannotate.Revision 11 10 ---@return string 12 - function M.revision_uri(subject, path, change_id) 13 - return string.format("jjannotate://%s/%s/%s", subject, change_id, path) 11 + function M.revision_uri(subject, revision) 12 + return string.format("jjannotate://%s/%s/%s", subject, revision.change_id, revision.path) 14 13 end 15 14 16 15 return M