fix(conflict): notify on navigation wrap-around
Problem: goto_next and goto_prev wrapped silently when reaching the last or first conflict, giving no indication to the user. Solution: add vim.notify before the wrap-around jump in both functions.
This commit is contained in:
parent
603c966c71
commit
946724096f
2 changed files with 56 additions and 0 deletions
|
|
@ -323,6 +323,7 @@ function M.goto_next(bufnr)
|
|||
return
|
||||
end
|
||||
end
|
||||
vim.notify('[diffs.nvim]: wrapped to first conflict', vim.log.levels.INFO)
|
||||
vim.api.nvim_win_set_cursor(0, { regions[1].marker_ours + 1, 0 })
|
||||
end
|
||||
|
||||
|
|
@ -340,6 +341,7 @@ function M.goto_prev(bufnr)
|
|||
return
|
||||
end
|
||||
end
|
||||
vim.notify('[diffs.nvim]: wrapped to last conflict', vim.log.levels.INFO)
|
||||
vim.api.nvim_win_set_cursor(0, { regions[#regions].marker_ours + 1, 0 })
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -531,6 +531,33 @@ describe('conflict', function()
|
|||
helpers.delete_buffer(bufnr)
|
||||
end)
|
||||
|
||||
it('goto_next notifies on wrap-around', function()
|
||||
local bufnr = create_file_buffer({
|
||||
'<<<<<<< HEAD',
|
||||
'a',
|
||||
'=======',
|
||||
'b',
|
||||
'>>>>>>> feat',
|
||||
})
|
||||
vim.api.nvim_set_current_buf(bufnr)
|
||||
vim.api.nvim_win_set_cursor(0, { 5, 0 })
|
||||
|
||||
local notified = false
|
||||
local orig_notify = vim.notify
|
||||
vim.notify = function(msg)
|
||||
if msg:match('wrapped to first conflict') then
|
||||
notified = true
|
||||
end
|
||||
end
|
||||
|
||||
conflict.goto_next(bufnr)
|
||||
vim.notify = orig_notify
|
||||
|
||||
assert.is_true(notified)
|
||||
|
||||
helpers.delete_buffer(bufnr)
|
||||
end)
|
||||
|
||||
it('goto_prev jumps to previous conflict', function()
|
||||
local bufnr = create_file_buffer({
|
||||
'<<<<<<< HEAD',
|
||||
|
|
@ -575,6 +602,33 @@ describe('conflict', function()
|
|||
helpers.delete_buffer(bufnr)
|
||||
end)
|
||||
|
||||
it('goto_prev notifies on wrap-around', function()
|
||||
local bufnr = create_file_buffer({
|
||||
'<<<<<<< HEAD',
|
||||
'a',
|
||||
'=======',
|
||||
'b',
|
||||
'>>>>>>> feat',
|
||||
})
|
||||
vim.api.nvim_set_current_buf(bufnr)
|
||||
vim.api.nvim_win_set_cursor(0, { 1, 0 })
|
||||
|
||||
local notified = false
|
||||
local orig_notify = vim.notify
|
||||
vim.notify = function(msg)
|
||||
if msg:match('wrapped to last conflict') then
|
||||
notified = true
|
||||
end
|
||||
end
|
||||
|
||||
conflict.goto_prev(bufnr)
|
||||
vim.notify = orig_notify
|
||||
|
||||
assert.is_true(notified)
|
||||
|
||||
helpers.delete_buffer(bufnr)
|
||||
end)
|
||||
|
||||
it('goto_next does nothing with no conflicts', function()
|
||||
local bufnr = create_file_buffer({ 'normal line' })
|
||||
vim.api.nvim_set_current_buf(bufnr)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue