Fix: Toggle modified notes (#188)

* Fix: Toggle discussion nodes correctly
* Feat: Show Help keymap in discussion tree winbar
This commit is contained in:
Jakub F. Bortlík
2024-02-24 19:06:16 +01:00
committed by GitHub
parent faf2a25dc4
commit f6a5238d4b
4 changed files with 43 additions and 10 deletions

View File

@@ -84,6 +84,7 @@
---@field resolved_discussions number
---@field resolvable_notes number
---@field resolved_notes number
---@field help_keymap string
---
---@class SignTable
---@field name string

View File

@@ -401,7 +401,7 @@ end
---This function (settings.discussion_tree.toggle_nodes) expands/collapses all nodes and their children according to the opts.
---@param tree NuiTree
---@param opts ToggleNodesOptions
M.toggle_nodes = function(tree, opts)
M.toggle_nodes = function(tree, unlinked, opts)
local current_node = tree:get_node()
if current_node == nil then
return
@@ -409,25 +409,41 @@ M.toggle_nodes = function(tree, opts)
local root_node = M.get_root_node(tree, current_node)
for _, node in ipairs(tree:get_nodes()) do
if opts.toggle_resolved then
if state.resolved_expanded then
if
(unlinked and state.unlinked_discussion_tree.resolved_expanded)
or (not unlinked and state.discussion_tree.resolved_expanded)
then
M.collapse_recursively(tree, node, root_node, opts.keep_current_open, true)
else
M.expand_recursively(tree, node, true)
end
end
if opts.toggle_unresolved then
if state.unresolved_expanded then
if
(unlinked and state.unlinked_discussion_tree.unresolved_expanded)
or (not unlinked and state.discussion_tree.unresolved_expanded)
then
M.collapse_recursively(tree, node, root_node, opts.keep_current_open, false)
else
M.expand_recursively(tree, node, false)
end
end
end
-- Reset states of resolved discussions after toggling
if opts.toggle_resolved then
state.resolved_expanded = not state.resolved_expanded
if unlinked then
state.unlinked_discussion_tree.resolved_expanded = not state.unlinked_discussion_tree.resolved_expanded
else
state.discussion_tree.resolved_expanded = not state.discussion_tree.resolved_expanded
end
end
-- Reset states of unresolved discussions after toggling
if opts.toggle_unresolved then
state.unresolved_expanded = not state.unresolved_expanded
if unlinked then
state.unlinked_discussion_tree.unresolved_expanded = not state.unlinked_discussion_tree.unresolved_expanded
else
state.discussion_tree.unresolved_expanded = not state.discussion_tree.unresolved_expanded
end
end
tree:render()
M.restore_cursor_position(tree, current_node, root_node)
@@ -543,6 +559,8 @@ M.rebuild_discussion_tree = function()
M.discussion_tree = discussion_tree
M.switch_can_edit_bufs(false)
vim.api.nvim_set_option_value("filetype", "gitlab", { buf = M.linked_bufnr })
state.discussion_tree.resolved_expanded = false
state.discussion_tree.unresolved_expanded = false
end
M.rebuild_unlinked_discussion_tree = function()
@@ -561,6 +579,8 @@ M.rebuild_unlinked_discussion_tree = function()
M.set_tree_keymaps(unlinked_discussion_tree, M.unlinked_bufnr, true)
M.unlinked_discussion_tree = unlinked_discussion_tree
M.switch_can_edit_bufs(false)
state.unlinked_discussion_tree.resolved_expanded = false
state.unlinked_discussion_tree.unresolved_expanded = false
end
M.switch_can_edit_bufs = function(bool)
@@ -662,21 +682,21 @@ M.set_tree_keymaps = function(tree, bufnr, unlinked)
M.toggle_node(tree)
end, { buffer = bufnr, desc = "Toggle node" })
vim.keymap.set("n", state.settings.discussion_tree.toggle_all_discussions, function()
M.toggle_nodes(tree, {
M.toggle_nodes(tree, unlinked, {
toggle_resolved = true,
toggle_unresolved = true,
keep_current_open = state.settings.discussion_tree.keep_current_open,
})
end, { buffer = bufnr, desc = "Toggle all nodes" })
vim.keymap.set("n", state.settings.discussion_tree.toggle_resolved_discussions, function()
M.toggle_nodes(tree, {
M.toggle_nodes(tree, unlinked, {
toggle_resolved = true,
toggle_unresolved = false,
keep_current_open = state.settings.discussion_tree.keep_current_open,
})
end, { buffer = bufnr, desc = "Toggle resolved nodes" })
vim.keymap.set("n", state.settings.discussion_tree.toggle_unresolved_discussions, function()
M.toggle_nodes(tree, {
M.toggle_nodes(tree, unlinked, {
toggle_resolved = false,
toggle_unresolved = true,
keep_current_open = state.settings.discussion_tree.keep_current_open,

View File

@@ -40,12 +40,13 @@ local function content(discussions, unlinked_discussions, file_name)
resolved_discussions = resolved_discussions,
resolvable_notes = resolvable_notes,
resolved_notes = resolved_notes,
help_keymap = state.settings.help,
}
return state.settings.discussion_tree.winbar(t)
end
---This function sends the edited comment to the Go server
---This function updates the winbar
---@param discussions Discussion[]
---@param unlinked_discussions UnlinkedDiscussion[]
---@param base_title string