adding new stuff
This commit is contained in:
parent
f84d7183aa
commit
9ef8a96f9a
1580 changed files with 0 additions and 0 deletions
|
|
@ -0,0 +1,187 @@
|
|||
XPTemplate priority=all
|
||||
|
||||
|
||||
let s:f = g:XPTfuncs()
|
||||
|
||||
|
||||
XPTinclude
|
||||
\ _common/common
|
||||
|
||||
|
||||
let s:pairs = { 'left' : "'" . '"([{<|*`+ ',
|
||||
\ 'right': "'" . '")]}>|*`+ ', }
|
||||
|
||||
|
||||
" TODO not perfect: hide right part if found right is already in input area.
|
||||
" use searchpair() to improve
|
||||
|
||||
let s:crIndent = 0
|
||||
|
||||
fun! s:f.BracketRightPart( leftReg )
|
||||
|
||||
if has_key( self._ctx.renderContext, 'bracketComplete' )
|
||||
return ''
|
||||
endif
|
||||
|
||||
let v = self.V()
|
||||
let v0 = v
|
||||
|
||||
let v = matchstr( v, a:leftReg )
|
||||
if v == ''
|
||||
return ''
|
||||
endif
|
||||
|
||||
let v = join( reverse( split( v, '\V\s\{-}' ) ), '')
|
||||
let v = tr( v, s:pairs.left, s:pairs.right )
|
||||
|
||||
if v0 =~ '\V\n\s\*\$'
|
||||
let v = matchstr( v, '\V\S\+' )
|
||||
return { "action" : "text", "nIndent" : -s:crIndent, "text" : "\n".v }
|
||||
else
|
||||
return v
|
||||
endif
|
||||
|
||||
endfunction
|
||||
|
||||
fun! s:f.bkt_cmpl()
|
||||
return self.BracketRightPart( self._ctx.renderContext.leftReg )
|
||||
endfunction
|
||||
|
||||
fun! s:f.quote_cmpl()
|
||||
let r = self._ctx.renderContext
|
||||
let v = self.V()
|
||||
let v = matchstr( v, r.leftReg )
|
||||
|
||||
if has_key( r, 'bracketComplete' )
|
||||
return ''
|
||||
elseif v == ''
|
||||
return ''
|
||||
else
|
||||
return r.charRight
|
||||
endif
|
||||
endfunction
|
||||
|
||||
fun! s:f.quote_ontype()
|
||||
|
||||
let v = self.V()
|
||||
|
||||
if v == ''
|
||||
return self.Finish()
|
||||
|
||||
elseif v =~ '\V\n'
|
||||
|
||||
return self.FinishOuter( v )
|
||||
|
||||
else
|
||||
return 0
|
||||
endif
|
||||
|
||||
endfunction
|
||||
|
||||
fun! s:f.bkt_ontype()
|
||||
|
||||
|
||||
let v = self.V()
|
||||
|
||||
if v == ''
|
||||
return self.Finish()
|
||||
|
||||
elseif v =~ '\V\n\s\*\$'
|
||||
|
||||
if &indentexpr != ''
|
||||
let indentexpr = substitute( &indentexpr, '\Vv:lnum', 'line(".")', '' )
|
||||
try
|
||||
let nNewLineIndent = eval( indentexpr )
|
||||
let s:crIndent = nNewLineIndent - indent( line( "." ) - 1 )
|
||||
catch /.*/
|
||||
let s:crIndent = self.NIndent()
|
||||
endtry
|
||||
else
|
||||
let s:crIndent = self.NIndent()
|
||||
endif
|
||||
|
||||
" create snippet indent. filter does not use actual indent string
|
||||
let n_indent = xpt#indent#ActualToSnippetNr(s:crIndent)
|
||||
let indent_str = repeat( ' ', n_indent )
|
||||
|
||||
let v = substitute( v, '\V\s\*\n\.\*', "\n", 'g' )
|
||||
|
||||
return self.FinishOuter( v . indent_str )
|
||||
|
||||
else
|
||||
" nothing todo
|
||||
return 0
|
||||
endif
|
||||
|
||||
endfunction
|
||||
|
||||
fun! s:f.bkt_init( followingChar )
|
||||
let r = self._ctx.renderContext
|
||||
|
||||
let r.char = self.GetVar( '$_xSnipName' )
|
||||
let r.followingChar = a:followingChar
|
||||
let r.leftReg = '\V\^' . r.char . r.followingChar . '\?'
|
||||
|
||||
|
||||
let i = stridx( s:pairs.left, r.char )
|
||||
|
||||
if i != -1
|
||||
let r.charRight = s:pairs.right[ i ]
|
||||
|
||||
call XPTmapKey( r.charRight, 'bkt_finish(' . string( r.charRight ) . ')' )
|
||||
else
|
||||
let r.charRight = ''
|
||||
endif
|
||||
|
||||
return ''
|
||||
endfunction
|
||||
|
||||
fun! s:f.bkt_finish( keyPressed )
|
||||
|
||||
let r = self._ctx.renderContext
|
||||
|
||||
if a:keyPressed != r.charRight
|
||||
" may be outer snippet key bind
|
||||
return a:keyPressed
|
||||
endif
|
||||
|
||||
let r.bracketComplete = 1
|
||||
|
||||
let v = self.V()
|
||||
|
||||
if self.GetVar( '$SParg' ) == ' '
|
||||
|
||||
if v == r.char . r.followingChar
|
||||
return self.FinishOuter( r.char . r.charRight )
|
||||
else
|
||||
return self.FinishOuter( v . r.charRight )
|
||||
endif
|
||||
|
||||
else
|
||||
return self.FinishOuter( v . r.charRight )
|
||||
endif
|
||||
|
||||
endfunction
|
||||
|
||||
|
||||
|
||||
|
||||
XPT _bracket hidden
|
||||
XSET s|pre=Echo('')
|
||||
XSET s|ontype=bkt_ontype()
|
||||
XSET s=bkt_init(' ')
|
||||
`$_xSnipName$SParg`s^`s^bkt_cmpl()^
|
||||
|
||||
XPT _quote hidden
|
||||
XSET s|pre=Echo('')
|
||||
XSET s|ontype=quote_ontype()
|
||||
XSET s=bkt_init('')
|
||||
`$_xSnipName`s^`s^quote_cmpl()^
|
||||
|
||||
|
||||
XPT ( hidden alias=_bracket
|
||||
XPT [ hidden alias=_bracket
|
||||
XPT { hidden alias=_bracket
|
||||
XPT < hidden alias=_bracket
|
||||
XPT ' hidden alias=_quote
|
||||
XPT " hidden alias=_quote
|
||||
Loading…
Add table
Add a link
Reference in a new issue