Commit Graph

281 Commits

Author SHA1 Message Date
Nicolas Goaziou 74faf5bd26 org-export: New `org-export-derived-backend-p' predicate
* contrib/lisp/org-export.el (org-export-define-derived-backend): Add
  `:parent' property to derived backend.
(org-export-derived-backend-p): New function.
* testing/lisp/test-org-export.el: Add tests.

This function can be useful in filters implemation. I.e.

  (defun my-filter (contents backend info)
    (when (memq backend '(e-latex e-beamer some-derived-backend-from-latex))
      ...))

can be replaced with:

  (defun my filter (contents backend info)
    (when (org-export-derived-backend-p backend 'e-latex)
      ...))
2012-11-17 13:33:38 +01:00
Nicolas Goaziou aa7dbec775 org-export: Fix dispatcher
* contrib/lisp/org-export.el (org-export-dispatch-ui): Correctly
  compute allowed keys, taking into account derived backends.
(org-export-dispatch-action): Correctly compute action associated to
key combination, taking into account derived backends.
2012-11-15 14:05:05 +01:00
Nicolas Goaziou 72a27c3b3f org-export: Make backend registration more stable wrt Org reload
* contrib/lisp/org-export.el (org-export-define-backend,
  org-export-define-derived-backend): Modify backend properties if
  backend is already registered.
(org-export-registered-backends): Use defvar instead of defconst so
a reload doesn't reset it.
2012-11-14 14:43:11 +01:00
Nicolas Goaziou 3d56f56399 org-export: Internal changes to back-end definition
* contrib/lisp/org-export.el (org-export-registered-backends): New
  variable.
(org-export-define-backend, org-export-define-derived-backend): Use
new variable. Also redefine how sub-menus are defined.
(org-export-backend-filters, org-export-backend-menu,
org-export-backend-options, org-export-backend-translate-table): New
functions.
(org-export-get-environment, org-export--parse-option-keyword,
org-export--get-subtree-options, org-export--get-inbuffer-options,
org-export--get-global-options, org-export-install-filters,
org-export-with-backend): Access to data stored in new variable.
(org-export-dispatch-ui): Display sub-menus according to new
definition.
(org-export-dispatch-menu-entries): Removed variable.
* contrib/lisp/org-e-beamer.el: Use new sub-menu definition.
(org-e-beamer--format-section, org-e-beamer-item,
org-e-beamer-keyword): Use `org-export-with-backend' instead of
relying on removed variables.
* testing/lisp/test-org-export.el: Update tests.

This patch gets rid of "invisible" variables, that is variables
defvar'ed within a macro.
2012-11-13 23:25:08 +01:00
Nicolas Goaziou c6d709d0ed org-export: Allow to toggle date insertion
* contrib/lisp/org-export.el (org-export-with-date): New variable.
(org-export-options-alist): Use new variable.
* contrib/lisp/org-e-ascii.el (org-e-ascii-template--document-title):
  Check `:with-date' property in communication channel.
* contrib/lisp/org-e-beamer.el (org-e-beamer-template): Check
  `:with-date' property in communication channel.
* contrib/lisp/org-e-groff.el (org-e-groff--mt-head): Check
  `:with-date' property in communication channel.
(org-e-groff-date-format): Remove variable.
* contrib/lisp/org-e-html.el (org-e-html--build-meta-info,
  org-e-html--build-preamble, org-e-html--build-postamble): Check
  `:with-date' property in communication channel.
(org-e-html-format-date): Remove variable.
* contrib/lisp/org-e-latex.el (org-e-latex-template): Check
  `:with-date' property in communication channel.
contrib/lisp/org-e-man.el: Do not redefine DATE keyword.
2012-11-09 11:04:07 +01:00
Nicolas Goaziou 359891f811 org-export: Consider colons as a safe character for targets
* contrib/lisp/org-export.el (org-export-solidify-link-text): Consider
  colons as a safe character for targets.
2012-11-08 00:36:41 +01:00
Nicolas Goaziou d8a3b84c93 org-export: New function to locally use another back-end
* contrib/lisp/org-export.el (org-export-with-backend): New function.
* contrib/lisp/org-e-beamer.el (org-e-beamer-link): Use new function.
2012-11-03 17:43:04 +01:00
Nicolas Goaziou 203d5123bc org-export: Fix `org-export-get-category'
* contrib/lisp/org-export.el (org-export-get-category):
  `org-entry-properties' is over-zealous when it comes to "CATEGORY"
  property.  Ignore its "???" return value, which only means it wasn't
  able to find an appropriate category.
2012-11-03 11:24:28 +01:00
Nicolas Goaziou 3d1ae7b7f2 org-export: Do not push empty strings to kill ring
* contrib/lisp/org-export.el (org-export-as): Do not push empty
  strings to kill ring.
2012-11-03 00:25:13 +01:00
Nicolas Goaziou 5d4243bccc org-export: Run a hook just before expanding include keywords and macros
* contrib/lisp/org-export.el (org-export-before-processing-hook): New
  variable.
(org-export-as): Run a hook just before expanding include keywords and
macros, and evaluating Babel blocks.
* testing/lisp/test-org-export.el: Add test.
2012-11-02 14:06:50 +01:00
Nicolas Goaziou 22ac03bee5 org-export: Add a function to retrieve category of an element or object
* contrib/lisp/org-export.el (org-export-get-category): New function.
* testing/lisp/test-org-export.el: Add tests.
2012-11-02 13:44:46 +01:00
Nicolas Goaziou 32c3456020 org-export: Fix previous/next element finding in secondary strings
* contrib/lisp/org-export.el (org-export-get-previous-element,
  org-export-get-next-element): Correctly retrieve previous and next
  object, if any, in secondary strings.
* testing/lisp/test-org-export.el: Add tests.
2012-10-31 13:21:16 +01:00
Nicolas Goaziou 14e0cd553f org-export: require ob-exp 2012-10-30 22:21:33 +01:00
Nicolas Goaziou caee8076f8 org-export: Fix docstring
* contrib/lisp/org-export.el (org-export-with-tasks): Fix docstring.
2012-10-30 16:28:33 +01:00
Nicolas Goaziou 1a7610ed98 org-export: Add FILETAGS when retreiving tags with inheritance
* contrib/lisp/org-export.el (org-export-special-keywords): New
  "FILETAGS" keyword.
(org-export--get-inbuffer-options): Handle "FILETAGS" keywords.
(org-export-get-tags): Add FILETAGS when retreiving tags with
inheritance.
* testing/lisp/test-org-export.el: Add test.
2012-10-30 16:03:59 +01:00
Nicolas Goaziou dda56367b8 org-export: Fix :input-file property
* contrib/lisp/org-export.el (org-export-get-environment): Add misc
  properties.
(org-export-as): Extract buffer attributes before entering its copy.
2012-10-30 15:07:44 +01:00
Nicolas Goaziou ad811f5437 org-export: Fix inclusion of files with no final newline
* contrib/lisp/org-export.el (org-export--prepare-file-contents): File
  contents should end with a newline character.
2012-10-30 13:53:28 +01:00
Nicolas Goaziou 1f3a2c42c6 org-element, org-export: Fix documentation typos
* contrib/lisp/org-export.el (org-export--get-subtree-options): Fix
  code comment.
* lisp/org-element.el (org-element-map): Fix docstring.
2012-10-29 21:57:46 +01:00
Nicolas Goaziou 8fb5987e56 org-export: Fix smart quotes with isolated quotes
* contrib/lisp/org-export.el (org-export-activate-smart-quotes): Fix
  smart quotes in some corner-cases.  Refactor code.
* testing/lisp/test-org-export.el: Add test.
2012-10-29 20:36:03 +01:00
Nicolas Goaziou a2120a9d73 org-export: Expand correctly {{{title}}} and such
* contrib/lisp/org-export.el (org-export-as): Expand correctly
  {{{title}}} and such when they already contain a regular macro.
  This is done by expanding macros in two steps: at first regular
  macros,  then document specific macros.
(org-export-expand-macro): Remove function.
* testing/lisp/test-org-export.el: Add test.
2012-10-29 14:01:20 +01:00
Nicolas Goaziou a8c026cb26 org-export: Explicit error when using invalid syntax for INCLUDE keywords
* contrib/lisp/org-export.el (org-export-expand-include-keyword):
  Error out when file isn't specified within double quotes.
* testing/lisp/test-org-export.el: Add test.
2012-10-29 11:31:19 +01:00
Nicolas Goaziou 90fcb4b841 org-export: Add filter set for diary sexp elements
* contrib/lisp/org-export.el (org-export-filters-alist): Add filter
  set for diary sexp elements.
(org-export-filter-comment-block-functions): Fix docstring.
(org-export-filter-diary-sexp-functions): New variable.
2012-10-28 23:00:04 +01:00
Nicolas Goaziou ccc98ebc2d org-export: Fix expansion of babel calls in included files
* contrib/lisp/org-export.el (org-export-as):
  `org-current-export-file' should refer to current, temporary, buffer
  containing included contents, not to original buffer with include
  keywords.
(org-export-with-current-buffer-copy): Buffer copy must contain the
whole buffer, possibly narrowed to a proper part, not only the
narrowed part.
* testing/lisp/test-org-export.el: Tweak tests.
2012-10-28 16:21:30 +01:00
Nicolas Goaziou b2047a2565 org-export: Implement a generic smart quote module
* contrib/lisp/org-export.el (org-export-options-alist): Add an option
  item to toggle smart quotes during export.
(org-export-with-smart-quotes, org-export-smart-quotes-alist,
org-export-smart-quotes-regexps): New variables.
(org-export-activate-smart-quotes): New function.
(org-export-data): Remove residual text properties.
* testing/lisp/test-org-export.el: Add tests.
2012-10-27 11:42:31 +02:00
Nicolas Goaziou 00eaa4dc97 org-export: Fix error when exporting buffers not visiting a file
* contrib/lisp/org-export.el (org-export-output-file-name): Do not
  return an error when exported buffer isn't visiting a file.
2012-10-27 00:02:52 +02:00
Nicolas Goaziou 6e73c22d15 org-export: Fix commit 468d860528
* contrib/lisp/org-export.el (org-export-dispatch-ui): Ensure fitting
  happens once contents have been inserted in the displayed buffer.
2012-10-22 23:56:26 +02:00
Nicolas Goaziou 9751dc4561 org-export: Use relative path for target filenames
* contrib/lisp/org-export.el (org-export-output-file-name): Use
  relative path for target filenames.
2012-10-22 20:58:27 +02:00
Nicolas Goaziou 468d860528 org-export: Make sure that window displaying UI is tall enough
* contrib/lisp/org-export.el (org-export-dispatch-ui): Make sure that
  window displaying UI is tall enough. This fixes a bug where only
  a part of the menu was displayed.
2012-10-21 14:54:23 +02:00
Nicolas Goaziou 9497098dd4 org-export: Don't modify inlinetasks stars when including a file
* contrib/lisp/org-export.el (org-export--prepare-file-contents):
  Don't modify inlinetasks stars when including a file.
2012-10-16 22:00:39 +02:00
Nicolas Goaziou c1c0c70c89 org-export: Add tag inheritance to `org-export-get-tags'
* contrib/lisp/org-export.el (org-export-get-tags): Add optional tag
  inheritance.
* testing/lisp/test-org-export.el: Add test.
2012-10-14 13:19:12 +02:00
Nicolas Goaziou 0a99cf7249 org-export: Tweak dispatch UI
* contrib/lisp/org-export.el (org-export-dispatch-use-expert-ui):
  Complete docstring.
(org-export-dispatch): Fix docstring. Clean dispatch buffer, if any,
each time the function is called.
(org-export-dispatch-ui): Make sure window containing dispatch buffer
is active when user is prompted for a key.  Also remove cursor from
view.
(org-export-dispatch-action): Ring a bell when a wrong key is pressed.
In regular UI, also inform the user by a message.
2012-10-11 21:32:21 +02:00
Nicolas Goaziou b6822edce3 org-export: Update radio targets after expanding include keywords
* contrib/lisp/org-export.el (org-export-as): Update radio targets
  after expanding include keywords.
2012-10-10 13:55:51 +02:00
Nicolas Goaziou 89d6a26f8d org-export: Expand include keywords before macros
* contrib/lisp/org-export.el (org-export-as): Expand include keywords
  before macros.  This allows to specify macro templates in the
  included file.
* testing/examples/macro-templates.org: New file for testing purposes.
* testing/lisp/test-org-export.el: Add test.
2012-10-10 13:52:54 +02:00
Achim Gratz 424a1c5d2f correct reference to non-existing source file
* contrib/lisp/org-export.el: Correct reference to non-existing source
  file, org-exp-blocks has been removed and the imported function is
  now in ob-exp.
2012-10-07 19:16:20 +02:00
Nicolas Goaziou 956858a395 org-export: Fix menu leak when reloading Org
* contrib/lisp/org-export.el (org-export-define-backend,
  org-export-define-derived-backend): Make sure a given entry won't be
  added to menu more than once.
2012-10-06 22:04:27 +02:00
Nicolas Goaziou 58b42debb1 org-export: Include title, author, date and email macros
* contrib/lisp/org-export.el (org-export-expand-macro): New function.
(org-export-as): Use new function.
* lisp/org.el (org-macro-expand, org-macro-replace-all): Change
  signature.  The function now accepts an alist of templates so it
  doesn't have to rely only on `org-macro-templates'.
(org-macro-initialize-templates): {{{date}}} is not anymore an alias
for {{{time}}}.  During export, it will provide the value stored in
DATE keyword instead.
* testing/lisp/test-org-export.el: Add tests.
* testing/lisp/test-org.el: Update tests.
2012-10-06 10:29:37 +02:00
Nicolas Goaziou 0af2f6068f org-export: Fix comma escape in included files
* contrib/lisp/org-export.el (org-export-expand-include-keyword): Use
  new functions to comma escape contents of included files when in an
  example or a src block.
2012-10-06 09:19:41 +02:00
Nicolas Goaziou e4799ef25e org-export: Remove unused function declarations 2012-10-04 14:42:51 +02:00
Nicolas Goaziou 2a95a47c5f Merge branch 'maint' 2012-10-01 21:37:48 +02:00
Nicolas Goaziou 3bd22fb045 org-element: Store value of example-blocks and src-blocks unescaped
* lisp/org-element.el (org-element-example-block-parser,
  org-element-src-block-parser): Store value of example-blocks and
  src-blocks unescaped.
(org-element-example-block-interpreter,
org-element-src-block-interpreter): Escape value again when storing
it.
* contrib/lisp/org-export.el (org-export-unravel-code): Don't clean
  commas from code since org-element already took care of it.
* testing/lisp/test-org-export.el: Update test.
* testing/lisp/test-org-element.el: Add tests.
2012-10-01 21:35:50 +02:00
Nicolas Goaziou e74523905b org-element: Distinguish parsed affiliated keywords from document properties
* lisp/org-element.el (org-element-parsed-keywords): Remove document
  properties from the value.
(org-element-dual-keywords): Fix docstring.
(org-element-document-properties): New variable
* contrib/lisp/org-export.el (org-export--get-subtree-options,
  org-export--get-inbuffer-options, org-export--get-global-options):
  Use new variable instead of parsed keywords.
2012-09-30 23:57:45 +02:00
Nicolas Goaziou e189be5720 org-export: Small refactoring
* contrib/lisp/org-export.el (org-export--get-buffer-attributes):
  Small refactoring.
2012-09-30 14:03:37 +02:00
Nicolas Goaziou 179a5224f6 org-export: Signal an error when back-end isn't registered
* contrib/lisp/org-export.el (org-export-barf-if-invalid-backend): New
  function.
(org-export-as): Signal an error when back-end isn't registered.
2012-09-24 22:35:55 +02:00
Nicolas Goaziou 9ebf47afbf org-export: Re-order filter variables 2012-09-24 08:30:46 +02:00
Nicolas Goaziou ddfaa6fe7a org-export: Add filters for new element type
* contrib/lisp/org-export.el (org-export-filter-node-property-functions):
  New variable.
(org-export-filters-alist): Use new variable.
2012-09-23 22:50:33 +02:00
Nicolas Goaziou 66fe322120 org-export: New function to return a node property, even inherited
* contrib/lisp/org-export.el (org-export-get-node-property): New
  function.
* testing/lisp/test-org-export.el: Add tests.
2012-09-23 19:37:21 +02:00
Nicolas Goaziou baed7dc7db org-element: Optimize affiliated keywords parsing
* lisp/org-element.el (org-element-center-block-parser,
  org-element-drawer-parser, org-element-dynamic-block-parser,
  org-element-footnote-definition-parser,
  org-element-plain-list-parser, org-element-quote-block-parser,
  org-element-special-block-parser, org-element-babel-call-parser,
  org-element-comment-parser, org-element-comment-block-parser,
  org-element-example-block-parser, org-element-export-block-parser,
  org-element-fixed-width-parser, org-element-horizontal-rule-parser,
  org-element-keyword-parser, org-element-latex-environment-parser,
  org-element-paragraph-parser, org-element-property-drawer-parser,
  org-element-src-block-parser, org-element-table-parser,
  org-element-verse-block-parser): Change signature. Now use an
  additional argument: affiliated.
(org-element--current-element): Skip affiliated keywords and pass them
  as an argument to parsers.  It prevents to walk through these
  keywords twice: the first time to get to the first line of the
  element, and a second time to collect the affiliated keywords.
* contrib/lisp/org-export.el (org-export-get-caption): Update function
  since multiple affiliated keywords are now reversed.
* testing/lisp/test-org-element.el: Update tests.
2012-09-20 20:08:16 +02:00
Nicolas Goaziou f0bcf780a3 org-export: Fix collision between old export menu and new one
* contrib/lisp/org-export.el (org-export-dispatch-ui): Do not use same
  buffer name as previous export dispatcher.  Also make sure the
  temporary buffer is deleted once the export is done.
2012-09-14 13:54:43 +02:00
Nicolas Goaziou cedf5190e5 org-export: Update code comments 2012-09-13 21:01:10 +02:00
Nicolas Goaziou fe140488aa org-element: Allow multiple caption keywords
* lisp/org-element.el (org-element-multiple-keywords): Allow multiple
  caption keywords.
* contrib/lisp/org-export.el (org-export-get-caption): New function.
* testing/lisp/test-org-element.el: Add tests.
* testing/lisp/test-org-export.el: Add tests.
2012-09-13 17:33:46 +02:00