Commit Graph

515 Commits

Author SHA1 Message Date
Nicolas Goaziou a540e894b6 org-element: Properly unescape data in export blocks
* lisp/org-element.el (org-element-export-block-parser): Remove commas
  in export blocks.
* testing/lisp/test-org-element.el (test-org-element/export-block-parser):
  Add test.
2016-05-13 17:55:30 +02:00
Nicolas Goaziou 716e339c96 Allow angular links within link descriptions
* lisp/org-element.el (org-element-object-restrictions):
(org-element--object-lex): Allow angular links as equivalent to plain
links in description.

* testing/lisp/test-org-element.el (test-org-element/link-parser): Add
  test.
2016-04-06 11:08:53 +02:00
Nicolas Goaziou dcfe011998 org-element: Fix inline src block parsing
* lisp/org-element.el (org-element--pair-curly-table): Fix typo.
* testing/lisp/test-org-element.el (test-org-element/inline-src-block-parser):
Add tests.

Reported-by: William Denton <wtd@pobox.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/105748>
2016-03-16 18:15:39 +01:00
Nicolas Goaziou 5d817df125 Merge branch 'maint' 2016-02-11 09:50:55 +01:00
Nicolas Goaziou 9f737bdf14 org-element: Fix search failed error in `org-element-context'
* lisp/org-element.el (org-element-context): Make sure point is on tag
  line before searching for it.

* testing/lisp/test-org-element.el (test-org-element/context): Add test.
  Small refactoring.

Reported-by: Kaushal Modi <kaushal.modi@gmail.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/105018>
2016-02-11 09:47:54 +01:00
Nicolas Goaziou 44e45d5284 Parse inline src blocks and babel calls with newlines
* lisp/org-element.el (org-element--pair-round-table):
(org-element--pair-curly-table): New variables.
(org-element-inline-babel-call-parser):
(org-element-inline-src-block-parser): Allow newline characters in
contents and parameters.

* testing/lisp/test-org-element.el (test-org-element/inline-babel-call-parser):
(test-org-element/inline-src-block-parser): Add test.
2016-02-10 15:40:10 +01:00
Nicolas Goaziou a1d9daa452 org-element: Fix src-block interpreter
* lisp/org-element.el (org-element-src-block-interpreter): Fix function
  according to previous change.
2016-02-10 14:11:48 +01:00
Nicolas Goaziou 111905ff84 org-element: Do not alter indentation upon parsing
* lisp/org-element.el (org-element-src-block-parser):
(org-element-example-block-parser): Do not remove any indentation when
  parsing the element.
* testing/lisp/test-org-element.el (test-org-element/src-block-parser):
* testing/lisp/test-org-element.el (test-org-element/src-block-parser):
  Update test.

Properly handling indentation requires knowing about
`org-src-preserve-indentation''s value.  This is out of the scope of the
parser.
2016-02-09 23:23:31 +01:00
Kyle Meyer 6aff8e3bf2 Merge branch 'maint' 2016-02-08 21:55:22 -05:00
Alan Mackenzie 5d95296029 Backport commit ec90220 from Emacs
Expunge "allow" + infinitive from source and doc, part 2.
ec90220ac1bd81437654d07b769819e1dcd24de5
Alan Mackenzie
Mon Jan 25 12:35:15 2016 +0000
2016-02-08 21:52:09 -05:00
Nicolas Goaziou 8003ef0453 Merge branch 'maint' 2016-02-01 00:19:37 +01:00
Nicolas Goaziou 0b97a55170 org-element: Disable cache for orgstruct-mode
* lisp/org-element.el (org-element--cache-active-p):
(org-element-cache-reset): Do not activate cache outside Org buffers,
even if using "orgstruct-mode".

Reported-by: "Mark A. Hershberger" <mah@nichework.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/104648>
2016-02-01 00:17:39 +01:00
Nicolas Goaziou 4c2b52bd8b org-element: Do not remove TAB characters from parsed text
* lisp/org-element.el (org-element--parse-objects): Do not remove TAB
  characters from plain text.
(org-element-normalize-contents): Handle TAB characters in indentation.

* testing/lisp/test-org-element.el (test-org-element/normalize-contents):
Update test.
2016-01-26 22:53:55 +01:00
Nicolas Goaziou af1bd190e3 org-element: Small speed-up
* lisp/org-element.el (org-element--parse-objects): Add an optional
  argument to avoid walking a secondary string twice.  Make less
  consing.
