emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [bug][babel] noweb gotcha
@ 2014-06-11  3:30 Charles Berry
  2014-06-12 19:58 ` Eric Schulte
  0 siblings, 1 reply; 4+ messages in thread
From: Charles Berry @ 2014-06-11  3:30 UTC (permalink / raw)
  To: emacs-orgmode



The following 

,----
| #+PROPERTY: tangle yes
| 
| #+NAME: print-abc
| #+BEGIN_SRC emacs-lisp
| (format 
| "<<%s>>" "abc")
| #+END_SRC
| 
| #+NAME: print-def
| #+BEGIN_SRC emacs-lisp
| (concat
| "<<" "def" ">>")
| #+END_SRC
| 
| #+BEGIN_SRC emacs-lisp :noweb yes
| <<print-abc>>
| <<print-def>>
| #+END_SRC
`----



tangles as 

,----
| (format 
| "<<%s>>" "abc")
| 
| (concat
| "<<" "def" ">>")
| 
| (format 
| "<<%s>>" "abc")
| (concat
| "")
`----


Note that ""<<" "def" ">>" disappeared from (concat ...).

FWIW, adding quotes inside the constant string in org-babel-noweb-wrap:


"\\([^ \"\t\n][^\"]+?[^ \"\t]\\|[^ \"\t\n]\\)"

fixes this instance.


HTH,

Chuck

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [bug][babel] noweb gotcha
  2014-06-11  3:30 [bug][babel] noweb gotcha Charles Berry
@ 2014-06-12 19:58 ` Eric Schulte
  2014-06-12 21:21   ` Charles C. Berry
  0 siblings, 1 reply; 4+ messages in thread
From: Eric Schulte @ 2014-06-12 19:58 UTC (permalink / raw)
  To: Charles Berry; +Cc: emacs-orgmode

Charles Berry <ccberry@ucsd.edu> writes:

> The following 
>
> ,----
> | #+PROPERTY: tangle yes
> | 
> | #+NAME: print-abc
> | #+BEGIN_SRC emacs-lisp
> | (format 
> | "<<%s>>" "abc")
> | #+END_SRC
> | 
> | #+NAME: print-def
> | #+BEGIN_SRC emacs-lisp
> | (concat
> | "<<" "def" ">>")
> | #+END_SRC
> | 
> | #+BEGIN_SRC emacs-lisp :noweb yes
> | <<print-abc>>
> | <<print-def>>
> | #+END_SRC
> `----
>
>
>
> tangles as 
>
> ,----
> | (format 
> | "<<%s>>" "abc")
> | 
> | (concat
> | "<<" "def" ">>")
> | 
> | (format 
> | "<<%s>>" "abc")
> | (concat
> | "")
> `----
>
>
> Note that ""<<" "def" ">>" disappeared from (concat ...).
>
> FWIW, adding quotes inside the constant string in org-babel-noweb-wrap:
>
>
> "\\([^ \"\t\n][^\"]+?[^ \"\t]\\|[^ \"\t\n]\\)"
>
> fixes this instance.
>

Does this raise any error, or fail silently?

Thanks,
Eric

>
>
> HTH,
>
> Chuck
>
>
>

-- 
Eric Schulte
https://cs.unm.edu/~eschulte
PGP: 0x614CA05D (see https://u.fsf.org/yw)

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [bug][babel] noweb gotcha
  2014-06-12 19:58 ` Eric Schulte
@ 2014-06-12 21:21   ` Charles C. Berry
  2014-06-12 23:41     ` Eric Schulte
  0 siblings, 1 reply; 4+ messages in thread
From: Charles C. Berry @ 2014-06-12 21:21 UTC (permalink / raw)
  To: Eric Schulte; +Cc: emacs-orgmode

On Thu, 12 Jun 2014, Eric Schulte wrote:

> Charles Berry <ccberry@ucsd.edu> writes:
>
>> The following
>>
>> ,----
>> | #+PROPERTY: tangle yes
>> |
>> | #+NAME: print-abc
>> | #+BEGIN_SRC emacs-lisp
>> | (format
>> | "<<%s>>" "abc")
>> | #+END_SRC
>> |
>> | #+NAME: print-def
>> | #+BEGIN_SRC emacs-lisp
>> | (concat
>> | "<<" "def" ">>")
>> | #+END_SRC
>> |
>> | #+BEGIN_SRC emacs-lisp :noweb yes
>> | <<print-abc>>
>> | <<print-def>>
>> | #+END_SRC
>> `----
>>
>>
>>
>> tangles as
>>
>> ,----
>> | (format
>> | "<<%s>>" "abc")
>> |
>> | (concat
>> | "<<" "def" ">>")
>> |
>> | (format
>> | "<<%s>>" "abc")
>> | (concat
>> | "")
>> `----
>>
>>
>> Note that ""<<" "def" ">>" disappeared from (concat ...).
>>
>> FWIW, adding quotes inside the constant string in org-babel-noweb-wrap:
>>
>>
>> "\\([^ \"\t\n][^\"]+?[^ \"\t]\\|[^ \"\t\n]\\)"
>>
>> fixes this instance.
>>
>
> Does this raise any error, or fail silently?
>
> Thanks,
> Eric


