summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorBastien Guerry <bzg@gnu.org>2013-12-06 12:21:31 +0100
committerBastien Guerry <bzg@gnu.org>2013-12-06 12:21:31 +0100
commit73d3db828e8149847b3666acbc38f94898ac15a9 (patch)
tree7cd2d596b9cd5c2c54aef94c4cdf900e99009401 /lisp
parent64ed4306fc76b2b5386deef8cdd101a2dfe13b74 (diff)
downloademacs-73d3db828e8149847b3666acbc38f94898ac15a9.tar.gz
Merge Org 8.2.4
Diffstat (limited to 'lisp')
-rw-r--r--lisp/org/ChangeLog184
-rw-r--r--lisp/org/ob-latex.el6
-rw-r--r--lisp/org/ob-plantuml.el4
-rw-r--r--lisp/org/ob-python.el4
-rw-r--r--lisp/org/ob-ruby.el4
-rw-r--r--lisp/org/org-agenda.el19
-rw-r--r--lisp/org/org-archive.el1
-rw-r--r--lisp/org/org-clock.el3
-rw-r--r--lisp/org/org-colview.el5
-rw-r--r--lisp/org/org-compat.el10
-rw-r--r--lisp/org/org-crypt.el10
-rw-r--r--lisp/org/org-docview.el8
-rw-r--r--lisp/org/org-element.el10
-rw-r--r--lisp/org/org-id.el4
-rw-r--r--lisp/org/org-macs.el8
-rw-r--r--lisp/org/org-table.el5
-rw-r--r--lisp/org/org.el356
-rw-r--r--lisp/org/ox-ascii.el161
-rw-r--r--lisp/org/ox-html.el92
-rw-r--r--lisp/org/ox-latex.el24
-rw-r--r--lisp/org/ox-odt.el43
-rw-r--r--lisp/org/ox-publish.el5
-rw-r--r--lisp/org/ox-texinfo.el32
-rw-r--r--lisp/org/ox.el32
24 files changed, 604 insertions, 426 deletions
diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog
index a9d2731892f..fa9dc824c99 100644
--- a/lisp/org/ChangeLog
+++ b/lisp/org/ChangeLog
@@ -1,3 +1,187 @@
+2013-12-06 Achim Gratz <Stromeko@Stromeko.DE>
+
+ * org-crypt.el: Declare `epg-context´.
+ (org-encrypt-string): Correct indentation.
+
+ * org.el (org-version): Replace `_version´ by `version1´.
+
+2013-12-06 Alexander Vorobiev <alexander.vorobiev@gmail.com> (tiny change)
+
+ * org-compat.el (org-get-x-clipboard): Use w32-get-clipboard-data
+ to get the clipboard data under Windows.
+
+2013-12-06 Bastien Guerry <bzg@gnu.org>
+
+ * ox.el (org-export-with-sub-superscripts):
+ * org.el (org-use-sub-superscripts): Fix version and enhance
+ docstring again.
+
+ * ox.el (org-export-with-sub-superscripts):
+ * org.el (org-use-sub-superscripts): Enhance docstrings.
+
+ * org-macs.el (org-autoload): Delete.
+
+ * org-docview.el ("docview"): Fix declarations and require
+ doc-view directly.
+
+ * org-id.el (org-id-copy)
+ (org-id-get-with-outline-path-completion)
+ (org-id-get-with-outline-drilling, org-id-new):
+
+ * org-colview.el:
+ (org-colview-initial-truncate-line-value)
+ (org-columns-open-link, org-string-to-number):
+ * org-clock.el:
+ (org-clock-put-overlay, org-count-quarter, org-clock-loaded):
+ * org-archive.el (org-get-local-archive-location):
+ * org-agenda.el (org-agenda-todo-custom-ignore-p):
+ Autoload.
+
+ * org.el (org-return-follows-link):
+ * ob-python.el (org-babel-python-command): Don't use :set.
+
+ * ox-odt.el (org-odt-content-template-file): Fix version.
+
+ * ox-texinfo.el (org-texinfo-filename): Fix default value.
+ (org-texinfo-format-headline-function): Use 'ignore as the
+ default value.
+ (org-texinfo-format-drawer-function): Use a function as the
+ default value. Update docstring.
+ (org-texinfo-drawer): Always use
+ `org-texinfo-format-drawer-function' as it is now a function
+ by default.
+ (org-texinfo-headline): Compare
+ `org-texinfo-format-headline-function' against 'ignore.
+ (org-texinfo-inlinetask): Compare
+ `org-texinfo-format-inlinetask-function' against 'ignore.
+
+ * ox-odt.el (org-odt-format-drawer-function): Use a function as
+ the default value. Update docstring.
+ (org-odt-format-headline-function)
+ (org-odt-format-inlinetask-function): Fix default value.
+ (org-odt-drawer): Always use `org-odt-format-drawer-function'
+ as it is now a function by default.
+ (org-odt-format-headline--wrap): Compare
+ `org-odt-format-headline-function' against 'ignore.
+
+ * ox-latex.el (org-latex-format-drawer-function): Use a function
+ as the default value. Update docstring.
+ (org-latex-format-inlinetask-function): Fix default value.
+ (org-latex-drawer): Always use
+ `org-latex-format-drawer-function' as it is now a function by
+ default.
+ (org-latex-inlinetask): Compare
+ `org-latex-format-inlinetask-function' against 'ignore.
+
+ * ox-html.el (org-html-format-drawer-function): Use a function as
+ the default value. Update docstring.
+ (org-html-format-headline-function)
+ (org-html-format-inlinetask-function): Fix default value.
+ (org-html--format-toc-headline)
+ (org-html-format-headline--wrap): Compare
+ `org-html-format-headline-function' against 'ignore.
+ (org-html-inlinetask): Compare
+ `org-html-format-inlinetask-function' against 'ignore.
+
+ * ox-ascii.el (org-ascii-format-drawer-function): Use a
+ function as the default value. Update docstring.
+ (org-ascii-drawer): Always use
+ `org-ascii-format-drawer-function' as it is now a function by
+ default.
+ (org-ascii-format-inlinetask-default): New function.
+ (org-ascii-format-inlinetask-function): Use
+ `org-ascii-format-inlinetask-default' as the default.
+
+ * org.el (org-mouse-1-follows-link): Use :set to set the default
+ value. Update custom type.
+ (org-log-note-headings): Fix order or list items in the custom
+ type.
+ (orgstruct-heading-prefix-regexp): Use an empty string as the
+ default value. Use 'regexp as the custom type.
+ (orgstruct-make-binding): Tiny docstring enhancement. Assume
+ `orgstruct-heading-prefix-regexp' is a string.
+
+ * org-agenda.el (org-agenda-search-view-max-outline-level): Set
+ default value to 0. Update docstring.
+ (org-agenda-deadline-leaders): Fix custom type.
+ (org-search-view): Assume
+ `org-agenda-search-view-max-outline-level' is a number.
+
+ * ob-ruby.el (org-babel-ruby-nil-to): Fix custom type.
+
+ * ob-python.el (org-babel-python-mode): Use :set to set the
+ default value.
+ (org-babel-python-None-to): Fix custom type.
+
+ * ob-plantuml.el (org-plantuml-jar-path): Fix default value.
+ (org-babel-execute:plantuml): Assume `org-plantuml-jar-path' is a
+ string.
+
+ * ob-latex.el (org-babel-latex-htlatex): Fix default value.
+ (org-babel-latex-htlatex-packages): Fix custom type.
+ (org-babel-execute:latex): Assume `org-babel-latex-htlatex' is a
+ string.
+
+ * ox-odt.el (org-odt-display-outline-level): Fix version.
+
+ * ox-odt.el (org-odt-inline-formula-rules)
+ (org-odt-inline-image-rules, org-odt-use-date-fields): Add version
+ and package-version.
+
+ * ox-html.el (org-html-format-drawer-function)
+ (org-html-format-headline-function)
+ (org-html-format-inlinetask-function)
+ (org-html-creator-string): Add version and package-version.
+
+ * ox-html.el (org-html-text-markup-alist): Fix version.
+
+ * org-agenda.el (org-agenda-set-restriction-lock): Autoload.
+
+ * ob-abc.el (org-babel-expand-body:abc): Use dolist.
+ (org-babel-execute:abc): Fix regexp quoting.
+
+ * ob-calc.el (org--var-syms): Rename from `var-syms'.
+
+ * ob-lilypond.el (ly-compile-lilyfile): Remove redundant
+ let-binding.
+
+ * ob-table.el (sbe): Move debug declaration.
+
+ * org-clock.el (org--msg-extra): Rename from `msg-extra'.
+
+2013-12-06 Nicolas Goaziou <n.goaziou@gmail.com>
+
+ * org.el (org-ctrl-c-ctrl-c): When point is on an unsupported
+ object, look for something to do at a higher level instead of
+ bailing out.
+
+ * ox-html.el (org-html-format-latex): Add an argument. Ensure
+ latex header is the same as specified in the original buffer when
+ exporting a LaTeX fragment or environment.
+ (org-html-latex-environment, org-html-latex-fragment): Apply
+ signature change.
+
+ * ox-publish.el (org-publish-cache-ctime-of-src): Return an error
+ when publishing a non-existent file.
+
+ * org-element.el (org-element-paragraph-separate): More accurate
+ regexp.
+
+ * org.el (org-entry-get): Widen buffer in order to retrieve
+ properties, as `org-entry-properties' and
+ `org-entry-get-with-inheritance' already do.
+
+ * ox-html.el (org-html--format-toc-headline): Add missing headline
+ number in TOC entries.
+
+ * org.el (org-entry-properties): Ignore narrowing when retrieving
+ current headline properties.
+
+2013-12-06 Thierry Volpiatto <thierry.volpiatto@gmail.com> (tiny change)
+
+ * org-crypt.el (org-encrypt-string, org-encrypt-entry)
+ (org-decrypt-entry): Fix warning.
+
2013-11-17 Paul Eggert <eggert@cs.ucla.edu>
Spelling fixes.
diff --git a/lisp/org/ob-latex.el b/lisp/org/ob-latex.el
index edc9fe8813f..85918e60bb7 100644
--- a/lisp/org/ob-latex.el
+++ b/lisp/org/ob-latex.el
@@ -50,7 +50,7 @@
'((:results . "latex") (:exports . "results"))
"Default arguments to use when evaluating a LaTeX source block.")
-(defcustom org-babel-latex-htlatex nil
+(defcustom org-babel-latex-htlatex ""
"The htlatex command to enable conversion of latex to SVG or HTML."
:group 'org-babel
:type 'string)
@@ -59,7 +59,7 @@
'("[usenames]{color}" "{tikz}" "{color}" "{listings}" "{amsmath}")
"Packages to use for htlatex export."
:group 'org-babel
- :type '(list string))
+ :type '(list (string)))
(defun org-babel-expand-body:latex (body params)
"Expand BODY according to PARAMS, return the expanded body."
@@ -141,7 +141,7 @@ This function is called by `org-babel-execute-src-block'."
(delete-file transient-pdf-file))))))
((and (or (string-match "\\.svg$" out-file)
(string-match "\\.html$" out-file))
- org-babel-latex-htlatex)
+ (not (string= "" org-babel-latex-htlatex)))
(with-temp-file tex-file
(insert (concat
"\\documentclass[preview]{standalone}
diff --git a/lisp/org/ob-plantuml.el b/lisp/org/ob-plantuml.el
index c17d4448a3c..f992d04da52 100644
--- a/lisp/org/ob-plantuml.el
+++ b/lisp/org/ob-plantuml.el
@@ -40,7 +40,7 @@
'((:results . "file") (:exports . "results"))
"Default arguments for evaluating a plantuml source block.")
-(defcustom org-plantuml-jar-path nil
+(defcustom org-plantuml-jar-path ""
"Path to the plantuml.jar file."
:group 'org-babel
:version "24.1"
@@ -55,7 +55,7 @@ This function is called by `org-babel-execute-src-block'."
(cmdline (cdr (assoc :cmdline params)))
(in-file (org-babel-temp-file "plantuml-"))
(java (or (cdr (assoc :java params)) ""))
- (cmd (if (not org-plantuml-jar-path)
+ (cmd (if (string= "" org-plantuml-jar-path)
(error "`org-plantuml-jar-path' is not set")
(concat "java " java " -jar "
(shell-quote-argument
diff --git a/lisp/org/ob-python.el b/lisp/org/ob-python.el
index 99c35ce2863..3c3f6646877 100644
--- a/lisp/org/ob-python.el
+++ b/lisp/org/ob-python.el
@@ -54,7 +54,7 @@ This will typically be either 'python or 'python-mode."
:group 'org-babel
:version "24.4"
:package-version '(Org . "8.0")
- :type 'function)
+ :type 'symbol)
(defvar org-src-preserve-indentation)
@@ -70,7 +70,7 @@ This will typically be either 'python or 'python-mode."
:group 'org-babel
:version "24.4"
:package-version '(Org . "8.0")
- :type 'string)
+ :type 'symbol)
(defun org-babel-execute:python (body params)
"Execute a block of Python code with Babel.
diff --git a/lisp/org/ob-ruby.el b/lisp/org/ob-ruby.el
index fe1ee0ff098..34b9eaf47ca 100644
--- a/lisp/org/ob-ruby.el
+++ b/lisp/org/ob-ruby.el
@@ -62,9 +62,7 @@
:group 'org-babel
:version "24.4"
:package-version '(Org . "8.0")
- :type 'string)
-
-
+ :type 'symbol)
(defun org-babel-execute:ruby (body params)
"Execute a block of Ruby code with Babel.
diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el
index 5ef92f7aaeb..4dfa3e9e3cf 100644
--- a/lisp/org/org-agenda.el
+++ b/lisp/org/org-agenda.el
@@ -1419,13 +1419,14 @@ When nil, they may also match part of a word."
:version "24.1"
:type 'boolean)
-(defcustom org-agenda-search-view-max-outline-level nil
+(defcustom org-agenda-search-view-max-outline-level 0
"Maximum outline level to display in search view.
E.g. when this is set to 1, the search view will only
-show headlines of level 1."
+show headlines of level 1. When set to 0, the default
+value, don't limit agenda view by outline level."
:group 'org-agenda-search-view
:version "24.4"
- :package-version '(Org . "8.0")
+ :package-version '(Org . "8.3")
:type 'integer)
(defgroup org-agenda-time-grid nil
@@ -1746,10 +1747,9 @@ to capture the number of days."
:version "24.4"
:package-version '(Org . "8.0")
:type '(list
- (string :tag "Deadline today ")
- (choice :tag "Deadline relative"
- (string :tag "Format string")
- (function))))
+ (string :tag "Deadline today ")
+ (string :tag "Deadline in the future ")
+ (string :tag "Deadline in the past ")))
(defcustom org-agenda-remove-times-when-in-prefix t
"Non-nil means remove duplicate time specifications in agenda items.
@@ -4583,7 +4583,7 @@ in `org-agenda-text-search-extra-files'."
(goto-char (max (point-min) (1- (point))))
(while (re-search-forward regexp nil t)
(org-back-to-heading t)
- (while (and org-agenda-search-view-max-outline-level
+ (while (and (not (zerop org-agenda-search-view-max-outline-level))
(> (org-reduced-level (org-outline-level))
org-agenda-search-view-max-outline-level)
(forward-line -1)
@@ -4593,7 +4593,7 @@ in `org-agenda-text-search-extra-files'."
beg1 (point)
end (progn
(outline-next-heading)
- (while (and org-agenda-search-view-max-outline-level
+ (while (and (not (zerop org-agenda-search-view-max-outline-level))
(> (org-reduced-level (org-outline-level))
org-agenda-search-view-max-outline-level)
(forward-line 1)
@@ -5451,6 +5451,7 @@ This function is invoked if `org-agenda-todo-ignore-deadlines',
(>= days n)
(<= days n))))
+;;;###autoload
(defun org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item
(&optional end)
"Do we have a reason to ignore this TODO entry because it has a time stamp?"
diff --git a/lisp/org/org-archive.el b/lisp/org/org-archive.el
index d5bdff16f9b..3dc52c1c990 100644
--- a/lisp/org/org-archive.el
+++ b/lisp/org/org-archive.el
@@ -135,6 +135,7 @@ information."
(match-string 1))
(t org-archive-location))))))
+;;;###autoload
(defun org-add-archive-files (files)
"Splice the archive files into the list of files.
This implies visiting all these files and finding out what the
diff --git a/lisp/org/org-clock.el b/lisp/org/org-clock.el
index 978bde475d4..3238c8ca947 100644
--- a/lisp/org/org-clock.el
+++ b/lisp/org/org-clock.el
@@ -1871,6 +1871,7 @@ will be easy to remove."
(overlay-put ov 'end-glyph (make-glyph tx)))
(push ov org-clock-overlays)))
+;;;###autoload
(defun org-clock-remove-overlays (&optional beg end noremove)
"Remove the occur highlights from the buffer.
BEG and END are ignored. If NOREMOVE is nil, remove this function
@@ -2143,6 +2144,7 @@ If you can combine both, the month starting day will have priority."
((= n 3) "3rd")
((= n 4) "4th")))
+;;;###autoload
(defun org-clocktable-shift (dir n)
"Try to shift the :block date of the clocktable at point.
Point must be in the #+BEGIN: line of a clocktable, or this function
@@ -2752,6 +2754,7 @@ This function is made for clock tables."
(defvar org-clock-loaded nil
"Was the clock file loaded?")
+;;;###autoload
(defun org-clock-update-time-maybe ()
"If this is a CLOCK line, update it and return t.
Otherwise, return nil."
diff --git a/lisp/org/org-colview.el b/lisp/org/org-colview.el
index 523b42186b4..361560dcbaf 100644
--- a/lisp/org/org-colview.el
+++ b/lisp/org/org-colview.el
@@ -323,6 +323,7 @@ for the duration of the command.")
(defvar org-colview-initial-truncate-line-value nil
"Remember the value of `truncate-lines' across colview.")
+;;;###autoload
(defun org-columns-remove-overlays ()
"Remove all currently active column overlays."
(interactive)
@@ -670,6 +671,7 @@ around it."
(let ((value (get-char-property (point) 'org-columns-value)))
(org-open-link-from-string value arg)))
+;;;###autoload
(defun org-columns-get-format-and-top-level ()
(let ((fmt (org-columns-get-format)))
(org-columns-goto-top-level)
@@ -951,6 +953,8 @@ display, or in the #+COLUMNS line of the current buffer."
(defvar org-inlinetask-min-level
(if (featurep 'org-inlinetask) org-inlinetask-min-level 15))
+
+;;;###autoload
(defun org-columns-compute (property)
"Sum the values of property PROPERTY hierarchically, for the entire buffer."
(interactive)
@@ -1054,6 +1058,7 @@ display, or in the #+COLUMNS line of the current buffer."
(setq sum (+ (string-to-number (pop l)) (/ sum 60))))
sum)))
+;;;###autoload
(defun org-columns-number-to-string (n fmt &optional printf)
"Convert a computed column number to a string value, according to FMT."
(cond
diff --git a/lisp/org/org-compat.el b/lisp/org/org-compat.el
index b714f13a663..a3eb960e134 100644
--- a/lisp/org/org-compat.el
+++ b/lisp/org/org-compat.el
@@ -190,10 +190,12 @@ If DELETE is non-nil, delete all those overlays."
found))
(defun org-get-x-clipboard (value)
- "Get the value of the x clipboard, compatible with XEmacs, and GNU Emacs 21."
- (if (eq window-system 'x)
- (let ((x (org-get-x-clipboard-compat value)))
- (if x (org-no-properties x)))))
+ "Get the value of the x or Windows clipboard, compatible with XEmacs, and GNU Emacs 21."
+ (cond ((eq window-system 'x)
+ (let ((x (org-get-x-clipboard-compat value)))
+ (if x (org-no-properties x))))
+ ((and (eq window-system 'w32) (fboundp 'w32-get-clipboard-data))
+ (w32-get-clipboard-data))))
(defsubst org-decompose-region (beg end)
"Decompose from BEG to END."
diff --git a/lisp/org/org-crypt.el b/lisp/org/org-crypt.el
index b02a7ceffbd..2024144fa57 100644
--- a/lisp/org/org-crypt.el
+++ b/lisp/org/org-crypt.el
@@ -73,6 +73,8 @@
compress-algorithm))
(declare-function epg-encrypt-string "epg"
(context plain recipients &optional sign always-trust))
+(defvar epg-context)
+
(defgroup org-crypt nil
"Org Crypt."
@@ -161,8 +163,8 @@ See `org-crypt-disable-auto-save'."
(if (and (string= crypt-key (get-text-property 0 'org-crypt-key str))
(string= (sha1 str) (get-text-property 0 'org-crypt-checksum str)))
(get-text-property 0 'org-crypt-text str)
- (let ((epg-context (epg-make-context nil t t)))
- (epg-encrypt-string epg-context str (epg-list-keys epg-context crypt-key)))))
+ (set (make-local-variable 'epg-context) (epg-make-context nil t t))
+ (epg-encrypt-string epg-context str (epg-list-keys epg-context crypt-key))))
(defun org-encrypt-entry ()
"Encrypt the content of the current headline."
@@ -170,11 +172,11 @@ See `org-crypt-disable-auto-save'."
(require 'epg)
(save-excursion
(org-back-to-heading t)
+ (set (make-local-variable 'epg-context) (epg-make-context nil t t))
(let ((start-heading (point)))
(forward-line)
(when (not (looking-at "-----BEGIN PGP MESSAGE-----"))
(let ((folded (outline-invisible-p))
- (epg-context (epg-make-context nil t t))
(crypt-key (org-crypt-key-for-heading))
(beg (point))
end encrypted-text)
@@ -206,11 +208,11 @@ See `org-crypt-disable-auto-save'."
(forward-line)
(when (looking-at "-----BEGIN PGP MESSAGE-----")
(org-crypt-check-auto-save)
+ (set (make-local-variable 'epg-context) (epg-make-context nil t t))
(let* ((end (save-excursion
(search-forward "-----END PGP MESSAGE-----")
(forward-line)
(point)))
- (epg-context (epg-make-context nil t t))
(encrypted-text (buffer-substring-no-properties (point) end))
(decrypted-text
(decode-coding-string
diff --git a/lisp/org/org-docview.el b/lisp/org/org-docview.el
index 72ccc46d62a..8e61c8ab1df 100644
--- a/lisp/org/org-docview.el
+++ b/lisp/org/org-docview.el
@@ -44,12 +44,10 @@
(require 'org)
+(require 'doc-view)
-(declare-function doc-view-goto-page "ext:doc-view" (page))
-(declare-function image-mode-window-get "ext:image-mode"
- (prop &optional winprops))
-
-(org-autoload "doc-view" '(doc-view-goto-page))
+(declare-function doc-view-goto-page "doc-view" (page))
+(declare-function image-mode-window-get "image-mode" (prop &optional winprops))
(org-add-link-type "docview" 'org-docview-open 'org-docview-export)
(add-hook 'org-store-link-functions 'org-docview-store-link)
diff --git a/lisp/org/org-element.el b/lisp/org/org-element.el
index 55efb500843..61623833f77 100644
--- a/lisp/org/org-element.el
+++ b/lisp/org/org-element.el
@@ -143,10 +143,12 @@
"$" "\\|"
;; Tables (any type).
"\\(?:|\\|\\+-[-+]\\)" "\\|"
- ;; Blocks (any type), Babel calls, drawers (any type),
- ;; fixed-width areas and keywords. Note: this is only an
- ;; indication and need some thorough check.
- "[#:]" "\\|"
+ ;; Blocks (any type), Babel calls and keywords. Note: this
+ ;; is only an indication and need some thorough check.
+ "#\\(?:[+ ]\\|$\\)" "\\|"
+ ;; Drawers (any type) and fixed-width areas. This is also
+ ;; only an indication.
+ ":" "\\|"
;; Horizontal rules.
"-\\{5,\\}[ \t]*$" "\\|"
;; LaTeX environments.
diff --git a/lisp/org/org-id.el b/lisp/org/org-id.el
index f1fa05bdc70..37f6e70e821 100644
--- a/lisp/org/org-id.el
+++ b/lisp/org/org-id.el
@@ -233,6 +233,7 @@ With optional argument FORCE, force the creation of a new ID."
(org-entry-put (point) "ID" nil))
(org-id-get (point) 'create))
+;;;###autoload
(defun org-id-copy ()
"Copy the ID of the entry at point to the kill ring.
Create an ID if necessary."
@@ -258,6 +259,7 @@ In any case, the ID of the entry is returned."
(org-id-add-location id (buffer-file-name (buffer-base-buffer)))
id)))))
+;;;###autoload
(defun org-id-get-with-outline-path-completion (&optional targets)
"Use `outline-path-completion' to retrieve the ID of an entry.
TARGETS may be a setting for `org-refile-targets' to define
@@ -274,6 +276,7 @@ If necessary, the ID is created."
(prog1 (org-id-get pom 'create)
(move-marker pom nil))))
+;;;###autoload
(defun org-id-get-with-outline-drilling (&optional targets)
"Use an outline-cycling interface to retrieve the ID of an entry.
This only finds entries in the current buffer, using `org-get-location'.
@@ -320,6 +323,7 @@ With optional argument MARKERP, return the position as a new marker."
;; Creating new IDs
+;;;###autoload
(defun org-id-new (&optional prefix)
"Create a new globally unique ID.
diff --git a/lisp/org/org-macs.el b/lisp/org/org-macs.el
index 0083d293edc..4afbace56c1 100644
--- a/lisp/org/org-macs.el
+++ b/lisp/org/org-macs.el
@@ -283,14 +283,6 @@ we turn off invisibility temporarily. Use this in a `let' form."
(<= (match-beginning n) pos)
(>= (match-end n) pos)))
-(defun org-autoload (file functions)
- "Establish autoload for all FUNCTIONS in FILE, if not bound already."
- (let ((d (format "Documentation will be available after `%s.el' is loaded."
- file))
- f)
- (while (setq f (pop functions))
- (or (fboundp f) (autoload f file d t)))))
-
(defun org-match-line (re)
"Looking-at at the beginning of the current line."
(save-excursion
diff --git a/lisp/org/org-table.el b/lisp/org/org-table.el
index 1ef90443935..8418cf6fbd1 100644
--- a/lisp/org/org-table.el
+++ b/lisp/org/org-table.el
@@ -915,6 +915,7 @@ When nil, simply write \"#ERROR\" in corrupted fields.")
(setq org-table-may-need-update nil)
))
+;;;###autoload
(defun org-table-begin (&optional table-type)
"Find the beginning of the table and return its position.
With argument TABLE-TYPE, go to the beginning of a table.el-type table."
@@ -928,6 +929,7 @@ With argument TABLE-TYPE, go to the beginning of a table.el-type table."
(beginning-of-line 2)
(point))))
+;;;###autoload
(defun org-table-end (&optional table-type)
"Find the end of the table and return its position.
With argument TABLE-TYPE, go to the end of a table.el-type table."
@@ -1199,6 +1201,7 @@ Return t when the line exists, nil if it does not exist."
(< (setq cnt (1+ cnt)) N)))
(= cnt N)))
+;;;###autoload
(defun org-table-blank-field ()
"Blank the current table field or active region."
(interactive)
@@ -4121,7 +4124,7 @@ to execute outside of tables."
'(arg)
(concat "In tables, run `" (symbol-name fun) "'.\n"
"Outside of tables, run the binding of `"
- (mapconcat (lambda (x) (format "%s" x)) keys "' or `")
+ (mapconcat #'key-description keys "' or `")
"'.")
'(interactive "p")
(list 'if
diff --git a/lisp/org/org.el b/lisp/org/org.el
index 50d3842e03d..adaabebc6a5 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -309,7 +309,7 @@ When MESSAGE is non-nil, display a message with the version."
(if here
(insert version)
(message version))
- (if message (message _version))
+ (if message (message version1))
version1)))
(defconst org-version (org-version))
@@ -654,11 +654,17 @@ the following lines anywhere in the buffer:
(defcustom org-use-sub-superscripts t
"Non-nil means interpret \"_\" and \"^\" for display.
-When this option is turned on, you can use TeX-like syntax for sub- and
-superscripts. Several characters after \"_\" or \"^\" will be
-considered as a single item - so grouping with {} is normally not
-needed. For example, the following things will be parsed as single
-sub- or superscripts.
+
+If you want to control how Org exports those characters, see
+`org-export-with-sub-superscripts'. `org-use-sub-superscripts'
+used to be an alias for `org-export-with-sub-superscripts' in
+Org <8.0, it is not anymore.
+
+When this option is turned on, you can use TeX-like syntax for
+sub- and superscripts within the buffer. Several characters after
+\"_\" or \"^\" will be considered as a single item - so grouping
+with {} is normally not needed. For example, the following things
+will be parsed as single sub- or superscripts:
10^24 or 10^tau several digits will be considered 1 item.
10^-12 or 10^-tau a leading sign with digits or a word
@@ -666,13 +672,14 @@ sub- or superscripts.
terminated by almost any nonword/nondigit char.
x_{i^2} or x^(2-i) braces or parenthesis do grouping.
-Still, ambiguity is possible - so when in doubt use {} to enclose
-the sub/superscript. If you set this variable to the symbol
-`{}', the braces are *required* in order to trigger
-interpretations as sub/superscript. This can be helpful in
-documents that need \"_\" frequently in plain text."
+Still, ambiguity is possible. So when in doubt, use {} to enclose
+the sub/superscript. If you set this variable to the symbol `{}',
+the braces are *required* in order to trigger interpretations as
+sub/superscript. This can be helpful in documents that need \"_\"
+frequently in plain text."
:group 'org-startup
- :version "24.1"
+ :version "24.4"
+ :package-version '(Org . "8.0")
:type '(choice
(const :tag "Always interpret" t)
(const :tag "Only with braces" {})
@@ -1731,7 +1738,12 @@ In tables, the special behavior of RET has precedence."
A longer mouse click will still set point. Does not work on XEmacs.
Needs to be set before org.el is loaded."
:group 'org-link-follow
- :type 'boolean)
+ :version "24.4"
+ :package-version '(Org . "8.3")
+ :type '(choice
+ (const :tag "A double click follows the link" 'double)
+ (const :tag "Unconditionally follow the link with mouse-1" t)
+ (integer :tag "mouse-1 click does not follow the link if longer than N ms" 450)))
(defcustom org-mark-ring-length 4
"Number of different positions to be recorded in the ring.
@@ -2663,12 +2675,12 @@ agenda log mode depends on the format of these entries."
"Heading when changing todo state (todo sequence only)"
state) string)
(cons (const :tag "Heading when just taking a note" note) string)
- (cons (const :tag "Heading when clocking out" clock-out) string)
- (cons (const :tag "Heading when an item is no longer scheduled" delschedule) string)
(cons (const :tag "Heading when rescheduling" reschedule) string)
+ (cons (const :tag "Heading when an item is no longer scheduled" delschedule) string)
(cons (const :tag "Heading when changing deadline" redeadline) string)
(cons (const :tag "Heading when deleting a deadline" deldeadline) string)
- (cons (const :tag "Heading when refiling" refile) string)))
+ (cons (const :tag "Heading when refiling" refile) string)
+ (cons (const :tag "Heading when clocking out" clock-out) string)))
(unless (assq 'note org-log-note-headings)
(push '(note . "%t") org-log-note-headings))
@@ -4242,12 +4254,6 @@ Normal means, no org-mode-specific context."
"Detect the first line outside a table when searching from within it.
This works for both table types.")
-;; Autoload the functions in org-table.el that are needed by functions here.
-
-(eval-and-compile
- (org-autoload "org-table"
- '(org-table-begin org-table-blank-field org-table-end)))
-
(defconst org-TBLFM-regexp "^[ \t]*#\\+TBLFM: "
"Detect a #+TBLFM line.")
@@ -4328,12 +4334,6 @@ If TABLE-TYPE is non-nil, also check for table.el-type tables."
(re-search-forward org-table-any-border-regexp nil 1))))
(unless quietly (message "Mapping tables: done")))
-;; Declare and autoload functions from org-agenda.el
-
-(eval-and-compile
- (org-autoload "org-agenda"
- '(org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item)))
-
(declare-function org-clock-save-markers-for-cut-and-paste "org-clock" (beg end))
(declare-function org-clock-update-mode-line "org-clock" ())
(declare-function org-resolve-clocks "org-clock"
@@ -4359,11 +4359,6 @@ If TABLE-TYPE is non-nil, also check for table.el-type tables."
Return nil if no clock is running."
(marker-buffer org-clock-marker))
-(eval-and-compile
- (org-autoload "org-clock" '(org-clock-remove-overlays
- org-clock-update-time-maybe
- org-clocktable-shift)))
-
(defun org-check-running-clock ()
"Check if the current buffer contains the running clock.
If yes, offer to stop it and to save the buffer with the changes."
@@ -4563,33 +4558,18 @@ Otherwise, these types are allowed:
(defalias 'org-advertized-archive-subtree 'org-archive-subtree)
-(eval-and-compile
- (org-autoload "org-archive"
- '(org-add-archive-files)))
-
-;; Autoload Column View Code
+;; Declare Column View Code
(declare-function org-columns-number-to-string "org-colview" (n fmt &optional printf))
(declare-function org-columns-get-format-and-top-level "org-colview" ())
(declare-function org-columns-compute "org-colview" (property))
-(org-autoload (if (featurep 'xemacs) "org-colview-xemacs" "org-colview")
- '(org-columns-number-to-string
- org-columns-get-format-and-top-level
- org-columns-compute
- org-columns-remove-overlays))
-
-;; Autoload ID code
+;; Declare ID code
(declare-function org-id-store-link "org-id")
(declare-function org-id-locations-load "org-id")
(declare-function org-id-locations-save "org-id")
(defvar org-id-track-globally)
-(org-autoload "org-id"
- '(org-id-new
- org-id-copy
- org-id-get-with-outline-path-completion
- org-id-get-with-outline-drilling))
;;; Variables for pre-computed regular expressions, all buffer local
@@ -8850,13 +8830,13 @@ If WITH-CASE is non-nil, the sorting will be case-sensitive."
;; command. There might be problems if any of the keys is otherwise
;; used as a prefix key.
-(defcustom orgstruct-heading-prefix-regexp nil
+(defcustom orgstruct-heading-prefix-regexp ""
"Regexp that matches the custom prefix of Org headlines in
orgstruct(++)-mode."
:group 'org
:version "24.4"
- :package-version '(Org . "8.0")
- :type 'string)
+ :package-version '(Org . "8.3")
+ :type 'regexp)
;;;###autoload(put 'orgstruct-heading-prefix-regexp 'safe-local-variable 'stringp)
(defcustom orgstruct-setup-hook nil
@@ -9017,8 +8997,8 @@ buffer. It will also recognize item context in multiline items."
"Create a function for binding in the structure minor mode.
FUN is the command to call inside a table. KEY is the key that
should be checked in for a command to execute outside of tables.
-Non-nil DISABLE-WHEN-HEADING-PREFIX means to disable the command
-if `orgstruct-heading-prefix-regexp' is non-nil."
+Non-nil `disable-when-heading-prefix' means to disable the command
+if `orgstruct-heading-prefix-regexp' is not empty."
(let ((name (concat "orgstruct-hijacker-" (symbol-name fun))))
(let ((nname name)
(i 0))
@@ -9044,14 +9024,13 @@ if `orgstruct-heading-prefix-regexp' is non-nil."
(key-description key) "'."
(when disable-when-heading-prefix
(concat
- "\nIf `orgstruct-heading-prefix-regexp' is non-nil, this command will always fall\n"
+ "\nIf `orgstruct-heading-prefix-regexp' is not empty, this command will always fall\n"
"back to the default binding due to limitations of Org's implementation of\n"
"`" (symbol-name fun) "'.")))
(interactive "p")
(let* ((disable
- ,(when disable-when-heading-prefix
- '(and orgstruct-heading-prefix-regexp
- (not (string= orgstruct-heading-prefix-regexp "")))))
+ ,(and disable-when-heading-prefix
+ '(not (string= orgstruct-heading-prefix-regexp ""))))
(fallback
(or disable
(not
@@ -15204,103 +15183,102 @@ is a string only get exactly this property. SPECIFIC can be a string, the
specific property we are interested in. Specifying it can speed
things up because then unnecessary parsing is avoided."
(setq which (or which 'all))
- (org-with-point-at pom
- (let ((clockstr (substring org-clock-string 0 -1))
- (excluded '("TODO" "TAGS" "ALLTAGS" "PRIORITY" "BLOCKED"))
- (case-fold-search nil)
- beg end range props sum-props key key1 value string clocksum clocksumt)
- (save-excursion
- (when (condition-case nil
- (and (derived-mode-p 'org-mode) (org-back-to-heading t))
- (error nil))
- (setq beg (point))
- (setq sum-props (get-text-property (point) 'org-summaries))
- (setq clocksum (get-text-property (point) :org-clock-minutes)
- clocksumt (get-text-property (point) :org-clock-minutes-today))
- (outline-next-heading)
- (setq end (point))
- (when (memq which '(all special))
- ;; Get the special properties, like TODO and tags
- (goto-char beg)
- (when (and (or (not specific) (string= specific "TODO"))
- (looking-at org-todo-line-regexp) (match-end 2))
- (push (cons "TODO" (org-match-string-no-properties 2)) props))
- (when (and (or (not specific) (string= specific "PRIORITY"))
- (looking-at org-priority-regexp))
- (push (cons "PRIORITY" (org-match-string-no-properties 2)) props))
- (when (or (not specific) (string= specific "FILE"))
- (push (cons "FILE" buffer-file-name) props))
- (when (and (or (not specific) (string= specific "TAGS"))
- (setq value (org-get-tags-string))
- (string-match "\\S-" value))
- (push (cons "TAGS" value) props))
- (when (and (or (not specific) (string= specific "ALLTAGS"))
- (setq value (org-get-tags-at)))
- (push (cons "ALLTAGS" (concat ":" (mapconcat 'identity value ":")
- ":"))
- props))
- (when (or (not specific) (string= specific "BLOCKED"))
- (push (cons "BLOCKED" (if (org-entry-blocked-p) "t" "")) props))
- (when (or (not specific)
- (member specific
- '("SCHEDULED" "DEADLINE" "CLOCK" "CLOSED"
- "TIMESTAMP" "TIMESTAMP_IA")))
- (catch 'match
- (while (re-search-forward org-maybe-keyword-time-regexp end t)
- (setq key (if (match-end 1)
- (substring (org-match-string-no-properties 1)
- 0 -1))
- string (if (equal key clockstr)
- (org-trim
- (buffer-substring-no-properties
- (match-beginning 3) (goto-char
- (point-at-eol))))
- (substring (org-match-string-no-properties 3)
- 1 -1)))
- ;; Get the correct property name from the key. This is
- ;; necessary if the user has configured time keywords.
- (setq key1 (concat key ":"))
- (cond
- ((not key)
- (setq key
- (if (= (char-after (match-beginning 3)) ?\[)
- "TIMESTAMP_IA" "TIMESTAMP")))
- ((equal key1 org-scheduled-string) (setq key "SCHEDULED"))
- ((equal key1 org-deadline-string) (setq key "DEADLINE"))
- ((equal key1 org-closed-string) (setq key "CLOSED"))
- ((equal key1 org-clock-string) (setq key "CLOCK")))
- (if (and specific (equal key specific) (not (equal key "CLOCK")))
- (progn
- (push (cons key string) props)
- ;; no need to search further if match is found
- (throw 'match t))
- (when (or (equal key "CLOCK") (not (assoc key props)))
- (push (cons key string) props)))))))
-
- (when (memq which '(all standard))
- ;; Get the standard properties, like :PROP: ...
- (setq range (org-get-property-block beg end))
- (when range
- (goto-char (car range))
- (while (re-search-forward org-property-re
- (cdr range) t)
- (setq key (org-match-string-no-properties 2)
- value (org-trim (or (org-match-string-no-properties 3) "")))
- (unless (member key excluded)
- (push (cons key (or value "")) props)))))
- (if clocksum
- (push (cons "CLOCKSUM"
- (org-columns-number-to-string (/ (float clocksum) 60.)
- 'add_times))
- props))
- (if clocksumt
- (push (cons "CLOCKSUM_T"
- (org-columns-number-to-string (/ (float clocksumt) 60.)
- 'add_times))
- props))
- (unless (assoc "CATEGORY" props)
- (push (cons "CATEGORY" (org-get-category)) props))
- (append sum-props (nreverse props)))))))
+ (org-with-wide-buffer
+ (org-with-point-at pom
+ (let ((clockstr (substring org-clock-string 0 -1))
+ (excluded '("TODO" "TAGS" "ALLTAGS" "PRIORITY" "BLOCKED"))
+ (case-fold-search nil)
+ beg end range props sum-props key key1 value string clocksum clocksumt)
+ (when (and (derived-mode-p 'org-mode)
+ (ignore-errors (org-back-to-heading t)))
+ (setq beg (point))
+ (setq sum-props (get-text-property (point) 'org-summaries))
+ (setq clocksum (get-text-property (point) :org-clock-minutes)
+ clocksumt (get-text-property (point) :org-clock-minutes-today))
+ (outline-next-heading)
+ (setq end (point))
+ (when (memq which '(all special))
+ ;; Get the special properties, like TODO and tags
+ (goto-char beg)
+ (when (and (or (not specific) (string= specific "TODO"))
+ (looking-at org-todo-line-regexp) (match-end 2))
+ (push (cons "TODO" (org-match-string-no-properties 2)) props))
+ (when (and (or (not specific) (string= specific "PRIORITY"))
+ (looking-at org-priority-regexp))
+ (push (cons "PRIORITY" (org-match-string-no-properties 2)) props))
+ (when (or (not specific) (string= specific "FILE"))
+ (push (cons "FILE" buffer-file-name) props))
+ (when (and (or (not specific) (string= specific "TAGS"))
+ (setq value (org-get-tags-string))
+ (string-match "\\S-" value))
+ (push (cons "TAGS" value) props))
+ (when (and (or (not specific) (string= specific "ALLTAGS"))
+ (setq value (org-get-tags-at)))
+ (push (cons "ALLTAGS" (concat ":" (mapconcat 'identity value ":")
+ ":"))
+ props))
+ (when (or (not specific) (string= specific "BLOCKED"))
+ (push (cons "BLOCKED" (if (org-entry-blocked-p) "t" "")) props))
+ (when (or (not specific)
+ (member specific
+ '("SCHEDULED" "DEADLINE" "CLOCK" "CLOSED"
+ "TIMESTAMP" "TIMESTAMP_IA")))
+ (catch 'match
+ (while (re-search-forward org-maybe-keyword-time-regexp end t)
+ (setq key (if (match-end 1)
+ (substring (org-match-string-no-properties 1)
+ 0 -1))
+ string (if (equal key clockstr)
+ (org-trim
+ (buffer-substring-no-properties
+ (match-beginning 3) (goto-char
+ (point-at-eol))))
+ (substring (org-match-string-no-properties 3)
+ 1 -1)))
+ ;; Get the correct property name from the key. This is
+ ;; necessary if the user has configured time keywords.
+ (setq key1 (concat key ":"))
+ (cond
+ ((not key)
+ (setq key
+ (if (= (char-after (match-beginning 3)) ?\[)
+ "TIMESTAMP_IA" "TIMESTAMP")))
+ ((equal key1 org-scheduled-string) (setq key "SCHEDULED"))
+ ((equal key1 org-deadline-string) (setq key "DEADLINE"))
+ ((equal key1 org-closed-string) (setq key "CLOSED"))
+ ((equal key1 org-clock-string) (setq key "CLOCK")))
+ (if (and specific (equal key specific) (not (equal key "CLOCK")))
+ (progn
+ (push (cons key string) props)
+ ;; no need to search further if match is found
+ (throw 'match t))
+ (when (or (equal key "CLOCK") (not (assoc key props)))
+ (push (cons key string) props)))))))
+
+ (when (memq which '(all standard))
+ ;; Get the standard properties, like :PROP: ...
+ (setq range (org-get-property-block beg end))
+ (when range
+ (goto-char (car range))
+ (while (re-search-forward org-property-re
+ (cdr range) t)
+ (setq key (org-match-string-no-properties 2)
+ value (org-trim (or (org-match-string-no-properties 3) "")))
+ (unless (member key excluded)
+ (push (cons key (or value "")) props)))))
+ (if clocksum
+ (push (cons "CLOCKSUM"
+ (org-columns-number-to-string (/ (float clocksum) 60.)
+ 'add_times))
+ props))
+ (if clocksumt
+ (push (cons "CLOCKSUM_T"
+ (org-columns-number-to-string (/ (float clocksumt) 60.)
+ 'add_times))
+ props))
+ (unless (assoc "CATEGORY" props)
+ (push (cons "CATEGORY" (org-get-category)) props))
+ (append sum-props (nreverse props)))))))
(defun org-entry-get (pom property &optional inherit literal-nil)
"Get value of PROPERTY for entry or content at point-or-marker POM.
@@ -15320,30 +15298,32 @@ when a \"nil\" value can supersede a non-nil value higher up the hierarchy."
t))
(org-entry-get-with-inheritance property literal-nil)
(if (member property org-special-properties)
- ;; We need a special property. Use `org-entry-properties' to
- ;; retrieve it, but specify the wanted property
+ ;; We need a special property. Use `org-entry-properties'
+ ;; to retrieve it, but specify the wanted property
(cdr (assoc property (org-entry-properties nil 'special property)))
- (let ((range (org-get-property-block)))
- (when (and range (not (eq (car range) (cdr range))))
- (let* ((props (list (or (assoc property org-file-properties)
- (assoc property org-global-properties)
- (assoc property org-global-properties-fixed))))
- (ap (lambda (key)
- (when (re-search-forward
- (org-re-property key) (cdr range) t)
- (setq props
- (org-update-property-plist
- key
- (if (match-end 3)
- (org-match-string-no-properties 3) "")
- props)))))
- val)
- (goto-char (car range))
- (funcall ap property)
- (goto-char (car range))
- (while (funcall ap (concat property "+")))
- (setq val (cdr (assoc property props)))
- (when val (if literal-nil val (org-not-nil val))))))))))
+ (org-with-wide-buffer
+ (let ((range (org-get-property-block)))
+ (when (and range (not (eq (car range) (cdr range))))
+ (let* ((props
+ (list (or (assoc property org-file-properties)
+ (assoc property org-global-properties)
+ (assoc property org-global-properties-fixed))))
+ (ap (lambda (key)
+ (when (re-search-forward
+ (org-re-property key) (cdr range) t)
+ (setq props
+ (org-update-property-plist
+ key
+ (if (match-end 3)
+ (org-match-string-no-properties 3) "")
+ props)))))
+ val)
+ (goto-char (car range))
+ (funcall ap property)
+ (goto-char (car range))
+ (while (funcall ap (concat property "+")))
+ (setq val (cdr (assoc property props)))
+ (when val (if literal-nil val (org-not-nil val)))))))))))
(defun org-property-or-variable-value (var &optional inherit)
"Check if there is a property fixing the value of VAR.
@@ -19525,9 +19505,6 @@ because, in this case the deletion might narrow the column."
(put 'org-self-insert-command 'pabbrev-expand-after-command t)
(put 'orgtbl-self-insert-command 'pabbrev-expand-after-command t)
-;; How to do this: Measure non-white length of current string
-;; If equal to column width, we should realign.
-
(defun org-remap (map &rest commands)
"In MAP, remap the functions given in COMMANDS.
COMMANDS is a list of alternating OLDDEF NEWDEF command names."
@@ -20237,10 +20214,17 @@ This command does many different things, depending on context:
(if (save-excursion (beginning-of-line) (looking-at "[ \t]*$"))
(or (run-hook-with-args-until-success 'org-ctrl-c-ctrl-c-final-hook)
(user-error "C-c C-c can do nothing useful at this location"))
- ;; When at a link, act according to the parent instead.
- (when (eq type 'link)
- (setq context (org-element-property :parent context))
- (setq type (org-element-type context)))
+ (case type
+ ;; When at a link, act according to the parent instead.
+ (link (setq context (org-element-property :parent context))
+ (setq type (org-element-type context)))
+ ;; Unsupported object types: check parent element instead.
+ ((bold code entity export-snippet inline-babel-call inline-src-block
+ italic latex-fragment line-break macro strike-through subscript
+ superscript underline verbatim)
+ (while (and (setq context (org-element-property :parent context))
+ (not (memq (setq type (org-element-type context))
+ '(paragraph verse-block)))))))
;; For convenience: at the first line of a paragraph on the
;; same line as an item, apply function on that item instead.
(when (eq type 'paragraph)
diff --git a/lisp/org/ox-ascii.el b/lisp/org/ox-ascii.el
index 5b41d2d3989..55bda8368e0 100644
--- a/lisp/org/ox-ascii.el
+++ b/lisp/org/ox-ascii.el
@@ -336,7 +336,8 @@ Otherwise, place it right after it."
:package-version '(Org . "8.0")
:type 'string)
-(defcustom org-ascii-format-drawer-function nil
+(defcustom org-ascii-format-drawer-function
+ (lambda (name contents width) contents)
"Function called to format a drawer in ASCII.
The function must accept three parameters:
@@ -347,63 +348,32 @@ The function must accept three parameters:
The function should return either the string to be exported or
nil to ignore the drawer.
-For example, the variable could be set to the following function
-in order to mimic default behaviour:
-
-\(defun org-ascii-format-drawer-default (name contents width)
- \"Format a drawer element for ASCII export.\"
- contents)"
+The default value simply returns the value of CONTENTS."
:group 'org-export-ascii
:version "24.4"
:package-version '(Org . "8.0")
:type 'function)
-(defcustom org-ascii-format-inlinetask-function nil
+(defcustom org-ascii-format-inlinetask-function
+ 'org-ascii-format-inlinetask-default
"Function called to format an inlinetask in ASCII.
-The function must accept six parameters:
- TODO the todo keyword, as a string
- TODO-TYPE the todo type, a symbol among `todo', `done' and nil.
- PRIORITY the inlinetask priority, as a string
- NAME the inlinetask name, as a string.
- TAGS the inlinetask tags, as a list of strings.
- CONTENTS the contents of the inlinetask, as a string.
+The function must accept nine parameters:
+ TODO the todo keyword, as a string
+ TODO-TYPE the todo type, a symbol among `todo', `done' and nil.
+ PRIORITY the inlinetask priority, as a string
+ NAME the inlinetask name, as a string.
+ TAGS the inlinetask tags, as a list of strings.
+ CONTENTS the contents of the inlinetask, as a string.
+ WIDTH the width of the inlinetask, as a number.
+ INLINETASK the inlinetask itself.
+ INFO the info channel.
The function should return either the string to be exported or
-nil to ignore the inline task.
-
-For example, the variable could be set to the following function
-in order to mimic default behaviour:
-
-\(defun org-ascii-format-inlinetask-default
- \(todo type priority name tags contents\)
- \"Format an inline task element for ASCII export.\"
- \(let* \(\(utf8p \(eq \(plist-get info :ascii-charset\) 'utf-8\)\)
- \(width org-ascii-inlinetask-width\)
- \(org-ascii--indent-string
- \(concat
- ;; Top line, with an additional blank line if not in UTF-8.
- \(make-string width \(if utf8p ?━ ?_\)\) \"\\n\"
- \(unless utf8p \(concat \(make-string width ? \) \"\\n\"\)\)
- ;; Add title. Fill it if wider than inlinetask.
- \(let \(\(title \(org-ascii--build-title inlinetask info width\)\)\)
- \(if \(<= \(length title\) width\) title
- \(org-ascii--fill-string title width info\)\)\)
- \"\\n\"
- ;; If CONTENTS is not empty, insert it along with
- ;; a separator.
- \(when \(org-string-nw-p contents\)
- \(concat \(make-string width \(if utf8p ?─ ?-\)\) \"\\n\" contents\)\)
- ;; Bottom line.
- \(make-string width \(if utf8p ?━ ?_\)\)\)
- ;; Flush the inlinetask to the right.
- \(- \(plist-get info :ascii-width\)
- \(plist-get info :ascii-margin\)
- \(plist-get info :ascii-inner-margin\)
- \(org-ascii--current-text-width inlinetask info\)\)"
+nil to ignore the inline task."
:group 'org-export-ascii
:version "24.4"
- :package-version '(Org . "8.0")
+ :package-version '(Org . "8.3")
:type 'function)
@@ -1071,11 +1041,7 @@ CONTENTS holds the contents of the block. INFO is a plist
holding contextual information."
(let ((name (org-element-property :drawer-name drawer))
(width (org-ascii--current-text-width drawer info)))
- (if (functionp org-ascii-format-drawer-function)
- (funcall org-ascii-format-drawer-function name contents width)
- ;; If there's no user defined function: simply
- ;; display contents of the drawer.
- contents)))
+ (funcall org-ascii-format-drawer-function name contents width)))
;;;; Dynamic Block
@@ -1228,55 +1194,58 @@ contextual information."
;;;; Inlinetask
+(defun org-ascii-format-inlinetask-default
+ (todo type priority name tags contents width inlinetask info)
+ "Format an inline task element for ASCII export.
+See `org-ascii-format-inlinetask-function' for a description
+of the paramaters."
+ (let* ((utf8p (eq (plist-get info :ascii-charset) 'utf-8))
+ (width (or width org-ascii-inlinetask-width)))
+ (org-ascii--indent-string
+ (concat
+ ;; Top line, with an additional blank line if not in UTF-8.
+ (make-string width (if utf8p ?━ ?_)) "\n"
+ (unless utf8p (concat (make-string width ? ) "\n"))
+ ;; Add title. Fill it if wider than inlinetask.
+ (let ((title (org-ascii--build-title inlinetask info width)))
+ (if (<= (length title) width) title
+ (org-ascii--fill-string title width info)))
+ "\n"
+ ;; If CONTENTS is not empty, insert it along with
+ ;; a separator.
+ (when (org-string-nw-p contents)
+ (concat (make-string width (if utf8p ?─ ?-)) "\n" contents))
+ ;; Bottom line.
+ (make-string width (if utf8p ?━ ?_)))
+ ;; Flush the inlinetask to the right.
+ (- org-ascii-text-width org-ascii-global-margin
+ (if (not (org-export-get-parent-headline inlinetask)) 0
+ org-ascii-inner-margin)
+ (org-ascii--current-text-width inlinetask info)))))
+
(defun org-ascii-inlinetask (inlinetask contents info)
"Transcode an INLINETASK element from Org to ASCII.
CONTENTS holds the contents of the block. INFO is a plist
holding contextual information."
(let ((width (org-ascii--current-text-width inlinetask info)))
- ;; If `org-ascii-format-inlinetask-function' is provided, call it
- ;; with appropriate arguments.
- (if (functionp org-ascii-format-inlinetask-function)
- (funcall org-ascii-format-inlinetask-function
- ;; todo.
- (and (plist-get info :with-todo-keywords)
- (let ((todo (org-element-property
- :todo-keyword inlinetask)))
- (and todo (org-export-data todo info))))
- ;; todo-type
- (org-element-property :todo-type inlinetask)
- ;; priority
- (and (plist-get info :with-priority)
- (org-element-property :priority inlinetask))
- ;; title
- (org-export-data (org-element-property :title inlinetask) info)
- ;; tags
- (and (plist-get info :with-tags)
- (org-element-property :tags inlinetask))
- ;; contents and width
- contents width)
- ;; Otherwise, use a default template.
- (let* ((utf8p (eq (plist-get info :ascii-charset) 'utf-8)))
- (org-ascii--indent-string
- (concat
- ;; Top line, with an additional blank line if not in UTF-8.
- (make-string width (if utf8p ?━ ?_)) "\n"
- (unless utf8p (concat (make-string width ? ) "\n"))
- ;; Add title. Fill it if wider than inlinetask.
- (let ((title (org-ascii--build-title inlinetask info width)))
- (if (<= (length title) width) title
- (org-ascii--fill-string title width info)))
- "\n"
- ;; If CONTENTS is not empty, insert it along with
- ;; a separator.
- (when (org-string-nw-p contents)
- (concat (make-string width (if utf8p ?─ ?-)) "\n" contents))
- ;; Bottom line.
- (make-string width (if utf8p ?━ ?_)))
- ;; Flush the inlinetask to the right.
- (- org-ascii-text-width org-ascii-global-margin
- (if (not (org-export-get-parent-headline inlinetask)) 0
- org-ascii-inner-margin)
- (org-ascii--current-text-width inlinetask info)))))))
+ (funcall org-ascii-format-inlinetask-function
+ ;; todo.
+ (and (plist-get info :with-todo-keywords)
+ (let ((todo (org-element-property
+ :todo-keyword inlinetask)))
+ (and todo (org-export-data todo info))))
+ ;; todo-type
+ (org-element-property :todo-type inlinetask)
+ ;; priority
+ (and (plist-get info :with-priority)
+ (org-element-property :priority inlinetask))
+ ;; title
+ (org-export-data (org-element-property :title inlinetask) info)
+ ;; tags
+ (and (plist-get info :with-tags)
+ (org-element-property :tags inlinetask))
+ ;; contents and width
+ contents width inlinetask info)))
;;;; Italic
diff --git a/lisp/org/ox-html.el b/lisp/org/ox-html.el
index b4094d3e44c..44962a533e5 100644
--- a/lisp/org/ox-html.el
+++ b/lisp/org/ox-html.el
@@ -130,7 +130,9 @@
(:infojs-opt "INFOJS_OPT" nil nil)
;; Redefine regular options.
(:creator "CREATOR" nil org-html-creator-string)
- (:with-latex nil "tex" org-html-with-latex)))
+ (:with-latex nil "tex" org-html-with-latex)
+ ;; Retrieve LaTeX header for fragments.
+ (:latex-header "LATEX_HEADER" nil nil newline)))
;;; Internal Variables
@@ -544,6 +546,8 @@ 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-html
+ :version "24.4"
+ :package-version '(Org . "8.0")
:type '(alist :key-type (symbol :tag "Markup type")
:value-type (string :tag "Format string"))
:options '(bold code italic strike-through underline verbatim))
@@ -565,7 +569,8 @@ Warning: non-nil may break indentation of source code blocks."
;;;; Drawers
-(defcustom org-html-format-drawer-function nil
+(defcustom org-html-format-drawer-function
+ (lambda (name contents) contents)
"Function called to format a drawer in HTML code.
The function must accept two parameters:
@@ -577,10 +582,10 @@ The function should return the string to be exported.
For example, the variable could be set to the following function
in order to mimic default behaviour:
-\(defun org-html-format-drawer-default \(name contents\)
- \"Format a drawer element for HTML export.\"
- contents\)"
+The default value simply returns the value of CONTENTS."
:group 'org-export-html
+ :version "24.4"
+ :package-version '(Org . "8.0")
:type 'function)
;;;; Footnotes
@@ -622,7 +627,7 @@ document title."
:group 'org-export-html
:type 'integer)
-(defcustom org-html-format-headline-function nil
+(defcustom org-html-format-headline-function 'ignore
"Function to format headline text.
This function will be called with 5 arguments:
@@ -634,6 +639,8 @@ TAGS the tags (string or nil).
The function result will be used in the section format string."
:group 'org-export-html
+ :version "24.4"
+ :package-version '(Org . "8.0")
:type 'function)
;;;; HTML-specific
@@ -649,7 +656,7 @@ attributes, when appropriate."
;;;; Inlinetasks
-(defcustom org-html-format-inlinetask-function nil
+(defcustom org-html-format-inlinetask-function 'ignore
"Function called to format an inlinetask in HTML code.
The function must accept six parameters:
@@ -662,6 +669,8 @@ The function must accept six parameters:
The function should return the string to be exported."
:group 'org-export-html
+ :version "24.4"
+ :package-version '(Org . "8.0")
:type 'function)
;;;; LaTeX
@@ -1119,6 +1128,8 @@ like that: \"%%\"."
"Information about the creator of the HTML document.
This option can also be set on with the CREATOR keyword."
:group 'org-export-html
+ :version "24.4"
+ :package-version '(Org . "8.0")
:type '(string :tag "Creator string"))
;;;; Template :: Preamble
@@ -1971,7 +1982,8 @@ and value is its relative level, as an integer."
(defun org-html--format-toc-headline (headline info)
"Return an appropriate table of contents entry for HEADLINE.
INFO is a plist used as a communication channel."
- (let* ((todo (and (plist-get info :with-todo-keywords)
+ (let* ((headline-number (org-export-get-headline-number headline info))
+ (todo (and (plist-get info :with-todo-keywords)
(let ((todo (org-element-property :todo-keyword headline)))
(and todo (org-export-data todo info)))))
(todo-type (and todo (org-element-property :todo-type headline)))
@@ -1992,19 +2004,23 @@ INFO is a plist used as a communication channel."
(tags (and (eq (plist-get info :with-tags) t)
(org-export-get-tags headline info))))
(format "<a href=\"#%s\">%s</a>"
+ ;; Label.
(org-export-solidify-link-text
(or (org-element-property :CUSTOM_ID headline)
(concat "sec-"
- (mapconcat
- #'number-to-string
- (org-export-get-headline-number headline info)
- "-"))))
- (apply (if (functionp org-html-format-headline-function)
- (lambda (todo todo-type priority text tags &rest ignore)
- (funcall org-html-format-headline-function
- todo todo-type priority text tags))
- #'org-html-format-headline)
- todo todo-type priority text tags :section-number nil))))
+ (mapconcat #'number-to-string headline-number "-"))))
+ ;; Body.
+ (concat
+ (and (not (org-export-low-level-p headline info))
+ (org-export-numbered-headline-p headline info)
+ (concat (mapconcat #'number-to-string headline-number ".")
+ ". "))
+ (apply (if (not (eq org-html-format-headline-function 'ignore))
+ (lambda (todo todo-type priority text tags &rest ignore)
+ (funcall org-html-format-headline-function
+ todo todo-type priority text tags))
+ #'org-html-format-headline)
+ todo todo-type priority text tags :section-number nil)))))
(defun org-html-list-of-listings (info)
"Build a list of listings.
@@ -2244,7 +2260,7 @@ holding contextual information."
headline-number "-"))))
(format-function
(cond ((functionp format-function) format-function)
- ((functionp org-html-format-headline-function)
+ ((not (eq org-html-format-headline-function 'ignore))
(lambda (todo todo-type priority text tags &rest ignore)
(funcall org-html-format-headline-function
todo todo-type priority text tags)))
@@ -2371,9 +2387,9 @@ contextual information."
CONTENTS holds the contents of the block. INFO is a plist
holding contextual information."
(cond
- ;; If `org-html-format-inlinetask-function' is provided, call it
+ ;; If `org-html-format-inlinetask-function' is not 'ignore, call it
;; with appropriate arguments.
- ((functionp org-html-format-inlinetask-function)
+ ((not (eq org-html-format-inlinetask-function 'ignore))
(let ((format-function
(function*
(lambda (todo todo-type priority text tags
@@ -2474,18 +2490,34 @@ CONTENTS is nil. INFO is a plist holding contextual information."
;;;; Latex Environment
-(defun org-html-format-latex (latex-frag processing-type)
- "Format a LaTeX fragment LATEX-FRAG into HTML."
+(defun org-html-format-latex (latex-frag processing-type info)
+ "Format a LaTeX fragment LATEX-FRAG into HTML.
+PROCESSING-TYPE designates the tool used for conversion. It is
+a symbol among `mathjax', `dvipng', `imagemagick', `verbatim' nil
+and t. See `org-html-with-latex' for more information. INFO is
+a plist containing export properties."
(let ((cache-relpath "") (cache-dir ""))
(unless (eq processing-type 'mathjax)
(let ((bfn (or (buffer-file-name)
(make-temp-name
- (expand-file-name "latex" temporary-file-directory)))))
+ (expand-file-name "latex" temporary-file-directory))))
+ (latex-header
+ (let ((header (plist-get info :latex-header)))
+ (and header
+ (concat (mapconcat
+ (lambda (line) (concat "#+LATEX_HEADER: " line))
+ (org-split-string header "\n")
+ "\n")
+ "\n")))))
(setq cache-relpath
(concat "ltxpng/"
(file-name-sans-extension
(file-name-nondirectory bfn)))
- cache-dir (file-name-directory bfn))))
+ cache-dir (file-name-directory bfn))
+ ;; Re-create LaTeX environment from original buffer in
+ ;; temporary buffer so that dvipng/imagemagick can properly
+ ;; turn the fragment into an image.
+ (setq latex-frag (concat latex-header latex-frag))))
(with-temp-buffer
(insert latex-frag)
(org-format-latex cache-relpath cache-dir nil "Creating LaTeX Image..."
@@ -2501,9 +2533,10 @@ CONTENTS is nil. INFO is a plist holding contextual information."
(attributes (org-export-read-attribute :attr_html latex-environment)))
(case processing-type
((t mathjax)
- (org-html-format-latex latex-frag 'mathjax))
+ (org-html-format-latex latex-frag 'mathjax info))
((dvipng imagemagick)
- (let ((formula-link (org-html-format-latex latex-frag processing-type)))
+ (let ((formula-link
+ (org-html-format-latex latex-frag processing-type info)))
(when (and formula-link (string-match "file:\\([^]]*\\)" formula-link))
;; Do not provide a caption or a name to be consistent with
;; `mathjax' handling.
@@ -2521,9 +2554,10 @@ CONTENTS is nil. INFO is a plist holding contextual information."
(processing-type (plist-get info :with-latex)))
(case processing-type
((t mathjax)
- (org-html-format-latex latex-frag 'mathjax))
+ (org-html-format-latex latex-frag 'mathjax info))
((dvipng imagemagick)
- (let ((formula-link (org-html-format-latex latex-frag processing-type)))
+ (let ((formula-link
+ (org-html-format-latex latex-frag processing-type info)))
(when (and formula-link (string-match "file:\\([^]]*\\)" formula-link))
(org-html--format-image (match-string 1 formula-link) nil info))))
(t latex-frag))))
diff --git a/lisp/org/ox-latex.el b/lisp/org/ox-latex.el
index 6766b8583f1..3609881b690 100644
--- a/lisp/org/ox-latex.el
+++ b/lisp/org/ox-latex.el
@@ -556,7 +556,8 @@ returned as-is."
;;;; Drawers
-(defcustom org-latex-format-drawer-function nil
+(defcustom org-latex-format-drawer-function
+ (lambda (name contents) contents)
"Function called to format a drawer in LaTeX code.
The function must accept two parameters:
@@ -565,19 +566,16 @@ The function must accept two parameters:
The function should return the string to be exported.
-For example, the variable could be set to the following function
-in order to mimic default behaviour:
-
-\(defun org-latex-format-drawer-default \(name contents\)
- \"Format a drawer element for LaTeX export.\"
- contents\)"
+The default function simply returns the value of CONTENTS."
:group 'org-export-latex
+ :version "24.4"
+ :package-version '(Org . "8.3")
:type 'function)
;;;; Inlinetasks
-(defcustom org-latex-format-inlinetask-function nil
+(defcustom org-latex-format-inlinetask-function 'ignore
"Function called to format an inlinetask in LaTeX code.
The function must accept six parameters:
@@ -1212,12 +1210,8 @@ channel."
CONTENTS holds the contents of the block. INFO is a plist
holding contextual information."
(let* ((name (org-element-property :drawer-name drawer))
- (output (if (functionp org-latex-format-drawer-function)
- (funcall org-latex-format-drawer-function
- name contents)
- ;; If there's no user defined function: simply
- ;; display contents of the drawer.
- contents)))
+ (output (funcall org-latex-format-drawer-function
+ name contents)))
(org-latex--wrap-label drawer output)))
@@ -1502,7 +1496,7 @@ holding contextual information."
(org-element-property :priority inlinetask))))
;; If `org-latex-format-inlinetask-function' is provided, call it
;; with appropriate arguments.
- (if (functionp org-latex-format-inlinetask-function)
+ (if (not (eq org-latex-format-inlinetask-function 'ignore))
(funcall org-latex-format-inlinetask-function
todo todo-type priority title tags contents)
;; Otherwise, use a default template.
diff --git a/lisp/org/ox-odt.el b/lisp/org/ox-odt.el
index d5d03e49b50..975dbdb9f98 100644
--- a/lisp/org/ox-odt.el
+++ b/lisp/org/ox-odt.el
@@ -449,7 +449,7 @@ under `org-odt-styles-dir' is used."
:type '(choice (const nil)
(file))
:group 'org-export-odt
- :version "24.1")
+ :version "24.3")
(defcustom org-odt-styles-file nil
"Default styles file for use with ODT export.
@@ -498,7 +498,8 @@ a per-file basis. For example,
(defcustom org-odt-display-outline-level 2
"Outline levels considered for enumerating captioned entities."
:group 'org-export-odt
- :version "24.2"
+ :version "24.4"
+ :package-version '(Org . "8.0")
:type 'integer)
;;;; Document conversion
@@ -645,7 +646,8 @@ values. See Info node `(emacs) File Variables'."
;;;; Drawers
-(defcustom org-odt-format-drawer-function nil
+(defcustom org-odt-format-drawer-function
+ (lambda (name contents) contents)
"Function called to format a drawer in ODT code.
The function must accept two parameters:
@@ -654,21 +656,16 @@ The function must accept two parameters:
The function should return the string to be exported.
-For example, the variable could be set to the following function
-in order to mimic default behaviour:
-
-\(defun org-odt-format-drawer-default \(name contents\)
- \"Format a drawer element for ODT export.\"
- contents\)"
+The default value simply returns the value of CONTENTS."
:group 'org-export-odt
:version "24.4"
- :package-version '(Org . "8.0")
+ :package-version '(Org . "8.3")
:type 'function)
;;;; Headline
-(defcustom org-odt-format-headline-function nil
+(defcustom org-odt-format-headline-function 'ignore
"Function to format headline text.
This function will be called with 5 arguments:
@@ -687,7 +684,7 @@ The function result will be used as headline text."
;;;; Inlinetasks
-(defcustom org-odt-format-inlinetask-function nil
+(defcustom org-odt-format-inlinetask-function 'ignore
"Function called to format an inlinetask in ODT code.
The function must accept six parameters:
@@ -746,6 +743,8 @@ A rule consists in an association whose key is the type of link
to consider, and value is a regexp that will be matched against
link's path."
:group 'org-export-odt
+ :version "24.4"
+ :package-version '(Org . "8.0")
:type '(alist :key-type (string :tag "Type")
:value-type (regexp :tag "Path")))
@@ -757,6 +756,8 @@ A rule consists in an association whose key is the type of link
to consider, and value is a regexp that will be matched against
link's path."
:group 'org-export-odt
+ :version "24.4"
+ :package-version '(Org . "8.0")
:type '(alist :key-type (string :tag "Type")
:value-type (regexp :tag "Path")))
@@ -929,6 +930,8 @@ the application UI or through a custom styles file.
See `org-odt--build-date-styles' for implementation details."
:group 'org-export-odt
+ :version "24.4"
+ :package-version '(Org . "8.0")
:type 'boolean)
@@ -1619,12 +1622,8 @@ channel."
CONTENTS holds the contents of the block. INFO is a plist
holding contextual information."
(let* ((name (org-element-property :drawer-name drawer))
- (output (if (functionp org-odt-format-drawer-function)
- (funcall org-odt-format-drawer-function
- name contents)
- ;; If there's no user defined function: simply
- ;; display contents of the drawer.
- contents)))
+ (output (funcall org-odt-format-drawer-function
+ name contents)))
output))
@@ -1805,10 +1804,10 @@ INFO is a plist holding contextual information."
headline-number "-")))
(format-function (cond
((functionp format-function) format-function)
- ((functionp org-odt-format-headline-function)
+ ((not (eq org-odt-format-headline-function 'ignore))
(function*
(lambda (todo todo-type priority text tags
- &allow-other-keys)
+ &allow-other-keys)
(funcall org-odt-format-headline-function
todo todo-type priority text tags))))
(t 'org-odt-format-headline))))
@@ -1931,9 +1930,9 @@ contextual information."
CONTENTS holds the contents of the block. INFO is a plist
holding contextual information."
(cond
- ;; If `org-odt-format-inlinetask-function' is provided, call it
+ ;; If `org-odt-format-inlinetask-function' is not 'ignore, call it
;; with appropriate arguments.
- ((functionp org-odt-format-inlinetask-function)
+ ((not (eq org-odt-format-inlinetask-function 'ignore))
(let ((format-function
(function*
(lambda (todo todo-type priority text tags
diff --git a/lisp/org/ox-publish.el b/lisp/org/ox-publish.el
index 67a57fa38ff..d87326d56a7 100644
--- a/lisp/org/ox-publish.el
+++ b/lisp/org/ox-publish.el
@@ -1225,8 +1225,9 @@ Returns value on success, else nil."
(let ((attr (file-attributes
(expand-file-name (or (file-symlink-p file) file)
(file-name-directory file)))))
- (+ (lsh (car (nth 5 attr)) 16)
- (cadr (nth 5 attr)))))
+ (if (not attr) (error "No such file: \"%s\"" file)
+ (+ (lsh (car (nth 5 attr)) 16)
+ (cadr (nth 5 attr))))))
(provide 'ox-publish)
diff --git a/lisp/org/ox-texinfo.el b/lisp/org/ox-texinfo.el
index 0126170ec82..43c1de2158a 100644
--- a/lisp/org/ox-texinfo.el
+++ b/lisp/org/ox-texinfo.el
@@ -143,7 +143,7 @@
;;; Preamble
-(defcustom org-texinfo-filename nil
+(defcustom org-texinfo-filename ""
"Default filename for Texinfo output."
:group 'org-export-texinfo
:type '(string :tag "Export Filename"))
@@ -202,7 +202,7 @@ a format string in which the section title will be added."
;;; Headline
-(defcustom org-texinfo-format-headline-function nil
+(defcustom org-texinfo-format-headline-function 'ignore
"Function to format headline text.
This function will be called with 5 arguments:
@@ -316,7 +316,8 @@ returned as-is."
;;; Drawers
-(defcustom org-texinfo-format-drawer-function nil
+(defcustom org-texinfo-format-drawer-function
+ (lambda (name contents) contents)
"Function called to format a drawer in Texinfo code.
The function must accept two parameters:
@@ -325,18 +326,15 @@ The function must accept two parameters:
The function should return the string to be exported.
-For example, the variable could be set to the following function
-in order to mimic default behaviour:
-
-\(defun org-texinfo-format-drawer-default \(name contents\)
- \"Format a drawer element for Texinfo export.\"
- contents\)"
+The default function simply returns the value of CONTENTS."
:group 'org-export-texinfo
+ :version "24.4"
+ :package-version '(Org . "8.3")
:type 'function)
;;; Inlinetasks
-(defcustom org-texinfo-format-inlinetask-function nil
+(defcustom org-texinfo-format-inlinetask-function 'ignore
"Function called to format an inlinetask in Texinfo code.
The function must accept six parameters:
@@ -882,12 +880,8 @@ contextual information."
CONTENTS holds the contents of the block. INFO is a plist
holding contextual information."
(let* ((name (org-element-property :drawer-name drawer))
- (output (if (functionp org-texinfo-format-drawer-function)
- (funcall org-texinfo-format-drawer-function
- name contents)
- ;; If there's no user defined function: simply
- ;; display contents of the drawer.
- contents)))
+ (output (funcall org-texinfo-format-drawer-function
+ name contents)))
output))
;;; Dynamic Block
@@ -1036,7 +1030,7 @@ holding contextual information."
;; Create the headline text along with a no-tag version. The
;; latter is required to remove tags from table of contents.
(full-text (org-texinfo--sanitize-content
- (if (functionp org-texinfo-format-headline-function)
+ (if (not (eq org-texinfo-format-headline-function 'ignore))
;; User-defined formatting function.
(funcall org-texinfo-format-headline-function
todo todo-type priority text tags)
@@ -1051,7 +1045,7 @@ holding contextual information."
(mapconcat 'identity tags ":")))))))
(full-text-no-tag
(org-texinfo--sanitize-content
- (if (functionp org-texinfo-format-headline-function)
+ (if (not (eq org-texinfo-format-headline-function 'ignore))
;; User-defined formatting function.
(funcall org-texinfo-format-headline-function
todo todo-type priority text nil)
@@ -1153,7 +1147,7 @@ holding contextual information."
(org-element-property :priority inlinetask))))
;; If `org-texinfo-format-inlinetask-function' is provided, call it
;; with appropriate arguments.
- (if (functionp org-texinfo-format-inlinetask-function)
+ (if (not (eq org-texinfo-format-inlinetask-function 'ignore))
(funcall org-texinfo-format-inlinetask-function
todo todo-type priority title tags contents)
;; Otherwise, use a default template.
diff --git a/lisp/org/ox.el b/lisp/org/ox.el
index 6b88f1a908b..8316ef26e53 100644
--- a/lisp/org/ox.el
+++ b/lisp/org/ox.el
@@ -626,11 +626,20 @@ e.g. \"stat:nil\""
(defcustom org-export-with-sub-superscripts t
"Non-nil means interpret \"_\" and \"^\" for export.
+If you want to control how Org displays those characters, see
+`org-use-sub-superscripts'. `org-export-with-sub-superscripts'
+used to be an alias for `org-use-sub-superscripts' in Org <8.0,
+it is not anymore.
+
When this option is turned on, you can use TeX-like syntax for
-sub- and superscripts. Several characters after \"_\" or \"^\"
-will be considered as a single item - so grouping with {} is
-normally not needed. For example, the following things will be
-parsed as single sub- or superscripts.
+sub- and superscripts and see them exported correctly.
+
+You can also set the option with #+OPTIONS: ^:t
+
+Several characters after \"_\" or \"^\" will be considered as a
+single item - so grouping with {} is normally not needed. For
+example, the following things will be parsed as single sub- or
+superscripts:
10^24 or 10^tau several digits will be considered 1 item.
10^-12 or 10^-tau a leading sign with digits or a word
@@ -638,15 +647,14 @@ parsed as single sub- or superscripts.
terminated by almost any nonword/nondigit char.
x_{i^2} or x^(2-i) braces or parenthesis do grouping.
-Still, ambiguity is possible - so when in doubt use {} to enclose
-the sub/superscript. If you set this variable to the symbol
-`{}', the braces are *required* in order to trigger
-interpretations as sub/superscript. This can be helpful in
-documents that need \"_\" frequently in plain text.
-
-This option can also be set with the OPTIONS keyword,
-e.g. \"^:nil\"."
+Still, ambiguity is possible. So when in doubt, use {} to enclose
+the sub/superscript. If you set this variable to the symbol `{}',
+the braces are *required* in order to trigger interpretations as
+sub/superscript. This can be helpful in documents that need \"_\"
+frequently in plain text."
:group 'org-export-general
+ :version "24.4"
+ :package-version '(Org . "8.0")
:type '(choice
(const :tag "Interpret them" t)
(const :tag "Curly brackets only" {})