(org-element--parse-elements): Make less consing.
(org-element-headline-parser):
(org-element-inlinetask-parser):
(org-element-item-parser):
(org-element-parse-secondary-string): Apply changes.
2016-01-26 22:03:25 +01:00
Nicolas Goaziou 188823e372 org-element: Fix `org-element-set-contents'
* lisp/org-element.el (org-element-set-contents): Fix return value when
  element is empty. Also make sure to always return the element.
2016-01-26 22:03:25 +01:00
Kyle Meyer 034c176995 Merge branch 'maint' 2016-01-24 16:41:20 -05:00
Alan Mackenzie 347191042a Backport commit fbce475 from Emacs
Expunge "allow" + infinitive without direct object from source and doc.
fbce4757a874cc43806eb41b8637538b101c3c69
Alan Mackenzie
Sun Jan 24 20:30:39 2016 +0000
2016-01-24 16:35:22 -05:00
Nicolas Goaziou 1c8ed102e9 Merge branch 'maint' 2016-01-16 14:53:48 +01:00
Nicolas Goaziou 6e57a371ff Fix tags looking like plain links
* lisp/org-element.el (org-element-context): Do not look for objects
  within TODO keyword, priority cookie, comment keyword or tags.
* lisp/org.el (org-activate-tags): Fix regexp.

* testing/lisp/test-org-element.el (test-org-element/context): Add test.

Reported-by: John Kitchin <jkitchin@andrew.cmu.edu>
2016-01-16 14:50:25 +01:00
Nicolas Goaziou d85ff34086 Merge branch 'maint' 2016-01-14 09:41:22 +01:00
Nicolas Goaziou 7d0104f449 org-element: Fix footnote definition parsing
* lisp/org-element.el (org-element--footnote-separator): New variable.
(org-element-footnote-definition-parser): Handle footnotes with
affiliated keywords.

* testing/lisp/test-org-element.el (test-org-element/footnote-definition-parser):
Add test.
2016-01-14 09:40:43 +01:00
Kyle Meyer 6bc48c5f41 Update copyright years 2016-01-09 17:12:03 -05:00
Nicolas Goaziou 3694450320 Fix copyright years 2016-01-02 13:36:44 +01:00
Nicolas Goaziou 7dc6748452 Fix export blocks
* lisp/org-element.el (org-element-export-block-parser): Type is always
  stored in capitals.

* testing/lisp/test-ox.el (test-org-export/export-block): Add test.

Reported-by: Suvayu Ali <fatkasuvayu+linux@gmail.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/103921>
2016-01-02 11:53:24 +01:00
Nicolas Goaziou deafe56554 org-element: Ignore plain footnotes
* lisp/org-element.el (org-element--set-regexps):
(org-element-footnote-definition-interpreter):
(org-element-footnote-reference-parser):
(org-element-footnote-reference-interpreter): Do not consider [1]-like
constructs as footnotes anymore.

* lisp/ox.el (org-export-expand-include-keyword):
(org-export--prepare-file-contents): Apply changes to footnotes.

* doc/org.texi (Footnotes): Remove references to plain footnotes.

* testing/lisp/test-org-element.el (test-org-element/footnote-reference-parser):
(test-org-element/footnote-reference-interpreter):
* testing/lisp/test-ox.el (test-org-export/expand-include):
(test-org-export/expand-macro):
(test-org-export/get-footnote-number):
(test-org-export/collect-footnote-definitions):
(test-org-export/footnotes):
(test-org-export/fuzzy-link): Update tests.

Since it is possible to refer unambiguously to a label without the "fn:"
prefix, the latter becomes part of the syntax and no longer part of the
label.  In particular [fn:1] and [fn:label] are labelled, respectively,
"1" and "label".
2015-12-22 16:55:17 +01:00
Nicolas Goaziou 54318add34 Change export block syntax
* lisp/org-element.el (org-element-export-block-parser):
(org-element--current-element): Use new syntax for export blocks.
(org-element-block-name-alist): Remove.

* lisp/ox.el (org-export-register-backend):
(org-export-define-derived-backend): Remove :export-block keyword from
back-end's definition.
(org-export-expand-include-keyword): Use new syntax for include
keywords.

* lisp/ox-ascii.el (ascii):
* lisp/ox-beamer.el (beamer):
* lisp/ox-html.el (html):
* lisp/ox-latex.el (latex):
(org-latex-prefer-user-labels):
* lisp/ox-man.el (man):
* lisp/ox-md.el (md):
* lisp/ox-odt.el (odt):
* lisp/ox-texinfo.el (texinfo): Propagate changes to "ox.el".

* lisp/ob-core.el (org-babel-insert-result):
* lisp/ob-haskell.el (org-babel-haskell-export-to-lhs): Use new syntax.

* lisp/org.el (org-structure-template-alist): Use new syntax.
(org-protecting-blocks): Add "export" to protected blocks.  Remove
  back-ends blocks, which are now special blocks.
(org-fontify-meta-lines-and-blocks-1): Fontify correctly new blocks.

* lisp/org-footnote.el (org-footnote-forbidden-blocks):
* lisp/org-list.el (org-list-forbidden-blocks): Add "export" to
  forbidden blocks.  Remove back-ends blocks, which are now special
  blocks.

* contrib/lisp/ox-extra.el: Update comments.

* testing/lisp/test-org-element.el (test-org-element/export-block-parser):
(test-org-element/export-block-interpreter):
* testing/lisp/test-ob.el (test-ob/org-babel-remove-result--results-html):
(test-ob/org-babel-remove-result--results-latex):
* testing/lisp/test-ox.el (test-org-export/expand-include): Update tests.

Export blocks are explicitly marked as such at the syntax level to
disambiguate their parsing from special blocks.  The new syntax is

  #+BEGIN_EXPORT backend
  ...
  #+END_EXPORT

instead of

  #+BEGIN_backend
  ...
  #+END_backend

As a consequence, =INCLUDE= keywords syntax is modified, e.g.,

  #+INCLUDE: "file.org" HTML

becomes

  #+INCLUDE: "file.org" export html
2015-12-20 21:56:27 +01:00
Nicolas Goaziou d24a9b7645 Change references from Org 8.4 to 9.0
According to <http://mid.gmane.org/87oai4w69i.fsf@gnu.org>, master is
the root for Org 9.0, not Org 8.4.
2015-11-07 17:11:48 +01:00
Aaron Ecay e4cd3dd22b Remove some home-grown copies of cl-lib functions.
* lisp/org.el (org-count, org-remove-if, org-remove-if-not):
(org-reduce, org-every, org-some): Obsolete, use cl-lib versions
everywhere.
(org-sublist): Reimplement in terms of `cl-subseq'; make obsolete.
2015-11-06 12:50:40 +00:00
Aaron Ecay 07e16c2fc5 Use setq-local and defvar-local.
* lisp/org-macs.el (org-set-local): Remove.  All callers changed.
* lisp/org-clock.el:
* lisp/org-colview.el:
* lisp/org-macro.el:
* lisp/org-mouse.el:
* lisp/org-table.el:
* lisp/org.el: Use defvar-local.
* lisp/org-agenda.el:
* lisp/org-capture.el:
* lisp/org-crypt.el:
* lisp/org-ctags.el:
* lisp/org-plot.el:
* lisp/org.el:
* lisp/ox-odt.el:
* lisp/ox.el: Use setq-local instead of set + make-local-variable.

