Even more neovim changes
diff --git a/modules/neovim/coc/keybinds.vim b/modules/neovim/coc/keybinds.vim
index bbc1694..a0a4371 100644
--- a/modules/neovim/coc/keybinds.vim
+++ b/modules/neovim/coc/keybinds.vim
@@ -11,13 +11,20 @@
let g:UltiSnipsExpandTrigger="<NUL>"
let g:UltiSnipsJumpForwardTrigger="<NUL>"
let g:UltiSnipsJumpBackwardTrigger="<NUL>"
+
inoremap <silent><expr> <CR> coc#pum#visible() ? "\<C-g>u" . coc#pum#confirm() :
- \ coc#jumpable() ? "\<C-g>u<Esc>:call coc#snippet#next()\<CR>" :
+ \ coc#jumpable() ? "\<Esc>:call coc#snippet#next()\<CR>" :
+ \ tablemode#table#IsTable('.') && !(tablemode#spreadsheet#GetLastRow(".") == line('.')) && !(tablemode#spreadsheet#GetLastRow(".") == 0) ? "\<Esc>:call tablemode#spreadsheet#cell#Motion('j')\<CR>:call tablemode#spreadsheet#MoveToStartOfCell()\<CR>" . mode() :
+ \ tablemode#table#IsTable('.') ? "<Esc>$a<CR>" :
\ "\<Plug>(PearTreeExpand)"
+
+inoremap <silent><expr> <S-CR> tablemode#table#IsTable('.') ? "\<Esc>:call tablemode#spreadsheet#cell#Motion('k')\<CR>:call tablemode#spreadsheet#MoveToStartOfCell()\<CR>" . mode() : "\<S-CR>"
+
inoremap <silent><expr> <Tab> coc#pum#visible() ? coc#pum#next(0) :
\ coc#expandableOrJumpable() ? "\<C-g>u\<C-r>=coc#rpc#request('doKeymap', ['snippets-expand-jump',''])\<CR>" :
- \ (pear_tree#GetSurroundingPair() != [] ? pear_tree#insert_mode#JumpOut() : (CheckBackSpace() ? "\<TAB>" :
- \ coc#refresh()))
+ \ pear_tree#GetSurroundingPair() != [] ? pear_tree#insert_mode#JumpOut() :
+ \ tablemode#table#IsTable('.') ? "\<Esc>:call tablemode#spreadsheet#cell#Motion('l')\<CR>" . mode() :
+ \ CheckBackSpace() ? "\<TAB>" : coc#refresh()
function! CheckBackSpace() abort
let col = col('.') - 1
@@ -25,34 +32,48 @@
endfunction
inoremap <silent><expr> <S-Tab> coc#pum#visible() ? coc#pum#prev(0) :
- \ coc#jumpable() ? "\<C-g>u<Esc>:call coc#snippet#prev()\<CR>" :
+ \ coc#jumpable() ? "\<Esc>:call coc#snippet#prev()\<CR>" :
+ \ tablemode#table#IsTable('.') ? "\<Esc>:call tablemode#spreadsheet#cell#Motion('h')\<CR>" . mode() :
\ "\<S-Tab>"
xnoremap <silent> <Tab> <Plug>(coc-snippets-select)
nnoremap <silent><expr> <CR> coc#jumpable() ?
\ ":call coc#snippet#next()\<CR>" :
+ \ tablemode#table#IsTable('.') ? "\<Esc>:call tablemode#spreadsheet#cell#Motion('j')\<CR>:call tablemode#spreadsheet#MoveToStartOfCell()\<CR>" :
\ "\<CR>"
+nnoremap <silent><expr> <S-CR> tablemode#table#IsTable('.') ? "\<Esc>:call tablemode#spreadsheet#cell#Motion('k')\<CR>:call tablemode#spreadsheet#MoveToStartOfCell()\<CR>" : "\<S-CR>"
+
nnoremap <silent><expr> <Tab> coc#jumpable() ?
\ ":call coc#snippet#next()\<CR>" :
- \ (pear_tree#GetSurroundingPair() != [] ? pear_tree#insert_mode#JumpOut() : "\<Tab>")
+ \ pear_tree#GetSurroundingPair() != [] ? pear_tree#insert_mode#JumpOut() :
+ \ tablemode#table#IsTable('.') ? "\<Esc>:call tablemode#spreadsheet#cell#Motion('l')\<CR>" :
+ \ "\<Tab>"
nnoremap <silent><expr> <S-Tab> coc#jumpable() ?
\ ":call coc#snippet#prev()\<CR>" :
+ \ tablemode#table#IsTable('.') ? "\<Esc>:call tablemode#spreadsheet#cell#Motion('h')\<CR>" :
\ "\<S-Tab>"
snoremap <silent><expr> <CR> coc#jumpable() ?
- \ "\<C-g>u<Esc>:call coc#snippet#next()\<CR>" :
+ \ "\<Esc>:call coc#snippet#next()\<CR>" :
\ "\<CR>"
snoremap <silent><expr> <Tab> coc#jumpable() ?
- \ "\<C-g>u<Esc>:call coc#snippet#next()\<CR>" :
+ \ "\<Esc>:call coc#snippet#next()\<CR>" :
\ (pear_tree#GetSurroundingPair() != [] ? pear_tree#insert_mode#JumpOut() : "\<Tab>")
snoremap <silent><expr> <S-Tab> coc#jumpable() ?
- \ "\<C-g>u<Esc>:call coc#snippet#prev()\<CR>" :
+ \ "\<Esc>:call coc#snippet#prev()\<CR>" :
\ "\<S-Tab>"
+noremap <C-CR> <CR>
+
+nnoremap <nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
+nnoremap <nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
+inoremap <nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<C-f>"
+inoremap <nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<C-b>"
+
function! s:show_documentation()
if (index(['vim','help'], &filetype) >= 0)
execute 'h '.expand('<cword>')