Merge branch 'dev' of https://github.com/lyokha/vimwiki into lyokha-dev

This commit is contained in:
Henry Qin 2019-04-10 10:48:42 -07:00
commit 08dcae9630
1 changed files with 48 additions and 3 deletions

View File

@ -268,9 +268,10 @@ function! s:get_rows(lnum, ...)
endfunction
function! s:get_cell_aligns(lnum)
function! s:get_cell_aligns(lnum, ...)
let aligns = {}
for [lnum, row] in s:get_rows(a:lnum)
let depth = a:0 > 0 ? a:1 : 0
for [lnum, row] in s:get_rows(a:lnum, depth)
if s:is_separator(row)
let cells = vimwiki#tbl#get_cells(row)
for idx in range(len(cells))
@ -296,6 +297,46 @@ function! s:get_cell_aligns(lnum)
endfunction
function! s:get_cell_fast_aligns(rows)
let aligns = {}
let clen = 0
for [lnum, row] in a:rows
if s:is_separator(row)
return s:get_cell_aligns(lnum, 1)
endif
let cells = vimwiki#tbl#get_cells(row, 1)
let clen = len(cells)
for idx in range(clen)
let cell = cells[idx]
if !has_key(aligns, idx)
let cs = matchlist(cell, '^\(\s*\)[^[:space:]].\{-}\(\s*\)$')
if !empty(cs)
let lstart = len(cs[1])
let lend = len(cs[2])
if lstart > 0 || lend > 0
if lstart > 0 && lend > 0
let aligns[idx] = 'center'
else
if lend > 0
let aligns[idx] = 'left'
elseif lstart > 0
let aligns[idx] = 'right'
endif
endif
endif
endif
endif
endfor
endfor
for idx in range(clen)
if !has_key(aligns, idx)
return {}
endif
endfor
return aligns
endfunction
function! s:get_cell_max_lens(lnum, ...)
let max_lens = {}
let rows = a:0 > 2 ? a:3 : s:get_rows(a:lnum)
@ -319,6 +360,7 @@ endfunction
function! s:get_aligned_rows(lnum, col1, col2, depth)
let rows = []
let aligns = {}
let startlnum = 0
let cells = []
let max_lens = {}
@ -349,6 +391,7 @@ function! s:get_aligned_rows(lnum, col1, col2, depth)
endif
let fst_lens = s:get_cell_max_lens(a:lnum, cells, startlnum, rows[0:0])
let check_all = max_lens != fst_lens
let aligns = s:get_cell_fast_aligns(rows[0:-2])
let rows[-1][1] = line
endif
endif
@ -367,7 +410,9 @@ function! s:get_aligned_rows(lnum, col1, col2, depth)
let max_lens[last_index] = 1
endif
endif
let aligns = s:get_cell_aligns(a:lnum)
if empty(aligns)
let aligns = s:get_cell_aligns(a:lnum)
endif
let result = []
for [lnum, row] in rows
if s:is_separator(row)