aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorRasmus2018-03-27 23:34:41 +0200
committerRasmus2018-03-27 23:34:41 +0200
commit613c9a5c1f3237fbdc3a3db2341c7c59353d2aa2 (patch)
tree7651699ebeb2a2a2d8d1081707d091fbc424e8fb /lisp
parent1b075a9e38ca6812417f95ed2272e61d875d9e86 (diff)
downloademacs-613c9a5c1f3237fbdc3a3db2341c7c59353d2aa2.tar.gz
emacs-613c9a5c1f3237fbdc3a3db2341c7c59353d2aa2.zip
Update Org to v9.1.9
Please note this is a bugfix release. See etc/ORG-NEWS for details.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/org/ob-C.el2
-rw-r--r--lisp/org/ob-J.el2
-rw-r--r--lisp/org/ob-R.el2
-rw-r--r--lisp/org/ob-asymptote.el2
-rw-r--r--lisp/org/ob-awk.el2
-rw-r--r--lisp/org/ob-calc.el2
-rw-r--r--lisp/org/ob-clojure.el2
-rw-r--r--lisp/org/ob-comint.el2
-rw-r--r--lisp/org/ob-coq.el2
-rw-r--r--lisp/org/ob-core.el21
-rw-r--r--lisp/org/ob-css.el2
-rw-r--r--lisp/org/ob-ditaa.el2
-rw-r--r--lisp/org/ob-dot.el2
-rw-r--r--lisp/org/ob-ebnf.el2
-rw-r--r--lisp/org/ob-emacs-lisp.el2
-rw-r--r--lisp/org/ob-eval.el2
-rw-r--r--lisp/org/ob-exp.el2
-rw-r--r--lisp/org/ob-forth.el2
-rw-r--r--lisp/org/ob-fortran.el2
-rw-r--r--lisp/org/ob-gnuplot.el2
-rw-r--r--lisp/org/ob-groovy.el6
-rw-r--r--lisp/org/ob-haskell.el2
-rw-r--r--lisp/org/ob-hledger.el2
-rw-r--r--lisp/org/ob-io.el2
-rw-r--r--lisp/org/ob-java.el2
-rw-r--r--lisp/org/ob-js.el2
-rw-r--r--lisp/org/ob-keys.el2
-rw-r--r--lisp/org/ob-latex.el2
-rw-r--r--lisp/org/ob-ledger.el2
-rw-r--r--lisp/org/ob-lilypond.el4
-rw-r--r--lisp/org/ob-lisp.el2
-rw-r--r--lisp/org/ob-lob.el74
-rw-r--r--lisp/org/ob-lua.el2
-rw-r--r--lisp/org/ob-makefile.el2
-rw-r--r--lisp/org/ob-matlab.el2
-rw-r--r--lisp/org/ob-maxima.el2
-rw-r--r--lisp/org/ob-mscgen.el2
-rw-r--r--lisp/org/ob-ocaml.el2
-rw-r--r--lisp/org/ob-octave.el2
-rw-r--r--lisp/org/ob-org.el2
-rw-r--r--lisp/org/ob-perl.el2
-rw-r--r--lisp/org/ob-picolisp.el2
-rw-r--r--lisp/org/ob-plantuml.el2
-rw-r--r--lisp/org/ob-processing.el2
-rw-r--r--lisp/org/ob-python.el2
-rw-r--r--lisp/org/ob-ref.el2
-rw-r--r--lisp/org/ob-ruby.el2
-rw-r--r--lisp/org/ob-sass.el2
-rw-r--r--lisp/org/ob-scheme.el2
-rw-r--r--lisp/org/ob-screen.el2
-rw-r--r--lisp/org/ob-shell.el2
-rw-r--r--lisp/org/ob-shen.el2
-rw-r--r--lisp/org/ob-sql.el2
-rw-r--r--lisp/org/ob-sqlite.el2
-rw-r--r--lisp/org/ob-stan.el4
-rw-r--r--lisp/org/ob-table.el2
-rw-r--r--lisp/org/ob-tangle.el2
-rw-r--r--lisp/org/ob-vala.el2
-rw-r--r--lisp/org/ob.el2
-rw-r--r--lisp/org/org-agenda.el73
-rw-r--r--lisp/org/org-archive.el2
-rw-r--r--lisp/org/org-bbdb.el2
-rw-r--r--lisp/org/org-capture.el43
-rw-r--r--lisp/org/org-clock.el255
-rw-r--r--lisp/org/org-colview.el2
-rw-r--r--lisp/org/org-compat.el39
-rw-r--r--lisp/org/org-datetree.el2
-rw-r--r--lisp/org/org-docview.el2
-rw-r--r--lisp/org/org-element.el8
-rw-r--r--lisp/org/org-entities.el2
-rw-r--r--lisp/org/org-eww.el2
-rw-r--r--lisp/org/org-faces.el2
-rw-r--r--lisp/org/org-feed.el25
-rw-r--r--lisp/org/org-footnote.el2
-rw-r--r--lisp/org/org-gnus.el12
-rw-r--r--lisp/org/org-habit.el2
-rw-r--r--lisp/org/org-id.el2
-rw-r--r--lisp/org/org-indent.el2
-rw-r--r--lisp/org/org-info.el2
-rw-r--r--lisp/org/org-inlinetask.el2
-rw-r--r--lisp/org/org-list.el32
-rw-r--r--lisp/org/org-macro.el4
-rw-r--r--lisp/org/org-macs.el2
-rw-r--r--lisp/org/org-mhe.el2
-rw-r--r--lisp/org/org-mobile.el2
-rw-r--r--lisp/org/org-mouse.el2
-rw-r--r--lisp/org/org-pcomplete.el2
-rw-r--r--lisp/org/org-plot.el2
-rw-r--r--lisp/org/org-protocol.el6
-rw-r--r--lisp/org/org-rmail.el2
-rw-r--r--lisp/org/org-src.el2
-rw-r--r--lisp/org/org-table.el23
-rw-r--r--lisp/org/org-timer.el2
-rw-r--r--lisp/org/org-version.el4
-rw-r--r--lisp/org/org-w3m.el2
-rw-r--r--lisp/org/org.el223
-rw-r--r--lisp/org/ox-html.el12
-rw-r--r--lisp/org/ox-icalendar.el2
-rw-r--r--lisp/org/ox-latex.el7
-rw-r--r--lisp/org/ox-odt.el2
-rw-r--r--lisp/org/ox-publish.el80
-rw-r--r--lisp/org/ox.el41
102 files changed, 589 insertions, 567 deletions
diff --git a/lisp/org/ob-C.el b/lisp/org/ob-C.el
index 092354e9ca6..ff5be349676 100644
--- a/lisp/org/ob-C.el
+++ b/lisp/org/ob-C.el
@@ -5,7 +5,7 @@
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Thierry Banel 6;; Thierry Banel
7;; Keywords: literate programming, reproducible research 7;; Keywords: literate programming, reproducible research
8;; Homepage: http://orgmode.org 8;; Homepage: https://orgmode.org
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11 11
diff --git a/lisp/org/ob-J.el b/lisp/org/ob-J.el
index 4aec293afca..87812213eee 100644
--- a/lisp/org/ob-J.el
+++ b/lisp/org/ob-J.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Oleh Krehel 5;; Author: Oleh Krehel
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-R.el b/lisp/org/ob-R.el
index 84bb89f6e00..d7e936eba0d 100644
--- a/lisp/org/ob-R.el
+++ b/lisp/org/ob-R.el
@@ -5,7 +5,7 @@
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Dan Davison 6;; Dan Davison
7;; Keywords: literate programming, reproducible research, R, statistics 7;; Keywords: literate programming, reproducible research, R, statistics
8;; Homepage: http://orgmode.org 8;; Homepage: https://orgmode.org
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11 11
diff --git a/lisp/org/ob-asymptote.el b/lisp/org/ob-asymptote.el
index 211eab7f29b..84e23648094 100644
--- a/lisp/org/ob-asymptote.el
+++ b/lisp/org/ob-asymptote.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-awk.el b/lisp/org/ob-awk.el
index 474111f2637..1ee4552eb0f 100644
--- a/lisp/org/ob-awk.el
+++ b/lisp/org/ob-awk.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-calc.el b/lisp/org/ob-calc.el
index 4ed5dd4be05..387cba210a9 100644
--- a/lisp/org/ob-calc.el
+++ b/lisp/org/ob-calc.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-clojure.el b/lisp/org/ob-clojure.el
index 852fe08b934..890f60ada8a 100644
--- a/lisp/org/ob-clojure.el
+++ b/lisp/org/ob-clojure.el
@@ -5,7 +5,7 @@
5;; Author: Joel Boehland, Eric Schulte, Oleh Krehel, Frederick Giasson 5;; Author: Joel Boehland, Eric Schulte, Oleh Krehel, Frederick Giasson
6;; 6;;
7;; Keywords: literate programming, reproducible research 7;; Keywords: literate programming, reproducible research
8;; Homepage: http://orgmode.org 8;; Homepage: https://orgmode.org
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11 11
diff --git a/lisp/org/ob-comint.el b/lisp/org/ob-comint.el
index 32449753a62..e9c6f937b14 100644
--- a/lisp/org/ob-comint.el
+++ b/lisp/org/ob-comint.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research, comint 6;; Keywords: literate programming, reproducible research, comint
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-coq.el b/lisp/org/ob-coq.el
index a52044e8ae0..875c794b19a 100644
--- a/lisp/org/ob-coq.el
+++ b/lisp/org/ob-coq.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-core.el b/lisp/org/ob-core.el
index 0e2e78a6710..5d5faaa6fd0 100644
--- a/lisp/org/ob-core.el
+++ b/lisp/org/ob-core.el
@@ -5,7 +5,7 @@
5;; Authors: Eric Schulte 5;; Authors: Eric Schulte
6;; Dan Davison 6;; Dan Davison
7;; Keywords: literate programming, reproducible research 7;; Keywords: literate programming, reproducible research
8;; Homepage: http://orgmode.org 8;; Homepage: https://orgmode.org
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11 11
@@ -980,13 +980,24 @@ with a prefix argument then this is passed on to
980(defmacro org-babel-do-in-edit-buffer (&rest body) 980(defmacro org-babel-do-in-edit-buffer (&rest body)
981 "Evaluate BODY in edit buffer if there is a code block at point. 981 "Evaluate BODY in edit buffer if there is a code block at point.
982Return t if a code block was found at point, nil otherwise." 982Return t if a code block was found at point, nil otherwise."
983 `(let ((org-src-window-setup 'switch-invisibly)) 983 (declare (debug (body)))
984 (when (and (org-babel-where-is-src-block-head) 984 `(let* ((element (org-element-at-point))
985 ;; This function is not supposed to move point. However,
986 ;; `org-edit-src-code' always moves point back into the
987 ;; source block. It is problematic if the point was before
988 ;; the code, e.g., on block's opening line. In this case,
989 ;; we want to restore this location after executing BODY.
990 (outside-position
991 (and (<= (line-beginning-position)
992 (org-element-property :post-affiliated element))
993 (point-marker)))
994 (org-src-window-setup 'switch-invisibly))
995 (when (and (org-babel-where-is-src-block-head element)
985 (org-edit-src-code)) 996 (org-edit-src-code))
986 (unwind-protect (progn ,@body) 997 (unwind-protect (progn ,@body)
987 (org-edit-src-exit)) 998 (org-edit-src-exit)
999 (when outside-position (goto-char outside-position)))
988 t))) 1000 t)))
989(def-edebug-spec org-babel-do-in-edit-buffer (body))
990 1001
991(defun org-babel-do-key-sequence-in-edit-buffer (key) 1002(defun org-babel-do-key-sequence-in-edit-buffer (key)
992 "Read key sequence and execute the command in edit buffer. 1003 "Read key sequence and execute the command in edit buffer.
diff --git a/lisp/org/ob-css.el b/lisp/org/ob-css.el
index 8c0b8d75a0a..8cabf2bc789 100644
--- a/lisp/org/ob-css.el
+++ b/lisp/org/ob-css.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-ditaa.el b/lisp/org/ob-ditaa.el
index 82cc89d0221..9507630ba29 100644
--- a/lisp/org/ob-ditaa.el
+++ b/lisp/org/ob-ditaa.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-dot.el b/lisp/org/ob-dot.el
index e72dd3cada5..31e0a4f325e 100644
--- a/lisp/org/ob-dot.el
+++ b/lisp/org/ob-dot.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-ebnf.el b/lisp/org/ob-ebnf.el
index 4e96b211760..8c7c5415e6c 100644
--- a/lisp/org/ob-ebnf.el
+++ b/lisp/org/ob-ebnf.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Michael Gauland 5;; Author: Michael Gauland
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; Version: 1.00 8;; Version: 1.00
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
diff --git a/lisp/org/ob-emacs-lisp.el b/lisp/org/ob-emacs-lisp.el
index 2dc350629dd..8ea2ec127a6 100644
--- a/lisp/org/ob-emacs-lisp.el
+++ b/lisp/org/ob-emacs-lisp.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-eval.el b/lisp/org/ob-eval.el
index 44972f95636..2bfaa08a609 100644
--- a/lisp/org/ob-eval.el
+++ b/lisp/org/ob-eval.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research, comint 6;; Keywords: literate programming, reproducible research, comint
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-exp.el b/lisp/org/ob-exp.el
index d2c32fac81a..264dc0ed067 100644
--- a/lisp/org/ob-exp.el
+++ b/lisp/org/ob-exp.el
@@ -5,7 +5,7 @@
5;; Authors: Eric Schulte 5;; Authors: Eric Schulte
6;; Dan Davison 6;; Dan Davison
7;; Keywords: literate programming, reproducible research 7;; Keywords: literate programming, reproducible research
8;; Homepage: http://orgmode.org 8;; Homepage: https://orgmode.org
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11 11
diff --git a/lisp/org/ob-forth.el b/lisp/org/ob-forth.el
index ed14b1873d3..efd5759358c 100644
--- a/lisp/org/ob-forth.el
+++ b/lisp/org/ob-forth.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research, forth 6;; Keywords: literate programming, reproducible research, forth
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-fortran.el b/lisp/org/ob-fortran.el
index dad7eda0c72..49e960ff927 100644
--- a/lisp/org/ob-fortran.el
+++ b/lisp/org/ob-fortran.el
@@ -5,7 +5,7 @@
5;; Authors: Sergey Litvinov 5;; Authors: Sergey Litvinov
6;; Eric Schulte 6;; Eric Schulte
7;; Keywords: literate programming, reproducible research, fortran 7;; Keywords: literate programming, reproducible research, fortran
8;; Homepage: http://orgmode.org 8;; Homepage: https://orgmode.org
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11;; 11;;
diff --git a/lisp/org/ob-gnuplot.el b/lisp/org/ob-gnuplot.el
index 674627b8fa0..b2f491331e8 100644
--- a/lisp/org/ob-gnuplot.el
+++ b/lisp/org/ob-gnuplot.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-groovy.el b/lisp/org/ob-groovy.el
index 4e10ecd6b1d..565b09754ba 100644
--- a/lisp/org/ob-groovy.el
+++ b/lisp/org/ob-groovy.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Miro Bezjak 5;; Author: Miro Bezjak
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
@@ -84,12 +84,12 @@ in BODY as elisp."
84 (when session (error "Sessions are not (yet) supported for Groovy")) 84 (when session (error "Sessions are not (yet) supported for Groovy"))
85 (pcase result-type 85 (pcase result-type
86 (`output 86 (`output
87 (let ((src-file (org-babel-temp-file "groovy-"))) 87 (let ((src-file (org-babel-temp-file "groovy_")))
88 (progn (with-temp-file src-file (insert body)) 88 (progn (with-temp-file src-file (insert body))
89 (org-babel-eval 89 (org-babel-eval
90 (concat org-babel-groovy-command " " src-file) "")))) 90 (concat org-babel-groovy-command " " src-file) ""))))
91 (`value 91 (`value
92 (let* ((src-file (org-babel-temp-file "groovy-")) 92 (let* ((src-file (org-babel-temp-file "groovy_"))
93 (wrapper (format org-babel-groovy-wrapper-method body))) 93 (wrapper (format org-babel-groovy-wrapper-method body)))
94 (with-temp-file src-file (insert wrapper)) 94 (with-temp-file src-file (insert wrapper))
95 (let ((raw (org-babel-eval 95 (let ((raw (org-babel-eval
diff --git a/lisp/org/ob-haskell.el b/lisp/org/ob-haskell.el
index b19ee6d70fe..e607ee0c55b 100644
--- a/lisp/org/ob-haskell.el
+++ b/lisp/org/ob-haskell.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-hledger.el b/lisp/org/ob-hledger.el
index 71589034702..727fb1f162a 100644
--- a/lisp/org/ob-hledger.el
+++ b/lisp/org/ob-hledger.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Simon Michael 5;; Author: Simon Michael
6;; Keywords: literate programming, reproducible research, plain text accounting 6;; Keywords: literate programming, reproducible research, plain text accounting
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-io.el b/lisp/org/ob-io.el
index 7c7d9df25ad..4f407cc52c3 100644
--- a/lisp/org/ob-io.el
+++ b/lisp/org/ob-io.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Andrzej Lichnerowicz 5;; Author: Andrzej Lichnerowicz
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-java.el b/lisp/org/ob-java.el
index 1f257531831..d6301bff2d5 100644
--- a/lisp/org/ob-java.el
+++ b/lisp/org/ob-java.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-js.el b/lisp/org/ob-js.el
index 5aa2ed791dc..38c8c39ac96 100644
--- a/lisp/org/ob-js.el
+++ b/lisp/org/ob-js.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research, js 6;; Keywords: literate programming, reproducible research, js
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-keys.el b/lisp/org/ob-keys.el
index 3d8e865a029..fc96df47561 100644
--- a/lisp/org/ob-keys.el
+++ b/lisp/org/ob-keys.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-latex.el b/lisp/org/ob-latex.el
index 4654ba5d3a8..6a963e52f26 100644
--- a/lisp/org/ob-latex.el
+++ b/lisp/org/ob-latex.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-ledger.el b/lisp/org/ob-ledger.el
index 84f0599a417..2a1331441ae 100644
--- a/lisp/org/ob-ledger.el
+++ b/lisp/org/ob-ledger.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric S Fraga 5;; Author: Eric S Fraga
6;; Keywords: literate programming, reproducible research, accounting 6;; Keywords: literate programming, reproducible research, accounting
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-lilypond.el b/lisp/org/ob-lilypond.el
index b4c4b9a90e4..3d3cc07f135 100644
--- a/lisp/org/ob-lilypond.el
+++ b/lisp/org/ob-lilypond.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Martyn Jago 5;; Author: Martyn Jago
6;; Keywords: babel language, literate programming 6;; Keywords: babel language, literate programming
7;; Homepage: http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-lilypond.html 7;; Homepage: https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-lilypond.html
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
@@ -24,7 +24,7 @@
24;;; Commentary: 24;;; Commentary:
25 25
26;; Installation, ob-lilypond documentation, and examples are available at 26;; Installation, ob-lilypond documentation, and examples are available at
27;; http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-lilypond.html 27;; https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-lilypond.html
28;; 28;;
29;; Lilypond documentation can be found at 29;; Lilypond documentation can be found at
30;; http://lilypond.org/manuals.html 30;; http://lilypond.org/manuals.html
diff --git a/lisp/org/ob-lisp.el b/lisp/org/ob-lisp.el
index d4a7c37133d..b846138f7a3 100644
--- a/lisp/org/ob-lisp.el
+++ b/lisp/org/ob-lisp.el
@@ -6,7 +6,7 @@
6;; Eric Schulte 6;; Eric Schulte
7;; David T. O'Toole <dto@gnu.org> 7;; David T. O'Toole <dto@gnu.org>
8;; Keywords: literate programming, reproducible research 8;; Keywords: literate programming, reproducible research
9;; Homepage: http://orgmode.org 9;; Homepage: https://orgmode.org
10 10
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
12 12
diff --git a/lisp/org/ob-lob.el b/lisp/org/ob-lob.el
index f103a811856..6af6bf07e84 100644
--- a/lisp/org/ob-lob.el
+++ b/lisp/org/ob-lob.el
@@ -5,7 +5,7 @@
5;; Authors: Eric Schulte 5;; Authors: Eric Schulte
6;; Dan Davison 6;; Dan Davison
7;; Keywords: literate programming, reproducible research 7;; Keywords: literate programming, reproducible research
8;; Homepage: http://orgmode.org 8;; Homepage: https://orgmode.org
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11 11
@@ -79,44 +79,54 @@ if so then run the appropriate source block from the Library."
79 (org-babel-execute-src-block nil info) 79 (org-babel-execute-src-block nil info)
80 t))) 80 t)))
81 81
82(defun org-babel-lob--src-info (name) 82(defun org-babel-lob--src-info (ref)
83 "Return internal representation for Babel data named NAME. 83 "Return internal representation for Babel data referenced as REF.
84NAME is a string. This function looks into the current document 84REF is a string. This function looks into the current document
85for a Babel call or source block. If none is found, it looks 85for a Babel call or source block. If none is found, it looks
86after NAME in the Library of Babel. Eventually, if that also 86after REF in the Library of Babel."
87fails, it returns nil." 87 (let ((name ref)
88 ;; During export, look into the pristine copy of the document being 88 (file nil))
89 ;; exported instead of the current one, which could miss some data. 89 ;; Extract the remote file, if specified in the reference.
90 (with-current-buffer (or org-babel-exp-reference-buffer (current-buffer)) 90 (when (string-match "\\`\\(.+\\):\\(.+\\)\\'" ref)
91 (org-with-wide-buffer 91 (setq file (match-string 1 ref))
92 (goto-char (point-min)) 92 (setq name (match-string 2 ref)))
93 (catch :found 93 ;; During export, look into the pristine copy of the document
94 (let ((case-fold-search t) 94 ;; being exported instead of the current one, which could miss
95 (regexp (org-babel-named-data-regexp-for-name name))) 95 ;; some data.
96 (while (re-search-forward regexp nil t) 96 (with-current-buffer (cond (file (find-file-noselect file t))
97 (let ((element (org-element-at-point))) 97 (org-babel-exp-reference-buffer)
98 (when (equal name (org-element-property :name element)) 98 (t (current-buffer)))
99 (throw :found 99 (org-with-point-at 1
100 (pcase (org-element-type element) 100 (catch :found
101 (`src-block (org-babel-get-src-block-info t element)) 101 (let ((case-fold-search t)
102 (`babel-call (org-babel-lob-get-info element)) 102 (regexp (org-babel-named-data-regexp-for-name name)))
103 ;; Non-executable data found. Since names are 103 (while (re-search-forward regexp nil t)
104 ;; supposed to be unique throughout a document, 104 (let ((element (org-element-at-point)))
105 ;; bail out. 105 (when (equal name (org-element-property :name element))
106 (_ nil)))))) 106 (throw :found
107 ;; No element named NAME in buffer. Try Library of Babel. 107 (pcase (org-element-type element)
108 (cdr (assoc-string name org-babel-library-of-babel))))))) 108 (`src-block (org-babel-get-src-block-info t element))
109 (`babel-call (org-babel-lob-get-info element))
110 ;; Non-executable data found. Since names
111 ;; are supposed to be unique throughout
112 ;; a document, bail out.
113 (_ nil))))))
114 (cdr (assoc-string ref org-babel-library-of-babel))))))))
109 115
110;;;###autoload 116;;;###autoload
111(defun org-babel-lob-get-info (&optional datum) 117(defun org-babel-lob-get-info (&optional datum)
112 "Return internal representation for Library of Babel function call. 118 "Return internal representation for Library of Babel function call.
113Consider DATUM, when provided, or element at point. Return nil 119
114when not on an appropriate location. Otherwise return a list 120Consider DATUM, when provided, or element at point otherwise.
115compatible with `org-babel-get-src-block-info', which see." 121
122Return nil when not on an appropriate location. Otherwise return
123a list compatible with `org-babel-get-src-block-info', which
124see."
116 (let* ((context (or datum (org-element-context))) 125 (let* ((context (or datum (org-element-context)))
117 (type (org-element-type context))) 126 (type (org-element-type context))
127 (reference (org-element-property :call context)))
118 (when (memq type '(babel-call inline-babel-call)) 128 (when (memq type '(babel-call inline-babel-call))
119 (pcase (org-babel-lob--src-info (org-element-property :call context)) 129 (pcase (org-babel-lob--src-info reference)
120 (`(,language ,body ,header ,_ ,_ ,_ ,coderef) 130 (`(,language ,body ,header ,_ ,_ ,_ ,coderef)
121 (let ((begin (org-element-property (if (eq type 'inline-babel-call) 131 (let ((begin (org-element-property (if (eq type 'inline-babel-call)
122 :begin 132 :begin
diff --git a/lisp/org/ob-lua.el b/lisp/org/ob-lua.el
index ff9aae01fac..6ae72c7e565 100644
--- a/lisp/org/ob-lua.el
+++ b/lisp/org/ob-lua.el
@@ -4,7 +4,7 @@
4 4
5;; Authors: Dieter Schoen 5;; Authors: Dieter Schoen
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-makefile.el b/lisp/org/ob-makefile.el
index 692ebb6c923..46870378295 100644
--- a/lisp/org/ob-makefile.el
+++ b/lisp/org/ob-makefile.el
@@ -5,7 +5,7 @@
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Thomas S. Dye 6;; Thomas S. Dye
7;; Keywords: literate programming, reproducible research 7;; Keywords: literate programming, reproducible research
8;; Homepage: http://orgmode.org 8;; Homepage: https://orgmode.org
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11 11
diff --git a/lisp/org/ob-matlab.el b/lisp/org/ob-matlab.el
index da2eadc477c..5baac77742c 100644
--- a/lisp/org/ob-matlab.el
+++ b/lisp/org/ob-matlab.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Dan Davison 5;; Author: Dan Davison
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-maxima.el b/lisp/org/ob-maxima.el
index fc2471761a0..b42a4b8afaf 100644
--- a/lisp/org/ob-maxima.el
+++ b/lisp/org/ob-maxima.el
@@ -5,7 +5,7 @@
5;; Author: Eric S Fraga 5;; Author: Eric S Fraga
6;; Eric Schulte 6;; Eric Schulte
7;; Keywords: literate programming, reproducible research, maxima 7;; Keywords: literate programming, reproducible research, maxima
8;; Homepage: http://orgmode.org 8;; Homepage: https://orgmode.org
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11 11
diff --git a/lisp/org/ob-mscgen.el b/lisp/org/ob-mscgen.el
index 8f8c8c5dce9..b2c2443c8fc 100644
--- a/lisp/org/ob-mscgen.el
+++ b/lisp/org/ob-mscgen.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Juan Pechiar 5;; Author: Juan Pechiar
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-ocaml.el b/lisp/org/ob-ocaml.el
index b8212b128bc..90926b5c35b 100644
--- a/lisp/org/ob-ocaml.el
+++ b/lisp/org/ob-ocaml.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-octave.el b/lisp/org/ob-octave.el
index 7d729055060..c7339cf992d 100644
--- a/lisp/org/ob-octave.el
+++ b/lisp/org/ob-octave.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Dan Davison 5;; Author: Dan Davison
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-org.el b/lisp/org/ob-org.el
index 310aaec3f39..7a495faaedf 100644
--- a/lisp/org/ob-org.el
+++ b/lisp/org/ob-org.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-perl.el b/lisp/org/ob-perl.el
index 2b96bf9cd56..85806fd5330 100644
--- a/lisp/org/ob-perl.el
+++ b/lisp/org/ob-perl.el
@@ -5,7 +5,7 @@
5;; Authors: Dan Davison 5;; Authors: Dan Davison
6;; Eric Schulte 6;; Eric Schulte
7;; Keywords: literate programming, reproducible research 7;; Keywords: literate programming, reproducible research
8;; Homepage: http://orgmode.org 8;; Homepage: https://orgmode.org
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11 11
diff --git a/lisp/org/ob-picolisp.el b/lisp/org/ob-picolisp.el
index fd129b899b2..cc2c8a8dff2 100644
--- a/lisp/org/ob-picolisp.el
+++ b/lisp/org/ob-picolisp.el
@@ -5,7 +5,7 @@
5;; Authors: Thorsten Jolitz 5;; Authors: Thorsten Jolitz
6;; Eric Schulte 6;; Eric Schulte
7;; Keywords: literate programming, reproducible research 7;; Keywords: literate programming, reproducible research
8;; Homepage: http://orgmode.org 8;; Homepage: https://orgmode.org
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11 11
diff --git a/lisp/org/ob-plantuml.el b/lisp/org/ob-plantuml.el
index 53ba42ec367..9a9313e7be9 100644
--- a/lisp/org/ob-plantuml.el
+++ b/lisp/org/ob-plantuml.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Zhang Weize 5;; Author: Zhang Weize
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-processing.el b/lisp/org/ob-processing.el
index 83fcadd2575..1a88930277f 100644
--- a/lisp/org/ob-processing.el
+++ b/lisp/org/ob-processing.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Jarmo Hurri (adapted from ob-asymptote.el written by Eric Schulte) 5;; Author: Jarmo Hurri (adapted from ob-asymptote.el written by Eric Schulte)
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-python.el b/lisp/org/ob-python.el
index 951e4d2a4b4..9f1234bac52 100644
--- a/lisp/org/ob-python.el
+++ b/lisp/org/ob-python.el
@@ -5,7 +5,7 @@
5;; Authors: Eric Schulte 5;; Authors: Eric Schulte
6;; Dan Davison 6;; Dan Davison
7;; Keywords: literate programming, reproducible research 7;; Keywords: literate programming, reproducible research
8;; Homepage: http://orgmode.org 8;; Homepage: https://orgmode.org
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11 11
diff --git a/lisp/org/ob-ref.el b/lisp/org/ob-ref.el
index 872f7f98151..3efa17f9601 100644
--- a/lisp/org/ob-ref.el
+++ b/lisp/org/ob-ref.el
@@ -5,7 +5,7 @@
5;; Authors: Eric Schulte 5;; Authors: Eric Schulte
6;; Dan Davison 6;; Dan Davison
7;; Keywords: literate programming, reproducible research 7;; Keywords: literate programming, reproducible research
8;; Homepage: http://orgmode.org 8;; Homepage: https://orgmode.org
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11 11
diff --git a/lisp/org/ob-ruby.el b/lisp/org/ob-ruby.el
index 6daf52b0127..7686ac4e807 100644
--- a/lisp/org/ob-ruby.el
+++ b/lisp/org/ob-ruby.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-sass.el b/lisp/org/ob-sass.el
index 5b179a6e8cb..af55d763e34 100644
--- a/lisp/org/ob-sass.el
+++ b/lisp/org/ob-sass.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-scheme.el b/lisp/org/ob-scheme.el
index cc78b574d07..0efe5f3467c 100644
--- a/lisp/org/ob-scheme.el
+++ b/lisp/org/ob-scheme.el
@@ -5,7 +5,7 @@
5;; Authors: Eric Schulte 5;; Authors: Eric Schulte
6;; Michael Gauland 6;; Michael Gauland
7;; Keywords: literate programming, reproducible research, scheme 7;; Keywords: literate programming, reproducible research, scheme
8;; Homepage: http://orgmode.org 8;; Homepage: https://orgmode.org
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11 11
diff --git a/lisp/org/ob-screen.el b/lisp/org/ob-screen.el
index 4fad849d024..fb7c8e2daa4 100644
--- a/lisp/org/ob-screen.el
+++ b/lisp/org/ob-screen.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Benjamin Andresen 5;; Author: Benjamin Andresen
6;; Keywords: literate programming, interactive shell 6;; Keywords: literate programming, interactive shell
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-shell.el b/lisp/org/ob-shell.el
index c53dd65e66e..362dfd520fb 100644
--- a/lisp/org/ob-shell.el
+++ b/lisp/org/ob-shell.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-shen.el b/lisp/org/ob-shen.el
index 9308e5b38b1..d81e7d60df1 100644
--- a/lisp/org/ob-shen.el
+++ b/lisp/org/ob-shen.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research, shen 6;; Keywords: literate programming, reproducible research, shen
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-sql.el b/lisp/org/ob-sql.el
index 524e9b73e1a..959ede3decc 100644
--- a/lisp/org/ob-sql.el
+++ b/lisp/org/ob-sql.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-sqlite.el b/lisp/org/ob-sqlite.el
index 4799896f63b..42528a38712 100644
--- a/lisp/org/ob-sqlite.el
+++ b/lisp/org/ob-sqlite.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-stan.el b/lisp/org/ob-stan.el
index 6fa9fe5c94f..ffc26818841 100644
--- a/lisp/org/ob-stan.el
+++ b/lisp/org/ob-stan.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Kyle Meyer 5;; Author: Kyle Meyer
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
@@ -39,7 +39,7 @@
39;; that does not end in ".stan". 39;; that does not end in ".stan".
40;; 40;;
41;; For more information and usage examples, visit 41;; For more information and usage examples, visit
42;; http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-stan.html 42;; https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-stan.html
43;; 43;;
44;; [1] http://mc-stan.org/ 44;; [1] http://mc-stan.org/
45 45
diff --git a/lisp/org/ob-table.el b/lisp/org/ob-table.el
index 9ee0bcc24b5..f6a5c88e479 100644
--- a/lisp/org/ob-table.el
+++ b/lisp/org/ob-table.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-tangle.el b/lisp/org/ob-tangle.el
index 5fa59ac4d76..48eddb73a92 100644
--- a/lisp/org/ob-tangle.el
+++ b/lisp/org/ob-tangle.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Eric Schulte 5;; Author: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ob-vala.el b/lisp/org/ob-vala.el
index 02b3bab5b7f..96c37e3ad08 100644
--- a/lisp/org/ob-vala.el
+++ b/lisp/org/ob-vala.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Christian Garbs <mitch@cgarbs.de> 5;; Author: Christian Garbs <mitch@cgarbs.de>
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;;; License: 9;;; License:
10 10
diff --git a/lisp/org/ob.el b/lisp/org/ob.el
index a029da861bd..35f65ffa828 100644
--- a/lisp/org/ob.el
+++ b/lisp/org/ob.el
@@ -4,7 +4,7 @@
4 4
5;; Authors: Eric Schulte 5;; Authors: Eric Schulte
6;; Keywords: literate programming, reproducible research 6;; Keywords: literate programming, reproducible research
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el
index 9aaec330708..5bbf5e34ee5 100644
--- a/lisp/org/org-agenda.el
+++ b/lisp/org/org-agenda.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
@@ -1644,9 +1644,10 @@ When nil, such items are sorted as 0 minutes effort."
1644 (tags . " %i %-12:c") 1644 (tags . " %i %-12:c")
1645 (search . " %i %-12:c")) 1645 (search . " %i %-12:c"))
1646 "Format specifications for the prefix of items in the agenda views. 1646 "Format specifications for the prefix of items in the agenda views.
1647An alist with five entries, each for the different agenda types. The 1647
1648keys of the sublists are `agenda', `todo', `search' and `tags'. 1648An alist with one entry per agenda type. The keys of the
1649The values are format strings. 1649sublists are `agenda', `todo', `search' and `tags'. The values
1650are format strings.
1650 1651
1651This format works similar to a printf format, with the following meaning: 1652This format works similar to a printf format, with the following meaning:
1652 1653
@@ -2075,7 +2076,10 @@ works you probably want to add it to `org-agenda-custom-commands' for good."
2075(defvar org-agenda-follow-mode nil) 2076(defvar org-agenda-follow-mode nil)
2076(defvar org-agenda-entry-text-mode nil) 2077(defvar org-agenda-entry-text-mode nil)
2077(defvar org-agenda-clockreport-mode nil) 2078(defvar org-agenda-clockreport-mode nil)
2078(defvar org-agenda-show-log nil) 2079(defvar org-agenda-show-log nil
2080 "When non-nil, show the log in the agenda.
2081Do not set this directly; instead use
2082`org-agenda-start-with-log-mode', which see.")
2079(defvar org-agenda-redo-command nil) 2083(defvar org-agenda-redo-command nil)
2080(defvar org-agenda-query-string nil) 2084(defvar org-agenda-query-string nil)
2081(defvar org-agenda-mode-hook nil 2085(defvar org-agenda-mode-hook nil
@@ -2207,9 +2211,9 @@ The following commands are available:
2207 nil t) 2211 nil t)
2208 (unless org-agenda-keep-modes 2212 (unless org-agenda-keep-modes
2209 (setq org-agenda-follow-mode org-agenda-start-with-follow-mode 2213 (setq org-agenda-follow-mode org-agenda-start-with-follow-mode
2210 org-agenda-entry-text-mode org-agenda-start-with-entry-text-mode)) 2214 org-agenda-entry-text-mode org-agenda-start-with-entry-text-mode
2211 (setq org-agenda-show-log org-agenda-start-with-log-mode) 2215 org-agenda-show-log org-agenda-start-with-log-mode
2212 (setq org-agenda-clockreport-mode org-agenda-start-with-clockreport-mode) 2216 org-agenda-clockreport-mode org-agenda-start-with-clockreport-mode))
2213 (add-to-invisibility-spec '(org-filtered)) 2217 (add-to-invisibility-spec '(org-filtered))
2214 (add-to-invisibility-spec '(org-link)) 2218 (add-to-invisibility-spec '(org-link))
2215 (easy-menu-change 2219 (easy-menu-change
@@ -6172,7 +6176,7 @@ scheduled items with an hour specification like [h]h:mm."
6172 ;; Nullify delay when a repeater triggered already 6176 ;; Nullify delay when a repeater triggered already
6173 ;; and the delay is of the form --Xd. 6177 ;; and the delay is of the form --Xd.
6174 ((and (string-match-p "--[0-9]+[hdwmy]" s) 6178 ((and (string-match-p "--[0-9]+[hdwmy]" s)
6175 (> current schedule)) 6179 (> schedule (org-agenda--timestamp-to-absolute s)))
6176 0) 6180 0)
6177 (suppress-delay 6181 (suppress-delay
6178 (let ((org-scheduled-delay-days suppress-delay)) 6182 (let ((org-scheduled-delay-days suppress-delay))
@@ -8177,7 +8181,6 @@ so that the date SD will be in that range."
8177 (interactive) 8181 (interactive)
8178 (org-agenda-check-type t 'agenda) 8182 (org-agenda-check-type t 'agenda)
8179 (setq org-agenda-clockreport-mode (not org-agenda-clockreport-mode)) 8183 (setq org-agenda-clockreport-mode (not org-agenda-clockreport-mode))
8180 (setq org-agenda-start-with-clockreport-mode org-agenda-clockreport-mode)
8181 (org-agenda-set-mode-name) 8184 (org-agenda-set-mode-name)
8182 (org-agenda-redo) 8185 (org-agenda-redo)
8183 (message "Clocktable mode is %s" 8186 (message "Clocktable mode is %s"
@@ -8201,7 +8204,6 @@ log items, nothing else."
8201 nil 'clockcheck)) 8204 nil 'clockcheck))
8202 (special '(closed clock state)) 8205 (special '(closed clock state))
8203 (t (not org-agenda-show-log)))) 8206 (t (not org-agenda-show-log))))
8204 (setq org-agenda-start-with-log-mode org-agenda-show-log)
8205 (org-agenda-set-mode-name) 8207 (org-agenda-set-mode-name)
8206 (org-agenda-redo) 8208 (org-agenda-redo)
8207 (message "Log mode is %s" (if org-agenda-show-log "on" "off"))) 8209 (message "Log mode is %s" (if org-agenda-show-log "on" "off")))
@@ -9895,32 +9897,33 @@ The prefix arg is passed through to the command if possible."
9895 (org-agenda-set-tags ,tag 9897 (org-agenda-set-tags ,tag
9896 ,(if (eq action ?+) ''on ''off)))))) 9898 ,(if (eq action ?+) ''on ''off))))))
9897 9899
9898 (?s 9900 ((and (or ?s ?d) c)
9899 (let ((time 9901 (let* ((schedule? (eq c ?s))
9900 (and (not arg) 9902 (prompt (if schedule? "(Re)Schedule to" "(Re)Set Deadline to"))
9901 (org-read-date nil nil nil "(Re)Schedule to" 9903 (time
9902 org-overriding-default-time)))) 9904 (and (not arg)
9905 (let ((new (org-read-date
9906 nil nil nil prompt org-overriding-default-time)))
9907 ;; A "double plus" answer applies to every
9908 ;; scheduled time. Do not turn it into
9909 ;; a fixed date yet.
9910 (if (string-match-p "\\`[ \t]*\\+\\+"
9911 org-read-date-final-answer)
9912 org-read-date-final-answer
9913 new)))))
9903 ;; Make sure to not prompt for a note when bulk 9914 ;; Make sure to not prompt for a note when bulk
9904 ;; rescheduling as Org cannot cope with simultaneous notes. 9915 ;; rescheduling/resetting deadline as Org cannot cope with
9905 ;; Besides, it could be annoying depending on the number of 9916 ;; simultaneous notes. Besides, it could be annoying
9906 ;; items re-scheduled. 9917 ;; depending on the number of marked items.
9907 (setq cmd 9918 (setq cmd
9908 `(lambda () 9919 (if schedule?
9909 (let ((org-log-reschedule (and org-log-reschedule 'time))) 9920 `(lambda ()
9910 (org-agenda-schedule arg ,time)))))) 9921 (let ((org-log-reschedule
9911 (?d 9922 (and org-log-reschedule 'time)))
9912 (let ((time 9923 (org-agenda-schedule arg ,time)))
9913 (and (not arg) 9924 `(lambda ()
9914 (org-read-date nil nil nil "(Re)Set Deadline to" 9925 (let ((org-log-redeadline (and org-log-redeadline 'time)))
9915 org-overriding-default-time)))) 9926 (org-agenda-deadline arg ,time)))))))
9916 ;; Make sure to not prompt for a note when bulk
9917 ;; rescheduling as Org cannot cope with simultaneous
9918 ;; notes. Besides, it could be annoying depending on the
9919 ;; number of items re-scheduled.
9920 (setq cmd
9921 `(lambda ()
9922 (let ((org-log-redeadline (and org-log-redeadline 'time)))
9923 (org-agenda-deadline arg ,time))))))
9924 9927
9925 (?S 9928 (?S
9926 (unless (org-agenda-check-type nil 'agenda 'todo) 9929 (unless (org-agenda-check-type nil 'agenda 'todo)
diff --git a/lisp/org/org-archive.el b/lisp/org/org-archive.el
index 755de7fdac2..e020ec21409 100644
--- a/lisp/org/org-archive.el
+++ b/lisp/org/org-archive.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
diff --git a/lisp/org/org-bbdb.el b/lisp/org/org-bbdb.el
index 1d39efb88c4..5d36379b5eb 100644
--- a/lisp/org/org-bbdb.el
+++ b/lisp/org/org-bbdb.el
@@ -5,7 +5,7 @@
5;; Authors: Carsten Dominik <carsten at orgmode dot org> 5;; Authors: Carsten Dominik <carsten at orgmode dot org>
6;; Thomas Baumann <thomas dot baumann at ch dot tum dot de> 6;; Thomas Baumann <thomas dot baumann at ch dot tum dot de>
7;; Keywords: outlines, hypermedia, calendar, wp 7;; Keywords: outlines, hypermedia, calendar, wp
8;; Homepage: http://orgmode.org 8;; Homepage: https://orgmode.org
9;; 9;;
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11;; 11;;
diff --git a/lisp/org/org-capture.el b/lisp/org/org-capture.el
index cb1741f2f91..3de386c69d6 100644
--- a/lisp/org/org-capture.el
+++ b/lisp/org/org-capture.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
@@ -51,8 +51,8 @@
51(require 'org) 51(require 'org)
52 52
53(declare-function org-at-encrypted-entry-p "org-crypt" ()) 53(declare-function org-at-encrypted-entry-p "org-crypt" ())
54(declare-function org-datetree-find-date-create "org-datetree" 54(declare-function org-clock-update-mode-line "org-clock" (&optional refresh))
55 (date &optional keep-restriction)) 55(declare-function org-datetree-find-date-create "org-datetree" (date &optional keep-restriction))
56(declare-function org-decrypt-entry "org-crypt" ()) 56(declare-function org-decrypt-entry "org-crypt" ())
57(declare-function org-encrypt-entry "org-crypt" ()) 57(declare-function org-encrypt-entry "org-crypt" ())
58(declare-function org-table-analyze "org-table" ()) 58(declare-function org-table-analyze "org-table" ())
@@ -541,8 +541,8 @@ not-in-buffer: command not displayed in matching buffers
541If you define several checks, the agenda command will be 541If you define several checks, the agenda command will be
542accessible if there is at least one valid check. 542accessible if there is at least one valid check.
543 543
544You can also bind a key to another agenda custom command 544You can also bind a key to another capture template depending on
545depending on contextual rules. 545contextual rules.
546 546
547 \\='((\"c\" \"d\" ((in-mode . \"message-mode\")))) 547 \\='((\"c\" \"d\" ((in-mode . \"message-mode\"))))
548 548
@@ -724,21 +724,24 @@ captured item after finalizing."
724 724
725 ;; Did we start the clock in this capture buffer? 725 ;; Did we start the clock in this capture buffer?
726 (when (and org-capture-clock-was-started 726 (when (and org-capture-clock-was-started
727 org-clock-marker (marker-buffer org-clock-marker) 727 org-clock-marker
728 (equal (marker-buffer org-clock-marker) (buffer-base-buffer)) 728 (eq (marker-buffer org-clock-marker) (buffer-base-buffer))
729 (> org-clock-marker (point-min)) 729 (>= org-clock-marker (point-min))
730 (< org-clock-marker (point-max))) 730 (< org-clock-marker (point-max)))
731 ;; Looks like the clock we started is still running. Clock out. 731 ;; Looks like the clock we started is still running.
732 (when (not org-capture-clock-keep) (let (org-log-note-clock-out) (org-clock-out))) 732 (if org-capture-clock-keep
733 (when (and (not org-capture-clock-keep) 733 ;; User may have completed clocked heading from the template.
734 (org-capture-get :clock-resume 'local) 734 ;; Refresh clock mode line.
735 (markerp (org-capture-get :interrupted-clock 'local)) 735 (org-clock-update-mode-line t)
736 (buffer-live-p (marker-buffer 736 ;; Clock out. Possibly resume interrupted clock.
737 (org-capture-get :interrupted-clock 'local)))) 737 (let (org-log-note-clock-out) (org-clock-out))
738 (let ((clock-in-task (org-capture-get :interrupted-clock 'local))) 738 (when (and (org-capture-get :clock-resume 'local)
739 (org-with-point-at clock-in-task 739 (markerp (org-capture-get :interrupted-clock 'local))
740 (org-clock-in))) 740 (buffer-live-p (marker-buffer
741 (message "Interrupted clock has been resumed"))) 741 (org-capture-get :interrupted-clock 'local))))
742 (let ((clock-in-task (org-capture-get :interrupted-clock 'local)))
743 (org-with-point-at clock-in-task (org-clock-in)))
744 (message "Interrupted clock has been resumed"))))
742 745
743 (let ((beg (point-min)) 746 (let ((beg (point-min))
744 (end (point-max)) 747 (end (point-max))
@@ -1118,7 +1121,7 @@ may have been stored before."
1118 (setq level (org-get-valid-level 1121 (setq level (org-get-valid-level
1119 (if (org-at-heading-p) (org-outline-level) 1) 1122 (if (org-at-heading-p) (org-outline-level) 1)
1120 1)) 1123 1))
1121 (if reversed? (outline-next-heading) (org-end-of-subtree t))) 1124 (if reversed? (outline-next-heading) (org-end-of-subtree t t)))
1122 ;; Insert as a top-level entry at the beginning of the file. 1125 ;; Insert as a top-level entry at the beginning of the file.
1123 (reversed? 1126 (reversed?
1124 (goto-char (point-min)) 1127 (goto-char (point-min))
diff --git a/lisp/org/org-clock.el b/lisp/org/org-clock.el
index 4c5fcc64b0f..ff32e28d1e8 100644
--- a/lisp/org/org-clock.el
+++ b/lisp/org/org-clock.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
@@ -430,7 +430,9 @@ This applies when using `org-clock-goto'."
430 :type 'integer) 430 :type 'integer)
431 431
432(defcustom org-clock-display-default-range 'thisyear 432(defcustom org-clock-display-default-range 'thisyear
433 "Default range when displaying clocks with `org-clock-display'." 433 "Default range when displaying clocks with `org-clock-display'.
434Valid values are: `today', `yesterday', `thisweek', `lastweek',
435`thismonth', `lastmonth', `thisyear', `lastyear' and `untilnow'."
434 :group 'org-clock 436 :group 'org-clock
435 :type '(choice (const today) 437 :type '(choice (const today)
436 (const yesterday) 438 (const yesterday)
@@ -441,7 +443,8 @@ This applies when using `org-clock-goto'."
441 (const thisyear) 443 (const thisyear)
442 (const lastyear) 444 (const lastyear)
443 (const untilnow) 445 (const untilnow)
444 (const :tag "Select range interactively" interactive))) 446 (const :tag "Select range interactively" interactive))
447 :safe #'symbolp)
445 448
446(defvar org-clock-in-prepare-hook nil 449(defvar org-clock-in-prepare-hook nil
447 "Hook run when preparing the clock. 450 "Hook run when preparing the clock.
@@ -465,38 +468,6 @@ to add an effort property.")
465(defvar org-clock-stored-resume-clock nil 468(defvar org-clock-stored-resume-clock nil
466 "Clock to resume, saved by `org-clock-load'") 469 "Clock to resume, saved by `org-clock-load'")
467 470
468(defconst org-clock--oldest-date
469 (let* ((dichotomy
470 (lambda (min max pred)
471 (if (funcall pred min) min
472 (cl-incf min)
473 (while (> (- max min) 1)
474 (let ((mean (+ (ash min -1) (ash max -1) (logand min max 1))))
475 (if (funcall pred mean) (setq max mean) (setq min mean)))))
476 max))
477 (high
478 (funcall dichotomy
479 most-negative-fixnum
480 0
481 (lambda (m)
482 ;; libc in macOS 10.6 hangs when decoding times
483 ;; around year -2**31. Limit `high' not to go
484 ;; any earlier than that.
485 (unless (and (eq system-type 'darwin)
486 (string-match-p
487 "10\\.6\\.[[:digit:]]"
488 (shell-command-to-string
489 "sw_vers -productVersion"))
490 (<= m -1034058203135))
491 (ignore-errors (decode-time (list m 0)))))))
492 (low
493 (funcall dichotomy
494 most-negative-fixnum
495 0
496 (lambda (m) (ignore-errors (decode-time (list high m)))))))
497 (list high low))
498 "Internal time for oldest date representable on the system.")
499
500;;; The clock for measuring work time. 471;;; The clock for measuring work time.
501 472
502(defvar org-mode-line-string "") 473(defvar org-mode-line-string "")
@@ -542,6 +513,15 @@ cannot be translated."
542 (assoc-string language org-clock-clocktable-language-setup t)) 513 (assoc-string language org-clock-clocktable-language-setup t))
543 s)) 514 s))
544 515
516(defun org-clock--mode-line-heading ()
517 "Return currently clocked heading, formatted for mode line."
518 (cond ((functionp org-clock-heading-function)
519 (funcall org-clock-heading-function))
520 ((org-before-first-heading-p) "???")
521 (t (replace-regexp-in-string
522 org-bracket-link-analytic-regexp "\\5"
523 (org-no-properties (org-get-heading t t t t))))))
524
545(defun org-clock-menu () 525(defun org-clock-menu ()
546 (interactive) 526 (interactive)
547 (popup-menu 527 (popup-menu
@@ -690,19 +670,18 @@ If not, show simply the clocked time like 01:50."
690 (if org-clock-effort 670 (if org-clock-effort
691 (let* ((effort-in-minutes (org-duration-to-minutes org-clock-effort)) 671 (let* ((effort-in-minutes (org-duration-to-minutes org-clock-effort))
692 (work-done-str 672 (work-done-str
693 (propertize 673 (propertize (org-duration-from-minutes clocked-time)
694 (org-duration-from-minutes clocked-time) 674 'face
695 'face (if (and org-clock-task-overrun (not org-clock-task-overrun-text)) 675 (if (and org-clock-task-overrun
696 'org-mode-line-clock-overrun 'org-mode-line-clock))) 676 (not org-clock-task-overrun-text))
697 (effort-str (org-duration-from-minutes effort-in-minutes)) 677 'org-mode-line-clock-overrun
698 (clockstr (propertize 678 'org-mode-line-clock)))
699 (concat " [%s/" effort-str 679 (effort-str (org-duration-from-minutes effort-in-minutes)))
700 "] (" (replace-regexp-in-string "%" "%%" org-clock-heading) ")") 680 (format (propertize " [%s/%s] (%s)" 'face 'org-mode-line-clock)
701 'face 'org-mode-line-clock))) 681 work-done-str effort-str org-clock-heading))
702 (format clockstr work-done-str)) 682 (format (propertize " [%s] (%s)" 'face 'org-mode-line-clock)
703 (propertize (concat " [" (org-duration-from-minutes clocked-time) 683 (org-duration-from-minutes clocked-time)
704 "]" (format " (%s)" org-clock-heading)) 684 org-clock-heading))))
705 'face 'org-mode-line-clock))))
706 685
707(defun org-clock-get-last-clock-out-time () 686(defun org-clock-get-last-clock-out-time ()
708 "Get the last clock-out time for the current subtree." 687 "Get the last clock-out time for the current subtree."
@@ -712,10 +691,13 @@ If not, show simply the clocked time like 01:50."
712 ".*\\]--\\(\\[[^]]+\\]\\)") end t) 691 ".*\\]--\\(\\[[^]]+\\]\\)") end t)
713 (org-time-string-to-time (match-string 1)))))) 692 (org-time-string-to-time (match-string 1))))))
714 693
715(defun org-clock-update-mode-line () 694(defun org-clock-update-mode-line (&optional refresh)
695 "Update mode line with clock information.
696When optional argument is non-nil, refresh cached heading."
716 (if org-clock-effort 697 (if org-clock-effort
717 (org-clock-notify-once-if-expired) 698 (org-clock-notify-once-if-expired)
718 (setq org-clock-task-overrun nil)) 699 (setq org-clock-task-overrun nil))
700 (when refresh (setq org-clock-heading (org-clock--mode-line-heading)))
719 (setq org-mode-line-string 701 (setq org-mode-line-string
720 (propertize 702 (propertize
721 (let ((clock-string (org-clock-get-clock-string)) 703 (let ((clock-string (org-clock-get-clock-string))
@@ -1232,7 +1214,8 @@ the default behavior."
1232 (when (equal select '(64)) 1214 (when (equal select '(64))
1233 ;; Set start-time to `org-clock-out-time' 1215 ;; Set start-time to `org-clock-out-time'
1234 (let ((org-clock-continuously t)) 1216 (let ((org-clock-continuously t))
1235 (org-clock-in nil org-clock-out-time))) 1217 (org-clock-in nil org-clock-out-time)
1218 (throw 'abort nil)))
1236 1219
1237 (when (equal select '(4)) 1220 (when (equal select '(4))
1238 (setq selected-task (org-clock-select-task "Clock-in on task: ")) 1221 (setq selected-task (org-clock-select-task "Clock-in on task: "))
@@ -1298,15 +1281,7 @@ the default behavior."
1298 org-clock-in-switch-to-state 1281 org-clock-in-switch-to-state
1299 "\\>")))) 1282 "\\>"))))
1300 (org-todo org-clock-in-switch-to-state))) 1283 (org-todo org-clock-in-switch-to-state)))
1301 (setq org-clock-heading 1284 (setq org-clock-heading (org-clock--mode-line-heading))
1302 (cond ((and org-clock-heading-function
1303 (functionp org-clock-heading-function))
1304 (funcall org-clock-heading-function))
1305 ((nth 4 (org-heading-components))
1306 (replace-regexp-in-string
1307 "\\[\\[.*?\\]\\[\\(.*?\\)\\]\\]" "\\1"
1308 (match-string-no-properties 4)))
1309 (t "???")))
1310 (org-clock-find-position org-clock-in-resume) 1285 (org-clock-find-position org-clock-in-resume)
1311 (cond 1286 (cond
1312 ((and org-clock-in-resume 1287 ((and org-clock-in-resume
@@ -1442,7 +1417,7 @@ in particular CLOCK_MODELINE_TOTAL and the corresponding variable
1442`org-clock-mode-line-total' and then decides which time to use. 1417`org-clock-mode-line-total' and then decides which time to use.
1443 1418
1444The time is always returned as UTC." 1419The time is always returned as UTC."
1445 (let ((cmt (or (org-entry-get nil "CLOCK_MODELINE_TOTAL") 1420 (let ((cmt (or (org-entry-get nil "CLOCK_MODELINE_TOTAL" 'selective)
1446 (symbol-name org-clock-mode-line-total))) 1421 (symbol-name org-clock-mode-line-total)))
1447 (lr (org-entry-get nil "LAST_REPEAT"))) 1422 (lr (org-entry-get nil "LAST_REPEAT")))
1448 (cond 1423 (cond
@@ -1451,7 +1426,7 @@ The time is always returned as UTC."
1451 (current-time)) 1426 (current-time))
1452 ((equal cmt "today") 1427 ((equal cmt "today")
1453 (setq org--msg-extra "showing today's task time.") 1428 (setq org--msg-extra "showing today's task time.")
1454 (let* ((dt (org-decode-time nil t)) 1429 (let* ((dt (decode-time))
1455 (hour (nth 2 dt)) 1430 (hour (nth 2 dt))
1456 (day (nth 3 dt))) 1431 (day (nth 3 dt)))
1457 (if (< hour org-extend-today-until) (setf (nth 3 dt) (1- day))) 1432 (if (< hour org-extend-today-until) (setf (nth 3 dt) (1- day)))
@@ -1784,6 +1759,7 @@ With prefix arg SELECT, offer recently clocked tasks for selection."
1784(defvar-local org-clock-file-total-minutes nil 1759(defvar-local org-clock-file-total-minutes nil
1785 "Holds the file total time in minutes, after a call to `org-clock-sum'.") 1760 "Holds the file total time in minutes, after a call to `org-clock-sum'.")
1786 1761
1762;;;###autoload
1787(defun org-clock-sum-today (&optional headline-filter) 1763(defun org-clock-sum-today (&optional headline-filter)
1788 "Sum the times for each subtree for today." 1764 "Sum the times for each subtree for today."
1789 (let ((range (org-clock-special-range 'today))) 1765 (let ((range (org-clock-special-range 'today)))
@@ -1929,37 +1905,36 @@ Use `\\[org-clock-remove-overlays]' to remove the subtree times."
1929 (prop (cond ((not arg) :org-clock-minutes-default) 1905 (prop (cond ((not arg) :org-clock-minutes-default)
1930 (todayp :org-clock-minutes-today) 1906 (todayp :org-clock-minutes-today)
1931 (customp :org-clock-minutes-custom) 1907 (customp :org-clock-minutes-custom)
1932 (t :org-clock-minutes))) 1908 (t :org-clock-minutes))))
1933 time h m p)
1934 (cond ((not arg) (org-clock-sum-custom 1909 (cond ((not arg) (org-clock-sum-custom
1935 nil org-clock-display-default-range prop)) 1910 nil org-clock-display-default-range prop))
1936 (todayp (org-clock-sum-today)) 1911 (todayp (org-clock-sum-today))
1937 (customp (org-clock-sum-custom nil arg)) 1912 (customp (org-clock-sum-custom nil arg))
1938 (t (org-clock-sum))) 1913 (t (org-clock-sum)))
1939 (unless (eq arg '(64)) 1914 (unless (equal arg '(64))
1940 (save-excursion 1915 (save-excursion
1941 (goto-char (point-min)) 1916 (goto-char (point-min))
1942 (while (or (and (equal (setq p (point)) (point-min)) 1917 (let ((p nil))
1943 (get-text-property p prop)) 1918 (while (or (and (equal (setq p (point)) (point-min))
1944 (setq p (next-single-property-change 1919 (get-text-property p prop))
1945 (point) prop))) 1920 (setq p (next-single-property-change (point) prop)))
1946 (goto-char p) 1921 (goto-char p)
1947 (when (setq time (get-text-property p prop)) 1922 (let ((time (get-text-property p prop)))
1948 (org-clock-put-overlay time))) 1923 (when time (org-clock-put-overlay time)))))
1949 (setq h (/ org-clock-file-total-minutes 60)
1950 m (- org-clock-file-total-minutes (* 60 h)))
1951 ;; Arrange to remove the overlays upon next change. 1924 ;; Arrange to remove the overlays upon next change.
1952 (when org-remove-highlights-with-change 1925 (when org-remove-highlights-with-change
1953 (add-hook 'before-change-functions 'org-clock-remove-overlays 1926 (add-hook 'before-change-functions 'org-clock-remove-overlays
1954 nil 'local)))) 1927 nil 'local))))
1955 (message (concat (format "Total file time%s: " 1928 (let* ((h (/ org-clock-file-total-minutes 60))
1956 (cond (todayp " for today") 1929 (m (- org-clock-file-total-minutes (* 60 h))))
1957 (customp " (custom)") 1930 (message (concat (format "Total file time%s: "
1958 (t ""))) 1931 (cond (todayp " for today")
1959 (org-duration-from-minutes 1932 (customp " (custom)")
1960 org-clock-file-total-minutes) 1933 (t "")))
1961 " (%d hours and %d minutes)") 1934 (org-duration-from-minutes
1962 h m))) 1935 org-clock-file-total-minutes)
1936 " (%d hours and %d minutes)")
1937 h m))))
1963 1938
1964(defvar-local org-clock-overlays nil) 1939(defvar-local org-clock-overlays nil)
1965 1940
@@ -2051,27 +2026,32 @@ fontified, and then returned."
2051 2026
2052;;;###autoload 2027;;;###autoload
2053(defun org-clock-report (&optional arg) 2028(defun org-clock-report (&optional arg)
2054 "Create a table containing a report about clocked time. 2029 "Update or create a table containing a report about clocked time.
2055If the cursor is inside an existing clocktable block, then the table 2030
2056will be updated. If not, a new clocktable will be inserted. The scope 2031If point is inside an existing clocktable block, update it.
2057of the new clock will be subtree when called from within a subtree, and 2032Otherwise, insert a new one.
2058file elsewhere. 2033
2059 2034The new table inherits its properties from the variable
2060When called with a prefix argument, move to the first clock table in the 2035`org-clock-clocktable-default-properties'. The scope of the
2061buffer and update it." 2036clocktable, when not specified in the previous variable, is
2037`subtree' when the function is called from within a subtree, and
2038`file' elsewhere.
2039
2040When called with a prefix argument, move to the first clock table
2041in the buffer and update it."
2062 (interactive "P") 2042 (interactive "P")
2063 (org-clock-remove-overlays) 2043 (org-clock-remove-overlays)
2064 (when arg 2044 (when arg
2065 (org-find-dblock "clocktable") 2045 (org-find-dblock "clocktable")
2066 (org-show-entry)) 2046 (org-show-entry))
2067 (if (org-in-clocktable-p) 2047 (pcase (org-in-clocktable-p)
2068 (goto-char (org-in-clocktable-p)) 2048 (`nil
2069 (let ((props (if (ignore-errors 2049 (org-create-dblock
2070 (save-excursion (org-back-to-heading))) 2050 (org-combine-plists
2071 (list :name "clocktable" :scope 'subtree) 2051 (list :scope (if (org-before-first-heading-p) 'file 'subtree))
2072 (list :name "clocktable")))) 2052 org-clock-clocktable-default-properties
2073 (org-create-dblock 2053 '(:name "clocktable"))))
2074 (org-combine-plists org-clock-clocktable-default-properties props)))) 2054 (start (goto-char start)))
2075 (org-update-dblock)) 2055 (org-update-dblock))
2076 2056
2077(defun org-day-of-week (day month year) 2057(defun org-day-of-week (day month year)
@@ -2258,7 +2238,9 @@ have priority."
2258 ;; Format start and end times according to AS-STRINGS. 2238 ;; Format start and end times according to AS-STRINGS.
2259 (let* ((start (pcase key 2239 (let* ((start (pcase key
2260 (`interactive (org-read-date nil t nil "Range start? ")) 2240 (`interactive (org-read-date nil t nil "Range start? "))
2261 (`untilnow org-clock--oldest-date) 2241 ;; In theory, all clocks started after the dawn of
2242 ;; humanity.
2243 (`untilnow (encode-time 0 0 0 0 0 -50000))
2262 (_ (encode-time 0 m h d month y)))) 2244 (_ (encode-time 0 m h d month y))))
2263 (end (pcase key 2245 (end (pcase key
2264 (`interactive (org-read-date nil t nil "Range end? ")) 2246 (`interactive (org-read-date nil t nil "Range end? "))
@@ -2692,16 +2674,15 @@ LEVEL is an integer. Indent by two spaces per level above 1."
2692 2674
2693(defun org-clocktable-steps (params) 2675(defun org-clocktable-steps (params)
2694 "Step through the range to make a number of clock tables." 2676 "Step through the range to make a number of clock tables."
2695 (let* ((p1 (copy-sequence params)) 2677 (let* ((ts (plist-get params :tstart))
2696 (ts (plist-get p1 :tstart)) 2678 (te (plist-get params :tend))
2697 (te (plist-get p1 :tend)) 2679 (ws (plist-get params :wstart))
2698 (ws (plist-get p1 :wstart)) 2680 (ms (plist-get params :mstart))
2699 (ms (plist-get p1 :mstart)) 2681 (step0 (plist-get params :step))
2700 (step0 (plist-get p1 :step)) 2682 (step (cdr (assq step0 '((day . 86400) (week . 604800)))))
2701 (step (cdr (assoc step0 '((day . 86400) (week . 604800))))) 2683 (stepskip0 (plist-get params :stepskip0))
2702 (stepskip0 (plist-get p1 :stepskip0)) 2684 (block (plist-get params :block))
2703 (block (plist-get p1 :block)) 2685 cc tsb)
2704 cc step-time tsb)
2705 (when block 2686 (when block
2706 (setq cc (org-clock-special-range block nil t ws ms) 2687 (setq cc (org-clock-special-range block nil t ws ms)
2707 ts (car cc) 2688 ts (car cc)
@@ -2724,37 +2705,37 @@ LEVEL is an integer. Indent by two spaces per level above 1."
2724 (setq tsb 2705 (setq tsb
2725 (if (eq step0 'week) 2706 (if (eq step0 'week)
2726 (let ((dow (nth 6 (decode-time (seconds-to-time ts))))) 2707 (let ((dow (nth 6 (decode-time (seconds-to-time ts)))))
2727 (if (< dow ws) ts 2708 (if (<= dow ws) ts
2728 (- ts (* 86400 (- dow ws))))) 2709 (- ts (* 86400 (- dow ws)))))
2729 ts)) 2710 ts))
2730 (setq p1 (plist-put p1 :header ""))
2731 (setq p1 (plist-put p1 :step nil))
2732 (setq p1 (plist-put p1 :block nil))
2733 (while (< tsb te) 2711 (while (< tsb te)
2734 (or (bolp) (insert "\n")) 2712 (unless (bolp) (insert "\n"))
2735 (setq p1 (plist-put p1 :tstart (format-time-string 2713 (let ((start-time (seconds-to-time (max tsb ts))))
2736 (org-time-stamp-format nil t) 2714 (cl-incf tsb (let ((dow (nth 6 (decode-time (seconds-to-time tsb)))))
2737 (seconds-to-time (max tsb ts))))) 2715 (if (or (eq step0 'day)
2738 (cl-incf tsb (let ((dow (nth 6 (decode-time (seconds-to-time tsb))))) 2716 (= dow ws))
2739 (if (or (eq step0 'day) 2717 step
2740 (= dow ws)) 2718 (* 86400 (- ws dow)))))
2741 step 2719 (insert "\n"
2742 (* 86400 (- ws dow))))) 2720 (if (eq step0 'day) "Daily report: "
2743 (setq p1 (plist-put p1 :tend (format-time-string 2721 "Weekly report starting on: ")
2744 (org-time-stamp-format nil t) 2722 (format-time-string (org-time-stamp-format nil t) start-time)
2745 (seconds-to-time (min te tsb))))) 2723 "\n")
2746 (insert "\n" (if (eq step0 'day) "Daily report: " 2724 (let ((table-begin (line-beginning-position 0))
2747 "Weekly report starting on: ") 2725 (step-time
2748 (plist-get p1 :tstart) "\n") 2726 (org-dblock-write:clocktable
2749 (setq step-time (org-dblock-write:clocktable p1)) 2727 (org-combine-plists
2750 (re-search-forward "^[ \t]*#\\+END:") 2728 params
2751 (when (and (equal step-time 0) stepskip0) 2729 (list
2752 ;; Remove the empty table 2730 :header "" :step nil :block nil
2753 (delete-region (point-at-bol) 2731 :tstart (format-time-string (org-time-stamp-format t t)
2754 (save-excursion 2732 start-time)
2755 (re-search-backward "^\\(Daily\\|Weekly\\) report" 2733 :tend (format-time-string (org-time-stamp-format t t)
2756 nil t) 2734 (seconds-to-time (min te tsb))))))))
2757 (point)))) 2735 (re-search-forward "^[ \t]*#\\+END:")
2736 (when (and stepskip0 (equal step-time 0))
2737 ;; Remove the empty table
2738 (delete-region (line-beginning-position) table-begin))))
2758 (end-of-line 0)))) 2739 (end-of-line 0))))
2759 2740
2760(defun org-clock-get-table-data (file params) 2741(defun org-clock-get-table-data (file params)
diff --git a/lisp/org/org-colview.el b/lisp/org/org-colview.el
index 0d5a9827d59..cb5c091d0a3 100644
--- a/lisp/org/org-colview.el
+++ b/lisp/org/org-colview.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
diff --git a/lisp/org/org-compat.el b/lisp/org/org-compat.el
index f32fcd1783e..1fd408de9e5 100644
--- a/lisp/org/org-compat.el
+++ b/lisp/org/org-compat.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
@@ -61,12 +61,6 @@
61 (defalias 'format-message 'format) 61 (defalias 'format-message 'format)
62 (defalias 'gui-get-selection 'x-get-selection)) 62 (defalias 'gui-get-selection 'x-get-selection))
63 63
64(defun org-decode-time (&optional time zone)
65 "Backward-compatible function for `decode-time'."
66 (if (< emacs-major-version 25)
67 (decode-time time)
68 (decode-time time zone)))
69
70(unless (fboundp 'directory-name-p) 64(unless (fboundp 'directory-name-p)
71 (defun directory-name-p (name) 65 (defun directory-name-p (name)
72 "Return non-nil if NAME ends with a directory separator character." 66 "Return non-nil if NAME ends with a directory separator character."
@@ -78,37 +72,6 @@
78 (and (memq system-type '(windows-nt ms-dos)) 72 (and (memq system-type '(windows-nt ms-dos))
79 (= lastc ?\\)))))) 73 (= lastc ?\\))))))
80 74
81(unless (fboundp 'directory-files-recursively)
82 (defun directory-files-recursively (dir regexp &optional include-directories)
83 "Return list of all files under DIR that have file names matching REGEXP.
84This function works recursively. Files are returned in \"depth first\"
85order, and files from each directory are sorted in alphabetical order.
86Each file name appears in the returned list in its absolute form.
87Optional argument INCLUDE-DIRECTORIES non-nil means also include in the
88output directories whose names match REGEXP."
89 (let ((result nil)
90 (files nil)
91 ;; When DIR is "/", remote file names like "/method:" could
92 ;; also be offered. We shall suppress them.
93 (tramp-mode (and tramp-mode (file-remote-p (expand-file-name dir)))))
94 (dolist (file (sort (file-name-all-completions "" dir)
95 'string<))
96 (unless (member file '("./" "../"))
97 (if (directory-name-p file)
98 (let* ((leaf (substring file 0 (1- (length file))))
99 (full-file (expand-file-name leaf dir)))
100 ;; Don't follow symlinks to other directories.
101 (unless (file-symlink-p full-file)
102 (setq result
103 (nconc result (directory-files-recursively
104 full-file regexp include-directories))))
105 (when (and include-directories
106 (string-match regexp leaf))
107 (setq result (nconc result (list full-file)))))
108 (when (string-match regexp file)
109 (push (expand-file-name file dir) files)))))
110 (nconc result (nreverse files)))))
111
112 75
113;;; Obsolete aliases (remove them after the next major release). 76;;; Obsolete aliases (remove them after the next major release).
114 77
diff --git a/lisp/org/org-datetree.el b/lisp/org/org-datetree.el
index a8162fe9382..d00bad222cb 100644
--- a/lisp/org/org-datetree.el
+++ b/lisp/org/org-datetree.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
diff --git a/lisp/org/org-docview.el b/lisp/org/org-docview.el
index 57069b32aee..a467212d012 100644
--- a/lisp/org/org-docview.el
+++ b/lisp/org/org-docview.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Jan Böcker <jan.boecker at jboecker dot de> 5;; Author: Jan Böcker <jan.boecker at jboecker dot de>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
diff --git a/lisp/org/org-element.el b/lisp/org/org-element.el
index 9e5c4007bd7..d9c6522e2f0 100644
--- a/lisp/org/org-element.el
+++ b/lisp/org/org-element.el
@@ -22,7 +22,7 @@
22 22
23;;; Commentary: 23;;; Commentary:
24;; 24;;
25;; See <http://orgmode.org/worg/dev/org-syntax.html> for details about 25;; See <https://orgmode.org/worg/dev/org-syntax.html> for details about
26;; Org syntax. 26;; Org syntax.
27;; 27;;
28;; Lisp-wise, a syntax object can be represented as a list. 28;; Lisp-wise, a syntax object can be represented as a list.
@@ -3065,7 +3065,7 @@ Assume point is at the beginning of the link."
3065 (setq path (match-string-no-properties 1)) 3065 (setq path (match-string-no-properties 1))
3066 (setq contents-begin (match-beginning 1)) 3066 (setq contents-begin (match-beginning 1))
3067 (setq contents-end (match-end 1))) 3067 (setq contents-end (match-end 1)))
3068 ;; Type 2: Standard link, i.e. [[http://orgmode.org][homepage]] 3068 ;; Type 2: Standard link, i.e. [[https://orgmode.org][homepage]]
3069 ((looking-at org-bracket-link-regexp) 3069 ((looking-at org-bracket-link-regexp)
3070 (setq format 'bracket) 3070 (setq format 'bracket)
3071 (setq contents-begin (match-beginning 3)) 3071 (setq contents-begin (match-beginning 3))
@@ -3114,14 +3114,14 @@ Assume point is at the beginning of the link."
3114 (t 3114 (t
3115 (setq type "fuzzy") 3115 (setq type "fuzzy")
3116 (setq path raw-link)))) 3116 (setq path raw-link))))
3117 ;; Type 3: Plain link, e.g., http://orgmode.org 3117 ;; Type 3: Plain link, e.g., https://orgmode.org
3118 ((looking-at org-plain-link-re) 3118 ((looking-at org-plain-link-re)
3119 (setq format 'plain) 3119 (setq format 'plain)
3120 (setq raw-link (match-string-no-properties 0)) 3120 (setq raw-link (match-string-no-properties 0))
3121 (setq type (match-string-no-properties 1)) 3121 (setq type (match-string-no-properties 1))
3122 (setq link-end (match-end 0)) 3122 (setq link-end (match-end 0))
3123 (setq path (match-string-no-properties 2))) 3123 (setq path (match-string-no-properties 2)))
3124 ;; Type 4: Angular link, e.g., <http://orgmode.org>. Unlike to 3124 ;; Type 4: Angular link, e.g., <https://orgmode.org>. Unlike to
3125 ;; bracket links, follow RFC 3986 and remove any extra 3125 ;; bracket links, follow RFC 3986 and remove any extra
3126 ;; whitespace in URI. 3126 ;; whitespace in URI.
3127 ((looking-at org-angle-link-re) 3127 ((looking-at org-angle-link-re)
diff --git a/lisp/org/org-entities.el b/lisp/org/org-entities.el
index 65c7d055e08..e291b521f90 100644
--- a/lisp/org/org-entities.el
+++ b/lisp/org/org-entities.el
@@ -5,7 +5,7 @@
5;; Author: Carsten Dominik <carsten at orgmode dot org>, 5;; Author: Carsten Dominik <carsten at orgmode dot org>,
6;; Ulf Stegemann <ulf at zeitform dot de> 6;; Ulf Stegemann <ulf at zeitform dot de>
7;; Keywords: outlines, calendar, wp 7;; Keywords: outlines, calendar, wp
8;; Homepage: http://orgmode.org 8;; Homepage: https://orgmode.org
9;; 9;;
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11;; 11;;
diff --git a/lisp/org/org-eww.el b/lisp/org/org-eww.el
index 3d9dddcac03..1b6112adbb9 100644
--- a/lisp/org/org-eww.el
+++ b/lisp/org/org-eww.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Marco Wahl <marcowahlsoft>a<gmailcom> 5;; Author: Marco Wahl <marcowahlsoft>a<gmailcom>
6;; Keywords: link, eww 6;; Keywords: link, eww
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/org-faces.el b/lisp/org/org-faces.el
index 83871fb4454..750ada1e9c3 100644
--- a/lisp/org/org-faces.el
+++ b/lisp/org/org-faces.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
diff --git a/lisp/org/org-feed.el b/lisp/org/org-feed.el
index c3491d5df70..fde19e632c7 100644
--- a/lisp/org/org-feed.el
+++ b/lisp/org/org-feed.el
@@ -4,7 +4,7 @@
4;; 4;;
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
@@ -276,14 +276,21 @@ have been saved."
276(defun org-feed-update-all () 276(defun org-feed-update-all ()
277 "Get inbox items from all feeds in `org-feed-alist'." 277 "Get inbox items from all feeds in `org-feed-alist'."
278 (interactive) 278 (interactive)
279 (let ((nfeeds (length org-feed-alist)) 279 (let ((entries 0)
280 (nnew (apply '+ (mapcar 'org-feed-update org-feed-alist)))) 280 (errors 0)
281 (message "%s from %d %s" 281 (total-feeds (length org-feed-alist)))
282 (cond ((= nnew 0) "No new entries") 282 (dolist (feed org-feed-alist)
283 ((= nnew 1) "1 new entry") 283 (let ((items (ignore-errors (org-feed-update feed))))
284 (t (format "%d new entries" nnew))) 284 (if items (cl-incf entries items)
285 nfeeds 285 (cl-incf errors))))
286 (if (= nfeeds 1) "feed" "feeds")))) 286 (message "%s from %d %s%s"
287 (pcase entries
288 (0 "No new entries")
289 (1 "1 new entry")
290 (_ (format "%d new entries" entries)))
291 total-feeds
292 (if (= total-feeds 1) "feed" "feeds")
293 (if (= 0 errors) "" (format " (unavailable feeds: %d)" errors)))))
287 294
288;;;###autoload 295;;;###autoload
289(defun org-feed-update (feed &optional retrieve-only) 296(defun org-feed-update (feed &optional retrieve-only)
diff --git a/lisp/org/org-footnote.el b/lisp/org/org-footnote.el
index 4d3f154c257..c6376ca5dc0 100644
--- a/lisp/org/org-footnote.el
+++ b/lisp/org/org-footnote.el
@@ -4,7 +4,7 @@
4;; 4;;
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
diff --git a/lisp/org/org-gnus.el b/lisp/org/org-gnus.el
index 0f2cdc28fbf..a53b343efb4 100644
--- a/lisp/org/org-gnus.el
+++ b/lisp/org/org-gnus.el
@@ -5,7 +5,7 @@
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Tassilo Horn <tassilo at member dot fsf dot org> 6;; Tassilo Horn <tassilo at member dot fsf dot org>
7;; Keywords: outlines, hypermedia, calendar, wp 7;; Keywords: outlines, hypermedia, calendar, wp
8;; Homepage: http://orgmode.org 8;; Homepage: https://orgmode.org
9;; 9;;
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11;; 11;;
@@ -42,6 +42,7 @@
42 42
43(declare-function gnus-activate-group "gnus-start" (group &optional scan dont-check method dont-sub-check)) 43(declare-function gnus-activate-group "gnus-start" (group &optional scan dont-check method dont-sub-check))
44(declare-function gnus-find-method-for-group "gnus" (group &optional info)) 44(declare-function gnus-find-method-for-group "gnus" (group &optional info))
45(declare-function gnus-article-show-summary "gnus-art" ())
45(declare-function gnus-group-group-name "gnus-group") 46(declare-function gnus-group-group-name "gnus-group")
46(declare-function gnus-group-jump-to-group "gnus-group" (group &optional prompt)) 47(declare-function gnus-group-jump-to-group "gnus-group" (group &optional prompt))
47(declare-function gnus-group-read-group "gnus-group" (&optional all no-article group select-articles)) 48(declare-function gnus-group-read-group "gnus-group" (&optional all no-article group select-articles))
@@ -142,7 +143,14 @@ If `org-store-link' was called with a prefix arg the meaning of
142 (save-excursion 143 (save-excursion
143 (nnir-article-group (gnus-summary-article-number)))) 144 (nnir-article-group (gnus-summary-article-number))))
144 (_ gnus-newsgroup-name))) 145 (_ gnus-newsgroup-name)))
145 (header (with-current-buffer gnus-summary-buffer 146 (header (if (eq major-mode 'gnus-article-mode)
147 ;; When in an article, first move to summary
148 ;; buffer, with point on the summary of the
149 ;; current article before extracting headers.
150 (save-window-excursion
151 (save-excursion
152 (gnus-article-show-summary)
153 (gnus-summary-article-header)))
146 (gnus-summary-article-header))) 154 (gnus-summary-article-header)))
147 (from (mail-header-from header)) 155 (from (mail-header-from header))
148 (message-id (org-unbracket-string "<" ">" (mail-header-id header))) 156 (message-id (org-unbracket-string "<" ">" (mail-header-id header)))
diff --git a/lisp/org/org-habit.el b/lisp/org/org-habit.el
index 09f13129e1b..375714e35ea 100644
--- a/lisp/org/org-habit.el
+++ b/lisp/org/org-habit.el
@@ -4,7 +4,7 @@
4 4
5;; Author: John Wiegley <johnw at gnu dot org> 5;; Author: John Wiegley <johnw at gnu dot org>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
diff --git a/lisp/org/org-id.el b/lisp/org/org-id.el
index a230947c78a..26b203ff06d 100644
--- a/lisp/org/org-id.el
+++ b/lisp/org/org-id.el
@@ -4,7 +4,7 @@
4;; 4;;
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
diff --git a/lisp/org/org-indent.el b/lisp/org/org-indent.el
index ef68c3c4fa7..84bac2aa799 100644
--- a/lisp/org/org-indent.el
+++ b/lisp/org/org-indent.el
@@ -4,7 +4,7 @@
4;; 4;;
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
diff --git a/lisp/org/org-info.el b/lisp/org/org-info.el
index db5d66ce761..6dde36ceba1 100644
--- a/lisp/org/org-info.el
+++ b/lisp/org/org-info.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
diff --git a/lisp/org/org-inlinetask.el b/lisp/org/org-inlinetask.el
index 1825b88cdf6..08fc268d0d7 100644
--- a/lisp/org/org-inlinetask.el
+++ b/lisp/org/org-inlinetask.el
@@ -4,7 +4,7 @@
4;; 4;;
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/org-list.el b/lisp/org/org-list.el
index ad0030ffdf8..1f51809f1ce 100644
--- a/lisp/org/org-list.el
+++ b/lisp/org/org-list.el
@@ -5,7 +5,7 @@
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Bastien Guerry <bzg@gnu.org> 6;; Bastien Guerry <bzg@gnu.org>
7;; Keywords: outlines, hypermedia, calendar, wp 7;; Keywords: outlines, hypermedia, calendar, wp
8;; Homepage: http://orgmode.org 8;; Homepage: https://orgmode.org
9;; 9;;
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11;; 11;;
@@ -121,6 +121,7 @@
121(declare-function org-element-set-element "org-element" (old new)) 121(declare-function org-element-set-element "org-element" (old new))
122(declare-function org-element-type "org-element" (element)) 122(declare-function org-element-type "org-element" (element))
123(declare-function org-element-update-syntax "org-element" ()) 123(declare-function org-element-update-syntax "org-element" ())
124(declare-function org-end-of-meta-data "org" (&optional full))
124(declare-function org-entry-get "org" 125(declare-function org-entry-get "org"
125 (pom property &optional inherit literal-nil)) 126 (pom property &optional inherit literal-nil))
126(declare-function org-export-create-backend "ox" (&rest rest) t) 127(declare-function org-export-create-backend "ox" (&rest rest) t)
@@ -2356,27 +2357,23 @@ is an integer, 0 means `-', 1 means `+' etc. If WHICH is
2356 2357
2357(defun org-toggle-checkbox (&optional toggle-presence) 2358(defun org-toggle-checkbox (&optional toggle-presence)
2358 "Toggle the checkbox in the current line. 2359 "Toggle the checkbox in the current line.
2359With prefix arg TOGGLE-PRESENCE, add or remove checkboxes. With 2360
2360double prefix, set checkbox to [-]. 2361With prefix argument TOGGLE-PRESENCE, add or remove checkboxes.
2362With a double prefix argument, set the checkbox to \"[-]\".
2361 2363
2362When there is an active region, toggle status or presence of the 2364When there is an active region, toggle status or presence of the
2363first checkbox there, and make every item inside have the same 2365first checkbox there, and make every item inside have the same
2364status or presence, respectively. 2366status or presence, respectively.
2365 2367
2366If the cursor is in a headline, apply this to all checkbox items 2368If point is on a headline, apply this to all checkbox items in
2367in the text below the heading, taking as reference the first item 2369the text below the heading, taking as reference the first item in
2368in subtree, ignoring drawers." 2370subtree, ignoring planning line and any drawer following it."
2369 (interactive "P") 2371 (interactive "P")
2370 (save-excursion 2372 (save-excursion
2371 (let* (singlep 2373 (let* (singlep
2372 block-item 2374 block-item
2373 lim-up 2375 lim-up
2374 lim-down 2376 lim-down
2375 (keyword-re (concat "^[ \t]*\\<\\(" org-scheduled-string
2376 "\\|" org-deadline-string
2377 "\\|" org-closed-string
2378 "\\|" org-clock-string "\\)"
2379 " *[[<]\\([^]>]+\\)[]>]"))
2380 (orderedp (org-entry-get nil "ORDERED")) 2377 (orderedp (org-entry-get nil "ORDERED"))
2381 (_bounds 2378 (_bounds
2382 ;; In a region, start at first item in region. 2379 ;; In a region, start at first item in region.
@@ -2389,15 +2386,10 @@ in subtree, ignoring drawers."
2389 (error "No item in region")) 2386 (error "No item in region"))
2390 (setq lim-down (copy-marker limit)))) 2387 (setq lim-down (copy-marker limit))))
2391 ((org-at-heading-p) 2388 ((org-at-heading-p)
2392 ;; On an heading, start at first item after drawers and 2389 ;; On a heading, start at first item after drawers and
2393 ;; time-stamps (scheduled, etc.). 2390 ;; time-stamps (scheduled, etc.).
2394 (let ((limit (save-excursion (outline-next-heading) (point)))) 2391 (let ((limit (save-excursion (outline-next-heading) (point))))
2395 (forward-line 1) 2392 (org-end-of-meta-data t)
2396 (while (or (looking-at org-drawer-regexp)
2397 (looking-at keyword-re))
2398 (if (looking-at keyword-re)
2399 (forward-line 1)
2400 (re-search-forward "^[ \t]*:END:" limit nil)))
2401 (if (org-list-search-forward (org-item-beginning-re) limit t) 2393 (if (org-list-search-forward (org-item-beginning-re) limit t)
2402 (setq lim-up (point-at-bol)) 2394 (setq lim-up (point-at-bol))
2403 (error "No item in subtree")) 2395 (error "No item in subtree"))
@@ -2656,8 +2648,8 @@ Return t if successful."
2656 (= top (point-at-bol)) 2648 (= top (point-at-bol))
2657 (cdr (assq 'indent org-list-automatic-rules)) 2649 (cdr (assq 'indent org-list-automatic-rules))
2658 (if no-subtree 2650 (if no-subtree
2659 (error 2651 (user-error
2660 "First item of list cannot move without its subtree") 2652 "At first item: use S-M-<left/right> to move the whole list")
2661 t)))) 2653 t))))
2662 ;; Determine begin and end points of zone to indent. If moving 2654 ;; Determine begin and end points of zone to indent. If moving
2663 ;; more than one item, save them for subsequent moves. 2655 ;; more than one item, save them for subsequent moves.
diff --git a/lisp/org/org-macro.el b/lisp/org/org-macro.el
index 0fb0b8ad175..1033db2af46 100644
--- a/lisp/org/org-macro.el
+++ b/lisp/org/org-macro.el
@@ -130,7 +130,7 @@ Templates are stored in buffer-local variable
130function installs the following ones: \"property\", 130function installs the following ones: \"property\",
131\"time\". and, if the buffer is associated to a file, 131\"time\". and, if the buffer is associated to a file,
132\"input-file\" and \"modification-time\"." 132\"input-file\" and \"modification-time\"."
133 (let* ((templates (org-macro--collect-macros)) 133 (let* ((templates nil)
134 (update-templates 134 (update-templates
135 (lambda (cell) 135 (lambda (cell)
136 (let ((old-template (assoc (car cell) templates))) 136 (let ((old-template (assoc (car cell) templates)))
@@ -164,7 +164,7 @@ function installs the following ones: \"property\",
164 (org-macro--counter-initialize) 164 (org-macro--counter-initialize)
165 (funcall update-templates 165 (funcall update-templates
166 (cons "n" "(eval (org-macro--counter-increment \"$1\" \"$2\"))")) 166 (cons "n" "(eval (org-macro--counter-increment \"$1\" \"$2\"))"))
167 (setq org-macro-templates templates))) 167 (setq org-macro-templates (nconc (org-macro--collect-macros) templates))))
168 168
169(defun org-macro-expand (macro templates) 169(defun org-macro-expand (macro templates)
170 "Return expanded MACRO, as a string. 170 "Return expanded MACRO, as a string.
diff --git a/lisp/org/org-macs.el b/lisp/org/org-macs.el
index 79d09e37970..510ece1cb19 100644
--- a/lisp/org/org-macs.el
+++ b/lisp/org/org-macs.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
diff --git a/lisp/org/org-mhe.el b/lisp/org/org-mhe.el
index 32a6ff11b91..e74a9ee59d6 100644
--- a/lisp/org/org-mhe.el
+++ b/lisp/org/org-mhe.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Thomas Baumann <thomas dot baumann at ch dot tum dot de> 5;; Author: Thomas Baumann <thomas dot baumann at ch dot tum dot de>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
diff --git a/lisp/org/org-mobile.el b/lisp/org/org-mobile.el
index 71914750f0b..cbf169f4078 100644
--- a/lisp/org/org-mobile.el
+++ b/lisp/org/org-mobile.el
@@ -3,7 +3,7 @@
3;; 3;;
4;; Author: Carsten Dominik <carsten at orgmode dot org> 4;; Author: Carsten Dominik <carsten at orgmode dot org>
5;; Keywords: outlines, hypermedia, calendar, wp 5;; Keywords: outlines, hypermedia, calendar, wp
6;; Homepage: http://orgmode.org 6;; Homepage: https://orgmode.org
7;; 7;;
8;; This file is part of GNU Emacs. 8;; This file is part of GNU Emacs.
9;; 9;;
diff --git a/lisp/org/org-mouse.el b/lisp/org/org-mouse.el
index ba38c058dd0..5a10b59b1eb 100644
--- a/lisp/org/org-mouse.el
+++ b/lisp/org/org-mouse.el
@@ -24,7 +24,7 @@
24;; 24;;
25;; Org-mouse provides mouse support for org-mode. 25;; Org-mouse provides mouse support for org-mode.
26;; 26;;
27;; http://orgmode.org 27;; https://orgmode.org
28;; 28;;
29;; Org mouse implements the following features: 29;; Org mouse implements the following features:
30;; * following links with the left mouse button 30;; * following links with the left mouse button
diff --git a/lisp/org/org-pcomplete.el b/lisp/org/org-pcomplete.el
index a7cc09def4b..88a2e10d854 100644
--- a/lisp/org/org-pcomplete.el
+++ b/lisp/org/org-pcomplete.el
@@ -5,7 +5,7 @@
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; John Wiegley <johnw at gnu dot org> 6;; John Wiegley <johnw at gnu dot org>
7;; Keywords: outlines, hypermedia, calendar, wp 7;; Keywords: outlines, hypermedia, calendar, wp
8;; Homepage: http://orgmode.org 8;; Homepage: https://orgmode.org
9;; 9;;
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11;; 11;;
diff --git a/lisp/org/org-plot.el b/lisp/org/org-plot.el
index 6c74f3e6581..ebd7af42a85 100644
--- a/lisp/org/org-plot.el
+++ b/lisp/org/org-plot.el
@@ -4,7 +4,7 @@
4;; 4;;
5;; Author: Eric Schulte <schulte dot eric at gmail dot com> 5;; Author: Eric Schulte <schulte dot eric at gmail dot com>
6;; Keywords: tables, plotting 6;; Keywords: tables, plotting
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
diff --git a/lisp/org/org-protocol.el b/lisp/org/org-protocol.el
index 27c2bb28d0f..33957ee3269 100644
--- a/lisp/org/org-protocol.el
+++ b/lisp/org/org-protocol.el
@@ -184,10 +184,10 @@ Possible properties are:
184Example: 184Example:
185 185
186 (setq org-protocol-project-alist 186 (setq org-protocol-project-alist
187 \\='((\"http://orgmode.org/worg/\" 187 \\='((\"https://orgmode.org/worg/\"
188 :online-suffix \".php\" 188 :online-suffix \".php\"
189 :working-suffix \".org\" 189 :working-suffix \".org\"
190 :base-url \"http://orgmode.org/worg/\" 190 :base-url \"https://orgmode.org/worg/\"
191 :working-directory \"/home/user/org/Worg/\") 191 :working-directory \"/home/user/org/Worg/\")
192 (\"http://localhost/org-notes/\" 192 (\"http://localhost/org-notes/\"
193 :online-suffix \".html\" 193 :online-suffix \".html\"
@@ -688,7 +688,7 @@ the cdr of an element in `org-publish-project-alist', reuse
688 (let ((working-dir (expand-file-name 688 (let ((working-dir (expand-file-name
689 (or (plist-get project-plist :base-directory) 689 (or (plist-get project-plist :base-directory)
690 default-directory))) 690 default-directory)))
691 (base-url "http://orgmode.org/worg/") 691 (base-url "https://orgmode.org/worg/")
692 (strip-suffix (or (plist-get project-plist :html-extension) ".html")) 692 (strip-suffix (or (plist-get project-plist :html-extension) ".html"))
693 (working-suffix (if (plist-get project-plist :base-extension) 693 (working-suffix (if (plist-get project-plist :base-extension)
694 (concat "." (plist-get project-plist :base-extension)) 694 (concat "." (plist-get project-plist :base-extension))
diff --git a/lisp/org/org-rmail.el b/lisp/org/org-rmail.el
index be433f66d1f..d50fd648b60 100644
--- a/lisp/org/org-rmail.el
+++ b/lisp/org/org-rmail.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
diff --git a/lisp/org/org-src.el b/lisp/org/org-src.el
index 7c28acf9d85..829354c0d56 100644
--- a/lisp/org/org-src.el
+++ b/lisp/org/org-src.el
@@ -6,7 +6,7 @@
6;; Bastien Guerry <bzg@gnu.org> 6;; Bastien Guerry <bzg@gnu.org>
7;; Dan Davison <davison at stats dot ox dot ac dot uk> 7;; Dan Davison <davison at stats dot ox dot ac dot uk>
8;; Keywords: outlines, hypermedia, calendar, wp 8;; Keywords: outlines, hypermedia, calendar, wp
9;; Homepage: http://orgmode.org 9;; Homepage: https://orgmode.org
10;; 10;;
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
12;; 12;;
diff --git a/lisp/org/org-table.el b/lisp/org/org-table.el
index 4bb5c91ce87..dcf74303637 100644
--- a/lisp/org/org-table.el
+++ b/lisp/org/org-table.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
@@ -135,7 +135,7 @@ the fixed string \"#+ORGTBL: SEND\", followed by instruction on how to
135convert the table into a data structure useful in the 135convert the table into a data structure useful in the
136language of the buffer. Check the manual for the section on 136language of the buffer. Check the manual for the section on
137\"Translator functions\", and more generally check out 137\"Translator functions\", and more generally check out
138http://orgmode.org/manual/Tables-in-arbitrary-syntax.html#Tables-in-arbitrary-syntax 138the Info node `(org)Tables in arbitrary syntax'.
139 139
140All occurrences of %n in a template will be replaced with the name of the 140All occurrences of %n in a template will be replaced with the name of the
141table, obtained by prompting the user." 141table, obtained by prompting the user."
@@ -387,16 +387,19 @@ portability of tables."
387 (const :tag "Error on attempt to cross" error))) 387 (const :tag "Error on attempt to cross" error)))
388 388
389(defcustom org-table-formula-create-columns nil 389(defcustom org-table-formula-create-columns nil
390 "Non-nil means that evaluation of a field formula can add new 390 "Non-nil means evaluation of formula can add new columns.
391columns if an out-of-bounds field is being set." 391When non-nil, evaluating an out-of-bounds field can insert as
392many columns as needed. When set to `warn', issue a warning when
393doing so. When set to `prompt', ask user before creating a new
394column. Otherwise, throw an error."
392 :group 'org-table-calculation 395 :group 'org-table-calculation
393 :version "26.1" 396 :version "26.1"
394 :package-version '(Org . "8.3") 397 :package-version '(Org . "8.3")
395 :type '(choice 398 :type '(choice
396 (const :tag "Setting an out-of-bounds field generates an error (default)" nil) 399 (const :tag "Out-of-bounds field generates an error (default)" nil)
397 (const :tag "Setting an out-of-bounds field silently adds columns as needed" t) 400 (const :tag "Out-of-bounds field silently adds columns as needed" t)
398 (const :tag "Setting an out-of-bounds field adds columns as needed, but issues a warning message" warn) 401 (const :tag "Out-of-bounds field adds columns, but issues a warning" warn)
399 (const :tag "When setting an out-of-bounds field, the user is prompted" prompt))) 402 (const :tag "Prompt user when setting an out-of-bounds field" prompt)))
400 403
401(defgroup org-table-import-export nil 404(defgroup org-table-import-export nil
402 "Options concerning table import and export in Org mode." 405 "Options concerning table import and export in Org mode."
@@ -3327,7 +3330,9 @@ existing formula for column %s"
3327 t)) 3330 t))
3328 (and (eq org-table-formula-create-columns 'prompt) 3331 (and (eq org-table-formula-create-columns 'prompt)
3329 (yes-or-no-p 3332 (yes-or-no-p
3330 "Out-of-bounds formula. Add columns? "))))))) 3333 "Out-of-bounds formula. Add columns? "))
3334 (user-error
3335 "Missing columns in the table. Aborting"))))))
3331 (org-table-eval-formula nil formula t t t t)))) 3336 (org-table-eval-formula nil formula t t t t))))
3332 ;; Clean up markers and internal text property. 3337 ;; Clean up markers and internal text property.
3333 (remove-text-properties (point-min) (point-max) '(org-untouchable t)) 3338 (remove-text-properties (point-min) (point-max) '(org-untouchable t))
diff --git a/lisp/org/org-timer.el b/lisp/org/org-timer.el
index 65e777b63ef..d840944ef17 100644
--- a/lisp/org/org-timer.el
+++ b/lisp/org/org-timer.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
diff --git a/lisp/org/org-version.el b/lisp/org/org-version.el
index 8ec120e9b2f..132ad2b3035 100644
--- a/lisp/org/org-version.el
+++ b/lisp/org/org-version.el
@@ -5,13 +5,13 @@
5(defun org-release () 5(defun org-release ()
6 "The release version of Org. 6 "The release version of Org.
7Inserted by installing Org mode or when a release is made." 7Inserted by installing Org mode or when a release is made."
8 (let ((org-release "9.1.6")) 8 (let ((org-release "9.1.9"))
9 org-release)) 9 org-release))
10;;;###autoload 10;;;###autoload
11(defun org-git-version () 11(defun org-git-version ()
12 "The Git version of Org mode. 12 "The Git version of Org mode.
13Inserted by installing Org or when a release is made." 13Inserted by installing Org or when a release is made."
14 (let ((org-git-version "release_9.1.6-50-g96b33f")) 14 (let ((org-git-version "release_9.1.9-65-g5e4542"))
15 org-git-version)) 15 org-git-version))
16 16
17(provide 'org-version) 17(provide 'org-version)
diff --git a/lisp/org/org-w3m.el b/lisp/org/org-w3m.el
index 706619c5d2b..9690c8e90c6 100644
--- a/lisp/org/org-w3m.el
+++ b/lisp/org/org-w3m.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Andy Stewart <lazycat dot manatee at gmail dot com> 5;; Author: Andy Stewart <lazycat dot manatee at gmail dot com>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8;; 8;;
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10;; 10;;
diff --git a/lisp/org/org.el b/lisp/org/org.el
index a53553bfd8b..1373861ad1b 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -6,8 +6,8 @@
6;; Author: Carsten Dominik <carsten at orgmode dot org> 6;; Author: Carsten Dominik <carsten at orgmode dot org>
7;; Maintainer: Carsten Dominik <carsten at orgmode dot org> 7;; Maintainer: Carsten Dominik <carsten at orgmode dot org>
8;; Keywords: outlines, hypermedia, calendar, wp 8;; Keywords: outlines, hypermedia, calendar, wp
9;; Homepage: http://orgmode.org 9;; Homepage: https://orgmode.org
10;; Version: 9.1.6 10;; Version: 9.1.9
11;; 11;;
12;; This file is part of GNU Emacs. 12;; This file is part of GNU Emacs.
13;; 13;;
@@ -49,7 +49,7 @@
49;; --------------------------- 49;; ---------------------------
50;; See the corresponding sections in the manual at 50;; See the corresponding sections in the manual at
51;; 51;;
52;; http://orgmode.org/org.html#Installation 52;; https://orgmode.org/org.html#Installation
53;; 53;;
54;; Documentation 54;; Documentation
55;; ------------- 55;; -------------
@@ -60,7 +60,7 @@
60;; in the doc/ directory. 60;; in the doc/ directory.
61;; 61;;
62;; A list of recent changes can be found at 62;; A list of recent changes can be found at
63;; http://orgmode.org/Changes.html 63;; https://orgmode.org/Changes.html
64;; 64;;
65;;; Code: 65;;; Code:
66 66
@@ -1866,7 +1866,7 @@ See the manual for examples."
1866 1866
1867(defcustom org-descriptive-links t 1867(defcustom org-descriptive-links t
1868 "Non-nil means Org will display descriptive links. 1868 "Non-nil means Org will display descriptive links.
1869E.g. [[http://orgmode.org][Org website]] will be displayed as 1869E.g. [[https://orgmode.org][Org website]] will be displayed as
1870\"Org Website\", hiding the link itself and just displaying its 1870\"Org Website\", hiding the link itself and just displaying its
1871description. When set to nil, Org will display the full links 1871description. When set to nil, Org will display the full links
1872literally. 1872literally.
@@ -3758,7 +3758,7 @@ This variable is populated from #+PROPERTY lines.")
3758 :group 'org) 3758 :group 'org)
3759 3759
3760(defvar-local org-category nil 3760(defvar-local org-category nil
3761 "Variable used by org files to set a category for agenda display. 3761 "Variable used by Org files to set a category for agenda display.
3762Such files should use a file variable to set it, for example 3762Such files should use a file variable to set it, for example
3763 3763
3764# -*- mode: org; org-category: \"ELisp\" 3764# -*- mode: org; org-category: \"ELisp\"
@@ -4040,7 +4040,7 @@ Place-holders only used by `:image-converter':
4040(defcustom org-preview-latex-image-directory "ltximg/" 4040(defcustom org-preview-latex-image-directory "ltximg/"
4041 "Path to store latex preview images. 4041 "Path to store latex preview images.
4042A relative path here creates many directories relative to the 4042A relative path here creates many directories relative to the
4043processed org files paths. An absolute path puts all preview 4043processed Org files paths. An absolute path puts all preview
4044images at the same place." 4044images at the same place."
4045 :group 'org-latex 4045 :group 'org-latex
4046 :version "26.1" 4046 :version "26.1"
@@ -4238,9 +4238,9 @@ lines to the buffer:
4238 :type 'boolean) 4238 :type 'boolean)
4239 4239
4240(defcustom org-hidden-keywords nil 4240(defcustom org-hidden-keywords nil
4241 "List of symbols corresponding to keywords to be hidden the org buffer. 4241 "List of symbols corresponding to keywords to be hidden in the Org buffer.
4242For example, a value \\='(title) for this list will make the document's title 4242For example, a value \\='(title) for this list makes the document's title
4243appear in the buffer without the initial #+TITLE: keyword." 4243appear in the buffer without the initial \"#+TITLE:\" part."
4244 :group 'org-appearance 4244 :group 'org-appearance
4245 :version "24.1" 4245 :version "24.1"
4246 :type '(set (const :tag "#+AUTHOR" author) 4246 :type '(set (const :tag "#+AUTHOR" author)
@@ -4903,6 +4903,18 @@ Support for group tags is controlled by the option
4903 (message "Groups tags support has been turned %s" 4903 (message "Groups tags support has been turned %s"
4904 (if org-group-tags "on" "off"))) 4904 (if org-group-tags "on" "off")))
4905 4905
4906(defun org-tag-add-to-alist (alist1 alist2)
4907 "Append ALIST1 elements to ALIST2 if they are not there yet."
4908 (cond
4909 ((null alist2) alist1)
4910 ((null alist1) alist2)
4911 (t (let ((alist2-cars (mapcar (lambda (x) (car-safe x)) alist2))
4912 to-add)
4913 (dolist (i alist1)
4914 (unless (member (car-safe i) alist2-cars)
4915 (push i to-add)))
4916 (append to-add alist2)))))
4917
4906(defun org-set-regexps-and-options (&optional tags-only) 4918(defun org-set-regexps-and-options (&optional tags-only)
4907 "Precompute regular expressions used in the current buffer. 4919 "Precompute regular expressions used in the current buffer.
4908When optional argument TAGS-ONLY is non-nil, only compute tags 4920When optional argument TAGS-ONLY is non-nil, only compute tags
@@ -4931,10 +4943,11 @@ related expressions."
4931 (mapcar #'org-add-prop-inherited 4943 (mapcar #'org-add-prop-inherited
4932 (cdr (assq 'filetags alist)))) 4944 (cdr (assq 'filetags alist))))
4933 (setq org-current-tag-alist 4945 (setq org-current-tag-alist
4934 (append org-tag-persistent-alist 4946 (org-tag-add-to-alist
4935 (let ((tags (cdr (assq 'tags alist)))) 4947 org-tag-persistent-alist
4936 (if tags (org-tag-string-to-alist tags) 4948 (let ((tags (cdr (assq 'tags alist))))
4937 org-tag-alist)))) 4949 (if tags (org-tag-string-to-alist tags)
4950 org-tag-alist))))
4938 (setq org-tag-groups-alist 4951 (setq org-tag-groups-alist
4939 (org-tag-alist-to-groups org-current-tag-alist)) 4952 (org-tag-alist-to-groups org-current-tag-alist))
4940 (unless tags-only 4953 (unless tags-only
@@ -5249,7 +5262,7 @@ a string, summarizing TAGS, as a list of strings."
5249 (`(,(or :endgroup :endgrouptag)) 5262 (`(,(or :endgroup :endgrouptag))
5250 (when (eq group-status 'append) 5263 (when (eq group-status 'append)
5251 (push (nreverse current-group) groups)) 5264 (push (nreverse current-group) groups))
5252 (setq group-status nil)) 5265 (setq group-status nil current-group nil))
5253 (`(:grouptags) (setq group-status 'append)) 5266 (`(:grouptags) (setq group-status 'append))
5254 ((and `(,tag . ,_) (guard group-status)) 5267 ((and `(,tag . ,_) (guard group-status))
5255 (if (eq group-status 'append) (push tag current-group) 5268 (if (eq group-status 'append) (push tag current-group)
@@ -6052,17 +6065,21 @@ by a #."
6052 6065
6053(defun org-fontify-macros (limit) 6066(defun org-fontify-macros (limit)
6054 "Fontify macros." 6067 "Fontify macros."
6055 (when (re-search-forward "\\({{{\\).+?\\(}}}\\)" limit t) 6068 (when (re-search-forward "{{{\\([a-zA-Z][-a-zA-Z0-9_]*\\)" limit t)
6056 (add-text-properties 6069 (let ((begin (match-beginning 0))
6057 (match-beginning 0) (match-end 0) 6070 (opening-end (match-beginning 1)))
6058 '(font-lock-fontified t face org-macro)) 6071 (when (and (re-search-forward "\n[ \t]*\n\\|\\(}}}\\)" limit t)
6059 (when org-hide-macro-markers 6072 (match-string 1))
6060 (add-text-properties (match-end 2) (match-beginning 2) 6073 (let ((end (match-end 1))
6061 '(invisible t)) 6074 (closing-start (match-beginning 1)))
6062 (add-text-properties (match-beginning 1) (match-end 1) 6075 (add-text-properties
6063 '(invisible t))) 6076 begin end
6064 (org-remove-flyspell-overlays-in (match-beginning 0) (match-end 0)) 6077 '(font-lock-multiline t font-lock-fontified t face org-macro))
6065 t)) 6078 (org-remove-flyspell-overlays-in begin end)
6079 (when org-hide-macro-markers
6080 (add-text-properties begin opening-end '(invisible t))
6081 (add-text-properties closing-start end '(invisible t)))
6082 t)))))
6066 6083
6067(defun org-activate-footnote-links (limit) 6084(defun org-activate-footnote-links (limit)
6068 "Add text properties for footnotes." 6085 "Add text properties for footnotes."
@@ -8459,7 +8476,7 @@ This is a short-hand for marking the subtree and then cutting it."
8459 (org-copy-subtree n 'cut)) 8476 (org-copy-subtree n 'cut))
8460 8477
8461(defun org-copy-subtree (&optional n cut force-store-markers nosubtrees) 8478(defun org-copy-subtree (&optional n cut force-store-markers nosubtrees)
8462 "Copy the current subtree it in the clipboard. 8479 "Copy the current subtree into the clipboard.
8463With prefix arg N, copy this many sequential subtrees. 8480With prefix arg N, copy this many sequential subtrees.
8464This is a short-hand for marking the subtree and then copying it. 8481This is a short-hand for marking the subtree and then copying it.
8465If CUT is non-nil, actually cut the subtree. 8482If CUT is non-nil, actually cut the subtree.
@@ -8532,7 +8549,6 @@ When REMOVE is non-nil, remove the subtree from the clipboard."
8532 (org-with-limited-levels 8549 (org-with-limited-levels
8533 (let* ((visp (not (org-invisible-p))) 8550 (let* ((visp (not (org-invisible-p)))
8534 (txt tree) 8551 (txt tree)
8535 (^re_ "\\(\\*+\\)[ \t]*")
8536 (old-level (if (string-match org-outline-regexp-bol txt) 8552 (old-level (if (string-match org-outline-regexp-bol txt)
8537 (- (match-end 0) (match-beginning 0) 1) 8553 (- (match-end 0) (match-beginning 0) 1)
8538 -1)) 8554 -1))
@@ -8549,7 +8565,7 @@ When REMOVE is non-nil, remove the subtree from the clipboard."
8549 (condition-case nil 8565 (condition-case nil
8550 (progn 8566 (progn
8551 (outline-previous-visible-heading 1) 8567 (outline-previous-visible-heading 1)
8552 (if (looking-at ^re_) 8568 (if (looking-at org-outline-regexp-bol)
8553 (- (match-end 0) (match-beginning 0) 1) 8569 (- (match-end 0) (match-beginning 0) 1)
8554 1)) 8570 1))
8555 (error 1)))) 8571 (error 1))))
@@ -8558,7 +8574,7 @@ When REMOVE is non-nil, remove the subtree from the clipboard."
8558 (progn 8574 (progn
8559 (or (looking-at org-outline-regexp) 8575 (or (looking-at org-outline-regexp)
8560 (outline-next-visible-heading 1)) 8576 (outline-next-visible-heading 1))
8561 (if (looking-at ^re_) 8577 (if (looking-at org-outline-regexp-bol)
8562 (- (match-end 0) (match-beginning 0) 1) 8578 (- (match-end 0) (match-beginning 0) 1)
8563 1)) 8579 1))
8564 (error 1)))) 8580 (error 1))))
@@ -9680,7 +9696,8 @@ active region."
9680 (cdr (assoc-string 9696 (cdr (assoc-string
9681 (completing-read 9697 (completing-read
9682 "Which function for creating the link? " 9698 "Which function for creating the link? "
9683 (mapcar #'car results-alist) nil t name) 9699 (mapcar #'car results-alist)
9700 nil t (symbol-name name))
9684 results-alist))) 9701 results-alist)))
9685 t)))) 9702 t))))
9686 (setq link (plist-get org-store-link-plist :link)) 9703 (setq link (plist-get org-store-link-plist :link))
@@ -14124,7 +14141,7 @@ headlines matching this string."
14124 'org-todo-regexp org-todo-regexp 14141 'org-todo-regexp org-todo-regexp
14125 'org-complex-heading-regexp org-complex-heading-regexp 14142 'org-complex-heading-regexp org-complex-heading-regexp
14126 'help-echo 14143 'help-echo
14127 (format "mouse-2 or RET jump to org file %s" 14144 (format "mouse-2 or RET jump to Org file %S"
14128 (abbreviate-file-name 14145 (abbreviate-file-name
14129 (or (buffer-file-name (buffer-base-buffer)) 14146 (or (buffer-file-name (buffer-base-buffer))
14130 (buffer-name (buffer-base-buffer))))))) 14147 (buffer-name (buffer-base-buffer)))))))
@@ -14320,10 +14337,12 @@ instead of the agenda files."
14320 (mapcar 14337 (mapcar
14321 (lambda (file) 14338 (lambda (file)
14322 (set-buffer (find-file-noselect file)) 14339 (set-buffer (find-file-noselect file))
14323 (mapcar (lambda (x) 14340 (org-tag-add-to-alist
14324 (and (stringp (car-safe x)) 14341 (org-get-buffer-tags)
14325 (list (car-safe x)))) 14342 (mapcar (lambda (x)
14326 (or org-current-tag-alist (org-get-buffer-tags)))) 14343 (and (stringp (car-safe x))
14344 (list (car-safe x))))
14345 org-current-tag-alist)))
14327 (if (car-safe files) files 14346 (if (car-safe files) files
14328 (org-agenda-files)))))))) 14347 (org-agenda-files))))))))
14329 14348
@@ -14350,9 +14369,9 @@ See also `org-scan-tags'."
14350 ;; Get a new match request, with completion against the global 14369 ;; Get a new match request, with completion against the global
14351 ;; tags table and the local tags in current buffer. 14370 ;; tags table and the local tags in current buffer.
14352 (let ((org-last-tags-completion-table 14371 (let ((org-last-tags-completion-table
14353 (org-uniquify 14372 (org-tag-add-to-alist
14354 (delq nil (append (org-get-buffer-tags) 14373 (org-get-buffer-tags)
14355 (org-global-tags-completion-table)))))) 14374 (org-global-tags-completion-table))))
14356 (setq match 14375 (setq match
14357 (completing-read 14376 (completing-read
14358 "Match: " 14377 "Match: "
@@ -14534,7 +14553,7 @@ When DOWNCASE is non-nil, expand downcased TAGS."
14534 (tag (match-string 2 return-match)) 14553 (tag (match-string 2 return-match))
14535 (tag (if downcased (downcase tag) tag))) 14554 (tag (if downcased (downcase tag) tag)))
14536 (unless (or (get-text-property 0 'grouptag (match-string 2 return-match)) 14555 (unless (or (get-text-property 0 'grouptag (match-string 2 return-match))
14537 (member tag work-already-expanded)) 14556 (member tag tags-already-expanded))
14538 (setq tags-in-group (assoc tag taggroups)) 14557 (setq tags-in-group (assoc tag taggroups))
14539 (push tag work-already-expanded) 14558 (push tag work-already-expanded)
14540 ;; Recursively expand each tag in the group, if the tag hasn't 14559 ;; Recursively expand each tag in the group, if the tag hasn't
@@ -14802,36 +14821,28 @@ Assume point is on a headline."
14802 (org-set-tags arg just-align)))) 14821 (org-set-tags arg just-align))))
14803 14822
14804(defun org-set-tags-to (data) 14823(defun org-set-tags-to (data)
14805 "Set the tags of the current entry to DATA, replacing the current tags. 14824 "Set the tags of the current entry to DATA, replacing current tags.
14806DATA may be a tags string like :aa:bb:cc:, or a list of tags. 14825DATA may be a tags string like \":aa:bb:cc:\", or a list of tags.
14807If DATA is nil or the empty string, any tags will be removed." 14826If DATA is nil or the empty string, all tags are removed."
14808 (interactive "sTags: ") 14827 (interactive "sTags: ")
14809 (setq data 14828 (let ((data
14810 (cond 14829 (pcase (if (stringp data) (org-trim data) data)
14811 ((eq data nil) "") 14830 ((or `nil "") nil)
14812 ((equal data "") "") 14831 ((pred listp) (format ":%s:" (mapconcat #'identity data ":")))
14813 ((stringp data) 14832 ((pred stringp)
14814 (concat ":" (mapconcat 'identity (org-split-string data ":+") ":") 14833 (format ":%s:"
14815 ":")) 14834 (mapconcat #'identity (org-split-string data ":+") ":")))
14816 ((listp data) 14835 (_ (error "Invalid tag specification: %S" data)))))
14817 (concat ":" (mapconcat 'identity data ":") ":")))) 14836 (org-with-wide-buffer
14818 (when data 14837 (org-back-to-heading t)
14819 (save-excursion 14838 (let ((case-fold-search nil)) (looking-at org-complex-heading-regexp))
14820 (org-back-to-heading t) 14839 (when (or (match-end 5) data)
14821 (when (let ((case-fold-search nil)) 14840 (goto-char (or (match-beginning 5) (line-end-position)))
14822 (looking-at org-complex-heading-regexp)) 14841 (skip-chars-backward " \t")
14823 (if (match-end 5) 14842 (delete-region (point) (line-end-position))
14824 (progn 14843 (when data
14825 (goto-char (match-beginning 5)) 14844 (insert " " data)
14826 (insert data) 14845 (org-set-tags nil 'align))))))
14827 (delete-region (point) (point-at-eol))
14828 (org-set-tags nil 'align))
14829 (goto-char (point-at-eol))
14830 (insert " " data)
14831 (org-set-tags nil 'align)))
14832 (beginning-of-line 1)
14833 (when (looking-at ".*?\\([ \t]+\\)$")
14834 (delete-region (match-beginning 1) (match-end 1))))))
14835 14846
14836(defun org-align-all-tags () 14847(defun org-align-all-tags ()
14837 "Align the tags in all headings." 14848 "Align the tags in all headings."
@@ -14874,27 +14885,16 @@ When JUST-ALIGN is non-nil, only align tags."
14874 (if just-align current 14885 (if just-align current
14875 ;; Get a new set of tags from the user. 14886 ;; Get a new set of tags from the user.
14876 (save-excursion 14887 (save-excursion
14877 (let* ((seen) 14888 (let* ((table
14878 (table
14879 (setq 14889 (setq
14880 org-last-tags-completion-table 14890 org-last-tags-completion-table
14881 ;; Uniquify tags in alists, yet preserve 14891 (org-tag-add-to-alist
14882 ;; structure (i.e., keywords). 14892 (and
14883 (delq nil 14893 org-complete-tags-always-offer-all-agenda-tags
14884 (mapcar 14894 (org-global-tags-completion-table
14885 (lambda (pair) 14895 (org-agenda-files)))
14886 (let ((head (car pair))) 14896 (or org-current-tag-alist
14887 (cond ((symbolp head) pair) 14897 (org-get-buffer-tags)))))
14888 ((member head seen) nil)
14889 (t (push head seen)
14890 pair))))
14891 (append
14892 (or org-current-tag-alist
14893 (org-get-buffer-tags))
14894 (and
14895 org-complete-tags-always-offer-all-agenda-tags
14896 (org-global-tags-completion-table
14897 (org-agenda-files))))))))
14898 (current-tags (org-split-string current ":")) 14898 (current-tags (org-split-string current ":"))
14899 (inherited-tags 14899 (inherited-tags
14900 (nreverse (nthcdr (length current-tags) 14900 (nreverse (nthcdr (length current-tags)
@@ -14973,9 +14973,9 @@ This works in the agenda, and also in an Org buffer."
14973 (list (region-beginning) (region-end) 14973 (list (region-beginning) (region-end)
14974 (let ((org-last-tags-completion-table 14974 (let ((org-last-tags-completion-table
14975 (if (derived-mode-p 'org-mode) 14975 (if (derived-mode-p 'org-mode)
14976 (org-uniquify 14976 (org-tag-add-to-alist
14977 (delq nil (append (org-get-buffer-tags) 14977 (org-get-buffer-tags)
14978 (org-global-tags-completion-table)))) 14978 (org-global-tags-completion-table))
14979 (org-global-tags-completion-table)))) 14979 (org-global-tags-completion-table))))
14980 (completing-read 14980 (completing-read
14981 "Tag: " 'org-tags-completion-function nil nil nil 14981 "Tag: " 'org-tags-completion-function nil nil nil
@@ -16510,7 +16510,7 @@ a priority cookie and tags in the standard locations."
16510 (move-marker (make-marker) (match-beginning 0)))))))) 16510 (move-marker (make-marker) (match-beginning 0))))))))
16511 16511
16512(defun org-find-exact-heading-in-directory (heading &optional dir) 16512(defun org-find-exact-heading-in-directory (heading &optional dir)
16513 "Find Org node headline HEADING in all .org files in directory DIR. 16513 "Find Org node headline HEADING in all \".org\" files in directory DIR.
16514When the target headline is found, return a marker to this location." 16514When the target headline is found, return a marker to this location."
16515 (let ((files (directory-files (or dir default-directory) 16515 (let ((files (directory-files (or dir default-directory)
16516 t "\\`[^.#].*\\.org\\'")) 16516 t "\\`[^.#].*\\.org\\'"))
@@ -16633,10 +16633,18 @@ non-nil."
16633 16633
16634(defun org-time-stamp-inactive (&optional arg) 16634(defun org-time-stamp-inactive (&optional arg)
16635 "Insert an inactive time stamp. 16635 "Insert an inactive time stamp.
16636
16636An inactive time stamp is enclosed in square brackets instead of angle 16637An inactive time stamp is enclosed in square brackets instead of angle
16637brackets. It is inactive in the sense that it does not trigger agenda entries, 16638brackets. It is inactive in the sense that it does not trigger agenda entries,
16638does not link to the calendar and cannot be changed with the S-cursor keys. 16639does not link to the calendar and cannot be changed with the S-cursor keys.
16639So these are more for recording a certain time/date." 16640So these are more for recording a certain time/date.
16641
16642If the user specifies a time like HH:MM or if this command is called with
16643at least one prefix argument, the time stamp contains the date and the time.
16644Otherwise, only the date is included.
16645
16646When called with two universal prefix arguments, insert an active time stamp
16647with the current time without prompting the user."
16640 (interactive "P") 16648 (interactive "P")
16641 (org-time-stamp arg 'inactive)) 16649 (org-time-stamp arg 'inactive))
16642 16650
@@ -18230,7 +18238,7 @@ Prompt for confirmation when there are unsaved changes.
18230Be sure you know what you are doing before letting this function 18238Be sure you know what you are doing before letting this function
18231overwrite your changes. 18239overwrite your changes.
18232 18240
18233This function is useful in a setup where one tracks org files 18241This function is useful in a setup where one tracks Org files
18234with a version control system, to revert on one machine after pulling 18242with a version control system, to revert on one machine after pulling
18235changes from another. I believe the procedure must be like this: 18243changes from another. I believe the procedure must be like this:
18236 18244
@@ -18552,9 +18560,9 @@ When a buffer is unmodified, it is just killed. When modified, it is saved
18552 (setq org-todo-keyword-alist-for-agenda 18560 (setq org-todo-keyword-alist-for-agenda
18553 (append org-todo-keyword-alist-for-agenda org-todo-key-alist)) 18561 (append org-todo-keyword-alist-for-agenda org-todo-key-alist))
18554 (setq org-tag-alist-for-agenda 18562 (setq org-tag-alist-for-agenda
18555 (org-uniquify 18563 (org-tag-add-to-alist
18556 (append org-tag-alist-for-agenda 18564 org-tag-alist-for-agenda
18557 org-current-tag-alist))) 18565 org-current-tag-alist))
18558 ;; Merge current file's tag groups into global 18566 ;; Merge current file's tag groups into global
18559 ;; `org-tag-groups-alist-for-agenda'. 18567 ;; `org-tag-groups-alist-for-agenda'.
18560 (when org-group-tags 18568 (when org-group-tags
@@ -20988,9 +20996,12 @@ Use `\\[org-edit-special]' to edit table.el tables"))
20988 "Abort storing current note, or call `outline-show-branches'." 20996 "Abort storing current note, or call `outline-show-branches'."
20989 (interactive) 20997 (interactive)
20990 (if (not org-finish-function) 20998 (if (not org-finish-function)
20991 (progn 20999 (save-excursion
20992 (outline-hide-subtree) 21000 (save-restriction
20993 (call-interactively 'outline-show-branches)) 21001 (org-narrow-to-subtree)
21002 (org-flag-subtree t)
21003 (call-interactively 'outline-show-branches)
21004 (org-hide-archived-subtrees (point-min) (point-max))))
20994 (let ((org-note-abort t)) 21005 (let ((org-note-abort t))
20995 (funcall org-finish-function)))) 21006 (funcall org-finish-function))))
20996 21007
@@ -21104,7 +21115,13 @@ object (e.g., within a comment). In these case, you need to use
21104 (delete-and-extract-region (point) (line-end-position)))) 21115 (delete-and-extract-region (point) (line-end-position))))
21105 (newline-and-indent) 21116 (newline-and-indent)
21106 (save-excursion (insert trailing-data)))) 21117 (save-excursion (insert trailing-data))))
21107 (t (if indent (newline-and-indent) (newline)))))) 21118 (t
21119 ;; Do not auto-fill when point is in an Org property drawer.
21120 (let ((auto-fill-function (and (not (org-at-property-p))
21121 auto-fill-function)))
21122 (if indent
21123 (newline-and-indent)
21124 (newline)))))))
21108 21125
21109(defun org-return-indent () 21126(defun org-return-indent ()
21110 "Goto next table row or insert a newline and indent. 21127 "Goto next table row or insert a newline and indent.
@@ -21573,7 +21590,7 @@ such private information before sending the email.")
21573 "Remember to cover the basics, that is, what you expected to happen and 21590 "Remember to cover the basics, that is, what you expected to happen and
21574what in fact did happen. You don't know how to make a good report? See 21591what in fact did happen. You don't know how to make a good report? See
21575 21592
21576 http://orgmode.org/manual/Feedback.html#Feedback 21593 https://orgmode.org/manual/Feedback.html#Feedback
21577 21594
21578Your bug report will be posted to the Org mailing list. 21595Your bug report will be posted to the Org mailing list.
21579------------------------------------------------------------------------") 21596------------------------------------------------------------------------")
@@ -21613,7 +21630,7 @@ Your bug report will be posted to the Org mailing list.
21613 21630
21614;;;###autoload 21631;;;###autoload
21615(defun org-reload (&optional uncompiled) 21632(defun org-reload (&optional uncompiled)
21616 "Reload all org lisp files. 21633 "Reload all Org Lisp files.
21617With prefix arg UNCOMPILED, load the uncompiled versions." 21634With prefix arg UNCOMPILED, load the uncompiled versions."
21618 (interactive "P") 21635 (interactive "P")
21619 (require 'loadhist) 21636 (require 'loadhist)
diff --git a/lisp/org/ox-html.el b/lisp/org/ox-html.el
index 83f6479bd4a..39f7d83e14a 100644
--- a/lisp/org/ox-html.el
+++ b/lisp/org/ox-html.el
@@ -465,7 +465,7 @@ customize `org-html-head-include-default-style'.")
465;;;; Handle infojs 465;;;; Handle infojs
466 466
467(defvar org-html-infojs-opts-table 467(defvar org-html-infojs-opts-table
468 '((path PATH "http://orgmode.org/org-info.js") 468 '((path PATH "https://orgmode.org/org-info.js")
469 (view VIEW "info") 469 (view VIEW "info")
470 (toc TOC :with-toc) 470 (toc TOC :with-toc)
471 (ftoc FIXED_TOC "0") 471 (ftoc FIXED_TOC "0")
@@ -1324,7 +1324,7 @@ like that: \"%%\"."
1324 :type 'string) 1324 :type 'string)
1325 1325
1326(defcustom org-html-creator-string 1326(defcustom org-html-creator-string
1327 (format "<a href=\"https://www.gnu.org/software/emacs/\">Emacs</a> %s (<a href=\"http://orgmode.org\">Org</a> mode %s)" 1327 (format "<a href=\"https://www.gnu.org/software/emacs/\">Emacs</a> %s (<a href=\"https://orgmode.org\">Org</a> mode %s)"
1328 emacs-version 1328 emacs-version
1329 (if (fboundp 'org-version) (org-version) "unknown version")) 1329 (if (fboundp 'org-version) (org-version) "unknown version"))
1330 "Information about the creator of the HTML document. 1330 "Information about the creator of the HTML document.
@@ -1452,13 +1452,13 @@ done, timestamp, timestamp-kwd, tag, target.
1452For example, a valid value would be: 1452For example, a valid value would be:
1453 1453
1454 <style type=\"text/css\"> 1454 <style type=\"text/css\">
1455 <![CDATA[ 1455 /*<![CDATA[*/
1456 p { font-weight: normal; color: gray; } 1456 p { font-weight: normal; color: gray; }
1457 h1 { color: black; } 1457 h1 { color: black; }
1458 .title { text-align: center; } 1458 .title { text-align: center; }
1459 .todo, .timestamp-kwd { color: red; } 1459 .todo, .timestamp-kwd { color: red; }
1460 .done { color: green; } 1460 .done { color: green; }
1461 ]]> 1461 /*]]>*/
1462 </style> 1462 </style>
1463 1463
1464If you want to refer to an external style, use something like 1464If you want to refer to an external style, use something like
diff --git a/lisp/org/ox-icalendar.el b/lisp/org/ox-icalendar.el
index a87970eb3fd..7d7c8500472 100644
--- a/lisp/org/ox-icalendar.el
+++ b/lisp/org/ox-icalendar.el
@@ -5,7 +5,7 @@
5;; Author: Carsten Dominik <carsten at orgmode dot org> 5;; Author: Carsten Dominik <carsten at orgmode dot org>
6;; Nicolas Goaziou <n dot goaziou at gmail dot com> 6;; Nicolas Goaziou <n dot goaziou at gmail dot com>
7;; Keywords: outlines, hypermedia, calendar, wp 7;; Keywords: outlines, hypermedia, calendar, wp
8;; Homepage: http://orgmode.org 8;; Homepage: https://orgmode.org
9 9
10;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
11 11
diff --git a/lisp/org/ox-latex.el b/lisp/org/ox-latex.el
index c32aa298047..5aaaf991fde 100644
--- a/lisp/org/ox-latex.el
+++ b/lisp/org/ox-latex.el
@@ -920,15 +920,14 @@ using customize, or with
920 (add-to-list \\='org-latex-packages-alist \\='(\"newfloat\" \"minted\")) 920 (add-to-list \\='org-latex-packages-alist \\='(\"newfloat\" \"minted\"))
921 921
922In addition, it is necessary to install pygments 922In addition, it is necessary to install pygments
923\(http://pygments.org), and to configure the variable 923\(URL `http://pygments.org>'), and to configure the variable
924`org-latex-pdf-process' so that the -shell-escape option is 924`org-latex-pdf-process' so that the -shell-escape option is
925passed to pdflatex. 925passed to pdflatex.
926 926
927The minted choice has possible repercussions on the preview of 927The minted choice has possible repercussions on the preview of
928latex fragments (see `org-preview-latex-fragment'). If you run 928latex fragments (see `org-preview-latex-fragment'). If you run
929into previewing problems, please consult 929into previewing problems, please consult
930 930URL `https://orgmode.org/worg/org-tutorials/org-latex-preview.html'."
931 http://orgmode.org/worg/org-tutorials/org-latex-preview.html"
932 :group 'org-export-latex 931 :group 'org-export-latex
933 :type '(choice 932 :type '(choice
934 (const :tag "Use listings" t) 933 (const :tag "Use listings" t)
@@ -1719,7 +1718,7 @@ holding export options."
1719 ;; Table of contents. 1718 ;; Table of contents.
1720 (let ((depth (plist-get info :with-toc))) 1719 (let ((depth (plist-get info :with-toc)))
1721 (when depth 1720 (when depth
1722 (concat (when (wholenump depth) 1721 (concat (when (integerp depth)
1723 (format "\\setcounter{tocdepth}{%d}\n" depth)) 1722 (format "\\setcounter{tocdepth}{%d}\n" depth))
1724 (plist-get info :latex-toc-command)))) 1723 (plist-get info :latex-toc-command))))
1725 ;; Document's body. 1724 ;; Document's body.
diff --git a/lisp/org/ox-odt.el b/lisp/org/ox-odt.el
index cdee568fc81..a1145a9821c 100644
--- a/lisp/org/ox-odt.el
+++ b/lisp/org/ox-odt.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Jambunathan K <kjambunathan at gmail dot com> 5;; Author: Jambunathan K <kjambunathan at gmail dot com>
6;; Keywords: outlines, hypermedia, calendar, wp 6;; Keywords: outlines, hypermedia, calendar, wp
7;; Homepage: http://orgmode.org 7;; Homepage: https://orgmode.org
8 8
9;; This file is part of GNU Emacs. 9;; This file is part of GNU Emacs.
10 10
diff --git a/lisp/org/ox-publish.el b/lisp/org/ox-publish.el
index 5deb7c54e71..8901dba34cf 100644
--- a/lisp/org/ox-publish.el
+++ b/lisp/org/ox-publish.el
@@ -405,11 +405,9 @@ definition."
405(defun org-publish--expand-file-name (file project) 405(defun org-publish--expand-file-name (file project)
406 "Return full file name for FILE in PROJECT. 406 "Return full file name for FILE in PROJECT.
407When FILE is a relative file name, it is expanded according to 407When FILE is a relative file name, it is expanded according to
408project base directory. Always return the true name of the file, 408project base directory."
409ignoring symlinks." 409 (if (file-name-absolute-p file) file
410 (file-truename 410 (expand-file-name file (org-publish-property :base-directory project))))
411 (if (file-name-absolute-p file) file
412 (expand-file-name file (org-publish-property :base-directory project)))))
413 411
414(defun org-publish-expand-projects (projects-alist) 412(defun org-publish-expand-projects (projects-alist)
415 "Expand projects in PROJECTS-ALIST. 413 "Expand projects in PROJECTS-ALIST.
@@ -436,10 +434,32 @@ This splices all the components into the list."
436 (match (if (eq extension 'any) "" 434 (match (if (eq extension 'any) ""
437 (format "^[^\\.].*\\.\\(%s\\)$" extension))) 435 (format "^[^\\.].*\\.\\(%s\\)$" extension)))
438 (base-files 436 (base-files
439 (cl-remove-if #'file-directory-p 437 (cond ((not (file-exists-p base-dir)) nil)
440 (if (org-publish-property :recursive project) 438 ((not (org-publish-property :recursive project))
441 (directory-files-recursively base-dir match) 439 (cl-remove-if #'file-directory-p
442 (directory-files base-dir t match t))))) 440 (directory-files base-dir t match t)))
441 (t
442 ;; Find all files recursively. Unlike to
443 ;; `directory-files-recursively', we follow symlinks
444 ;; to other directories.
445 (letrec ((files nil)
446 (walk-tree
447 (lambda (dir depth)
448 (when (> depth 100)
449 (error "Apparent cycle of symbolic links for %S"
450 base-dir))
451 (dolist (f (file-name-all-completions "" dir))
452 (pcase f
453 ((or "./" "../") nil)
454 ((pred directory-name-p)
455 (funcall walk-tree
456 (expand-file-name f dir)
457 (1+ depth)))
458 ((pred (string-match match))
459 (push (expand-file-name f dir) files))
460 (_ nil)))
461 files)))
462 (funcall walk-tree base-dir 0))))))
443 (org-uniquify 463 (org-uniquify
444 (append 464 (append
445 ;; Files from BASE-DIR. Apply exclusion filter before adding 465 ;; Files from BASE-DIR. Apply exclusion filter before adding
@@ -468,13 +488,13 @@ This splices all the components into the list."
468 "Return a project that FILENAME belongs to. 488 "Return a project that FILENAME belongs to.
469When UP is non-nil, return a meta-project (i.e., with a :components part) 489When UP is non-nil, return a meta-project (i.e., with a :components part)
470publishing FILENAME." 490publishing FILENAME."
471 (let* ((filename (file-truename filename)) 491 (let* ((filename (expand-file-name filename))
472 (project 492 (project
473 (cl-some 493 (cl-some
474 (lambda (p) 494 (lambda (p)
475 ;; Ignore meta-projects. 495 ;; Ignore meta-projects.
476 (unless (org-publish-property :components p) 496 (unless (org-publish-property :components p)
477 (let ((base (file-truename 497 (let ((base (expand-file-name
478 (org-publish-property :base-directory p)))) 498 (org-publish-property :base-directory p))))
479 (cond 499 (cond
480 ;; Check if FILENAME is explicitly included in one 500 ;; Check if FILENAME is explicitly included in one
@@ -499,9 +519,7 @@ publishing FILENAME."
499 ;; Check if FILENAME belong to project's base 519 ;; Check if FILENAME belong to project's base
500 ;; directory, or some of its sub-directories 520 ;; directory, or some of its sub-directories
501 ;; if :recursive in non-nil. 521 ;; if :recursive in non-nil.
502 ((org-publish-property :recursive p) 522 ((member filename (org-publish-get-base-files p)) p)
503 (and (file-in-directory-p filename base) p))
504 ((file-equal-p base (file-name-directory filename)) p)
505 (t nil))))) 523 (t nil)))))
506 org-publish-project-alist))) 524 org-publish-project-alist)))
507 (cond 525 (cond
@@ -1260,25 +1278,21 @@ the file including them will be republished as well."
1260 (with-current-buffer buf 1278 (with-current-buffer buf
1261 (goto-char (point-min)) 1279 (goto-char (point-min))
1262 (while (re-search-forward "^[ \t]*#\\+INCLUDE:" nil t) 1280 (while (re-search-forward "^[ \t]*#\\+INCLUDE:" nil t)
1263 (let* ((element (org-element-at-point)) 1281 (let ((element (org-element-at-point)))
1264 (included-file 1282 (when (eq 'keyword (org-element-type element))
1265 (and (eq (org-element-type element) 'keyword) 1283 (let* ((value (org-element-property :value element))
1266 (let ((value (org-element-property :value element))) 1284 (filename
1267 (and value 1285 (and (string-match "\\`\\(\".+?\"\\|\\S-+\\)" value)
1268 (string-match 1286 (let ((m (org-unbracket-string
1269 "\\`\\(\".+?\"\\|\\S-+\\)\\(?:\\s-+\\|$\\)" 1287 "\"" "\"" (match-string 1 value))))
1270 value) 1288 ;; Ignore search suffix.
1271 (let ((m (match-string 1 value))) 1289 (if (string-match "::.*?\\'" m)
1272 (org-unbracket-string 1290 (substring m 0 (match-beginning 0))
1273 "\"" "\"" 1291 m)))))
1274 ;; Ignore search suffix. 1292 (when filename
1275 (if (string-match "::.*?\"?\\'" m) 1293 (push (org-publish-cache-ctime-of-src
1276 (substring m 0 (match-beginning 0)) 1294 (expand-file-name filename))
1277 m)))))))) 1295 included-files-ctime)))))))
1278 (when included-file
1279 (push (org-publish-cache-ctime-of-src
1280 (expand-file-name included-file))
1281 included-files-ctime)))))
1282 (unless visiting (kill-buffer buf))))) 1296 (unless visiting (kill-buffer buf)))))
1283 (or (null pstamp) 1297 (or (null pstamp)
1284 (let ((ctime (org-publish-cache-ctime-of-src filename))) 1298 (let ((ctime (org-publish-cache-ctime-of-src filename)))
diff --git a/lisp/org/ox.el b/lisp/org/ox.el
index 7bdac4f290d..ea7d1dc81f0 100644
--- a/lisp/org/ox.el
+++ b/lisp/org/ox.el
@@ -66,7 +66,7 @@
66;; Eventually, a dispatcher (`org-export-dispatch') is provided in the 66;; Eventually, a dispatcher (`org-export-dispatch') is provided in the
67;; last one. 67;; last one.
68;; 68;;
69;; See <http://orgmode.org/worg/dev/org-export-reference.html> for 69;; See <https://orgmode.org/worg/dev/org-export-reference.html> for
70;; more information. 70;; more information.
71 71
72;;; Code: 72;;; Code:
@@ -714,12 +714,15 @@ frequently in plain text."
714(defcustom org-export-with-toc t 714(defcustom org-export-with-toc t
715 "Non-nil means create a table of contents in exported files. 715 "Non-nil means create a table of contents in exported files.
716 716
717The TOC contains headlines with levels up 717The table of contents contains headlines with levels up to
718to`org-export-headline-levels'. When an integer, include levels 718`org-export-headline-levels'.
719up to N in the toc, this may then be different from 719
720`org-export-headline-levels', but it will not be allowed to be 720When this variable is set to an integer N, include levels up to
721larger than the number of headline levels. When nil, no table of 721N in the table of contents. Although it may then be different
722contents is made. 722from `org-export-headline-levels', it is cannot be larger than
723the number of headline levels.
724
725When nil, no table of contents is created.
723 726
724This option can also be set with the OPTIONS keyword, 727This option can also be set with the OPTIONS keyword,
725e.g. \"toc:nil\" or \"toc:3\"." 728e.g. \"toc:nil\" or \"toc:3\"."
@@ -728,8 +731,9 @@ e.g. \"toc:nil\" or \"toc:3\"."
728 (const :tag "No Table of Contents" nil) 731 (const :tag "No Table of Contents" nil)
729 (const :tag "Full Table of Contents" t) 732 (const :tag "Full Table of Contents" t)
730 (integer :tag "TOC to level")) 733 (integer :tag "TOC to level"))
731 :safe (lambda (x) (or (booleanp x) 734 :safe (lambda (x)
732 (integerp x)))) 735 (or (booleanp x)
736 (integerp x))))
733 737
734(defcustom org-export-with-tables t 738(defcustom org-export-with-tables t
735 "Non-nil means export tables. 739 "Non-nil means export tables.
@@ -1777,7 +1781,8 @@ for a footnotes section."
1777 "List headlines and inlinetasks with a select tag in their tree. 1781 "List headlines and inlinetasks with a select tag in their tree.
1778DATA is parsed data as returned by `org-element-parse-buffer'. 1782DATA is parsed data as returned by `org-element-parse-buffer'.
1779INFO is a plist holding export options." 1783INFO is a plist holding export options."
1780 (let ((select (plist-get info :select-tags))) 1784 (let ((select (cl-mapcan (lambda (tag) (org-tags-expand tag t))
1785 (plist-get info :select-tags))))
1781 (if (cl-some (lambda (tag) (member tag select)) (plist-get info :filetags)) 1786 (if (cl-some (lambda (tag) (member tag select)) (plist-get info :filetags))
1782 ;; If FILETAGS contains a select tag, every headline or 1787 ;; If FILETAGS contains a select tag, every headline or
1783 ;; inlinetask is returned. 1788 ;; inlinetask is returned.
@@ -1811,11 +1816,13 @@ INFO is a plist holding export options."
1811 (funcall walk-data data nil) 1816 (funcall walk-data data nil)
1812 selected-trees)))) 1817 selected-trees))))
1813 1818
1814(defun org-export--skip-p (datum options selected) 1819(defun org-export--skip-p (datum options selected excluded)
1815 "Non-nil when element or object DATUM should be skipped during export. 1820 "Non-nil when element or object DATUM should be skipped during export.
1816OPTIONS is the plist holding export options. SELECTED, when 1821OPTIONS is the plist holding export options. SELECTED, when
1817non-nil, is a list of headlines or inlinetasks belonging to 1822non-nil, is a list of headlines or inlinetasks belonging to
1818a tree with a select tag." 1823a tree with a select tag. EXCLUDED is a list of tags, as
1824strings. Any headline or inlinetask marked with one of those is
1825not exported."
1819 (cl-case (org-element-type datum) 1826 (cl-case (org-element-type datum)
1820 ((comment comment-block) 1827 ((comment comment-block)
1821 ;; Skip all comments and comment blocks. Make to keep maximum 1828 ;; Skip all comments and comment blocks. Make to keep maximum
@@ -1854,8 +1861,7 @@ a tree with a select tag."
1854 (and (eq (org-element-type datum) 'inlinetask) 1861 (and (eq (org-element-type datum) 'inlinetask)
1855 (not (plist-get options :with-inlinetasks))) 1862 (not (plist-get options :with-inlinetasks)))
1856 ;; Ignore subtrees with an exclude tag. 1863 ;; Ignore subtrees with an exclude tag.
1857 (cl-loop for k in (plist-get options :exclude-tags) 1864 (cl-some (lambda (tag) (member tag excluded)) tags)
1858 thereis (member k tags))
1859 ;; When a select tag is present in the buffer, ignore any tree 1865 ;; When a select tag is present in the buffer, ignore any tree
1860 ;; without it. 1866 ;; without it.
1861 (and selected (not (memq datum selected))) 1867 (and selected (not (memq datum selected)))
@@ -2709,6 +2715,9 @@ from tree."
2709 (letrec ((ignore nil) 2715 (letrec ((ignore nil)
2710 ;; First find trees containing a select tag, if any. 2716 ;; First find trees containing a select tag, if any.
2711 (selected (org-export--selected-trees data info)) 2717 (selected (org-export--selected-trees data info))
2718 ;; List tags that prevent export of headlines.
2719 (excluded (cl-mapcan (lambda (tag) (org-tags-expand tag t))
2720 (plist-get info :exclude-tags)))
2712 (walk-data 2721 (walk-data
2713 (lambda (data) 2722 (lambda (data)
2714 ;; Prune non-exportable elements and objects from tree. 2723 ;; Prune non-exportable elements and objects from tree.
@@ -2717,7 +2726,7 @@ from tree."
2717 ;; accessed during export. 2726 ;; accessed during export.
2718 (when data 2727 (when data
2719 (let ((type (org-element-type data))) 2728 (let ((type (org-element-type data)))
2720 (if (org-export--skip-p data info selected) 2729 (if (org-export--skip-p data info selected excluded)
2721 (if (memq type '(table-cell table-row)) (push data ignore) 2730 (if (memq type '(table-cell table-row)) (push data ignore)
2722 (org-element-extract-element data)) 2731 (org-element-extract-element data))
2723 (if (and (eq type 'headline) 2732 (if (and (eq type 'headline)
@@ -4264,7 +4273,7 @@ A search cell follows the pattern (TYPE . SEARCH) where
4264 - target's or radio-target's name as a list of strings if 4273 - target's or radio-target's name as a list of strings if
4265 TYPE is `target'. 4274 TYPE is `target'.
4266 4275
4267 - NAME affiliated keyword is TYPE is `other'. 4276 - NAME affiliated keyword if TYPE is `other'.
4268 4277
4269A search cell is the internal representation of a fuzzy link. It 4278A search cell is the internal representation of a fuzzy link. It
4270ignores white spaces and statistics cookies, if applicable." 4279ignores white spaces and statistics cookies, if applicable."