From: Bastien Guerry Date: Fri, 6 Dec 2013 11:21:31 +0000 (+0100) Subject: Merge Org 8.2.4 X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~387^2~540 X-Git-Url: https://code.delx.au/gnu-emacs/commitdiff_plain/73d3db828e8149847b3666acbc38f94898ac15a9 Merge Org 8.2.4 --- diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index bc1c83d39d..6e427fa24b 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,3 +1,12 @@ +2013-12-06 Nicolas Goaziou + + * org.texi (Creating one-off styles): Use new export snippet + syntax. + + * org.texi (Export settings): documentation describing how text + above the first heading is ignored when an :export: tag is in a + file. + 2013-12-05 Michael Albinus * dbus.texi (Type Conversion): Clarify unibyte-ness of strings. diff --git a/doc/misc/org.texi b/doc/misc/org.texi index 5c416b65d7..9ebbb0a629 100644 --- a/doc/misc/org.texi +++ b/doc/misc/org.texi @@ -2,7 +2,7 @@ @c %**start of header @setfilename ../../info/org @settitle The Org Manual -@set VERSION 8.2.3 (GNU Emacs 24.3) +@set VERSION 8.2.4 (GNU Emacs 24.3) @c Use proper quote and backtick for code sections in PDF output @c Cf. Texinfo manual 14.2 @@ -10518,7 +10518,8 @@ clocktable. The tags that select a tree for export (@code{org-export-select-tags}). The default value is @code{:export:}. Within a subtree tagged with @code{:export:}, you can still exclude entries with @code{:noexport:} (see -below). +below). When headlines are selectively exported with @code{:export:} +anywhere in a file, text before the first headline is ignored. @item EXCLUDE_TAGS The tags that exclude a tree from export (@code{org-export-exclude-tags}). @@ -12542,13 +12543,13 @@ file. The use of this feature is better illustrated with couple of examples. @enumerate @item Embedding ODT tags as part of regular text -You can include simple OpenDocument tags by prefixing them with -@samp{@@}. For example, to highlight a region of text do the following: +You can inline OpenDocument syntax by enclosing it within +@samp{@@@@odt:...@@@@} markup. For example, to highlight a region of text do +the following: @example -@@This is a -highlighted text@@. But this is a -regular text. +@@@@odt:This is a highlighted +text@@@@. But this is a regular text. @end example @strong{Hint:} To see the above example in action, edit your diff --git a/etc/refcards/orgcard.tex b/etc/refcards/orgcard.tex index 0e19d32a1a..3956ffaac9 100644 --- a/etc/refcards/orgcard.tex +++ b/etc/refcards/orgcard.tex @@ -1,5 +1,5 @@ % Reference Card for Org Mode -\def\orgversionnumber{8.2.3} +\def\orgversionnumber{8.2.4} \def\versionyear{2013} % latest update \input emacsver.tex diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog index a9d2731892..fa9dc824c9 100644 --- a/lisp/org/ChangeLog +++ b/lisp/org/ChangeLog @@ -1,3 +1,187 @@ +2013-12-06 Achim Gratz + + * org-crypt.el: Declare `epg-context´. + (org-encrypt-string): Correct indentation. + + * org.el (org-version): Replace `_version´ by `version1´. + +2013-12-06 Alexander Vorobiev (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 + + * 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 + + * 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 (tiny change) + + * org-crypt.el (org-encrypt-string, org-encrypt-entry) + (org-decrypt-entry): Fix warning. + 2013-11-17 Paul Eggert Spelling fixes. diff --git a/lisp/org/ob-latex.el b/lisp/org/ob-latex.el index edc9fe8813..85918e60bb 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 c17d4448a3..f992d04da5 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 99c35ce286..3c3f664687 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 fe1ee0ff09..34b9eaf47c 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 5ef92f7aae..4dfa3e9e3c 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 d5bdff16f9..3dc52c1c99 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 978bde475d..3238c8ca94 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 523b42186b..361560dcba 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 b714f13a66..a3eb960e13 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 b02a7ceffb..2024144fa5 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 72ccc46d62..8e61c8ab1d 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 55efb50084..61623833f7 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 f1fa05bdc7..37f6e70e82 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 0083d293ed..4afbace56c 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 1ef9044393..8418cf6fbd 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 50d3842e03..adaabebc6a 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 5b41d2d398..55bda8368e 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 b4094d3e44..44962a533e 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 "%s" + ;; 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 6766b8583f..3609881b69 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 d5d03e49b5..975dbdb9f9 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 67a57fa38f..d87326d56a 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 0126170ec8..43c1de2158 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 6b88f1a908..8316ef26e5 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" {})