Skip to content

Commit

Permalink
Merge branch 'maintain-the-jumplist'
Browse files Browse the repository at this point in the history
  • Loading branch information
kana committed Feb 26, 2014
2 parents fed7c97 + bcf7124 commit b422450
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 4 deletions.
16 changes: 12 additions & 4 deletions plugin/textobj/entire.vim
Expand Up @@ -52,21 +52,29 @@ call textobj#user#plugin('entire', {

" Misc. "{{{1
function! s:select_a()
normal! gg0
" To easily back to the last position after a command.
" For example: yae<C-o>
mark '

keepjumps normal! gg0
let start_pos = getpos('.')

normal! G$
keepjumps normal! G$
let end_pos = getpos('.')

return ['V', start_pos, end_pos]
endfunction

function! s:select_i()
normal! gg0
" To easily back to the last position after a command.
" For example: yie<C-o>
mark '

keepjumps normal! gg0
call search('^.', 'cW')
let start_pos = getpos('.')

normal! G$
keepjumps normal! G$
call search('^.', 'bcW')
normal! $
let end_pos = getpos('.')
Expand Down
83 changes: 83 additions & 0 deletions t/jumplist.vim
@@ -0,0 +1,83 @@
runtime! plugin/textobj/entire.vim

let g:filler_line = [
\ 'Lorem ipsum dolor sit amet, consectetur adipisicing elit,',
\ 'sed do eiusmod tempor incididunt ut labore et dolore magna',
\ 'aliqua. Ut enim ad minim veniam, quis nostrud exercitation',
\ 'ullamco laboris nisi ut aliquip ex ea commodo consequat.',
\ 'Duis aute irure dolor in reprehenderit in voluptate velit',
\ 'esse cillum dolore eu fugiat nulla pariatur. Excepteur sint',
\ 'occaecat cupidatat non proident, sunt in culpa qui officia',
\ 'deserunt mollit anim id est laborum.',
\ ]

function! FillBuffer()
put =['', ''] + g:filler_line + ['', '']
1 delete _
endfunction

describe '<Plug>(textobj-entire-a)'
before
new
call FillBuffer()
end

after
close!
end

it 'does not change the jumplist'
normal! 3gg
normal! 5gg
normal! 7gg
normal! 11gg

execute 'normal' "y\<Plug>(textobj-entire-a)"
Expect line('.') == 1

execute 'normal!' "\<C-o>"
Expect line('.') == 11

execute 'normal!' "\<C-o>"
Expect line('.') == 7

execute 'normal!' "\<C-o>"
Expect line('.') == 5

execute 'normal!' "\<C-o>"
Expect line('.') == 3
end
end

describe '<Plug>(textobj-entire-i)'
before
new
call FillBuffer()
end

after
close!
end

it 'does not change the jumplist'
normal! 2gg
normal! 4gg
normal! 6gg
normal! 10gg

execute 'normal' "y\<Plug>(textobj-entire-i)"
Expect line('.') == 3

execute 'normal!' "\<C-o>"
Expect line('.') == 10

execute 'normal!' "\<C-o>"
Expect line('.') == 6

execute 'normal!' "\<C-o>"
Expect line('.') == 4

execute 'normal!' "\<C-o>"
Expect line('.') == 2
end
end

0 comments on commit b422450

Please sign in to comment.