Hi, I've tried the functions but I get the error described above. I've put the functions in my .emacs exactly as written in the mail. I use the latest org-mode (using Git) and I use emacs 23.1.1 on a 64-bit openSuse 11.1 linux laptop. Do the cursor need to be located anywhere specific when executing the functions? I've tried to execute the functions while having all tables expanded and the cursor somewhere in the last table. Best regards, Johan On Fri, May 7, 2010 at 9:36 AM, Carsten Dominik wrote: > Hi, > > both functions work without any problem for me, so I do not know what you > are doing differently. maybe you ned to describe exactly how you are > calling the functions. > > - Carsten > > > On May 6, 2010, at 1:34 PM, T Helms wrote: > > Thanks for bringing this up, it would be a useful tool. >> >> I get an error using the functions as well >> >> org-recalculate-all-tables: >> org-recalculate-all-tables: Wrong number of arguments: (lambda (function) >> "Apply FUNCTION to the start of all tables in the buffer." (save-excursion >> (save-restriction (widen) (goto-char (point-min)) (while (re-search-forward >> org-table-any-line-regexp nil t) (message "Mapping tables: %d%%" (/ (* 100.0 >> (point)) (buffer-size))) (beginning-of-line 1) (when (looking-at >> org-table-line-regexp) (save-excursion (funcall function)) (or (looking-at >> org-table-line-regexp) (forward-char 1))) (re-search-forward >> org-table-any-border-regexp nil 1)))) (message "Mapping tables: done")), 2 >> >> org-iterate-all-tables: >> while: Wrong number of arguments: (lambda (function) "Apply FUNCTION to >> the start of all tables in the buffer." (save-excursion (save-restriction >> (widen) (goto-char (point-min)) (while (re-search-forward >> org-table-any-line-regexp nil t) (message "Mapping tables: %d%%" (/ (* 100.0 >> (point)) (buffer-size))) (beginning-of-line 1) (when (looking-at >> org-table-line-regexp) (save-excursion (funcall function)) (or (looking-at >> org-table-line-regexp) (forward-char 1))) (re-search-forward >> org-table-any-border-regexp nil 1)))) (message "Mapping tables: done")), 2 >> >> >> On 05/05/2010 03:37 PM, Johan Ekh wrote: >> >>> >>> >>> >>> Any idea what could be wrong? >>> >>> >>> >>> Error meassage: >>> >>> org-recalculate-all-tables: Wrong number of arguments: #[(function) >>> "ŠŒ~ˆebˆÄ ÅÆ#ƒ: >>> >>> >>> Best regards, >>> Johan >>> >>> >>> >>> >>> >>> >>> On Fri, Apr 30, 2010 at 5:03 PM, Carsten Dominik < >>> carsten.dominik@gmail.com> wrote: >>> >>> 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? >>> >>> >>> Hi Johan, >>> >>> 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 >>> >>> >>> >>> _______________________________________________ >>> Emacs-orgmode mailing list >>> Please use `Reply All' to send replies to the list. >>> Emacs-orgmode@gnu.org >>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode >>> >>> _______________________________________________ >> Emacs-orgmode mailing list >> Please use `Reply All' to send replies to the list. >> Emacs-orgmode@gnu.org >> http://lists.gnu.org/mailman/listinfo/emacs-orgmode >> > > - Carsten > > > > > > _______________________________________________ > Emacs-orgmode mailing list > Please use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode >