Add support for escaping the separator #118

Initial support. Alignment and border creation is fixed and is
consistent in considering the escaped table separator as part of the
column.

TODO :
* Fix syntax to reflect the above.
* Fix cell definition, motion & formula engine to incorporate this.
This commit is contained in:
Dhruva Sagar
2017-12-28 01:04:45 +05:30
parent 40fe641708
commit 322503e814
5 changed files with 15 additions and 3 deletions

View File

@@ -16,3 +16,9 @@ PLATFORMS
DEPENDENCIES
rake
vim-flavor (~> 1.1)
RUBY VERSION
ruby 2.3.0p0
BUNDLED WITH
1.13.6

View File

@@ -84,7 +84,7 @@ endfunction
function! tablemode#align#Align(lines) "{{{2
if empty(a:lines) | return [] | endif
let lines = map(a:lines, 'map(v:val, "v:key =~# \"text\" ? tablemode#align#Split(v:val, g:table_mode_separator) : v:val")')
let lines = map(a:lines, 'map(v:val, "v:key =~# \"text\" ? tablemode#align#Split(v:val, g:table_mode_escaped_separator_regex) : v:val")')
for line in lines
let stext = line.text

View File

@@ -33,8 +33,12 @@ function! s:GenerateHeaderBorder(line) "{{{2
let tline = line_val[stridx(line_val, g:table_mode_separator):strridx(line_val, g:table_mode_separator)]
let fillchar = tablemode#table#IsHeader(line - 1) ? g:table_mode_header_fillchar : g:table_mode_fillchar
let seperator_match_regex = g:table_mode_separator . '\zs\([^' . g:table_mode_separator . ']*\)\ze' . g:table_mode_separator
let border = substitute(tline, seperator_match_regex, '\=repeat(fillchar, tablemode#utils#StrDisplayWidth(submatch(0)))', 'g')
let special_replacement = '__'
let border = substitute(tline, g:table_mode_escaped_separator_regex, special_replacement, 'g')
let seperator_match_regex = special_replacement . '\zs\([^' . special_replacement . ']*\)\ze' . special_replacement
let border = substitute(border, seperator_match_regex, '\=repeat(fillchar, tablemode#utils#StrDisplayWidth(submatch(0)))', 'g')
let border = substitute(border, special_replacement, g:table_mode_separator, 'g')
let border = substitute(border, g:table_mode_separator, g:table_mode_corner, 'g')
let border = substitute(border, '^' . g:table_mode_corner . '\(.*\)' . g:table_mode_corner . '$', g:table_mode_corner_corner . '\1' . g:table_mode_corner_corner, '')

View File

@@ -18,6 +18,7 @@ endfunction
call s:SetGlobalOptDefault('table_mode_corner', '+')
call s:SetGlobalOptDefault('table_mode_verbose', 1)
call s:SetGlobalOptDefault('table_mode_separator', '|')
call s:SetGlobalOptDefault('table_mode_escaped_separator_regex', '\(\\\)\@<!' . g:table_mode_separator)
call s:SetGlobalOptDefault('table_mode_fillchar', '-')
call s:SetGlobalOptDefault('table_mode_header_fillchar', '-')
call s:SetGlobalOptDefault('table_mode_map_prefix', '<Leader>t')

View File

@@ -1,5 +1,6 @@
let g:table_mode_corner = '+'
let g:table_mode_separator = '|'
let g:table_mode_escaped_separator_regex = '\(\\\)\@<!|'
let g:table_mode_fillchar = '-'
let g:table_mode_header_fillchar = '-'
let g:table_mode_map_prefix = '<Leader>t'