Next: Durations and time values, Previous: Formula syntax for Calc, Up: The spreadsheet
It is also possible to write a formula in Emacs Lisp; this can be useful for
string manipulation and control structures, if Calc's functionality is not
enough. If a formula starts with a single-quote followed by an opening
parenthesis, then it is evaluated as a Lisp form. The evaluation should
return either a string or a number. Just as with calc formulas, you
can specify modes and a printf format after a semicolon. With Emacs Lisp
forms, you need to be conscious about the way field references are
interpolated into the form. By default, a reference will be interpolated as
a Lisp string (in double-quotes) containing the field. If you provide the
‘N’ mode switch, all referenced elements will be numbers (non-number
fields will be zero) and interpolated as Lisp numbers, without quotes. If
you provide the ‘L’ flag, all fields will be interpolated literally,
without quotes. I.e., if you want a reference to be interpreted as a string
by the Lisp form, enclose the reference operator itself in double-quotes,
like "$3". Ranges are inserted as space-separated fields, so you can
embed them in list or vector syntax. Here are a few examples—note how the
‘N’ mode is used when we do computations in Lisp:
Swap the first two characters of the content of column 1 '(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2)) Add columns 1 and 2, equivalent to Calc's$1+$2'(+ $1 $2);N Compute the sum of columns 1-4, like Calc'svsum($1..$4)'(apply '+ '($1..$4));N