From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Barton Subject: Re: Org Babel Bug Date: Thu, 11 Feb 2010 10:11:22 +0000 Message-ID: <4B73D7CA.5040102@manor-farm.org> References: <4B7141AE.9040105@manor-farm.org> <87k4umbb8g.fsf@gmail.com> <87iqa5rgae.fsf@gmail.com> Reply-To: lists@manor-farm.org Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NfW1L-0002Fd-V2 for emacs-orgmode@gnu.org; Thu, 11 Feb 2010 05:11:40 -0500 Received: from [199.232.76.173] (port=41312 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NfW1K-0002FN-H8 for emacs-orgmode@gnu.org; Thu, 11 Feb 2010 05:11:38 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NfW1H-0003La-U9 for emacs-orgmode@gnu.org; Thu, 11 Feb 2010 05:11:38 -0500 Received: from mail.ian-barton.com ([109.74.196.44]:42265 helo=li40-130.members.linode.com) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NfW1H-0003LD-Fz for emacs-orgmode@gnu.org; Thu, 11 Feb 2010 05:11:35 -0500 In-Reply-To: <87iqa5rgae.fsf@gmail.com> 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: Eric Schulte Cc: emacs-orgmode@gnu.org Hi Eric, I have been away from my own computer for a while. I have just applied the patch and it works for me. Thanks! Ian. > Since the patch below greatly simplifies the code, and it has worked in > all my tests, I'm going to apply it now. > > Please do let me know if the export problems persist. > > Best -- Eric > > "Eric Schulte" writes: > >> Hi Ian, >> >> The implementation of our block exportation has been bothering me for >> some time now. The attached patch *greatly* simplifies the exportation >> code. Could you please give it a try and let me know if it fixes your >> bug? >> >> If so I will apply it to the main repository. >> >> Thanks -- Eric >> >> >> diff --git a/contrib/babel/lisp/org-babel-exp.el b/contrib/babel/lisp/org-babel-exp.el >> index 8ce52b6..b299d57 100644 >> --- a/contrib/babel/lisp/org-babel-exp.el >> +++ b/contrib/babel/lisp/org-babel-exp.el >> @@ -73,20 +73,10 @@ results - just like none only the block is run on export ensuring >> none ----- do not display either code or results upon export" >> (interactive) >> (message "org-babel-exp processing...") >> - (flet ((cond-progress-marker () (when (and progress-marker (< progress-marker (point))) >> - progress-marker))) >> - (or (and (re-search-backward org-babel-src-block-regexp (cond-progress-marker) t) >> - (setq progress-marker (match-end 0)) >> - (org-babel-exp-do-export (org-babel-get-src-block-info) 'block)) >> - (save-excursion >> - (forward-line 0) >> - (and (org-babel-where-is-src-block-head) >> - (goto-char (org-babel-where-is-src-block-head)) >> - (org-babel-exp-do-export (org-babel-get-src-block-info) 'block))) >> - (and (re-search-backward org-block-regexp (cond-progress-marker) t) >> - (setq progress-marker (match-end 0)) >> - (match-string 0)) >> - (error "Unmatched block [bug in `org-babel-exp-src-blocks'].")))) >> + (when (member (first headers) org-babel-interpreters) >> + (save-excursion >> + (goto-char (match-beginning 0)) >> + (org-babel-exp-do-export (org-babel-get-src-block-info) 'block)))) >> >> (defun org-babel-exp-inline-src-blocks (start end) >> "Process inline src blocks between START and END for export. >> diff --git a/lisp/org-exp-blocks.el b/lisp/org-exp-blocks.el >> index 1d43d3a..af53b60 100644 >> --- a/lisp/org-exp-blocks.el >> +++ b/lisp/org-exp-blocks.el >> @@ -183,13 +183,15 @@ specified in BLOCKS which default to the value of >> (setq body (save-match-data (org-remove-indentation body)))) >> (unless (memq type types) (setq types (cons type types))) >> (save-match-data (interblock start (match-beginning 0))) >> - (if (setq func (cadr (assoc type org-export-blocks))) >> - (progn >> - (replace-match (save-match-data >> + (when (setq func (cadr (assoc type org-export-blocks))) >> + (let ((replacement (save-match-data >> (if (memq type org-export-blocks-witheld) "" >> - (apply func body headers))) t t) >> + (apply func body headers))))) >> + (when replacement >> + (replace-match replacement t t) >> (unless preserve-indent >> - (indent-code-rigidly (match-beginning 0) (match-end 0) indentation)))) >> + (indent-code-rigidly >> + (match-beginning 0) (match-end 0) indentation))))) >> (setq start (match-end 0))) >> (interblock start (point-max)))))) >> >> >> >> Ian Barton writes: >> >>> I am using Babel to maintein my .emacs file. When I try to publish I >>> am getting a Babel error from one of my org files. The offending >>> section of the org file seems to be: >>> >>> #+BEGIN_SRC emacs-shell >>> 127.0.0.1 mail.wilkesley.org localhost >>> >>> # The following lines are desirable for IPv6 capable hosts >>> ::1 ip6-localhost ip6-loopback >>> fe00::0 ip6-localnet >>> ff00::0 ip6-mcastprefix >>> ff02::1 ip6-allnodes >>> ff02::2 ip6-allrouters >>> ff02::3 ip6-allhosts >>> >>> #+END_SRC >>> >>> I am using a recent git checkout of org and GNU Emacs 23.1.50.1 >>> (x86_64-pc-linux-gnu, GTK+ Version 2.18.0). >>> >>> The backtrace is: >>> >>> Debugger entered--Lisp error: (error "Unmatched block [bug in >>> org-babel-exp-src-blocks'].") >>> signal(error ("Unmatched block [bug in `org-babel-exp-src-blocks'].")) >>> error("Unmatched block [bug in `org-babel-exp-src-blocks'].") >>> (or (and (re-search-backward org-babel-src-block-regexp ... t) (setq >>> progress-marker ...) (org-babel-exp-do-export ... ...)) >>> (save-excursion (forward-line 0) (and ... ... ...)) (and >>> (re-search-backward org-block-regexp ... t) (setq progress-marker ...) >>> (match-string 0)) (error "Unmatched block [bug in >>> org-babel-exp-src-blocks'].")) >>> (progn (fset (quote cond-progress-marker) (function* ...)) (or (and >>> ... ... ...) (save-excursion ... ...) (and ... ... ...) (error >>> "Unmatched block [bug in `org-babel-exp-src-blocks']."))) >>> (unwind-protect (progn (fset ... ...) (or ... ... ... ...)) (if >>> --cl-letf-bound-- (fset ... --cl-letf-save--) (fmakunbound ...))) >>> (let* ((--cl-letf-bound-- ...) (--cl-letf-save-- ...)) >>> (unwind-protect (progn ... ...) (if --cl-letf-bound-- ... ...))) >>> (letf ((... ...)) (or (and ... ... ...) (save-excursion ... ...) >>> (and ... ... ...) (error "Unmatched block [bug in >>> org-babel-exp-src-blocks']."))) >>> (letf* ((... ...)) (or (and ... ... ...) (save-excursion ... ...) >>> (and ... ... ...) (error "Unmatched block [bug in >>> org-babel-exp-src-blocks']."))) >>> (flet ((cond-progress-marker nil ...)) (or (and ... ... ...) >>> (save-excursion ... ...) (and ... ... ...) (error "Unmatched block >>> [bug in `org-babel-exp-src-blocks']."))) >>> org-babel-exp-src-blocks(#("127.0.0.1 mail.wilkesley.org >>> localhost\n\n# The following lines are desirable for IPv6 capable >>> hosts\n::1 ip6-localhost ip6-loopback\nfe00::0 ip6-localnet\nff00::0 >>> ip6-mcastprefix\nff02::1 ip6-allnodes\nff02::2 ip6-allrouters\nff02::3 >>> ip6-allhosts\n" 0 240 (fontified nil)) #("emacs-shell" 0 11 (fontified >>> nil))) >>> apply(org-babel-exp-src-blocks #("127.0.0.1 mail.wilkesley.org >>> localhost\n\n# The following lines are desirable for IPv6 capable >>> hosts\n::1 ip6-localhost ip6-loopback\nfe00::0 ip6-localnet\nff00::0 >>> ip6-mcastprefix\nff02::1 ip6-allnodes\nff02::2 ip6-allrouters\nff02::3 >>> ip6-allhosts\n" 0 240 (fontified nil)) #("emacs-shell" 0 11 (fontified >>> nil))) >>> >>> byte-code("\306\307\211\211\211\211\211\211\211\211.......#.$.%.&\310\311!\211.'\205#