From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: Iterate many tables Date: Fri, 14 May 2010 14:32:48 +0200 Message-ID: References: <4BE2A954.7010401@gmail.com> Mime-Version: 1.0 (Apple Message framework v936) Content-Type: text/plain; charset=WINDOWS-1252; format=flowed; delsp=yes Content-Transfer-Encoding: quoted-printable Return-path: Received: from [140.186.70.92] (port=57539 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OCu4h-0000v2-S9 for emacs-orgmode@gnu.org; Fri, 14 May 2010 08:33:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OCu4V-0003XN-5t for emacs-orgmode@gnu.org; Fri, 14 May 2010 08:33:07 -0400 Received: from mail-ew0-f216.google.com ([209.85.219.216]:60182) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OCu4T-0003XA-KD for emacs-orgmode@gnu.org; Fri, 14 May 2010 08:32:55 -0400 Received: by ewy8 with SMTP id 8so813645ewy.8 for ; Fri, 14 May 2010 05:32:53 -0700 (PDT) In-Reply-To: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Johan Ekh Cc: emacs-orgmode@gnu.org Hi Johan, I think you are not using the latest version of Org? Please upgrade. - Carsten On May 14, 2010, at 12:07 PM, Johan Ekh wrote: > 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 =20= > 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 =20 > what you are doing differently. maybe you ned to describe exactly =20 > 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 =20 > (function) "Apply FUNCTION to the start of all tables in the =20 > buffer." (save-excursion (save-restriction (widen) (goto-char (point-=20= > min)) (while (re-search-forward org-table-any-line-regexp nil t) =20 > (message "Mapping tables: %d%%" (/ (* 100.0 (point)) (buffer-size))) =20= > (beginning-of-line 1) (when (looking-at org-table-line-regexp) (save-=20= > excursion (funcall function)) (or (looking-at org-table-line-regexp) =20= > (forward-char 1))) (re-search-forward org-table-any-border-regexp =20 > nil 1)))) (message "Mapping tables: done")), 2 > > org-iterate-all-tables: > while: Wrong number of arguments: (lambda (function) "Apply FUNCTION =20= > to the start of all tables in the buffer." (save-excursion (save-=20 > restriction (widen) (goto-char (point-min)) (while (re-search-=20 > forward org-table-any-line-regexp nil t) (message "Mapping tables: %d=20= > %%" (/ (* 100.0 (point)) (buffer-size))) (beginning-of-line 1) (when =20= > (looking-at org-table-line-regexp) (save-excursion (funcall =20 > function)) (or (looking-at org-table-line-regexp) (forward-char 1))) =20= > (re-search-forward org-table-any-border-regexp nil 1)))) (message =20 > "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) =20= > "=8A=8C~=88eb=88=C4 =C5=C6#=83: > > > Best regards, > Johan > > > > > > > On Fri, Apr 30, 2010 at 5:03 PM, Carsten Dominik = > 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 =20 > fields that depends on fields > in the previous table. Thus, if I change something in the first =20 > table, I must go down manually > and recalculate (or iterate) each table. Is there a way to =20 > 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 =20 > (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 > - Carsten