Consider space and CR expansions when jumping over. Closes #95.

This commit is contained in:
Israel Chauca Fuentes
2012-03-31 13:33:24 -04:00
parent 0b34aea202
commit 6bb98110b4
4 changed files with 76 additions and 8 deletions

View File

@@ -10,30 +10,35 @@
"let delimitMate_loaded = 1
function! delimitMate#ShouldJump() "{{{
function! delimitMate#ShouldJump(...) "{{{
" Returns 1 if the next character is a closing delimiter.
let char = delimitMate#GetCharFromCursor(0)
let list = b:_l_delimitMate_right_delims + b:_l_delimitMate_quotes_list
" Closing delimiter on the right.
if index(list, char) > -1
if (!a:0 && index(list, char) > -1)
\ || (a:0 && char == a:1)
return 1
endif
" Closing delimiter with space expansion.
let nchar = delimitMate#GetCharFromCursor(1)
if b:_l_delimitMate_expand_space && char == " "
if !a:0 && b:_l_delimitMate_expand_space && char == " "
if index(list, nchar) > -1
return 1
return 2
endif
elseif a:0 && b:_l_delimitMate_expand_space && nchar == a:1
return 3
endif
" Closing delimiter with CR expansion.
let uchar = getline(line('.') + 1)[0]
if b:_l_delimitMate_expand_cr && char == ""
let uchar = matchstr(getline(line('.') + 1), '^\s*\zs\S')
if !a:0 && b:_l_delimitMate_expand_cr && char == ""
if index(list, uchar) > -1
return 1
return 4
endif
elseif a:0 && b:_l_delimitMate_expand_cr && uchar == a:1
return 5
endif
return 0
@@ -343,8 +348,15 @@ function! delimitMate#JumpOut(char) "{{{
if delimitMate#IsForbidden(a:char)
return a:char
endif
if delimitMate#GetCharFromCursor(0) == a:char
let jump = delimitMate#ShouldJump(a:char)
if jump == 1
return a:char . delimitMate#Del()
elseif jump == 3
return ' '.a:char.delimitMate#Del().delimitMate#Del()
elseif jump == 5
call delimitMate#FlushBuffer()
return "\<CR>" . matchstr(getline(line('.') + 1), '^\s*\S')
\ . delimitMate#Del() . "\<Del>"
else
return a:char
endif

View File

@@ -10,3 +10,11 @@ $(document).ready(function() {
x
})
--------------------------------------------------------------------------------
# Issue #95
new
exec "normal i(\<CR>test)x"
================================================================================
(
test
)x
--------------------------------------------------------------------------------

6
test/expand_space.txt Normal file
View File

@@ -0,0 +1,6 @@
# Issue #95
new
exec "normal i( test)x"
================================================================================
( test )x
--------------------------------------------------------------------------------

42
test/expand_space.vim Normal file
View File

@@ -0,0 +1,42 @@
let g:delimitMate_expand_space = 1
"DelimitMateReload
let lines = readfile(expand('<sfile>:t:r').'.txt')
call vimtest#StartTap()
let testsnumber = len(filter(copy(lines), 'v:val =~ ''^=\{80}$'''))
call vimtap#Plan(testsnumber)
let tcount = 1
let expect = 0
let evaluate = 0
for item in lines
if item =~ '^=\{80}$'
let expect = 1
let expected = []
continue
endif
if item =~ '^#\|^\s*$' && expect == 0
" A comment or empty line.
continue
endif
if ! expect
" A command.
exec item
call vimtap#Diag(item)
continue
endif
if item =~ '^-\{80}$'
let expect = 0
endif
if expect
call add(expected, item)
continue
endif
let lines = getline(1, line('$'))
let passed = lines == expected
echom string(lines)
echom string(expected)
call vimtap#Ok(passed, string(expected) .
\ (passed ? ' =' : ' !') . '= ' . string(lines))
let tcount += 1
endfor
call vimtest#Quit()