Alas, it fails silently -- producing the erroneous output.

I guess the issue is that

 	`(re-search-forward (org-babel-noweb-wrap) nil t)'

finds quoted expressions like

1. "<<abc>>"
2. (concat "<<" abc ">>")

FWIW,

(re-search-forward
  (org-babel-noweb-wrap
   "\\([^ \"\t\n][^\"]+?[^ \"\t]\\|[^ \"\t\n]\\)"
   ) nil t)

(adding quotes to the [^...] bits) takes care of example 2. Not sure 
if example 1 is a feature or a bug - I sometimes use things like

 	"<<text-I-want>>"

so maybe modifying the regex is good enough?

OTOH, <<no-such-chunk>> has no effect. Maybe checking that the reference 
actually resolves is better than tweaking the regexes.


HTH,

Chuck

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [bug][babel] noweb gotcha
  2014-06-12 21:21   ` Charles C. Berry
@ 2014-06-12 23:41     ` Eric Schulte
  0 siblings, 0 replies; 4+ messages in thread
From: Eric Schulte @ 2014-06-12 23:41 UTC (permalink / raw)
  To: Charles C. Berry; +Cc: emacs-orgmode

"Charles C. Berry" <ccberry@ucsd.edu> writes:

> On Thu, 12 Jun 2014, Eric Schulte wrote:
>
>> Charles Berry <ccberry@ucsd.edu> writes:
>>
>>> The following
>>>
>>> ,----
>>> | #+PROPERTY: tangle yes
>>> |
>>> | #+NAME: print-abc
>>> | #+BEGIN_SRC emacs-lisp
>>> | (format
>>> | "<<%s>>" "abc")
>>> | #+END_SRC
>>> |
>>> | #+NAME: print-def
>>> | #+BEGIN_SRC emacs-lisp
>>> | (concat
>>> | "<<" "def" ">>")
>>> | #+END_SRC
>>> |
>>> | #+BEGIN_SRC emacs-lisp :noweb yes
>>> | <<print-abc>>
>>> | <<print-def>>
>>> | #+END_SRC
>>> `----
>>>
>>>
>>>
>>> tangles as
>>>
>>> ,----
>>> | (format
>>> | "<<%s>>" "abc")
>>> |
>>> | (concat
>>> | "<<" "def" ">>")
>>> |
>>> | (format
>>> | "<<%s>>" "abc")
>>> | (concat
>>> | "")
>>> `----
>>>
>>>
>>> Note that ""<<" "def" ">>" disappeared from (concat ...).
>>>
>>> FWIW, adding quotes inside the constant string in org-babel-noweb-wrap:
>>>
>>>
>>> "\\([^ \"\t\n][^\"]+?[^ \"\t]\\|[^ \"\t\n]\\)"
>>>
>>> fixes this instance.
>>>
>>
>> Does this raise any error, or fail silently?
>>
>> Thanks,
>> Eric
>
>
> Alas, it fails silently -- producing the erroneous output.
>
> I guess the issue is that
>
> 	`(re-search-forward (org-babel-noweb-wrap) nil t)'
>
> finds quoted expressions like
>
> 1. "<<abc>>"
> 2. (concat "<<" abc ">>")
>
> FWIW,
>
> (re-search-forward
>  (org-babel-noweb-wrap
>   "\\([^ \"\t\n][^\"]+?[^ \"\t]\\|[^ \"\t\n]\\)"
>   ) nil t)
>
> (adding quotes to the [^...] bits) takes care of example 2. Not sure
> if example 1 is a feature or a bug - I sometimes use things like
>
> 	"<<text-I-want>>"
>
> so maybe modifying the regex is good enough?
>
> OTOH, <<no-such-chunk>> has no effect. Maybe checking that the
> reference actually resolves is better than tweaking the regexes.
>

So it is currently possible to raise errors when noweb references don't
resolve through the use of the `org-babel-noweb-error-all-langs'
variable.  I just added `org-babel-noweb-error-all-langs' which may be
set to raise such errors regardless of the language of the code block.

Best,
Eric

>
>
> HTH,
>
> Chuck
>
>

-- 
Eric Schulte
https://cs.unm.edu/~eschulte
PGP: 0x614CA05D (see https://u.fsf.org/yw)

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-06-12 23:42 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-06-11  3:30 [bug][babel] noweb gotcha Charles Berry
2014-06-12 19:58 ` Eric Schulte
2014-06-12 21:21   ` Charles C. Berry
2014-06-12 23:41     ` Eric Schulte

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).