adding new stuff
This commit is contained in:
parent
f84d7183aa
commit
9ef8a96f9a
1580 changed files with 0 additions and 0 deletions
85
plugins/bundle/xptemplate/autoload/xpt/indent.vim
Normal file
85
plugins/bundle/xptemplate/autoload/xpt/indent.vim
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
exec xpt#once#init
|
||||
let s:oldcpo = &cpo
|
||||
set cpo-=< cpo+=B
|
||||
let s:log = xpt#debug#Logger( 'warn' )
|
||||
exe XPT#importConst
|
||||
let s:indent_convert_cmd = 'substitute(v:val, ''\v(^\s*)@<= '', '' '', "g" )'
|
||||
fun! xpt#indent#ParseStr(text,first_line_shift)
|
||||
let text = xpt#indent#IndentToTabStr(a:text)
|
||||
return xpt#indent#ToActualIndentStr(text,a:first_line_shift)
|
||||
endfunction
|
||||
fun! xpt#indent#IndentToTabStr(text)
|
||||
let lines = split( a:text, '\n', 1 )
|
||||
call xpt#indent#IndentToTab(lines)
|
||||
return join(lines, "\n")
|
||||
endfunction
|
||||
fun! xpt#indent#ToActualIndentStr(text,first_line_shift)
|
||||
let lines = split( a:text, '\n', 1 )
|
||||
call xpt#indent#ToActualIndent(lines,a:first_line_shift)
|
||||
return join(lines, "\n")
|
||||
endfunction
|
||||
fun! xpt#indent#IndentToTab(lines)
|
||||
call map(a:lines,s:indent_convert_cmd)
|
||||
endfunction
|
||||
fun! xpt#indent#ToActualIndent(lines,first_line_shift)
|
||||
let indent_spaces = repeat(' ', &shiftwidth)
|
||||
let cmd = 'substitute(v:val, ''\v(^ *)@<= '', ''' . indent_spaces . ''', "g" )'
|
||||
call map(a:lines,cmd)
|
||||
if a:first_line_shift != 0
|
||||
let shift_spaces = repeat(' ', a:first_line_shift)
|
||||
let i = 1
|
||||
while i < len(a:lines)
|
||||
if a:lines[i] != '' || i == len(a:lines)-1
|
||||
let a:lines[i] = shift_spaces . a:lines[i]
|
||||
endif
|
||||
let i += 1
|
||||
endwhile
|
||||
endif
|
||||
if &expandtab
|
||||
return
|
||||
endif
|
||||
let tabspaces = repeat( ' ', &tabstop )
|
||||
let cmd = 'substitute(v:val, ''\v(^\s*)@<=' . tabspaces . ''', '' '', "g" )'
|
||||
call map(a:lines,cmd)
|
||||
endfunction
|
||||
fun! xpt#indent#IndentBefore(pos)
|
||||
let [ln,col] = a:pos
|
||||
let line = matchstr( getline(ln), '\V\^\s\*' )
|
||||
let line = ( col == 1 ) ? '' : line[ 0 : col - 1 - 1 ]
|
||||
let tabspaces = repeat( ' ', &tabstop )
|
||||
return len( substitute( line, ' ', tabspaces, 'g' ) )
|
||||
endfunction
|
||||
fun! xpt#indent#RemoveIndentStr(text,nIndent)
|
||||
let reg = '\V\n \{,' . a:nIndent . '\}'
|
||||
let text = substitute(a:text, reg, '\n', 'g')
|
||||
return text
|
||||
endfunction
|
||||
fun! xpt#indent#ToSpace(text)
|
||||
if stridx( a:text, " " ) < 0
|
||||
return a:text
|
||||
endif
|
||||
let tabspaces = repeat( ' ', &tabstop )
|
||||
let reg = '\v' . tabspaces . '| {0,' . (&tabstop-1) . '} '
|
||||
let rst = []
|
||||
let lines = split( a:text, '\n', 1 )
|
||||
for line in lines
|
||||
let leading_space = matchstr( line, '\v\s*' )
|
||||
let left = line[len(leading_space) :]
|
||||
let l = substitute( leading_space, reg, tabspaces, 'g' )
|
||||
call add(rst,l . left)
|
||||
endfor
|
||||
return join(rst, "\n")
|
||||
endfunction
|
||||
fun! xpt#indent#SpaceToTab(text)
|
||||
let indent_spaces = repeat(' ', &shiftwidth)
|
||||
let reg = 'substitute(v:val, ''\v(^\s*)@<='.indent_spaces.''', " ", "g" )'
|
||||
let lines = split( a:text, '\n', 1 )
|
||||
call map(lines,reg)
|
||||
return join(lines, "\n")
|
||||
endfunction
|
||||
fun! xpt#indent#ActualToSnippetNr(n)
|
||||
let n_one_indent = &shiftwidth
|
||||
let n_indent = a:n / n_one_indent
|
||||
return n_indent * 4 + a:n % n_one_indent
|
||||
endfunction
|
||||
let &cpo = s:oldcpo
|
||||
Loading…
Add table
Add a link
Reference in a new issue