Improve formula evaluation, support border rows
This commit is contained in:
Dhruva Sagar
2020-08-02 23:26:27 +05:30
parent 5c489b57e8
commit 336262d04f

View File

@@ -109,15 +109,17 @@ function! tablemode#spreadsheet#formula#EvaluateExpr(expr, line) abort "{{{2
call tablemode#spreadsheet#cell#SetCell(eval(expr), line, row, colm) call tablemode#spreadsheet#cell#SetCell(eval(expr), line, row, colm)
else else
let [row, line] = [1, tablemode#spreadsheet#GetFirstRow(line)] let [row, line] = [1, tablemode#spreadsheet#GetFirstRow(line)]
while tablemode#table#IsRow(line) while !s:IsFormulaLine(line)
let texpr = expr if !tablemode#table#IsBorder(line)
if expr =~# '\$' let texpr = expr
let texpr = substitute(texpr, '\$\(\d\+\)', if expr =~# '\$'
\ '\=str2float(tablemode#spreadsheet#cell#GetCells(line, row, submatch(1)))', 'g') let texpr = substitute(texpr, '\$\(\d\+\)',
endif \ '\=str2float(tablemode#spreadsheet#cell#GetCells(line, row, submatch(1)))', 'g')
endif
call tablemode#spreadsheet#cell#SetCell(eval(texpr), line, row, colm) call tablemode#spreadsheet#cell#SetCell(eval(texpr), line, row, colm)
let row += 1 let row += 1
endif
let line += 1 let line += 1
endwhile endwhile
endif endif