Changes in contrib:

* contrib/lisp/org-colview-xemacs.el (org-colview-xemacs-set-local): New
macro. Adjust old callers of `org-set-local'.
2015-11-05 16:47:38 +00:00
Nicolas Goaziou 707fbc3778 Merge branch 'maint' 2015-10-16 23:20:57 +02:00
Nicolas Goaziou 9de1ee1b6f org-element: Fix parsing of planning in inline tasks
* lisp/org-element.el (org-element--next-mode): Line following an
  inlinetask can be a planning.
* testing/lisp/test-org-element.el (test-org-element/inlinetask-parser):
  Update test.

Reported-by: Gregor Zattler <telegraph@gmx.net>
<http://permalink.gmane.org/gmane.emacs.orgmode/101958>
2015-10-16 23:19:06 +02:00
Nicolas Goaziou 348890f79b org-element: Remove now useless function
* lisp/org-element.el (org-element-remove-indentation): Mark as
  an obsolete replacement for `org-remove-indentation'.
(org-element-example-block-parser):
(org-element-example-block-interpreter):
(org-element-src-block-parser):
* lisp/ox.el (org-export-unravel-code): Apply obsolescence.
2015-10-08 16:25:29 +02:00
Nicolas Goaziou 6f2579b4fc Merge branch 'maint' 2015-09-26 00:14:36 +02:00
Nicolas Goaziou fd8a18151a Fix file uri
* lisp/ox.el (org-export-file-uri): Properly expand file uri.

* lisp/org-element.el (org-element-link-parser): Start path with "//"
  when referring to a remote file.

* testing/lisp/test-ox.el (test-org-export/file-uri): Add test.

Reported-by: AW <alexander.willand@t-online.de>
<http://permalink.gmane.org/gmane.emacs.orgmode/101471>
2015-09-26 00:11:42 +02:00
Kyle Meyer 5362f63fad Merge branch 'maint' 2015-09-21 18:46:41 -04:00
Paul Eggert c86a10b0bc Backport commit 284c470 from Emacs master branch
Backslash cleanup in Elisp source files
284c470ef752967fcd8bae6a450dc138462b1e49
Paul Eggert
Thu Sep 17 16:09:39 2015 -0700
2015-09-21 18:38:39 -04:00
Kyle Meyer d77a52a502 Backport quote-related commits from Emacs
These changes are the combination of the commits below (in order
applied).  Unlike other backports, these are applied in one commit
because they are closely related and because some of the later commits
reverse changes in earlier commits.  Changes to message and help quote
display for Emacs 25 seem to be here to stay.  The quote protections are
required to ensure grave accents and apostrophes are displayed as
intended in Emacs 25, and they should not affect earlier versions.

  Quoting fixes in lisp/org
  6cd2629bd1b3ce77d29ac28e29237c94a4197116
  Paul Eggert
  Mon Aug 31 00:29:40 2015 -0700

  More-conservative ‘format’ quote restyling
  fbb5531fa11d13854b274d28ccd329c9b6652cfc
  Paul Eggert
  Sun Aug 23 22:39:06 2015 -0700

  Prefer directed to neutral quotes
  875a5d0ead827d3da32ecbd30e739a29f07bbc87
  Paul Eggert
  Mon Aug 24 23:57:25 2015 -0700

  Escape ` and ' in doc
  19532d147b431a4fe34f088d6de07891c48e2c5c
  Paul Eggert
  Tue Sep 1 18:23:21 2015 -0700

  Fix some more docstring etc. quoting problems
  26bd978d87dfbf9baa115cd961a67d42b416c4bf
  Paul Eggert
  Thu Sep 3 15:32:54 2015 -0700

  Go back to grave quoting in source-code docstrings etc.
  6afef3f6ca2f3009c722b84e249903b7f807b044
  Paul Eggert
  Mon Sep 7 16:09:27 2015 -0700
2015-09-21 18:38:18 -04:00
Nicolas Goaziou 8c85c99052 Merge branch 'maint' 2015-09-10 17:56:37 +02:00
Nicolas Goaziou bc322fc57d org-element: Fix short caption parsing
* lisp/org-element.el (org-element--collect-affiliated-keywords): Fix
  short caption parsing.

Reported-by: Suvayu Ali <fatkasuvayu+linux@gmail.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/101025>
2015-09-10 17:55:26 +02:00
Nicolas Goaziou 258966a15d Merge branch 'maint' 2015-09-01 21:34:06 +02:00
Nicolas Goaziou 7c49b7a66c org-element: Fix cache bug
* lisp/org-element.el (org-element-cache-reset): Avoid using
  `org-element--cache-active-p'.
