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
|
return
|
||||||
end
|
end
|
||||||
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 })
|
vim.api.nvim_win_set_cursor(0, { regions[1].marker_ours + 1, 0 })
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -340,6 +341,7 @@ function M.goto_prev(bufnr)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
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 })
|
vim.api.nvim_win_set_cursor(0, { regions[#regions].marker_ours + 1, 0 })
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -531,6 +531,33 @@ describe('conflict', function()
|
||||||
helpers.delete_buffer(bufnr)
|
helpers.delete_buffer(bufnr)
|
||||||
end)
|
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()
|
it('goto_prev jumps to previous conflict', function()
|
||||||
local bufnr = create_file_buffer({
|
local bufnr = create_file_buffer({
|
||||||
'<<<<<<< HEAD',
|
'<<<<<<< HEAD',
|
||||||
|
|
@ -575,6 +602,33 @@ describe('conflict', function()
|
||||||
helpers.delete_buffer(bufnr)
|
helpers.delete_buffer(bufnr)
|
||||||
end)
|
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()
|
it('goto_next does nothing with no conflicts', function()
|
||||||
local bufnr = create_file_buffer({ 'normal line' })
|
local bufnr = create_file_buffer({ 'normal line' })
|
||||||
vim.api.nvim_set_current_buf(bufnr)
|
vim.api.nvim_set_current_buf(bufnr)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue