diff options
-rw-r--r-- | ftplugin/rst_tables.vim | 42 | ||||
-rw-r--r-- | src/base.vim | 8 | ||||
-rw-r--r-- | src/rst_tables.py | 3 |
3 files changed, 15 insertions, 38 deletions
diff --git a/ftplugin/rst_tables.vim b/ftplugin/rst_tables.vim index 6c994ce..ed2bd9f 100644 --- a/ftplugin/rst_tables.vim +++ b/ftplugin/rst_tables.vim @@ -20,16 +20,13 @@ python << endpython import vim import re import textwrap -import unicodedata -import codecs -from vim_bridge import bridged def get_table_bounds(): row, col = vim.current.window.cursor upper = lower = row try: - while vim.current.buffer[upper - 1].strip() and upper > 0: + while vim.current.buffer[upper - 1].strip(): upper -= 1 except IndexError: pass @@ -164,17 +161,8 @@ def table_line(widths, header=False): def get_field_width(field_text): - return max(map(get_string_width, field_text.split('\n'))) - -def get_string_width(string): - width = 0 - for char in list(string): - eaw = unicodedata.east_asian_width(char) - if eaw == 'Na' or eaw == 'H': - width += 1 - else: - width += 2 - return width + return max(map(lambda s: len(s), field_text.split('\n'))) + def split_row_into_lines(row): row = map(lambda field: field.split('\n'), row) @@ -285,39 +273,31 @@ def draw_table(indent, table, manual_widths=None): return output -@bridged def reformat_table(): upper, lower, indent = get_table_bounds() - encoding = vim.eval("&encoding") - slice = map(lambda x: codecs.decode(x, encoding), \ - vim.current.buffer[upper - 1:lower]) + slice = vim.current.buffer[upper - 1:lower] table = parse_table(slice) slice = draw_table(indent, table) - vim.current.buffer[upper - 1:lower] = map(lambda x: \ - codecs.encode(x, encoding), slice) + vim.current.buffer[upper - 1:lower] = slice -@bridged def reflow_table(): upper, lower, indent = get_table_bounds() - encoding = vim.eval("&encoding") - slice = map(lambda x: codecs.decode(x, encoding), \ - vim.current.buffer[upper - 1:lower]) + slice = vim.current.buffer[upper - 1:lower] widths = get_column_widths_from_border_spec(slice) table = parse_table(slice) slice = draw_table(indent, table, widths) - vim.current.buffer[upper - 1:lower] = map(lambda x: \ - codecs.encode(x, encoding), slice) + vim.current.buffer[upper - 1:lower] = slice endpython " Add mappings, unless the user didn't want this. " The default mapping is registered, unless the user remapped it already. if !exists("no_plugin_maps") && !exists("no_rst_table_maps") - if !hasmapto('ReformatTable(') - noremap <silent> <leader><leader>c :call ReformatTable()<CR> + if !hasmapto(' reformat_table(') + noremap <silent> <leader><leader>c :python reformat_table()<CR> endif - if !hasmapto('ReflowTable(') - noremap <silent> <leader><leader>f :call ReflowTable()<CR> + if !hasmapto(' reflow_table(') + noremap <silent> <leader><leader>f :python reflow_table()<CR> endif endif diff --git a/src/base.vim b/src/base.vim index 037a9dd..282f4e0 100644 --- a/src/base.vim +++ b/src/base.vim @@ -23,10 +23,10 @@ endpython " Add mappings, unless the user didn't want this. " The default mapping is registered, unless the user remapped it already. if !exists("no_plugin_maps") && !exists("no_rst_table_maps") - if !hasmapto('ReformatTable(') - noremap <silent> <leader><leader>c :call ReformatTable()<CR> + if !hasmapto(' reformat_table(') + noremap <silent> <leader><leader>c :python reformat_table()<CR> endif - if !hasmapto('ReflowTable(') - noremap <silent> <leader><leader>f :call ReflowTable()<CR> + if !hasmapto(' reflow_table(') + noremap <silent> <leader><leader>f :python reflow_table()<CR> endif endif diff --git a/src/rst_tables.py b/src/rst_tables.py index 50f5b3b..a2cfc43 100644 --- a/src/rst_tables.py +++ b/src/rst_tables.py @@ -1,7 +1,6 @@ import vim import re import textwrap -from vim_bridge import bridged def get_table_bounds(): @@ -255,7 +254,6 @@ def draw_table(indent, table, manual_widths=None): return output -@bridged def reformat_table(): upper, lower, indent = get_table_bounds() slice = vim.current.buffer[upper - 1:lower] @@ -264,7 +262,6 @@ def reformat_table(): vim.current.buffer[upper - 1:lower] = slice -@bridged def reflow_table(): upper, lower, indent = get_table_bounds() slice = vim.current.buffer[upper - 1:lower] |