mirror of
https://github.com/dhruvasagar/vim-table-mode.git
synced 2025-11-09 19:43:48 -05:00
Fixed motions to wrap around edges incorporating table header
This commit is contained in:
@@ -696,6 +696,10 @@ function! tablemode#IsATableRow(line) "{{{2
|
|||||||
\ g:table_mode_fillchar . ']*[^' . g:table_mode_corner . ']*$')
|
\ g:table_mode_fillchar . ']*[^' . g:table_mode_corner . ']*$')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! tablemode#IsATableHeader(line) "{{{2
|
||||||
|
return getline(a:line) =~# s:HeaderBorderExpr()
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! tablemode#LineNr(row) "{{{2
|
function! tablemode#LineNr(row) "{{{2
|
||||||
if tablemode#IsATableRow('.')
|
if tablemode#IsATableRow('.')
|
||||||
let line = s:Line('.')
|
let line = s:Line('.')
|
||||||
@@ -760,7 +764,9 @@ function! tablemode#TableMotion(direction) "{{{2
|
|||||||
if tablemode#IsATableRow('.')
|
if tablemode#IsATableRow('.')
|
||||||
if a:direction ==# 'l'
|
if a:direction ==# 'l'
|
||||||
if s:IsLastCell()
|
if s:IsLastCell()
|
||||||
if !tablemode#IsATableRow(line('.') + s:RowGap()) | return | endif
|
if !tablemode#IsATableHeader(line('.') + s:RowGap()) && !tablemode#IsATableRow(line('.') + s:RowGap())
|
||||||
|
return
|
||||||
|
endif
|
||||||
call tablemode#TableMotion('j')
|
call tablemode#TableMotion('j')
|
||||||
normal! 0
|
normal! 0
|
||||||
endif
|
endif
|
||||||
@@ -773,7 +779,9 @@ function! tablemode#TableMotion(direction) "{{{2
|
|||||||
endif
|
endif
|
||||||
elseif a:direction ==# 'h'
|
elseif a:direction ==# 'h'
|
||||||
if s:IsFirstCell()
|
if s:IsFirstCell()
|
||||||
if !tablemode#IsATableRow(line('.') - s:RowGap()) | return | endif
|
if !tablemode#IsATableHeader(line('.') - s:RowGap()) && !tablemode#IsATableRow(line('.') - s:RowGap())
|
||||||
|
return
|
||||||
|
endif
|
||||||
call tablemode#TableMotion('k')
|
call tablemode#TableMotion('k')
|
||||||
normal! $
|
normal! $
|
||||||
endif
|
endif
|
||||||
@@ -785,9 +793,17 @@ function! tablemode#TableMotion(direction) "{{{2
|
|||||||
execute 'normal! 2F' . g:table_mode_separator . '2l'
|
execute 'normal! 2F' . g:table_mode_separator . '2l'
|
||||||
endif
|
endif
|
||||||
elseif a:direction ==# 'j'
|
elseif a:direction ==# 'j'
|
||||||
if tablemode#IsATableRow(line('.') + s:RowGap()) | execute 'normal ' . s:RowGap() . 'j' | endif
|
if tablemode#IsATableRow(line('.') + s:RowGap())
|
||||||
|
execute 'normal ' . s:RowGap() . 'j'
|
||||||
|
elseif tablemode#IsATableHeader(line('.') + s:RowGap())
|
||||||
|
execute 'normal ' . (s:RowGap() + 1) . 'j'
|
||||||
|
endif
|
||||||
elseif a:direction ==# 'k'
|
elseif a:direction ==# 'k'
|
||||||
if tablemode#IsATableRow(line('.') - s:RowGap()) | execute 'normal ' . s:RowGap() . 'k' | endif
|
if tablemode#IsATableRow(line('.') - s:RowGap())
|
||||||
|
execute 'normal ' . s:RowGap() . 'k'
|
||||||
|
elseif tablemode#IsATableHeader(line('.') - s:RowGap())
|
||||||
|
execute 'normal ' . (s:RowGap() + 1) . 'k'
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
Reference in New Issue
Block a user