54 lines
880 B
VimL
54 lines
880 B
VimL
|
|
XPTemplate priority=all
|
||
|
|
|
||
|
|
let s:f = g:XPTfuncs()
|
||
|
|
|
||
|
|
|
||
|
|
fun! s:Init()
|
||
|
|
let s:xptCompleteMap = [
|
||
|
|
\"''",
|
||
|
|
\'""',
|
||
|
|
\'()',
|
||
|
|
\'[]',
|
||
|
|
\'{}',
|
||
|
|
\'<>',
|
||
|
|
\'||',
|
||
|
|
\'**',
|
||
|
|
\'``',
|
||
|
|
\'++',
|
||
|
|
\' ',
|
||
|
|
\]
|
||
|
|
|
||
|
|
let s:xptCompleteLeft = join( map( deepcopy( s:xptCompleteMap ), 'v:val[0:0]' ), '' )
|
||
|
|
let s:xptCompleteRight = join( map( deepcopy( s:xptCompleteMap ), 'v:val[1:1]' ), '' )
|
||
|
|
endfunction
|
||
|
|
|
||
|
|
call s:Init()
|
||
|
|
delfunc s:Init
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
fun! s:f.CompleteRightPart( leftReg ) dict
|
||
|
|
if !g:xptemplate_brace_complete
|
||
|
|
return ''
|
||
|
|
endif
|
||
|
|
|
||
|
|
let v = self.V()
|
||
|
|
|
||
|
|
|
||
|
|
let v = matchstr( v, a:leftReg )
|
||
|
|
if v == ''
|
||
|
|
return ''
|
||
|
|
endif
|
||
|
|
|
||
|
|
let v = join( reverse( split( v, '\V\s\{-}' ) ), '')
|
||
|
|
let v = tr( v, s:xptCompleteLeft, s:xptCompleteRight )
|
||
|
|
return v
|
||
|
|
|
||
|
|
endfunction
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|