I only have backward dependencies so I tried the first code block.
I put it in ..emacs and tried, but I got a message starting as the message below.
I could not paste it into the email for some reason...
The tables work as expected when I do it manually.
Any idea what could be wrong?
Error meassage:
org-recalculate-all-tables: Wrong number of arguments: #[(function) "ŠŒ~ˆebˆÄÅÆ#ƒ:
Best regards,
Johan
Hi Johan,
On Apr 30, 2010, at 4:07 PM, Johan Ekh wrote:
Hi all,
I have a series of tables in a single file. Each table have some fields that depends on fields
in the previous table. Thus, if I change something in the first table, I must go down manually
and recalculate (or iterate) each table. Is there a way to recalculate all tables in a file simultaneously?
This should work if the dependence is only backwards.
(defun org-recalculate-all-tables ()
(interactive)
(org-table-map-tables (lambda () (org-table-recalculate t)) t))
If you have dependencies in both directions, this might work (untested):
(defun org-iterate-all-tables ()
(interactive)
(let* ((imax 10)
(checksum (md5 (buffer-string)))
c1
(i imax))
(catch 'exit
(while (> i 0)
(setq i (1- i))
(org-table-map-tables (lambda () (org-table-recalculate t)) t)
(if (equal checksum (setq c1 (md5 (buffer-string))))
(progn
(message "Convergence after %d iterations" (- imax i))
(throw 'exit t))
(setq checksum c1)))
(error "No convergence after %d iterations" imax))))
If it does, this could be added to org-hacks on Worg.
HTH
- Carsten