diff options
Diffstat (limited to 'vim/bundle/vim-table-mode/autoload/tablemode/spreadsheet.vim')
m--------- | vim/bundle/vim-table-mode | 0 | ||||
-rw-r--r-- | vim/bundle/vim-table-mode/autoload/tablemode/spreadsheet.vim | 189 |
2 files changed, 0 insertions, 189 deletions
diff --git a/vim/bundle/vim-table-mode b/vim/bundle/vim-table-mode new file mode 160000 +Subproject b613e39bd08ecebdb9b18100dae518050f49604 diff --git a/vim/bundle/vim-table-mode/autoload/tablemode/spreadsheet.vim b/vim/bundle/vim-table-mode/autoload/tablemode/spreadsheet.vim deleted file mode 100644 index 6f79d5c..0000000 --- a/vim/bundle/vim-table-mode/autoload/tablemode/spreadsheet.vim +++ /dev/null @@ -1,189 +0,0 @@ -" Private Functions {{{1 -function! s:Sum(list) "{{{2 - let result = 0.0 - for item in a:list - if type(item) == type(1) || type(item) == type(1.0) - let result += item - elseif type(item) == type('') - let result += str2float(item) - elseif type(item) == type([]) - let result += s:Sum(item) - endif - endfor - return result -endfunction - -function! s:Average(list) "{{{2 - return s:Sum(a:list)/len(a:list) -endfunction - -" Public Functions {{{1 -function! tablemode#spreadsheet#GetFirstRow(line) "{{{2 - if tablemode#table#IsRow(a:line) - let line = tablemode#utils#line(a:line) - - while !tablemode#table#IsHeader(line - 1) && (tablemode#table#IsRow(line - 1) || tablemode#table#IsBorder(line - 1)) - let line -= 1 - endwhile - if tablemode#table#IsBorder(line) | let line += 1 | endif - - return line - endif -endfunction - -function! tablemode#spreadsheet#MoveToFirstRow() "{{{2 - if tablemode#table#IsRow('.') - call cursor(tablemode#spreadsheet#GetFirstRow('.'), col('.')) - endif -endfunction - -function! tablemode#spreadsheet#GetLastRow(line) "{{{2 - if tablemode#table#IsRow(a:line) - let line = tablemode#utils#line(a:line) - - while tablemode#table#IsTable(line + 1) - let line += 1 - endwhile - if tablemode#table#IsBorder(line) | let line -= 1 | endif - - return line - endif -endfunction - -function! tablemode#spreadsheet#MoveToLastRow() "{{{2 - if tablemode#table#IsRow('.') - call cursor(tablemode#spreadsheet#GetLastRow('.'), col('.')) - endif -endfunction - -function! tablemode#spreadsheet#LineNr(line, row) "{{{2 - if tablemode#table#IsRow(a:line) - let line = tablemode#spreadsheet#GetFirstRow(a:line) - let row_nr = 0 - - while tablemode#table#IsTable(line + 1) - if tablemode#table#IsRow(line) - let row_nr += 1 - if a:row ==# row_nr | break | endif - endif - let line += 1 - endwhile - - return line - endif -endfunction - -function! tablemode#spreadsheet#RowNr(line) "{{{2 - let line = tablemode#utils#line(a:line) - - let rowNr = 0 - while !tablemode#table#IsHeader(line) && tablemode#table#IsTable(line) - if tablemode#table#IsRow(line) | let rowNr += 1 | endif - let line -= 1 - endwhile - - return rowNr -endfunction - -function! tablemode#spreadsheet#RowCount(line) "{{{2 - let line = tablemode#utils#line(a:line) - - let [tline, totalRowCount] = [line, 0] - while !tablemode#table#IsHeader(tline) && tablemode#table#IsTable(tline) - if tablemode#table#IsRow(tline) | let totalRowCount += 1 | endif - let tline -= 1 - endwhile - - let tline = line + 1 - while !tablemode#table#IsHeader(tline) && tablemode#table#IsTable(tline) - if tablemode#table#IsRow(tline) | let totalRowCount += 1 | endif - let tline += 1 - endwhile - - return totalRowCount -endfunction - -function! tablemode#spreadsheet#ColumnNr(pos) "{{{2 - let pos = [] - if type(a:pos) == type('') - let pos = [line(a:pos), col(a:pos)] - elseif type(a:pos) == type([]) - let pos = a:pos - else - return 0 - endif - let row_start = stridx(getline(pos[0]), g:table_mode_separator) - return tablemode#utils#strlen(substitute(getline(pos[0])[(row_start):pos[1]-2], '[^' . g:table_mode_separator . ']', '', 'g')) -endfunction - -function! tablemode#spreadsheet#ColumnCount(line) "{{{2 - let line = tablemode#utils#line(a:line) - - return tablemode#utils#strlen(substitute(getline(line), '[^' . g:table_mode_separator . ']', '', 'g'))-1 -endfunction - -function! tablemode#spreadsheet#IsFirstCell() "{{{2 - return tablemode#spreadsheet#ColumnNr('.') ==# 1 -endfunction - -function! tablemode#spreadsheet#IsLastCell() "{{{2 - return tablemode#spreadsheet#ColumnNr('.') ==# tablemode#spreadsheet#ColumnCount('.') -endfunction - -function! tablemode#spreadsheet#MoveToStartOfCell() "{{{2 - if getline('.')[col('.')-1] ==# g:table_mode_separator && !tablemode#spreadsheet#IsLastCell() - normal! 2l - else - execute 'normal! F' . g:table_mode_separator . '2l' - endif -endfunction - -function! tablemode#spreadsheet#DeleteColumn() "{{{2 - if tablemode#table#IsRow('.') - for i in range(v:count1) - call tablemode#spreadsheet#MoveToStartOfCell() - call tablemode#spreadsheet#MoveToFirstRow() - silent! execute "normal! h\<C-V>f" . g:table_mode_separator - call tablemode#spreadsheet#MoveToLastRow() - normal! d - endfor - - call tablemode#table#Realign('.') - endif -endfunction - -function! tablemode#spreadsheet#DeleteRow() "{{{2 - if tablemode#table#IsRow('.') - for i in range(v:count1) - if tablemode#table#IsRow('.') - normal! dd - endif - - if !tablemode#table#IsRow('.') - normal! k - endif - endfor - - call tablemode#table#Realign('.') - endif -endfunction - -function! tablemode#spreadsheet#Sum(range, ...) abort "{{{2 - let args = copy(a:000) - call insert(args, a:range) - return s:Sum(call('tablemode#spreadsheet#cell#GetCellRange', args)) -endfunction - -function! tablemode#spreadsheet#Average(range, ...) abort "{{{2 - let args = copy(a:000) - 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 |