1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-04-14 15:19:12 +08:00

Add: add a new function fill_left. (#2514)

* Add: add a new function fill_left.
This commit is contained in:
Lin Kun 2019-01-27 20:00:13 +08:00 committed by Wang Shidong
parent 6057c257f7
commit 3a74a6bf89

View File

@ -26,42 +26,49 @@ endfunction
function! s:self.fill(str, length) abort
if strwidth(a:str) <= a:length
return a:str . repeat(' ', a:length - strwidth(a:str))
let l:string = a:str
else
let l = 0
for i in range(strchars(a:str) - 1)
if strwidth(strcharpart(a:str, 0, i)) > a:length
break
else
let l = i
endif
endfor
let str = strcharpart(a:str, 0, l)
return str . repeat(' ', a:length - strwidth(str))
let l:rightmost = 0
while strwidth(strcharpart(a:str, 0, l:rightmost)) < a:length
let l:rightmost += 1
endwhile
let l:string = strcharpart(a:str, 0, l:rightmost)
endif
let l:spaces = repeat(' ', a:length - strwidth(l:string))
return l:string . l:spaces
endfunction
function! s:self.fill_left(str, length) abort
if strwidth(a:str) <= a:length
let l:string = a:str
else
let l:rightmost = 0
while strwidth(strcharpart(a:str, 0, l:rightmost)) < a:length
let l:rightmost += 1
endwhile
let l:string = strcharpart(a:str, 0, l:rightmost)
endif
let l:spaces = repeat(' ', a:length - strwidth(l:string))
return l:spaces . l:string
endfunction
function! s:self.fill_middle(str, length) abort
if strwidth(a:str) <= a:length
"return a:str . repeat(' ', a:length - strwidth(a:str))
let n = a:length - strwidth(a:str)
if n % 2 == 0
return repeat(' ', (a:length - strwidth(a:str))/2) . a:str . repeat(' ', (a:length - strwidth(a:str))/2)
else
return repeat(' ', (a:length - strwidth(a:str))/2) . a:str . repeat(' ', (a:length + 1 - strwidth(a:str))/2)
endif
let l:string = a:str
else
let l = 0
for i in range(strchars(a:str) - 1)
if strwidth(strcharpart(a:str, 0, i)) > a:length
break
else
let l = i
endif
endfor
let str = strcharpart(a:str, 0, l)
return str . repeat(' ', a:length - strwidth(str))
let l:rightmost = 0
while strwidth(strcharpart(a:str, 0, l:rightmost)) < a:length
let l:rightmost += 1
endwhile
let l:string = strcharpart(a:str, 0, l:rightmost)
endif
let l:numofspaces = a:length - strwidth(l:string)
let l:halfspaces = repeat(' ', l:numofspaces/2)
let l:rst = l:halfspaces . a:str . l:halfspaces
if l:numofspaces % 2
let l:rst .= ' '
endif
return l:rst
endfunction
function! s:self.trim_start(str) abort