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>')