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,
|
||||
the reply should be read with |remote_read()|
|
||||
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 After loading the session file created using
|
||||
the |:mksession| command.
|
||||
|
@ -76,6 +76,7 @@ return {
|
||||
'QuickFixCmdPre', -- before :make, :grep etc.
|
||||
'QuitPre', -- before :quit
|
||||
'RemoteReply', -- upon string reception from a remote vim
|
||||
'SearchWrapped', -- after the search wrapped around
|
||||
'SessionLoadPost', -- after loading a session file
|
||||
'ShellCmdPost', -- after ":!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
|
||||
|
||||
if (sia && sia->sa_wrapped) {
|
||||
apply_autocmds(EVENT_SEARCHWRAPPED, NULL, NULL, false, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* 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