(org-element--cache-active-p): Check cache is properly initialized.
2015-09-01 21:32:47 +02:00
Nicolas Goaziou 016d84fe8f Merge branch 'maint' 2015-08-19 16:24:55 +02:00
Nicolas Goaziou eb62138ed0 Fix 93b73bd
* lisp/org-element.el (org-element-link-parser): Fix 93b73bd.
2015-08-19 16:24:34 +02:00
Nicolas Goaziou 3733658bb5 Merge branch 'maint' 2015-08-19 15:23:47 +02:00
Nicolas Goaziou 93b73bd303 Fix translated link
* lisp/org-element.el (org-element-link-parser): Call
  `org-link-translation-function' if required.
(org-element-link-interpreter): Build link from type and path instead of
simply pasting raw value.

* lisp/org.el (org-translate-link): Call parser to extract proper path
  and type.

* testing/lisp/test-org-element.el (test-org-element/link-interpreter):
  Add test.

Reported-by: Sergei Nosov <sergei.nosov@gmail.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/100227>
2015-08-19 15:22:22 +02:00
Nicolas Goaziou 40b4ef3345 org-element: Use pcase instead of case
* lisp/org-element.el (org-element--set-regexps):
(org-element-copy):
(org-element-item-interpreter):
(org-element-latex-fragment-parser):
(org-element-timestamp-parser):
(org-element-timestamp-interpreter):
(org-element--next-mode):
(org-element--object-lex):
(org-element--cache-find):
(org-element--cache-after-change): Use pcase instead of case.
2015-08-17 10:58:57 +02:00
Nicolas Goaziou 425f4a8e60 org-element: Activate lexical binding
* lisp/org-element.el (org-element-section-parser):
(org-element-planning-interpreter):
(org-element-table-row-parser):
(org-element-timestamp-interpreter): Silence byte-compiler.  Tiny
refactoring.

(org-element--parse-objects): Tiny refactoring.

(org-element-interpret-data): Refactor code.
(org-element--interpret-data-1): Remove function.

(org-element-center-block-interpreter):
(org-element-item-parser):
(org-element-plain-list-interpreter):
(org-element-property-drawer-interpreter):
(org-element-quote-block-interpreter):
(org-element-section-interpreter):
(org-element-babel-call-interpreter):
(org-element-clock-interpreter):
(org-element-comment-interpreter):
(org-element-comment-block-interpreter):
(org-element-diary-sexp-interpreter):
(org-element-example-block-interpreter):
(org-element-export-block-interpreter):
(org-element-fixed-width-interpreter):
(org-element-horizontal-rule-interpreter):
(org-element-keyword-interpreter):
(org-element-latex-environment-interpreter):
(org-element-node-property-interpreter):
(org-element-paragraph-interpreter):
(org-element-src-block-interpreter):
(org-element-verse-block-interpreter):
(org-element-bold-interpreter):
(org-element-code-interpreter):
(org-element-entity-interpreter):
(org-element-export-snippet-interpreter):
(org-element-inline-babel-call-interpreter):
(org-element-inline-src-block-interpreter):
(org-element-italic-interpreter):
(org-element-latex-fragment-interpreter):
(org-element-line-break-interpreter):
(org-element-link-parser):
(org-element-macro-interpreter):
(org-element-radio-target-interpreter):
(org-element-statistics-cookie-interpreter):
(org-element-strike-through-interpreter):
(org-element-table-cell-interpreter):
(org-element-target-interpreter):
(org-element-underline-interpreter):
(org-element-verbatim-interpreter):
(org-element-map):
(org-element-normalize-contents): Silence byte-compiler.
2015-08-14 23:10:08 +02:00
Nicolas Goaziou f63d76872c Fix links with newline characters
* lisp/org-element.el (org-element-link-parser): Correctly parse links
  with newline characters.

* lisp/org.el (org-make-link-regexps): Allow newline characters within
  angle links.
(org-activate-angle-links): Support multiline angle links.

* testing/lisp/test-org-element.el (test-org-element/link-parser):
  Update tests.

As a rule of thumb, any newline character and all surrounding
whitespaces are treated as a single space in a bracket link.  They are
removed in angle links.
2015-08-04 16:40:25 +02:00
Nicolas Goaziou 1221715a74 org-element: Fix parsing recursive babel calls
* lisp/org-element.el (org-element-babel-call-parser): Fix parsing
  recursive babel calls.

* testing/lisp/test-org-element.el (test-org-element/babel-call-parser): Add test.
2015-07-03 00:33:45 +02:00
Nicolas Goaziou cedef74216 org-element: Minimize false positives when matching a table.el table
* lisp/org-element.el (org-element--set-regexps): Improve regexp for
  table.el tables.
2015-06-29 14:49:00 +02:00
Nicolas Goaziou 106ca75307 org-element: Fix table and table.el mix
* lisp/org-element.el (org-element-table-parser): Properly parse an
  Org table followed by a line starting with a "+".

* testing/lisp/test-org-element.el (test-org-element/context): Fix
  test.
2015-06-28 21:09:16 +02:00
Nicolas Goaziou aa9c4bfb6f org-element: Remove dependency on `org-at-table-p'
* lisp/org-element.el (org-element-table-parser): Do not call
  `org-at-table.el-p'.
(org-element--current-element): Do not call `org-at-table-p'.
2015-06-28 11:37:13 +02:00
Nicolas Goaziou 7ee2d93122 org-element: Implement `org-element-create'
* lisp/org-element.el (org-element-create): New function.
(org-element-adopt-elements): Small refactoring.
2015-06-23 15:22:03 +02:00
Nicolas Goaziou 182ff104b7 org-element: Fix cache bug for orphaned elements
* lisp/org-element.el (org-element--cache-sync-requests): Remove a now
  useless element from requests
(org-element--cache-submit-request): Apply change to sync request.
(org-element--cache-process-request): Apply change to sync requests.
Fix removal of orphaned elements, i.e., elements not affected by
a change, but with an ancestor that was.

* testing/lisp/test-org-element.el (test-org-element/cache): Add test.

Reported-by: Suvayu Ali <fatkasuvayu+linux@gmail.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/98260>
2015-06-14 14:52:04 +02:00
Nicolas Goaziou 2e5981e003 org-element: Fix structure for list elements containing a drawer
* lisp/org-element.el (org-element--list-struct): Fix return value
  when a drawer is found within an item.
2015-06-09 17:05:21 +02:00
Nicolas Goaziou fe0f30e022 org-element: Tiny refactoring
* lisp/org-element.el (org-element-link-parser): Use `string-to-char'
  instead of (aref STRING 0).
