emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Syntax error warnings? (Especially important with :noweb-ref's)
@ 2012-01-12 21:38 Yu
  2012-01-14 17:49 ` Eric Schulte
  0 siblings, 1 reply; 8+ messages in thread
From: Yu @ 2012-01-12 21:38 UTC (permalink / raw)
  To: org-mode mailing list

Hello!

I was wondering, if there is a way to get warnings for typos (e.g.
when specifying invalid properties or header arguments). It can just
easily happen that I mix up e.g. ":exports" and ":export" (though
that's probably a very harmless example).

More important it gets though, when trying to use the literate
programming facilities.

Say I have a source code

#+begin_src sh :noweb tangle :tangle foo.sh
  <<foo>>
#+end_src
#+begin_src sh :noweb-ref fo
  echo '... how are you?';
#+end_src

then tangling would run through without any indication of the typo in
the name of the "foo" block. Such errors might be hard to debug,
because there is no indication of the error, maybe nothing other than
runtime errors.

An error message for the /use/ of undefined references only wouldn't
avoid such problems either, e.g. consider

#+begin_src sh :noweb tangle :tangle foo.sh
  <<foo>>
#+end_src
#+begin_src sh :noweb-ref foo
  echo 'Hello World...';
#+end_src
#+begin_src sh :noweb-ref fo
  echo 'Hello World...';
#+end_src

where the only detectable error is, that "fo" was never used anywhere.

A similiar question (though without the second part) was asked here:
http://lists.gnu.org/archive/html/emacs-orgmode/2009-11/msg00273.html
As far as I can tell, it stands unanswered.

On a side note: What is the customary way to mention the
noweb-relevant name of a source block in the html/pdf export? After
all, if a code-block states
    : <<task1>>
    : <<task2>>
the reader needs to know, which code blocks define these.


kind regards, Yu

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

* Re: Syntax error warnings? (Especially important with :noweb-ref's)
  2012-01-12 21:38 Syntax error warnings? (Especially important with :noweb-ref's) Yu
@ 2012-01-14 17:49 ` Eric Schulte
  2012-01-21 15:21   ` Yu
  2012-01-22 21:25   ` Sebastien Vauban
  0 siblings, 2 replies; 8+ messages in thread
From: Eric Schulte @ 2012-01-14 17:49 UTC (permalink / raw)
  To: Yu; +Cc: org-mode mailing list

Yu <yu_icq@gmx.at> writes:

> Hello!
>
> I was wondering, if there is a way to get warnings for typos (e.g.
> when specifying invalid properties or header arguments). It can just
> easily happen that I mix up e.g. ":exports" and ":export" (though
> that's probably a very harmless example).
>

While there is currently no way to do this there are two related
functions which should help.

,----[org-babel-view-src-block-info] bound to C-c C-v I
| org-babel-view-src-block-info is an interactive Lisp function in
| `ob.el'.
| 
| (org-babel-view-src-block-info)
| 
| Display information on the current source block.
| This includes header arguments, language and name, and is largely
| a window into the `org-babel-get-src-block-info' function.
`----

and

,----[org-babel-check-src-block] bound to C-c C-v c
| org-babel-check-src-block is an interactive Lisp function in `ob.el'.
| 
| (org-babel-check-src-block)
| 
| Check for misspelled header arguments in the current code block.
`----

This problem is not trivial because new language are permitted to create
and use *any* header arguments they like, so there are no /wrong/ header
arguments, there are only /suspicious/ header arguments (like the
:exports option you suggest).  The above function reports any suspicious
header arguments.  Perhaps there would be a way to integrate the above
function with flyspell for automatic highlighting of suspicious header
arguments.  I'll put looking into such integration on my long-term Org
task queue.

>
> More important it gets though, when trying to use the literate
> programming facilities.
>
> Say I have a source code
>
> #+begin_src sh :noweb tangle :tangle foo.sh
>   <<foo>>
> #+end_src
> #+begin_src sh :noweb-ref fo
>   echo '... how are you?';
> #+end_src
>
> then tangling would run through without any indication of the typo in
> the name of the "foo" block. Such errors might be hard to debug,
> because there is no indication of the error, maybe nothing other than
> runtime errors.
>
> An error message for the /use/ of undefined references only wouldn't
> avoid such problems either, e.g. consider
>
> #+begin_src sh :noweb tangle :tangle foo.sh
>   <<foo>>
> #+end_src
> #+begin_src sh :noweb-ref foo
>   echo 'Hello World...';
> #+end_src
> #+begin_src sh :noweb-ref fo
>   echo 'Hello World...';
> #+end_src
>
> where the only detectable error is, that "fo" was never used anywhere.
>
> A similiar question (though without the second part) was asked here:
> http://lists.gnu.org/archive/html/emacs-orgmode/2009-11/msg00273.html
> As far as I can tell, it stands unanswered.
>

Yes, although in many languages constructs like <<foo>> are valid code,
so it would be inappropriate for tangling to raise errors by default.
It is possible to turn on such errors on a language-by-language basis,
by customizing the following variable.

,----[org-babel-noweb-error-langs]
| org-babel-noweb-error-langs is a variable defined in `ob.el'.
| Its value is nil
| 
| Documentation:
| Languages for which Babel will raise literate programming errors.
| List of languages for which errors should be raised when the
| source code block satisfying a noweb reference in this language
| can not be resolved.
`----

>
> On a side note: What is the customary way to mention the
> noweb-relevant name of a source block in the html/pdf export? After
> all, if a code-block states
>     : <<task1>>
>     : <<task2>>
> the reader needs to know, which code blocks define these.
>

Currently there is no automated support for this, so you should simply
name code blocks manually, however this topic has been raised recently
in another thread and there does seem to be interest for automated
support.

Best,

>
>
> kind regards, Yu
>

-- 
Eric Schulte
http://cs.unm.edu/~eschulte/

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

* Re: Syntax error warnings? (Especially important with :noweb-ref's)
  2012-01-14 17:49 ` Eric Schulte
@ 2012-01-21 15:21   ` Yu
  2012-01-23 18:04     ` Eric Schulte
  2012-01-22 21:25   ` Sebastien Vauban
  1 sibling, 1 reply; 8+ messages in thread
From: Yu @ 2012-01-21 15:21 UTC (permalink / raw)
  To: Eric Schulte; +Cc: org-mode mailing list

Hello again!

I thought about the *noweb* part again. I tried the following:

======================================
#+begin_src sh :tangle test.out :noweb tangle
  <<task1>>
  cat << test.org >> test.out2
#+end_src

#+begin_src sh :noweb-ref task1
  echo "hello world"
#+end_src
======================================

The tangled output file "test.out" looked like this:
======================================
/bin/sh

echo "hello world"
cat  test.out2
======================================

i.e. the syntactically valid "<< test.org >>" construct was omitted.
Thus a separate syntax for forcing a literal "<<" in the tangled
output is needed anyway (if not yet implemented) and if so, warning
about undefined code blocks should be possible too.

The big relevance of warning about undefined and never used code
blocks struck me, when recently I tried to use it again. The natural
work flow to me would have been to write something like

 : The task at hand has an overall structure
 : #+begin_src python :tangle foo.py :noweb tangle
 :   <<read the data>>
 :   <<generate derived information>>
 :   <<output the results>>
 : #+end_src

When proceeding after this however I would have to keep in mind open
tasks or (slightly better) to instantly create TODO sections for said
blocks. However, having this order of working imposed on me sort of
defeats the purpose for my understanding. I'd rather prefer to do an
`M-x org-babel-tangle' tell me, that I forgot to implement one of the
partial tasks, rather than having to find out missing code blocks from
the output file (where, as mentioned, they result in "nothing" rather
than an unresolved "<<...>>" construct).

kind regards, Yu



2012/1/14 Eric Schulte <eric.schulte@gmx.com>:
> Yu <yu_icq@gmx.at> writes:
>
>> Hello!
>>
>> I was wondering, if there is a way to get warnings for typos (e.g.
>> when specifying invalid properties or header arguments). It can just
>> easily happen that I mix up e.g. ":exports" and ":export" (though
>> that's probably a very harmless example).
>>
>
> While there is currently no way to do this there are two related
> functions which should help.
>
> ,----[org-babel-view-src-block-info] bound to C-c C-v I
> | org-babel-view-src-block-info is an interactive Lisp function in
> | `ob.el'.
> |
> | (org-babel-view-src-block-info)
> |
> | Display information on the current source block.
> | This includes header arguments, language and name, and is largely
> | a window into the `org-babel-get-src-block-info' function.
> `----
>
> and
>
> ,----[org-babel-check-src-block] bound to C-c C-v c
> | org-babel-check-src-block is an interactive Lisp function in `ob.el'.
> |
> | (org-babel-check-src-block)
> |
> | Check for misspelled header arguments in the current code block.
> `----
>
> This problem is not trivial because new language are permitted to create
> and use *any* header arguments they like, so there are no /wrong/ header
> arguments, there are only /suspicious/ header arguments (like the
> :exports option you suggest).  The above function reports any suspicious
> header arguments.  Perhaps there would be a way to integrate the above
> function with flyspell for automatic highlighting of suspicious header
> arguments.  I'll put looking into such integration on my long-term Org
> task queue.
>
>>
>> More important it gets though, when trying to use the literate
>> programming facilities.
>>
>> Say I have a source code
>>
>> #+begin_src sh :noweb tangle :tangle foo.sh
>>   <<foo>>
>> #+end_src
>> #+begin_src sh :noweb-ref fo
>>   echo '... how are you?';
>> #+end_src
>>
>> then tangling would run through without any indication of the typo in
>> the name of the "foo" block. Such errors might be hard to debug,
>> because there is no indication of the error, maybe nothing other than
>> runtime errors.
>>
>> An error message for the /use/ of undefined references only wouldn't
>> avoid such problems either, e.g. consider
>>
>> #+begin_src sh :noweb tangle :tangle foo.sh
>>   <<foo>>
>> #+end_src
>> #+begin_src sh :noweb-ref foo
>>   echo 'Hello World...';
>> #+end_src
>> #+begin_src sh :noweb-ref fo
>>   echo 'Hello World...';
>> #+end_src
>>
>> where the only detectable error is, that "fo" was never used anywhere.
>>
>> A similiar question (though without the second part) was asked here:
>> http://lists.gnu.org/archive/html/emacs-orgmode/2009-11/msg00273.html
>> As far as I can tell, it stands unanswered.
>>
>
> Yes, although in many languages constructs like <<foo>> are valid code,
> so it would be inappropriate for tangling to raise errors by default.
> It is possible to turn on such errors on a language-by-language basis,
> by customizing the following variable.
>
> ,----[org-babel-noweb-error-langs]
> | org-babel-noweb-error-langs is a variable defined in `ob.el'.
> | Its value is nil
> |
> | Documentation:
> | Languages for which Babel will raise literate programming errors.
> | List of languages for which errors should be raised when the
> | source code block satisfying a noweb reference in this language
> | can not be resolved.
> `----
>
>>
>> On a side note: What is the customary way to mention the
>> noweb-relevant name of a source block in the html/pdf export? After
>> all, if a code-block states
>>     : <<task1>>
>>     : <<task2>>
>> the reader needs to know, which code blocks define these.
>>
>
> Currently there is no automated support for this, so you should simply
> name code blocks manually, however this topic has been raised recently
> in another thread and there does seem to be interest for automated
> support.
>
> Best,
>
>>
>>
>> kind regards, Yu
>>
>
> --
> Eric Schulte
> http://cs.unm.edu/~eschulte/

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

* Re: Syntax error warnings? (Especially important with :noweb-ref's)
  2012-01-14 17:49 ` Eric Schulte
  2012-01-21 15:21   ` Yu
@ 2012-01-22 21:25   ` Sebastien Vauban
  2012-01-23 18:07     ` Eric Schulte
  1 sibling, 1 reply; 8+ messages in thread
From: Sebastien Vauban @ 2012-01-22 21:25 UTC (permalink / raw)
  To: emacs-orgmode-mXXj517/zsQ

Hi Eric,

Eric Schulte wrote:
> there are two related functions which should help.
>
> ,----[org-babel-view-src-block-info] bound to C-c C-v I
> | org-babel-view-src-block-info is an interactive Lisp function in
> | `ob.el'.
> | 
> | (org-babel-view-src-block-info)
> | 
> | Display information on the current source block.
> | This includes header arguments, language and name, and is largely
> | a window into the `org-babel-get-src-block-info' function.
> `----
>
> and
>
> ,----[org-babel-check-src-block] bound to C-c C-v c
> | org-babel-check-src-block is an interactive Lisp function in `ob.el'.
> | 
> | (org-babel-check-src-block)
> | 
> | Check for misspelled header arguments in the current code block.
> `----

When checking for suspicious header arguments on[1]:

#+name: mean
#+begin_src emacs-lisp :var lst=()
  (let ((num (car lst)) (nums (cdr lst)))
    (/ (float (+ num (apply #'+ nums))) (1+ (length nums))))
#+end_src

it reports:

    supplied header ""var"" is suspiciously close to ""dir""

Can you enlighten me on what's suspicious here?

Best regards,
  Seb

Footnotes:

[1] which is supposed to be used in the following table:

|   1 |
|   2 |
|   3 |
|   4 |
|   5 |
|   6 |
| 3.5 |
#+TBLFM: @7$1='(sbe mean (lst @1..@6))

-- 
Sebastien Vauban

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

* Re: Syntax error warnings? (Especially important with :noweb-ref's)
  2012-01-21 15:21   ` Yu
@ 2012-01-23 18:04     ` Eric Schulte
       [not found]       ` <CANtbJLEo-Bb3erMVRivdQYa=au81ExDJdSYRbQzXqx9F5V=VVw@mail.gmail.com>
  0 siblings, 1 reply; 8+ messages in thread
From: Eric Schulte @ 2012-01-23 18:04 UTC (permalink / raw)
  To: Yu; +Cc: org-mode mailing list

Have you tried using the `org-babel-noweb-error-langs' variable that I
mentioned previously?  It should help in these situations.

Yu <yu_icq@gmx.at> writes:

> Hello again!
>
> I thought about the *noweb* part again. I tried the following:
>
> ======================================
> #+begin_src sh :tangle test.out :noweb tangle
>   <<task1>>
>   cat << test.org >> test.out2
> #+end_src
> #+begin_src sh :noweb-ref task1
>   echo "hello world"
> #+end_src
> ======================================
>
> The tangled output file "test.out" looked like this:
> ======================================
> /bin/sh
>
> echo "hello world"
> cat  test.out2
> ======================================
>
> i.e. the syntactically valid "<< test.org >>" construct was omitted.
> Thus a separate syntax for forcing a literal "<<" in the tangled
> output is needed anyway (if not yet implemented) and if so, warning
> about undefined code blocks should be possible too.
>
> The big relevance of warning about undefined and never used code
> blocks struck me, when recently I tried to use it again. The natural
> work flow to me would have been to write something like
>
>  : The task at hand has an overall structure
>  : #+begin_src python :tangle foo.py :noweb tangle
>  :   <<read the data>>
>  :   <<generate derived information>>
>  :   <<output the results>>
>  : #+end_src
>
> When proceeding after this however I would have to keep in mind open
> tasks or (slightly better) to instantly create TODO sections for said
> blocks. However, having this order of working imposed on me sort of
> defeats the purpose for my understanding. I'd rather prefer to do an
> `M-x org-babel-tangle' tell me, that I forgot to implement one of the
> partial tasks, rather than having to find out missing code blocks from
> the output file (where, as mentioned, they result in "nothing" rather
> than an unresolved "<<...>>" construct).
>
> kind regards, Yu
>
>
>
> 2012/1/14 Eric Schulte <eric.schulte@gmx.com>:
>> Yu <yu_icq@gmx.at> writes:
>>
>>> Hello!
>>>
>>> I was wondering, if there is a way to get warnings for typos (e.g.
>>> when specifying invalid properties or header arguments). It can just
>>> easily happen that I mix up e.g. ":exports" and ":export" (though
>>> that's probably a very harmless example).
>>>
>>
>> While there is currently no way to do this there are two related
>> functions which should help.
>>
>> ,----[org-babel-view-src-block-info] bound to C-c C-v I
>> | org-babel-view-src-block-info is an interactive Lisp function in
>> | `ob.el'.
>> |
>> | (org-babel-view-src-block-info)
>> |
>> | Display information on the current source block.
>> | This includes header arguments, language and name, and is largely
>> | a window into the `org-babel-get-src-block-info' function.
>> `----
>>
>> and
>>
>> ,----[org-babel-check-src-block] bound to C-c C-v c
>> | org-babel-check-src-block is an interactive Lisp function in `ob.el'.
>> |
>> | (org-babel-check-src-block)
>> |
>> | Check for misspelled header arguments in the current code block.
>> `----
>>
>> This problem is not trivial because new language are permitted to create
>> and use *any* header arguments they like, so there are no /wrong/ header
>> arguments, there are only /suspicious/ header arguments (like the
>> :exports option you suggest).  The above function reports any suspicious
>> header arguments.  Perhaps there would be a way to integrate the above
>> function with flyspell for automatic highlighting of suspicious header
>> arguments.  I'll put looking into such integration on my long-term Org
>> task queue.
>>
>>>
>>> More important it gets though, when trying to use the literate
>>> programming facilities.
>>>
>>> Say I have a source code
>>>
>>> #+begin_src sh :noweb tangle :tangle foo.sh
>>>   <<foo>>
>>> #+end_src
>>> #+begin_src sh :noweb-ref fo
>>>   echo '... how are you?';
>>> #+end_src
>>>
>>> then tangling would run through without any indication of the typo in
>>> the name of the "foo" block. Such errors might be hard to debug,
>>> because there is no indication of the error, maybe nothing other than
>>> runtime errors.
>>>
>>> An error message for the /use/ of undefined references only wouldn't
>>> avoid such problems either, e.g. consider
>>>
>>> #+begin_src sh :noweb tangle :tangle foo.sh
>>>   <<foo>>
>>> #+end_src
>>> #+begin_src sh :noweb-ref foo
>>>   echo 'Hello World...';
>>> #+end_src
>>> #+begin_src sh :noweb-ref fo
>>>   echo 'Hello World...';
>>> #+end_src
>>>
>>> where the only detectable error is, that "fo" was never used anywhere.
>>>
>>> A similiar question (though without the second part) was asked here:
>>> http://lists.gnu.org/archive/html/emacs-orgmode/2009-11/msg00273.html
>>> As far as I can tell, it stands unanswered.
>>>
>>
>> Yes, although in many languages constructs like <<foo>> are valid code,
>> so it would be inappropriate for tangling to raise errors by default.
>> It is possible to turn on such errors on a language-by-language basis,
>> by customizing the following variable.
>>
>> ,----[org-babel-noweb-error-langs]
>> | org-babel-noweb-error-langs is a variable defined in `ob.el'.
>> | Its value is nil
>> |
>> | Documentation:
>> | Languages for which Babel will raise literate programming errors.
>> | List of languages for which errors should be raised when the
>> | source code block satisfying a noweb reference in this language
>> | can not be resolved.
>> `----
>>
>>>
>>> On a side note: What is the customary way to mention the
>>> noweb-relevant name of a source block in the html/pdf export? After
>>> all, if a code-block states
>>>     : <<task1>>
>>>     : <<task2>>
>>> the reader needs to know, which code blocks define these.
>>>
>>
>> Currently there is no automated support for this, so you should simply
>> name code blocks manually, however this topic has been raised recently
>> in another thread and there does seem to be interest for automated
>> support.
>>
>> Best,
>>
>>>
>>>
>>> kind regards, Yu
>>>
>>
>> --
>> Eric Schulte
>> http://cs.unm.edu/~eschulte/
>

-- 
Eric Schulte
http://cs.unm.edu/~eschulte/

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

* Re: Syntax error warnings? (Especially important with :noweb-ref's)
  2012-01-22 21:25   ` Sebastien Vauban
@ 2012-01-23 18:07     ` Eric Schulte
  0 siblings, 0 replies; 8+ messages in thread
From: Eric Schulte @ 2012-01-23 18:07 UTC (permalink / raw)
  To: Sebastien Vauban; +Cc: emacs-orgmode

Fixed. Thanks,

"Sebastien Vauban" <wxhgmqzgwmuf@spammotel.com> writes:

> Hi Eric,
>
> Eric Schulte wrote:
>> there are two related functions which should help.
>>
>> ,----[org-babel-view-src-block-info] bound to C-c C-v I
>> | org-babel-view-src-block-info is an interactive Lisp function in
>> | `ob.el'.
>> | 
>> | (org-babel-view-src-block-info)
>> | 
>> | Display information on the current source block.
>> | This includes header arguments, language and name, and is largely
>> | a window into the `org-babel-get-src-block-info' function.
>> `----
>>
>> and
>>
>> ,----[org-babel-check-src-block] bound to C-c C-v c
>> | org-babel-check-src-block is an interactive Lisp function in `ob.el'.
>> | 
>> | (org-babel-check-src-block)
>> | 
>> | Check for misspelled header arguments in the current code block.
>> `----
>
> When checking for suspicious header arguments on[1]:
>
> #+name: mean
> #+begin_src emacs-lisp :var lst=()
>   (let ((num (car lst)) (nums (cdr lst)))
>     (/ (float (+ num (apply #'+ nums))) (1+ (length nums))))
> #+end_src
>
> it reports:
>
>     supplied header ""var"" is suspiciously close to ""dir""
>
> Can you enlighten me on what's suspicious here?
>
> Best regards,
>   Seb
>
> Footnotes:
>
> [1] which is supposed to be used in the following table:
>
> |   1 |
> |   2 |
> |   3 |
> |   4 |
> |   5 |
> |   6 |
> | 3.5 |
> #+TBLFM: @7$1='(sbe mean (lst @1..@6))

-- 
Eric Schulte
http://cs.unm.edu/~eschulte/

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

* Re: Syntax error warnings? (Especially important with :noweb-ref's)
       [not found]             ` <87sjixyx7m.fsf@gmx.com>
@ 2012-01-30 17:59               ` Yu
  2012-01-31  1:10                 ` Eric Schulte
  0 siblings, 1 reply; 8+ messages in thread
From: Yu @ 2012-01-30 17:59 UTC (permalink / raw)
  To: Eric Schulte, org-mode mailing list

Hello!

Thanks for the reply. The problem was, that I assumed the list
`org-babel-noweb-error-langs' to require the same form as
`org-babel-load-languages', i.e. something like
  :   ( (latex . t) (python . t) (sh . t) )

I didn't expect it to require a plain list of strings.

Now, that this misunderstanding is cleared though, the next problem
becomes visible: The common workflow I excepted is:
 1. Define an overall structure of the task.
 2. Run org-babel-tangle
 3. If there are no errors: Finished.
    Else:
      - Choose the next block to implement from the list of unresolved blocks.
      - Rerun from "1."

In the current implementation, the first unresolved code block stops
at the `error' statement.

Idea
------------

Instead of throwing an error, just a warning should be given. A simple
implementation could be replacing, in ob.el,
`org-babel-expand-noweb-references',

			(error "%s" (concat
				    (org-babel-noweb-wrap source-name)
				    "could not be resolved (see "
				    "`org-babel-noweb-error-langs')"))

by

		      (progn
			(lwarn 'tangle :warning "%s"
			       (concat (org-babel-noweb-wrap source-name)
				       " could not be resolved (see "
				       "`org-babel-noweb-error-langs')"))
			"")

(the (progn-wrapping) is needed to ensure the enclosing if statement
returns a string as expected by `split-string').

The solution has the weakness though, that the warning buffer doesn't
show up automatically (due to the save-excursion I assume, so probably
the warnings should be thrown in one go /after/ the save excursion and
be collected into a list until then. (Multiple advantages:
`add-to-list' can take care of multipli occuring warnings and a single
warning is more clear by far then several warnings).

king regards, Yu


2012/1/30 Eric Schulte <eric.schulte@gmx.com>:
> Yu <yu_icq@gmx.at> writes:
>
>> I tried my test file just again with a fresh pull from git:
>>
>> :  `cat << file1 >> file2'
>> now expands as expected, but otherwise I don't see a change. Because I
>> thought, well, maybe it's language specific, I made a new example.
>>
>> == test.org ==================================
>> #+begin_src emacs-lisp :tangle test.out :noweb tangle
>>   (progn
>>     <<task1>>
>>     <<task2>>
>>     (setq << 1 >> 2)
>>     (setq <<symbol>> 1)
>>   )
>> #+end_src
>> #+begin_src emacs-lisp :noweb-ref task1 :noweb tangle
>>   (princ "Hallo Welt!\n")
>> #+end_src
>> ============================================
>>
>> exports to
>> == test.out ==================================
>>
>> (progn
>>   (princ "Hallo Welt!\n")
>>
>>   (setq << 1 >> 2)
>>   (setq  1)
>> )
>> ==========================================
>>
>> still without any error message.
>>
>
> When I add emacs-lisp to the `org-babel-noweb-error-langs' variable then
> errors are raised for both <<task2>> and <<symbol>>.
>
> #+BEGIN_SRC emacs-lisp
>  (add-to-list 'org-babel-noweb-error-langs "emacs-lisp")
> #+END_SRC
>
>>
>> As for the (here pretty artificial) case of "<<symbol>>", I suppose
>> avoiding that problem would require being able to suppress the special
>> meaning of the construct, which would render the source less readable,
>> so I guess one will just want to avoid this clash (e.g. inserting the
>> spaces in shell scripts before/after the filename in a "cmd << EOF >>
>> target" construct, so here your solution is certainly sufficient for
>> all but very exotic cases :-)
>>
>
> Also, see the recent emails on list in which the ability to set custom
> alternatives for << and >> we added.  The example used in the email was
> the utf8 symbols « and » which should not occur in code.
>
> Best,
>
>>
>> ---- Suggestion ----
>> For cases, where a corresponding code block is not found: It would
>> probably help in debugging and prevent compilers/interpreters from
>> ignoring the missing code, if instead of an empty string, the
>> "<<foo>>" construct itself was inserted, i.e. effectively not expanded
>> at all. E.g. my sample code would result in the lisp interpreter
>> trying to get the value for an undefined variable "<<task2>>", which
>> would be a quite obvious cause of failure.
>>
>> kind regards, Yu
>>
>>
>> 2012/1/24 Eric Schulte <eric.schulte@gmx.com>:
>>> Yu <yu_icq@gmx.at> writes:
>>>
>>>> Actually, I set `org-babel-noweb-error-langs' to be the same as
>>>> `org-babel-load-languages' (forgot to mention that). Specifically it
>>>> contains
>>>> By the way, I retested it again today with the latest version from
>>>> git. Still the same result.
>>>>
>>>
>>> OK, Thanks for your persistence on this.  I've just pushed up a fix for
>>> two issues.
>>>
>>> 1. noweb reference names (e.g., that which is between the <<>>s) must
>>>   both start and end with non-whitespace characters
>>>
>>> 2. some of my recent changes broke the error reporting behavior
>>>   associated with `org-babel-noweb-error-langs', I've fixed this
>>>   behavior.
>>>
>>> Please do let me know if you continue to experience any problems.
>>>
>>> Best,
>>>
>>>>
>>>> 2012/1/23 Eric Schulte <eric.schulte@gmx.com>:
>>>>> Have you tried using the `org-babel-noweb-error-langs' variable that I
>>>>> mentioned previously?  It should help in these situations.
>>>>>
>>>>> Yu <yu_icq@gmx.at> writes:
>>>>>
>>>>>> Hello again!
>>>>>>
>>>>>> I thought about the *noweb* part again. I tried the following:
>>>>>>
>>>>>> ======================================
>>>>>> #+begin_src sh :tangle test.out :noweb tangle
>>>>>>   <<task1>>
>>>>>>   cat << test.org >> test.out2
>>>>>> #+end_src
>>>>>> #+begin_src sh :noweb-ref task1
>>>>>>   echo "hello world"
>>>>>> #+end_src
>>>>>> ======================================
>>>>>>
>>>>>> The tangled output file "test.out" looked like this:
>>>>>> ======================================
>>>>>> /bin/sh
>>>>>>
>>>>>> echo "hello world"
>>>>>> cat  test.out2
>>>>>> ======================================
>>>>>>
>>>>>> i.e. the syntactically valid "<< test.org >>" construct was omitted.
>>>>>> Thus a separate syntax for forcing a literal "<<" in the tangled
>>>>>> output is needed anyway (if not yet implemented) and if so, warning
>>>>>> about undefined code blocks should be possible too.
>>>>>>
>>>>>> The big relevance of warning about undefined and never used code
>>>>>> blocks struck me, when recently I tried to use it again. The natural
>>>>>> work flow to me would have been to write something like
>>>>>>
>>>>>>  : The task at hand has an overall structure
>>>>>>  : #+begin_src python :tangle foo.py :noweb tangle
>>>>>>  :   <<read the data>>
>>>>>>  :   <<generate derived information>>
>>>>>>  :   <<output the results>>
>>>>>>  : #+end_src
>>>>>>
>>>>>> When proceeding after this however I would have to keep in mind open
>>>>>> tasks or (slightly better) to instantly create TODO sections for said
>>>>>> blocks. However, having this order of working imposed on me sort of
>>>>>> defeats the purpose for my understanding. I'd rather prefer to do an
>>>>>> `M-x org-babel-tangle' tell me, that I forgot to implement one of the
>>>>>> partial tasks, rather than having to find out missing code blocks from
>>>>>> the output file (where, as mentioned, they result in "nothing" rather
>>>>>> than an unresolved "<<...>>" construct).
>>>>>>
>>>>>> kind regards, Yu
>>>>>>
>>>>>>
>>>>>>
>>>>>> 2012/1/14 Eric Schulte <eric.schulte@gmx.com>:
>>>>>>> Yu <yu_icq@gmx.at> writes:
>>>>>>>
>>>>>>>> Hello!
>>>>>>>>
>>>>>>>> I was wondering, if there is a way to get warnings for typos (e.g.
>>>>>>>> when specifying invalid properties or header arguments). It can just
>>>>>>>> easily happen that I mix up e.g. ":exports" and ":export" (though
>>>>>>>> that's probably a very harmless example).
>>>>>>>>
>>>>>>>
>>>>>>> While there is currently no way to do this there are two related
>>>>>>> functions which should help.
>>>>>>>
>>>>>>> ,----[org-babel-view-src-block-info] bound to C-c C-v I
>>>>>>> | org-babel-view-src-block-info is an interactive Lisp function in
>>>>>>> | `ob.el'.
>>>>>>> |
>>>>>>> | (org-babel-view-src-block-info)
>>>>>>> |
>>>>>>> | Display information on the current source block.
>>>>>>> | This includes header arguments, language and name, and is largely
>>>>>>> | a window into the `org-babel-get-src-block-info' function.
>>>>>>> `----
>>>>>>>
>>>>>>> and
>>>>>>>
>>>>>>> ,----[org-babel-check-src-block] bound to C-c C-v c
>>>>>>> | org-babel-check-src-block is an interactive Lisp function in `ob.el'.
>>>>>>> |
>>>>>>> | (org-babel-check-src-block)
>>>>>>> |
>>>>>>> | Check for misspelled header arguments in the current code block.
>>>>>>> `----
>>>>>>>
>>>>>>> This problem is not trivial because new language are permitted to create
>>>>>>> and use *any* header arguments they like, so there are no /wrong/ header
>>>>>>> arguments, there are only /suspicious/ header arguments (like the
>>>>>>> :exports option you suggest).  The above function reports any suspicious
>>>>>>> header arguments.  Perhaps there would be a way to integrate the above
>>>>>>> function with flyspell for automatic highlighting of suspicious header
>>>>>>> arguments.  I'll put looking into such integration on my long-term Org
>>>>>>> task queue.
>>>>>>>
>>>>>>>>
>>>>>>>> More important it gets though, when trying to use the literate
>>>>>>>> programming facilities.
>>>>>>>>
>>>>>>>> Say I have a source code
>>>>>>>>
>>>>>>>> #+begin_src sh :noweb tangle :tangle foo.sh
>>>>>>>>   <<foo>>
>>>>>>>> #+end_src
>>>>>>>> #+begin_src sh :noweb-ref fo
>>>>>>>>   echo '... how are you?';
>>>>>>>> #+end_src
>>>>>>>>
>>>>>>>> then tangling would run through without any indication of the typo in
>>>>>>>> the name of the "foo" block. Such errors might be hard to debug,
>>>>>>>> because there is no indication of the error, maybe nothing other than
>>>>>>>> runtime errors.
>>>>>>>>
>>>>>>>> An error message for the /use/ of undefined references only wouldn't
>>>>>>>> avoid such problems either, e.g. consider
>>>>>>>>
>>>>>>>> #+begin_src sh :noweb tangle :tangle foo.sh
>>>>>>>>   <<foo>>
>>>>>>>> #+end_src
>>>>>>>> #+begin_src sh :noweb-ref foo
>>>>>>>>   echo 'Hello World...';
>>>>>>>> #+end_src
>>>>>>>> #+begin_src sh :noweb-ref fo
>>>>>>>>   echo 'Hello World...';
>>>>>>>> #+end_src
>>>>>>>>
>>>>>>>> where the only detectable error is, that "fo" was never used anywhere.
>>>>>>>>
>>>>>>>> A similiar question (though without the second part) was asked here:
>>>>>>>> http://lists.gnu.org/archive/html/emacs-orgmode/2009-11/msg00273.html
>>>>>>>> As far as I can tell, it stands unanswered.
>>>>>>>>
>>>>>>>
>>>>>>> Yes, although in many languages constructs like <<foo>> are valid code,
>>>>>>> so it would be inappropriate for tangling to raise errors by default.
>>>>>>> It is possible to turn on such errors on a language-by-language basis,
>>>>>>> by customizing the following variable.
>>>>>>>
>>>>>>> ,----[org-babel-noweb-error-langs]
>>>>>>> | org-babel-noweb-error-langs is a variable defined in `ob.el'.
>>>>>>> | Its value is nil
>>>>>>> |
>>>>>>> | Documentation:
>>>>>>> | Languages for which Babel will raise literate programming errors.
>>>>>>> | List of languages for which errors should be raised when the
>>>>>>> | source code block satisfying a noweb reference in this language
>>>>>>> | can not be resolved.
>>>>>>> `----
>>>>>>>
>>>>>>>>
>>>>>>>> On a side note: What is the customary way to mention the
>>>>>>>> noweb-relevant name of a source block in the html/pdf export? After
>>>>>>>> all, if a code-block states
>>>>>>>>     : <<task1>>
>>>>>>>>     : <<task2>>
>>>>>>>> the reader needs to know, which code blocks define these.
>>>>>>>>
>>>>>>>
>>>>>>> Currently there is no automated support for this, so you should simply
>>>>>>> name code blocks manually, however this topic has been raised recently
>>>>>>> in another thread and there does seem to be interest for automated
>>>>>>> support.
>>>>>>>
>>>>>>> Best,
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> kind regards, Yu
>>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Eric Schulte
>>>>>>> http://cs.unm.edu/~eschulte/
>>>>>>
>>>>>
>>>>> --
>>>>> Eric Schulte
>>>>> http://cs.unm.edu/~eschulte/
>>>
>>> --
>>> Eric Schulte
>>> http://cs.unm.edu/~eschulte/
>
> --
> Eric Schulte
> http://cs.unm.edu/~eschulte/

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

* Re: Syntax error warnings? (Especially important with :noweb-ref's)
  2012-01-30 17:59               ` Yu
@ 2012-01-31  1:10                 ` Eric Schulte
  0 siblings, 0 replies; 8+ messages in thread
From: Eric Schulte @ 2012-01-31  1:10 UTC (permalink / raw)
  To: Yu; +Cc: org-mode mailing list

Yu <yu_icq@gmx.at> writes:

> Hello!
>
> Thanks for the reply. The problem was, that I assumed the list
> `org-babel-noweb-error-langs' to require the same form as
> `org-babel-load-languages', i.e. something like
>   :   ( (latex . t) (python . t) (sh . t) )
>
> I didn't expect it to require a plain list of strings.
>
> Now, that this misunderstanding is cleared though, the next problem
> becomes visible: The common workflow I excepted is:
>  1. Define an overall structure of the task.
>  2. Run org-babel-tangle
>  3. If there are no errors: Finished.
>     Else:
>       - Choose the next block to implement from the list of unresolved blocks.
>       - Rerun from "1."
>
> In the current implementation, the first unresolved code block stops
> at the `error' statement.
>

I would suggest that you stubb out empty code blocks for those blocks
which you want to reference elsewhere but have not yet implemented.
Such blocks could all hold the same indicator string (something like
TODO or FIXME) so that the presence of unimplemented blocks is easy to
find in tangled code.

As you mention below there are complications with a multi-tiered warning
and error system which I believe would make the noweb error system more
confusing and harder to use.

>
> Idea
> ------------
>
> Instead of throwing an error, just a warning should be given. A simple
> implementation could be replacing, in ob.el,
> `org-babel-expand-noweb-references',
>
> 			(error "%s" (concat
> 				    (org-babel-noweb-wrap source-name)
> 				    "could not be resolved (see "
> 				    "`org-babel-noweb-error-langs')"))
>
> by
>
> 		      (progn
> 			(lwarn 'tangle :warning "%s"
> 			       (concat (org-babel-noweb-wrap source-name)
> 				       " could not be resolved (see "
> 				       "`org-babel-noweb-error-langs')"))
> 			"")
>
> (the (progn-wrapping) is needed to ensure the enclosing if statement
> returns a string as expected by `split-string').
>
> The solution has the weakness though, that the warning buffer doesn't
> show up automatically (due to the save-excursion I assume, so probably
> the warnings should be thrown in one go /after/ the save excursion and
> be collected into a list until then. (Multiple advantages:
> `add-to-list' can take care of multipli occuring warnings and a single
> warning is more clear by far then several warnings).
>
> king regards, Yu
>
>
> 2012/1/30 Eric Schulte <eric.schulte@gmx.com>:
>> Yu <yu_icq@gmx.at> writes:
>>
>>> I tried my test file just again with a fresh pull from git:
>>>
>>> :  `cat << file1 >> file2'
>>> now expands as expected, but otherwise I don't see a change. Because I
>>> thought, well, maybe it's language specific, I made a new example.
>>>
>>> == test.org ==================================
>>> #+begin_src emacs-lisp :tangle test.out :noweb tangle
>>>   (progn
>>>     <<task1>>
>>>     <<task2>>
>>>     (setq << 1 >> 2)
>>>     (setq <<symbol>> 1)
>>>   )
>>> #+end_src
>>> #+begin_src emacs-lisp :noweb-ref task1 :noweb tangle
>>>   (princ "Hallo Welt!\n")
>>> #+end_src
>>> ============================================
>>>
>>> exports to
>>> == test.out ==================================
>>>
>>> (progn
>>>   (princ "Hallo Welt!\n")
>>>
>>>   (setq << 1 >> 2)
>>>   (setq  1)
>>> )
>>> ==========================================
>>>
>>> still without any error message.
>>>
>>
>> When I add emacs-lisp to the `org-babel-noweb-error-langs' variable then
>> errors are raised for both <<task2>> and <<symbol>>.
>>
>> #+BEGIN_SRC emacs-lisp
>>  (add-to-list 'org-babel-noweb-error-langs "emacs-lisp")
>> #+END_SRC
>>
>>>
>>> As for the (here pretty artificial) case of "<<symbol>>", I suppose
>>> avoiding that problem would require being able to suppress the special
>>> meaning of the construct, which would render the source less readable,
>>> so I guess one will just want to avoid this clash (e.g. inserting the
>>> spaces in shell scripts before/after the filename in a "cmd << EOF >>
>>> target" construct, so here your solution is certainly sufficient for
>>> all but very exotic cases :-)
>>>
>>
>> Also, see the recent emails on list in which the ability to set custom
>> alternatives for << and >> we added.  The example used in the email was
>> the utf8 symbols « and » which should not occur in code.
>>
>> Best,
>>
>>>
>>> ---- Suggestion ----
>>> For cases, where a corresponding code block is not found: It would
>>> probably help in debugging and prevent compilers/interpreters from
>>> ignoring the missing code, if instead of an empty string, the
>>> "<<foo>>" construct itself was inserted, i.e. effectively not expanded
>>> at all. E.g. my sample code would result in the lisp interpreter
>>> trying to get the value for an undefined variable "<<task2>>", which
>>> would be a quite obvious cause of failure.
>>>
>>> kind regards, Yu
>>>
>>>
>>> 2012/1/24 Eric Schulte <eric.schulte@gmx.com>:
>>>> Yu <yu_icq@gmx.at> writes:
>>>>
>>>>> Actually, I set `org-babel-noweb-error-langs' to be the same as
>>>>> `org-babel-load-languages' (forgot to mention that). Specifically it
>>>>> contains
>>>>> By the way, I retested it again today with the latest version from
>>>>> git. Still the same result.
>>>>>
>>>>
>>>> OK, Thanks for your persistence on this.  I've just pushed up a fix for
>>>> two issues.
>>>>
>>>> 1. noweb reference names (e.g., that which is between the <<>>s) must
>>>>   both start and end with non-whitespace characters
>>>>
>>>> 2. some of my recent changes broke the error reporting behavior
>>>>   associated with `org-babel-noweb-error-langs', I've fixed this
>>>>   behavior.
>>>>
>>>> Please do let me know if you continue to experience any problems.
>>>>
>>>> Best,
>>>>
>>>>>
>>>>> 2012/1/23 Eric Schulte <eric.schulte@gmx.com>:
>>>>>> Have you tried using the `org-babel-noweb-error-langs' variable that I
>>>>>> mentioned previously?  It should help in these situations.
>>>>>>
>>>>>> Yu <yu_icq@gmx.at> writes:
>>>>>>
>>>>>>> Hello again!
>>>>>>>
>>>>>>> I thought about the *noweb* part again. I tried the following:
>>>>>>>
>>>>>>> ======================================
>>>>>>> #+begin_src sh :tangle test.out :noweb tangle
>>>>>>>   <<task1>>
>>>>>>>   cat << test.org >> test.out2
>>>>>>> #+end_src
>>>>>>> #+begin_src sh :noweb-ref task1
>>>>>>>   echo "hello world"
>>>>>>> #+end_src
>>>>>>> ======================================
>>>>>>>
>>>>>>> The tangled output file "test.out" looked like this:
>>>>>>> ======================================
>>>>>>> /bin/sh
>>>>>>>
>>>>>>> echo "hello world"
>>>>>>> cat  test.out2
>>>>>>> ======================================
>>>>>>>
>>>>>>> i.e. the syntactically valid "<< test.org >>" construct was omitted.
>>>>>>> Thus a separate syntax for forcing a literal "<<" in the tangled
>>>>>>> output is needed anyway (if not yet implemented) and if so, warning
>>>>>>> about undefined code blocks should be possible too.
>>>>>>>
>>>>>>> The big relevance of warning about undefined and never used code
>>>>>>> blocks struck me, when recently I tried to use it again. The natural
>>>>>>> work flow to me would have been to write something like
>>>>>>>
>>>>>>>  : The task at hand has an overall structure
>>>>>>>  : #+begin_src python :tangle foo.py :noweb tangle
>>>>>>>  :   <<read the data>>
>>>>>>>  :   <<generate derived information>>
>>>>>>>  :   <<output the results>>
>>>>>>>  : #+end_src
>>>>>>>
>>>>>>> When proceeding after this however I would have to keep in mind open
>>>>>>> tasks or (slightly better) to instantly create TODO sections for said
>>>>>>> blocks. However, having this order of working imposed on me sort of
>>>>>>> defeats the purpose for my understanding. I'd rather prefer to do an
>>>>>>> `M-x org-babel-tangle' tell me, that I forgot to implement one of the
>>>>>>> partial tasks, rather than having to find out missing code blocks from
>>>>>>> the output file (where, as mentioned, they result in "nothing" rather
>>>>>>> than an unresolved "<<...>>" construct).
>>>>>>>
>>>>>>> kind regards, Yu
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> 2012/1/14 Eric Schulte <eric.schulte@gmx.com>:
>>>>>>>> Yu <yu_icq@gmx.at> writes:
>>>>>>>>
>>>>>>>>> Hello!
>>>>>>>>>
>>>>>>>>> I was wondering, if there is a way to get warnings for typos (e.g.
>>>>>>>>> when specifying invalid properties or header arguments). It can just
>>>>>>>>> easily happen that I mix up e.g. ":exports" and ":export" (though
>>>>>>>>> that's probably a very harmless example).
>>>>>>>>>
>>>>>>>>
>>>>>>>> While there is currently no way to do this there are two related
>>>>>>>> functions which should help.
>>>>>>>>
>>>>>>>> ,----[org-babel-view-src-block-info] bound to C-c C-v I
>>>>>>>> | org-babel-view-src-block-info is an interactive Lisp function in
>>>>>>>> | `ob.el'.
>>>>>>>> |
>>>>>>>> | (org-babel-view-src-block-info)
>>>>>>>> |
>>>>>>>> | Display information on the current source block.
>>>>>>>> | This includes header arguments, language and name, and is largely
>>>>>>>> | a window into the `org-babel-get-src-block-info' function.
>>>>>>>> `----
>>>>>>>>
>>>>>>>> and
>>>>>>>>
>>>>>>>> ,----[org-babel-check-src-block] bound to C-c C-v c
>>>>>>>> | org-babel-check-src-block is an interactive Lisp function in `ob.el'.
>>>>>>>> |
>>>>>>>> | (org-babel-check-src-block)
>>>>>>>> |
>>>>>>>> | Check for misspelled header arguments in the current code block.
>>>>>>>> `----
>>>>>>>>
>>>>>>>> This problem is not trivial because new language are permitted to create
>>>>>>>> and use *any* header arguments they like, so there are no /wrong/ header
>>>>>>>> arguments, there are only /suspicious/ header arguments (like the
>>>>>>>> :exports option you suggest).  The above function reports any suspicious
>>>>>>>> header arguments.  Perhaps there would be a way to integrate the above
>>>>>>>> function with flyspell for automatic highlighting of suspicious header
>>>>>>>> arguments.  I'll put looking into such integration on my long-term Org
>>>>>>>> task queue.
>>>>>>>>
>>>>>>>>>
>>>>>>>>> More important it gets though, when trying to use the literate
>>>>>>>>> programming facilities.
>>>>>>>>>
>>>>>>>>> Say I have a source code
>>>>>>>>>
>>>>>>>>> #+begin_src sh :noweb tangle :tangle foo.sh
>>>>>>>>>   <<foo>>
>>>>>>>>> #+end_src
>>>>>>>>> #+begin_src sh :noweb-ref fo
>>>>>>>>>   echo '... how are you?';
>>>>>>>>> #+end_src
>>>>>>>>>
>>>>>>>>> then tangling would run through without any indication of the typo in
>>>>>>>>> the name of the "foo" block. Such errors might be hard to debug,
>>>>>>>>> because there is no indication of the error, maybe nothing other than
>>>>>>>>> runtime errors.
>>>>>>>>>
>>>>>>>>> An error message for the /use/ of undefined references only wouldn't
>>>>>>>>> avoid such problems either, e.g. consider
>>>>>>>>>
>>>>>>>>> #+begin_src sh :noweb tangle :tangle foo.sh
>>>>>>>>>   <<foo>>
>>>>>>>>> #+end_src
>>>>>>>>> #+begin_src sh :noweb-ref foo
>>>>>>>>>   echo 'Hello World...';
>>>>>>>>> #+end_src
>>>>>>>>> #+begin_src sh :noweb-ref fo
>>>>>>>>>   echo 'Hello World...';
>>>>>>>>> #+end_src
>>>>>>>>>
>>>>>>>>> where the only detectable error is, that "fo" was never used anywhere.
>>>>>>>>>
>>>>>>>>> A similiar question (though without the second part) was asked here:
>>>>>>>>> http://lists.gnu.org/archive/html/emacs-orgmode/2009-11/msg00273.html
>>>>>>>>> As far as I can tell, it stands unanswered.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Yes, although in many languages constructs like <<foo>> are valid code,
>>>>>>>> so it would be inappropriate for tangling to raise errors by default.
>>>>>>>> It is possible to turn on such errors on a language-by-language basis,
>>>>>>>> by customizing the following variable.
>>>>>>>>
>>>>>>>> ,----[org-babel-noweb-error-langs]
>>>>>>>> | org-babel-noweb-error-langs is a variable defined in `ob.el'.
>>>>>>>> | Its value is nil
>>>>>>>> |
>>>>>>>> | Documentation:
>>>>>>>> | Languages for which Babel will raise literate programming errors.
>>>>>>>> | List of languages for which errors should be raised when the
>>>>>>>> | source code block satisfying a noweb reference in this language
>>>>>>>> | can not be resolved.
>>>>>>>> `----
>>>>>>>>
>>>>>>>>>
>>>>>>>>> On a side note: What is the customary way to mention the
>>>>>>>>> noweb-relevant name of a source block in the html/pdf export? After
>>>>>>>>> all, if a code-block states
>>>>>>>>>     : <<task1>>
>>>>>>>>>     : <<task2>>
>>>>>>>>> the reader needs to know, which code blocks define these.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Currently there is no automated support for this, so you should simply
>>>>>>>> name code blocks manually, however this topic has been raised recently
>>>>>>>> in another thread and there does seem to be interest for automated
>>>>>>>> support.
>>>>>>>>
>>>>>>>> Best,
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> kind regards, Yu
>>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Eric Schulte
>>>>>>>> http://cs.unm.edu/~eschulte/
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> Eric Schulte
>>>>>> http://cs.unm.edu/~eschulte/
>>>>
>>>> --
>>>> Eric Schulte
>>>> http://cs.unm.edu/~eschulte/
>>
>> --
>> Eric Schulte
>> http://cs.unm.edu/~eschulte/
>

-- 
Eric Schulte
http://cs.unm.edu/~eschulte/

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

end of thread, other threads:[~2012-01-31  1:11 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-01-12 21:38 Syntax error warnings? (Especially important with :noweb-ref's) Yu
2012-01-14 17:49 ` Eric Schulte
2012-01-21 15:21   ` Yu
2012-01-23 18:04     ` Eric Schulte
     [not found]       ` <CANtbJLEo-Bb3erMVRivdQYa=au81ExDJdSYRbQzXqx9F5V=VVw@mail.gmail.com>
     [not found]         ` <87ehuphy7a.fsf@gmx.com>
     [not found]           ` <CANtbJLH65=-mhZO0U0Snys=4xEDxL1mFm4JR+Gy7RDHFBTGsgw@mail.gmail.com>
     [not found]             ` <87sjixyx7m.fsf@gmx.com>
2012-01-30 17:59               ` Yu
2012-01-31  1:10                 ` Eric Schulte
2012-01-22 21:25   ` Sebastien Vauban
2012-01-23 18:07     ` 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).