diff options
| author | Carsten Dominik | 2009-01-31 05:28:36 +0000 |
|---|---|---|
| committer | Carsten Dominik | 2009-01-31 05:28:36 +0000 |
| commit | 6c817206c8f8b23f86da63bd21450c2cd22bb2b0 (patch) | |
| tree | 0447d658f003ab8a41f908193eb17138b710fd26 /lisp | |
| parent | ab383a615f145c03fa62cb469c3307b0df7be1fc (diff) | |
| download | emacs-6c817206c8f8b23f86da63bd21450c2cd22bb2b0.tar.gz emacs-6c817206c8f8b23f86da63bd21450c2cd22bb2b0.zip | |
2009-01-31 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-enforce-todo-checkbox-dependencies): New option.
(org-block-todo-from-checkboxes): New function.
(org-todo): Make tripple prefix arg circumvent blocking.
Diffstat (limited to 'lisp')
34 files changed, 257 insertions, 197 deletions
diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog index 150234e1be6..ed9864385e1 100644 --- a/lisp/org/ChangeLog +++ b/lisp/org/ChangeLog | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | 2009-01-31 Carsten Dominik <carsten.dominik@gmail.com> | ||
| 2 | |||
| 3 | * org.el (org-enforce-todo-checkbox-dependencies): New option. | ||
| 4 | (org-block-todo-from-checkboxes): New function. | ||
| 5 | (org-todo): Make tripple prefix arg circumvent blocking. | ||
| 6 | |||
| 1 | 2009-01-30 Glenn Morris <rgm@gnu.org> | 7 | 2009-01-30 Glenn Morris <rgm@gnu.org> |
| 2 | 8 | ||
| 3 | * org-list.el (org-empty-line-terminates-plain-lists) | 9 | * org-list.el (org-empty-line-terminates-plain-lists) |
diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el index c84c7a72f0b..26821803198 100644 --- a/lisp/org/org-agenda.el +++ b/lisp/org/org-agenda.el | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> | 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> |
| 7 | ;; Keywords: outlines, hypermedia, calendar, wp | 7 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 8 | ;; Homepage: http://orgmode.org | 8 | ;; Homepage: http://orgmode.org |
| 9 | ;; Version: 6.20g | 9 | ;; Version: 6.20h |
| 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-archive.el b/lisp/org/org-archive.el index bee2fa09f89..680d17102a9 100644 --- a/lisp/org/org-archive.el +++ b/lisp/org/org-archive.el | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> | 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> |
| 7 | ;; Keywords: outlines, hypermedia, calendar, wp | 7 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 8 | ;; Homepage: http://orgmode.org | 8 | ;; Homepage: http://orgmode.org |
| 9 | ;; Version: 6.20g | 9 | ;; Version: 6.20h |
| 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-attach.el b/lisp/org/org-attach.el index 2d4229b09dc..28c1df021ea 100644 --- a/lisp/org/org-attach.el +++ b/lisp/org/org-attach.el | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | ;; Author: John Wiegley <johnw@newartisans.com> | 5 | ;; Author: John Wiegley <johnw@newartisans.com> |
| 6 | ;; Keywords: org data task | 6 | ;; Keywords: org data task |
| 7 | ;; Version: 6.20g | 7 | ;; Version: 6.20h |
| 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 58fc0dd019c..5a816d34c02 100644 --- a/lisp/org/org-bbdb.el +++ b/lisp/org/org-bbdb.el | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | ;; Thomas Baumann <thomas dot baumann at ch dot tum dot de> | 7 | ;; Thomas Baumann <thomas dot baumann at ch dot tum dot de> |
| 8 | ;; Keywords: outlines, hypermedia, calendar, wp | 8 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 9 | ;; Homepage: http://orgmode.org | 9 | ;; Homepage: http://orgmode.org |
| 10 | ;; Version: 6.20g | 10 | ;; Version: 6.20h |
| 11 | ;; | 11 | ;; |
| 12 | ;; This file is part of GNU Emacs. | 12 | ;; This file is part of GNU Emacs. |
| 13 | ;; | 13 | ;; |
diff --git a/lisp/org/org-bibtex.el b/lisp/org/org-bibtex.el index 0392cfeaaa2..7f63b839d0d 100644 --- a/lisp/org/org-bibtex.el +++ b/lisp/org/org-bibtex.el | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | ;; Author: Bastien Guerry <bzg at altern dot org> | 5 | ;; Author: Bastien Guerry <bzg at altern dot org> |
| 6 | ;; Carsten Dominik <carsten dot dominik at gmail dot com> | 6 | ;; Carsten Dominik <carsten dot dominik at gmail dot com> |
| 7 | ;; Keywords: org, wp, remember | 7 | ;; Keywords: org, wp, remember |
| 8 | ;; Version: 6.20g | 8 | ;; Version: 6.20h |
| 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-clock.el b/lisp/org/org-clock.el index 170cb53a128..e1decc08b99 100644 --- a/lisp/org/org-clock.el +++ b/lisp/org/org-clock.el | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> | 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> |
| 7 | ;; Keywords: outlines, hypermedia, calendar, wp | 7 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 8 | ;; Homepage: http://orgmode.org | 8 | ;; Homepage: http://orgmode.org |
| 9 | ;; Version: 6.20g | 9 | ;; Version: 6.20h |
| 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-colview.el b/lisp/org/org-colview.el index 94785ce7765..e60fd8cd6b2 100644 --- a/lisp/org/org-colview.el +++ b/lisp/org/org-colview.el | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> | 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> |
| 7 | ;; Keywords: outlines, hypermedia, calendar, wp | 7 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 8 | ;; Homepage: http://orgmode.org | 8 | ;; Homepage: http://orgmode.org |
| 9 | ;; Version: 6.20g | 9 | ;; Version: 6.20h |
| 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-compat.el b/lisp/org/org-compat.el index 6c5acbbec3b..09ee0ee230d 100644 --- a/lisp/org/org-compat.el +++ b/lisp/org/org-compat.el | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> | 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> |
| 7 | ;; Keywords: outlines, hypermedia, calendar, wp | 7 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 8 | ;; Homepage: http://orgmode.org | 8 | ;; Homepage: http://orgmode.org |
| 9 | ;; Version: 6.20g | 9 | ;; Version: 6.20h |
| 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-exp.el b/lisp/org/org-exp.el index a9fb6ecda5e..47406fd3525 100644 --- a/lisp/org/org-exp.el +++ b/lisp/org/org-exp.el | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> | 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> |
| 7 | ;; Keywords: outlines, hypermedia, calendar, wp | 7 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 8 | ;; Homepage: http://orgmode.org | 8 | ;; Homepage: http://orgmode.org |
| 9 | ;; Version: 6.20g | 9 | ;; Version: 6.20h |
| 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-export-latex.el b/lisp/org/org-export-latex.el index 7e0c929ca4b..eef75c5b69e 100644 --- a/lisp/org/org-export-latex.el +++ b/lisp/org/org-export-latex.el | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | ;; | 4 | ;; |
| 5 | ;; Emacs Lisp Archive Entry | 5 | ;; Emacs Lisp Archive Entry |
| 6 | ;; Filename: org-export-latex.el | 6 | ;; Filename: org-export-latex.el |
| 7 | ;; Version: 6.20g | 7 | ;; Version: 6.20h |
| 8 | ;; Author: Bastien Guerry <bzg AT altern DOT org> | 8 | ;; Author: Bastien Guerry <bzg AT altern DOT org> |
| 9 | ;; Maintainer: Bastien Guerry <bzg AT altern DOT org> | 9 | ;; Maintainer: Bastien Guerry <bzg AT altern DOT org> |
| 10 | ;; Keywords: org, wp, tex | 10 | ;; Keywords: org, wp, tex |
diff --git a/lisp/org/org-faces.el b/lisp/org/org-faces.el index f6548d03580..64bc5590684 100644 --- a/lisp/org/org-faces.el +++ b/lisp/org/org-faces.el | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> | 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> |
| 7 | ;; Keywords: outlines, hypermedia, calendar, wp | 7 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 8 | ;; Homepage: http://orgmode.org | 8 | ;; Homepage: http://orgmode.org |
| 9 | ;; Version: 6.20g | 9 | ;; Version: 6.20h |
| 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-footnote.el b/lisp/org/org-footnote.el index 7ea076db4b3..89bc2ea64df 100644 --- a/lisp/org/org-footnote.el +++ b/lisp/org/org-footnote.el | |||
| @@ -5,7 +5,7 @@ | |||
| 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: http://orgmode.org |
| 8 | ;; Version: 6.20g | 8 | ;; Version: 6.20h |
| 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-gnus.el b/lisp/org/org-gnus.el index 2a6aa0f34fc..61fa15cff01 100644 --- a/lisp/org/org-gnus.el +++ b/lisp/org/org-gnus.el | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | ;; Tassilo Horn <tassilo at member dot fsf dot org> | 7 | ;; Tassilo Horn <tassilo at member dot fsf dot org> |
| 8 | ;; Keywords: outlines, hypermedia, calendar, wp | 8 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 9 | ;; Homepage: http://orgmode.org | 9 | ;; Homepage: http://orgmode.org |
| 10 | ;; Version: 6.20g | 10 | ;; Version: 6.20h |
| 11 | ;; | 11 | ;; |
| 12 | ;; This file is part of GNU Emacs. | 12 | ;; This file is part of GNU Emacs. |
| 13 | ;; | 13 | ;; |
diff --git a/lisp/org/org-id.el b/lisp/org/org-id.el index 6ab4a546289..16ffe8cf7a4 100644 --- a/lisp/org/org-id.el +++ b/lisp/org/org-id.el | |||
| @@ -5,7 +5,7 @@ | |||
| 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: http://orgmode.org |
| 8 | ;; Version: 6.20g | 8 | ;; Version: 6.20h |
| 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-info.el b/lisp/org/org-info.el index 025145942bc..32699314af5 100644 --- a/lisp/org/org-info.el +++ b/lisp/org/org-info.el | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> | 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> |
| 7 | ;; Keywords: outlines, hypermedia, calendar, wp | 7 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 8 | ;; Homepage: http://orgmode.org | 8 | ;; Homepage: http://orgmode.org |
| 9 | ;; Version: 6.20g | 9 | ;; Version: 6.20h |
| 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-irc.el b/lisp/org/org-irc.el index cd3b02fd9c9..0d4fc4e9bdc 100644 --- a/lisp/org/org-irc.el +++ b/lisp/org/org-irc.el | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | ;; | 4 | ;; |
| 5 | ;; Author: Philip Jackson <emacs@shellarchive.co.uk> | 5 | ;; Author: Philip Jackson <emacs@shellarchive.co.uk> |
| 6 | ;; Keywords: erc, irc, link, org | 6 | ;; Keywords: erc, irc, link, org |
| 7 | ;; Version: 6.20g | 7 | ;; Version: 6.20h |
| 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-jsinfo.el b/lisp/org/org-jsinfo.el index 172592be42d..748e54ca1dd 100644 --- a/lisp/org/org-jsinfo.el +++ b/lisp/org/org-jsinfo.el | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> | 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> |
| 7 | ;; Keywords: outlines, hypermedia, calendar, wp | 7 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 8 | ;; Homepage: http://orgmode.org | 8 | ;; Homepage: http://orgmode.org |
| 9 | ;; Version: 6.20g | 9 | ;; Version: 6.20h |
| 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-list.el b/lisp/org/org-list.el index 60378e55b33..b3efae6a55d 100644 --- a/lisp/org/org-list.el +++ b/lisp/org/org-list.el | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | ;; Bastien Guerry <bzg AT altern DOT org> | 7 | ;; Bastien Guerry <bzg AT altern DOT org> |
| 8 | ;; Keywords: outlines, hypermedia, calendar, wp | 8 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 9 | ;; Homepage: http://orgmode.org | 9 | ;; Homepage: http://orgmode.org |
| 10 | ;; Version: 6.20g | 10 | ;; Version: 6.20h |
| 11 | ;; | 11 | ;; |
| 12 | ;; This file is part of GNU Emacs. | 12 | ;; This file is part of GNU Emacs. |
| 13 | ;; | 13 | ;; |
diff --git a/lisp/org/org-mac-message.el b/lisp/org/org-mac-message.el index 6b068382e82..5e05899f32f 100644 --- a/lisp/org/org-mac-message.el +++ b/lisp/org/org-mac-message.el | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | ;; Copyright (C) 2008, 2009 Free Software Foundation, Inc. | 3 | ;; Copyright (C) 2008, 2009 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | ;; Author: John Wiegley <johnw@gnu.org> | 5 | ;; Author: John Wiegley <johnw@gnu.org> |
| 6 | ;; Version: 6.20g | 6 | ;; Version: 6.20h |
| 7 | ;; Keywords: outlines, hypermedia, calendar, wp | 7 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 8 | 8 | ||
| 9 | ;; This file is part of GNU Emacs. | 9 | ;; This file is part of GNU Emacs. |
diff --git a/lisp/org/org-macs.el b/lisp/org/org-macs.el index 87f44c6b095..1042a88f8f1 100644 --- a/lisp/org/org-macs.el +++ b/lisp/org/org-macs.el | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> | 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> |
| 7 | ;; Keywords: outlines, hypermedia, calendar, wp | 7 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 8 | ;; Homepage: http://orgmode.org | 8 | ;; Homepage: http://orgmode.org |
| 9 | ;; Version: 6.20g | 9 | ;; Version: 6.20h |
| 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-mew.el b/lisp/org/org-mew.el index 329a47f84c1..79a1279498e 100644 --- a/lisp/org/org-mew.el +++ b/lisp/org/org-mew.el | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | ;; Author: Tokuya Kameshima <kames at fa2 dot so-net dot ne dot jp> | 5 | ;; Author: Tokuya Kameshima <kames at fa2 dot so-net dot ne dot jp> |
| 6 | ;; Keywords: outlines, hypermedia, calendar, wp | 6 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 7 | ;; Homepage: http://orgmode.org | 7 | ;; Homepage: http://orgmode.org |
| 8 | ;; Version: 6.20g | 8 | ;; Version: 6.20h |
| 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-mhe.el b/lisp/org/org-mhe.el index b8faeb34751..a654fb5767c 100644 --- a/lisp/org/org-mhe.el +++ b/lisp/org/org-mhe.el | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | ;; Author: Thomas Baumann <thomas dot baumann at ch dot tum dot de> | 6 | ;; Author: 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: http://orgmode.org |
| 9 | ;; Version: 6.20g | 9 | ;; Version: 6.20h |
| 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-mouse.el b/lisp/org/org-mouse.el index c291fa36a5a..4927fff4284 100644 --- a/lisp/org/org-mouse.el +++ b/lisp/org/org-mouse.el | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | ;; | 4 | ;; |
| 5 | ;; Author: Piotr Zielinski <piotr dot zielinski at gmail dot com> | 5 | ;; Author: Piotr Zielinski <piotr dot zielinski at gmail dot com> |
| 6 | ;; Maintainer: Carsten Dominik <carsten at orgmode dot org> | 6 | ;; Maintainer: Carsten Dominik <carsten at orgmode dot org> |
| 7 | ;; Version: 6.20g | 7 | ;; Version: 6.20h |
| 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-plot.el b/lisp/org/org-plot.el index 392f0b2eac6..5da3bcaaa17 100644 --- a/lisp/org/org-plot.el +++ b/lisp/org/org-plot.el | |||
| @@ -5,7 +5,7 @@ | |||
| 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: http://orgmode.org |
| 8 | ;; Version: 6.20g | 8 | ;; Version: 6.20h |
| 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-publish.el b/lisp/org/org-publish.el index 8d44521ebae..2a70e1062cb 100644 --- a/lisp/org/org-publish.el +++ b/lisp/org/org-publish.el | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | ;; Author: David O'Toole <dto@gnu.org> | 4 | ;; Author: David O'Toole <dto@gnu.org> |
| 5 | ;; Maintainer: Bastien Guerry <bzg AT altern DOT org> | 5 | ;; Maintainer: Bastien Guerry <bzg AT altern DOT org> |
| 6 | ;; Keywords: hypermedia, outlines, wp | 6 | ;; Keywords: hypermedia, outlines, wp |
| 7 | ;; Version: 6.20g | 7 | ;; Version: 6.20h |
| 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-remember.el b/lisp/org/org-remember.el index f6d07691eb3..13f746cdfba 100644 --- a/lisp/org/org-remember.el +++ b/lisp/org/org-remember.el | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> | 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> |
| 7 | ;; Keywords: outlines, hypermedia, calendar, wp | 7 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 8 | ;; Homepage: http://orgmode.org | 8 | ;; Homepage: http://orgmode.org |
| 9 | ;; Version: 6.20g | 9 | ;; Version: 6.20h |
| 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-rmail.el b/lisp/org/org-rmail.el index 068f4fe9707..e57114f4cb2 100644 --- a/lisp/org/org-rmail.el +++ b/lisp/org/org-rmail.el | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> | 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> |
| 7 | ;; Keywords: outlines, hypermedia, calendar, wp | 7 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 8 | ;; Homepage: http://orgmode.org | 8 | ;; Homepage: http://orgmode.org |
| 9 | ;; Version: 6.20g | 9 | ;; Version: 6.20h |
| 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 458be555fdc..20080aeca39 100644 --- a/lisp/org/org-table.el +++ b/lisp/org/org-table.el | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> | 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> |
| 7 | ;; Keywords: outlines, hypermedia, calendar, wp | 7 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 8 | ;; Homepage: http://orgmode.org | 8 | ;; Homepage: http://orgmode.org |
| 9 | ;; Version: 6.20g | 9 | ;; Version: 6.20h |
| 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-timer.el b/lisp/org/org-timer.el index a06a157dc14..c70563762d4 100644 --- a/lisp/org/org-timer.el +++ b/lisp/org/org-timer.el | |||
| @@ -5,7 +5,7 @@ | |||
| 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: http://orgmode.org |
| 8 | ;; Version: 6.20g | 8 | ;; Version: 6.20h |
| 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-vm.el b/lisp/org/org-vm.el index 191e4006612..74c42fc8f96 100644 --- a/lisp/org/org-vm.el +++ b/lisp/org/org-vm.el | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> | 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> |
| 7 | ;; Keywords: outlines, hypermedia, calendar, wp | 7 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 8 | ;; Homepage: http://orgmode.org | 8 | ;; Homepage: http://orgmode.org |
| 9 | ;; Version: 6.20g | 9 | ;; Version: 6.20h |
| 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-w3m.el b/lisp/org/org-w3m.el index d6ab9185b87..beded70fd91 100644 --- a/lisp/org/org-w3m.el +++ b/lisp/org/org-w3m.el | |||
| @@ -5,7 +5,7 @@ | |||
| 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: http://orgmode.org |
| 8 | ;; Version: 6.20g | 8 | ;; Version: 6.20h |
| 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-wl.el b/lisp/org/org-wl.el index 1de5c3a6216..83b4ef54eb5 100644 --- a/lisp/org/org-wl.el +++ b/lisp/org/org-wl.el | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | ;; Author: Tokuya Kameshima <kames at fa2 dot so-net dot ne dot jp> | 6 | ;; Author: Tokuya Kameshima <kames at fa2 dot so-net dot ne dot jp> |
| 7 | ;; Keywords: outlines, hypermedia, calendar, wp | 7 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 8 | ;; Homepage: http://orgmode.org | 8 | ;; Homepage: http://orgmode.org |
| 9 | ;; Version: 6.20g | 9 | ;; Version: 6.20h |
| 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.el b/lisp/org/org.el index 956a4f529c7..ff0451f3776 100644 --- a/lisp/org/org.el +++ b/lisp/org/org.el | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> | 6 | ;; Author: Carsten Dominik <carsten at orgmode dot org> |
| 7 | ;; Keywords: outlines, hypermedia, calendar, wp | 7 | ;; Keywords: outlines, hypermedia, calendar, wp |
| 8 | ;; Homepage: http://orgmode.org | 8 | ;; Homepage: http://orgmode.org |
| 9 | ;; Version: 6.20g | 9 | ;; Version: 6.20h |
| 10 | ;; | 10 | ;; |
| 11 | ;; This file is part of GNU Emacs. | 11 | ;; This file is part of GNU Emacs. |
| 12 | ;; | 12 | ;; |
| @@ -94,7 +94,7 @@ | |||
| 94 | 94 | ||
| 95 | ;;; Version | 95 | ;;; Version |
| 96 | 96 | ||
| 97 | (defconst org-version "6.20g" | 97 | (defconst org-version "6.20h" |
| 98 | "The version number of the file org.el.") | 98 | "The version number of the file org.el.") |
| 99 | 99 | ||
| 100 | (defun org-version (&optional here) | 100 | (defun org-version (&optional here) |
| @@ -1641,8 +1641,27 @@ restart emacs after changing the value." | |||
| 1641 | :set (lambda (var val) | 1641 | :set (lambda (var val) |
| 1642 | (set var val) | 1642 | (set var val) |
| 1643 | (if val | 1643 | (if val |
| 1644 | (add-hook 'org-blocker-hook 'org-block-todo-from-children-or-siblings) | 1644 | (add-hook 'org-blocker-hook |
| 1645 | (remove-hook 'org-blocker-hook 'org-block-todo-from-children-or-siblings))) | 1645 | 'org-block-todo-from-children-or-siblings) |
| 1646 | (remove-hook 'org-blocker-hook | ||
| 1647 | 'org-block-todo-from-children-or-siblings))) | ||
| 1648 | :group 'org-todo | ||
| 1649 | :type 'boolean) | ||
| 1650 | |||
| 1651 | (defcustom org-enforce-todo-checkbox-dependencies nil | ||
| 1652 | "Non-nil means, unchecked boxes will block switching the parent to DONE. | ||
| 1653 | When this is nil, checkboxes have no influence on switching TODO states. | ||
| 1654 | When non-nil, you first need to check off all check boxes before the TODO | ||
| 1655 | entry can be switched to DONE. | ||
| 1656 | You need to set this variable through the customize interface, or to | ||
| 1657 | restart emacs after changing the value." | ||
| 1658 | :set (lambda (var val) | ||
| 1659 | (set var val) | ||
| 1660 | (if val | ||
| 1661 | (add-hook 'org-blocker-hook | ||
| 1662 | 'org-block-todo-from-checkboxes) | ||
| 1663 | (remove-hook 'org-blocker-hook | ||
| 1664 | 'org-block-todo-from-checkboxes))) | ||
| 1646 | :group 'org-todo | 1665 | :group 'org-todo |
| 1647 | :type 'boolean) | 1666 | :type 'boolean) |
| 1648 | 1667 | ||
| @@ -8332,6 +8351,7 @@ DONE are present, add TODO at the beginning of the heading. | |||
| 8332 | With C-u prefix arg, use completion to determine the new state. | 8351 | With C-u prefix arg, use completion to determine the new state. |
| 8333 | With numeric prefix arg, switch to that state. | 8352 | With numeric prefix arg, switch to that state. |
| 8334 | With a double C-u prefix, switch to the next set of TODO keywords (nextset). | 8353 | With a double C-u prefix, switch to the next set of TODO keywords (nextset). |
| 8354 | With a tripple C-u prefix, circumvent any state blocking. | ||
| 8335 | 8355 | ||
| 8336 | For calling through lisp, arg is also interpreted in the following way: | 8356 | For calling through lisp, arg is also interpreted in the following way: |
| 8337 | 'none -> empty state | 8357 | 'none -> empty state |
| @@ -8343,169 +8363,176 @@ For calling through lisp, arg is also interpreted in the following way: | |||
| 8343 | really is a member of `org-todo-keywords'." | 8363 | really is a member of `org-todo-keywords'." |
| 8344 | (interactive "P") | 8364 | (interactive "P") |
| 8345 | (if (equal arg '(16)) (setq arg 'nextset)) | 8365 | (if (equal arg '(16)) (setq arg 'nextset)) |
| 8346 | (save-excursion | 8366 | (let ((org-blocker-hook org-blocker-hook)) |
| 8347 | (catch 'exit | 8367 | (when (equal arg '(64)) |
| 8348 | (org-back-to-heading) | 8368 | (setq arg nil org-blocker-hook nil)) |
| 8349 | (if (looking-at outline-regexp) (goto-char (1- (match-end 0)))) | 8369 | (save-excursion |
| 8350 | (or (looking-at (concat " +" org-todo-regexp " *")) | 8370 | (catch 'exit |
| 8351 | (looking-at " *")) | 8371 | (org-back-to-heading) |
| 8352 | (let* ((match-data (match-data)) | 8372 | (if (looking-at outline-regexp) (goto-char (1- (match-end 0)))) |
| 8353 | (startpos (point-at-bol)) | 8373 | (or (looking-at (concat " +" org-todo-regexp " *")) |
| 8354 | (logging (save-match-data (org-entry-get nil "LOGGING" t))) | 8374 | (looking-at " *")) |
| 8355 | (org-log-done org-log-done) | 8375 | (let* ((match-data (match-data)) |
| 8356 | (org-log-repeat org-log-repeat) | 8376 | (startpos (point-at-bol)) |
| 8357 | (org-todo-log-states org-todo-log-states) | 8377 | (logging (save-match-data (org-entry-get nil "LOGGING" t))) |
| 8358 | (this (match-string 1)) | 8378 | (org-log-done org-log-done) |
| 8359 | (hl-pos (match-beginning 0)) | 8379 | (org-log-repeat org-log-repeat) |
| 8360 | (head (org-get-todo-sequence-head this)) | 8380 | (org-todo-log-states org-todo-log-states) |
| 8361 | (ass (assoc head org-todo-kwd-alist)) | 8381 | (this (match-string 1)) |
| 8362 | (interpret (nth 1 ass)) | 8382 | (hl-pos (match-beginning 0)) |
| 8363 | (done-word (nth 3 ass)) | 8383 | (head (org-get-todo-sequence-head this)) |
| 8364 | (final-done-word (nth 4 ass)) | 8384 | (ass (assoc head org-todo-kwd-alist)) |
| 8365 | (last-state (or this "")) | 8385 | (interpret (nth 1 ass)) |
| 8366 | (completion-ignore-case t) | 8386 | (done-word (nth 3 ass)) |
| 8367 | (member (member this org-todo-keywords-1)) | 8387 | (final-done-word (nth 4 ass)) |
| 8368 | (tail (cdr member)) | 8388 | (last-state (or this "")) |
| 8369 | (state (cond | 8389 | (completion-ignore-case t) |
| 8370 | ((and org-todo-key-trigger | 8390 | (member (member this org-todo-keywords-1)) |
| 8371 | (or (and (equal arg '(4)) (eq org-use-fast-todo-selection 'prefix)) | 8391 | (tail (cdr member)) |
| 8372 | (and (not arg) org-use-fast-todo-selection | 8392 | (state (cond |
| 8373 | (not (eq org-use-fast-todo-selection 'prefix))))) | 8393 | ((and org-todo-key-trigger |
| 8374 | ;; Use fast selection | 8394 | (or (and (equal arg '(4)) |
| 8375 | (org-fast-todo-selection)) | 8395 | (eq org-use-fast-todo-selection 'prefix)) |
| 8376 | ((and (equal arg '(4)) | 8396 | (and (not arg) org-use-fast-todo-selection |
| 8377 | (or (not org-use-fast-todo-selection) | 8397 | (not (eq org-use-fast-todo-selection |
| 8378 | (not org-todo-key-trigger))) | 8398 | 'prefix))))) |
| 8379 | ;; Read a state with completion | 8399 | ;; Use fast selection |
| 8380 | (org-ido-completing-read "State: " (mapcar (lambda(x) (list x)) | 8400 | (org-fast-todo-selection)) |
| 8381 | org-todo-keywords-1) | 8401 | ((and (equal arg '(4)) |
| 8382 | nil t)) | 8402 | (or (not org-use-fast-todo-selection) |
| 8383 | ((eq arg 'right) | 8403 | (not org-todo-key-trigger))) |
| 8384 | (if this | 8404 | ;; Read a state with completion |
| 8385 | (if tail (car tail) nil) | 8405 | (org-ido-completing-read |
| 8386 | (car org-todo-keywords-1))) | 8406 | "State: " (mapcar (lambda(x) (list x)) |
| 8387 | ((eq arg 'left) | 8407 | org-todo-keywords-1) |
| 8388 | (if (equal member org-todo-keywords-1) | 8408 | nil t)) |
| 8389 | nil | 8409 | ((eq arg 'right) |
| 8390 | (if this | 8410 | (if this |
| 8391 | (nth (- (length org-todo-keywords-1) (length tail) 2) | 8411 | (if tail (car tail) nil) |
| 8392 | org-todo-keywords-1) | 8412 | (car org-todo-keywords-1))) |
| 8393 | (org-last org-todo-keywords-1)))) | 8413 | ((eq arg 'left) |
| 8394 | ((and (eq org-use-fast-todo-selection t) (equal arg '(4)) | 8414 | (if (equal member org-todo-keywords-1) |
| 8395 | (setq arg nil))) ; hack to fall back to cycling | 8415 | nil |
| 8396 | (arg | 8416 | (if this |
| 8397 | ;; user or caller requests a specific state | 8417 | (nth (- (length org-todo-keywords-1) |
| 8398 | (cond | 8418 | (length tail) 2) |
| 8399 | ((equal arg "") nil) | 8419 | org-todo-keywords-1) |
| 8400 | ((eq arg 'none) nil) | 8420 | (org-last org-todo-keywords-1)))) |
| 8401 | ((eq arg 'done) (or done-word (car org-done-keywords))) | 8421 | ((and (eq org-use-fast-todo-selection t) (equal arg '(4)) |
| 8402 | ((eq arg 'nextset) | 8422 | (setq arg nil))) ; hack to fall back to cycling |
| 8403 | (or (car (cdr (member head org-todo-heads))) | 8423 | (arg |
| 8404 | (car org-todo-heads))) | 8424 | ;; user or caller requests a specific state |
| 8405 | ((eq arg 'previousset) | 8425 | (cond |
| 8406 | (let ((org-todo-heads (reverse org-todo-heads))) | 8426 | ((equal arg "") nil) |
| 8427 | ((eq arg 'none) nil) | ||
| 8428 | ((eq arg 'done) (or done-word (car org-done-keywords))) | ||
| 8429 | ((eq arg 'nextset) | ||
| 8407 | (or (car (cdr (member head org-todo-heads))) | 8430 | (or (car (cdr (member head org-todo-heads))) |
| 8408 | (car org-todo-heads)))) | 8431 | (car org-todo-heads))) |
| 8409 | ((car (member arg org-todo-keywords-1))) | 8432 | ((eq arg 'previousset) |
| 8410 | ((nth (1- (prefix-numeric-value arg)) | 8433 | (let ((org-todo-heads (reverse org-todo-heads))) |
| 8411 | org-todo-keywords-1)))) | 8434 | (or (car (cdr (member head org-todo-heads))) |
| 8412 | ((null member) (or head (car org-todo-keywords-1))) | 8435 | (car org-todo-heads)))) |
| 8413 | ((equal this final-done-word) nil) ;; -> make empty | 8436 | ((car (member arg org-todo-keywords-1))) |
| 8414 | ((null tail) nil) ;; -> first entry | 8437 | ((nth (1- (prefix-numeric-value arg)) |
| 8415 | ((eq interpret 'sequence) | 8438 | org-todo-keywords-1)))) |
| 8416 | (car tail)) | 8439 | ((null member) (or head (car org-todo-keywords-1))) |
| 8417 | ((memq interpret '(type priority)) | 8440 | ((equal this final-done-word) nil) ;; -> make empty |
| 8418 | (if (eq this-command last-command) | 8441 | ((null tail) nil) ;; -> first entry |
| 8419 | (car tail) | 8442 | ((eq interpret 'sequence) |
| 8420 | (if (> (length tail) 0) | 8443 | (car tail)) |
| 8421 | (or done-word (car org-done-keywords)) | 8444 | ((memq interpret '(type priority)) |
| 8422 | nil))) | 8445 | (if (eq this-command last-command) |
| 8423 | (t nil))) | 8446 | (car tail) |
| 8424 | (next (if state (concat " " state " ") " ")) | 8447 | (if (> (length tail) 0) |
| 8425 | (change-plist (list :type 'todo-state-change :from this :to state | 8448 | (or done-word (car org-done-keywords)) |
| 8426 | :position startpos)) | 8449 | nil))) |
| 8427 | dolog now-done-p) | 8450 | (t nil))) |
| 8428 | (when org-blocker-hook | 8451 | (next (if state (concat " " state " ") " ")) |
| 8452 | (change-plist (list :type 'todo-state-change :from this :to state | ||
| 8453 | :position startpos)) | ||
| 8454 | dolog now-done-p) | ||
| 8455 | (when org-blocker-hook | ||
| 8456 | (setq org-last-todo-state-is-todo | ||
| 8457 | (not (member this org-done-keywords))) | ||
| 8458 | (unless (save-excursion | ||
| 8459 | (save-match-data | ||
| 8460 | (run-hook-with-args-until-failure | ||
| 8461 | 'org-blocker-hook change-plist))) | ||
| 8462 | (if (interactive-p) | ||
| 8463 | (error "TODO state change from %s to %s blocked" this state) | ||
| 8464 | ;; fail silently | ||
| 8465 | (message "TODO state change from %s to %s blocked" this state) | ||
| 8466 | (throw 'exit nil)))) | ||
| 8467 | (store-match-data match-data) | ||
| 8468 | (replace-match next t t) | ||
| 8469 | (unless (pos-visible-in-window-p hl-pos) | ||
| 8470 | (message "TODO state changed to %s" (org-trim next))) | ||
| 8471 | (unless head | ||
| 8472 | (setq head (org-get-todo-sequence-head state) | ||
| 8473 | ass (assoc head org-todo-kwd-alist) | ||
| 8474 | interpret (nth 1 ass) | ||
| 8475 | done-word (nth 3 ass) | ||
| 8476 | final-done-word (nth 4 ass))) | ||
| 8477 | (when (memq arg '(nextset previousset)) | ||
| 8478 | (message "Keyword-Set %d/%d: %s" | ||
| 8479 | (- (length org-todo-sets) -1 | ||
| 8480 | (length (memq (assoc state org-todo-sets) org-todo-sets))) | ||
| 8481 | (length org-todo-sets) | ||
| 8482 | (mapconcat 'identity (assoc state org-todo-sets) " "))) | ||
| 8429 | (setq org-last-todo-state-is-todo | 8483 | (setq org-last-todo-state-is-todo |
| 8430 | (not (member this org-done-keywords))) | 8484 | (not (member state org-done-keywords))) |
| 8431 | (unless (save-excursion | 8485 | (setq now-done-p (and (member state org-done-keywords) |
| 8432 | (save-match-data | 8486 | (not (member this org-done-keywords)))) |
| 8433 | (run-hook-with-args-until-failure | 8487 | (and logging (org-local-logging logging)) |
| 8434 | 'org-blocker-hook change-plist))) | 8488 | (when (and (or org-todo-log-states org-log-done) |
| 8435 | (if (interactive-p) | 8489 | (not (memq arg '(nextset previousset)))) |
| 8436 | (error "TODO state change from %s to %s blocked" this state) | 8490 | ;; we need to look at recording a time and note |
| 8437 | ;; fail silently | 8491 | (setq dolog (or (nth 1 (assoc state org-todo-log-states)) |
| 8438 | (message "TODO state change from %s to %s blocked" this state) | 8492 | (nth 2 (assoc this org-todo-log-states)))) |
| 8439 | (throw 'exit nil)))) | 8493 | (when (and state |
| 8440 | (store-match-data match-data) | 8494 | (member state org-not-done-keywords) |
| 8441 | (replace-match next t t) | 8495 | (not (member this org-not-done-keywords))) |
| 8442 | (unless (pos-visible-in-window-p hl-pos) | 8496 | ;; This is now a todo state and was not one before |
| 8443 | (message "TODO state changed to %s" (org-trim next))) | 8497 | ;; If there was a CLOSED time stamp, get rid of it. |
| 8444 | (unless head | 8498 | (org-add-planning-info nil nil 'closed)) |
| 8445 | (setq head (org-get-todo-sequence-head state) | 8499 | (when (and now-done-p org-log-done) |
| 8446 | ass (assoc head org-todo-kwd-alist) | 8500 | ;; It is now done, and it was not done before |
| 8447 | interpret (nth 1 ass) | 8501 | (org-add-planning-info 'closed (org-current-time)) |
| 8448 | done-word (nth 3 ass) | 8502 | (if (and (not dolog) (eq 'note org-log-done)) |
| 8449 | final-done-word (nth 4 ass))) | 8503 | (org-add-log-setup 'done state 'findpos 'note))) |
| 8450 | (when (memq arg '(nextset previousset)) | 8504 | (when (and state dolog) |
| 8451 | (message "Keyword-Set %d/%d: %s" | 8505 | ;; This is a non-nil state, and we need to log it |
| 8452 | (- (length org-todo-sets) -1 | 8506 | (org-add-log-setup 'state state 'findpos dolog))) |
| 8453 | (length (memq (assoc state org-todo-sets) org-todo-sets))) | 8507 | ;; Fixup tag positioning |
| 8454 | (length org-todo-sets) | 8508 | (org-todo-trigger-tag-changes state) |
| 8455 | (mapconcat 'identity (assoc state org-todo-sets) " "))) | 8509 | (and org-auto-align-tags (not org-setting-tags) (org-set-tags nil t)) |
| 8456 | (setq org-last-todo-state-is-todo | 8510 | (when org-provide-todo-statistics |
| 8457 | (not (member state org-done-keywords))) | 8511 | (org-update-parent-todo-statistics)) |
| 8458 | (setq now-done-p (and (member state org-done-keywords) | 8512 | (run-hooks 'org-after-todo-state-change-hook) |
| 8459 | (not (member this org-done-keywords)))) | 8513 | (if (and arg (not (member state org-done-keywords))) |
| 8460 | (and logging (org-local-logging logging)) | 8514 | (setq head (org-get-todo-sequence-head state))) |
| 8461 | (when (and (or org-todo-log-states org-log-done) | 8515 | (put-text-property (point-at-bol) (point-at-eol) 'org-todo-head head) |
| 8462 | (not (memq arg '(nextset previousset)))) | 8516 | ;; Do we need to trigger a repeat? |
| 8463 | ;; we need to look at recording a time and note | 8517 | (when now-done-p |
| 8464 | (setq dolog (or (nth 1 (assoc state org-todo-log-states)) | 8518 | (when (boundp 'org-agenda-headline-snapshot-before-repeat) |
| 8465 | (nth 2 (assoc this org-todo-log-states)))) | 8519 | ;; This is for the agenda, take a snapshot of the headline. |
| 8466 | (when (and state | 8520 | (save-match-data |
| 8467 | (member state org-not-done-keywords) | 8521 | (setq org-agenda-headline-snapshot-before-repeat |
| 8468 | (not (member this org-not-done-keywords))) | 8522 | (org-get-heading)))) |
| 8469 | ;; This is now a todo state and was not one before | 8523 | (org-auto-repeat-maybe state)) |
| 8470 | ;; If there was a CLOSED time stamp, get rid of it. | 8524 | ;; Fixup cursor location if close to the keyword |
| 8471 | (org-add-planning-info nil nil 'closed)) | 8525 | (if (and (outline-on-heading-p) |
| 8472 | (when (and now-done-p org-log-done) | 8526 | (not (bolp)) |
| 8473 | ;; It is now done, and it was not done before | 8527 | (save-excursion (beginning-of-line 1) |
| 8474 | (org-add-planning-info 'closed (org-current-time)) | 8528 | (looking-at org-todo-line-regexp)) |
| 8475 | (if (and (not dolog) (eq 'note org-log-done)) | 8529 | (< (point) (+ 2 (or (match-end 2) (match-end 1))))) |
| 8476 | (org-add-log-setup 'done state 'findpos 'note))) | 8530 | (progn |
| 8477 | (when (and state dolog) | 8531 | (goto-char (or (match-end 2) (match-end 1))) |
| 8478 | ;; This is a non-nil state, and we need to log it | 8532 | (just-one-space))) |
| 8479 | (org-add-log-setup 'state state 'findpos dolog))) | 8533 | (when org-trigger-hook |
| 8480 | ;; Fixup tag positioning | 8534 | (save-excursion |
| 8481 | (org-todo-trigger-tag-changes state) | 8535 | (run-hook-with-args 'org-trigger-hook change-plist)))))))) |
| 8482 | (and org-auto-align-tags (not org-setting-tags) (org-set-tags nil t)) | ||
| 8483 | (when org-provide-todo-statistics | ||
| 8484 | (org-update-parent-todo-statistics)) | ||
| 8485 | (run-hooks 'org-after-todo-state-change-hook) | ||
| 8486 | (if (and arg (not (member state org-done-keywords))) | ||
| 8487 | (setq head (org-get-todo-sequence-head state))) | ||
| 8488 | (put-text-property (point-at-bol) (point-at-eol) 'org-todo-head head) | ||
| 8489 | ;; Do we need to trigger a repeat? | ||
| 8490 | (when now-done-p | ||
| 8491 | (when (boundp 'org-agenda-headline-snapshot-before-repeat) | ||
| 8492 | ;; This is for the agenda, take a snapshot of the headline. | ||
| 8493 | (save-match-data | ||
| 8494 | (setq org-agenda-headline-snapshot-before-repeat | ||
| 8495 | (org-get-heading)))) | ||
| 8496 | (org-auto-repeat-maybe state)) | ||
| 8497 | ;; Fixup cursor location if close to the keyword | ||
| 8498 | (if (and (outline-on-heading-p) | ||
| 8499 | (not (bolp)) | ||
| 8500 | (save-excursion (beginning-of-line 1) | ||
| 8501 | (looking-at org-todo-line-regexp)) | ||
| 8502 | (< (point) (+ 2 (or (match-end 2) (match-end 1))))) | ||
| 8503 | (progn | ||
| 8504 | (goto-char (or (match-end 2) (match-end 1))) | ||
| 8505 | (just-one-space))) | ||
| 8506 | (when org-trigger-hook | ||
| 8507 | (save-excursion | ||
| 8508 | (run-hook-with-args 'org-trigger-hook change-plist))))))) | ||
| 8509 | 8536 | ||
| 8510 | (defun org-block-todo-from-children-or-siblings (change-plist) | 8537 | (defun org-block-todo-from-children-or-siblings (change-plist) |
| 8511 | "Block turning an entry into a TODO, using the hierarchy. | 8538 | "Block turning an entry into a TODO, using the hierarchy. |
| @@ -8522,7 +8549,9 @@ changes. Such blocking occurs when: | |||
| 8522 | ;; do not block | 8549 | ;; do not block |
| 8523 | (when (or (not (eq (plist-get change-plist :type) 'todo-state-change)) | 8550 | (when (or (not (eq (plist-get change-plist :type) 'todo-state-change)) |
| 8524 | (member (plist-get change-plist :from) | 8551 | (member (plist-get change-plist :from) |
| 8525 | (cons 'done org-done-keywords))) | 8552 | (cons 'done org-done-keywords)) |
| 8553 | (member (plist-get change-plist :to) | ||
| 8554 | (cons 'todo org-not-done-keywords))) | ||
| 8526 | (throw 'dont-block t)) | 8555 | (throw 'dont-block t)) |
| 8527 | ;; If this task has children, and any are undone, it's blocked | 8556 | ;; If this task has children, and any are undone, it's blocked |
| 8528 | (save-excursion | 8557 | (save-excursion |
| @@ -8573,6 +8602,31 @@ changes. Such blocking occurs when: | |||
| 8573 | (org-entry-put nil "ORDERED" "t") | 8602 | (org-entry-put nil "ORDERED" "t") |
| 8574 | (message "Subtasks must be completed in sequence")))) | 8603 | (message "Subtasks must be completed in sequence")))) |
| 8575 | 8604 | ||
| 8605 | (defun org-block-todo-from-checkboxes (change-plist) | ||
| 8606 | "Block turning an entry into a TODO, using checkboxes. | ||
| 8607 | This checks whether the current task should be blocked from state | ||
| 8608 | changes because there are uncheckd boxes in this entry." | ||
| 8609 | (catch 'dont-block | ||
| 8610 | ;; If this is not a todo state change, or if this entry is already DONE, | ||
| 8611 | ;; do not block | ||
| 8612 | (when (or (not (eq (plist-get change-plist :type) 'todo-state-change)) | ||
| 8613 | (member (plist-get change-plist :from) | ||
| 8614 | (cons 'done org-done-keywords)) | ||
| 8615 | (member (plist-get change-plist :to) | ||
| 8616 | (cons 'todo org-not-done-keywords))) | ||
| 8617 | (throw 'dont-block t)) | ||
| 8618 | ;; If this task has checkboxes that are not checked, it's blocked | ||
| 8619 | (save-excursion | ||
| 8620 | (org-back-to-heading t) | ||
| 8621 | (let ((beg (point)) end) | ||
| 8622 | (outline-next-heading) | ||
| 8623 | (setq end (point)) | ||
| 8624 | (goto-char beg) | ||
| 8625 | (if (re-search-forward "^[ \t]*\\([-+*]\\|[0-9]+[.)]\\)[ \t]+\\[[- ]\\]" | ||
| 8626 | end t) | ||
| 8627 | (throw 'dont-block nil)))) | ||
| 8628 | t)) ; do not block | ||
| 8629 | |||
| 8576 | (defun org-update-parent-todo-statistics () | 8630 | (defun org-update-parent-todo-statistics () |
| 8577 | "Update any statistics cookie in the parent of the current headline." | 8631 | "Update any statistics cookie in the parent of the current headline." |
| 8578 | (interactive) | 8632 | (interactive) |