fixed a Vim error(E907) in Min/Max when comparing v:null to a float
fixed CountE/CountNE/PercentE/PercentNE to support spanning rows/columns
added test cases for all the new formula functions
- Min: get the lowest value
- Max: get the highest value
- CountE: count the number of empty cells
- CountNE: count the number of non-empty cells
- PercentE: percent of empty cells
- PercentNE: percent of non-empty cells
- AverageNE: average over non-empty cells
Also added a subtle tweak that ignores an HTML comment tag ('<!--')
found between the table and the starting formula line. Being able to
wrap all the formula lines with an HTML comment prevents the formulas
from being rendered in Markdown/ReST output.
If a g:table_mode_separator is escaped by a backslash, the table is
aligned ignoring this instance of the g:table_mode_separator, but the
column deletion and insertion functions did not consider this behaviour.
The g:table_mode_escaped_separator regex is simplified and optimized a
little bit. Also more care is taken to prevent unexpected behaviour if
special characters are used as g:table_mode_separator.
* Fixed tablemode#spreadsheet#cell#SetCell() to accommodate the fact that we
can have borders anywhere in the table. Using
tablemode#spreadsheet#LineNr() to get get the line of the actual row
in the table.
* Fixed tablemode#spreadsheet#LineNr()
Added a mapping `<Plug>(table-mode-sort)` which is mapped by default to
`<Leader>ts` that sorts the current table by the column in which the
cursor is currently.
Also added `TableSort` command that gives you a little more control over
the sorting, you can pass in additional :sort flags like u, i, n etc and
also use it with a `!` to sort in reverse order.
Altered table mode behavior such that if there is a header line, i.e.
the first line of the table is separated by a border with the rest of
the table, then it is not taken into account for formulas and cell
arithmetic
* Refactored complete code to be more modular.
* Fixed long standing unicode alignment issue #8.
* Testing individual components ensuring better test coverage.