Compare commits

..

1 Commits

Author SHA1 Message Date
Dhruva Sagar
2e909c0668 Releasing Table Mode v3.1
* Removed table border and related options. You can now optionally have
  a header instead, simply add a table header and add a border to it
  triggered by the vim iabbrev '+-' on the line immidiately after the
  header and it will expand to the correct border. It will auto update
  as the table realigns with changes. Similar approach as followed by
  tables in org-mode.
* Fixed bug of incorrect indentation of a newly added formula line.
* Fixed bug in ConvertDelimiterToSeparator causing incorrect
  tableization of commented blocks of delimited content.
2013-09-19 02:06:22 +05:30
12 changed files with 54 additions and 331 deletions

1
.gitignore vendored
View File

@@ -1,2 +1 @@
tags tags
.vim-flavor/

View File

@@ -1,4 +0,0 @@
language: ruby
rvm:
- 1.9.3
script: rake ci

View File

@@ -1,16 +1,4 @@
# Change Log # Change Log
## Version 3.2
* Added tests to test various use cases using <a
href='https://github.com/kana/vim-vspec'>Vspec</a>..
* Added travis integration for automated tests.
## Version 3.1
* Removed borders. You can now optionally create a table header by simply
adding a header border immidiately after the header line by using the
iabbrev trigger '+-'. Just type that on the line immidiately after the
header and press space / \<CR\> to complete the header border.
* Some Bug Fixes
## Version 3.0 ## Version 3.0
* Removed dependence on Tabular and added code borrowed from Tabular for * Removed dependence on Tabular and added code borrowed from Tabular for
aligning the table rows. aligning the table rows.

View File

@@ -1,4 +0,0 @@
source 'https://rubygems.org'
gem 'rake'
gem 'vim-flavor', '~> 1.1'

View File

@@ -1,18 +0,0 @@
GEM
remote: https://rubygems.org/
specs:
blankslate (2.1.2.4)
parslet (1.5.0)
blankslate (~> 2.0)
rake (10.1.0)
thor (0.18.1)
vim-flavor (1.1.2)
parslet (~> 1.0)
thor (~> 0.14)
PLATFORMS
ruby
DEPENDENCIES
rake
vim-flavor (~> 1.1)

View File

@@ -1,4 +1,4 @@
# VIM Table Mode [![Build Status](https://travis-ci.org/dhruvasagar/soulmate_rails.png?branch=master)](https://travis-ci.org/dhruvasagar/soulmate_rails) # VIM Table Mode
An awesome automatic table creator & formatter allowing one to create neat An awesome automatic table creator & formatter allowing one to create neat
tables as you type. tables as you type.
@@ -11,21 +11,17 @@ CHANGELOG.md </a>
## Getting Started ## Getting Started
### Installation ### Installation
There are several ways to do this There are 2 ways to do this
1. I recommend installing <a 1. I recommend installing <a
href="https://github.com/Shougo/neobundle.vim">NeoBundle</a> and then just href="https://github.com/tpope/vim-pathogen">pathogen.vim</a> and then
add `NeoBundle 'dhruvasagar/vim-table-mode'` to your ~/.vimrc adding a git submodule for your plugin:
2. If you are using <a
href="https://github.com/tpope/vim-pathogen">pathogen.vim</a>, then
add a git submodule for your plugin:
```sh ```sh
$ cd ~/.vim $ cd ~/.vim
$ git submodule add git@github.com:dhruvasagar/vim-table-mode.git bundle/table-mode $ git submodule add git@github.com:dhruvasagar/vim-table-mode.git bundle/table-mode
``` ```
3. Copy autoload/todomode.vim, plugin/todo-mode.vim, doc/todo-mode.txt to 2. Copy autoload/todomode.vim, plugin/todo-mode.vim, doc/todo-mode.txt to
respective ~/.vim/autoload/, ~/.vim/plugin and ~/.vim/doc under UNIX or respective ~/.vim/autoload/, ~/.vim/plugin and ~/.vim/doc under UNIX or
vimfiles/autoload/, vimfiles/plugin/ and vimfiles/doc under WINDOWS and vimfiles/autoload/, vimfiles/plugin/ and vimfiles/doc under WINDOWS and
restart VIM restart VIM

View File

@@ -1,13 +0,0 @@
#!/usr/bin/env rake
task :ci => [:dump, :test]
task :dump do
sh 'vim --version'
end
task :test do
sh 'bundle exec vim-flavor test'
end
task :default => :test

