mirror of
https://github.com/dhruvasagar/vim-table-mode.git
synced 2025-11-08 11:03:47 -05:00
Fix #103 : Refactored border creation
Border creation should not conflict with the contents of the row
This commit is contained in:
@@ -1,4 +1,8 @@
|
|||||||
" Private Functions {{{1
|
" Private Functions {{{1
|
||||||
|
function! s:blank(string) "{{{2
|
||||||
|
return a:string =~# '^\s*$'
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! s:BorderExpr() "{{{2
|
function! s:BorderExpr() "{{{2
|
||||||
return tablemode#table#StartExpr() .
|
return tablemode#table#StartExpr() .
|
||||||
\ '[' . g:table_mode_corner . g:table_mode_corner_corner . ']' .
|
\ '[' . g:table_mode_corner . g:table_mode_corner_corner . ']' .
|
||||||
@@ -27,14 +31,11 @@ function! s:GenerateHeaderBorder(line) "{{{2
|
|||||||
endif
|
endif
|
||||||
if tablemode#utils#strlen(line_val) <= 1 | return s:DefaultBorder() | endif
|
if tablemode#utils#strlen(line_val) <= 1 | return s:DefaultBorder() | endif
|
||||||
|
|
||||||
let border = substitute(line_val[stridx(line_val, g:table_mode_separator):strridx(line_val, g:table_mode_separator)], g:table_mode_separator, g:table_mode_corner, 'g')
|
let tline = line_val[stridx(line_val, g:table_mode_separator):strridx(line_val, g:table_mode_separator)]
|
||||||
" To accurately deal with unicode double width characters
|
let fillchar = tablemode#table#IsHeader(line - 1) ? g:table_mode_header_fillchar : g:table_mode_fillchar
|
||||||
if tablemode#table#IsHeader(line - 1)
|
let seperator_match_regex = g:table_mode_separator . '\zs\([^' . g:table_mode_separator . ']*\)\ze' . g:table_mode_separator
|
||||||
let fill_columns = map(split(border, g:table_mode_corner), 'repeat(g:table_mode_header_fillchar, tablemode#utils#StrDisplayWidth(v:val))')
|
let border = substitute(tline, seperator_match_regex, '\=repeat(fillchar, tablemode#utils#StrDisplayWidth(submatch(0)))', 'g')
|
||||||
else
|
let border = substitute(border, g:table_mode_separator, g:table_mode_corner, 'g')
|
||||||
let fill_columns = map(split(border, g:table_mode_corner), 'repeat(g:table_mode_fillchar, tablemode#utils#StrDisplayWidth(v:val))')
|
|
||||||
endif
|
|
||||||
let border = g:table_mode_corner . join(fill_columns, g:table_mode_corner) . g:table_mode_corner
|
|
||||||
let border = substitute(border, '^' . g:table_mode_corner . '\(.*\)' . g:table_mode_corner . '$', g:table_mode_corner_corner . '\1' . g:table_mode_corner_corner, '')
|
let border = substitute(border, '^' . g:table_mode_corner . '\(.*\)' . g:table_mode_corner . '$', g:table_mode_corner_corner . '\1' . g:table_mode_corner_corner, '')
|
||||||
|
|
||||||
" Incorporate header alignment chars
|
" Incorporate header alignment chars
|
||||||
@@ -135,7 +136,7 @@ function! tablemode#table#EndExpr() "{{{2
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! tablemode#table#IsBorder(line) "{{{2
|
function! tablemode#table#IsBorder(line) "{{{2
|
||||||
return !empty(getline(a:line)) && getline(a:line) =~# s:BorderExpr()
|
return !s:blank(getline(a:line)) && getline(a:line) =~# s:BorderExpr()
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! tablemode#table#IsHeader(line) "{{{2
|
function! tablemode#table#IsHeader(line) "{{{2
|
||||||
|
|||||||
Reference in New Issue
Block a user