Compare commits

...

29 Commits

Author SHA1 Message Date
Dhruva Sagar
c547471c0e Bump version to 4.7.5 2021-12-02 00:30:20 +05:30
Dhruva Sagar
bdcffffe1f Attempt to Fix #173 2021-12-02 00:28:56 +05:30
Dhruva Sagar
01a395df00 Add github sponsors! 2021-10-27 00:02:13 +05:30
Dhruva Sagar
2e95bc6991 Merge pull request #208 from jdorel/feature-cellcolor
(feature) highlight cell color based on cell prefix
2021-10-08 01:25:54 +05:30
Jonas DOREL
0fe6bd87ac feat(highlight): add color prefixes 2021-10-07 18:37:17 +02:00
Jonas DOREL
59900a3fef fix(regex): some words start with no 2021-10-05 20:20:57 +02:00
Dhruva Sagar
eb42c62812 Merge pull request #207 from jdorel/feature-cellcolor
feat(highlight): color cell if contains yes,no,?
2021-10-05 22:43:52 +05:30
Jonas DOREL
e5dc853ee3 fix(highlight): disable highlight when word before 2021-10-05 17:29:47 +02:00
Jonas DOREL
c949912bfa feat(highlight): color cell if contains yes,no,? 2021-10-05 16:06:53 +02:00
Dhruva Sagar
02d28b9323 Move echo cell functionality to autoload. Fixes #206 2021-09-04 23:24:42 +05:30
Dhruva Sagar
35e9fbf64c Improve formula evaluation. Fix #201
A past change added support for html comments for tables, however, this
fails when the formula line happens to match the format of html comments
2021-05-30 03:53:41 +05:30
Dhruva Sagar
5150f1ec06 Merge pull request #200 from bmundt6/master
Handle separator map and map target separately
2021-05-05 23:04:42 +05:30
Dhruva Sagar
d9334c52cc Bump ruby version for travis 2021-05-05 22:27:01 +05:30
Dhruva Sagar
88b9c85af3 Update doc and fixed specs 2021-05-05 22:23:35 +05:30
Dhruva Sagar
26d2390548 Merge branch 'master' into bmundt6-master 2021-05-05 22:23:27 +05:30
Dhruva Sagar
7b17c692e9 Update ruby to 3.0.0 for testing
Bump version to version 4.7.4
2021-05-05 22:12:44 +05:30
Benjamin Mundt
8dcdfad1ee Define separator map in one place as a global; add separator map target for separators other than | 2021-04-29 14:15:48 -04:00
Dhruva Sagar
659ba4f39c Merge pull request #187 from rohieb/doc
doc: correctly document fillchar and header fillchar
2020-10-14 01:06:56 +05:30
Roland Hieber
04b14c345e doc: correctly document fillchar and header fillchar 2020-10-07 23:05:51 +02:00
Dhruva Sagar
3476c4e517 Improve Tableize. Fix #109.
This adds a new option `g:table_mode_tableize_auto_border` that allows
to enable automatic border creation when using Tableize to create tables
2020-08-19 21:59:37 +05:30
Dhruva Sagar
88cb2e44b6 Bump version 2020-08-02 23:28:10 +05:30
Dhruva Sagar
336262d04f Fix #184
Improve formula evaluation, support border rows
2020-08-02 23:26:27 +05:30
Dhruva Sagar
5c489b57e8 Improve documentation. Fix #183
Update the vim help documentation to match the correct mappings
& behavior
2020-07-27 19:51:11 +05:30
Dhruva Sagar
436e7d6c21 Merge pull request #182 from CaninoDev/patch-2
Update README.md
2020-07-25 01:52:55 +05:30
Dhruva Sagar
1ea7960834 Merge pull request #181 from CaninoDev/patch-1
Add instructions for installation via vim-plug
2020-07-25 01:51:52 +05:30
IanGC
ff38f4451b Update README.md
1) `it's` is a contraction of `it is`. `its` is the possessive
2) Made consistent the formatting of `[count]` as used in various locations
3) Made consistent the various `g:` formattings
4) `immidiately` is correctly spelled `immediately`
5) Shortened some sentences for clarity