View File

@@ -1 +0,0 @@
kana/vim-vspec (1.1.2)

View File

@@ -4,7 +4,7 @@
" Author: Dhruva Sagar <http://dhruvasagar.com/> " Author: Dhruva Sagar <http://dhruvasagar.com/>
" License: MIT (http://www.opensource.org/licenses/MIT) " License: MIT (http://www.opensource.org/licenses/MIT)
" Website: http://github.com/dhruvasagar/vim-table-mode " Website: http://github.com/dhruvasagar/vim-table-mode
" Version: 3.2 " Version: 3.1
" Note: This plugin was heavily inspired by the 'CucumberTables.vim' " Note: This plugin was heavily inspired by the 'CucumberTables.vim'
" (https://gist.github.com/tpope/287147) plugin by Tim Pope and " (https://gist.github.com/tpope/287147) plugin by Tim Pope and
" uses a small amount of code from it. " uses a small amount of code from it.
@@ -113,6 +113,9 @@ function! s:StartExpr() "{{{2
endif endif
endfunction endfunction
function! s:HeaderBorderExpr() "{{{2
return '^\s*' . g:table_mode_corner . '[' . g:table_mode_fillchar . g:table_mode_corner . ']*' . g:table_mode_corner . '$'
endfunction
function! s:EndExpr() "{{{2 function! s:EndExpr() "{{{2
let cend = s:GetCommentEnd() let cend = s:GetCommentEnd()
@@ -123,14 +126,6 @@ function! s:EndExpr() "{{{2
endif endif
endfunction endfunction
function! s:HeaderBorderExpr() "{{{2
return s:StartExpr() .
\ '[' . g:table_mode_corner . g:table_mode_separator . ']' .
\ '[' . g:table_mode_fillchar . g:table_mode_corner . ']*' .
\ '[' . g:table_mode_corner . g:table_mode_separator . ']' .
\ s:EndExpr()
endfunction
function! s:StartCommentExpr() "{{{2 function! s:StartCommentExpr() "{{{2
let cstartexpr = s:GetCommentStart() let cstartexpr = s:GetCommentStart()
if s:Strlen(cstartexpr) > 0 if s:Strlen(cstartexpr) > 0
@@ -170,12 +165,12 @@ function! s:ToggleMapping() "{{{2
execute "inoremap <silent> <buffer> " . b:table_mode_separator_map . ' ' . execute "inoremap <silent> <buffer> " . b:table_mode_separator_map . ' ' .
\ b:table_mode_separator_map . "<Esc>:call tablemode#TableizeInsertMode()<CR>a" \ b:table_mode_separator_map . "<Esc>:call tablemode#TableizeInsertMode()<CR>a"
execute "inoremap <silent> <buffer> " . g:table_mode_corner . execute "inoreabbrev <silent> <buffer> " . g:table_mode_corner .
\ g:table_mode_fillchar . " <Esc>:call tablemode#AddHeaderBorder('.')<CR>A" \ g:table_mode_fillchar . "<Esc>:call tablemode#AddHeaderBorder('.')<CR>A"
else else
execute "iunmap <silent> <buffer> " . b:table_mode_separator_map execute "iunmap <silent> <buffer> " . b:table_mode_separator_map
execute "iunmap <silent> <buffer> " . g:table_mode_corner . g:table_mode_fillchar execute "iunabbrev <silent> <buffer> " . g:table_mode_corner . g:table_mode_fillchar
endif endif
endfunction endfunction
@@ -186,17 +181,10 @@ endfunction
function! s:GenerateHeaderBorder(line) "{{{2 function! s:GenerateHeaderBorder(line) "{{{2
let line = s:Line(a:line) let line = s:Line(a:line)
if tablemode#IsATableRow(line - s:RowGap()) || tablemode#IsATableRow(line + s:RowGap()) if tablemode#IsATableRow(line - s:RowGap())
let line_val = '' let line_val = getline(line - s:RowGap())
if tablemode#IsATableRow(line + s:RowGap())
let line_val = getline(line + s:RowGap())
endif
if tablemode#IsATableRow(line - s:RowGap()) && s:Strlen(line_val) < s:Strlen(getline(line - s:RowGap()))
let line_val = getline(line - s:RowGap())
endif
let border = substitute(line_val[stridx(line_val, g:table_mode_separator):strridx(line_val, g:table_mode_separator)], g:table_mode_separator, g:table_mode_corner, 'g') let border = substitute(line_val[stridx(line_val, g:table_mode_separator):strridx(line_val, g:table_mode_separator)], g:table_mode_separator, g:table_mode_corner, 'g')
let border = substitute(border, '[^' . g:table_mode_corner . ']', g:table_mode_fillchar, 'g') let border = substitute(border, '[^' . g:table_mode_corner . ']', g:table_mode_fillchar, 'g')
let border = substitute(border, '^' . g:table_mode_corner . '\(.*\)' . g:table_mode_corner . '$', g:table_mode_separator . '\1' . g:table_mode_separator , '')
let cstartexpr = s:StartCommentExpr() let cstartexpr = s:StartCommentExpr()
if s:Strlen(cstartexpr) > 0 && getline(line) =~# cstartexpr if s:Strlen(cstartexpr) > 0 && getline(line) =~# cstartexpr
@@ -420,7 +408,7 @@ function! s:ParseRange(range, ...) "{{{2
else else
let [row2, col2] = [rcs2[0], default_col] let [row2, col2] = [rcs2[0], default_col]
endif endif
return [row1, col1, row2, col2] return [row1, col1, row2, col2]
endfunction endfunction
@@ -583,15 +571,6 @@ endfunction
" Public API {{{1 " Public API {{{1
function! tablemode#sid() "{{{2
return maparg('<SID>', 'n')
endfunction
nnoremap <SID> <SID>
function! tablemode#scope() "{{{2
return s:
endfunction
function! tablemode#GetLastRow(line) "{{{2 function! tablemode#GetLastRow(line) "{{{2
return s:GetLastRow(a:line) return s:GetLastRow(a:line)
endfunction endfunction
@@ -655,26 +634,31 @@ function! tablemode#TableRealign(line) "{{{2
let line = s:Line(a:line) let line = s:Line(a:line)
let [lnums, lines] = [[], []] let [lnums, lines] = [[], []]
let [tline, blines] = [line, []] let [bline, tline] = [0, line]
while tablemode#IsATableRow(tline) || getline(tline) =~# s:HeaderBorderExpr() while tablemode#IsATableRow(tline)
if getline(tline) =~# s:HeaderBorderExpr()
call insert(blines, tline)
let tline = tline - s:RowGap()
continue
endif
call insert(lnums, tline) call insert(lnums, tline)
call insert(lines, getline(tline)) call insert(lines, getline(tline))
let tline = tline - s:RowGap() let tline = tline - s:RowGap()
endwhile endwhile
" If we reached header walking upwards
if getline(tline) =~# s:HeaderBorderExpr() && tablemode#IsATableRow(tline - s:RowGap())
let bline = tline
let tline = tline - s:RowGap()
" Insert the header line
call insert(lnums, tline)
call insert(lines, getline(tline))
endif
let tline = line + s:RowGap() let tline = line + s:RowGap()
while tablemode#IsATableRow(tline) || getline(tline) =~# s:HeaderBorderExpr() " If we start at header
if getline(tline) =~# s:HeaderBorderExpr() if !bline && getline(tline) =~# s:HeaderBorderExpr()
call insert(blines, tline) let bline = tline
let tline = tline + s:RowGap() let tline = tline + s:RowGap()
continue endif
endif
while tablemode#IsATableRow(tline)
call add(lnums, tline) call add(lnums, tline)
call add(lines, getline(tline)) call add(lines, getline(tline))
let tline = tline + s:RowGap() let tline = tline + s:RowGap()
@@ -687,29 +671,13 @@ function! tablemode#TableRealign(line) "{{{2
call setline(lnum, lines[index]) call setline(lnum, lines[index])
endfor endfor
for bline in blines if bline
call tablemode#AddHeaderBorder(bline) call tablemode#AddHeaderBorder(bline)
endfor endif
endfunction endfunction
function! tablemode#IsATableRow(line) "{{{2 function! tablemode#IsATableRow(line) "{{{2
return getline(a:line) =~# (s:StartExpr() . g:table_mode_separator . '[^' . return getline(a:line) =~# (s:StartExpr() . g:table_mode_separator)
\ g:table_mode_fillchar . ']*[^' . g:table_mode_corner . ']*$')
endfunction
function! tablemode#IsATableHeader(line) "{{{2
return getline(a:line) =~# s:HeaderBorderExpr()
endfunction
function! tablemode#LineNr(row) "{{{2
if tablemode#IsATableRow('.')
let line = s:Line('.')
let row = tablemode#RowNr('.')
if a:row != row
let line += a:row - row
endif
return line
endif
endfunction endfunction
function! tablemode#RowCount(line) "{{{2 function! tablemode#RowCount(line) "{{{2
@@ -765,9 +733,7 @@ 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#IsATableHeader(line('.') + s:RowGap()) && !tablemode#IsATableRow(line('.') + s:RowGap()) if !tablemode#IsATableRow(line('.') + s:RowGap()) | return | endif
return
endif
call tablemode#TableMotion('j') call tablemode#TableMotion('j')
normal! 0 normal! 0
endif endif
@@ -780,9 +746,7 @@ function! tablemode#TableMotion(direction) "{{{2
endif endif
elseif a:direction ==# 'h' elseif a:direction ==# 'h'
if s:IsFirstCell() if s:IsFirstCell()
if !tablemode#IsATableHeader(line('.') - s:RowGap()) && !tablemode#IsATableRow(line('.') - s:RowGap()) if !tablemode#IsATableRow(line('.') - s:RowGap()) | return | endif
return
endif
call tablemode#TableMotion('k') call tablemode#TableMotion('k')
normal! $ normal! $
endif endif
@@ -794,17 +758,9 @@ 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()) if tablemode#IsATableRow(line('.') + s:RowGap()) | execute 'normal ' . s:RowGap() . 'j' | endif
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()) if tablemode#IsATableRow(line('.') - s:RowGap()) | execute 'normal ' . s:RowGap() . 'k' | endif
execute 'normal ' . s:RowGap() . 'k'
elseif tablemode#IsATableHeader(line('.') - s:RowGap())
execute 'normal ' . (s:RowGap() + 1) . 'k'
endif
endif endif
endif endif
endfunction endfunction
@@ -825,21 +781,7 @@ endfunction
function! tablemode#DeleteColumn() "{{{2 function! tablemode#DeleteColumn() "{{{2
if tablemode#IsATableRow('.') if tablemode#IsATableRow('.')
for i in range(v:count1) for i in range(v:count1)
call s:MoveToStartOfCell() call s:MoveToFirstRow()
if tablemode#IsATableRow(line('.') + 1)
call s:MoveToFirstRow()
" If we have a header delete it first
if tablemode#IsATableRow(line('.')-2)
call cursor(line('.')-2, col('.'))
silent! execute "normal! h\<C-V>f" . g:table_mode_separator
normal! jdjj
endif
else " We're already on the header
silent! execute "normal! h\<C-V>f" . g:table_mode_separator
normal! jdjj
endif
call s:MoveToStartOfCell() call s:MoveToStartOfCell()
silent! execute "normal! h\<C-V>f" . g:table_mode_separator silent! execute "normal! h\<C-V>f" . g:table_mode_separator
call s:MoveToLastRow() call s:MoveToLastRow()
@@ -853,11 +795,15 @@ endfunction
function! tablemode#DeleteRow() "{{{2 function! tablemode#DeleteRow() "{{{2
if tablemode#IsATableRow('.') if tablemode#IsATableRow('.')
for i in range(v:count1) for i in range(v:count1)
if tablemode#IsATableRow('.') if tablemode#RowCount('.') ==# 1
normal! dd normal! kVjjd
else
normal! kVjd
endif endif
if !tablemode#IsATableRow('.') if tablemode#IsATableRow(line('.')+1)
normal! j
else
normal! k normal! k
endif endif
endfor endfor
@@ -906,7 +852,6 @@ function! tablemode#AddFormula() "{{{2
if fr !=# '' if fr !=# ''
let fr = '$' . row . ',' . colm . '=' . fr let fr = '$' . row . ',' . colm . '=' . fr
let fline = tablemode#GetLastRow('.') + s:RowGap() let fline = tablemode#GetLastRow('.') + s:RowGap()
if getline(fline) =~# s:HeaderBorderExpr() | let fline += s:RowGap() | endif
let cursor_pos = [line('.'), col('.')] let cursor_pos = [line('.'), col('.')]
if getline(fline) =~# 'tmf: ' if getline(fline) =~# 'tmf: '
" Comment line correctly " Comment line correctly
@@ -995,14 +940,11 @@ function! tablemode#EvaluateFormulaLine() abort "{{{2
endif endif
if tablemode#IsATableRow('.') " We're inside the table if tablemode#IsATableRow('.') " We're inside the table
let line = s:GetLastRow('.') let line = s:GetLastRow('.')
let fline = line + s:RowGap() if getline(line + s:RowGap()) =~# 'tmf: '
if getline(fline) =~# s:HeaderBorderExpr() | let fline += s:RowGap() | endif let exprs = split(matchstr(getline(line + s:RowGap()), matchexpr), ';')
if getline(fline) =~# 'tmf: '
let exprs = split(matchstr(getline(fline), matchexpr), ';')
endif endif
elseif getline('.') =~# 'tmf: ' " We're on the formula line elseif getline('.') =~# 'tmf: ' " We're on the formula line
let line = line('.') - s:RowGap() let line = line('.') - s:RowGap()
if getline(line) =~# s:HeaderBorderExpr() | let line -= s:RowGap() | endif
if tablemode#IsATableRow(line) if tablemode#IsATableRow(line)
let exprs = split(matchstr(getline('.'), matchexpr), ';') let exprs = split(matchstr(getline('.'), matchexpr), ';')
endif endif

View File

@@ -1,7 +1,7 @@
*table-mode.txt* Table Mode for easy table formatting. v3.2 *table-mode.txt* Table Mode for easy table formatting. v3.1
=============================================================================== ===============================================================================
Table Mode, THE AWESOME AUTOMATIC TABLE CREATOR & FORMATTER Table Mode, THE AWESOME AUTOMATIC TABLE CREATOR & FORMATTER
VERSION 3.2 VERSION 3.1
Author: Dhruva Sagar <http://dhruvasagar.com/> Author: Dhruva Sagar <http://dhruvasagar.com/>
License: MIT <http://opensource.org/licenses/MIT/> License: MIT <http://opensource.org/licenses/MIT/>
@@ -29,7 +29,7 @@ GETTING STARTED *table-mode-getting-started*
Create Table on the fly: Create Table on the fly:
Using Table Mode is dead simple. You simply start typing on a new line Using Table Mode is dead simple. You simply start typing on a new line
with the table separator - |table-mode-separator|, and you just type with the table separator - |g:table-mode-separator|, and you just type
away! The plugin does the rest automatically for you as you type. With away! The plugin does the rest automatically for you as you type. With
each additional separator you add, it aligns the table properly, each additional separator you add, it aligns the table properly,
without having to do anything else. without having to do anything else.

View File

@@ -4,7 +4,7 @@
" Author: Dhruva Sagar <http://dhruvasagar.com/> " Author: Dhruva Sagar <http://dhruvasagar.com/>
" License: MIT (http://www.opensource.org/licenses/MIT) " License: MIT (http://www.opensource.org/licenses/MIT)
" Website: http://github.com/dhruvasagar/vim-table-mode " Website: http://github.com/dhruvasagar/vim-table-mode
" Version: 3.2 " Version: 3.1
" Note: This plugin was heavily inspired by the 'CucumberTables.vim' " Note: This plugin was heavily inspired by the 'CucumberTables.vim'
" (https://gist.github.com/tpope/287147) plugin by Tim Pope and " (https://gist.github.com/tpope/287147) plugin by Tim Pope and
" uses a small amount of code from it. " uses a small amount of code from it.

View File

@@ -1,162 +0,0 @@
let g:table_mode_corner = '+'
let g:table_mode_separator = '|'
let g:table_mode_fillchar = '-'
let g:table_mode_map_prefix = '<Leader>t'
let g:table_mode_toggle_map = 'm'
let g:table_mode_always_active = 0
let g:table_mode_delimiter = ','
let g:table_mode_tableize_map = 't'
let g:table_mode_tableize_op_map = '<Leader>T'
let g:table_mode_realign_map = 'r'
let g:table_mode_cell_text_object = 'tc'
let g:table_mode_delete_row_map = 'dd'
let g:table_mode_delete_column_map = 'dc'
let g:table_mode_add_formula_map = 'fa'
let g:table_mode_eval_expr_map = 'fe'
call vspec#hint({'scope': 'tablemode#scope()', 'sid': 'tablemode#sid()'})
describe 'tablemode'
describe 'Activation'
describe 'tablemode#TableModeEnable()'
before
call tablemode#TableModeEnable()
end
it 'should enable table mode'
Expect b:table_mode_active to_be_true
end
end
describe 'tablemode#TableModeDisable()'
before
call tablemode#TableModeDisable()
end
it 'should disable table mode'
Expect b:table_mode_active to_be_false
end
end
describe 'tablemode#TableModeToggle()'
it 'should toggle table mode'
call tablemode#TableModeToggle()
Expect b:table_mode_active to_be_true
call tablemode#TableModeToggle()
Expect b:table_mode_active to_be_false
end
end
end
describe 'API'
before
normal! ggdG
call tablemode#TableModeEnable()
normal! i
|test11|test12|
|test21|test22|
end
it 'should return true when inside a table'
Expect tablemode#IsATableRow(2) to_be_true
end
it 'should return false when outside a table'
Expect tablemode#IsATableRow(4) to_be_false
end
it 'should return the row count'
Expect tablemode#RowCount(2) == 2
Expect tablemode#RowCount(3) == 2
end
it 'should return the row number'
Expect tablemode#RowNr(2) == 1
Expect tablemode#RowNr(3) == 2
end
it 'should return the column count'
Expect tablemode#ColumnCount(2) == 2
Expect tablemode#ColumnCount(3) == 2
end
it 'should return the line number of the first row'
Expect tablemode#GetFirstRow(2) == 2
Expect tablemode#GetFirstRow(3) == 2
end
it 'should return the line nuber of the last row'
Expect tablemode#GetLastRow(2) == 3
Expect tablemode#GetLastRow(3) == 3
end
it 'should return the cells'
Expect Call('s:GetCells', 2, 1, 1) ==# 'test11'
" Get Rows
Expect Call('s:GetCells', 2, 1) == ['test11', 'test12']
Expect Call('s:GetCells', 2, 2) == ['test21', 'test22']
" Get Columns
Expect Call('s:GetCells', 2, 0, 1) == ['test11', 'test21']
Expect Call('s:GetCells', 2, 0, 2) == ['test12', 'test22']
end
it 'should return the cells in a range'
" Entire table as range
Expect Call('s:GetCellRange', '1,1:2,2', 2, 1) == [['test11', 'test21'], ['test12', 'test22']]
" Get Rows given different seed lines and columns
Expect Call('s:GetCellRange', '1,1:1,2', 2, 1) == ['test11', 'test12']
Expect Call('s:GetCellRange', '1,1:1,2', 2, 2) == ['test11', 'test12']
Expect Call('s:GetCellRange', '1,1:1,2', 3, 1) == ['test11', 'test12']
Expect Call('s:GetCellRange', '1,1:1,2', 3, 2) == ['test11', 'test12']
Expect Call('s:GetCellRange', '2,1:2,2', 2, 1) == ['test21', 'test22']
Expect Call('s:GetCellRange', '2,1:2,2', 2, 2) == ['test21', 'test22']
Expect Call('s:GetCellRange', '2,1:2,2', 3, 1) == ['test21', 'test22']
Expect Call('s:GetCellRange', '2,1:2,2', 3, 2) == ['test21', 'test22']
" Get Columns given different seed lines and column
Expect Call('s:GetCellRange', '1:2', 2, 1) == ['test11', 'test21']
Expect Call('s:GetCellRange', '1:2', 2, 2) == ['test12', 'test22']
Expect Call('s:GetCellRange', '1:2', 3, 1) == ['test11', 'test21']
Expect Call('s:GetCellRange', '1:2', 3, 2) == ['test12', 'test22']
" Get Column given negative values in range for representing rows from
" the end, -1 being the second last row.
Expect Call('s:GetCellRange', '1:-1', 2, 1) == ['test11']
Expect Call('s:GetCellRange', '1:-1', 3, 1) == ['test11']
Expect Call('s:GetCellRange', '1:-1', 2, 2) == ['test12']
Expect Call('s:GetCellRange', '1:-1', 3, 2) == ['test12']
end
end
describe 'Tableize'
before
normal! ggdG
normal! i
asd,asd;asd,asd
asd,asd;asd,asd
end
it 'should tableize with default delimiter'
:2,3call tablemode#TableizeRange('')
Expect tablemode#IsATableRow(2) to_be_true
Expect tablemode#RowCount(2) == 2
Expect tablemode#ColumnCount(2) == 3
end
it 'should tableize with given delimiter'
:2,3call tablemode#TableizeRange('/;')
Expect tablemode#IsATableRow(2) to_be_true
Expect tablemode#RowCount(2) == 2
Expect tablemode#ColumnCount(2) == 2
end
end
describe 'Motions'
it 'should work'
TODO
end
end
describe 'Manipulations'
it 'should work'