From 336262d04f0f9cdf92721a292b97d06dd9d4afcc Mon Sep 17 00:00:00 2001 From: Dhruva Sagar Date: Sun, 2 Aug 2020 23:26:27 +0530 Subject: [PATCH] Fix #184 Improve formula evaluation, support border rows --- autoload/tablemode/spreadsheet/formula.vim | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/autoload/tablemode/spreadsheet/formula.vim b/autoload/tablemode/spreadsheet/formula.vim index 5d9b230..f54c53b 100644 --- a/autoload/tablemode/spreadsheet/formula.vim +++ b/autoload/tablemode/spreadsheet/formula.vim @@ -109,15 +109,17 @@ 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) - let texpr = expr - if expr =~# '\$' - let texpr = substitute(texpr, '\$\(\d\+\)', - \ '\=str2float(tablemode#spreadsheet#cell#GetCells(line, row, submatch(1)))', 'g') - endif + while !s:IsFormulaLine(line) + if !tablemode#table#IsBorder(line) + let texpr = expr + if expr =~# '\$' + let texpr = substitute(texpr, '\$\(\d\+\)', + \ '\=str2float(tablemode#spreadsheet#cell#GetCells(line, row, submatch(1)))', 'g') + endif - call tablemode#spreadsheet#cell#SetCell(eval(texpr), line, row, colm) - let row += 1 + call tablemode#spreadsheet#cell#SetCell(eval(texpr), line, row, colm) + let row += 1 + endif let line += 1 endwhile endif