Fix ses-delete-blanks to delete only blanks + documentation.
* doc/misc/ses.texi (Quick Tutorial): Mention the '!' 'ses-range' modifier as an alternative to 'ses+'. (Advanced Features): Add a refernce to node 'Nonrelocatable references' concerning function 'ses-rename-cell'. (Standard formula functions): Mention the '!' 'ses-range' modifier as an alternative to 'ses-delete-blanks'. (More on cell printing): Fix fallback printer definition. Minor editorial formatting changes. (Nonrelocatable references): Document the use of 'ses-rename-cell' as a better way to make cell reference non-relocatable. (The data area): Document the presence of local printer definitions in the data area. * lisp/ses.el (ses-delete-blanks): Do not remove *error*. Any error in an argument should propagate into the using formula rather than being silently hidden !
This commit is contained in:
parent
272391f1d6
commit
3c97b0f758
2 changed files with 44 additions and 13 deletions
|
@ -187,6 +187,14 @@ the end-points, e.g.:
|
||||||
(The @code{apply} is necessary because @code{ses-range} produces a
|
(The @code{apply} is necessary because @code{ses-range} produces a
|
||||||
@emph{list} of values. This allows for more complex possibilities.)
|
@emph{list} of values. This allows for more complex possibilities.)
|
||||||
|
|
||||||
|
Alternatively you can use the @code{!} modifier of @code{ses-range} to
|
||||||
|
remove blank cells which allows to use @code{+} instead of
|
||||||
|
@code{ses+}:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(apply '+ (ses-range A2 A5 !))
|
||||||
|
@end lisp
|
||||||
|
|
||||||
@c ===================================================================
|
@c ===================================================================
|
||||||
|
|
||||||
@node The Basics
|
@node The Basics
|
||||||
|
@ -595,8 +603,8 @@ Pops up a menu to set the current row as the header, or revert to
|
||||||
column letters.
|
column letters.
|
||||||
@item M-x ses-rename-cell
|
@item M-x ses-rename-cell
|
||||||
@findex ses-rename-cell
|
@findex ses-rename-cell
|
||||||
Rename a cell from a standard A1-like name to any
|
Rename a cell from a standard A1-like name to any string that can be a
|
||||||
string.
|
valid local variable name (See also @ref{Nonrelocatable references}).
|
||||||
@item M-x ses-repair-cell-reference-all
|
@item M-x ses-repair-cell-reference-all
|
||||||
@findex ses-repair-cell-reference-all
|
@findex ses-repair-cell-reference-all
|
||||||
When you interrupt a cell formula update by clicking @kbd{C-g}, then
|
When you interrupt a cell formula update by clicking @kbd{C-g}, then
|
||||||
|
@ -791,8 +799,17 @@ are some useful functions to call from your formulas:
|
||||||
|
|
||||||
@table @code
|
@table @code
|
||||||
@item (ses-delete-blanks &rest @var{args})
|
@item (ses-delete-blanks &rest @var{args})
|
||||||
Returns a list from which all blank cells (value is either @code{nil} or
|
Returns a list from which all blank cells (value is either @code{nil}
|
||||||
'*skip*) have been deleted.
|
or '*skip*) have been deleted. Order of args is reverted. Please note
|
||||||
|
that @code{ses-range} has a @code{!} modifier that allows to remove
|
||||||
|
blanks, so it is possible to write:
|
||||||
|
@lisp
|
||||||
|
(ses-range A1 A5 !)
|
||||||
|
@end lisp
|
||||||
|
instead of
|
||||||
|
@lisp
|
||||||
|
(apply 'ses-delete-blanks (ses-range A1 A5 <))
|
||||||
|
@end lisp
|
||||||
|
|
||||||
@item (ses+ &rest @var{args})
|
@item (ses+ &rest @var{args})
|
||||||
Sum of non-blank arguments.
|
Sum of non-blank arguments.
|
||||||
|
@ -842,9 +859,9 @@ this to undo the effect of @kbd{t}.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
When a printer function signals an error, the fallback printer
|
When a printer function signals an error, the fallback printer
|
||||||
@samp{"%s"} is substituted. This is useful when your column printer
|
@samp{"%S"} is substituted. This is useful when your column printer
|
||||||
is numeric-only and you use a string as a cell value. Note that the
|
is numeric-only and you use a string as a cell value. Note that the
|
||||||
standard default printer is ``%.7g'' which is numeric-only, so cells
|
standard default printer is @samp{"%.7g"} which is numeric-only, so cells
|
||||||
that are empty of contain strings will use the fallback printer.
|
that are empty of contain strings will use the fallback printer.
|
||||||
@kbd{c} on such cells will display ``Format specifier doesn't match
|
@kbd{c} on such cells will display ``Format specifier doesn't match
|
||||||
argument type''.
|
argument type''.
|
||||||
|
@ -986,7 +1003,18 @@ can type ahead without worrying about the glitch.
|
||||||
@kbd{C-u C-y} relocates none of the cell-references. What about mixed
|
@kbd{C-u C-y} relocates none of the cell-references. What about mixed
|
||||||
cases?
|
cases?
|
||||||
|
|
||||||
You can use
|
The best way is to rename cells that you do not want to be relocatable
|
||||||
|
by using @code{ses-rename-cell}.
|
||||||
|
@findex ses-rename-cell
|
||||||
|
Cells that do not have an A1-like name style are not relocated on
|
||||||
|
yank. Using this method, the concerned cells won't be relocated
|
||||||
|
whatever formula they appear in. Please note however that when a
|
||||||
|
formula contains some range @code{(ses-range @var{cell1} @var{cell2})}
|
||||||
|
then in the yanked formula each range bound @var{cell1} and
|
||||||
|
@var{cell2} are relocated, or not, indepently, depending on whether
|
||||||
|
they are A1-like or renamed.
|
||||||
|
|
||||||
|
An alternative method is to use
|
||||||
@lisp
|
@lisp
|
||||||
(symbol-value 'B3)
|
(symbol-value 'B3)
|
||||||
@end lisp
|
@end lisp
|
||||||
|
@ -994,7 +1022,8 @@ to make an @dfn{absolute reference}. The formula relocator skips over
|
||||||
quoted things, so this will not be relocated when pasted or when
|
quoted things, so this will not be relocated when pasted or when
|
||||||
rows/columns are inserted/deleted. However, B3 will not be recorded
|
rows/columns are inserted/deleted. However, B3 will not be recorded
|
||||||
as a dependency of this cell, so this cell will not be updated
|
as a dependency of this cell, so this cell will not be updated
|
||||||
automatically when B3 is changed.
|
automatically when B3 is changed, this is why using
|
||||||
|
@code{ses-rename-cell} is most of the time preferable.
|
||||||
|
|
||||||
The variables @code{row} and @code{col} are dynamically bound while a
|
The variables @code{row} and @code{col} are dynamically bound while a
|
||||||
cell formula is being evaluated. You can use
|
cell formula is being evaluated. You can use
|
||||||
|
@ -1011,12 +1040,13 @@ kind of dependency is also not recorded.
|
||||||
@findex ses-reconstruct-all
|
@findex ses-reconstruct-all
|
||||||
|
|
||||||
Begins with an 014 character, followed by sets of cell-definition
|
Begins with an 014 character, followed by sets of cell-definition
|
||||||
macros for each row, followed by column-widths, column-printers,
|
macros for each row, followed by the set of local printer
|
||||||
|
defintitions, followed by column-widths, column-printers,
|
||||||
default-printer, and header-row. Then there's the global parameters
|
default-printer, and header-row. Then there's the global parameters
|
||||||
(file-format ID, numrows, numcols) and the local variables (specifying
|
(file-format ID, row count, column count, local printer count) and the
|
||||||
@acronym{SES} mode for the buffer, etc.).
|
local variables (specifying @acronym{SES} mode for the buffer, etc.).
|
||||||
|
|
||||||
When a @acronym{SES} file is loaded, first the numrows and numcols values are
|
When a @acronym{SES} file is loaded, first the global parameters are
|
||||||
loaded, then the entire data area is @code{eval}ed, and finally the local
|
loaded, then the entire data area is @code{eval}ed, and finally the local
|
||||||
variables are processed.
|
variables are processed.
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
|
||||||
;;; ses.el -- Simple Emacs Spreadsheet -*- lexical-binding:t -*-
|
;;; ses.el -- Simple Emacs Spreadsheet -*- lexical-binding:t -*-
|
||||||
|
|
||||||
;; Copyright (C) 2002-2016 Free Software Foundation, Inc.
|
;; Copyright (C) 2002-2016 Free Software Foundation, Inc.
|
||||||
|
@ -3746,7 +3747,7 @@ Use `math-format-value' as a printer for Calc objects."
|
||||||
"Return ARGS reversed, with the blank elements (nil and *skip*) removed."
|
"Return ARGS reversed, with the blank elements (nil and *skip*) removed."
|
||||||
(let (result)
|
(let (result)
|
||||||
(dolist (cur args)
|
(dolist (cur args)
|
||||||
(unless (memq cur '(nil *skip* *error*))
|
(unless (memq cur '(nil *skip*))
|
||||||
(push cur result)))
|
(push cur result)))
|
||||||
result))
|
result))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue