Add support for center alignment. Fix #57

We now have support for center alignment, simply add a header border
with the `g:table_mode_align_char` as both the first and the last
character so it would look something like `+:.....:+` to center align
the column values.
This commit is contained in:
Dhruva Sagar
2015-04-14 15:56:09 -07:00
parent c0a6d43f21
commit 74d1492f2b
6 changed files with 26 additions and 18 deletions

View File

@@ -13,7 +13,7 @@ function! s:Padding(string, length, where) "{{{3
elseif a:where =~# 'r' elseif a:where =~# 'r'
return repeat(" ", gap_length) . a:string return repeat(" ", gap_length) . a:string
elseif a:where =~# 'c' elseif a:where =~# 'c'
let right = spaces / 2 let right = gap_length / 2
let left = right + (right * 2 != gap_length) let left = right + (right * 2 != gap_length)
return repeat(" ", left) . a:string . repeat(" ", right) return repeat(" ", left) . a:string . repeat(" ", right)
endif endif
@@ -64,14 +64,19 @@ function! tablemode#align#Split(string, delim)
endfunction endfunction
function! tablemode#align#alignments(lnum, ncols) "{{{2 function! tablemode#align#alignments(lnum, ncols) "{{{2
let achr = g:table_mode_align_char
let alignments = [] let alignments = []
if tablemode#table#IsBorder(a:lnum+1) if tablemode#table#IsBorder(a:lnum+1)
let hcols = tablemode#align#Split(getline(a:lnum+1), '[' . g:table_mode_corner . g:table_mode_corner_corner . ']') let hcols = tablemode#align#Split(getline(a:lnum+1), '[' . g:table_mode_corner . g:table_mode_corner_corner . ']')
for idx in range(len(hcols)) for idx in range(len(hcols))
" Right align if header " Right align if header
call add(alignments, 'l') call add(alignments, 'l')
if hcols[idx] =~# g:table_mode_align_char . '$' | let alignments[idx] = 'r' | endif if hcols[idx] =~# achr . '[^'.achr.']\+' . achr
if hcols[idx] !~# '[^0-9\.]' | let alignments[idx] = 'r' | endif let alignments[idx] = 'c'
elseif hcols[idx] =~# achr . '$'
let alignments[idx] = 'r'
endif
" if hcols[idx] !~# '[^0-9\.]' | let alignments[idx] = 'r' | endif
endfor endfor
end end
return alignments return alignments

View File

@@ -45,7 +45,10 @@ function! s:GenerateHeaderBorder(line) "{{{2
for idx in range(len(hcols)) for idx in range(len(hcols))
if hcols[idx] =~# g:table_mode_align_char if hcols[idx] =~# g:table_mode_align_char
if hcols[idx] =~# g:table_mode_align_char . '$' " center align
if hcols[idx] =~# g:table_mode_align_char . '[^'.g:table_mode_align_char.']\+' . g:table_mode_align_char
let gcols[idx] = g:table_mode_align_char . gcols[idx][1:-2] . g:table_mode_align_char
elseif hcols[idx] =~# g:table_mode_align_char . '$'
let gcols[idx] = gcols[idx][:-2] . g:table_mode_align_char let gcols[idx] = gcols[idx][:-2] . g:table_mode_align_char
else else
let gcols[idx] = g:table_mode_align_char . gcols[idx][1:] let gcols[idx] = g:table_mode_align_char . gcols[idx][1:]

View File

@@ -1,4 +1,4 @@
| Title | Message | | S. No | Title | Message |
|------:+--------:| |-------+:------+:-------:|
| t1 | msg1 | | 1 | t1 | msg1 |
| t2 | msg2 | | 2 | t2 | msg2 |

View File

@@ -1,4 +1,4 @@
| Title | Message | |S. No|Title|Message|
|------:+--------:| |-----+:----+:-----:|
| t1 | msg1 | |1|t1|msg1|
| t2 | msg2 | |2|t2|msg2|

View File

@@ -1,6 +1,6 @@
|--------------+------------------+------------| |--------------+------------------+------------|
| 测试测试 | 测试长度 | 长测试 | | 测试测试 | 测试长度 | 长测试 |
|--------------+------------------+-----------:| |--------------+:----------------:+-----------:|
| abc | 测试长度 | 长测试 | | abc | 测试长度 | 长测试 |
| 长 | 测试测试测试测试 | 测试测试 | | 长 | 测试测试测试测试 | 测试测试 |
| 测试测试 | 测试 | 测试测测试 | | 测试测试 | 测试 | 测试测测试 |

View File

@@ -1,6 +1,6 @@
|--------+--------+------| |--------+--------+------|
|测试测试|测试长度|长测试| |测试测试|测试长度|长测试|
|--------+--------+-----:| |--------+:------:+-----:|
|abc|测试长度|长测试| |abc|测试长度|长测试|
|长|测试测试测试测试|测试测试| |长|测试测试测试测试|测试测试|
|测试测试|测试|测试测测试| |测试测试|测试|测试测测试|