mirror of
https://github.com/Raimondi/delimitMate.git
synced 2025-12-21 03:41:16 +08:00
Allow jumping over contiguous delimiters. Closes #44.
This commit is contained in:
@@ -346,6 +346,32 @@ function! delimitMate#JumpAny(key) " {{{
|
|||||||
endif
|
endif
|
||||||
endfunction " delimitMate#JumpAny() }}}
|
endfunction " delimitMate#JumpAny() }}}
|
||||||
|
|
||||||
|
function! delimitMate#JumpMany() " {{{
|
||||||
|
let line = getline('.')[col('.') - 1 : ]
|
||||||
|
let len = len(line)
|
||||||
|
let rights = ""
|
||||||
|
let found = 0
|
||||||
|
let i = 0
|
||||||
|
while i < len
|
||||||
|
let char = line[i]
|
||||||
|
if index(b:_l_delimitMate_quotes_list, char) >= 0 ||
|
||||||
|
\ index(b:_l_delimitMate_right_delims, char) >= 0
|
||||||
|
let rights .= "\<Right>"
|
||||||
|
let found = 1
|
||||||
|
elseif found == 0
|
||||||
|
let rights .= "\<Right>"
|
||||||
|
else
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let i += 1
|
||||||
|
endwhile
|
||||||
|
if found == 1
|
||||||
|
return rights
|
||||||
|
else
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
|
endfunction " delimitMate#JumpMany() }}}
|
||||||
|
|
||||||
function! delimitMate#MapMsg(msg) "{{{
|
function! delimitMate#MapMsg(msg) "{{{
|
||||||
redraw
|
redraw
|
||||||
echomsg a:msg
|
echomsg a:msg
|
||||||
@@ -461,7 +487,7 @@ function! delimitMate#TestMappings() "{{{
|
|||||||
\ b:_l_delimitMate_apostrophes_list +
|
\ b:_l_delimitMate_apostrophes_list +
|
||||||
\ ['<BS>', '<S-BS>', '<Del>', '<S-Tab>', '<Esc>'] +
|
\ ['<BS>', '<S-BS>', '<Del>', '<S-Tab>', '<Esc>'] +
|
||||||
\ ['<Up>', '<Down>', '<Left>', '<Right>', '<LeftMouse>', '<RightMouse>'] +
|
\ ['<Up>', '<Down>', '<Left>', '<Right>', '<LeftMouse>', '<RightMouse>'] +
|
||||||
\ ['<Home>', '<End>', '<PageUp>', '<PageDown>', '<S-Down>', '<S-Up>']
|
\ ['<Home>', '<End>', '<PageUp>', '<PageDown>', '<S-Down>', '<S-Up>', '<C-G>g']
|
||||||
let imaps = imaps + ( b:_l_delimitMate_expand_cr ? ['<CR>'] : [] )
|
let imaps = imaps + ( b:_l_delimitMate_expand_cr ? ['<CR>'] : [] )
|
||||||
let imaps = imaps + ( b:_l_delimitMate_expand_space ? ['<Space>'] : [] )
|
let imaps = imaps + ( b:_l_delimitMate_expand_space ? ['<Space>'] : [] )
|
||||||
|
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ function! s:Unmap() " {{{
|
|||||||
\ b:_l_delimitMate_apostrophes_list +
|
\ b:_l_delimitMate_apostrophes_list +
|
||||||
\ ['<BS>', '<S-BS>', '<Del>', '<CR>', '<Space>', '<S-Tab>', '<Esc>'] +
|
\ ['<BS>', '<S-BS>', '<Del>', '<CR>', '<Space>', '<S-Tab>', '<Esc>'] +
|
||||||
\ ['<Up>', '<Down>', '<Left>', '<Right>', '<LeftMouse>', '<RightMouse>'] +
|
\ ['<Up>', '<Down>', '<Left>', '<Right>', '<LeftMouse>', '<RightMouse>'] +
|
||||||
\ ['<Home>', '<End>', '<PageUp>', '<PageDown>', '<S-Down>', '<S-Up>']
|
\ ['<Home>', '<End>', '<PageUp>', '<PageDown>', '<S-Down>', '<S-Up>', '<C-G>g']
|
||||||
|
|
||||||
for map in imaps
|
for map in imaps
|
||||||
if maparg(map, "i") =~? 'delimitMate'
|
if maparg(map, "i") =~? 'delimitMate'
|
||||||
@@ -353,6 +353,10 @@ function! s:ExtraMappings() "{{{
|
|||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
|
" Jump over next delimiters
|
||||||
|
inoremap <buffer> <Plug>delimitMateJumpMany <C-R>=len(b:_l_delimitMate_buffer) ? delimitMate#Finish(0) : delimitMate#JumpMany()<CR>
|
||||||
|
imap <silent> <buffer> <C-G>g <Plug>delimitMateJumpMany
|
||||||
|
|
||||||
" Map away!
|
" Map away!
|
||||||
if !hasmapto('<Plug>delimitMateDel', 'i')
|
if !hasmapto('<Plug>delimitMateDel', 'i')
|
||||||
silent! imap <unique> <buffer> <Del> <Plug>delimitMateDel
|
silent! imap <unique> <buffer> <Del> <Plug>delimitMateDel
|
||||||
|
|||||||
Reference in New Issue
Block a user