As an aside, this is an immensely useful plugin. Thanks so much for contributing your code.
2020-07-24 15:48:47 -04:00
IanGC
d5b9ce4d9e Add instructions for installation via vim-plug 2020-07-24 15:26:10 -04:00
Dhruva Sagar
6404009080 Improve documentation of g:table_mode_disable_tableize_mappings 2020-05-06 20:29:11 +05:30
Dhruva Sagar
c9b13e5d30 Add config to disable tableize mappings. Fix 176 2020-05-06 20:20:53 +05:30
12 changed files with 179 additions and 91 deletions

2
.github/FUNDING.yml vendored
View File

@@ -1,6 +1,6 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
github: dhruvasagar
patreon: # Replace with a single Patreon username
open_collective: vim-table-mode
ko_fi: # Replace with a single Ko-fi username

View File

@@ -1,4 +1,4 @@
language: ruby
rvm:
- 2.5.3
- 3.0.0
script: rake ci

View File

@@ -1,5 +1,6 @@
source 'https://rubygems.org'
ruby '2.5.3'
ruby '3.0.0'
gem 'rake'
gem 'vim-flavor', '~> 1.1'

View File

@@ -18,7 +18,7 @@ DEPENDENCIES
vim-flavor (~> 1.1)
RUBY VERSION
ruby 2.5.3p105
ruby 3.0.0p0
BUNDLED WITH
2.0.1
2.2.3

View File

