Commit 209e30ba authored by Vincent Belaïche's avatar Vincent Belaïche

Don't fake empty cells value by "" when printing with a lambda.

When using a lambda expression printer function the user should be
free to format differently a really empty cell, ie. containing nil,
from a cell containing an empty string "".

* ses.el (ses-call-printer): Replace `(or value "")' by just `value'
in the case of a lambda expression printer function.

* ses.texi (Printer functions): Add example and description about
lambda expression printer function handling all the possible values,
including unexpected ones.
parent e8702794
......@@ -443,6 +443,36 @@ printer function. Then, if you call again
@code{"%.3f"} all the cells using printer @samp{foo} will be reprinted
accordingly.
When you define a printer function with a lambda expression taking one
argument, please take care that the returned value is a string, or a
list containing a string, even when the input argument has an
unexpected value. Here is an example:
@example
(lambda (val)
(cond
((null val) "")
((and (numberp val) (>= val 0)) (format "%.1f" val))
(t (ses-center-span (format "%S" val) ?#))))
@end example
This example will:
@itemize
@item
When the cell is empty (ie.@: when @code{val} is @code{nil}), print an
empty string @code{""}
@item
When the cell value is a non negative number, format the the value in
fixed-point notation with one decimal after point
@item
Otherwise, handle the value as erroneous by printing it as an
s-expression (using @code{prin1}), centered and surrounded by @code{#}
filling.
@end itemize
@node Clearing cells
@section Clearing cells
@cindex clearing commands
......
......@@ -1289,7 +1289,7 @@ printer signaled one (and \"%s\" is used as the default printer), else nil."
(and locprn
(ses--locprn-compiled locprn))))
printer)
(or value "")))
value))
(if (stringp value)
value
(or (stringp (car-safe value))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment