Prettify tbl.vim
This commit is contained in:
parent
dfc5344d0c
commit
667929d3f9
@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
" Clause: Load only once
|
||||||
if exists('g:loaded_vimwiki_tbl_auto') || &compatible
|
if exists('g:loaded_vimwiki_tbl_auto') || &compatible
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
@ -53,12 +54,14 @@ function! s:sep_splitter() abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" Check if param:line is in a table
|
||||||
function! s:is_table(line) abort
|
function! s:is_table(line) abort
|
||||||
return s:is_separator(a:line) ||
|
return s:is_separator(a:line) ||
|
||||||
\ (a:line !~# s:rxSep().s:rxSep() && a:line =~# '^\s*'.s:rxSep().'.\+'.s:rxSep().'\s*$')
|
\ (a:line !~# s:rxSep().s:rxSep() && a:line =~# '^\s*'.s:rxSep().'.\+'.s:rxSep().'\s*$')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" Check if param:line is a separator (ex: | --- | --- |)
|
||||||
function! s:is_separator(line) abort
|
function! s:is_separator(line) abort
|
||||||
return a:line =~# '^\s*'.s:rxSep().'\(:\=--\+:\='.s:rxSep().'\)\+\s*$'
|
return a:line =~# '^\s*'.s:rxSep().'\(:\=--\+:\='.s:rxSep().'\)\+\s*$'
|
||||||
endfunction
|
endfunction
|
||||||
@ -668,6 +671,7 @@ endfunction
|
|||||||
|
|
||||||
|
|
||||||
function! vimwiki#tbl#format(lnum, ...) abort
|
function! vimwiki#tbl#format(lnum, ...) abort
|
||||||
|
" Clause in
|
||||||
if !vimwiki#u#ft_is_vw()
|
if !vimwiki#u#ft_is_vw()
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
@ -756,69 +760,66 @@ endfunction
|
|||||||
|
|
||||||
" TODO: move_column_left and move_column_right are good candidates to be refactored.
|
" TODO: move_column_left and move_column_right are good candidates to be refactored.
|
||||||
function! vimwiki#tbl#move_column_left() abort
|
function! vimwiki#tbl#move_column_left() abort
|
||||||
|
" Clause in
|
||||||
"echomsg "DEBUG move_column_left: "
|
|
||||||
|
|
||||||
let line = getline('.')
|
let line = getline('.')
|
||||||
|
|
||||||
if !s:is_table(line)
|
if !s:is_table(line)
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let cur_col = s:cur_column()
|
let cur_col = s:cur_column()
|
||||||
if cur_col == -1
|
if cur_col == -1
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
if cur_col <= 0
|
||||||
if cur_col > 0
|
return
|
||||||
call vimwiki#tbl#format(line('.'), cur_col-1, cur_col)
|
|
||||||
call cursor(line('.'), 1)
|
|
||||||
|
|
||||||
let sep = '\('.s:rxSep().'\).\zs'
|
|
||||||
let mpos = -1
|
|
||||||
let col = -1
|
|
||||||
while col < cur_col-1
|
|
||||||
let mpos = match(line, sep, mpos+1)
|
|
||||||
if mpos != -1
|
|
||||||
let col += 1
|
|
||||||
else
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
call vimwiki#tbl#format(line('.'), cur_col-1, cur_col)
|
||||||
|
call cursor(line('.'), 1)
|
||||||
|
|
||||||
|
let sep = '\('.s:rxSep().'\).\zs'
|
||||||
|
let mpos = -1
|
||||||
|
let col = -1
|
||||||
|
while col < cur_col-1
|
||||||
|
let mpos = match(line, sep, mpos+1)
|
||||||
|
if mpos != -1
|
||||||
|
let col += 1
|
||||||
|
else
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
function! vimwiki#tbl#move_column_right() abort
|
function! vimwiki#tbl#move_column_right() abort
|
||||||
|
" Clause in
|
||||||
let line = getline('.')
|
let line = getline('.')
|
||||||
|
|
||||||
if !s:is_table(line)
|
if !s:is_table(line)
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let cur_col = s:cur_column()
|
let cur_col = s:cur_column()
|
||||||
if cur_col == -1
|
if cur_col == -1
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
if cur_col >= s:col_count(line('.'))-1
|
||||||
if cur_col < s:col_count(line('.'))-1
|
return
|
||||||
call vimwiki#tbl#format(line('.'), cur_col, cur_col+1)
|
|
||||||
call cursor(line('.'), 1)
|
|
||||||
|
|
||||||
let sep = '\('.s:rxSep().'\).\zs'
|
|
||||||
let mpos = -1
|
|
||||||
let col = -1
|
|
||||||
while col < cur_col+1
|
|
||||||
let mpos = match(line, sep, mpos+1)
|
|
||||||
if mpos != -1
|
|
||||||
let col += 1
|
|
||||||
else
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
endwhile
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Format table && Put cursor on first col
|
||||||
|
call vimwiki#tbl#format(line('.'), cur_col, cur_col+1)
|
||||||
|
call cursor(line('.'), 1)
|
||||||
|
|
||||||
|
" Change add one to all col
|
||||||
|
let sep = '\('.s:rxSep().'\).\zs'
|
||||||
|
let mpos = -1
|
||||||
|
let col = -1
|
||||||
|
while col < cur_col+1
|
||||||
|
let mpos = match(line, sep, mpos+1)
|
||||||
|
if mpos != -1
|
||||||
|
let col += 1
|
||||||
|
else
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
@ -845,4 +846,3 @@ endfunction
|
|||||||
function! vimwiki#tbl#sep_splitter() abort
|
function! vimwiki#tbl#sep_splitter() abort
|
||||||
return s:sep_splitter()
|
return s:sep_splitter()
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user