Re: [O] [RFC] Org linting library

2015-06-16 Thread Nicolas Goaziou
Rainer M Krug rai...@krugs.de writes:

 something along the line of Link to non-existent local file ... in
 the description part would make clear that it is ion the description of
 a link.

Done. Thanks.

Regards,




Re: [O] [RFC] Org linting library

2015-06-09 Thread Rainer M Krug
Nicolas Goaziou m...@nicolasgoaziou.fr writes:

 Rainer M Krug rai...@krugs.de writes:

 OK - now I get it. The syntax implies that I want to display the image
 located there as the descriptor.

 Correct.

 Would it be possible for org-lint to give a more direct warning that this
 link is in the description and not the link itself?

 Could you suggest an appropriate warning?

something along the line of Link to non-existent local file ... in
the description part would make clear that it is ion the description of
a link.

And if the non-existent link is in the link part, the other could be
Link to non-existent local file ... in the link part

Cheers,

Rainer


 Thank you.


 Regards,

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :   +33 - (0)9 53 10 27 44
Cell:   +33 - (0)6 85 62 59 98
Fax :   +33 - (0)9 58 10 27 44

Fax (D):+49 - (0)3 21 21 25 22 44

email:  rai...@krugs.de

Skype:  RMkrug

PGP: 0x0F52F982


signature.asc
Description: PGP signature


Re: [O] [RFC] Org linting library

2015-06-09 Thread Nicolas Goaziou
Rainer M Krug rai...@krugs.de writes:

 OK - now I get it. The syntax implies that I want to display the image
 located there as the descriptor.

Correct.

 Would it be possible for org-lint to give a more direct warning that this
 link is in the description and not the link itself?

Could you suggest an appropriate warning?

Thank you.


Regards,



Re: [O] [RFC] Org linting library

2015-06-08 Thread Rainer M Krug
Nicolas Goaziou m...@nicolasgoaziou.fr writes:

 Rainer M Krug rai...@krugs.de writes:

 Here, Org Lint is correct. Link's description is really a link to
 a file, ./__BOX__/Aerodynamic, followed by a space, and
 resistances.docx text.

 But it is in the description part - shouldn't this be considered normal
 text whatever it is?

 I wish it would. Unfortunately, Org has no proper image syntax, so we
 have to support plain links (i.e, no brackets) in descriptions to get
 image links.

OK - now I get it. The syntax implies that I want to display the image
located there as the descriptor.

Would it be possible for org-lint to give a more direct warning that this
link is in the description and not the link itself?

Thanks for your patience - I am learning a lot about org by using org-lint!

Rainer



 Regards,

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :   +33 - (0)9 53 10 27 44
Cell:   +33 - (0)6 85 62 59 98
Fax :   +33 - (0)9 58 10 27 44

Fax (D):+49 - (0)3 21 21 25 22 44

email:  rai...@krugs.de

Skype:  RMkrug

PGP: 0x0F52F982


signature.asc
Description: PGP signature


Re: [O] [RFC] Org linting library

2015-06-06 Thread Rainer M Krug
Nicolas Goaziou m...@nicolasgoaziou.fr writes:

 Rainer M Krug rai...@krugs.de writes:

 The link

 ,
 | [[file:__BOX__/Aerodynamic%20resistances.docx][file:./__BOX__/Aerodynamic 
 resistances.docx]]
 `

 causes the following warnings:

 ,
 |   9094 low   Link to non-existent local file 
 __BOX__/Aerodynamic%20resistances.docx

 Fixed. Thank you.

Thanks.


 |   9094 low   Link to non-existent local file ./__BOX__/Aerodynamic
 `

 although the file exists and the link works in org.

 Here, Org Lint is correct. Link's description is really a link to
 a file, ./__BOX__/Aerodynamic, followed by a space, and
 resistances.docx text.

But it is in the description part - shouldn't this be considered normal
text whatever it is?

Rainer



 Regards,

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :   +33 - (0)9 53 10 27 44
Cell:   +33 - (0)6 85 62 59 98
Fax :   +33 - (0)9 58 10 27 44

Fax (D):+49 - (0)3 21 21 25 22 44

email:  rai...@krugs.de

Skype:  RMkrug

PGP: 0x0F52F982


signature.asc
Description: PGP signature


Re: [O] [RFC] Org linting library

2015-06-06 Thread Nicolas Goaziou
Rainer M Krug rai...@krugs.de writes:

 Here, Org Lint is correct. Link's description is really a link to
 a file, ./__BOX__/Aerodynamic, followed by a space, and
 resistances.docx text.

 But it is in the description part - shouldn't this be considered normal
 text whatever it is?

I wish it would. Unfortunately, Org has no proper image syntax, so we
have to support plain links (i.e, no brackets) in descriptions to get
image links.


Regards,



Re: [O] [RFC] Org linting library

2015-06-05 Thread Rainer M Krug
One more observation:

The link

,
| [[file:__BOX__/Aerodynamic%20resistances.docx][file:./__BOX__/Aerodynamic 
resistances.docx]]
`

causes the following warnings:

,
|   9094 low   Link to non-existent local file 
__BOX__/Aerodynamic%20resistances.docx
|   9094 low   Link to non-existent local file ./__BOX__/Aerodynamic
`

although the file exists and the link works in org.

Cheers,

Rainer


Nicolas Goaziou m...@nicolasgoaziou.fr writes:

 Hello,

 The following library implements linting for Org syntax. The sole public
 function is `org-lint', which see.

 Internally, the library defines a new structure: `org-lint-checker',
 with the following slots:

   - NAME: Unique check identifier, as a symbol. The check is done
 calling the function `org-lint-NAME' with one mandatory argument,
 the parse tree describing the current Org buffer. Such function
 calls are wrapped within a `save-excursion' and point is always at
 `point-min'. Its return value has to be an alist (POSITION MESSAGE)
 when POSITION refer to the buffer position of the error, as an
 integer, and MESSAGE is a strings describing the error.

   - DESCRIPTION: Summary about the check, as a string.

   - CATEGORIES: Categories relative to the check, as a list of symbol.
 They are used for filtering when calling `org-lint'. Checkers not
 explicitly associated to a category are collected in the `default'
 one.

   - TRUST: The trust level one can have in the check. It is either `low'
 or `high', depending on the heuristics implemented and the nature of
 the check. This has an indicative value only and is displayed along
 reports.

 All checks have to be listed in `org-lint--checkers'.

 Results are displayed in a special *Org Lint* buffer with a dedicated
 major mode, derived from `tabulated-list-mode'. In addition to the usual
 key-bindings inherited from it, C-j displays problematic line reported
 under point and RET jumps to it.

 Checks currently implemented are:

   - duplicates CUSTOM_ID properties
   - duplicate NAME values
   - duplicate targets
   - duplicate footnote definitions
   - orphaned affiliated keywords
   - obsolete affiliated keywords
   - missing language in src blocks
   - NAME values with a colon
   - wrong header arguments in src blocks
   - misuse of CATEGORY keyword
   - coderef links with unknown destination
   - custom-id links with unknown destination
   - fuzzy links with unknown destination
   - id links with unknown destination
   - links to non-existent local files
   - special properties in properties drawer
   - obsolete syntax for PROPERTIES drawers
   - missing definition for footnote references
   - missing reference for footnote definitions
   - non-footnote definitions in footnote section
   - probable invalid keywords
   - invalid blocks
   - probable incomplete drawers
   - obsolete QUOTE section

 Since it relies on lexical binding, `pcase' and `string-prefix-p', it
 cannot be added to Org 8.3, but can make it into Org 8.4, if deemed
 useful enough.

 Feedback welcome.


 Regards,

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :   +33 - (0)9 53 10 27 44
Cell:   +33 - (0)6 85 62 59 98
Fax :   +33 - (0)9 58 10 27 44

Fax (D):+49 - (0)3 21 21 25 22 44

email:  rai...@krugs.de

Skype:  RMkrug

PGP: 0x0F52F982


signature.asc
Description: PGP signature


Re: [O] [RFC] Org linting library

2015-06-05 Thread Nicolas Goaziou
Rainer M Krug rai...@krugs.de writes:

 The link

 ,
 | [[file:__BOX__/Aerodynamic%20resistances.docx][file:./__BOX__/Aerodynamic 
 resistances.docx]]
 `

 causes the following warnings:

 ,
 |   9094 low   Link to non-existent local file 
 __BOX__/Aerodynamic%20resistances.docx

Fixed. Thank you.

 |   9094 low   Link to non-existent local file ./__BOX__/Aerodynamic
 `

 although the file exists and the link works in org.

Here, Org Lint is correct. Link's description is really a link to
a file, ./__BOX__/Aerodynamic, followed by a space, and
resistances.docx text.


Regards,



Re: [O] [RFC] Org linting library

2015-05-27 Thread Nicolas Goaziou
Hello,

Andreas Leha andreas.l...@med.uni-goettingen.de writes:

 some more spurious warnings I get:


 1. Captions with short version:

 ,
 | 1105 low   Possible missing colon in keyword #+caption[Data
 `

 2. header arguments from ob-latex:

 ,
 |451 high  Unknown header argument packages
 |451 high  Unknown header argument imoutoptions
 |451 high  Unknown header argument iminoptions
 |451 high  Unknown header argument imagemagick
 |451 high  Unknown header argument fit
 `

Fixed. Thank you.


Regards,

-- 
Nicolas Goaziou



Re: [O] [RFC] Org linting library

2015-05-27 Thread Andreas Leha
Hi Nicolas,

some more spurious warnings I get:


1. Captions with short version:

,
| 1105 low   Possible missing colon in keyword #+caption[Data
`

2. header arguments from ob-latex:

,
|451 high  Unknown header argument packages
|451 high  Unknown header argument imoutoptions
|451 high  Unknown header argument iminoptions
|451 high  Unknown header argument imagemagick
|451 high  Unknown header argument fit
`


Best,
Andreas




Re: [O] [RFC] Org linting library

2015-05-24 Thread Nicolas Goaziou
Rainer M Krug rai...@krugs.de writes:

 Concerning ignoring: it would be nice to dynamically exclude certain
 types of messages - i.e. hiding them from the results of the
 linting. I don't think this is possible at
 the moment?

 I have literally about 100 names with a colon - so these messages are
 overshadowing the really important ones.

Done. Now, h hides reports from checker and point. i ignores them
altogether, which means they do not appear on subsequent refreshes.

 Another question: When duplicate names are detected, would it be
 possible to specify both (or more) line numbers in the warning? THis
 would make finding them much easier.

Done.

Regards,



Re: [O] [RFC] Org linting library

