Added a mapping `<Plug>(table-mode-sort)` which is mapped by default to
`<Leader>ts` that sorts the current table by the column in which the
cursor is currently.

Also added `TableSort` command that gives you a little more control over
the sorting, you can pass in additional :sort flags like u, i, n etc and
also use it with a `!` to sort in reverse order.
This commit is contained in:
Dhruva Sagar
2014-09-17 01:36:59 +05:30
parent c5258f7ae8
commit ef0eef0f35
3 changed files with 13 additions and 0 deletions

View File

@@ -43,6 +43,7 @@ function! s:ToggleMapping() "{{{2
call s:Map('<Plug>(table-mode-add-formula)', '<Leader>tfa', 'n')
call s:Map('<Plug>(table-mode-eval-formula)', '<Leader>tfe', 'n')
call s:Map('<Plug>(table-mode-echo-cell)', '<Leader>t?', 'n')
call s:Map('<Plug>(table-mode-sort)', '<Leader>ts', 'n')
else
call s:UnMap(separator_map, 'i')
call s:UnMap('{<Bar>', 'n')
@@ -56,6 +57,7 @@ function! s:ToggleMapping() "{{{2
call s:UnMap('<Leader>tfa', 'n')
call s:UnMap('<Leader>tfe', 'n')
call s:UnMap('<Leader>t?', 'n')
call s:UnMap('<Leader>ts', 'n')
endif
endif
endfunction

View File

@@ -179,3 +179,11 @@ function! tablemode#spreadsheet#Average(range, ...) abort "{{{2
call insert(args, a:range)
return s:Average(call('tablemode#spreadsheet#cell#GetCellRange', args))
endfunction
function! tablemode#spreadsheet#Sort(bang, ...) "{{{2
let opts = a:0 ? a:1 : ''
let bang = a:bang ? '!' : ''
let [firstRow, lastRow] = [tablemode#spreadsheet#GetFirstRow('.'), tablemode#spreadsheet#GetLastRow('.')]
call tablemode#spreadsheet#MoveToStartOfCell()
exec ':'.firstRow.','.lastRow . 'sort'.bang opts '/.*\%'.col('.').'v/'
endfunction

View File

@@ -57,6 +57,7 @@ endif
" }}}2
command! -nargs=? -range Tableize <line1>,<line2>call tablemode#TableizeRange(<q-args>)
command! -nargs=? -bang TableSort call tablemode#spreadsheet#Sort(<bang>0, <q-args>)
command! TableAddFormula call tablemode#spreadsheet#formula#Add()
command! TableModeRealign call tablemode#table#Realign('.')
command! TableEvalFormulaLine call tablemode#spreadsheet#formula#EvaluateFormulaLine()
@@ -89,6 +90,8 @@ nnoremap <silent> <Plug>(table-mode-eval-formula) :call tablemode#spreadsheet#fo
nnoremap <silent> <Plug>(table-mode-echo-cell) :call <SID>TableEchoCell()<CR>
nnoremap <silent> <Plug>(table-mode-sort) :call tablemode#spreadsheet#Sort()<CR>
if !hasmapto('<Plug>(table-mode-tableize)')
nmap <Leader>tt <Plug>(table-mode-tableize)
xmap <Leader>tt <Plug>(table-mode-tableize)