commit 5e4a89c89889c2e630cc97c620bc138c7efa5adf
parent 07ba7339f15b4c975aef83ecf79ebf9d6c656b37
Author: lyokha <alexey.radkov@gmail.com>
Date: Fri, 15 Mar 2019 15:31:28 +0300
faster table format on InsertLeave; faster s:get_rows()
Diffstat:
2 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/autoload/vimwiki/tbl.vim b/autoload/vimwiki/tbl.vim
@@ -226,8 +226,7 @@ function! s:get_rows(lnum, ...)
return
endif
- let upper_rows = []
- let lower_rows = []
+ let rows = []
let lnum = a:lnum - 1
let depth = a:0 > 0 ? a:1 : 0
@@ -235,20 +234,23 @@ function! s:get_rows(lnum, ...)
while lnum >= 1 && (depth == 0 || ldepth < depth)
let line = getline(lnum)
if s:is_table(line)
- call add(upper_rows, [lnum, line])
+ call insert(rows, [lnum, line])
else
break
endif
let lnum -= 1
let ldepth += 1
endwhile
- call reverse(upper_rows)
let lnum = a:lnum
while lnum <= line('$')
let line = getline(lnum)
if s:is_table(line)
- call add(lower_rows, [lnum, line])
+ if lnum == a:lnum
+ let cells = vimwiki#tbl#get_cells(line)
+ let line = s:fmt_row(cells, repeat([0], len(cells)), 0, 0)
+ endif
+ call add(rows, [lnum, line])
else
break
endif
@@ -258,7 +260,7 @@ function! s:get_rows(lnum, ...)
let lnum += 1
endwhile
- return upper_rows + lower_rows
+ return rows
endfunction
diff --git a/plugin/vimwiki.vim b/plugin/vimwiki.vim
@@ -261,7 +261,7 @@ augroup vimwiki
" Format tables when exit from insert mode. Do not use textwidth to
" autowrap tables.
if vimwiki#vars#get_global('table_auto_fmt')
- exe 'autocmd InsertLeave *'.s:ext.' call vimwiki#tbl#format(line("."))'
+ exe 'autocmd InsertLeave *'.s:ext.' call vimwiki#tbl#format(line("."), 2)'
exe 'autocmd InsertEnter *'.s:ext.' call vimwiki#tbl#reset_tw(line("."))'
endif
if vimwiki#vars#get_global('folding') =~? ':quick$'