From mboxrd@z Thu Jan 1 00:00:00 1970 From: Johan Ekh Subject: Re: Iterate many tables Date: Fri, 14 May 2010 12:07:24 +0200 Message-ID: References: <4BE2A954.7010401@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0603940526==" Return-path: Received: from [140.186.70.92] (port=41444 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OCrnl-00016Q-Bq for emacs-orgmode@gnu.org; Fri, 14 May 2010 06:07:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OCrni-0007jC-Om for emacs-orgmode@gnu.org; Fri, 14 May 2010 06:07:28 -0400 Received: from fg-out-1718.google.com ([72.14.220.158]:10687) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OCrni-0007ii-Gv for emacs-orgmode@gnu.org; Fri, 14 May 2010 06:07:26 -0400 Received: by fg-out-1718.google.com with SMTP id e12so1253894fga.12 for ; Fri, 14 May 2010 03:07:24 -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: Carsten Dominik Cc: emacs-orgmode@gnu.org --===============0603940526== Content-Type: multipart/alternative; boundary=001485f5ced0ad7d3604868b0a6d --001485f5ced0ad7d3604868b0a6d Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable 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-excursi= on >> (save-restriction (widen) (goto-char (point-min)) (while (re-search-forw= ard >> org-table-any-line-regexp nil t) (message "Mapping tables: %d%%" (/ (* 1= 00.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-restrictio= n >> (widen) (goto-char (point-min)) (while (re-search-forward >> org-table-any-line-regexp nil t) (message "Mapping tables: %d%%" (/ (* 1= 00.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) >>> "=C5=A0=C5=92~=CB=86eb=CB=86=C3=84 =C3=85=C3=86#=C6=92: >>> >>> >>> 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 > --001485f5ced0ad7d3604868b0a6d Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable 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-b= it openSuse 11.1 linux laptop.

Do the cursor need to be located anywhere specific when executing
th= e functions? I've tried to execute the functions while having all table= s
expanded and the cursor somewhere in the last table.

Best regards,
Johan

On Fri, May 7, 2010 at 9:36 AM, Carsten D= ominik <c= arsten.dominik@gmail.com> wrote:
Hi,

both functions work without any problem for me, so I do not know what you a= re doing differently. =C2=A0maybe you ned to describe exactly how you are c= alling 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) &= quot;Apply FUNCTION to the start of all tables in the buffer." (save-e= xcursion (save-restriction (widen) (goto-char (point-min)) (while (re-searc= h-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 or= g-table-any-border-regexp nil 1)))) (message "Mapping tables: done&quo= t;)), 2

org-iterate-all-tables:
while: Wrong number of arguments: (lambda (function) "Apply FUNCTION t= o the start of all tables in the buffer." (save-excursion (save-restri= ction (widen) (goto-char (point-min)) (while (re-search-forward org-table-a= ny-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-re= gexp 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) "= =C5=A0=C5=92~=CB=86eb=CB=86=C3=84 =C3=85=C3=86#=C6=92:


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 tha= t depends on fields
in the previous table. Thus, if I change something in the first table, I mu= st 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 ()
=C2=A0(interactive)
=C2=A0(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 ()
=C2=A0(interactive)
=C2=A0(let* ((imax 10)
=C2=A0 =C2=A0 =C2=A0 =C2=A0(checksum (md5 (buffer-string)))
=C2=A0 =C2=A0 =C2=A0 =C2=A0c1
=C2=A0 =C2=A0 =C2=A0 =C2=A0(i imax))
=C2=A0 (catch 'exit
=C2=A0 =C2=A0 (while (> i 0)
=C2=A0 =C2=A0 =C2=A0 (setq i (1- i))
=C2=A0 =C2=A0 =C2=A0 (org-table-map-tables (lambda () (org-table-recalcula= te t)) t)
=C2=A0 =C2=A0 =C2=A0 (if (equal checksum (setq c1 (md5 (buffer-string))))<= br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (progn
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (message "Convergence after= %d iterations" (- imax i))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (throw 'exit t))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq checksum c1)))
=C2=A0 =C2=A0 (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@gn= u.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@gn= u.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@gn= u.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

--001485f5ced0ad7d3604868b0a6d-- --===============0603940526== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ 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 --===============0603940526==--