mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2025-02-04 21:07:44 +00:00
org-element: Define new objects (bold, code, italic, ...)
* contrib/lisp/org-e-ascii.el (org-e-ascii-option-alist): Fix typo. (org-e-ascii-bold, org-e-ascii-code, org-e-ascii-strike-through, org-e-ascii-underline): New functions. (org-e-ascii-emphasis): Remove function. * contrib/lisp/org-e-html.el (org-e-html-text-markup-alist): Variable renamed from `org-e-html-emphasis-alist'. Change value type. (org-e-html-bold, org-e-html-italic, org-e-html-strike-through, org-e-html-underline): New functions. (org-e-html-verbatim): Update function. (org-e-html-emphasis): Remove function. * contrib/lisp/org-e-latex.el (org-e-latex-text-markup-alist): Variable renamed from `org-e-latex-emphasis-alist'. Change value type. (org-e-latex-center-block): Fix docstring. (org-e-latex--text-markup, org-e-latex-bold, org-e-latex-code, org-e-latex-italic, org-e-latex-strike-through, org-e-latex-underline): New functions. (org-e-latex-verbatim): Update function. (org-e-latex-emphasis): Remove function. * contrib/lisp/org-e-odt.el (org-e-odt-bold, org-e-odt-code, org-e-odt-italic, org-e-odt-strike-through, org-e-odt-underline): New functions. (org-e-odt-verbatim): Update function. (org-e-odt-center-block): Fix docstring. (org-e-odt-emphasis): Remove function. * contrib/lisp/org-element.el (org-element-bold-parser): (org-element-bold-interpreter, org-element-code-parser, org-element-code-interpreter, org-element-italic-parser, org-element-italic-interpreter, org-element-strike-through-parser, org-element-strike-through-interpreter, org-element-underline-parser, org-element-underline-interpreter): New functions. (org-element-emphasis-parser, org-element-emphasis-interpreter): Remove functions. (org-element-verbatim-parser, org-element-verbatim-interpreter, org-element-text-markup-successor): Update function. (org-element-object-successor-alist): Add associations for new object types. (org-element-recursive-objects): Add `bold', `italic', `strike-through' and `underline' as recursive types. (org-element-object-restrictions): Add restrictions for new recursive object types. * contrib/lisp/org-export.el (org-export-filters-alist): Add filters for new object types. (org-export-with-todo-keywords): Add missing keywords. (org-export-filter-center-block-functions, org-export-filter-drawer-functions, org-export-filter-dynamic-block-functions, org-export-filter-headline-functions, org-export-filter-inlinetask-functions, org-export-filter-plain-list-functions, org-export-filter-item-functions, org-export-filter-comment-functions, org-export-filter-comment-block-functions, org-export-filter-example-block-functions, org-export-filter-export-block-functions, org-export-filter-fixed-width-functions, org-export-filter-footnote-definition-functions, org-export-filter-horizontal-rule-functions, org-export-filter-keyword-functions, org-export-filter-latex-environment-functions, org-export-filter-babel-call-functions, org-export-filter-paragraph-functions, org-export-filter-property-drawer-functions, org-export-filter-quote-section-functions, org-export-filter-quote-block-functions, org-export-filter-section-functions, org-export-filter-special-block-functions, org-export-filter-src-block-functions, org-export-filter-table-functions, org-export-filter-table-cell-functions, org-export-filter-table-row-functions, org-export-filter-verse-block-functions, org-export-filter-entity-functions, org-export-filter-export-snippet-functions, org-export-filter-footnote-reference-functions, org-export-filter-inline-babel-call-functions, org-export-filter-inline-src-block-functions, org-export-filter-latex-fragment-functions, org-export-filter-line-break-functions, org-export-filter-link-functions, org-export-filter-macro-functions, org-export-filter-radio-target-functions, org-export-filter-statistics-cookie-functions, org-export-filter-subscript-functions, org-export-filter-superscript-functions, org-export-filter-target-functions, org-export-filter-time-stamp-functions, org-export-filter-verbatim-functions): Fix docstring. (org-export-filter-bold-functions, org-export-filter-code-functions, org-export-filter-italic-functions, org-export-filter-strike-through-functions, org-export-filter-underline-functions): New variables. (org-export-filter-emphasis-functions): Remove variable. * testing/lisp/test-org-element.el: Add tests.
This commit is contained in:
parent
312e225685
commit
b21b6ead24
@ -83,8 +83,7 @@
|
||||
;; control blank lines separating them in output string.
|
||||
|
||||
(defconst org-e-ascii-option-alist
|
||||
'((:ascii-charset nil nil org-e-ascii-charset)
|
||||
)
|
||||
'((:ascii-charset nil nil org-e-ascii-charset))
|
||||
"Alist between ASCII export properties and ways to set them.
|
||||
See `org-export-option-alist' for more information on the
|
||||
structure or the values.")
|
||||
@ -1000,6 +999,15 @@ charset, fall-back to S."
|
||||
;; Babel Calls are ignored.
|
||||
|
||||
|
||||
;;;; Bold
|
||||
|
||||
(defun org-e-ascii-bold (bold contents info)
|
||||
"Transcode BOLD from Org to ASCII.
|
||||
CONTENTS is the text with bold markup. INFO is a plist holding
|
||||
contextual information."
|
||||
(format "*%s*" contents))
|
||||
|
||||
|
||||
;;;; Center Block
|
||||
|
||||
(defun org-e-ascii-center-block (center-block contents info)
|
||||
@ -1010,6 +1018,15 @@ holding contextual information."
|
||||
contents (org-e-ascii--current-text-width center-block info) 'center))
|
||||
|
||||
|
||||
;;;; Code
|
||||
|
||||
(defun org-e-ascii-code (code contents info)
|
||||
"Return a CODE object from Org to ASCII.
|
||||
CONTENTS is nil. INFO is a plist holding contextual
|
||||
information."
|
||||
(format org-e-ascii-verbatim-format (org-element-property :value code)))
|
||||
|
||||
|
||||
;;;; Comment
|
||||
|
||||
;; Comments are ignored.
|
||||
@ -1044,17 +1061,6 @@ holding contextual information. See `org-export-data'."
|
||||
contents)
|
||||
|
||||
|
||||
;;;; Emphasis
|
||||
|
||||
(defun org-e-ascii-emphasis (emphasis contents info)
|
||||
"Transcode EMPHASIS from Org to ASCII.
|
||||
CONTENTS is the contents of the emphasized text. INFO is a plist
|
||||
holding contextual information.."
|
||||
(let ((marker (org-element-property :marker emphasis)))
|
||||
;; Leave emphasis markers as-is.
|
||||
(concat marker contents marker)))
|
||||
|
||||
|
||||
;;;; Entity
|
||||
|
||||
(defun org-e-ascii-entity (entity contents info)
|
||||
@ -1248,6 +1254,14 @@ holding contextual information."
|
||||
org-e-ascii-inner-margin)
|
||||
(org-e-ascii--current-text-width inlinetask info)))))))
|
||||
|
||||
;;;; Italic
|
||||
|
||||
(defun org-e-ascii-italic (italic contents info)
|
||||
"Transcode italic from Org to ASCII.
|
||||
CONTENTS is the text with italic markup. INFO is a plist holding
|
||||
contextual information."
|
||||
(format "/%s/" contents))
|
||||
|
||||
|
||||
;;;; Item
|
||||
|
||||
@ -1573,6 +1587,15 @@ contextual information."
|
||||
(format "_%s" contents)))
|
||||
|
||||
|
||||
;;;; Strike-through
|
||||
|
||||
(defun org-e-ascii-strike-through (strike-through contents info)
|
||||
"Transcode STRIKE-THROUGH from Org to ASCII.
|
||||
CONTENTS is text with strike-through markup. INFO is a plist
|
||||
holding contextual information."
|
||||
(format "+%s+" contents))
|
||||
|
||||
|
||||
;;;; Table
|
||||
|
||||
(defun org-e-ascii-table (table contents info)
|
||||
@ -1592,7 +1615,6 @@ CONTENTS is nil. INFO is a plist holding contextual information."
|
||||
|
||||
;;;; Table Cell
|
||||
|
||||
|
||||
(defun org-e-ascii--table-cell-width (table-cell info)
|
||||
"Return width of TABLE-CELL.
|
||||
|
||||
@ -1709,6 +1731,15 @@ CONTENTS is nil. INFO is a plist holding contextual information."
|
||||
(org-element-time-stamp-interpreter time-stamp contents))
|
||||
|
||||
|
||||
;;;; Underline
|
||||
|
||||
(defun org-e-ascii-underline (underline contents info)
|
||||
"Transcode UNDERLINE from Org to ASCII.
|
||||
CONTENTS is the text with underline markup. INFO is a plist
|
||||
holding contextual information."
|
||||
(format "_%s_" contents))
|
||||
|
||||
|
||||
;;;; Verbatim
|
||||
|
||||
(defun org-e-ascii-verbatim (verbatim contents info)
|
||||
|
@ -863,27 +863,28 @@ order to reproduce the default set-up:
|
||||
:group 'org-export-e-html
|
||||
:type 'function)
|
||||
|
||||
;;;; Emphasis
|
||||
|
||||
(defcustom org-e-html-emphasis-alist
|
||||
'(("*" . "<b>%s</b>")
|
||||
("/" . "<i>%s</i>")
|
||||
("_" . "<span style=\"text-decoration:underline;\">%s</span>")
|
||||
("+" . "<del>%s</del>")
|
||||
("=" . "<code>%s</code>")
|
||||
("~" . "<code>%s</code>"))
|
||||
"Alist of HTML expressions to convert emphasis fontifiers.
|
||||
;;;; Text Markup
|
||||
|
||||
The key is the character used as a marker for fontification. The
|
||||
value is a formatting string to wrap fontified text with.
|
||||
(defcustom org-e-html-text-markup-alist
|
||||
'((bold . "<b>%s</b>")
|
||||
(code . "<code>%s</code>")
|
||||
(italic . "<i>%s</i>")
|
||||
(strike-through . "<del>%s</del>")
|
||||
(underline . "<span style=\"text-decoration:underline;\">%s</span>")
|
||||
(verbatim . "<code>%s</code>"))
|
||||
"Alist of HTML expressions to convert text markup
|
||||
|
||||
Value can also be set to the following symbols: `verb' and
|
||||
`protectedtexttt'. For the former, Org will use \"\\verb\" to
|
||||
create a format string and select a delimiter character that
|
||||
isn't in the string. For the latter, Org will use \"\\texttt\"
|
||||
to typeset and try to protect special characters."
|
||||
The key must be a symbol among `bold', `code', `italic',
|
||||
`strike-through', `underline' and `verbatim'. The value is
|
||||
a formatting string to wrap fontified text with.
|
||||
|
||||
If no association can be found for a given markup, text will be
|
||||
returned as-is."
|
||||
:group 'org-export-e-html
|
||||
:type 'alist)
|
||||
:type '(alist :key-type (symbol :tag "Markup type")
|
||||
:value-type (string :tag "Format string"))
|
||||
:options '(bold code italic strike-through underline verbatim))
|
||||
|
||||
|
||||
;;;; Footnotes
|
||||
@ -1830,7 +1831,17 @@ original parsed data. INFO is a plist holding export options."
|
||||
|
||||
;;; Transcode Functions
|
||||
|
||||
;;;; Block
|
||||
;;;; Bold
|
||||
|
||||
(defun org-e-html-bold (bold contents info)
|
||||
"Transcode BOLD from Org to HTML.
|
||||
CONTENTS is the text with bold markup. INFO is a plist holding
|
||||
contextual information."
|
||||
(format (or (cdr (assq 'bold org-e-html-text-markup-alist)) "%s")
|
||||
contents))
|
||||
|
||||
|
||||
;;;; Center Block
|
||||
|
||||
(defun org-e-html-center-block (center-block contents info)
|
||||
"Transcode a CENTER-BLOCK element from Org to HTML.
|
||||
@ -1841,6 +1852,16 @@ holding contextual information."
|
||||
(format "<div style=\"text-align: center\">\n%s</div>" contents)))
|
||||
|
||||
|
||||
;;;; Code
|
||||
|
||||
(defun org-e-html-code (code contents info)
|
||||
"Transcode CODE from Org to HTML.
|
||||
CONTENTS is nil. INFO is a plist holding contextual
|
||||
information."
|
||||
(format (or (cdr (assq 'code org-e-html-text-markup-alist)) "%s")
|
||||
(org-element-property :value code)))
|
||||
|
||||
|
||||
;;;; Comment
|
||||
|
||||
;; Comments are ignored.
|
||||
@ -1876,16 +1897,6 @@ holding contextual information. See `org-export-data'."
|
||||
(org-e-html--wrap-label dynamic-block contents))
|
||||
|
||||
|
||||
;;;; Emphasis
|
||||
|
||||
(defun org-e-html-emphasis (emphasis contents info)
|
||||
"Transcode EMPHASIS from Org to HTML.
|
||||
CONTENTS is the contents of the emphasized text. INFO is a plist
|
||||
holding contextual information.."
|
||||
(let* ((marker (org-element-property :marker emphasis)))
|
||||
(format (cdr (assoc marker org-e-html-emphasis-alist)) contents)))
|
||||
|
||||
|
||||
;;;; Entity
|
||||
|
||||
(defun org-e-html-entity (entity contents info)
|
||||
@ -2154,6 +2165,15 @@ holding contextual information."
|
||||
contents)))))
|
||||
|
||||
|
||||
;;;; Italic
|
||||
|
||||
(defun org-e-html-italic (italic contents info)
|
||||
"Transcode ITALIC from Org to HTML.
|
||||
CONTENTS is the text with italic markup. INFO is a plist holding
|
||||
contextual information."
|
||||
(format (or (cdr (assq 'italic org-e-html-text-markup-alist)) "%s") contents))
|
||||
|
||||
|
||||
;;;; Item
|
||||
|
||||
(defun org-e-html-checkbox (checkbox)
|
||||
@ -2731,6 +2751,16 @@ CONTENTS is nil. INFO is a plist holding contextual information."
|
||||
(format "<code>%s</code>" cookie-value)))
|
||||
|
||||
|
||||
;;;; Strike-Through
|
||||
|
||||
(defun org-e-html-strike-through (strike-through contents info)
|
||||
"Transcode STRIKE-THROUGH from Org to HTML.
|
||||
CONTENTS is the text with strike-through markup. INFO is a plist
|
||||
holding contextual information."
|
||||
(format (or (cdr (assq 'strike-through org-e-html-text-markup-alist)) "%s")
|
||||
contents))
|
||||
|
||||
|
||||
;;;; Subscript
|
||||
|
||||
(defun org-e-html-subscript (subscript contents info)
|
||||
@ -2923,14 +2953,24 @@ information."
|
||||
(format "<span class=\"timestamp\">%s</span>" value))))
|
||||
|
||||
|
||||
;;;; Underline
|
||||
|
||||
(defun org-e-html-underline (underline contents info)
|
||||
"Transcode UNDERLINE from Org to HTML.
|
||||
CONTENTS is the text with underline markup. INFO is a plist
|
||||
holding contextual information."
|
||||
(format (or (cdr (assq 'underline org-e-html-text-markup-alist)) "%s")
|
||||
contents))
|
||||
|
||||
|
||||
;;;; Verbatim
|
||||
|
||||
(defun org-e-html-verbatim (verbatim contents info)
|
||||
"Transcode a VERBATIM object from Org to HTML.
|
||||
CONTENTS is nil. INFO is a plist used as a communication
|
||||
channel."
|
||||
(org-e-html-emphasis
|
||||
verbatim (org-element-property :value verbatim) info))
|
||||
"Transcode VERBATIM from Org to HTML.
|
||||
CONTENTS is nil. INFO is a plist holding contextual
|
||||
information."
|
||||
(format (or (cdr (assq 'verbatim org-e-html-text-markup-alist)) "%s")
|
||||
(org-element-property :value verbatim)))
|
||||
|
||||
|
||||
;;;; Verse Block
|
||||
|
@ -290,29 +290,6 @@ order to reproduce the default set-up:
|
||||
:type 'function)
|
||||
|
||||
|
||||
;;;; Emphasis
|
||||
|
||||
(defcustom org-e-latex-emphasis-alist
|
||||
'(("*" . "\\textbf{%s}")
|
||||
("/" . "\\emph{%s}")
|
||||
("_" . "\\underline{%s}")
|
||||
("+" . "\\st{%s}")
|
||||
("=" . protectedtexttt)
|
||||
("~" . verb))
|
||||
"Alist of LaTeX expressions to convert emphasis fontifiers.
|
||||
|
||||
The key is the character used as a marker for fontification. The
|
||||
value is a formatting string to wrap fontified text with.
|
||||
|
||||
Value can also be set to the following symbols: `verb' and
|
||||
`protectedtexttt'. For the former, Org will use \"\\verb\" to
|
||||
create a format string and select a delimiter character that
|
||||
isn't in the string. For the latter, Org will use \"\\texttt\"
|
||||
to typeset and try to protect special characters."
|
||||
:group 'org-export-e-latex
|
||||
:type 'alist)
|
||||
|
||||
|
||||
;;;; Footnotes
|
||||
|
||||
(defcustom org-e-latex-footnote-separator "\\textsuperscript{,}\\,"
|
||||
@ -413,6 +390,33 @@ When nil, no transformation is made."
|
||||
(const :tag "No formatting")))
|
||||
|
||||
|
||||
;;;; Text markup
|
||||
|
||||
(defcustom org-e-latex-text-markup-alist '((bold . "\\textbf{%s}")
|
||||
(code . verb)
|
||||
(italic . "\\emph{%s}")
|
||||
(strike-through . "\\st{%s}")
|
||||
(underline . "\\underline{%s}")
|
||||
(verbatim . protectedtexttt))
|
||||
"Alist of LaTeX expressions to convert text markup.
|
||||
|
||||
The key must be a symbol among `bold', `code', `italic',
|
||||
`strike-through', `underline' and `verbatim'. The value is
|
||||
a formatting string to wrap fontified text with.
|
||||
|
||||
Value can also be set to the following symbols: `verb' and
|
||||
`protectedtexttt'. For the former, Org will use \"\\verb\" to
|
||||
create a format string and select a delimiter character that
|
||||
isn't in the string. For the latter, Org will use \"\\texttt\"
|
||||
to typeset and try to protect special characters.
|
||||
|
||||
If no association can be found for a given markup, text will be
|
||||
returned as-is."
|
||||
:group 'org-export-e-latex
|
||||
:type 'alist
|
||||
:options '(bold code italic strike-through underline verbatim))
|
||||
|
||||
|
||||
;;;; Drawers
|
||||
|
||||
(defcustom org-e-latex-format-drawer-function nil
|
||||
@ -810,6 +814,42 @@ This function shouldn't be used for floats. See
|
||||
output
|
||||
(concat (format "\\label{%s}\n" label) output))))
|
||||
|
||||
(defun org-e-latex--text-markup (text markup)
|
||||
"Format text depending on MARKUP text markup.
|
||||
See `org-e-latex-text-markup-alist' for details."
|
||||
(let ((fmt (cdr (assq markup org-e-latex-text-markup-alist))))
|
||||
(cond
|
||||
;; No format string: Return raw text.
|
||||
((not fmt) text)
|
||||
;; Handle the `verb' special case: Find and appropriate separator
|
||||
;; and use "\\verb" command.
|
||||
((eq 'verb fmt)
|
||||
(let ((separator (org-e-latex--find-verb-separator text)))
|
||||
(concat "\\verb" separator text separator)))
|
||||
;; Handle the `protectedtexttt' special case: Protect some
|
||||
;; special chars and use "\texttt{%s}" format string.
|
||||
((eq 'protectedtexttt fmt)
|
||||
(let ((start 0)
|
||||
(trans '(("\\" . "\\textbackslash{}")
|
||||
("~" . "\\textasciitilde{}")
|
||||
("^" . "\\textasciicircum{}")))
|
||||
(rtn "")
|
||||
char)
|
||||
(while (string-match "[\\{}$%&_#~^]" text)
|
||||
(setq char (match-string 0 text))
|
||||
(if (> (match-beginning 0) 0)
|
||||
(setq rtn (concat rtn (substring value 0 (match-beginning 0)))))
|
||||
(setq text (substring text (1+ (match-beginning 0))))
|
||||
(setq char (or (cdr (assoc char trans)) (concat "\\" char))
|
||||
rtn (concat rtn char)))
|
||||
(setq text (concat rtn text)
|
||||
fmt "\\texttt{%s}")
|
||||
(while (string-match "--" text)
|
||||
(setq text (replace-match "-{}-" t t text)))
|
||||
(format fmt text)))
|
||||
;; Else use format string.
|
||||
(t (format fmt text)))))
|
||||
|
||||
|
||||
|
||||
;;; Template
|
||||
@ -901,17 +941,35 @@ holding export options."
|
||||
|
||||
;;; Transcode Functions
|
||||
|
||||
;;;; Block
|
||||
;;;; Bold
|
||||
|
||||
(defun org-e-latex-bold (bold contents info)
|
||||
"Transcode BOLD from Org to LaTeX.
|
||||
CONTENTS is the text with bold markup. INFO is a plist holding
|
||||
contextual information."
|
||||
(org-e-latex--text-markup contents 'bold))
|
||||
|
||||
|
||||
;;;; Center Block
|
||||
|
||||
(defun org-e-latex-center-block (center-block contents info)
|
||||
"Transcode a CENTER-BLOCK element from Org to LaTeX.
|
||||
CONTENTS holds the contents of the block. INFO is a plist
|
||||
CONTENTS holds the contents of the center block. INFO is a plist
|
||||
holding contextual information."
|
||||
(org-e-latex--wrap-label
|
||||
center-block
|
||||
(format "\\begin{center}\n%s\\end{center}" contents)))
|
||||
|
||||
|
||||
;;;; Code
|
||||
|
||||
(defun org-e-latex-code (code contents info)
|
||||
"Transcode a CODE object from Org to LaTeX.
|
||||
CONTENTS is nil. INFO is a plist used as a communication
|
||||
channel."
|
||||
(org-e-latex--text-markup (org-element-property :value code) 'code))
|
||||
|
||||
|
||||
;;;; Comment
|
||||
|
||||
;; Comments are ignored.
|
||||
@ -947,17 +1005,6 @@ holding contextual information. See `org-export-data'."
|
||||
(org-e-latex--wrap-label dynamic-block contents))
|
||||
|
||||
|
||||
;;;; Emphasis
|
||||
|
||||
(defun org-e-latex-emphasis (emphasis contents info)
|
||||
"Transcode EMPHASIS from Org to LaTeX.
|
||||
CONTENTS is the contents of the emphasized text. INFO is a plist
|
||||
holding contextual information.."
|
||||
(format (cdr (assoc (org-element-property :marker emphasis)
|
||||
org-e-latex-emphasis-alist))
|
||||
contents))
|
||||
|
||||
|
||||
;;;; Entity
|
||||
|
||||
(defun org-e-latex-entity (entity contents info)
|
||||
@ -1267,6 +1314,15 @@ holding contextual information."
|
||||
full-title contents))))))
|
||||
|
||||
|
||||
;;;; Italic
|
||||
|
||||
(defun org-e-latex-italic (italic contents info)
|
||||
"Transcode ITALIC from Org to LaTeX.
|
||||
CONTENTS is the text with italic markup. INFO is a plist holding
|
||||
contextual information."
|
||||
(org-e-latex--text-markup contents 'italic))
|
||||
|
||||
|
||||
;;;; Item
|
||||
|
||||
(defun org-e-latex-item (item contents info)
|
||||
@ -1801,6 +1857,15 @@ CONTENTS is nil. INFO is a plist holding contextual information."
|
||||
(org-element-property :value statistics-cookie))
|
||||
|
||||
|
||||
;;;; Strike-Through
|
||||
|
||||
(defun org-e-latex-strike-through (strike-through contents info)
|
||||
"Transcode STRIKE-THROUGH from Org to LaTeX.
|
||||
CONTENTS is the text with strike-through markup. INFO is a plist
|
||||
holding contextual information."
|
||||
(org-e-latex--text-markup contents 'strike-through))
|
||||
|
||||
|
||||
;;;; Subscript
|
||||
|
||||
(defun org-e-latex-subscript (subscript contents info)
|
||||
@ -2065,42 +2130,22 @@ information."
|
||||
(format org-e-latex-diary-timestamp-format value))))))
|
||||
|
||||
|
||||
;;;; Underline
|
||||
|
||||
(defun org-e-latex-underline (underline contents info)
|
||||
"Transcode UNDERLINE from Org to LaTeX.
|
||||
CONTENTS is the text with underline markup. INFO is a plist
|
||||
holding contextual information."
|
||||
(org-e-latex--text-markup contents 'underline))
|
||||
|
||||
|
||||
;;;; Verbatim
|
||||
|
||||
(defun org-e-latex-verbatim (verbatim contents info)
|
||||
"Transcode a VERBATIM object from Org to LaTeX.
|
||||
CONTENTS is nil. INFO is a plist used as a communication
|
||||
channel."
|
||||
(let ((fmt (cdr (assoc (org-element-property :marker verbatim)
|
||||
org-e-latex-emphasis-alist)))
|
||||
(value (org-element-property :value verbatim)))
|
||||
(cond
|
||||
;; Handle the `verb' special case.
|
||||
((eq 'verb fmt)
|
||||
(let ((separator (org-e-latex--find-verb-separator value)))
|
||||
(concat "\\verb" separator value separator)))
|
||||
;; Handle the `protectedtexttt' special case.
|
||||
((eq 'protectedtexttt fmt)
|
||||
(let ((start 0)
|
||||
(trans '(("\\" . "\\textbackslash{}")
|
||||
("~" . "\\textasciitilde{}")
|
||||
("^" . "\\textasciicircum{}")))
|
||||
(rtn "")
|
||||
char)
|
||||
(while (string-match "[\\{}$%&_#~^]" value)
|
||||
(setq char (match-string 0 value))
|
||||
(if (> (match-beginning 0) 0)
|
||||
(setq rtn (concat rtn (substring value 0 (match-beginning 0)))))
|
||||
(setq value (substring value (1+ (match-beginning 0))))
|
||||
(setq char (or (cdr (assoc char trans)) (concat "\\" char))
|
||||
rtn (concat rtn char)))
|
||||
(setq value (concat rtn value)
|
||||
fmt "\\texttt{%s}")
|
||||
(while (string-match "--" value)
|
||||
(setq value (replace-match "-{}-" t t value)))
|
||||
(format fmt value)))
|
||||
;; Else use format string.
|
||||
(t (format fmt value)))))
|
||||
(org-e-latex--text-markup (org-element-property :value verbatim) 'verbatim))
|
||||
|
||||
|
||||
;;;; Verse Block
|
||||
|
@ -2929,15 +2929,33 @@ original parsed data. INFO is a plist holding export options."
|
||||
|
||||
;;; Transcode Functions
|
||||
|
||||
;;;; Block
|
||||
;;;; Bold
|
||||
|
||||
(defun org-e-odt-bold (bold contents info)
|
||||
"Transcode BOLD from Org to HTML.
|
||||
CONTENTS is the text with bold markup. INFO is a plist holding
|
||||
contextual information."
|
||||
(org-e-odt-format-fontify contents 'bold))
|
||||
|
||||
|
||||
;;;; Center Block
|
||||
|
||||
(defun org-e-odt-center-block (center-block contents info)
|
||||
"Transcode a CENTER-BLOCK element from Org to HTML.
|
||||
CONTENTS holds the contents of the block. INFO is a plist
|
||||
CONTENTS holds the contents of the center block. INFO is a plist
|
||||
holding contextual information."
|
||||
(org-e-odt--wrap-label center-block contents))
|
||||
|
||||
|
||||
;;;; Code
|
||||
|
||||
(defun org-e-odt-code (code contents info)
|
||||
"Transcode a CODE object from Org to HTML.
|
||||
CONTENTS is nil. INFO is a plist used as a communication
|
||||
channel."
|
||||
(org-e-odt-format-fontify (org-element-property :value code) 'code))
|
||||
|
||||
|
||||
;;;; Comment
|
||||
|
||||
;; Comments are ignored.
|
||||
@ -2973,26 +2991,6 @@ holding contextual information. See `org-export-data'."
|
||||
(org-e-odt--wrap-label dynamic-block contents))
|
||||
|
||||
|
||||
;;;; Emphasis
|
||||
|
||||
(defun org-e-odt-emphasis (emphasis contents info)
|
||||
"Transcode EMPHASIS from Org to HTML.
|
||||
CONTENTS is the contents of the emphasized text. INFO is a plist
|
||||
holding contextual information.."
|
||||
;; (format (cdr (assoc (org-element-property :marker emphasis)
|
||||
;; org-e-odt-emphasis-alist))
|
||||
;; contents)
|
||||
(org-e-odt-format-fontify
|
||||
contents (cadr (assoc
|
||||
(org-element-property :marker emphasis)
|
||||
'(("*" bold)
|
||||
("/" emphasis)
|
||||
("_" underline)
|
||||
("=" code)
|
||||
("~" verbatim)
|
||||
("+" strike))))))
|
||||
|
||||
|
||||
;;;; Entity
|
||||
|
||||
(defun org-e-odt-entity (entity contents info)
|
||||
@ -3248,6 +3246,15 @@ holding contextual information."
|
||||
contents)
|
||||
nil nil "OrgInlineTaskFrame" " style:rel-width=\"100%\""))))))
|
||||
|
||||
;;;; Italic
|
||||
|
||||
(defun org-e-odt-italic (italic contents info)
|
||||
"Transcode ITALIC from Org to HTML.
|
||||
CONTENTS is the text with italic markup. INFO is a plist holding
|
||||
contextual information."
|
||||
(org-e-odt-format-fontify contents 'italic))
|
||||
|
||||
|
||||
;;;; Item
|
||||
|
||||
(defun org-e-odt-format-list-item (contents type checkbox
|
||||
@ -3847,6 +3854,15 @@ CONTENTS is nil. INFO is a plist holding contextual information."
|
||||
(org-e-odt-format-fontify cookie-value 'code)))
|
||||
|
||||
|
||||
;;;; Strike-Through
|
||||
|
||||
(defun org-e-odt-strike-through (strike-through contents info)
|
||||
"Transcode STRIKE-THROUGH from Org to HTML.
|
||||
CONTENTS is the text with strike-through markup. INFO is a plist
|
||||
holding contextual information."
|
||||
(org-e-odt-format-fontify contents 'strike))
|
||||
|
||||
|
||||
;;;; Subscript
|
||||
|
||||
(defun org-e-odt-subscript (subscript contents info)
|
||||
@ -4124,14 +4140,22 @@ information."
|
||||
"timestamp-wrapper")))
|
||||
|
||||
|
||||
;;;; Underline
|
||||
|
||||
(defun org-e-odt-underline (underline contents info)
|
||||
"Transcode UNDERLINE from Org to HTML.
|
||||
CONTENTS is the text with underline markup. INFO is a plist
|
||||
holding contextual information."
|
||||
(org-e-odt-format-fontify contents 'underline))
|
||||
|
||||
|
||||
;;;; Verbatim
|
||||
|
||||
(defun org-e-odt-verbatim (verbatim contents info)
|
||||
"Transcode a VERBATIM object from Org to HTML.
|
||||
CONTENTS is nil. INFO is a plist used as a communication
|
||||
channel."
|
||||
(org-e-odt-emphasis
|
||||
verbatim (org-element-property :value verbatim) info))
|
||||
(org-e-odt-format-fontify (org-element-property :value verbatim) 'verbatim))
|
||||
|
||||
|
||||
;;;; Verse Block
|
||||
|
@ -49,12 +49,12 @@
|
||||
;; `verse-block' types can contain Org objects and plain text.
|
||||
;;
|
||||
;; Objects are related to document's contents. Some of them are
|
||||
;; recursive. Associated types are of the following: `emphasis',
|
||||
;; recursive. Associated types are of the following: `bold', `code',
|
||||
;; `entity', `export-snippet', `footnote-reference',
|
||||
;; `inline-babel-call', `inline-src-block', `latex-fragment',
|
||||
;; `line-break', `link', `macro', `radio-target', `statistics-cookie',
|
||||
;; `subscript', `superscript', `table-cell', `target', `time-stamp'
|
||||
;; and `verbatim'.
|
||||
;; `inline-babel-call', `inline-src-block', `italic',
|
||||
;; `latex-fragment', `line-break', `link', `macro', `radio-target',
|
||||
;; `statistics-cookie', `strike-through', `subscript', `superscript',
|
||||
;; `table-cell', `target', `time-stamp', `underline' and `verbatim'.
|
||||
;;
|
||||
;; Some elements also have special properties whose value can hold
|
||||
;; objects themselves (i.e. an item tag or an headline name). Such
|
||||
@ -1639,78 +1639,113 @@ CONTENTS is verse block contents."
|
||||
|
||||
|
||||
;;; Objects
|
||||
|
||||
;;
|
||||
;; Unlike to elements, interstices can be found between objects.
|
||||
;; That's why, along with the parser, successor functions are provided
|
||||
;; for each object. Some objects share the same successor
|
||||
;; (i.e. `emphasis' and `verbatim' objects).
|
||||
|
||||
;; for each object. Some objects share the same successor (i.e. `code'
|
||||
;; and `verbatim' objects).
|
||||
;;
|
||||
;; A successor must accept a single argument bounding the search. It
|
||||
;; will return either a cons cell whose CAR is the object's type, as
|
||||
;; a symbol, and CDR the position of its next occurrence, or nil.
|
||||
|
||||
;;
|
||||
;; Successors follow the naming convention:
|
||||
;; org-element-NAME-successor, where NAME is the name of the
|
||||
;; successor, as defined in `org-element-all-successors'.
|
||||
|
||||
;;
|
||||
;; Some object types (i.e. `emphasis') are recursive. Restrictions on
|
||||
;; object types they can contain will be specified in
|
||||
;; `org-element-object-restrictions'.
|
||||
|
||||
;;
|
||||
;; Adding a new type of object is simple. Implement a successor,
|
||||
;; a parser, and an interpreter for it, all following the naming
|
||||
;; convention. Register type in `org-element-all-objects' and
|
||||
;; successor in `org-element-all-successors'. Maybe tweak
|
||||
;; restrictions about it, and that's it.
|
||||
|
||||
;;;; Emphasis
|
||||
|
||||
(defun org-element-emphasis-parser ()
|
||||
"Parse text markup object at point.
|
||||
;;;; Bold
|
||||
|
||||
Return a list whose CAR is `emphasis' and CDR is a plist with
|
||||
`:marker', `:begin', `:end', `:contents-begin' and
|
||||
`:contents-end' and `:post-blank' keywords.
|
||||
(defun org-element-bold-parser ()
|
||||
"Parse bold object at point.
|
||||
|
||||
Assume point is at the first emphasis marker."
|
||||
Return a list whose CAR is `bold' and CDR is a plist with
|
||||
`:begin', `:end', `:contents-begin' and `:contents-end' and
|
||||
`:post-blank' keywords.
|
||||
|
||||
Assume point is at the first star marker."
|
||||
(save-excursion
|
||||
(unless (bolp) (backward-char 1))
|
||||
(looking-at org-emph-re)
|
||||
(let ((begin (match-beginning 2))
|
||||
(marker (org-match-string-no-properties 3))
|
||||
(contents-begin (match-beginning 4))
|
||||
(contents-end (match-end 4))
|
||||
(post-blank (progn (goto-char (match-end 2))
|
||||
(skip-chars-forward " \t")))
|
||||
(end (point)))
|
||||
`(emphasis
|
||||
(:marker ,marker
|
||||
:begin ,begin
|
||||
:end ,end
|
||||
:contents-begin ,contents-begin
|
||||
:contents-end ,contents-end
|
||||
:post-blank ,post-blank)))))
|
||||
`(bold
|
||||
(:begin ,begin
|
||||
:end ,end
|
||||
:contents-begin ,contents-begin
|
||||
:contents-end ,contents-end
|
||||
:post-blank ,post-blank)))))
|
||||
|
||||
(defun org-element-emphasis-interpreter (emphasis contents)
|
||||
"Interpret EMPHASIS object as Org syntax.
|
||||
(defun org-element-bold-interpreter (bold contents)
|
||||
"Interpret BOLD object as Org syntax.
|
||||
CONTENTS is the contents of the object."
|
||||
(let ((marker (org-element-property :marker emphasis)))
|
||||
(concat marker contents marker)))
|
||||
(format "*%s*" contents))
|
||||
|
||||
(defun org-element-text-markup-successor (limit)
|
||||
"Search for the next emphasis or verbatim object.
|
||||
"Search for the next text-markup object.
|
||||
|
||||
LIMIT bounds the search.
|
||||
|
||||
Return value is a cons cell whose CAR is `emphasis' or `verbatim'
|
||||
Return value is a cons cell whose CAR is a symbol among `bold',
|
||||
`italic', `underline', `strike-through', `code' and `verbatim'
|
||||
and CDR is beginning position."
|
||||
(save-excursion
|
||||
(unless (bolp) (backward-char))
|
||||
(when (re-search-forward org-emph-re limit t)
|
||||
(cons (if (nth 4 (assoc (match-string 3) org-emphasis-alist))
|
||||
'verbatim
|
||||
'emphasis)
|
||||
(match-beginning 2)))))
|
||||
(let ((marker (match-string 3)))
|
||||
(cons (cond
|
||||
((equal marker "*") 'bold)
|
||||
((equal marker "/") 'italic)
|
||||
((equal marker "_") 'underline)
|
||||
((equal marker "+") 'strike-through)
|
||||
((equal marker "~") 'code)
|
||||
((equal marker "=") 'verbatim)
|
||||
(t (error "Unknown marker at %d" (match-beginning 3))))
|
||||
(match-beginning 2))))))
|
||||
|
||||
|
||||
;;;; Code
|
||||
|
||||
(defun org-element-code-parser ()
|
||||
"Parse code object at point.
|
||||
|
||||
Return a list whose CAR is `code' and CDR is a plist with
|
||||
`:value', `:begin', `:end' and `:post-blank' keywords.
|
||||
|
||||
Assume point is at the first tilde marker."
|
||||
(save-excursion
|
||||
(unless (bolp) (backward-char 1))
|
||||
(looking-at org-emph-re)
|
||||
(let ((begin (match-beginning 2))
|
||||
(value (org-match-string-no-properties 4))
|
||||
(post-blank (progn (goto-char (match-end 2))
|
||||
(skip-chars-forward " \t")))
|
||||
(end (point)))
|
||||
`(code
|
||||
(:value ,value
|
||||
:begin ,begin
|
||||
:end ,end
|
||||
:post-blank ,post-blank)))))
|
||||
|
||||
(defun org-element-code-interpreter (code contents)
|
||||
"Interpret CODE object as Org syntax.
|
||||
CONTENTS is nil."
|
||||
(format "~%s~" (org-element-property :value code)))
|
||||
|
||||
|
||||
;;;; Entity
|
||||
|
||||
@ -2008,6 +2043,37 @@ CDR is beginning position."
|
||||
(when (re-search-forward org-babel-inline-src-block-regexp limit t)
|
||||
(cons 'inline-src-block (match-beginning 1)))))
|
||||
|
||||
;;;; Italic
|
||||
|
||||
(defun org-element-italic-parser ()
|
||||
"Parse italic object at point.
|
||||
|
||||
Return a list whose CAR is `italic' and CDR is a plist with
|
||||
`:begin', `:end', `:contents-begin' and `:contents-end' and
|
||||
`:post-blank' keywords.
|
||||
|
||||
Assume point is at the first slash marker."
|
||||
(save-excursion
|
||||
(unless (bolp) (backward-char 1))
|
||||
(looking-at org-emph-re)
|
||||
(let ((begin (match-beginning 2))
|
||||
(contents-begin (match-beginning 4))
|
||||
(contents-end (match-end 4))
|
||||
(post-blank (progn (goto-char (match-end 2))
|
||||
(skip-chars-forward " \t")))
|
||||
(end (point)))
|
||||
`(italic
|
||||
(:begin ,begin
|
||||
:end ,end
|
||||
:contents-begin ,contents-begin
|
||||
:contents-end ,contents-end
|
||||
:post-blank ,post-blank)))))
|
||||
|
||||
(defun org-element-italic-interpreter (italic contents)
|
||||
"Interpret ITALIC object as Org syntax.
|
||||
CONTENTS is the contents of the object."
|
||||
(format "/%s/" contents))
|
||||
|
||||
|
||||
;;;; Latex Fragment
|
||||
|
||||
@ -2325,6 +2391,38 @@ CDR is beginning position."
|
||||
(cons 'statistics-cookie (match-beginning 0)))))
|
||||
|
||||
|
||||
;;;; Strike-Through
|
||||
|
||||
(defun org-element-strike-through-parser ()
|
||||
"Parse strike-through object at point.
|
||||
|
||||
Return a list whose CAR is `strike-through' and CDR is a plist
|
||||
with `:begin', `:end', `:contents-begin' and `:contents-end' and
|
||||
`:post-blank' keywords.
|
||||
|
||||
Assume point is at the first plus sign marker."
|
||||
(save-excursion
|
||||
(unless (bolp) (backward-char 1))
|
||||
(looking-at org-emph-re)
|
||||
(let ((begin (match-beginning 2))
|
||||
(contents-begin (match-beginning 4))
|
||||
(contents-end (match-end 4))
|
||||
(post-blank (progn (goto-char (match-end 2))
|
||||
(skip-chars-forward " \t")))
|
||||
(end (point)))
|
||||
`(strike-through
|
||||
(:begin ,begin
|
||||
:end ,end
|
||||
:contents-begin ,contents-begin
|
||||
:contents-end ,contents-end
|
||||
:post-blank ,post-blank)))))
|
||||
|
||||
(defun org-element-strike-through-interpreter (strike-through contents)
|
||||
"Interpret STRIKE-THROUGH object as Org syntax.
|
||||
CONTENTS is the contents of the object."
|
||||
(format "+%s+" contents))
|
||||
|
||||
|
||||
;;;; Subscript
|
||||
|
||||
(defun org-element-subscript-parser ()
|
||||
@ -2562,37 +2660,65 @@ beginning position."
|
||||
(cons 'time-stamp (match-beginning 0)))))
|
||||
|
||||
|
||||
;;;; Underline
|
||||
|
||||
(defun org-element-underline-parser ()
|
||||
"Parse underline object at point.
|
||||
|
||||
Return a list whose CAR is `underline' and CDR is a plist with
|
||||
`:begin', `:end', `:contents-begin' and `:contents-end' and
|
||||
`:post-blank' keywords.
|
||||
|
||||
Assume point is at the first underscore marker."
|
||||
(save-excursion
|
||||
(unless (bolp) (backward-char 1))
|
||||
(looking-at org-emph-re)
|
||||
(let ((begin (match-beginning 2))
|
||||
(contents-begin (match-beginning 4))
|
||||
(contents-end (match-end 4))
|
||||
(post-blank (progn (goto-char (match-end 2))
|
||||
(skip-chars-forward " \t")))
|
||||
(end (point)))
|
||||
`(underline
|
||||
(:begin ,begin
|
||||
:end ,end
|
||||
:contents-begin ,contents-begin
|
||||
:contents-end ,contents-end
|
||||
:post-blank ,post-blank)))))
|
||||
|
||||
(defun org-element-underline-interpreter (underline contents)
|
||||
"Interpret UNDERLINE object as Org syntax.
|
||||
CONTENTS is the contents of the object."
|
||||
(format "_%s_" contents))
|
||||
|
||||
|
||||
;;;; Verbatim
|
||||
|
||||
(defun org-element-verbatim-parser ()
|
||||
"Parse verbatim object at point.
|
||||
|
||||
Return a list whose CAR is `verbatim' and CDR is a plist with
|
||||
`:marker', `:begin', `:end' and `:post-blank' keywords.
|
||||
`:value', `:begin', `:end' and `:post-blank' keywords.
|
||||
|
||||
Assume point is at the first verbatim marker."
|
||||
Assume point is at the first equal sign marker."
|
||||
(save-excursion
|
||||
(unless (bolp) (backward-char 1))
|
||||
(looking-at org-emph-re)
|
||||
(let ((begin (match-beginning 2))
|
||||
(marker (org-match-string-no-properties 3))
|
||||
(value (org-match-string-no-properties 4))
|
||||
(post-blank (progn (goto-char (match-end 2))
|
||||
(skip-chars-forward " \t")))
|
||||
(end (point)))
|
||||
`(verbatim
|
||||
(:marker ,marker
|
||||
:begin ,begin
|
||||
:end ,end
|
||||
:value ,value
|
||||
:post-blank ,post-blank)))))
|
||||
(:value ,value
|
||||
:begin ,begin
|
||||
:end ,end
|
||||
:post-blank ,post-blank)))))
|
||||
|
||||
(defun org-element-verbatim-interpreter (verbatim contents)
|
||||
"Interpret VERBATIM object as Org syntax.
|
||||
CONTENTS is nil."
|
||||
(let ((marker (org-element-property :marker verbatim))
|
||||
(value (org-element-property :value verbatim)))
|
||||
(concat marker value marker)))
|
||||
(format "=%s=" (org-element-property :value verbatim)))
|
||||
|
||||
|
||||
|
||||
@ -2645,7 +2771,9 @@ CONTENTS is nil."
|
||||
|
||||
(defconst org-element-object-successor-alist
|
||||
'((subscript . sub/superscript) (superscript . sub/superscript)
|
||||
(emphasis . text-markup) (verbatim . text-markup)
|
||||
(bold . text-markup) (code . text-markup) (italic . text-markup)
|
||||
(strike-through . text-markup) (underline . text-markup)
|
||||
(verbatim . text-markup) (verbatim . text-markup)
|
||||
(entity . latex-or-entity) (latex-fragment . latex-or-entity))
|
||||
"Alist of translations between object type and successor name.
|
||||
|
||||
@ -2660,7 +2788,8 @@ regexp matching one object can also match the other object.")
|
||||
"Complete list of object types.")
|
||||
|
||||
(defconst org-element-recursive-objects
|
||||
'(emphasis link macro subscript radio-target superscript table-cell)
|
||||
'(bold italic link macro subscript radio-target strike-through superscript
|
||||
table-cell underline)
|
||||
"List of recursive object types.")
|
||||
|
||||
(defconst org-element-non-recursive-block-alist
|
||||
@ -2721,8 +2850,8 @@ This list is checked after translations have been applied. See
|
||||
`org-element-keyword-translation-alist'.")
|
||||
|
||||
(defconst org-element-object-restrictions
|
||||
`((emphasis entity export-snippet inline-babel-call inline-src-block link
|
||||
radio-target sub/superscript target text-markup time-stamp)
|
||||
`((bold entity export-snippet inline-babel-call inline-src-block link
|
||||
radio-target sub/superscript target text-markup time-stamp)
|
||||
(footnote-reference entity export-snippet footnote-reference
|
||||
inline-babel-call inline-src-block latex-fragment
|
||||
line-break link macro radio-target sub/superscript
|
||||
@ -2732,6 +2861,8 @@ This list is checked after translations have been applied. See
|
||||
time-stamp)
|
||||
(inlinetask entity inline-babel-call inline-src-block latex-fragment link
|
||||
macro radio-target sub/superscript text-markup time-stamp)
|
||||
(italic entity export-snippet inline-babel-call inline-src-block link
|
||||
radio-target sub/superscript target text-markup time-stamp)
|
||||
(item entity inline-babel-call latex-fragment macro radio-target
|
||||
sub/superscript target text-markup)
|
||||
(keyword entity latex-fragment macro sub/superscript text-markup)
|
||||
@ -2740,6 +2871,9 @@ This list is checked after translations have been applied. See
|
||||
(macro macro)
|
||||
(paragraph ,@org-element-all-successors)
|
||||
(radio-target entity export-snippet latex-fragment sub/superscript)
|
||||
(strike-through entity export-snippet inline-babel-call inline-src-block
|
||||
link radio-target sub/superscript target text-markup
|
||||
time-stamp)
|
||||
(subscript entity export-snippet inline-babel-call inline-src-block
|
||||
latex-fragment sub/superscript text-markup)
|
||||
(superscript entity export-snippet inline-babel-call inline-src-block
|
||||
@ -2747,6 +2881,8 @@ This list is checked after translations have been applied. See
|
||||
(table-cell entity export-snippet latex-fragment link macro radio-target
|
||||
sub/superscript target text-markup time-stamp)
|
||||
(table-row table-cell)
|
||||
(underline entity export-snippet inline-babel-call inline-src-block link
|
||||
radio-target sub/superscript target text-markup time-stamp)
|
||||
(verse-block entity footnote-reference inline-babel-call inline-src-block
|
||||
latex-fragment line-break link macro radio-target
|
||||
sub/superscript target text-markup time-stamp))
|
||||
|
@ -177,8 +177,10 @@ way they are handled must be hard-coded into
|
||||
`org-export-get-inbuffer-options' function.")
|
||||
|
||||
(defconst org-export-filters-alist
|
||||
'((:filter-babel-call . org-export-filter-babel-call-functions)
|
||||
'((:filter-bold . org-export-filter-bold-functions)
|
||||
(:filter-babel-call . org-export-filter-babel-call-functions)
|
||||
(:filter-center-block . org-export-filter-center-block-functions)
|
||||
(:filter-code . org-export-filter-code-functions)
|
||||
(:filter-comment . org-export-filter-comment-functions)
|
||||
(:filter-comment-block . org-export-filter-comment-block-functions)
|
||||
(:filter-drawer . org-export-filter-drawer-functions)
|
||||
@ -197,6 +199,7 @@ way they are handled must be hard-coded into
|
||||
(:filter-inline-babel-call . org-export-filter-inline-babel-call-functions)
|
||||
(:filter-inline-src-block . org-export-filter-inline-src-block-functions)
|
||||
(:filter-inlinetask . org-export-filter-inlinetask-functions)
|
||||
(:filter-italic . org-export-filter-italic-functions)
|
||||
(:filter-item . org-export-filter-item-functions)
|
||||
(:filter-keyword . org-export-filter-keyword-functions)
|
||||
(:filter-latex-environment . org-export-filter-latex-environment-functions)
|
||||
@ -216,6 +219,7 @@ way they are handled must be hard-coded into
|
||||
(:filter-special-block . org-export-filter-special-block-functions)
|
||||
(:filter-src-block . org-export-filter-src-block-functions)
|
||||
(:filter-statistics-cookie . org-export-filter-statistics-cookie-functions)
|
||||
(:filter-strike-through . org-export-filter-strike-through-functions)
|
||||
(:filter-subscript . org-export-filter-subscript-functions)
|
||||
(:filter-superscript . org-export-filter-superscript-functions)
|
||||
(:filter-table . org-export-filter-table-functions)
|
||||
@ -223,6 +227,7 @@ way they are handled must be hard-coded into
|
||||
(:filter-table-row . org-export-filter-table-row-functions)
|
||||
(:filter-target . org-export-filter-target-functions)
|
||||
(:filter-time-stamp . org-export-filter-time-stamp-functions)
|
||||
(:filter-underline . org-export-filter-underline-functions)
|
||||
(:filter-verbatim . org-export-filter-verbatim-functions)
|
||||
(:filter-verse-block . org-export-filter-verse-block-functions))
|
||||
"Alist between filters properties and initial values.
|
||||
@ -258,8 +263,9 @@ rules.")
|
||||
|
||||
;; Configuration for the masses.
|
||||
|
||||
;; They should never be evaled directly, as their value is to be
|
||||
;; They should never be accessed directly, as their value is to be
|
||||
;; stored in a property list (cf. `org-export-option-alist').
|
||||
;; Back-ends will read their value from there instead.
|
||||
|
||||
(defgroup org-export nil
|
||||
"Options for exporting Org mode files."
|
||||
@ -583,7 +589,9 @@ e.g. \"timestamp:nil\"."
|
||||
|
||||
(defcustom org-export-with-todo-keywords t
|
||||
"Non-nil means include TODO keywords in export.
|
||||
When nil, remove all these keywords from the export.")
|
||||
When nil, remove all these keywords from the export."
|
||||
:group 'org-export-general
|
||||
:type 'boolean)
|
||||
|
||||
(defcustom org-export-allow-BIND 'confirm
|
||||
"Non-nil means allow #+BIND to define local variable values for export.
|
||||
@ -1697,6 +1705,7 @@ code executed, on a copy of original buffer's area being
|
||||
exported. Visibility is the same as in the original one. Point
|
||||
is left at the beginning of the new one.")
|
||||
|
||||
|
||||
;;;; Special Filters
|
||||
|
||||
(defvar org-export-filter-parse-tree-functions nil
|
||||
@ -1725,317 +1734,301 @@ nil.")
|
||||
|
||||
(defvar org-export-filter-center-block-functions nil
|
||||
"List of functions applied to a transcoded center block.
|
||||
Each filter is called with three arguments: the transcoded center
|
||||
block, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-drawer-functions nil
|
||||
"List of functions applied to a transcoded drawer.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
drawer, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-dynamic-block-functions nil
|
||||
"List of functions applied to a transcoded dynamic-block.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
dynamic-block, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-headline-functions nil
|
||||
"List of functions applied to a transcoded headline.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
headline, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-inlinetask-functions nil
|
||||
"List of functions applied to a transcoded inlinetask.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
inlinetask, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-plain-list-functions nil
|
||||
"List of functions applied to a transcoded plain-list.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
plain-list, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-item-functions nil
|
||||
"List of functions applied to a transcoded item.
|
||||
Each filter is called with three arguments: the transcoded item,
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-comment-functions nil
|
||||
"List of functions applied to a transcoded comment.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
comment, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-comment-block-functions nil
|
||||
"List of functions applied to a transcoded comment-comment.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
comment-block, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-example-block-functions nil
|
||||
"List of functions applied to a transcoded example-block.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
example-block, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-export-block-functions nil
|
||||
"List of functions applied to a transcoded export-block.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
export-block, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-fixed-width-functions nil
|
||||
"List of functions applied to a transcoded fixed-width.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
fixed-width, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-footnote-definition-functions nil
|
||||
"List of functions applied to a transcoded footnote-definition.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
footnote-definition, as a string, the back-end, as a symbol, and
|
||||
the communication channel, as a plist. It must return a string
|
||||
or nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-horizontal-rule-functions nil
|
||||
"List of functions applied to a transcoded horizontal-rule.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
horizontal-rule, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-keyword-functions nil
|
||||
"List of functions applied to a transcoded keyword.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
keyword, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-latex-environment-functions nil
|
||||
"List of functions applied to a transcoded latex-environment.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
latex-environment, as a string, the back-end, as a symbol, and
|
||||
the communication channel, as a plist. It must return a string
|
||||
or nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-babel-call-functions nil
|
||||
"List of functions applied to a transcoded babel-call.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
babel-call, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-paragraph-functions nil
|
||||
"List of functions applied to a transcoded paragraph.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
paragraph, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-property-drawer-functions nil
|
||||
"List of functions applied to a transcoded property-drawer.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
property-drawer, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-quote-block-functions nil
|
||||
"List of functions applied to a transcoded quote block.
|
||||
Each filter is called with three arguments: the transcoded quote
|
||||
block, as a string, the back-end, as a symbol, and the
|
||||
data, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
|
||||
(defvar org-export-filter-quote-section-functions nil
|
||||
"List of functions applied to a transcoded quote-section.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
quote-section, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-section-functions nil
|
||||
"List of functions applied to a transcoded section.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
section, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-special-block-functions nil
|
||||
"List of functions applied to a transcoded special block.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
special block, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-src-block-functions nil
|
||||
"List of functions applied to a transcoded src-block.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
src-block, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-table-functions nil
|
||||
"List of functions applied to a transcoded table.
|
||||
Each filter is called with three arguments: the transcoded table,
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-table-cell-functions nil
|
||||
"List of functions applied to a transcoded table-cell.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
table-cell, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-table-row-functions nil
|
||||
"List of functions applied to a transcoded table-row.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
table-row, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-verse-block-functions nil
|
||||
"List of functions applied to a transcoded verse block.
|
||||
Each filter is called with three arguments: the transcoded verse
|
||||
block, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
|
||||
;;;; Objects Filters
|
||||
|
||||
(defvar org-export-filter-emphasis-functions nil
|
||||
"List of functions applied to a transcoded emphasis.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
emphasis, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
(defvar org-export-filter-bold-functions nil
|
||||
"List of functions applied to transcoded bold text.
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-code-functions nil
|
||||
"List of functions applied to transcoded code text.
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-entity-functions nil
|
||||
"List of functions applied to a transcoded entity.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
entity, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-export-snippet-functions nil
|
||||
"List of functions applied to a transcoded export-snippet.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
export-snippet, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-footnote-reference-functions nil
|
||||
"List of functions applied to a transcoded footnote-reference.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
footnote-reference, as a string, the back-end, as a symbol, and
|
||||
the communication channel, as a plist. It must return a string
|
||||
or nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-inline-babel-call-functions nil
|
||||
"List of functions applied to a transcoded inline-babel-call.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
inline-babel-call, as a string, the back-end, as a symbol, and
|
||||
the communication channel, as a plist. It must return a string
|
||||
or nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-inline-src-block-functions nil
|
||||
"List of functions applied to a transcoded inline-src-block.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
inline-src-block, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-italic-functions nil
|
||||
"List of functions applied to transcoded italic text.
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-latex-fragment-functions nil
|
||||
"List of functions applied to a transcoded latex-fragment.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
latex-fragment, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-line-break-functions nil
|
||||
"List of functions applied to a transcoded line-break.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
line-break, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-link-functions nil
|
||||
"List of functions applied to a transcoded link.
|
||||
Each filter is called with three arguments: the transcoded link,
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-macro-functions nil
|
||||
"List of functions applied to a transcoded macro.
|
||||
Each filter is called with three arguments: the transcoded macro,
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-radio-target-functions nil
|
||||
"List of functions applied to a transcoded radio-target.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
radio-target, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-statistics-cookie-functions nil
|
||||
"List of functions applied to a transcoded statistics-cookie.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
statistics-cookie, as a string, the back-end, as a symbol, and
|
||||
the communication channel, as a plist. It must return a string
|
||||
or nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-strike-through-functions nil
|
||||
"List of functions applied to transcoded strike-through text.
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-subscript-functions nil
|
||||
"List of functions applied to a transcoded subscript.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
subscript, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-superscript-functions nil
|
||||
"List of functions applied to a transcoded superscript.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
superscript, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-target-functions nil
|
||||
"List of functions applied to a transcoded target.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
target, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-time-stamp-functions nil
|
||||
"List of functions applied to a transcoded time-stamp.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
time-stamp, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-underline-functions nil
|
||||
"List of functions applied to transcoded underline text.
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defvar org-export-filter-verbatim-functions nil
|
||||
"List of functions applied to a transcoded verbatim.
|
||||
Each filter is called with three arguments: the transcoded
|
||||
verbatim, as a string, the back-end, as a symbol, and the
|
||||
communication channel, as a plist. It must return a string or
|
||||
nil.")
|
||||
"List of functions applied to transcoded verbatim text.
|
||||
Each filter is called with three arguments: the transcoded data,
|
||||
as a string, the back-end, as a symbol, and the communication
|
||||
channel, as a plist. It must return a string or nil.")
|
||||
|
||||
(defun org-export-filter-apply-functions (filters value info)
|
||||
"Call every function in FILTERS.
|
||||
|
@ -650,6 +650,14 @@ Paragraph \\alpha."
|
||||
(equal (org-test-parse-and-interpret "#+BEGIN_VERSE\nTest\n#+END_VERSE")
|
||||
"#+BEGIN_VERSE\nTest\n#+END_VERSE\n")))
|
||||
|
||||
(ert-deftest test-org-element/bold-interpreter ()
|
||||
"Test bold interpreter."
|
||||
(should (equal (org-test-parse-and-interpret "*text*") "*text*\n")))
|
||||
|
||||
(ert-deftest test-org-element/code-interpreter ()
|
||||
"Test code interpreter."
|
||||
(should (equal (org-test-parse-and-interpret "~text~") "~text~\n")))
|
||||
|
||||
(ert-deftest test-org-element/entity-interpreter ()
|
||||
"Test entity interpreter."
|
||||
;; 1. Without brackets.
|
||||
@ -702,6 +710,10 @@ Paragraph \\alpha."
|
||||
"src_emacs-lisp[:results silent]{(+ 1 1)}")
|
||||
"src_emacs-lisp[:results silent]{(+ 1 1)}\n")))
|
||||
|
||||
(ert-deftest test-org-element/italic-interpreter ()
|
||||
"Test italic interpreter."
|
||||
(should (equal (org-test-parse-and-interpret "/text/") "/text/\n")))
|
||||
|
||||
(ert-deftest test-org-element/latex-fragment-interpreter ()
|
||||
"Test latex fragment interpreter."
|
||||
(let ((org-latex-regexps
|
||||
@ -772,6 +784,10 @@ Paragraph \\alpha."
|
||||
;; 2. With percent.
|
||||
(should (equal (org-test-parse-and-interpret "[66%]") "[66%]\n")))
|
||||
|
||||
(ert-deftest test-org-element/strike-through-interpreter ()
|
||||
"Test strike through interpreter."
|
||||
(should (equal (org-test-parse-and-interpret "+target+") "+target+\n")))
|
||||
|
||||
(ert-deftest test-org-element/subscript-interpreter ()
|
||||
"Test subscript interpreter."
|
||||
;; 1. Without brackets.
|
||||
@ -790,6 +806,14 @@ Paragraph \\alpha."
|
||||
"Test target interpreter."
|
||||
(should (equal (org-test-parse-and-interpret "<<target>>") "<<target>>\n")))
|
||||
|
||||
(ert-deftest test-org-element/underline-interpreter ()
|
||||
"Test underline interpreter."
|
||||
(should (equal (org-test-parse-and-interpret "_text_") "_text_\n")))
|
||||
|
||||
(ert-deftest test-org-element/verbatim-interpreter ()
|
||||
"Test verbatim interpreter."
|
||||
(should (equal (org-test-parse-and-interpret "=text=") "=text=\n")))
|
||||
|
||||
|
||||
|
||||
;;;; Normalize contents
|
||||
@ -820,8 +844,8 @@ Paragraph \\alpha."
|
||||
(should
|
||||
(equal
|
||||
(org-element-normalize-contents
|
||||
'(paragraph nil " Two spaces " (emphasis nil " and\n One space")))
|
||||
'(paragraph nil " Two spaces " (emphasis nil " and\nOne space"))))
|
||||
'(paragraph nil " Two spaces " (bold nil " and\n One space")))
|
||||
'(paragraph nil " Two spaces " (bold nil " and\nOne space"))))
|
||||
;; 5. When optional argument is provided, ignore first line
|
||||
;; indentation.
|
||||
(should
|
||||
|
Loading…
x
Reference in New Issue
Block a user