2015-05-24 Thread Rainer M Krug
Nicolas Goaziou m...@nicolasgoaziou.fr writes:

 Rainer M Krug rai...@krugs.de writes:

 Concerning ignoring: it would be nice to dynamically exclude certain
 types of messages - i.e. hiding them from the results of the
 linting. I don't think this is possible at
 the moment?

 I have literally about 100 names with a colon - so these messages are
 overshadowing the really important ones.

 Done. Now, h hides reports from checker and point. i ignores them
 altogether, which means they do not appear on subsequent refreshes.

Sounds perfect - am really looking forward to trying it out on Tuesday.


 Another question: When duplicate names are detected, would it be
 possible to specify both (or more) line numbers in the warning? THis
 would make finding them much easier.

 Done.

Perfect.

Cheers,

Rainer


 Regards,

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :   +33 - (0)9 53 10 27 44
Cell:   +33 - (0)6 85 62 59 98
Fax :   +33 - (0)9 58 10 27 44

Fax (D):+49 - (0)3 21 21 25 22 44

email:  rai...@krugs.de

Skype:  RMkrug

PGP: 0x0F52F982


signature.asc
Description: PGP signature


Re: [O] [RFC] Org linting library

2015-05-23 Thread Rainer M Krug
Nicolas Goaziou m...@nicolasgoaziou.fr writes:

 Rainer M Krug rai...@krugs.de writes:

 1) not identifying header argument with +
 ,
 | #+PROPERTY: header-args+ :tangle no
 `

 results in

 ,
 | 87 high  Unknown header argument 
 `

 This should be fixed.

Thanks.


 2) not knowing header argument file-ext from R
 ,
 | #+begin_src R  :exports results :file-ext pdf :results graphics :width 8 
 :height 8
 | plotSensMainEffAll(files)
 | #+end_src
 `

 results in

 ,
 |   1691 high  Unknown header argument file-ext
 `

 Fixed too.

Perfect - thanks.


 3) I am not to sure about this one, but in LaTeX labels of figures are
 with the colon. Initially, I had #+LABEL: instead of #+NAME: but changed
 it as one should use #+NAME instead of #+LABEL, but now I get the following:

 ,
 | #+CAPTION: The caption
 | #+NAME: fig:sensDefault
 | #+RESULTS: fig_sensDefault
 | [[file:./output/fig_sensDefault.pdf]]
 `

 results in

 ,
 |   1686 high  Name fig:sensDefault contains a colon; Babel cannot use it 
 as input
 `

 I agree with the fact that Babel can not use it as input, but I do not
 want to use it as input, only as a label in LaTeX for the figure?

 Then you can ignore safely this report.

Concerning ignoring: it would be nice to dynamically exclude certain
types of messages - i.e. hiding them from the results of the
linting. I don't think this is possible at
the moment?

I have literally about 100 names with a colon - so these messages are
overshadowing the really important ones.


 According to the manual this should work:

 http://orgmode.org/manual/Images-and-tables.html:

 ,
 |  #+CAPTION: This is the caption for the next figure link (or table)
 |  #+NAME:   fig:SED-HR4049
 |  [[./img/a.jpg]]
 `

 So maybe check if this is part of a construct with a CAPTION or if it
 really is used as an input somewhere?

 It is quite complicated to check if it is an input somewhere, e.g., it
 could be used as an input in another document.

True - haven't considered that.


 4) references where :FILE is a normal PROPERTY: (or isn't it?)

 ,
 | ** Koivusalo2002 - Snow processes in a forest clearing and in a coniferous 
 forest
 | :PROPERTIES:
 | :TITLE:Snow processes in a forest clearing and in a coniferous forest
 | :BTYPE:article
 | :CUSTOM_ID: Koivusalo2002
 | :AUTHOR:   Koivusalo, H. and Kokkonen, T.
 | :DOI:  10.1016/S0022-1694(02)00031-8
 | :FILE: file:./Literature/Koivusalo_2002.pdf
 | :ISSN: 00221694
 | :JOURNAL:  Journal of Hydrology
 | :KEYWORDS: energy,forest,mathematical models,melt,snow,uxes
 | :MENDELEY-GROUPS: Energy Balance,bibliography
 | :MONTH:may
 | :NUMBER:   1-4
 | :PAGES:145--164
 | :URL:  http://linkinghub.elsevier.com/retrieve/pii/S0022169402000318
 | :VOLUME:   262
 | :YEAR: 2002
 | :END:
 | [[file:Literature/Koivusalo2002.pdf]]
 `

 results in

 ,
 |  11221 high  Special property FILE found in a properties drawer
 `

 FILE is a special property, i.e., it shouldn't be set in a property
 drawer. See (info (org) Special properties).

OK - I'll throw it put then.


 I am really happy with org-lint - thanks a lot. This makes working with
 org files much easier.

 Thanks for all the feedback.

Pleasure - I found several undetected problems in my org file by using
the linting library.

Another question: When duplicate names are detected, would it be
possible to specify both (or more) line numbers in the warning? THis
would make finding them much easier.

Cheers,

Rainer



 Regards,

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :   +33 - (0)9 53 10 27 44
Cell:   +33 - (0)6 85 62 59 98
Fax :   +33 - (0)9 58 10 27 44

Fax (D):+49 - (0)3 21 21 25 22 44

email:  rai...@krugs.de

Skype:  RMkrug

PGP: 0x0F52F982


signature.asc
Description: PGP signature


Re: [O] [RFC] Org linting library

2015-05-22 Thread Rainer M Krug
Nicolas Goaziou m...@nicolasgoaziou.fr writes:

 Rainer M Krug rai...@krugs.de writes:

 Well - now it does. The following produces the error:

 #+PROPERTY: header-args  :tangle-mode (identity #o444)

 * Some code

 #+begin_src R :results nons

 #+end_src

 The problem is the (identity #o444) which is causing the problem.

 Fixed. Thank you.

Thanks - working.

Now there re a few more lints giving wrong warnings:

1) not identifying header argument with +
,
| #+PROPERTY: header-args+ :tangle no
`

results in

,
| 87 high  Unknown header argument 
`

2) not knowing header argument file-ext from R
,
| #+begin_src R  :exports results :file-ext pdf :results graphics :width 8 
:height 8
| plotSensMainEffAll(files)
| #+end_src
`

results in

,
|   1691 high  Unknown header argument file-ext
`

3) I am not to sure about this one, but in LaTeX labels of figures are
with the colon. Initially, I had #+LABEL: instead of #+NAME: but changed
it as one should use #+NAME instead of #+LABEL, but now I get the following:

,
| #+CAPTION: The caption
| #+NAME: fig:sensDefault
| #+RESULTS: fig_sensDefault
| [[file:./output/fig_sensDefault.pdf]]
`

results in

,
|   1686 high  Name fig:sensDefault contains a colon; Babel cannot use it as 
input
`

I agree with the fact that Babel can not use it as input, but I do not
want to use it as input, only as a label in LaTeX for the figure?

According to the manual this should work:

http://orgmode.org/manual/Images-and-tables.html:

,
|  #+CAPTION: This is the caption for the next figure link (or table)
|  #+NAME:   fig:SED-HR4049
|  [[./img/a.jpg]]
`

So maybe check if this is part of a construct with a CAPTION or if it
really is used as an input somewhere?

