Merge branch 'master' into feature/gfm_column_alignment

Conflicts:
	autoload/tablemode/table.vim
This commit is contained in:
Dhruva Sagar
2014-04-25 14:31:33 +05:30
9 changed files with 95 additions and 102 deletions

View File

@@ -90,7 +90,7 @@ function! tablemode#scope() "{{{2
return s:
endfunction
function! tablemode#IsTableModeActive() "{{{2
function! tablemode#IsActive() "{{{2
if g:table_mode_always_active | return 1 | endif
call s:SetBufferOptDefault('table_mode_active', 0)
@@ -98,10 +98,10 @@ function! tablemode#IsTableModeActive() "{{{2
endfunction
function! tablemode#TableizeInsertMode() "{{{2
if tablemode#IsTableModeActive() && getline('.') =~# (tablemode#table#StartExpr() . g:table_mode_separator . g:table_mode_separator)
if tablemode#IsActive() && getline('.') =~# (tablemode#table#StartExpr() . g:table_mode_separator . g:table_mode_separator)
call tablemode#table#AddHeaderBorder('.')
normal! A
elseif tablemode#IsTableModeActive() && getline('.') =~# (tablemode#table#StartExpr() . g:table_mode_separator)
elseif tablemode#IsActive() && getline('.') =~# (tablemode#table#StartExpr() . g:table_mode_separator)
let column = tablemode#utils#strlen(substitute(getline('.')[0:col('.')], '[^' . g:table_mode_separator . ']', '', 'g'))
let position = tablemode#utils#strlen(matchstr(getline('.')[0:col('.')], '.*' . g:table_mode_separator . '\s*\zs.*'))
call tablemode#table#Realign('.')
@@ -110,15 +110,15 @@ function! tablemode#TableizeInsertMode() "{{{2
endif
endfunction
function! tablemode#TableModeEnable() "{{{2
function! tablemode#Enable() "{{{2
call s:SetActive(1)
endfunction
function! tablemode#TableModeDisable() "{{{2
function! tablemode#Disable() "{{{2
call s:SetActive(0)
endfunction
function! tablemode#TableModeToggle() "{{{2
function! tablemode#Toggle() "{{{2
if g:table_mode_always_active
return 1
endif

View File