2015-05-13 12:37:53 +02:00
Titus von der Malsburg 6779f8f424 Fix detection of latex fragments
* org-element.el (org-element-latex-fragment-parser):
* org.el (org-latex-regexps): Fix the detection of latex
  fragments.  Uses syntax tables to detect whitespaces and punctuation
  marks following the final $ sign.

In order to qualify as a math delimiter, the final $ sign of a LaTeX
fragment has to be followed by a whitespace or punctuation mark but the
regexp used in the previous code matched only a small number of
punctuation marks and therefore missed some latex fragments.
2015-05-09 09:36:53 +02:00
Nicolas Goaziou 7af8ce6cb3 org-element: Fix parsing bug in items
* lisp/org-element.el (org-element-item-parser): When contents are
  empty, do not find a zero-width paragraph within.
2015-05-07 23:45:41 +02:00
Nicolas Goaziou 2777b3fd4c org-element: Tolerate missing space after colon in keywords
* lisp/org-element.el (org-element--set-regexps):
(org-element--affiliated-re): Tolerate missing space after colon in
keywords.
2015-05-01 09:23:35 +02:00
Nicolas Goaziou eb77fed33f org-element: Fix parapraph parsing
* lisp/org-element.el (org-element--set-regexps): Refine
  `org-element-paragraph-separate'.
(org-element-paragraph-parser): Fix paragraph parsing when followed by
a dual keyword or an ill-formed latex environment.

* testing/lisp/test-org-element.el (test-org-element/paragraph-parser):
  Add tests.

Reported-by: Jacob Gerlach <jacobgerlach@gmail.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/97256>
2015-04-27 22:27:48 +02:00
Nicolas Goaziou 84e2e1e752 org-element: Keep ARCHIVE tag in headline tags
* lisp/org-element.el (org-element-headline-parser): Do not remove
  ARCHIVE tag.
(org-element-headline-interpreter): Apply change.

* testing/lisp/test-org-element.el (test-org-element/headline-archive-tag):
Update tests.

<http://permalink.gmane.org/gmane.emacs.orgmode/97141>
2015-04-24 14:28:17 +02:00
Nicolas Goaziou bf024eed8d org-element: Improve babel calls parsing
* lisp/org-element.el (org-element-babel-call-parser):
(org-element-inline-babel-call-parser): Parse call name, inside
header, arguments and end header.  Update docstring.

* testing/lisp/test-org-element.el (test-org-element/babel-call-parser):
(test-org-element/inline-babel-call-parser):
(test-org-element/babel-call-interpreter):
(test-org-element/inline-babel-call-interpreter): Add tests.
2015-04-21 11:54:22 +02:00
Nicolas Goaziou 0ab15904ec org-element: Fix "file" link :path
* lisp/org-element.el (org-element-link-parser): Fix :path value.
* testing/lisp/test-org-element.el (test-org-element/link-parser):
  Update tests.

:path now really contains the filename, not some truncated URI.
2015-04-20 12:35:41 +02:00
Nicolas Goaziou 1ba8413b0a org-element: Fix cache bug
* lisp/org-element.el (org-element--cache-for-removal): Be more
  careful when altering a properties drawer.

* testing/lisp/test-org-element.el (test-org-element/cache): Add test.
2015-04-06 00:37:49 +02:00
Nicolas Goaziou 789ddf155a org-element: Fix regexp
* lisp/org-element.el (org-element--cache-sensitive-re): Fix regexp.
2015-04-05 21:38:10 +02:00
Nicolas Goaziou fa70778a20 org-element: Remove `org-element-document-properties'
* lisp/org-element.el (org-element-document-properties): Remove
  variable.
