mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
feat(autocmd): add Recording autocmds
feat(eval): add reg_recorded() This function is used the get the last recorded register. style(Recording): rename handler to match suggestions fix(RecordingLeave): send autocommand earlier This makes the autocommand fire just before setting reg_recorded to reg_recording, this way we clearly show that we are actually just before actually quitting the recording mode.
This commit is contained in:
committed by
Axel Dahlberg
parent
b1757e1c29
commit
8a4e26c6fe
52
test/functional/autocmd/recording_spec.lua
Normal file
52
test/functional/autocmd/recording_spec.lua
Normal file
@@ -0,0 +1,52 @@
|
||||
local helpers = require('test.functional.helpers')(after_each)
|
||||
|
||||
local clear = helpers.clear
|
||||
local eq = helpers.eq
|
||||
local eval = helpers.eval
|
||||
local source_vim = helpers.source
|
||||
|
||||
describe('RecordingEnter', function()
|
||||
before_each(clear)
|
||||
it('works', function()
|
||||
source_vim [[
|
||||
let g:recorded = 0
|
||||
autocmd RecordingEnter * let g:recorded += 1
|
||||
execute "normal! qqyyq"
|
||||
]]
|
||||
eq(1, eval('g:recorded'))
|
||||
end)
|
||||
|
||||
it('gives a correct reg_recording()', function()
|
||||
source_vim [[
|
||||
let g:recording = ''
|
||||
autocmd RecordingEnter * let g:recording = reg_recording()
|
||||
execute "normal! qqyyq"
|
||||
]]
|
||||
eq('q', eval('g:recording'))
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('RecordingLeave', function()
|
||||
before_each(clear)
|
||||
it('works', function()
|
||||
source_vim [[
|
||||
let g:recorded = 0
|
||||
autocmd RecordingLeave * let g:recorded += 1
|
||||
execute "normal! qqyyq"
|
||||
]]
|
||||
eq(1, eval('g:recorded'))
|
||||
end)
|
||||
|
||||
it('gives the correct reg_recorded()', function()
|
||||
source_vim [[
|
||||
let g:recorded = 'a'
|
||||
let g:recording = ''
|
||||
autocmd RecordingLeave * let g:recording = reg_recording()
|
||||
autocmd RecordingLeave * let g:recorded = reg_recorded()
|
||||
execute "normal! qqyyq"
|
||||
]]
|
||||
eq('q', eval 'g:recording')
|
||||
eq('', eval 'g:recorded')
|
||||
eq('q', eval 'reg_recorded()')
|
||||
end)
|
||||
end)
|
||||
@@ -6,6 +6,8 @@ local feed = helpers.feed
|
||||
local clear = helpers.clear
|
||||
local expect = helpers.expect
|
||||
local command = helpers.command
|
||||
local insert = helpers.insert
|
||||
local curbufmeths = helpers.curbufmeths
|
||||
|
||||
describe('macros', function()
|
||||
before_each(clear)
|
||||
@@ -27,4 +29,29 @@ describe('macros', function()
|
||||
expect('llllll')
|
||||
eq(eval('@i'), 'lxxx')
|
||||
end)
|
||||
|
||||
it('can be replayed with Q', function()
|
||||
insert [[hello
|
||||
hello
|
||||
hello]]
|
||||
feed [[gg]]
|
||||
|
||||
feed [[qqAFOO<esc>q]]
|
||||
eq({'helloFOO', 'hello', 'hello'}, curbufmeths.get_lines(0, -1, false))
|
||||
|
||||
feed[[Q]]
|
||||
eq({'helloFOOFOO', 'hello', 'hello'}, curbufmeths.get_lines(0, -1, false))
|
||||
|
||||
feed[[G3Q]]
|
||||
eq({'helloFOOFOO', 'hello', 'helloFOOFOOFOO'}, curbufmeths.get_lines(0, -1, false))
|
||||
end)
|
||||
end)
|
||||
|
||||
describe('reg_recorded()', function()
|
||||
before_each(clear)
|
||||
|
||||
it('returns the correct value', function()
|
||||
feed [[qqyyq]]
|
||||
eq('q', eval('reg_recorded()'))
|
||||
end)
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user