From: Tom Gillespie <tgbugs@gmail.com>
To: Kyle Meyer <kyle@kyleam.com>
Cc: emacs-orgmode <emacs-orgmode@gnu.org>
Subject: Re: [PATCH] ob-core: Fix handling of multiple noweb refs in same line
Date: Tue, 15 Sep 2020 00:52:20 -0400 [thread overview]
Message-ID: <CA+G3_PMiu3TtYVGnf0ebV-vjjrJxv2W-2YJabBi+pweFZDPBrw@mail.gmail.com> (raw)
In-Reply-To: <87tuvzllg7.fsf@kyleam.com>
Hi Kyle,
This fixes the issue on my system, and looking over the bisected
commit it looks like the ^ was just an oversight. This also resolves
the issue for <<references()>> as well, I don't think we need a
separate test case for that since any issue with references breaking
should show up elsewhere (though I guess you never know). Thank you
for tracking this down, and now I know how to add ert tests for things
like this in the future! Best,
Tom
On Tue, Sep 15, 2020 at 12:21 AM Kyle Meyer <kyle@kyleam.com> wrote:
>
> Tom Gillespie writes:
>
> > Hi,
> > The 9.4 release has a bug where it will only tangle the first noweb
> > reference on a line.
> > This is also present at 9c31cba002a1ba93053aebea1f778be87f61ba06. It happens in
> > emacs-27 and emacs-28. The reproduction is below. Best!
>
> Thanks for the report and the reproducer.
>
> This bisects to c1aed9f80 (ob-core: Refactor
> `org-babel-expand-noweb-references', 2020-01-12). The patch below
> addresses the case you provided (added as a test) and doesn't cause any
> of the other tests to fail. However, I'm no tangler, so I'd appreciate
> if you could give it some testing and report back.
>
> (I should also look more closely at org-babel-expand-noweb-references
> before applying and see if I spot anything that suggests this change is
> problematic.)
>
> -- >8 --
> Subject: [PATCH] ob-core: Fix handling of multiple noweb refs in same line
>
> * lisp/ob-core.el (org-babel-expand-noweb-references): Don't anchor
> noweb regexp at start of line to allow multiple matches per line.
> * testing/lisp/test-ob-tangle.el (ob-tangle/multiple-noweb-in-line):
> Add test.
>
> This fixes a regression introduced by c1aed9f80 (ob-core: Refactor
> `org-babel-expand-noweb-references', 2020-01-12), which was part of
> the 9.4 release.
>
> Reported-by: Tom Gillespie <tgbugs@gmail.com>
> Ref: https://orgmode.org/list/CA+G3_PO2yO1jMMpdrkc39BGQQ2eU5X4FzTEJVotjDJo-50dsqQ@mail.gmail.com
> ---
> lisp/ob-core.el | 2 +-
> testing/lisp/test-ob-tangle.el | 32 ++++++++++++++++++++++++++++++++
> 2 files changed, 33 insertions(+), 1 deletion(-)
>
> diff --git a/lisp/ob-core.el b/lisp/ob-core.el
> index a5e079d9a..7300f239e 100644
> --- a/lisp/ob-core.el
> +++ b/lisp/ob-core.el
> @@ -2781,7 +2781,7 @@ (defun org-babel-expand-noweb-references (&optional info parent-buffer)
> (lang (nth 0 info))
> (body (nth 1 info))
> (comment (string= "noweb" (cdr (assq :comments (nth 2 info)))))
> - (noweb-re (format "^\\(.*?\\)\\(%s\\)"
> + (noweb-re (format "\\(.*?\\)\\(%s\\)"
> (with-current-buffer parent-buffer
> (org-babel-noweb-wrap))))
> (cache nil)
> diff --git a/testing/lisp/test-ob-tangle.el b/testing/lisp/test-ob-tangle.el
> index e0e2ea52c..cfdf16d40 100644
> --- a/testing/lisp/test-ob-tangle.el
> +++ b/testing/lisp/test-ob-tangle.el
> @@ -420,6 +420,38 @@ (ert-deftest ob-tangle/commented-src-blocks ()
> (org-split-string (buffer-string))))
> (delete-file file))))))
>
> +(ert-deftest ob-tangle/multiple-noweb-in-line ()
> + "Test handling of multiple noweb references in a single line."
> + (should
> + (equal '("1" "2" "1")
> + (let ((file (make-temp-file "org-tangle-")))
> + (unwind-protect
> + (progn
> + (org-test-with-temp-text-in-file
> + (format "
> +#+name: block1
> +#+begin_src elisp
> +1
> +#+end_src
> +
> +#+name: block2
> +#+begin_src elisp
> +2
> +#+end_src
> +
> +#+name: block3
> +#+begin_src elisp :noweb yes :tangle %s
> +<<block1>> <<block2>> <<block1>>
> +#+end_src"
> + file)
> + (let ((org-babel-noweb-error-all-langs nil)
> + (org-babel-noweb-error-langs nil))
> + (org-babel-tangle)))
> + (with-temp-buffer
> + (insert-file-contents file)
> + (org-split-string (buffer-string))))
> + (delete-file file))))))
> +
> (ert-deftest ob-tangle/detangle-false-positive ()
> "Test handling of false positive link during detangle."
> (let (buffer)
>
> base-commit: e6021bc9b18982b30dd61417d98276b2984892cd
> --
> 2.28.0
>
next prev parent reply other threads:[~2020-09-15 4:53 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-14 18:56 Bug: org-babel only tangles first noweb reference on a line [9.4 (9.4-elpaplus @ /home/tom/.emacs.d/elpa/org-plus-contrib-20200914/)] Tom Gillespie
2020-09-15 4:20 ` [PATCH] ob-core: Fix handling of multiple noweb refs in same line Kyle Meyer
2020-09-15 4:52 ` Tom Gillespie [this message]
2020-09-16 3:50 ` Kyle Meyer
2021-04-27 19:36 ` Bug: org-babel only tangles first noweb reference on a line [9.4 (9.4-elpaplus @ /home/tom/.emacs.d/elpa/org-plus-contrib-20200914/)] Bastien
2021-04-27 21:18 ` Kyle Meyer
2021-04-28 3:35 ` Bastien
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=CA+G3_PMiu3TtYVGnf0ebV-vjjrJxv2W-2YJabBi+pweFZDPBrw@mail.gmail.com \
--to=tgbugs@gmail.com \
--cc=emacs-orgmode@gnu.org \
--cc=kyle@kyleam.com \
/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).