(org-element-context): Ignore ex-"document keywords".

* testing/lisp/test-org-element.el (test-org-element/context): Remove
  no longer applicable tests.

Parsed keywords are no longer hard-coded and can be set per export
back-end.

As a consequence, `org-element-context' no longer returns objects in
"TITLE", "DATE" or "AUTHOR" keywords.  This makes sense as these
objects would only make sense during export, and only if the chosen
back-end actually uses them.
2015-04-05 13:48:28 +02:00
Nicolas Goaziou d4785381ec Change "\..." entities into "\_ "
* lisp/org-element.el (org-element--set-regexps):
(org-element-entity-parser): Update regexps.

* lisp/org-entities.el (org-entities): Modify syntax for space
  entities.

* lisp/org.el (org-fontify-entities): Update comment.

* lisp/org-clock.el (org-clocktable-indent-string): Apply syntax
  change.

* etc/ORG-NEWS (title): Update announce.

Use a less verbose syntax, which cannot interfere with file paths.
2015-03-22 21:45:00 +01:00
Nicolas Goaziou acebc4b0b5 org-element: Fix 22f942b481
* lisp/org-element.el (org-element-entity-parser): Fix regexp groups.
2015-03-22 10:09:29 +01:00
Nicolas Goaziou 22f942b481 Implement new entity family "\...."
* lisp/org-element.el (org-element--set-regexps):
(org-element-entity-parser): Update regexps for entities.

* lisp/org-entities.el (org-entities): Add new entities.

* lisp/org.el (org-fontify-entities): Add comment.

* etc/ORG-NEWS (title): Introduce new entities.

"\..." are used to insert an arbitrary number of spaces in various
back-ends.  In particular, this family can be used to introduce
leading spaces within table cells.

Also, unlike to other entities, these can be used mid-word, e.g.,

  wo\....rd

Curly brackets can still be added before a dot, e.g.,

  This is the end\...{}.
2015-03-22 09:55:20 +01:00
Nicolas Goaziou bcf6970369 org-element: `org-element-parse-secondary-string' accepts nil argument
* lisp/org-element.el (org-element-parse-secondary-string): Accept nil
  argument as a special case.

Reported-by: Rasmus <rasmus@gmx.us>
<http://permalink.gmane.org/gmane.emacs.orgmode/96234>
2015-03-21 09:43:45 +01:00
Nicolas Goaziou bf4a645cac org-element: Fix indentation removal with line breaks
* lisp/org-element.el (org-element-line-break-parser): Tiny
  refactoring.
(org-element-normalize-contents): Take into consideration line breaks
when removing common indentation.  Small refactoring.

* testing/lisp/test-org-element.el (test-org-element/normalize-contents):
  Add tests.
2015-03-07 01:58:28 +01:00
Nicolas Goaziou 40ef7af622 org-element: Elements can accept multiple secondary strings
* lisp/org-element.el (org-element-secondary-value-alist): Turn
  secondary properties into a list.
(org-element-secondary-p, org-element-map): Apply changes to variable
above.
2015-03-01 17:03:02 +01:00
Nicolas Goaziou 80bbf2440a org-element: Fix docstring
* lisp/org-element.el (org-element-set-contents): Fix docstring.
2015-02-27 11:53:00 +01:00
Nicolas Goaziou 7ebe87e2d5 org-element: Forbid footnote references in parsed keywords
* lisp/org-element.el (org-element-object-restrictions): Forbid
  footnote references in parsed keywords.

