diff options
author | Vincent Belaïche <[email protected]> | 2012-07-20 23:09:04 +0200 |
---|---|---|
committer | Vincent Belaïche <[email protected]> | 2012-07-20 23:09:04 +0200 |
commit | 316e68a7952719c0450933eb956163ea4248d088 (patch) | |
tree | 479cc43312529b726a11ef1bc600aa609fabfc73 /lisp/ses.el | |
parent | 9928463dcdb0164477785e83406602065de79ef8 (diff) |
* ses.el (ses-rename-cell): Set new name also in reference list of cells of which the renamed cell depends.
Diffstat (limited to 'lisp/ses.el')
-rw-r--r-- | lisp/ses.el | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/lisp/ses.el b/lisp/ses.el index 201d9cbf10..14294103d5 100644 --- a/lisp/ses.el +++ b/lisp/ses.el @@ -3209,17 +3209,28 @@ highlighted range in the spreadsheet." new-name))) (error "Already a bound cell name"))) (let* ((rowcol (ses-sym-rowcol ses--curcell)) - (cell (ses-get-cell (car rowcol) (cdr rowcol)))) + (row (car rowcol)) + (col (cdr rowcol)) + (cell (ses-get-cell row col))) (put new-name 'ses-cell rowcol) - (dolist (reference (ses-cell-references (car rowcol) (cdr rowcol))) - (let* ((rowcol (ses-sym-rowcol reference)) - (cell (ses-get-cell (car rowcol) (cdr rowcol)))) + ;; replace name by new name in formula of cells refering to renamed cell + (dolist (ref (ses-cell-references cell)) + (let* ((x (ses-sym-rowcol ref)) + (xcell (ses-get-cell (car x) (cdr x)))) (ses-cell-set-formula (car rowcol) (cdr rowcol) (ses-replace-name-in-formula - (ses-cell-formula cell) + (ses-cell-formula xcell) ses--curcell new-name)))) + ;; replace name by new name in reference list of cells to which renamed cell refers to + (dolist (ref (ses-formula-references (ses-cell-formula cell))) + (let* ((x (ses-sym-rowcol ref)) + (xrow (car x)) + (xcol (cdr x))) + (ses-set-cell xrow xcol 'references + (cons new-name (delq ses--curcell + (ses-cell-references xrow xcol)))))) (push new-name ses--renamed-cell-symb-list) (set new-name (symbol-value ses--curcell)) (aset cell 0 new-name) |