@@ -47,50 +47,50 @@ function! tablemode#spreadsheet#scope() "{{{2
endfunction
function! tablemode#spreadsheet#GetFirstRow(line) "{{{2
if tablemode#table#IsATableRow(a:line)
if tablemode#table#IsRow(a:line)
let line = tablemode#utils#line(a:line)
while tablemode#table#IsATableRow(line - 1) || tablemode#table#IsATableHeader(line - 1)
while tablemode#table#IsRow(line - 1) || tablemode#table#IsHeader(line - 1)
let line -= 1
endwhile
if tablemode#table#IsATableHeader(line) | let line += 1 | endif
if tablemode#table#IsHeader(line) | let line += 1 | endif
return line
endif
endfunction
function! tablemode#spreadsheet#MoveToFirstRow() "{{{2
if tablemode#table#IsATableRow('.')
if tablemode#table#IsRow('.')
call cursor(tablemode#spreadsheet#GetFirstRow('.'), col('.'))
endif
endfunction
function! tablemode#spreadsheet#GetLastRow(line) "{{{2
if tablemode#table#IsATableRow(a:line)
if tablemode#table#IsRow(a:line)
let line = tablemode#utils#line(a:line)
while tablemode#table#IsATableRow(line + 1) || tablemode#table#IsATableHeader(line + 1)
while tablemode#table#IsRow(line + 1) || tablemode#table#IsHeader(line + 1)
let line += 1
endwhile
if tablemode#table#IsATableHeader(line) | let line -= 1 | endif
if tablemode#table#IsHeader(line) | let line -= 1 | endif
return line
endif
endfunction
function! tablemode#spreadsheet#MoveToLastRow() "{{{2
if tablemode#table#IsATableRow('.')
if tablemode#table#IsRow('.')
call cursor(tablemode#spreadsheet#GetLastRow('.'), col('.'))
endif
endfunction
function! tablemode#spreadsheet#LineNr(row) "{{{2
if tablemode#table#IsATableRow('.')
if tablemode#table#IsRow('.')
let line = tablemode#spreadsheet#GetFirstRow('.')
let row_nr = 0
while tablemode#table#IsATableRow(line + 1) || tablemode#table#IsATableHeader(line + 1)
if tablemode#table#IsATableRow(line)
while tablemode#table#IsRow(line + 1) || tablemode#table#IsHeader(line + 1)
if tablemode#table#IsRow(line)
let row_nr += 1
if row ==# row_nr | break | endif
endif
@@ -105,8 +105,8 @@ function! tablemode#spreadsheet#RowNr(line) "{{{2
let line = tablemode#utils#line(a:line)
let rowNr = 0
while tablemode#table#IsATableRow(line) || tablemode#table#IsATableHeader(line)
if tablemode#table#IsATableRow(line) | let rowNr += 1 | endif
while tablemode#table#IsRow(line) || tablemode#table#IsHeader(line)
if tablemode#table#IsRow(line) | let rowNr += 1 | endif
let line -= 1
endwhile
@@ -117,14 +117,14 @@ function! tablemode#spreadsheet#RowCount(line) "{{{2
let line = tablemode#utils#line(a:line)
let [tline, totalRowCount] = [line, 0]
while tablemode#table#IsATableRow(tline) || tablemode#table#IsATableHeader(tline)
if tablemode#table#IsATableRow(tline) | let totalRowCount += 1 | endif
while tablemode#table#IsRow(tline) || tablemode#table#IsHeader(tline)
if tablemode#table#IsRow(tline) | let totalRowCount += 1 | endif
let tline -= 1
endwhile
let tline = line + 1
while tablemode#table#IsATableRow(tline) || tablemode#table#IsATableHeader(tline)
if tablemode#table#IsATableRow(tline) | let totalRowCount += 1 | endif
while tablemode#table#IsRow(tline) || tablemode#table#IsHeader(tline)
if tablemode#table#IsRow(tline) | let totalRowCount += 1 | endif
let tline += 1
endwhile
@@ -167,33 +167,33 @@ function! tablemode#spreadsheet#MoveToStartOfCell() "{{{2
endfunction
function! tablemode#spreadsheet#GetLastRow(line) "{{{2
if tablemode#table#IsATableRow(a:line)
if tablemode#table#IsRow(a:line)
let line = tablemode#utils#line(a:line)
while tablemode#table#IsATableRow(line + 1) || tablemode#table#IsATableHeader(line + 1)
while tablemode#table#IsRow(line + 1) || tablemode#table#IsHeader(line + 1)
let line += 1
endwhile
if tablemode#table#IsATableHeader(line) | let line -= 1 | endif
if tablemode#table#IsHeader(line) | let line -= 1 | endif
return line
endif
endfunction
function! tablemode#spreadsheet#GetFirstRow(line) "{{{2
if tablemode#table#IsATableRow(a:line)
if tablemode#table#IsRow(a:line)
let line = tablemode#utils#line(a:line)
while tablemode#table#IsATableRow(line - 1) || tablemode#table#IsATableHeader(line - 1)
while tablemode#table#IsRow(line - 1) || tablemode#table#IsHeader(line - 1)
let line -= 1
endwhile
if tablemode#table#IsATableHeader(line) | let line += 1 | endif
if tablemode#table#IsHeader(line) | let line += 1 | endif
return line
endif
endfunction
function! tablemode#spreadsheet#DeleteColumn() "{{{2
if tablemode#table#IsATableRow('.')
if tablemode#table#IsRow('.')
for i in range(v:count1)
call tablemode#spreadsheet#MoveToStartOfCell()
call tablemode#spreadsheet#MoveToFirstRow()
@@ -207,13 +207,13 @@ function! tablemode#spreadsheet#DeleteColumn() "{{{2
endfunction
function! tablemode#spreadsheet#DeleteRow() "{{{2
if tablemode#table#IsATableRow('.')
if tablemode#table#IsRow('.')
for i in range(v:count1)
if tablemode#table#IsATableRow('.')
if tablemode#table#IsRow('.')
normal! dd
endif
if !tablemode#table#IsATableRow('.')
if !tablemode#table#IsRow('.')
normal! k
endif
endfor

View File

@@ -71,7 +71,7 @@ endfunction
function! tablemode#spreadsheet#cell#GetCells(line, ...) abort
let line = tablemode#utils#line(a:line)
if tablemode#table#IsATableRow(line)
if tablemode#table#IsRow(line)
if a:0 < 1
let [row, colm] = [line, 0]
elseif a:0 < 2
@@ -84,8 +84,8 @@ function! tablemode#spreadsheet#cell#GetCells(line, ...) abort
if row == 0
let values = []
let line = first_row
while tablemode#table#IsATableRow(line) || tablemode#table#IsATableHeader(line)
if tablemode#table#IsATableRow(line)
while tablemode#table#IsRow(line) || tablemode#table#IsHeader(line)
if tablemode#table#IsRow(line)
let row_line = getline(line)[stridx(getline(line), g:table_mode_separator):strridx(getline(line), g:table_mode_separator)]
call add(values, tablemode#utils#strip(get(split(row_line, g:table_mode_separator), colm>0?colm-1:colm, '')))
endif
@@ -95,8 +95,8 @@ function! tablemode#spreadsheet#cell#GetCells(line, ...) abort
else
let row_nr = 0
let line = first_row
while tablemode#table#IsATableRow(line) || tablemode#table#IsATableHeader(line)
if tablemode#table#IsATableRow(line)
while tablemode#table#IsRow(line) || tablemode#table#IsHeader(line)
if tablemode#table#IsRow(line)
let row_nr += 1
if row ==# row_nr | break | endif
endif
@@ -142,7 +142,7 @@ function! tablemode#spreadsheet#cell#GetCellRange(range, ...) abort "{{{2
let values = []
if tablemode#table#IsATableRow(line)
if tablemode#table#IsRow(line)
let [row1, col1, row2, col2] = s:ParseRange(a:range, colm)
if row1 == row2
@@ -193,7 +193,7 @@ function! tablemode#spreadsheet#cell#SetCell(val, ...) "{{{2
let [line, row, colm] = a:000
endif
if tablemode#table#IsATableRow(line)
if tablemode#table#IsRow(line)
let line = tablemode#utils#line(line) + (row - tablemode#spreadsheet#RowNr(line)) * 1
let line_val = getline(line)
let cstartexpr = tablemode#table#StartCommentExpr()
@@ -211,7 +211,7 @@ function! tablemode#spreadsheet#cell#SetCell(val, ...) "{{{2
endif
endfunction
function! tablemode#spreadsheet#cell#TextObject(inner) "{{{2
if tablemode#table#IsATableRow('.')
if tablemode#table#IsRow('.')
call tablemode#spreadsheet#MoveToStartOfCell()
if a:inner
normal! v
@@ -223,11 +223,11 @@ function! tablemode#spreadsheet#cell#TextObject(inner) "{{{2
endfunction
function! tablemode#spreadsheet#cell#Motion(direction, ...) "{{{2
let l:count = a:0 ? a:1 : v:count1
if tablemode#table#IsATableRow('.')
if tablemode#table#IsRow('.')
for ii in range(l:count)
if a:direction ==# 'l'
if tablemode#spreadsheet#IsLastCell()
if !tablemode#table#IsATableRow(line('.') + 1) && (tablemode#table#IsATableHeader(line('.') + 1) && !tablemode#table#IsATableRow(line('.') + 2))
if !tablemode#table#IsRow(line('.') + 1) && (tablemode#table#IsHeader(line('.') + 1) && !tablemode#table#IsRow(line('.') + 2))
return
endif
call tablemode#spreadsheet#cell#Motion('j', 1)
@@ -242,7 +242,7 @@ function! tablemode#spreadsheet#cell#Motion(direction, ...) "{{{2
endif
elseif a:direction ==# 'h'
if tablemode#spreadsheet#IsFirstCell()
if !tablemode#table#IsATableRow(line('.') - 1) && (tablemode#table#IsATableHeader(line('.') - 1) && !tablemode#table#IsATableRow(line('.') - 2))
if !tablemode#table#IsRow(line('.') - 1) && (tablemode#table#IsHeader(line('.') - 1) && !tablemode#table#IsRow(line('.') - 2))
return
endif
call tablemode#spreadsheet#cell#Motion('k', 1)
@@ -256,18 +256,18 @@ function! tablemode#spreadsheet#cell#Motion(direction, ...) "{{{2
execute 'normal! 2F' . g:table_mode_separator . '2l'
endif
elseif a:direction ==# 'j'
if tablemode#table#IsATableRow(line('.') + 1)
if tablemode#table#IsRow(line('.') + 1)
" execute 'normal! ' . 1 . 'j'
normal! j
elseif tablemode#table#IsATableHeader(line('.') + 1) && tablemode#table#IsATableRow(line('.') + 2)
elseif tablemode#table#IsHeader(line('.') + 1) && tablemode#table#IsRow(line('.') + 2)
" execute 'normal! ' . 2 . 'j'
normal! 2j
endif
elseif a:direction ==# 'k'
if tablemode#table#IsATableRow(line('.') - 1)
if tablemode#table#IsRow(line('.') - 1)
" execute 'normal! ' . 1 . 'k'
normal! k
elseif tablemode#table#IsATableHeader(line('.') - 1) && tablemode#table#IsATableRow(line('.') - 2)
elseif tablemode#table#IsHeader(line('.') - 1) && tablemode#table#IsRow(line('.') - 2)
" execute 'normal! ' . (1 + 1) . 'k'
normal! 2k
endif

View File

@@ -39,7 +39,7 @@ function! tablemode#spreadsheet#formula#Add(...) "{{{2
if fr !=# ''
let fr = '$' . row . ',' . colm . '=' . fr
let fline = tablemode#spreadsheet#GetLastRow('.') + 1
if tablemode#table#IsATableHeader(fline) | let fline += 1 | endif
if tablemode#table#IsHeader(fline) | let fline += 1 | endif
let cursor_pos = [line('.'), col('.')]
if getline(fline) =~# 'tmf: '
" Comment line correctly
@@ -98,7 +98,7 @@ function! tablemode#spreadsheet#formula#EvaluateExpr(expr, line) abort "{{{2
call tablemode#spreadsheet#cell#SetCell(eval(expr), line, row, colm)
else
let [row, line] = [1, tablemode#spreadsheet#GetFirstRow(line)]
while tablemode#table#IsATableRow(line)
while tablemode#table#IsRow(line)
let texpr = expr
if expr =~# '\$'
let texpr = substitute(texpr, '\$\(\d\+\)',
@@ -126,17 +126,17 @@ function! tablemode#spreadsheet#formula#EvaluateFormulaLine() abort "{{{2
else
let matchexpr = '^\s* tmf: \zs.*$'
endif
if tablemode#table#IsATableRow('.') " We're inside the table
if tablemode#table#IsRow('.') " We're inside the table
let line = tablemode#spreadsheet#GetLastRow('.')
let fline = line + 1
if tablemode#table#IsATableHeader(fline) | let fline += 1 | endif
if tablemode#table#IsHeader(fline) | let fline += 1 | endif
if getline(fline) =~# 'tmf: '
let exprs = split(matchstr(getline(fline), matchexpr), ';')
endif
elseif getline('.') =~# 'tmf: ' " We're on the formula line
let line = line('.') - 1
if tablemode#table#IsATableHeader(line) | let line -= 1 | endif
if tablemode#table#IsATableRow(line)
if tablemode#table#IsHeader(line) | let line -= 1 | endif
if tablemode#table#IsRow(line)
let exprs = split(matchstr(getline('.'), matchexpr), ';')
endif
endif

View File

@@ -27,7 +27,7 @@ function! s:HeaderBorderExpr() "{{{2
endfunction
function! s:DefaultHeaderBorder() "{{{2
if tablemode#IsTableModeActive()
if tablemode#IsActive()
return g:table_mode_corner_corner . g:table_mode_fillchar . g:table_mode_corner . g:table_mode_fillchar . g:table_mode_corner_corner
else
return ''
@@ -36,15 +36,16 @@ endfunction
function! s:GenerateHeaderBorder(line) "{{{2
let line = tablemode#utils#line(a:line)
if tablemode#table#IsATableRow(line - 1) || tablemode#table#IsATableRow(line + 1)
if tablemode#table#IsRow(line - 1) || tablemode#table#IsRow(line + 1)
let line_val = ''
if tablemode#table#IsATableRow(line + 1)
if tablemode#table#IsRow(line + 1)
let line_val = getline(line + 1)
endif
if tablemode#table#IsATableRow(line - 1) && tablemode#utils#strlen(line_val) < tablemode#utils#strlen(getline(line - 1))
if tablemode#table#IsRow(line - 1) && tablemode#utils#strlen(line_val) < tablemode#utils#strlen(getline(line - 1))
let line_val = getline(line - 1)
endif
if tablemode#utils#strlen(line_val) <= 1 | return s:DefaultHeaderBorder() | 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(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_corner_corner . '\1' . g:table_mode_corner_corner, '')
@@ -134,12 +135,12 @@ function! tablemode#table#EndExpr() "{{{2
endif
endfunction
function! tablemode#table#IsATableRow(line) "{{{2
function! tablemode#table#IsRow(line) "{{{2
return getline(a:line) =~# (tablemode#table#StartExpr() . g:table_mode_separator . '[^' .
\ g:table_mode_fillchar . ']*[^' . g:table_mode_corner . ']*$')
endfunction
function! tablemode#table#IsATableHeader(line) "{{{2
function! tablemode#table#IsHeader(line) "{{{2
return getline(a:line) =~# s:HeaderBorderExpr()
endfunction
@@ -147,21 +148,13 @@ function! tablemode#table#AddHeaderBorder(line) "{{{2
call setline(a:line, s:GenerateHeaderBorder(a:line))
endfunction
function! tablemode#table#alignment(line) "{{{2
if a:line !~# '[^0-9\.]'
return 'r'
else
return 'l'
endif
endfunction
function! tablemode#table#Realign(line) "{{{2
let line = tablemode#utils#line(a:line)
let lines = []
let [lnum, blines] = [line, []]
while tablemode#table#IsATableRow(lnum) || tablemode#table#IsATableHeader(lnum)
if tablemode#table#IsATableHeader(lnum)
while tablemode#table#IsRow(lnum) || tablemode#table#IsHeader(lnum)
if tablemode#table#IsHeader(lnum)
call insert(blines, lnum)
let lnum -= 1
continue
@@ -171,13 +164,13 @@ function! tablemode#table#Realign(line) "{{{2
endwhile
let lnum = line + 1
while tablemode#table#IsATableRow(lnum) || tablemode#table#IsATableHeader(lnum)
if tablemode#table#IsATableHeader(lnum)
call insert(blines, lnum)
while tablemode#table#IsRow(lnum) || tablemode#table#IsHeader(lnum)
if tablemode#table#IsHeader(lnum)
call add(blines, lnum)
let lnum += 1
continue
endif
call insert(lines, {'lnum': lnum, 'text': getline(lnum)})
call add(lines, {'lnum': lnum, 'text': getline(lnum)})
let lnum += 1
endwhile

View File

@@ -45,7 +45,7 @@ call s:SetGlobalOptDefault('table_mode_corner_corner', '|')
call s:SetGlobalOptDefault('table_mode_align_char', ':')
function! s:TableEchoCell() "{{{1
if tablemode#table#IsATableRow('.')
if tablemode#table#IsRow('.')
echomsg '$' . tablemode#spreadsheet#RowNr('.') . ',' . tablemode#spreadsheet#ColumnNr('.')
endif
endfunction
@@ -53,10 +53,10 @@ endfunction
" Define Commands & Mappings {{{1
if !g:table_mode_always_active "{{{2
exec "nnoremap <silent> " . g:table_mode_map_prefix . g:table_mode_toggle_map .
\ " <Esc>:call tablemode#TableModeToggle()<CR>"
command! -nargs=0 TableModeToggle call tablemode#TableModeToggle()
command! -nargs=0 TableModeEnable call tablemode#TableModeEnable()
command! -nargs=0 TableModeDisable call tablemode#TableModeDisable()
\ " <Esc>:call tablemode#Toggle()<CR>"
command! -nargs=0 TableModeToggle call tablemode#Toggle()
command! -nargs=0 TableModeEnable call tablemode#Enable()
command! -nargs=0 TableModeDisable call tablemode#Disable()
else
let table_mode_separator_map = g:table_mode_separator
" '|' is a special character, we need to map <Bar> instead

View File

@@ -54,7 +54,7 @@ describe 'cell'
before
new
normal! ggdG
call tablemode#TableModeEnable()
call tablemode#Enable()
normal i|test11|test12|
|test21|test22|
call cursor(1, 3)
@@ -95,7 +95,7 @@ describe 'cell'
describe 'up or down'
before
new
normal! ggdG
normal! ggdG
call tablemode#Enable()
normal i|test11|test12|
|test21|test22|

View File

@@ -5,39 +5,39 @@ call vspec#hint({'scope': 'tablemode#table#scope()', 'sid': 'tablemode#table#sid
describe 'table'
describe 'API'
describe 'IsATableRow'
describe 'IsRow'
before
new
read t/fixtures/sample.txt
end
it 'should return true when inside a table'
Expect tablemode#table#IsATableRow(2) to_be_true
Expect tablemode#table#IsATableRow(3) to_be_true
Expect tablemode#table#IsRow(2) to_be_true
Expect tablemode#table#IsRow(3) to_be_true
end
it 'should return false when outside a table'
Expect tablemode#table#IsATableRow(1) to_be_false
Expect tablemode#table#IsATableRow(4) to_be_false
Expect tablemode#table#IsRow(1) to_be_false
Expect tablemode#table#IsRow(4) to_be_false
end
end
describe 'IsATableHeader'
describe 'IsHeader'
before
new
read t/fixtures/sample_with_header.txt
end
it 'should return true when on a table header'
Expect tablemode#table#IsATableHeader(3) to_be_true
Expect tablemode#table#IsATableHeader(6) to_be_true
Expect tablemode#table#IsHeader(3) to_be_true
Expect tablemode#table#IsHeader(6) to_be_true
end
it 'should return false when not on a table header'
Expect tablemode#table#IsATableHeader(1) to_be_false
Expect tablemode#table#IsATableHeader(2) to_be_false
Expect tablemode#table#IsATableHeader(4) to_be_false
Expect tablemode#table#IsATableHeader(5) to_be_false
Expect tablemode#table#IsHeader(1) to_be_false
Expect tablemode#table#IsHeader(2) to_be_false
Expect tablemode#table#IsHeader(4) to_be_false
Expect tablemode#table#IsHeader(5) to_be_false
end
end
end

View File

@@ -5,9 +5,9 @@ call vspec#hint({'scope': 'tablemode#scope()', 'sid': 'tablemode#sid()'})
describe 'tablemode'
describe 'Activation'
describe 'tablemode#TableModeEnable()'
describe 'tablemode#Enable()'
before
call tablemode#TableModeEnable()
call tablemode#Enable()
end
it 'should enable table mode'
@@ -15,9 +15,9 @@ describe 'tablemode'
end
end
describe 'tablemode#TableModeDisable()'
describe 'tablemode#Disable()'
before
call tablemode#TableModeDisable()
call tablemode#Disable()
end
it 'should disable table mode'
@@ -25,11 +25,11 @@ describe 'tablemode'
end
end
describe 'tablemode#TableModeToggle()'
describe 'tablemode#Toggle()'
it 'should toggle table mode'
call tablemode#TableModeToggle()
call tablemode#Toggle()
Expect b:table_mode_active to_be_true
call tablemode#TableModeToggle()
call tablemode#Toggle()
Expect b:table_mode_active to_be_false
end
end
@@ -43,14 +43,14 @@ describe 'tablemode'
it 'should tableize with default delimiter'
:2,3call tablemode#TableizeRange('')
Expect tablemode#table#IsATableRow(2) to_be_true
Expect tablemode#table#IsRow(2) to_be_true
Expect tablemode#spreadsheet#RowCount(2) == 2
Expect tablemode#spreadsheet#ColumnCount(2) == 3
end
it 'should tableize with given delimiter'
:2,3call tablemode#TableizeRange('/;')
Expect tablemode#table#IsATableRow(2) to_be_true
Expect tablemode#table#IsRow(2) to_be_true
Expect tablemode#spreadsheet#RowCount(2) == 2
Expect tablemode#spreadsheet#ColumnCount(2) == 2
end