Inserting footnote references in parsed keywords (e.g., TITLE or
CAPTION) can lead to subtle bugs.  Indeed, it is impossible to know in
time if that particular footnote is going to be used in the output,
and, therefore, if it should count, e.g., in
`org-export-get-footnote-number'.
2015-02-15 21:56:57 +01:00
Nicolas Goaziou 13938b87c2 org-element: Faster inline footnotes parsing
* lisp/org-element.el (org-element--pair-square-table): New variable.
(org-element-footnote-reference-parser): Use new variable.
2015-02-15 13:33:25 +01:00
Nicolas Goaziou 650278f775 org-element: Interpret pseudo objects without declaration
* lisp/org-element.el (org-element-object-containers): New variable
(org-element-interpret-data): Remove optional argument.
(org-element--interpret-data-1): Remove optional argument.  Guess when
a given element or object has a pseudo type.

* lisp/ox-latex.el (org-latex-pseudo-objects): Remove variable.
(org-latex-table, org-latex--math-table): Apply signature change above.

* testing/lisp/test-org-element.el (test-org-element/interpret-data):
  Update test.
2015-02-09 12:04:38 +01:00
Nicolas Goaziou 7f66983184 org-element: Fix docstring
* lisp/org-element.el (org-element-copy): Fix docstring.
2015-02-09 10:57:39 +01:00
Nicolas Goaziou 70933a3dd6 org-element: Implement `org-element-copy'
* lisp/org-element.el (org-element-copy): New function.
* testing/lisp/test-org-element.el (test-org-element/copy): New test.
2015-02-09 10:07:34 +01:00
Nicolas Goaziou 55c0708bc4 org-element: Externalize docview links
* lisp/org-element.el (org-element-link-type-is-file): Remove.
(org-element-link-parser): Do not treat specially anymore "docview"
link type.

* testing/lisp/test-org-element.el (test-org-element/link-parser):
  Update test.

* lisp/org-docview.el (org-docview-export): Fix path.

"docview" is a custom link type handled in its own library.  There is
no reason to include it in core parser.
2015-02-03 23:00:21 +01:00
Nicolas Goaziou 8ff32ab112 Be more cautious when preserving visibility
* lisp/org-element.el (org-element-swap-A-B):
* lisp/org-list.el (org-list-swap-items):
(org-list-send-item): In order to preserve visibility of moved items
or elements, only consider inner overlays.

Reported-by: Michael Brand <michael.ch.brand@gmail.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/94320>
2015-01-30 00:20:01 +01:00
Nicolas Goaziou a1f54021c9 org-element: Remove :alt-title property for headlines
* lisp/org-element.el (org-element-headline-parser): Remove :alt-title.
* lisp/ox.el (org-export-get-alt-title): Check regular :ALT_TITLE
  property instead of :alt-title.

`:alt-title' is an export-specific property. As a consequence, it's
value doesn't need to be parsed at "org-element.el"'s level. There, it
is treated as a regular property : `ALT_TITLE'.

This also removes the last call to
`org-element-parse-secondary-string' from "org-element.el".
2015-01-28 11:41:39 +01:00
Nicolas Goaziou 98ee739e6d org-element: Avoid `org-element-parse-secondary-string'
* lisp/org-element.el (org-element-headline-parser,
  org-element-inlinetask-parser, org-element-item-parser,
  org-element--collect-affiliated-keywords): Use
  `org-element--parse-objects' instead of
  `org-element-parse-secondary-string' when parsing live objects in
  secondary strings.

`org-element-parse-secondary-string' parses a given string in
a temporary buffer, rendering buffer position related
properties (e.g., :begin) invalid.

Reported-by: John Kitchin <johnrkitchin@gmail.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/94397>
2015-01-27 22:25:15 +01:00
Nicolas Goaziou 6617e6dfa9 org-element: Tiny refactoring
* lisp/org-element.el (org-element-headline-interpreter,
  org-element-inlinetask-interpreter): Use format control string
  instead of calling `char-to-string'.
2015-01-27 17:49:22 +01:00
Nicolas Goaziou 96b02fa9a6 org-element: Tiny refactoring
* lisp/org-element.el (org-element-map): Reduce consing and improve
  readability at the price of a tiny code duplication.