@@ -1,4 +1,4 @@
# VIM Table Mode v4.7.0 [![Build Status](https://travis-ci.org/dhruvasagar/vim-table-mode.png?branch=master)](https://travis-ci.org/dhruvasagar/vim-table-mode)
# VIM Table Mode v4.7.5 [![Build Status](https://travis-ci.org/dhruvasagar/vim-table-mode.png?branch=master)](https://travis-ci.org/dhruvasagar/vim-table-mode)
An awesome automatic table creator & formatter allowing one to create neat
tables as you type.
@@ -27,13 +27,14 @@ $ git submodule add git@github.com:dhruvasagar/vim-table-mode.git bundle/table-m
vimfiles/autoload/, vimfiles/plugin/ and vimfiles/doc under WINDOWS and
restart VIM
4. Alternatively, if using <a href="https://github.com/junegunn/vim-plug">vim-plug</a>, then add `Plug 'dhruvasagar/vim-table-mode'` to your ~/.vimrc.
### Creating table on-the-fly
To start using the plugin in the on-the-fly mode use `:TableModeToggle` mapped to <kbd>\<Leader\>tm</kbd> by default (which means <kbd>\\</kbd> <kbd>t</kbd> <kbd>m</kbd> if you didn't override the <Leader> by `:let mapleader = ','` to have <kbd>,</kbd> <kbd>t</kbd> <kbd>m</kbd>).
> Tip :
> You can use the following to quickly enable / disable table mode in insert
> mode by using `||` or `__` :
Tip:
You can use the following to quickly enable / disable table mode in insert mode by using `||` or `__`:
> ```vim
> function! s:isAtStartOfLine(mapping)
> let text_before_cursor = getline('.')[0 : col('.')-1]
@@ -115,34 +116,33 @@ To get ReST-compatible tables use
Markdown and ReST filetypes have automatically configured corners.
You can also define in a table header border how it's content should be
You can also define in a table header border how its content should be
aligned, whether center, right or left by using a `:` character defined by
`g:table_mode_align_char` option.
If you manipulate the table when table mode is disabled or copy paste a table
from clipboard from outside and it ends up being misaligned, you can realign
it using `:TableModeRealign` or using the default mapping
<kbd>\<Leader\>tr</kbd> defined by `g:table_mode_relign_map` option.
<kbd>\<Leader\>tr</kbd> (defined by the option `g:table_mode_relign_map`).
### Formatting existing content into a table
Table Mode wouldn't justify it's name if it didn't allow formatting
existing content into a table. And it does as promised. Like table creation
on the fly as you type, formatting existing content into a table is equally
simple. You can visually select multiple lines and call `:Tableize` on it,
or alternatively use the mapping <kbd>\<Leader\>tt</kbd> defined by the
`g:table_mode_tableize_map` option which would convert CSV (Comma Separated
Value) data into a table and use `,` defined by `g:table_mode_delimiter`
option as the delimiter.
Table Mode wouldn't justify its name if it didn't allow formatting
existing content into a table. And it does as promised. Like table creation typing on the fly,
formatting existing content into a table is equally
simple. You can visually select multiple lines and call `:Tableize` on it.
Alternatively, the mapping <kbd>\<Leader\>tt</kbd> can be used (defined by the
option `g:table_mode_tableize_map`). This converts CSV (Comma-separated
Values) data into a table.
If however you wish to use a different delimiter, you can use the command
`:Tableize/{pattern}` in a similar fashion as you use tabular (eg.
`:Tableize/{pattern}` in a similar fashion as you tabulate (e.g.
`:Tableize/;` uses ';' as the delimiter) or use the mapping <kbd>\<Leader\>T</kbd>
defined by `g:table_mode_tableize_op_map` option which takes input in the
(defined by the option `g:table_mode_tableize_op_map`) which takes input in the
cmd-line and uses the `{pattern}` input as the delimiter.
`:Tableize` also accepts a range and so you can also call it by giving
lines manually like `:line1,line2Tableize`, but this is not very intuitive.
`:Tableize` also accepts a range. Call it by giving
lines manually like `:line1,line2Tableize`. However this may not be intuitive.
You can use the mapping <kbd>\<Leader\>T</kbd> with a `[count]` to apply it to the
next `[count]` lines in standard vim style.
@@ -160,33 +160,44 @@ it using `:TableModeRealign` or using the default mapping
Tableize provides a text object for manipulating table cells. Following
the vim philosophy the you have <kbd>i|</kbd> & <kbd>a|</kbd> for the
inner and around (including the immidiate right table separator) the
inner and around (including the immediate right table separator) the
table cell.
- **Delete Row** :
You can use the <kbd>\<Leader\>tdd</kbd> mapping defined by the option
`g:table_mode_delete_row_map` to delete the current table row (provided
you are within a table row), this can be preceeded with a [count] to
delete multiple rows just like you would with 'dd'.
You can use the <kbd>\<Leader\>tdd</kbd> mapping (defined by the option
`g:table_mode_delete_row_map`) to delete the current table row (provided
you are within a table row). This can be preceeded with a `[count]` to
delete multiple rows as per Vim command grammar.
- **Delete Column** :
You can use the <kbd>\<Leader\>tdc</kbd> mapping defined by the option
`g:table_mode_delete_column_map` to delete the entire current column
You can use the <kbd>\<Leader\>tdc</kbd> mapping (defined by the option
`g:table_mode_delete_column_map`) to delete the entire current column
(provided you are within a table row), this can also be preceeded with a
[count] to delete multiple columns.
`[count]` to delete multiple columns.
- **Insert Column** :
You can use the <kbd>\<Leader\>tic</kbd> mapping defined by the option
`g:table_mode_insert_column_after_map` to insert a column after the
You can use the <kbd>\<Leader\>tic</kbd> mapping (defined by the option
`g:table_mode_insert_column_after_map`) to insert a column after the
cursor (provided you are within a table row). Of course you can use the
<kbd>\<Leader\>tiC</kbd> mapping defined by
`g:table_mode_insert_column_before_map` to insert a column before the
cursor. Both can also be preceeded with a [count] to insert multiple
columns.
### Highlight cells based on content
You can highlight cells based on content by setting `let g:table_mode_color_cells` :
- cells starting with `yes` will use the `yesCell` highlight group.
- cells starting with `no` will use the `noCell` highlight group.
- cells starting with `?` will use the `maybeCell` hightlight group.
You can overwrite any highlight group. For exemple use `hi yesCell ctermfg=2` to remove the background color.
## Advanced Usage: Spreadsheet Capabilities
### Table Formulas
@@ -195,7 +206,7 @@ it using `:TableModeRealign` or using the default mapping
of defining formulas :
- You can add formulas using `:TableAddFormula` or the mapping <kbd>\<Leader\>tfa</kbd>
defined by the option `g:table_mode_add_formula_map` from within a table
(defined by the option `g:table_mode_add_formula_map`) from within a table
cell, which will ask for input on the cmd-line with a `f=` prompt. The
input formula will be appended to the formula line if one exists or a new
one will be created with the input formula taking the current cell as the
@@ -208,7 +219,7 @@ it using `:TableModeRealign` or using the default mapping
formulas on the line separated with a ';' eg) `# tmf: $3=$2*$1;$4=$3/3.14`
You can evaluate the formula line using `:TableEvalFormulaLine` or the
mapping <kbd>\<Leader\>tfe</kbd> defined by the option `g:table_mode_eval_expr_map`
mapping <kbd>\<Leader\>tfe</kbd> (defined by the option `g:table_mode_eval_expr_map`)
from anywhere inside the table or while on the formula line.
NOTE: You can now use the mapping <kbd>\<Leader\>t?</kbd>

View File

@@ -22,13 +22,9 @@ function! s:UnMap(map, mode) "{{{2
endfunction
function! s:ToggleMapping() "{{{2
let separator_map = g:table_mode_separator
" '|' is a special character, we need to map <Bar> instead
if g:table_mode_separator ==# '|' | let separator_map = '<Bar>' | endif
if !g:table_mode_disable_mappings
if tablemode#IsActive()
call s:Map('<Plug>(table-mode-tableize)', separator_map, 'i')
call s:Map('<Plug>(table-mode-tableize)', g:table_mode_separator_map, 'i')
call s:Map('<Plug>(table-mode-motion-up)', g:table_mode_motion_up_map, 'n')
call s:Map('<Plug>(table-mode-motion-down)', g:table_mode_motion_down_map, 'n')
call s:Map('<Plug>(table-mode-motion-left)', g:table_mode_motion_left_map, 'n')
@@ -47,7 +43,7 @@ function! s:ToggleMapping() "{{{2
call s:Map('<Plug>(table-mode-echo-cell)', g:table_mode_echo_cell_map, 'n')
call s:Map('<Plug>(table-mode-sort)', g:table_mode_sort_map, 'n')
else
call s:UnMap(separator_map, 'i')
call s:UnMap(g:table_mode_separator_map, 'i')
call s:UnMap(g:table_mode_motion_up_map, 'n')
call s:UnMap(g:table_mode_motion_down_map, 'n')
call s:UnMap(g:table_mode_motion_left_map, 'n')
@@ -75,7 +71,8 @@ function! s:ToggleSyntax() "{{{2
if tablemode#IsActive()
exec 'syntax match Table'
\ '/' . tablemode#table#StartExpr() . '\zs|.\+|\ze' . tablemode#table#EndExpr() . '/'
\ 'contains=TableBorder,TableSeparator,TableColumnAlign containedin=ALL'
\ 'contains=TableBorder,TableSeparator,TableColumnAlign,yesCell,noCell,maybeCell,redCell,greenCell,yellowCell,blueCell,whiteCell,darkCell'
\ 'containedin=ALL'
syntax match TableSeparator /|/ contained
syntax match TableColumnAlign /:/ contained
syntax match TableBorder /[\-+]\+/ contained
@@ -83,6 +80,32 @@ function! s:ToggleSyntax() "{{{2
hi! link TableBorder Delimiter
hi! link TableSeparator Delimiter
hi! link TableColumnAlign Type
syntax match redCell '|\@<= *r:[^|]*' contained
hi redCell ctermfg=9 ctermbg=1
syntax match greenCell '|\@<= *g:[^|]*' contained
hi greenCell ctermfg=10 ctermbg=2
syntax match yellowCell '|\@<= *y:[^|]*' contained
hi yellowCell ctermfg=11 ctermbg=3
syntax match blueCell '|\@<= *b:[^|]*' contained
hi blueCell ctermfg=12 ctermbg=4
syntax match whiteCell '|\@<= *w:[^|]*' contained
hi whiteCell ctermfg=0 ctermbg=15
syntax match darkCell '|\@<= *d:[^|]*' contained
hi darkCell ctermfg=15 ctermbg=0
if exists("g:table_mode_color_cells") && g:table_mode_color_cells
syntax match yesCell '|\@<= *yes[^|]*' contained
syntax match noCell '|\@<= *no\A[^|]*' contained " \A to exclude words like notes
syntax match maybeCell '|\@<= *?[^|]*' contained
" '|\@<=' : Match previous characters, excluding them from the group
endif
else
syntax clear Table
syntax clear TableBorder
@@ -206,9 +229,24 @@ endfunction
function! tablemode#TableizeRange(...) range "{{{2
let lnum = a:firstline
while lnum < (a:firstline + (a:lastline - a:firstline + 1))
let total = (a:lastline - a:firstline + 1)
" echom total
let cntr = 1
while cntr <= total
call s:Tableizeline(lnum, a:1)
undojoin
if g:table_mode_tableize_auto_border
if cntr == 1
normal! O
call tablemode#table#AddBorder('.')
normal! j
let lnum += 1
endif
normal! o
call tablemode#table#AddBorder('.')
let lnum += 1
endif
let cntr += 1
let lnum += 1
endwhile
@@ -223,3 +261,7 @@ function! tablemode#TableizeByDelimiter() "{{{2
exec line("'<") . ',' . line("'>") . "call tablemode#TableizeRange('/' . delim)"
endif
endfunction
if !hlexists('yesCell') | hi yesCell cterm=bold ctermfg=10 ctermbg=2 | endif |
if !hlexists('noCell') | hi noCell cterm=bold ctermfg=9 ctermbg=1 | endif |
if !hlexists('maybeCell') | hi maybeCell cterm=bold ctermfg=11 ctermbg=3 | endif |

View File

@@ -420,3 +420,9 @@ function! tablemode#spreadsheet#Sort(bang, ...) range "{{{2
call tablemode#spreadsheet#MoveToStartOfCell()
exec ':undojoin | '.firstRow.','.lastRow . 'sort'.bang opts '/.*\%'.col.'v/'
endfunction
function! tablemode#spreadsheet#EchoCell()
if tablemode#table#IsRow('.')
echomsg '$' . tablemode#spreadsheet#RowNr('.') . ',' . tablemode#spreadsheet#ColumnNr('.')
endif
endfunction

View File

@@ -1,12 +1,12 @@
" Private Functions {{{1
function! s:IsHTMLComment(line) "{{{2
return getline(a:line) =~# '^\s*<!--'
endfunction
function! s:IsFormulaLine(line) "{{{2
return getline(a:line) =~# 'tmf: '
endfunction
function! s:IsHTMLComment(line) "{{{2
return !s:IsFormulaLine(a:line) && getline(a:line) =~# '^\s*<!--'
endfunction
" Public Functions {{{1
function! tablemode#spreadsheet#formula#Add(...) "{{{2
let fr = a:0 ? a:1 : input('f=')
@@ -109,7 +109,8 @@ 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#IsRow(line)
while !s:IsFormulaLine(line)
if !tablemode#table#IsBorder(line)
let texpr = expr
if expr =~# '\$'
let texpr = substitute(texpr, '\$\(\d\+\)',
@@ -118,6 +119,7 @@ function! tablemode#spreadsheet#formula#EvaluateExpr(expr, line) abort "{{{2
call tablemode#spreadsheet#cell#SetCell(eval(texpr), line, row, colm)
let row += 1
endif
let line += 1
endwhile
endif

View File

@@ -175,6 +175,12 @@ function! tablemode#table#AddBorder(line) "{{{2
endfunction
function! tablemode#table#Realign(line) "{{{2
let utree = undotree()
if utree.seq_cur != utree.seq_last
" skip during undo
return
endif
let current_fm = &foldmethod " save foldmethod to be restored
setlocal foldmethod=manual " manual foldmethod while table is being aligned
@@ -206,11 +212,11 @@ function! tablemode#table#Realign(line) "{{{2
let lines = tablemode#align#Align(lines)
for aline in lines
call setline(aline.lnum, aline.text)
undojoin | keepjumps call setline(aline.lnum, aline.text)
endfor
for bline in blines
call tablemode#table#AddBorder(bline)
undojoin | keepjumps call tablemode#table#AddBorder(bline)
endfor
" restore foldmethod

View File

@@ -1,7 +1,7 @@
*table-mode.txt* Table Mode for easy table formatting
===============================================================================
Table Mode, THE AWESOME AUTOMATIC TABLE CREATOR & FORMATTER
VERSION 4.7.0
VERSION 4.7.5
Author: Dhruva Sagar <http://dhruvasagar.com/>
License: MIT <http://opensource.org/licenses/MIT/>
@@ -53,11 +53,10 @@ Tableize content:
Move between cells :
Now you can move between cells using table mode motions
'<Leader>t[hjkl]' to move left | down | up | right cells respectively.
You can use |table-mode-map-prefix| option to define the prefix
mapping to be used before 'hjkl'. The left | right motions wrap around
the table and move to the next | previous row after the last | first
cell in the current row if one exists.
'[|, ]|, {|, }|' to move left | down | up | right cells respectively.
The left | right motions wrap around the table and move to the next
| previous row after the last | first cell in the current row if one
exists.
Manipulation of tables:
Tableize provides 3 easy ways to quickly manipulate tables.
@@ -148,7 +147,9 @@ Overview:
|table-mode-verbose| ............ Notify when Enabled/Disabled.
|table-mode-corner| ............. Set corner character.
|table-mode-separator| .......... Set separator character.
|table-mode-fillchar| ........... Set table fillchar character.
|table-mode-separator-map| ...... Set separator mapping.
|table-mode-fillchar| ........... Set table border fillchar character.
|table-mode-header-fillchar| .... Set table header border fillchar character.
|table-mode-map-prefix| ......... Set prefix for table mode commands.
|table-mode-toggle-map| ......... Set table mode toggle mapping.
|table-mode-always-active| ...... Set table mode to always enabled.
@@ -185,6 +186,7 @@ Overview:
|table-mode-syntax| ............. Control table mode syntax
|table-mode-auto-align| ......... Set if the table mode should auto
align as you type
|table-mode-tableize-auto-border| Set if tableize adds row borders
g:loaded_table_mode *table-mode-loaded*
Use this option to disable the plugin: >
@@ -208,7 +210,17 @@ g:table_mode_separator *table-mode-separator*
This option also defines the trigger to be used to start creating a
table row in insert mode.
g:table_mode_separator_map *table-mode-separator-map*
Use this option to define the mapping to be used for the table separator. >
let g:table_mode_separator_map = '<Bar>'
<
g:table_mode_fillchar *table-mode-fillchar*
Use this option to define the table border fill character: >
let g:table_mode_fillchar = '-'
<
g:table_mode_header_fillchar *table-mode-header-fillchar*
Use this option to define the table header border fill character: >
let g:table_mode_fillchar = '-'
<
@@ -355,6 +367,16 @@ g:table_mode_update_time *table-mode-update-time*
let g:table_mode_update_time = 500
<
g:table_mode_disable_tableize_mappings *table-mode-disable-tableize-mappings*
Disables mappings for tableize. >
let g:table_mode_disable_tableize_mappings = 0
<
*table-mode-tableize-auto-border*
g:table_mode_tableize_auto_border
Enables adding row borders to tables when created using tableize. >
let g:table_mode_tableize_auto_border = 0
<
===============================================================================
MAPPINGS *table-mode-mappings*
@@ -514,4 +536,3 @@ REPORT ISSUES *table-mode-report-issues*
If you discover any issues, please report them at
http://github.com/dhruvasagar/vim-table-mode/issues.
vim:tw=78:ts=8:ft=help:norl:ai:et

View File

@@ -18,6 +18,13 @@ endfunction
call s:SetGlobalOptDefault('table_mode_corner', '+')
call s:SetGlobalOptDefault('table_mode_verbose', 1)
call s:SetGlobalOptDefault('table_mode_separator', '|')
" '|' is a special character, we need to map <Bar> instead
" the character to map from
let g:table_mode_separator_map = get(g:, 'table_mode_separator_map', g:table_mode_separator)
if g:table_mode_separator_map ==# '|' | let g:table_mode_separator_map = '<Bar>' | endif
" the character to map to (when inserting the separator)
let g:table_mode_separator_map_target = g:table_mode_separator
if g:table_mode_separator_map_target ==# '|' | let g:table_mode_separator_map_target = '<Bar>' | endif
call s:SetGlobalOptDefault('table_mode_escaped_separator_regex', '\V\C\\\@1<!'.escape(g:table_mode_separator, '\'))
call s:SetGlobalOptDefault('table_mode_fillchar', '-')
call s:SetGlobalOptDefault('table_mode_header_fillchar', '-')
@@ -28,6 +35,7 @@ call s:SetGlobalOptDefault('table_mode_delimiter', ',')
call s:SetGlobalOptDefault('table_mode_corner_corner', '|')
call s:SetGlobalOptDefault('table_mode_align_char', ':')
call s:SetGlobalOptDefault('table_mode_disable_mappings', 0)
call s:SetGlobalOptDefault('table_mode_disable_tableize_mappings', 0)
call s:SetGlobalOptDefault('table_mode_motion_up_map', '{<Bar>')
call s:SetGlobalOptDefault('table_mode_motion_down_map', '}<Bar>')
@@ -52,27 +60,16 @@ call s:SetGlobalOptDefault('table_mode_tableize_d_map', '<Leader>T')
call s:SetGlobalOptDefault('table_mode_syntax', 1)
call s:SetGlobalOptDefault('table_mode_auto_align', 1)
call s:SetGlobalOptDefault('table_mode_update_time', 500)
call s:SetGlobalOptDefault('table_mode_tableize_auto_border', 0)
function! s:TableEchoCell() "{{{1
if tablemode#table#IsRow('.')
echomsg '$' . tablemode#spreadsheet#RowNr('.') . ',' . tablemode#spreadsheet#ColumnNr('.')
endif
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 ":<C-U>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
if g:table_mode_separator ==# '|' | let table_mode_separator_map = '<Bar>' | endif
execute "inoremap <silent> " . table_mode_separator_map . ' ' .
\ table_mode_separator_map . "<Esc>:call tablemode#TableizeInsertMode()<CR>a"
unlet table_mode_separator_map
execute "inoremap <silent> " . g:table_mode_separator_map . ' ' .
\ g:table_mode_separator_map_target . "<Esc>:call tablemode#TableizeInsertMode()<CR>a"
endif
" }}}2
@@ -82,9 +79,7 @@ command! TableAddFormula call tablemode#spreadsheet#formula#Add()
command! TableModeRealign call tablemode#table#Realign('.')
command! TableEvalFormulaLine call tablemode#spreadsheet#formula#EvaluateFormulaLine()
" '|' is a special character, we need to map <Bar> instead
if g:table_mode_separator ==# '|' | let separator_map = '<Bar>' | endif
execute 'inoremap <silent> <Plug>(table-mode-tableize)' separator_map . '<Esc>:call tablemode#TableizeInsertMode()<CR>a'
execute 'inoremap <silent> <Plug>(table-mode-tableize)' g:table_mode_separator_map . '<Esc>:call tablemode#TableizeInsertMode()<CR>a'
nnoremap <silent> <Plug>(table-mode-tableize) :Tableize<CR>
xnoremap <silent> <Plug>(table-mode-tableize) :Tableize<CR>
@@ -110,10 +105,11 @@ nnoremap <silent> <Plug>(table-mode-insert-column-after) :<C-U>call tablemode#sp
nnoremap <silent> <Plug>(table-mode-add-formula) :call tablemode#spreadsheet#formula#Add()<CR>
nnoremap <silent> <Plug>(table-mode-eval-formula) :call tablemode#spreadsheet#formula#EvaluateFormulaLine()<CR>
nnoremap <silent> <Plug>(table-mode-echo-cell) :call <SID>TableEchoCell()<CR>
nnoremap <silent> <Plug>(table-mode-echo-cell) :call tablemode#spreadsheet#EchoCell()<CR>
nnoremap <silent> <Plug>(table-mode-sort) :call tablemode#spreadsheet#Sort('')<CR>
if !g:table_mode_disable_tableize_mappings
if !hasmapto('<Plug>(table-mode-tableize)')
exec "nmap" g:table_mode_tableize_map "<Plug>(table-mode-tableize)"
exec "xmap" g:table_mode_tableize_map "<Plug>(table-mode-tableize)"
@@ -122,6 +118,7 @@ endif
if !hasmapto('<Plug>(table-mode-tableize-delimiter)')
exec "xmap" g:table_mode_tableize_d_map "<Plug>(table-mode-tableize-delimiter)"
endif
endif
augroup TableMode "{{{1
au!

View File

@@ -1,5 +1,6 @@
let g:table_mode_corner = '+'
let g:table_mode_separator = '|'
let g:table_mode_separator_map = '<Bar>'
let g:table_mode_escaped_separator_regex = '\V\C\\\@1<!|'
let g:table_mode_fillchar = '-'
let g:table_mode_header_fillchar = '-'
@@ -34,3 +35,4 @@ let g:table_mode_tableize_d_map = '<Leader>T'
let g:table_mode_syntax = 1
let g:table_mode_auto_align = 1
let g:table_mode_update_time = 500
let g:table_mode_tableize_auto_border = 0