mirror of
https://github.com/dhruvasagar/vim-table-mode.git
synced 2025-11-08 11:03:47 -05:00
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:
@@ -16,3 +16,9 @@ PLATFORMS
|
||||
DEPENDENCIES
|
||||
rake
|
||||
vim-flavor (~> 1.1)
|
||||
|
||||
RUBY VERSION
|
||||
ruby 2.3.0p0
|
||||
|
||||
BUNDLED WITH
|
||||
1.13.6
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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, '')
|
||||
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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'
|
||||
|
||||
Reference in New Issue
Block a user