2015-01-26 19:45:45 +01:00
Nicolas Goaziou cd6fa4c15e org-element: Optimize `org-element-map'
* lisp/org-element.el (org-element--parsed-properties-alist): New
  variable.
(org-element-map): Remove unnecessary funcalls.  Externalize some
computations in the variable above.
2015-01-25 12:32:03 +01:00
Nicolas Goaziou ec0706ea40 macro: Implement argument extracting and escaping functions
* lisp/org-macro.el (org-macro-escape-arguments,
  org-macro-extract-arguments): New functions.

* lisp/org-element.el (org-element-macro-parser): Use new function.

* testing/lisp/test-org-macro.el (test-org-macro/escape-arguments,
  test-org-macro/extract-arguments): New tests.
2015-01-21 00:27:24 +01:00
Nicolas Goaziou e4727803be org-element: Interpret diary timestamps
* lisp/org-element.el (org-element-timestamp-interpreter): Interpret
  diary timestamps.
2014-12-03 17:17:00 +01:00
Nicolas Goaziou 78773315ee Merge branch 'maint' 2014-11-18 19:46:44 +01:00
Nicolas Goaziou 4f31b68e8f org-element: Fix 'search failed ":"' error
* lisp/org-element.el (org-element-context): Fix 'search failed ":"'
  error when point is on a blank line after a keyword.

* testing/lisp/test-org-element.el (test-org-element/context): Add
  tests.
2014-11-18 19:44:46 +01:00
Nicolas Goaziou 1452b15235 org-element: Fix docstring
* lisp/org-element.el (org-element-lineage): Fix docstring.
2014-11-16 16:49:18 +01:00
Nicolas Goaziou 182d61fc8f org-element: Implement `org-element-lineage'
* lisp/org-element.el (org-element-lineage): New function.

* testing/lisp/test-org-element.el (test-org-element/lineage): New
  test.
2014-11-16 13:30:33 +01:00
Nicolas Goaziou 34bbb39454 Fix parser wrt to defcustom syntax related changes
* lisp/org-element.el (org-element-paragraph-separate,
  org-element--object-regexp): Turn defconst into defvar.
(org-element--set-regexps): Properly set previous variables.
(org-element-update-syntax): New function.

* lisp/org-list.el (org-plain-list-ordered-item-terminator,
  org-list-allow-alphabetical): Call new function whenever these
  variables are modified and Org is already loaded.

* lisp/org.el (org-add-link-type): Call new function since a new link
  type triggers a rebuild of syntax regexps, possibly invalidating
  cache in all Org buffers.

Reported-by: Christopher Dannheim <ch.dannheim@gmail.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/92487>
2014-11-10 00:08:44 +01:00
Nicolas Goaziou ae35b8c4ad org-element: Update property drawers parsing
* lisp/org-element.el (org-element--get-node-properties,
  org-element--get-time-properties): New functions.
(org-element-headline-parser, org-element-inlinetask-parser): Use new
functions.
(org-element-property-drawer-parser): Change signature.  Simplify
parsing.
drawer.
(org-element--current-element, org-element--next-mode): Property
drawers are located right after a headline or a planning element.

* testing/lisp/test-org-element.el (test-org-element/drawer-parser,
  test-org-element/node-property,
  test-org-element/property-drawer-interpreter): Update tests.
(test-org-element/property-drawer-parser): Add tests.
* testing/lisp/test-org.el (test-org/indent-line,
  test-org/indent-region, test-org/forward-paragraph,
  test-org/backward-paragraph): Update tests.
2014-10-28 14:23:51 +01:00
Nicolas Goaziou 3432681fbe Parsing and exporting special blocks preserve case
* lisp/org-element.el (org-element-special-block-parser):
* lisp/ox-latex.el (org-latex-special-block):
* lisp/ox-html.el (org-html-special-block):
* lisp/ox-man.el (org-man-special-block):
* lisp/ox-odt.el (org-odt-special-block):
* lisp/ox-texinfo.el (org-texinfo-special-block):
* contrib/lisp/ox-groff.el (org-groff-special-block): Preserve case.

* testing/lisp/test-org-element.el (test-org-element/special-block-parser):
  Add test.
2014-09-17 20:52:54 +02:00
Nicolas Goaziou 3f88821f01 org-element: Fix outdated comment 2014-09-13 22:34:15 +02:00
Nicolas Goaziou 97ae50fab3 org-element: Fix planning parsing
* lisp/org-element.el (org-element-planning-parser): Remove useless
  check.
(org-element--next-mode): Change signature.
(org-element--parse-elements, org-element--parse-to): Apply signature
change.

* testing/lisp/test-org-element.el (test-org-element/planning-parser):
  Add test.
2014-09-13 22:31:06 +02:00
Nicolas Goaziou 6eb9827d53 org-element: Fix cache error on empty drawers
* lisp/org-element.el (org-element--cache-for-removal): Handle case
  when greater element is totally empty.

Thanks to Malcolm Purvis for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/90639
2014-09-11 23:19:22 +02:00
Nicolas Goaziou e3369c07f0 Revert "Merge export and special blocks within back-ends"
This reverts commit fbc7097ffa.

Conflicts:
	lisp/ox-texinfo.el
2014-09-08 11:57:27 +02:00
Nicolas Goaziou 38d0eb64b0 org-element: Do not consider property drawers as robusts
* lisp/org-element.el (org-element--cache-for-removal): Do not
  consider property drawers as robusts: if contents are modified,
  remove the whole drawer from cache.
2014-09-02 21:18:40 +02:00
Nicolas Goaziou 2df0785fbd org-element: Complete 2125806
* lisp/org-element.el (org-element--parse-to): Do not bother checking
  for a planning line at the beginning of buffer.
2014-08-31 19:11:29 +02:00