setting fancy names for cell symbols other than name matching
"\\`[A-Z]+[0-9]+\\'" regexp .
(ses-create-cell-variable): New defun.
(ses-relocate-formula): Relocate formulas only for cells the
symbols of which are not renamed, i.e. symbols whose names do not
match regexp "\\`[A-Z]+[0-9]+\\'".
(ses-relocate-all): Relocate values only for cells the symbols of
which are not renamed.
(ses-load): Create cells variables as the (ses-cell ...) are read,
in order to check row col consistency with cell symbol name only
for cells that are not renamed.
(ses-replace-name-in-formula): New defun.
(ses-rename-cell): New defun.
* lisp/ses.el (top-level): Require cl when compiling.
(ses-set-localvars): Fix error statement.
Call it at compile time to silence a storm of warnings.
(ses-localvars): Add ses--Dijkstra-attempt-nb and
ses--Dijkstra-weight-bound, and initial values thereof when
applicable.
(ses-set-localvars): New function.
(ses-make-cell): Add property-list as a cell element.
(ses-cell-property-get-fun, ses-cell-property-get)
(ses-cell-property-delq-fun, ses-cell-property-set-fun)
(ses-cell-property-pop-fun, ses-cell-property-get-handle-fun): New
functions.
(ses-cell-property-set, ses-cell-property-pop)
(ses-cell-property-get-handle): New macro.
(ses-cell-property-handle-car, ses-cell-property-handle-setcar):
New aliases, used for code readability.
(ses-calculate-cell, ses-update-cells): Use Dijkstra algorithm for
cycle detection.
(ses-self-reference-early-detection): New defcustom.
(ses-formula-references): Robustify against self-refering cells.
(ses-mode): Use ses-set-localvars.
(ses-command-hook): Add call to ses-initialize-Dijkstra-attempt
before lauching the update processing.
(ses-initialize-Dijkstra-attempt): New function.
(ses-recalculate-cell): Update for cycle detection based on
Dijkstra algorithm.
forward-char.
(ses-print-cell): Use string-width, truncate-string-to-width,
delete-region rather than length, substring, delete-char.
(ses-setup): Set inhibit-point-motion-hooks to t. Calculate
position by actually moving point rather than just using unibyte
character length.
(ses-mode): Set indent-tabs-mode to nil.
(ses-center): Use string-width rather than length.
(ses-mode-print-map): Add `c' and `t' (suggested by Gareth Rees).
(ses-recalculate-cell): Deal with point being just beyond end of data area (why does this happen?)
(ses-set-curcell): Ditto.
(ses-column-letter): Handle columns beyond 702. Code written by Gareth Rees.
overrides will now be done a different way.
(ses-set-parameter): Reapply this function for undo.
(ses-set-header-row): Reconstruct header row during undo.
(ses-widen): New function.
(ses-goto-data, ses-reconstruct-all): Use new function.
(ses-command-hook): Widen buffer during undo, before unupdating
the cells.
(ses-insert-row, ses-delete-row): Widen buffer during undo.
(ses-load, ses-header-row): Permit empty (zero-row) spreadsheets.
(ses-read-cell): Avoid stupid warning for RET RET on a cell whose
formula hasn't been executed yet.