emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: "Eric Schulte" <schulte.eric@gmail.com>
To: lists@manor-farm.org
Cc: emacs-orgmode@gnu.org
Subject: Re: Org Babel Bug
Date: Tue, 09 Feb 2010 19:11:21 -0700	[thread overview]
Message-ID: <87iqa5rgae.fsf@gmail.com> (raw)
In-Reply-To: <87k4umbb8g.fsf@gmail.com> (Eric Schulte's message of "Tue, 09 Feb 2010 09:54:55 -0700")

Hi,

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" <schulte.eric@gmail.com> 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 <lists@manor-farm.org> 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#
>>
>>
>> _______________________________________________
>> 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

  reply	other threads:[~2010-02-10  2:11 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-09 11:06 Org Babel Bug Ian Barton
2010-02-09 15:21 ` Dan Davison
2010-02-09 17:29   ` Dan Davison
2010-02-09 16:54 ` Eric Schulte
2010-02-10  2:11   ` Eric Schulte [this message]
2010-02-11 10:11     ` Ian Barton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87iqa5rgae.fsf@gmail.com \
    --to=schulte.eric@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=lists@manor-farm.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).