4) references where :FILE is a normal PROPERTY: (or isn't it?)

,
| ** Koivusalo2002 - Snow processes in a forest clearing and in a coniferous 
forest
| :PROPERTIES:
| :TITLE:Snow processes in a forest clearing and in a coniferous forest
| :BTYPE:article
| :CUSTOM_ID: Koivusalo2002
| :AUTHOR:   Koivusalo, H. and Kokkonen, T.
| :DOI:  10.1016/S0022-1694(02)00031-8
| :FILE: file:./Literature/Koivusalo_2002.pdf
| :ISSN: 00221694
| :JOURNAL:  Journal of Hydrology
| :KEYWORDS: energy,forest,mathematical models,melt,snow,uxes
| :MENDELEY-GROUPS: Energy Balance,bibliography
| :MONTH:may
| :NUMBER:   1-4
| :PAGES:145--164
| :URL:  http://linkinghub.elsevier.com/retrieve/pii/S0022169402000318
| :VOLUME:   262
| :YEAR: 2002
| :END:
| [[file:Literature/Koivusalo2002.pdf]]
`

results in

,
|  11221 high  Special property FILE found in a properties drawer
`

That is all I can see at the moment.


Here is the ECM:

--8---cut here---start-8---
#+PROPERTY: header-args  :tangle-mode (identity #o444)
#+PROPERTY: header-args  :tangle-mode (identity #o444)
#+PROPERTY: header-args+ :tangle no

* file-ext


#+begin_src R  :exports results :file-ext pdf :results graphics :width 8 
:height 8
cat(23)
#+end_src

* And the : in NAME

#+CAPTION: The caption
#+NAME: fig:sensDefault
#+RESULTS: fig_sensDefault
[[file:./output/fig_sensDefault.pdf]]

* References

** Mahat2013 - Testing above- and below-canopy representations of turbulent 
fluxes in an energy balance snowmelt model
:PROPERTIES:
:TITLE:Testing above- and below-canopy representations of turbulent fluxes 
in an energy balance snowmelt model
:BTYPE:article
:CUSTOM_ID: Mahat2013
:AUTHOR:   Mahat, Vinod and Tarboton, David G. and Molotch, Noah P.
:DOI:  10.1002/wrcr.20073
:FILE: :Users/rainerkrug/Documents/Mendeley/Files/Mahat, Tarboton, 
Molotch/Mahat, Tarboton, Molotch\_2013\_Testing above- and below-canopy 
representations of turbulent fluxes in an energy balance snowmelt model.pdf:pdf
:ISSN: 00431397
:JOURNAL:  Water Resources Research
:MONTH:feb
:NUMBER:   2
:PAGES:1107--1122
:URL:  http://doi.wiley.com/10.1002/wrcr.20073
:VOLUME:   49
:YEAR: 2013
:END:
[[file:Literature/Mahat2013.pdf]]
--8---cut here---end---8---

which results in
,
|  3 high  Unknown header argument 
|  8 high  Unknown header argument file-ext
| 15 high  Name fig:sensDefault contains a colon; Babel cannot use it as 
input
| 17 low   Link to non-existent local file ./output/fig_sensDefault.pdf
| 28 high  Special property FILE found in a properties drawer
| 38 low   Link to non-existent local file Literature/Mahat2013.pdf
`

The Link to non-existent ... are obvious.

I am really happy with org-lint - thanks a lot. This makes working with
org files much easier.

Thanks,

Rainer


 Regards,

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :   +33 - (0)9 53 10 27 44
Cell:   +33 - (0)6 85 62 59 98
Fax :   +33 - (0)9 58 10 

Re: [O] [RFC] Org linting library

2015-05-22 Thread Nicolas Goaziou
Rainer M Krug rai...@krugs.de writes:

 1) not identifying header argument with +
 ,
 | #+PROPERTY: header-args+ :tangle no
 `

 results in

 ,
 | 87 high  Unknown header argument 
 `

This should be fixed.

 2) not knowing header argument file-ext from R
 ,
 | #+begin_src R  :exports results :file-ext pdf :results graphics :width 8 
 :height 8
 | plotSensMainEffAll(files)
 | #+end_src
 `

 results in

 ,
 |   1691 high  Unknown header argument file-ext
 `

Fixed too.

 3) I am not to sure about this one, but in LaTeX labels of figures are
 with the colon. Initially, I had #+LABEL: instead of #+NAME: but changed
 it as one should use #+NAME instead of #+LABEL, but now I get the following:

 ,
 | #+CAPTION: The caption
 | #+NAME: fig:sensDefault
 | #+RESULTS: fig_sensDefault
 | [[file:./output/fig_sensDefault.pdf]]
 `

 results in

 ,
 |   1686 high  Name fig:sensDefault contains a colon; Babel cannot use it 
 as input
 `

 I agree with the fact that Babel can not use it as input, but I do not
 want to use it as input, only as a label in LaTeX for the figure?

Then you can ignore safely this report.

 According to the manual this should work:

 http://orgmode.org/manual/Images-and-tables.html:

 ,
 |  #+CAPTION: This is the caption for the next figure link (or table)
 |  #+NAME:   fig:SED-HR4049
 |  [[./img/a.jpg]]
 `

 So maybe check if this is part of a construct with a CAPTION or if it
 really is used as an input somewhere?

It is quite complicated to check if it is an input somewhere, e.g., it
could be used as an input in another document.

 4) references where :FILE is a normal PROPERTY: (or isn't it?)

 ,
 | ** Koivusalo2002 - Snow processes in a forest clearing and in a coniferous 
 forest
 | :PROPERTIES:
 | :TITLE:Snow processes in a forest clearing and in a coniferous forest
 | :BTYPE:article
 | :CUSTOM_ID: Koivusalo2002
 | :AUTHOR:   Koivusalo, H. and Kokkonen, T.
 | :DOI:  10.1016/S0022-1694(02)00031-8
 | :FILE: file:./Literature/Koivusalo_2002.pdf
 | :ISSN: 00221694
 | :JOURNAL:  Journal of Hydrology
 | :KEYWORDS: energy,forest,mathematical models,melt,snow,uxes
 | :MENDELEY-GROUPS: Energy Balance,bibliography
 | :MONTH:may
 | :NUMBER:   1-4
 | :PAGES:145--164
 | :URL:  http://linkinghub.elsevier.com/retrieve/pii/S0022169402000318
 | :VOLUME:   262
 | :YEAR: 2002
 | :END:
 | [[file:Literature/Koivusalo2002.pdf]]
 `

 results in

 ,
 |  11221 high  Special property FILE found in a properties drawer
 `

FILE is a special property, i.e., it shouldn't be set in a property
drawer. See (info (org) Special properties).

 I am really happy with org-lint - thanks a lot. This makes working with
 org files much easier.

Thanks for all the feedback.


Regards,



Re: [O] [RFC] Org linting library

2015-05-21 Thread Rainer M Krug
Nicolas Goaziou m...@nicolasgoaziou.fr writes:

 Rainer M Krug rai...@krugs.de writes:

 There is an example where I get the error:

 * Fitting the kernel to the data
 The parameter which will be fitted can be found in Table [[tab:fitInitial]]

 #+CAPTION: Variables used for the initial fit of the wind profile using the 
 function and the initial values.
 #+LABEL: tab:fitInitial
 | variable   | initial value | remark
|
 |+---+--|

 The cause is the link [[tab:initial]] If I remove everything below and
 including the line #+CAPTION the linting works.

 Fixed. Thank you.


Thanks.

Two more questions:

I get the following warnings:

,
| 10 low   Unknown OPTIONS item @
| 11 low   Unknown OPTIONS item skip
| 11 low   Unknown OPTIONS item LaTeX
| 11 low   Unknown OPTIONS item TeX
`

based on the following lines:

,
| #+OPTIONS:   H:3 num:t toc:t \n:nil @:t ::t |:t ^:nil -:t f:t *:t :t
| #+OPTIONS:   TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
`

The file is not that old - but have these options changed?


and I get

,
|   1821 low   Orphaned affiliated keyword: RESULTS
`

caused by an orphaned

,
| #+RESULTS:
`

But these are created by evaluating a code block which produced no
results - so they are a valid part of the document?

And an error:

I get, in the same document I got the other errors, the following error:

,
| Org linting process starting...
| org-split-string: Wrong type argument: stringp, 292
`

The backtrace is huge - how can I produce a usable backtrace?

Hope this helps,

Rainer



 Regards,

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :   +33 - (0)9 53 10 27 44
Cell:   +33 - (0)6 85 62 59 98
Fax :   +33 - (0)9 58 10 27 44

Fax (D):+49 - (0)3 21 21 25 22 44

email:  rai...@krugs.de

Skype:  RMkrug

PGP: 0x0F52F982


signature.asc
Description: PGP signature


Re: [O] [RFC] Org linting library

2015-05-21 Thread Rainer M Krug
Nicolas Goaziou m...@nicolasgoaziou.fr writes:

 Rainer M Krug rai...@krugs.de writes:

 Two more questions:

 I get the following warnings:

 ,
 | 10 low   Unknown OPTIONS item @
 | 11 low   Unknown OPTIONS item skip
 | 11 low   Unknown OPTIONS item LaTeX
 | 11 low   Unknown OPTIONS item TeX
 `

 based on the following lines:

 ,
 | #+OPTIONS:   H:3 num:t toc:t \n:nil @:t ::t |:t ^:nil -:t f:t *:t :t
 | #+OPTIONS:   TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
 `

 The file is not that old - but have these options changed?

 These options do not do anything. @ and skip have no equivalent.
 TeX and LaTeX are now tex. See (info (org) Export settings).

 and I get

 ,
 |   1821 low   Orphaned affiliated keyword: RESULTS
 `

 caused by an orphaned

 ,
 | #+RESULTS:
 `

 But these are created by evaluating a code block which produced no
 results - so they are a valid part of the document?

 Correct. Note however the low trust on this check. It's just
 a heads-up. Anyway I remove such reports for RESULTS in wip-lint.

 And an error:

 I get, in the same document I got the other errors, the following error:

 ,
 | Org linting process starting...
 | org-split-string: Wrong type argument: stringp, 292
 `

 The backtrace is huge - how can I produce a usable backtrace?

 Usually, only the last top-level function call is useful. 

 It would be better to provide an ECM, tho. The error comes from Babel
 header check. Does 292 ring a bell in a #+HEADER: line?

Addition to my last email: when I close emacs and open it again and try
to linter the ECM, it works - is it possible that there is some caching
which is not cleaned up?

Rainer




 Regards,

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :   +33 - (0)9 53 10 27 44
Cell:   +33 - (0)6 85 62 59 98
Fax :   +33 - (0)9 58 10 27 44

Fax (D):+49 - (0)3 21 21 25 22 44

email:  rai...@krugs.de

Skype:  RMkrug

PGP: 0x0F52F982


signature.asc
Description: PGP signature


Re: [O] [RFC] Org linting library

2015-05-21 Thread Rainer M Krug
Nicolas Goaziou m...@nicolasgoaziou.fr writes:

 Rainer M Krug rai...@krugs.de writes:

 Two more questions:

 I get the following warnings:

 ,
 | 10 low   Unknown OPTIONS item @
 | 11 low   Unknown OPTIONS item skip
 | 11 low   Unknown OPTIONS item LaTeX
 | 11 low   Unknown OPTIONS item TeX
 `

 based on the following lines:

 ,
 | #+OPTIONS:   H:3 num:t toc:t \n:nil @:t ::t |:t ^:nil -:t f:t *:t :t
 | #+OPTIONS:   TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
 `

 The file is not that old - but have these options changed?

 These options do not do anything. @ and skip have no equivalent.
 TeX and LaTeX are now tex. See (info (org) Export settings).

 and I get

 ,
 |   1821 low   Orphaned affiliated keyword: RESULTS
 `

 caused by an orphaned

 ,
 | #+RESULTS:
 `

 But these are created by evaluating a code block which produced no
 results - so they are a valid part of the document?

 Correct. Note however the low trust on this check. It's just
 a heads-up. Anyway I remove such reports for RESULTS in wip-lint.

 And an error:

 I get, in the same document I got the other errors, the following error:

 ,
 | Org linting process starting...
 | org-split-string: Wrong type argument: stringp, 292
 `

 The backtrace is huge - how can I produce a usable backtrace?

 Usually, only the last top-level function call is useful. 

 It would be better to provide an ECM, tho. The error comes from Babel
 header check. Does 292 ring a bell in a #+HEADER: line?

Hi

here is an ECM:

,
| * Matlab code
| 
| #+begin_src octave
| 
| #+end_src
`

Actually, whatever I put there instead of octave, I get the same error.

This is very strange. What is the problem here?

Cheers,

Rainer



 Regards,

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :   +33 - (0)9 53 10 27 44
Cell:   +33 - (0)6 85 62 59 98
Fax :   +33 - (0)9 58 10 27 44

Fax (D):+49 - (0)3 21 21 25 22 44

email:  rai...@krugs.de

Skype:  RMkrug

PGP: 0x0F52F982


signature.asc
Description: PGP signature


Re: [O] [RFC] Org linting library

2015-05-21 Thread Rainer M Krug
Nicolas Goaziou m...@nicolasgoaziou.fr writes:

 Rainer M Krug rai...@krugs.de writes:

 Two more questions:

 I get the following warnings:

 ,
 | 10 low   Unknown OPTIONS item @
 | 11 low   Unknown OPTIONS item skip
 | 11 low   Unknown OPTIONS item LaTeX
 | 11 low   Unknown OPTIONS item TeX
 `

 based on the following lines:

 ,
 | #+OPTIONS:   H:3 num:t toc:t \n:nil @:t ::t |:t ^:nil -:t f:t *:t :t
 | #+OPTIONS:   TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
 `

 The file is not that old - but have these options changed?

 These options do not do anything. @ and skip have no equivalent.
 TeX and LaTeX are now tex. See (info (org) Export settings).

 and I get

 ,
 |   1821 low   Orphaned affiliated keyword: RESULTS
 `

 caused by an orphaned

 ,
 | #+RESULTS:
 `

 But these are created by evaluating a code block which produced no
 results - so they are a valid part of the document?

 Correct. Note however the low trust on this check. It's just
 a heads-up. Anyway I remove such reports for RESULTS in wip-lint.

 And an error:

 I get, in the same document I got the other errors, the following error:

 ,
 | Org linting process starting...
 | org-split-string: Wrong type argument: stringp, 292
 `

 The backtrace is huge - how can I produce a usable backtrace?

 Usually, only the last top-level function call is useful. 

 It would be better to provide an ECM, tho. The error comes from Babel
 header check. Does 292 ring a bell in a #+HEADER: line?

Well - now it does. The following produces the error:

--8---cut here---start-8---
#+PROPERTY: header-args  :tangle-mode (identity #o444)

* Some code

#+begin_src R :results nons

#+end_src
--8---cut here---end---8---

The problem is the (identity #o444) which is causing the problem.

Here it is,

Rainer



 Regards,

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :   +33 - (0)9 53 10 27 44
Cell:   +33 - (0)6 85 62 59 98
Fax :   +33 - (0)9 58 10 27 44

Fax (D):+49 - (0)3 21 21 25 22 44

email:  rai...@krugs.de

Skype:  RMkrug

PGP: 0x0F52F982


signature.asc
Description: PGP signature


Re: [O] [RFC] Org linting library

2015-05-21 Thread Nicolas Goaziou
Rainer M Krug rai...@krugs.de writes:

 Well - now it does. The following produces the error:

 #+PROPERTY: header-args  :tangle-mode (identity #o444)

 * Some code

 #+begin_src R :results nons

 #+end_src

 The problem is the (identity #o444) which is causing the problem.

Fixed. Thank you.

Regards,



Re: [O] [RFC] Org linting library

2015-05-21 Thread Nicolas Goaziou
Rainer M Krug rai...@krugs.de writes:

 Two more questions:

 I get the following warnings:

 ,
 | 10 low   Unknown OPTIONS item @
 | 11 low   Unknown OPTIONS item skip
 | 11 low   Unknown OPTIONS item LaTeX
 | 11 low   Unknown OPTIONS item TeX
 `

 based on the following lines:

 ,
 | #+OPTIONS:   H:3 num:t toc:t \n:nil @:t ::t |:t ^:nil -:t f:t *:t :t
 | #+OPTIONS:   TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
 `

 The file is not that old - but have these options changed?

These options do not do anything. @ and skip have no equivalent.
TeX and LaTeX are now tex. See (info (org) Export settings).

 and I get

 ,
 |   1821 low   Orphaned affiliated keyword: RESULTS
 `

 caused by an orphaned

 ,
 | #+RESULTS:
 `

 But these are created by evaluating a code block which produced no
 results - so they are a valid part of the document?

Correct. Note however the low trust on this check. It's just
a heads-up. Anyway I remove such reports for RESULTS in wip-lint.

 And an error:

 I get, in the same document I got the other errors, the following error:

 ,
 | Org linting process starting...
 | org-split-string: Wrong type argument: stringp, 292
 `

 The backtrace is huge - how can I produce a usable backtrace?

Usually, only the last top-level function call is useful. 

It would be better to provide an ECM, tho. The error comes from Babel
header check. Does 292 ring a bell in a #+HEADER: line?


Regards,



Re: [O] [RFC] Org linting library

2015-05-20 Thread Rainer M Krug
Rainer M Krug rai...@krugs.de writes:

 Rainer M Krug rai...@krugs.de writes:

 Andreas Leha andreas.l...@med.uni-goettingen.de writes:

 Hi Rainer,

 Rainer M Krug rai...@krugs.de writes:
 Nicolas Goaziou m...@nicolasgoaziou.fr writes:

 Hello,

 The following library implements linting for Org syntax. The sole public
 function is `org-lint', which see.

 Internally, the library defines a new structure: `org-lint-checker',
 with the following slots:

   - NAME: Unique check identifier, as a symbol. The check is done
 calling the function `org-lint-NAME' with one mandatory argument,
 the parse tree describing the current Org buffer. Such function
 calls are wrapped within a `save-excursion' and point is always at
 `point-min'. Its return value has to be an alist (POSITION MESSAGE)
 when POSITION refer to the buffer position of the error, as an
 integer, and MESSAGE is a strings describing the error.

   - DESCRIPTION: Summary about the check, as a string.

   - CATEGORIES: Categories relative to the check, as a list of symbol.
 They are used for filtering when calling `org-lint'. Checkers not
 explicitly associated to a category are collected in the `default'
 one.

   - TRUST: The trust level one can have in the check. It is either `low'
 or `high', depending on the heuristics implemented and the nature of
 the check. This has an indicative value only and is displayed along
 reports.

 All checks have to be listed in `org-lint--checkers'.

 Results are displayed in a special *Org Lint* buffer with a dedicated
 major mode, derived from `tabulated-list-mode'. In addition to the usual
 key-bindings inherited from it, C-j displays problematic line reported
 under point and RET jumps to it.

 Checks currently implemented are:

   - duplicates CUSTOM_ID properties
   - duplicate NAME values
   - duplicate targets
   - duplicate footnote definitions
   - orphaned affiliated keywords
   - obsolete affiliated keywords
   - missing language in src blocks
   - NAME values with a colon
   - wrong header arguments in src blocks
   - misuse of CATEGORY keyword
   - coderef links with unknown destination
   - custom-id links with unknown destination
   - fuzzy links with unknown destination
   - id links with unknown destination
   - links to non-existent local files
   - special properties in properties drawer
   - obsolete syntax for PROPERTIES drawers
   - missing definition for footnote references
   - missing reference for footnote definitions
   - non-footnote definitions in footnote section
   - probable invalid keywords
   - invalid blocks
   - probable incomplete drawers
   - obsolete QUOTE section

 Since it relies on lexical binding, `pcase' and `string-prefix-p', it
 cannot be added to Org 8.3, but can make it into Org 8.4, if deemed
 useful enough.


 This sounds very interesting and I would like to try it out. I
 understand that it can't be put into master, but could it be put into a
 branch?

 This would make testing a bit easier.


 It is.  The branch is called `wip-lint'.

 Thanks (also to Nicolas) - I found it. Just expected the branch to be
 tracked automatically.

 This is really brilliant!

 But I now get a message in one .org file:

 ,
 | Org linting process starting...
 | Search failed: ^[ ]*#\\+NAME: +tab:sensVar
 `

 and no results.

 Works in other .org files.

 This one is rather long (11570 lines) and many code blocks.

 Just let me know how I can trace down where this is coming from and what
 the message tells me.

 It seems that the error comes from the fact that ~#+LABEL: sensVar~ was
 defined twice.

 Renaming these results in working linting.

OK - please ignore this last comment.

There is an example where I get the error:

--8---cut here---start-8---
* Fitting the kernel to the data
The parameter which will be fitted can be found in Table [[tab:fitInitial]]

#+CAPTION: Variables used for the initial fit of the wind profile using the 
function and the initial values.
#+LABEL: tab:fitInitial
| variable   | initial value | remark   
|
|+---+--|
--8---cut here---end---8---

The cause is the link [[tab:initial]] If I remove everything below and
including the line #+CAPTION the linting works.

,
|  2 high  Unknown fuzzy location tab:fitInitial
`

Cheers,

Rainer




 Rainer


 Thanks,

 Rainer


 Regards,
 Andreas



-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :   +33 - (0)9 53 10 27 44
Cell:   +33 - (0)6 85 62 59 98
Fax :   +33 - (0)9 58 10 27 44

Fax (D):+49 - (0)3 21 21 25 22 44

email:  rai...@krugs.de

Skype:  RMkrug

PGP: 0x0F52F982



Re: [O] [RFC] Org linting library

2015-05-20 Thread Nicolas Goaziou
Rainer M Krug rai...@krugs.de writes:

 There is an example where I get the error:

 * Fitting the kernel to the data
 The parameter which will be fitted can be found in Table [[tab:fitInitial]]

 #+CAPTION: Variables used for the initial fit of the wind profile using the 
 function and the initial values.
 #+LABEL: tab:fitInitial
 | variable   | initial value | remark 
   |
 |+---+--|

 The cause is the link [[tab:initial]] If I remove everything below and
 including the line #+CAPTION the linting works.

Fixed. Thank you.


Regards,



Re: [O] [RFC] Org linting library

2015-05-20 Thread Andreas Leha
Hi Rainer,

Rainer M Krug rai...@krugs.de writes:
 Rainer M Krug rai...@krugs.de writes:

 Rainer M Krug rai...@krugs.de writes:

 Andreas Leha andreas.l...@med.uni-goettingen.de writes:

 Hi Rainer,

 Rainer M Krug rai...@krugs.de writes:
 Nicolas Goaziou m...@nicolasgoaziou.fr writes:

 Hello,

 The following library implements linting for Org syntax. The sole public
 function is `org-lint', which see.

 Internally, the library defines a new structure: `org-lint-checker',
 with the following slots:

   - NAME: Unique check identifier, as a symbol. The check is done
 calling the function `org-lint-NAME' with one mandatory argument,
 the parse tree describing the current Org buffer. Such function
 calls are wrapped within a `save-excursion' and point is always at
 `point-min'. Its return value has to be an alist (POSITION MESSAGE)
 when POSITION refer to the buffer position of the error, as an
 integer, and MESSAGE is a strings describing the error.

   - DESCRIPTION: Summary about the check, as a string.

   - CATEGORIES: Categories relative to the check, as a list of symbol.
 They are used for filtering when calling `org-lint'. Checkers not
 explicitly associated to a category are collected in the `default'
 one.

   - TRUST: The trust level one can have in the check. It is either `low'
 or `high', depending on the heuristics implemented and the nature of
 the check. This has an indicative value only and is displayed along
 reports.

 All checks have to be listed in `org-lint--checkers'.

 Results are displayed in a special *Org Lint* buffer with a dedicated
 major mode, derived from `tabulated-list-mode'. In addition to the usual
 key-bindings inherited from it, C-j displays problematic line reported
 under point and RET jumps to it.

 Checks currently implemented are:

   - duplicates CUSTOM_ID properties
   - duplicate NAME values
   - duplicate targets
   - duplicate footnote definitions
   - orphaned affiliated keywords
   - obsolete affiliated keywords
   - missing language in src blocks
   - NAME values with a colon
   - wrong header arguments in src blocks
   - misuse of CATEGORY keyword
   - coderef links with unknown destination
   - custom-id links with unknown destination
   - fuzzy links with unknown destination
   - id links with unknown destination
   - links to non-existent local files
   - special properties in properties drawer
   - obsolete syntax for PROPERTIES drawers
   - missing definition for footnote references
   - missing reference for footnote definitions
   - non-footnote definitions in footnote section
   - probable invalid keywords
   - invalid blocks
   - probable incomplete drawers
   - obsolete QUOTE section

 Since it relies on lexical binding, `pcase' and `string-prefix-p', it
 cannot be added to Org 8.3, but can make it into Org 8.4, if deemed
 useful enough.


 This sounds very interesting and I would like to try it out. I
 understand that it can't be put into master, but could it be put into a
 branch?

 This would make testing a bit easier.


 It is.  The branch is called `wip-lint'.

 Thanks (also to Nicolas) - I found it. Just expected the branch to be
 tracked automatically.

 This is really brilliant!

 But I now get a message in one .org file:

 ,
 | Org linting process starting...
 | Search failed: ^[]*#\\+NAME: +tab:sensVar
 `

 and no results.

 Works in other .org files.

 This one is rather long (11570 lines) and many code blocks.

 Just let me know how I can trace down where this is coming from and what
 the message tells me.

 It seems that the error comes from the fact that ~#+LABEL: sensVar~ was
 defined twice.

 Renaming these results in working linting.

 OK - please ignore this last comment.

 There is an example where I get the error:

 * Fitting the kernel to the data
 The parameter which will be fitted can be found in Table [[tab:fitInitial]]

 #+CAPTION: Variables used for the initial fit of the wind profile using the 
 function and the initial values.
 #+LABEL: tab:fitInitial
 | variable   | initial value | remark 
   |
 |+---+--|

 The cause is the link [[tab:initial]] If I remove everything below and
 including the line #+CAPTION the linting works.

 ,
 |  2 high  Unknown fuzzy location tab:fitInitial
 `


Untested - but should that not be
#+NAME: tab:fitInitial
rather than #+LABEL?

Cheers,
Andreas




Re: [O] [RFC] Org linting library

2015-05-20 Thread Rainer M Krug


Envoyé de mon iPhone

 Le 20 mai 2015 à 22:42, Andreas Leha andreas.l...@med.uni-goettingen.de a 
 écrit :
 
 Hi Rainer,
 
 Rainer M Krug rai...@krugs.de writes:
 Rainer M Krug rai...@krugs.de writes:
 
 Rainer M Krug rai...@krugs.de writes:
 
 Andreas Leha andreas.l...@med.uni-goettingen.de writes:
 
 Hi Rainer,
 
 Rainer M Krug rai...@krugs.de writes:
 Nicolas Goaziou m...@nicolasgoaziou.fr writes:
 
 Hello,
 
 The following library implements linting for Org syntax. The sole public
 function is `org-lint', which see.
 
 Internally, the library defines a new structure: `org-lint-checker',
 with the following slots:
 
  - NAME: Unique check identifier, as a symbol. The check is done
calling the function `org-lint-NAME' with one mandatory argument,
the parse tree describing the current Org buffer. Such function
calls are wrapped within a `save-excursion' and point is always at
`point-min'. Its return value has to be an alist (POSITION MESSAGE)
when POSITION refer to the buffer position of the error, as an
integer, and MESSAGE is a strings describing the error.
 
  - DESCRIPTION: Summary about the check, as a string.
 
  - CATEGORIES: Categories relative to the check, as a list of symbol.
They are used for filtering when calling `org-lint'. Checkers not
explicitly associated to a category are collected in the `default'
one.
 
  - TRUST: The trust level one can have in the check. It is either `low'
or `high', depending on the heuristics implemented and the nature of
the check. This has an indicative value only and is displayed along
reports.
 
 All checks have to be listed in `org-lint--checkers'.
 
 Results are displayed in a special *Org Lint* buffer with a dedicated
 major mode, derived from `tabulated-list-mode'. In addition to the usual
 key-bindings inherited from it, C-j displays problematic line reported
 under point and RET jumps to it.
 
 Checks currently implemented are:
 
  - duplicates CUSTOM_ID properties
  - duplicate NAME values
  - duplicate targets
  - duplicate footnote definitions
  - orphaned affiliated keywords
  - obsolete affiliated keywords
  - missing language in src blocks
  - NAME values with a colon
  - wrong header arguments in src blocks
  - misuse of CATEGORY keyword
  - coderef links with unknown destination
  - custom-id links with unknown destination
  - fuzzy links with unknown destination
  - id links with unknown destination
  - links to non-existent local files
  - special properties in properties drawer
  - obsolete syntax for PROPERTIES drawers
  - missing definition for footnote references
  - missing reference for footnote definitions
  - non-footnote definitions in footnote section
  - probable invalid keywords
  - invalid blocks
  - probable incomplete drawers
  - obsolete QUOTE section
 
 Since it relies on lexical binding, `pcase' and `string-prefix-p', it
 cannot be added to Org 8.3, but can make it into Org 8.4, if deemed
 useful enough.
 
 This sounds very interesting and I would like to try it out. I
 understand that it can't be put into master, but could it be put into a
 branch?
 
 This would make testing a bit easier.
 
 It is.  The branch is called `wip-lint'.
 
 Thanks (also to Nicolas) - I found it. Just expected the branch to be
 tracked automatically.
 
 This is really brilliant!
 
 But I now get a message in one .org file:
 
 ,
 | Org linting process starting...
 | Search failed: ^[]*#\\+NAME: +tab:sensVar
 `
 
 and no results.
 
 Works in other .org files.
 
 This one is rather long (11570 lines) and many code blocks.
 
 Just let me know how I can trace down where this is coming from and what
 the message tells me.
 
 It seems that the error comes from the fact that ~#+LABEL: sensVar~ was
 defined twice.
 
 Renaming these results in working linting.
 
 OK - please ignore this last comment.
 
 There is an example where I get the error:
 
 * Fitting the kernel to the data
 The parameter which will be fitted can be found in Table [[tab:fitInitial]]
 
 #+CAPTION: Variables used for the initial fit of the wind profile using the 
 function and the initial values.
 #+LABEL: tab:fitInitial
 | variable   | initial value | remark
|
 |+---+--|
 
 The cause is the link [[tab:initial]] If I remove everything below and
 including the line #+CAPTION the linting works.
 
 ,
 |  2 high  Unknown fuzzy location tab:fitInitial
 `
 
 Untested - but should that not be
 #+NAME: tab:fitInitial
 rather than #+LABEL?
 

Yes - that would be correct. But the linting should tell me that instead of 
failing with this message 

Cheers,

Rainer

 Cheers,
 Andreas
 
 



Re: [O] [RFC] Org linting library

2015-05-20 Thread Rainer M Krug
Rainer M Krug rai...@krugs.de writes:

 Andreas Leha andreas.l...@med.uni-goettingen.de writes:

 Hi Rainer,

 Rainer M Krug rai...@krugs.de writes:
 Nicolas Goaziou m...@nicolasgoaziou.fr writes:

 Hello,

 The following library implements linting for Org syntax. The sole public
 function is `org-lint', which see.

 Internally, the library defines a new structure: `org-lint-checker',
 with the following slots:

   - NAME: Unique check identifier, as a symbol. The check is done
 calling the function `org-lint-NAME' with one mandatory argument,
 the parse tree describing the current Org buffer. Such function
 calls are wrapped within a `save-excursion' and point is always at
 `point-min'. Its return value has to be an alist (POSITION MESSAGE)
 when POSITION refer to the buffer position of the error, as an
 integer, and MESSAGE is a strings describing the error.

   - DESCRIPTION: Summary about the check, as a string.

   - CATEGORIES: Categories relative to the check, as a list of symbol.
 They are used for filtering when calling `org-lint'. Checkers not
 explicitly associated to a category are collected in the `default'
 one.

   - TRUST: The trust level one can have in the check. It is either `low'
 or `high', depending on the heuristics implemented and the nature of
 the check. This has an indicative value only and is displayed along
 reports.

 All checks have to be listed in `org-lint--checkers'.

 Results are displayed in a special *Org Lint* buffer with a dedicated
 major mode, derived from `tabulated-list-mode'. In addition to the usual
 key-bindings inherited from it, C-j displays problematic line reported
 under point and RET jumps to it.

 Checks currently implemented are:

   - duplicates CUSTOM_ID properties
   - duplicate NAME values
   - duplicate targets
   - duplicate footnote definitions
   - orphaned affiliated keywords
   - obsolete affiliated keywords
   - missing language in src blocks
   - NAME values with a colon
   - wrong header arguments in src blocks
   - misuse of CATEGORY keyword
   - coderef links with unknown destination
   - custom-id links with unknown destination
   - fuzzy links with unknown destination
   - id links with unknown destination
   - links to non-existent local files
   - special properties in properties drawer
   - obsolete syntax for PROPERTIES drawers
   - missing definition for footnote references
   - missing reference for footnote definitions
   - non-footnote definitions in footnote section
   - probable invalid keywords
   - invalid blocks
   - probable incomplete drawers
   - obsolete QUOTE section

 Since it relies on lexical binding, `pcase' and `string-prefix-p', it
 cannot be added to Org 8.3, but can make it into Org 8.4, if deemed
 useful enough.


 This sounds very interesting and I would like to try it out. I
 understand that it can't be put into master, but could it be put into a
 branch?

 This would make testing a bit easier.


 It is.  The branch is called `wip-lint'.

 Thanks (also to Nicolas) - I found it. Just expected the branch to be
 tracked automatically.

 This is really brilliant!

 But I now get a message in one .org file:

 ,
 | Org linting process starting...
 | Search failed: ^[  ]*#\\+NAME: +tab:sensVar
 `

 and no results.

 Works in other .org files.

 This one is rather long (11570 lines) and many code blocks.

 Just let me know how I can trace down where this is coming from and what
 the message tells me.

It seems that the error comes from the fact that ~#+LABEL: sensVar~ was
defined twice.

Renaming these results in working linting.

Rainer


 Thanks,

 Rainer


 Regards,
 Andreas



-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :   +33 - (0)9 53 10 27 44
Cell:   +33 - (0)6 85 62 59 98
Fax :   +33 - (0)9 58 10 27 44

Fax (D):+49 - (0)3 21 21 25 22 44

email:  rai...@krugs.de

Skype:  RMkrug

PGP: 0x0F52F982


signature.asc
Description: PGP signature


Re: [O] [RFC] Org linting library

2015-05-20 Thread Rainer M Krug
Andreas Leha andreas.l...@med.uni-goettingen.de writes:

 Hi Rainer,

 Rainer M Krug rai...@krugs.de writes:
 Nicolas Goaziou m...@nicolasgoaziou.fr writes:

 Hello,

 The following library implements linting for Org syntax. The sole public
 function is `org-lint', which see.

 Internally, the library defines a new structure: `org-lint-checker',
 with the following slots:

   - NAME: Unique check identifier, as a symbol. The check is done
 calling the function `org-lint-NAME' with one mandatory argument,
 the parse tree describing the current Org buffer. Such function
 calls are wrapped within a `save-excursion' and point is always at
 `point-min'. Its return value has to be an alist (POSITION MESSAGE)
 when POSITION refer to the buffer position of the error, as an
 integer, and MESSAGE is a strings describing the error.

   - DESCRIPTION: Summary about the check, as a string.

   - CATEGORIES: Categories relative to the check, as a list of symbol.
 They are used for filtering when calling `org-lint'. Checkers not
 explicitly associated to a category are collected in the `default'
 one.

   - TRUST: The trust level one can have in the check. It is either `low'
 or `high', depending on the heuristics implemented and the nature of
 the check. This has an indicative value only and is displayed along
 reports.

 All checks have to be listed in `org-lint--checkers'.

 Results are displayed in a special *Org Lint* buffer with a dedicated
 major mode, derived from `tabulated-list-mode'. In addition to the usual
 key-bindings inherited from it, C-j displays problematic line reported
 under point and RET jumps to it.

 Checks currently implemented are:

   - duplicates CUSTOM_ID properties
   - duplicate NAME values
   - duplicate targets
   - duplicate footnote definitions
   - orphaned affiliated keywords
   - obsolete affiliated keywords
   - missing language in src blocks
   - NAME values with a colon
   - wrong header arguments in src blocks
   - misuse of CATEGORY keyword
   - coderef links with unknown destination
   - custom-id links with unknown destination
   - fuzzy links with unknown destination
   - id links with unknown destination
   - links to non-existent local files
   - special properties in properties drawer
   - obsolete syntax for PROPERTIES drawers
   - missing definition for footnote references
   - missing reference for footnote definitions
   - non-footnote definitions in footnote section
   - probable invalid keywords
   - invalid blocks
   - probable incomplete drawers
   - obsolete QUOTE section

 Since it relies on lexical binding, `pcase' and `string-prefix-p', it
 cannot be added to Org 8.3, but can make it into Org 8.4, if deemed
 useful enough.


 This sounds very interesting and I would like to try it out. I
 understand that it can't be put into master, but could it be put into a
 branch?

 This would make testing a bit easier.


 It is.  The branch is called `wip-lint'.

Thanks (also to Nicolas) - I found it. Just expected the branch to be
tracked automatically.

This is really brilliant!

But I now get a message in one .org file:

,
| Org linting process starting...
| Search failed: ^[]*#\\+NAME: +tab:sensVar
`

and no results.

Works in other .org files.

This one is rather long (11570 lines) and many code blocks.

Just let me know how I can trace down where this is coming from and what
the message tells me.

Thanks,

Rainer


 Regards,
 Andreas



-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :   +33 - (0)9 53 10 27 44
Cell:   +33 - (0)6 85 62 59 98
Fax :   +33 - (0)9 58 10 27 44

Fax (D):+49 - (0)3 21 21 25 22 44

email:  rai...@krugs.de

Skype:  RMkrug

PGP: 0x0F52F982


signature.asc
Description: PGP signature


Re: [O] [RFC] Org linting library

2015-05-19 Thread Andreas Leha
Nicolas Goaziou m...@nicolasgoaziou.fr writes:
 Hello,

 The following library implements linting for Org syntax. The sole public
 function is `org-lint', which see.

 Internally, the library defines a new structure: `org-lint-checker',
 with the following slots:

   - NAME: Unique check identifier, as a symbol. The check is done
 calling the function `org-lint-NAME' with one mandatory argument,
 the parse tree describing the current Org buffer. Such function
 calls are wrapped within a `save-excursion' and point is always at
 `point-min'. Its return value has to be an alist (POSITION MESSAGE)
 when POSITION refer to the buffer position of the error, as an
 integer, and MESSAGE is a strings describing the error.

   - DESCRIPTION: Summary about the check, as a string.

   - CATEGORIES: Categories relative to the check, as a list of symbol.
 They are used for filtering when calling `org-lint'. Checkers not
 explicitly associated to a category are collected in the `default'
 one.

   - TRUST: The trust level one can have in the check. It is either `low'
 or `high', depending on the heuristics implemented and the nature of
 the check. This has an indicative value only and is displayed along
 reports.

 All checks have to be listed in `org-lint--checkers'.

 Results are displayed in a special *Org Lint* buffer with a dedicated
 major mode, derived from `tabulated-list-mode'. In addition to the usual
 key-bindings inherited from it, C-j displays problematic line reported
 under point and RET jumps to it.

 Checks currently implemented are:

   - duplicates CUSTOM_ID properties
   - duplicate NAME values
   - duplicate targets
   - duplicate footnote definitions
   - orphaned affiliated keywords
   - obsolete affiliated keywords
   - missing language in src blocks
   - NAME values with a colon
   - wrong header arguments in src blocks
   - misuse of CATEGORY keyword
   - coderef links with unknown destination
   - custom-id links with unknown destination
   - fuzzy links with unknown destination
   - id links with unknown destination
   - links to non-existent local files
   - special properties in properties drawer
   - obsolete syntax for PROPERTIES drawers
   - missing definition for footnote references
   - missing reference for footnote definitions
   - non-footnote definitions in footnote section
   - probable invalid keywords
   - invalid blocks
   - probable incomplete drawers
   - obsolete QUOTE section

 Since it relies on lexical binding, `pcase' and `string-prefix-p', it
 cannot be added to Org 8.3, but can make it into Org 8.4, if deemed
 useful enough.

 Feedback welcome.


 Regards,

Hi Nicolas,

I have finally made some time to test this.  I get some
unexpected warnings:

   79 low   Unknown value myfile.R for header :tangle
  192 low   Unknown value none for header :results
22985 low   Unknown value never-export for header :eval

Thanks for this very useful tool!

Thanks,
Andreas




Re: [O] [RFC] Org linting library

2015-05-19 Thread Andreas Leha
Hi Rainer,

Rainer M Krug rai...@krugs.de writes:
 Nicolas Goaziou m...@nicolasgoaziou.fr writes:

 Hello,

 The following library implements linting for Org syntax. The sole public
 function is `org-lint', which see.

 Internally, the library defines a new structure: `org-lint-checker',
 with the following slots:

   - NAME: Unique check identifier, as a symbol. The check is done
 calling the function `org-lint-NAME' with one mandatory argument,
 the parse tree describing the current Org buffer. Such function
 calls are wrapped within a `save-excursion' and point is always at
 `point-min'. Its return value has to be an alist (POSITION MESSAGE)
 when POSITION refer to the buffer position of the error, as an
 integer, and MESSAGE is a strings describing the error.

   - DESCRIPTION: Summary about the check, as a string.

   - CATEGORIES: Categories relative to the check, as a list of symbol.
 They are used for filtering when calling `org-lint'. Checkers not
 explicitly associated to a category are collected in the `default'
 one.

   - TRUST: The trust level one can have in the check. It is either `low'
 or `high', depending on the heuristics implemented and the nature of
 the check. This has an indicative value only and is displayed along
 reports.

 All checks have to be listed in `org-lint--checkers'.

 Results are displayed in a special *Org Lint* buffer with a dedicated
 major mode, derived from `tabulated-list-mode'. In addition to the usual
 key-bindings inherited from it, C-j displays problematic line reported
 under point and RET jumps to it.

 Checks currently implemented are:

   - duplicates CUSTOM_ID properties
   - duplicate NAME values
   - duplicate targets
   - duplicate footnote definitions
   - orphaned affiliated keywords
   - obsolete affiliated keywords
   - missing language in src blocks
   - NAME values with a colon
   - wrong header arguments in src blocks
   - misuse of CATEGORY keyword
   - coderef links with unknown destination
   - custom-id links with unknown destination
   - fuzzy links with unknown destination
   - id links with unknown destination
   - links to non-existent local files
   - special properties in properties drawer
   - obsolete syntax for PROPERTIES drawers
   - missing definition for footnote references
   - missing reference for footnote definitions
   - non-footnote definitions in footnote section
   - probable invalid keywords
   - invalid blocks
   - probable incomplete drawers
   - obsolete QUOTE section

 Since it relies on lexical binding, `pcase' and `string-prefix-p', it
 cannot be added to Org 8.3, but can make it into Org 8.4, if deemed
 useful enough.


 This sounds very interesting and I would like to try it out. I
 understand that it can't be put into master, but could it be put into a
 branch?

 This would make testing a bit easier.


It is.  The branch is called `wip-lint'.

Regards,
Andreas




Re: [O] [RFC] Org linting library

2015-05-19 Thread Rainer M Krug
Nicolas Goaziou m...@nicolasgoaziou.fr writes:

 Hello,

 The following library implements linting for Org syntax. The sole public
 function is `org-lint', which see.

 Internally, the library defines a new structure: `org-lint-checker',
 with the following slots:

   - NAME: Unique check identifier, as a symbol. The check is done
 calling the function `org-lint-NAME' with one mandatory argument,
 the parse tree describing the current Org buffer. Such function
 calls are wrapped within a `save-excursion' and point is always at
 `point-min'. Its return value has to be an alist (POSITION MESSAGE)
 when POSITION refer to the buffer position of the error, as an
 integer, and MESSAGE is a strings describing the error.

   - DESCRIPTION: Summary about the check, as a string.

   - CATEGORIES: Categories relative to the check, as a list of symbol.
 They are used for filtering when calling `org-lint'. Checkers not
 explicitly associated to a category are collected in the `default'
 one.

   - TRUST: The trust level one can have in the check. It is either `low'
 or `high', depending on the heuristics implemented and the nature of
 the check. This has an indicative value only and is displayed along
 reports.

 All checks have to be listed in `org-lint--checkers'.

 Results are displayed in a special *Org Lint* buffer with a dedicated
 major mode, derived from `tabulated-list-mode'. In addition to the usual
 key-bindings inherited from it, C-j displays problematic line reported
 under point and RET jumps to it.

 Checks currently implemented are:

   - duplicates CUSTOM_ID properties
   - duplicate NAME values
   - duplicate targets
   - duplicate footnote definitions
   - orphaned affiliated keywords
   - obsolete affiliated keywords
   - missing language in src blocks
   - NAME values with a colon
   - wrong header arguments in src blocks
   - misuse of CATEGORY keyword
   - coderef links with unknown destination
   - custom-id links with unknown destination
   - fuzzy links with unknown destination
   - id links with unknown destination
   - links to non-existent local files
   - special properties in properties drawer
   - obsolete syntax for PROPERTIES drawers
   - missing definition for footnote references
   - missing reference for footnote definitions
   - non-footnote definitions in footnote section
   - probable invalid keywords
   - invalid blocks
   - probable incomplete drawers
   - obsolete QUOTE section

 Since it relies on lexical binding, `pcase' and `string-prefix-p', it
 cannot be added to Org 8.3, but can make it into Org 8.4, if deemed
 useful enough.


This sounds very interesting and I would like to try it out. I
understand that it can't be put into master, but could it be put into a
branch?

This would make testing a bit easier.

Thanks,

Rainer

 Feedback welcome.


 Regards,

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :   +33 - (0)9 53 10 27 44
Cell:   +33 - (0)6 85 62 59 98
Fax :   +33 - (0)9 58 10 27 44

Fax (D):+49 - (0)3 21 21 25 22 44

email:  rai...@krugs.de

Skype:  RMkrug

PGP: 0x0F52F982


signature.asc
Description: PGP signature


Re: [O] [RFC] Org linting library

2015-05-19 Thread Nicolas Goaziou
Hello,

Andreas Leha andreas.l...@med.uni-goettingen.de writes:

 I have finally made some time to test this. I get some
 unexpected warnings:

79 low   Unknown value myfile.R for header :tangle
   192 low   Unknown value none for header :results

Make sure you rebased the wip-lint branch on top of master.

 22985 low   Unknown value never-export for header :eval

I added it to allowed value. You need to update Org.

 Thanks for this very useful tool!

Thanks for the feedback.


Regards,

-- 
Nicolas Goaziou



Re: [O] [RFC] Org linting library

2015-05-19 Thread Andreas Leha
Hi Nicolas,

Nicolas Goaziou m...@nicolasgoaziou.fr writes:
 I have finally made some time to test this. I get some
 unexpected warnings:

79 low   Unknown value myfile.R for header :tangle
   192 low   Unknown value none for header :results

 Make sure you rebased the wip-lint branch on top of master.

 22985 low   Unknown value never-export for header :eval

 I added it to allowed value. You need to update Org.


I just pulled and rebased again.  The never-export issue is
gone, indeed. The others are still there.  What am I missing
here?

Thanks,
Andreas




Re: [O] [RFC] Org linting library

2015-05-19 Thread Nicolas Goaziou
Rainer M Krug rai...@krugs.de writes:

 This sounds very interesting and I would like to try it out. I
 understand that it can't be put into master, but could it be put into a
 branch?

It already lives in wip-lint branch.

Regards,



Re: [O] [RFC] Org linting library

2015-05-19 Thread Andreas Leha
Hi Nicolas,

Nicolas Goaziou m...@nicolasgoaziou.fr writes:
 Andreas Leha andreas.l...@med.uni-goettingen.de writes:

 I just pulled and rebased again.  The never-export issue is
 gone, indeed. The others are still there.  What am I missing
 here?

 Nothing. I overlooked a typo. It should be fixed in wip-lint.

Thanks.  Now the :tangle header argument does not produce a
warning.

But I still get

--8---cut here---start-8---
191 low Unknown value none for header :results
--8---cut here---end---8---


Ahh, and one more thing: The :tangle property in my test case was set
buffer wide through

--8---cut here---start-8---
#+PROPERTY: header-args:R :tangle myfile.R
--8---cut here---end---8---

But still, it produced a warning for each code block.  It would
be nicer if that warning was issued only once, IMO.  But that is
very minor.

Regards,
Andreas




Re: [O] [RFC] Org linting library

2015-05-19 Thread Andreas Leha
Hi Nicolas,

Nicolas Goaziou m...@nicolasgoaziou.fr writes:
 Andreas Leha andreas.l...@med.uni-goettingen.de writes:

 But I still get

 191 low Unknown value none for header :results

 Could you show an ECM? I cannot reproduce it.


Sure:

--8---cut here---start-8---
* Test code block names

#+name: test
#+begin_src R :results none
1:10
#+end_src
--8---cut here---end---8---

Tested with emacs -Q with the same result:

--8---cut here---start-8---
 4 low   Unknown value none for header :results
--8---cut here---end---8---

Regards,
Andreas




Re: [O] [RFC] Org linting library

2015-05-19 Thread Nicolas Goaziou
Andreas Leha andreas.l...@med.uni-goettingen.de writes:

 * Test code block names

 #+name: test
 #+begin_src R :results none
 1:10
 #+end_src

OK. It was a R-specific bug. It should now be fixed.

Thank you.

Regards,



Re: [O] [RFC] Org linting library

2015-05-19 Thread Andreas Leha
Hi Nicolas,

Nicolas Goaziou m...@nicolasgoaziou.fr writes:
 Andreas Leha andreas.l...@med.uni-goettingen.de writes:

 * Test code block names

 #+name: test
 #+begin_src R :results none
 1:10
 #+end_src

 OK. It was a R-specific bug. It should now be fixed.


Thank you!  Fix confirmed.  The last warning is gone.

Thanks,
Andreas




Re: [O] [RFC] Org linting library

2015-05-19 Thread Nicolas Goaziou
Andreas Leha andreas.l...@med.uni-goettingen.de writes:

 But I still get

 191 low Unknown value none for header :results

Could you show an ECM? I cannot reproduce it.

Regards,



Re: [O] [RFC] Org linting library

2015-05-19 Thread Nicolas Goaziou
Andreas Leha andreas.l...@med.uni-goettingen.de writes:

 I just pulled and rebased again.  The never-export issue is
 gone, indeed. The others are still there.  What am I missing
 here?

Nothing. I overlooked a typo. It should be fixed in wip-lint.

Thank you.

Regards,



Re: [O] [RFC] Org linting library

2015-04-27 Thread Doug Lewan

 -Original Message-
 On
 Behalf Of Nicolas Goaziou
 Sent: Sunday, 2015 April 19 09:32
 To: Org Mode List
 Subject: [O] [RFC] Org linting library
 
 Hello,
 
 The following library implements linting for Org syntax. The sole
 public
 function is `org-lint', which see.
 Nicolas Goaziou
 0x80A93738
[Doug Lewan] 

Very cool. Thank you.


-- 
,Doug
Douglas Lewan
Shubert Ticketing
(201) 489-8600 ext 224 or ext 4335

The human brain is the most complex thing known to man, according to the human 
brain.



Re: [O] [RFC] Org linting library

2015-04-26 Thread Nicolas Goaziou


Sebastien Vauban sva-news-D0wtAvR13HarG/idocf...@public.gmane.org
writes:

 Could `org-lint' return a success/fail indication, so that we could
 write something along in an export hook:

 (if (org-lint)
 ... continue with export ...
   ... stop with message or display the lint buffer ...)

 As well, could the buffer be hidden (or killed) if it's empty?

When called non-interactively `org-lint' returns the reports, as an
alist or nil, so it can be used as a predicate.

Regards,




Re: [O] [RFC] Org linting library

2015-04-23 Thread Sebastien Vauban
Nicolas Goaziou wrote:
 Here's another update. I added a few more tests.

 If there's no more bug report or feedback, I'll simply put it in
 a wip-lint branch until Org 8.4 starts its development cycle.

Could `org-lint' return a success/fail indication, so that we could
write something along in an export hook:

--8---cut here---start-8---
(if (org-lint)
... continue with export ...
  ... stop with message or display the lint buffer ...)
--8---cut here---end---8---

As well, could the buffer be hidden (or killed) if it's empty?

Best regards,
  Seb

-- 
Sebastien Vauban




Re: [O] [RFC] Org linting library

2015-04-23 Thread Eric Abrahamsen
Nicolas Goaziou m...@nicolasgoaziou.fr writes:

 Here's another update. I added a few more tests.

 If there's no more bug report or feedback, I'll simply put it in
 a wip-lint branch until Org 8.4 starts its development cycle.

This is handy! No bugs to report.




Re: [O] [RFC] Org linting library

2015-04-22 Thread Nicolas Goaziou
Here's another update. I added a few more tests.

If there's no more bug report or feedback, I'll simply put it in
a wip-lint branch until Org 8.4 starts its development cycle.

Regards,



org-lint.el
Description: application/emacs-lisp


Re: [O] [RFC] Org linting library

2015-04-22 Thread Sebastien Vauban
Hello Nicolas,

Nicolas Goaziou wrote:
 Here's another update. I added a few more tests.

 If there's no more bug report or feedback, I'll simply put it in
 a wip-lint branch until Org 8.4 starts its development cycle.

I'd like to enforce org-lint on all my Org docs, either in a find-file
hook or before export, for example.

Can't you put it in master as well?

Best regards,
  Seb

-- 
Sebastien Vauban




Re: [O] [RFC] Org linting library

2015-04-22 Thread Nicolas Goaziou


Sebastien Vauban sva-news-D0wtAvR13HarG/idocf...@public.gmane.org
writes:

 I'd like to enforce org-lint on all my Org docs, either in a find-file
 hook or before export, for example.

 Can't you put it in master as well?

No, I can't. 

As explained in the original post, org-lint.el requires at least Emacs
24.3 (lexical binding, pcase, tabulated-list-mode...) whereas Org 8.3 is
expected to be Emacs 23 compatible.


Regards,




Re: [O] [RFC] Org linting library

2015-04-20 Thread Nicolas Goaziou
Charles C. Berry ccbe...@ucsd.edu writes:

  - orphaned affiliated keywords

 This generates an orphaned keyword warning, but seems innocuous and is 
 what babel renders.

 #+NAME: abc
 #+BEGIN_SRC emacs-lisp
 nil #+END_SRC

 #+RESULTS: abc

Indeed, it is innocuous. It is meant to catch, e.g.,

  #+CAPTION: my table

  | table with a spurious newline above |

This check has a low trust level so false positive are OK.

  - wrong header arguments in src blocks

 IFF the header args are in the #+BEGIN_SRC line.

 #+HEADER lines and header-arg properties are not screened AFAICS.

Indeed. Here's an update.

Thank you for the feedback.


Regards,
From 1b6b392f6e8e1bba68e07a36e7f9afc792e699a2 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou m...@nicolasgoaziou.fr
Date: Wed, 15 Apr 2015 22:24:15 +0200
Subject: [PATCH] Implement Org linting

* lisp/org-lint.el: New file.
---
 lisp/org-lint.el | 768 +++
 1 file changed, 768 insertions(+)
 create mode 100644 lisp/org-lint.el

diff --git a/lisp/org-lint.el b/lisp/org-lint.el
new file mode 100644
index 000..c818ff1
--- /dev/null
+++ b/lisp/org-lint.el
@@ -0,0 +1,768 @@
+;;; org-lint.el --- Linting for Org documents-*- lexical-binding: t; -*-
+
+;; Copyright (C) 2015  Free Software Foundation
+
+;; Author: Nicolas Goaziou m...@nicolasgoaziou.fr
+;; Keywords: outlines, hypermedia, calendar, wp
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see http://www.gnu.org/licenses/.
+
+;;; Commentary:
+
+;; This library implements linting for Org syntax.  The sole public
+;; function is `org-lint', which see.
+
+;; Internally, the library defines a new structure:
+;; `org-lint-checker', with the following slots:
+
+;;   - NAME: Unique check identifier, as a symbol.  The check is done
+;; calling the function `org-lint-NAME' with one mandatory
+;; argument, the parse tree describing the current Org buffer.
+;; Such function calls are wrapped within a `save-excursion' and
+;; point is always at `point-min'.  Its return value has to be an
+;; alist (POSITION MESSAGE) when POSITION refer to the buffer
+;; position of the error, as an integer, and MESSAGE is a strings
+;; describing the error.
+
+;;   - DESCRIPTION: Summary about the check, as a string.
+
+;;   - CATEGORIES: Categories relative to the check, as a list of
+;; symbol.  They are used for filtering when calling `org-lint'.
+;; Checkers not explicitly associated to a category are collected
+;; in the `default' one.
+
+;;   - TRUST: The trust level one can have in the check.  It is either
+;; `low' or `high', depending on the heuristics implemented and
+;; the nature of the check.  This has an indicative value only and
+;; is displayed along reports.
+
+;; All checks have to be listed in `org-lint--checkers'.
+
+;; Results are displayed in a special *Org Lint* buffer with
+;; a dedicated major mode, derived from `tabulated-list-mode'.  In
+;; addition to the usual key-bindings inherited from it, C-j
+;; displays problematic line reported under point and RET jumps to
+;; it.
+
+;; Checks currently implemented are:
+
+;;   - duplicates CUSTOM_ID properties
+;;   - duplicate NAME values
+;;   - duplicate targets
+;;   - duplicate footnote definitions
+;;   - orphaned affiliated keywords
+;;   - obsolete affiliated keywords
+;;   - missing language in src blocks
+;;   - NAME values with a colon
+;;   - wrong header arguments in src blocks
+;;   - misuse of CATEGORY keyword
+;;   - coderef links with unknown destination
+;;   - custom-id links with unknown destination
+;;   - fuzzy links with unknown destination
+;;   - id links with unknown destination
+;;   - links to non-existent local files
+;;   - SETUPFILE keywords with non-existent file parameter
+;;   - INCLUDE keywords with wrong link parameter
+;;   - special properties in properties drawer
+;;   - obsolete syntax for PROPERTIES drawers
+;;   - missing definition for footnote references
+;;   - missing reference for footnote definitions
+;;   - non-footnote definitions in footnote section
+;;   - probable invalid keywords
+;;   - invalid blocks
+;;   - probable incomplete drawers
+;;   - obsolete QUOTE section
+
+
+;;; Code:
+
+(require 'cl-lib)
+(require 'org-element)
+(require 'ox)
+(require 'ob)
+
+
+;;; Checkers
+
+(cl-defstruct (org-lint-checker (:copier nil))
+  (name 

Re: [O] [RFC] Org linting library

2015-04-20 Thread Nicolas Goaziou
Marco Wahl marcowahls...@gmail.com writes:

 I think it's too much that org-lint tries to follow ssh links.

It doesn't follow remote paths.

 2278 low   Link to non-existent local file 
 ///ssh:root@127.0.0.1#:/etc/httpd/conf/httpd.conf
  ^   ^^^

There's a bug in the parser, which doesn't know how to handle
/ssh:root@127.0.0.1#:/etc/httpd/conf/httpd.conf.

It prefixes it with //, turning it into
///ssh:root@127.0.0.1#:/etc/httpd/conf/httpd.conf. Then `org-lint'
thinks it's a local file.

The problem should be fixed in master, so you need to update Org.

Thanks for the feedback.

Regards,



Re: [O] [RFC] Org linting library

2015-04-19 Thread Marco Wahl
Hi!

Nicolas Goaziou m...@nicolasgoaziou.fr writes:

 The following library implements linting for Org syntax. The sole public
 function is `org-lint', which see.

Great, thanks a lot.  Already found some issues with some org-files.

 Results are displayed in a special *Org Lint* buffer with a dedicated
 major mode, derived from `tabulated-list-mode'. In addition to the usual
 key-bindings inherited from it, C-j displays problematic line reported
 under point and RET jumps to it.

Cool.

 Feedback welcome.

I think it's too much that org-lint tries to follow ssh links.  This
slowed down the org-linting considerably in my case.

#v+
2278 low   Link to non-existent local file 
///ssh:root@127.0.0.1#:/etc/httpd/conf/httpd.conf
#v-


My 2ct,  Marco
-- 
http://www.wahlzone.de
GPG: 0x49010A040A3AE6F2




Re: [O] [RFC] Org linting library

2015-04-19 Thread Charles C. Berry

On Sun, 19 Apr 2015, Nicolas Goaziou wrote:


Hello,

The following library implements linting for Org syntax. The sole public
function is `org-lint', which see.



Nice!

Comments below.


Internally, the library defines a new structure: `org-lint-checker',
with the following slots:



[snip]



Checks currently implemented are:

 - duplicates CUSTOM_ID properties
 - duplicate NAME values
 - duplicate targets
 - duplicate footnote definitions
 - orphaned affiliated keywords


This generates an orphaned keyword warning, but seems innocuous and is 
what babel renders.


#+NAME: abc
#+BEGIN_SRC emacs-lisp
nil
#+END_SRC

#+RESULTS: abc



 - obsolete affiliated keywords
 - missing language in src blocks
 - NAME values with a colon
 - wrong header arguments in src blocks


IFF the header args are in the #+BEGIN_SRC line.

#+HEADER lines and header-arg properties are not screened AFAICS.

[snip]

Chuck



Re: [O] [RFC] Org linting library

2015-04-19 Thread Rasmus
Hi,

Nicolas Goaziou m...@nicolasgoaziou.fr writes:

 Since it relies on lexical binding, `pcase' and `string-prefix-p', it
 cannot be added to Org 8.3, but can make it into Org 8.4, if deemed
 useful enough.

It looks like a great tool.  Especially given the fact that the org format
still seems to be developing.

Anyway, some very premature notes:

One venue that may worth pursuing is better error messages during export,
when links do not exist.  E.g. after a link fails to resolve, an org-lint
buffer is opened to ease tracking down the error.

Perhaps, org-lint should also check that INCLUDE keywords correctly
resolves, e.g. whether #section exits in file.org:

#+INCLUDE: file.org::#section 

Perhaps that would induce nasty recursions, though...

Thanks,
Rasmus

-- 
Enough with the bla bla!






Re: [O] [RFC] Org linting library

2015-04-19 Thread Nicolas Goaziou
Rasmus ras...@gmx.us writes:

 It looks like a great tool.  Especially given the fact that the org format
 still seems to be developing.

Indeed. We can use it as another channel for syntax deprecation.

 Anyway, some very premature notes:

 One venue that may worth pursuing is better error messages during export,
 when links do not exist.  E.g. after a link fails to resolve, an org-lint
 buffer is opened to ease tracking down the error.

I think the error message during export is as good as the one provided
by `org-lint', minus the line and the jump.

 Perhaps, org-lint should also check that INCLUDE keywords correctly
 resolves, e.g. whether #section exits in file.org:

 #+INCLUDE: file.org::#section

Good idea. I implemented it along with a check for SETUPFILE keywords.
Updated file attached.

 Perhaps that would induce nasty recursions, though...

`org-lint' only checks current document, it doesn't enter INCLUDE files,
so there's no danger here.

Thanks for the feedback.


Regards,

From 1b182320599a435de7ab85f64ba984d1e5ef4502 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou m...@nicolasgoaziou.fr
Date: Wed, 15 Apr 2015 22:24:15 +0200
Subject: [PATCH] Implement Org linting

* lisp/org-lint.el: New file.
---
 lisp/org-lint.el | 748 +++
 1 file changed, 748 insertions(+)
 create mode 100644 lisp/org-lint.el

diff --git a/lisp/org-lint.el b/lisp/org-lint.el
new file mode 100644
index 000..a514b8b
--- /dev/null
+++ b/lisp/org-lint.el
@@ -0,0 +1,748 @@
+;;; org-lint.el --- Linting for Org documents-*- lexical-binding: t; -*-
+
+;; Copyright (C) 2015  Free Software Foundation
+
+;; Author: Nicolas Goaziou m...@nicolasgoaziou.fr
+;; Keywords: outlines, hypermedia, calendar, wp
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see http://www.gnu.org/licenses/.
+
+;;; Commentary:
+
+;; This library implements linting for Org syntax.  The sole public
+;; function is `org-lint', which see.
+
+;; Internally, the library defines a new structure:
+;; `org-lint-checker', with the following slots:
+
+;;   - NAME: Unique check identifier, as a symbol.  The check is done
+;; calling the function `org-lint-NAME' with one mandatory
+;; argument, the parse tree describing the current Org buffer.
+;; Such function calls are wrapped within a `save-excursion' and
+;; point is always at `point-min'.  Its return value has to be an
+;; alist (POSITION MESSAGE) when POSITION refer to the buffer
+;; position of the error, as an integer, and MESSAGE is a strings
+;; describing the error.
+
+;;   - DESCRIPTION: Summary about the check, as a string.
+
+;;   - CATEGORIES: Categories relative to the check, as a list of
+;; symbol.  They are used for filtering when calling `org-lint'.
+;; Checkers not explicitly associated to a category are collected
+;; in the `default' one.
+
+;;   - TRUST: The trust level one can have in the check.  It is either
+;; `low' or `high', depending on the heuristics implemented and
+;; the nature of the check.  This has an indicative value only and
+;; is displayed along reports.
+
+;; All checks have to be listed in `org-lint--checkers'.
+
+;; Results are displayed in a special *Org Lint* buffer with
+;; a dedicated major mode, derived from `tabulated-list-mode'.  In
+;; addition to the usual key-bindings inherited from it, C-j
+;; displays problematic line reported under point and RET jumps to
+;; it.
+
+;; Checks currently implemented are:
+
+;;   - duplicates CUSTOM_ID properties
+;;   - duplicate NAME values
+;;   - duplicate targets
+;;   - duplicate footnote definitions
+;;   - orphaned affiliated keywords
+;;   - obsolete affiliated keywords
+;;   - missing language in src blocks
+;;   - NAME values with a colon
+;;   - wrong header arguments in src blocks
+;;   - misuse of CATEGORY keyword
+;;   - coderef links with unknown destination
+;;   - custom-id links with unknown destination
+;;   - fuzzy links with unknown destination
+;;   - id links with unknown destination
+;;   - links to non-existent local files
+;;   - SETUPFILE keywords with non-existent file parameter
+;;   - INCLUDE keywords with wrong link parameter
+;;   - special properties in properties drawer
+;;   - obsolete syntax for PROPERTIES drawers
+;;   - missing definition for footnote references
+;;   - missing reference for footnote definitions
+;;   -