mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
feat: add autocommand event when search wraps around (#8487)
This commit is contained in:
parent
22d7dd2aec
commit
8ad6015409
@ -824,6 +824,10 @@ RemoteReply When a reply from a Vim that functions as
|
|||||||
Note that even if an autocommand is defined,
|
Note that even if an autocommand is defined,
|
||||||
the reply should be read with |remote_read()|
|
the reply should be read with |remote_read()|
|
||||||
to consume it.
|
to consume it.
|
||||||
|
*SearchWrapped*
|
||||||
|
SearchWrapped After making a search with |n| or |N| if the
|
||||||
|
search wraps around the document back to
|
||||||
|
the start/finish respectively.
|
||||||
*SessionLoadPost*
|
*SessionLoadPost*
|
||||||
SessionLoadPost After loading the session file created using
|
SessionLoadPost After loading the session file created using
|
||||||
the |:mksession| command.
|
the |:mksession| command.
|
||||||
|
@ -76,6 +76,7 @@ return {
|
|||||||
'QuickFixCmdPre', -- before :make, :grep etc.
|
'QuickFixCmdPre', -- before :make, :grep etc.
|
||||||
'QuitPre', -- before :quit
|
'QuitPre', -- before :quit
|
||||||
'RemoteReply', -- upon string reception from a remote vim
|
'RemoteReply', -- upon string reception from a remote vim
|
||||||
|
'SearchWrapped', -- after the search wrapped around
|
||||||
'SessionLoadPost', -- after loading a session file
|
'SessionLoadPost', -- after loading a session file
|
||||||
'ShellCmdPost', -- after ":!cmd"
|
'ShellCmdPost', -- after ":!cmd"
|
||||||
'ShellFilterPost', -- after ":1,2!cmd", ":w !cmd", ":r !cmd".
|
'ShellFilterPost', -- after ":1,2!cmd", ":w !cmd", ":r !cmd".
|
||||||
|
@ -1354,6 +1354,10 @@ int do_search(oparg_T *oap, int dirc, int search_delim, char_u *pat, long count,
|
|||||||
}
|
}
|
||||||
retval = 1; // pattern found
|
retval = 1; // pattern found
|
||||||
|
|
||||||
|
if (sia && sia->sa_wrapped) {
|
||||||
|
apply_autocmds(EVENT_SEARCHWRAPPED, NULL, NULL, false, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Add character and/or line offset
|
* Add character and/or line offset
|
||||||
*/
|
*/
|
||||||
|
53
test/functional/autocmd/searchwrapped_spec.lua
Normal file
53
test/functional/autocmd/searchwrapped_spec.lua
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
local helpers = require('test.functional.helpers')(after_each)
|
||||||
|
|
||||||
|
local clear = helpers.clear
|
||||||
|
local command = helpers.command
|
||||||
|
local curbufmeths = helpers.curbufmeths
|
||||||
|
local eq = helpers.eq
|
||||||
|
local eval = helpers.eval
|
||||||
|
local feed = helpers.feed
|
||||||
|
|
||||||
|
describe('autocmd SearchWrapped', function()
|
||||||
|
before_each(function()
|
||||||
|
clear()
|
||||||
|
command('set ignorecase')
|
||||||
|
command('let g:test = 0')
|
||||||
|
command('autocmd! SearchWrapped * let g:test += 1')
|
||||||
|
curbufmeths.set_lines(0, 1, false, {
|
||||||
|
'The quick brown fox',
|
||||||
|
'jumps over the lazy dog'})
|
||||||
|
end)
|
||||||
|
|
||||||
|
it('gets triggered when search wraps the end', function()
|
||||||
|
feed('/the<Return>')
|
||||||
|
eq(0, eval('g:test'))
|
||||||
|
|
||||||
|
feed('n')
|
||||||
|
eq(1, eval('g:test'))
|
||||||
|
|
||||||
|
feed('nn')
|
||||||
|
eq(2, eval('g:test'))
|
||||||
|
end)
|
||||||
|
|
||||||
|
it('gets triggered when search wraps in reverse order', function()
|
||||||
|
feed('/the<Return>')
|
||||||
|
eq(0, eval('g:test'))
|
||||||
|
|
||||||
|
feed('NN')
|
||||||
|
eq(1, eval('g:test'))
|
||||||
|
|
||||||
|
feed('NN')
|
||||||
|
eq(2, eval('g:test'))
|
||||||
|
end)
|
||||||
|
|
||||||
|
it('does not get triggered on failed searches', function()
|
||||||
|
feed('/blargh<Return>')
|
||||||
|
eq(0, eval('g:test'))
|
||||||
|
|
||||||
|
feed('NN')
|
||||||
|
eq(0, eval('g:test'))
|
||||||
|
|
||||||
|
feed('NN')
|
||||||
|
eq(0, eval('g:test'))
|
||||||
|
end)
|
||||||
|
end)
|
Loading…
Reference in New Issue
Block a user