Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions lua/tabi/config.lua
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ local M = {}
---@field storage? TabiStorageConfig
---@field ui? TabiUIConfig
---@field keymaps? TabiKeymapsConfig
---@field show_default_notes? boolean

---@class TabiStorageConfig
---@field backend? 'local'|'global'
Expand Down Expand Up @@ -64,6 +65,7 @@ M.defaults = {
retrace_end = "<Leader>tq",
sessions = "<Leader>tl",
},
show_default_notes = true, -- Always show default session notes in background
}

--- Current configuration
Expand Down
51 changes: 51 additions & 0 deletions lua/tabi/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,18 @@ function M.setup(opts)
-- Setup keymaps
local keymaps = require("tabi.keymaps")
keymaps.setup()

-- Setup default session display
if config.get().show_default_notes then
vim.api.nvim_create_autocmd("VimEnter", {
once = true,
callback = function()
vim.schedule(function()
M._setup_default_session_display()
end)
end,
})
end
end

--- Setup highlight groups
Expand All @@ -36,4 +48,43 @@ function M._setup_highlights()
vim.api.nvim_set_hl(0, "TabiLineNr", { link = "DiagnosticInfo", default = true })
end

--- Setup background display for default session
function M._setup_default_session_display()
local config = require("tabi.config")

-- Early return if feature is disabled
if not config.get().show_default_notes then
return
end

local session_module = require("tabi.session")
local display = require("tabi.ui.display")

-- Load default session
local default_session = session_module.load("default")
if not default_session or #default_session.notes == 0 then
return
end

-- Display default session notes
display.display_all_session_notes(default_session)

-- Setup autocmd to update display
local group = vim.api.nvim_create_augroup("TabiDefaultSession", { clear = true })
vim.api.nvim_create_autocmd({ "BufEnter", "BufWinEnter" }, {
group = group,
callback = function(args)
-- Only show when no named session or retrace is active
if not M.state.current_session and not require("tabi.retrace").is_active() then
display.update_for_session(args.buf, default_session)
end
end,
})
end

--- Clear default session display autocmds
function M._clear_default_session_display()
pcall(vim.api.nvim_del_augroup_by_name, "TabiDefaultSession")
end

return M
19 changes: 19 additions & 0 deletions lua/tabi/retrace.lua
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,16 @@ function M.start(session)
loclist_bufwin = nil,
}

-- Clear default session display when entering retrace mode
local config = require("tabi.config")
if config.get().show_default_notes then
local session_module = require("tabi.session")
local default_session = session_module.load("default")
if default_session then
display.clear_all_session_notes(default_session)
end
end

-- Display all session notes as virtual lines
display.display_all_session_notes(session)

Expand Down Expand Up @@ -75,6 +85,15 @@ function M.stop()
end

state = nil

-- Restore default session display
local config = require("tabi.config")
if config.get().show_default_notes then
vim.schedule(function()
require("tabi")._setup_default_session_display()
end)
end

vim.notify("Tabi: Retrace mode ended", vim.log.levels.INFO)
end

Expand Down
17 changes: 17 additions & 0 deletions plugin/tabi.lua
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,15 @@ function commands.start_session(args)
tabi.state.current_session = session.id
display.setup_autocmds(session)

-- Clear default session display when starting named session
local config = require("tabi.config")
if config.get().show_default_notes then
local default_session = session_module.load("default")
if default_session then
display.clear_all_session_notes(default_session)
end
end

vim.notify('Tabi: Session "' .. session.name .. '" started', vim.log.levels.INFO)
end

Expand All @@ -92,6 +101,14 @@ function commands.end_session()
display.clear_buffer(bufnr)
end
end

-- Restore default session display
local config = require("tabi.config")
if config.get().show_default_notes then
vim.schedule(function()
tabi._setup_default_session_display()
end)
end
end

--- Create or edit a note
Expand Down
19 changes: 19 additions & 0 deletions test/tabi/config_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -123,5 +123,24 @@ describe("tabi.config", function()
assert.is_nil(config.defaults.ui.telescope.theme)
assert.is_table(config.defaults.ui.telescope.layout_config)
end)

it("should have show_default_notes enabled by default", function()
assert.is_true(config.defaults.show_default_notes)
end)
end)

describe("show_default_notes", function()
it("should default to true", function()
local opts = config.get()
assert.is_true(opts.show_default_notes)
end)

it("should be configurable", function()
config.setup({
show_default_notes = false,
})
local opts = config.get()
assert.is_false(opts.show_default_notes)
end)
end)
end)
Loading