summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Guerry <bzg@altern.org>2014-04-17 10:30:44 +0200
committerBastien Guerry <bzg@altern.org>2014-04-17 10:32:36 +0200
commit5ec31814f934b65c8071b320a3fd567b351e0e8f (patch)
treea7b10c2f4a20edf3c8ef37490937a93d1abc4fe8
parentb3f18b310b87abdeb34aa55e1d55fdd35bebf5c9 (diff)
downloadorg-mode-5ec31814f934b65c8071b320a3fd567b351e0e8f.tar.gz
org.el (org-sort-entries): Allow to sort by clocking time
* org.el (org-sort-entries): Allow to sort by clocking time. Thanks to Noah Slater for this idea.
-rw-r--r--lisp/org.el24
1 files changed, 14 insertions, 10 deletions
diff --git a/lisp/org.el b/lisp/org.el
index 9557225..7cd96eb 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -8683,20 +8683,21 @@ a time stamp, by a property, by priority order, or by a custom function.
The command prompts for the sorting type unless it has been given to the
function through the SORTING-TYPE argument, which needs to be a character,
-\(?n ?N ?a ?A ?t ?T ?s ?S ?d ?D ?p ?P ?o ?O ?r ?R ?f ?F). Here is the
-precise meaning of each character:
+\(?n ?N ?a ?A ?t ?T ?s ?S ?d ?D ?p ?P ?o ?O ?r ?R ?f ?F ?k ?K). Here is
+the precise meaning of each character:
-n Numerically, by converting the beginning of the entry/item to a number.
a Alphabetically, ignoring the TODO keyword and the priority, if any.
-o By order of TODO keywords.
-t By date/time, either the first active time stamp in the entry, or, if
- none exist, by the first inactive one.
-s By the scheduled date/time.
-d By deadline date/time.
c By creation time, which is assumed to be the first inactive time stamp
at the beginning of a line.
+d By deadline date/time.
+k By clocking time.
+n Numerically, by converting the beginning of the entry/item to a number.
+o By order of TODO keywords.
p By priority according to the cookie.
r By the value of a property.
+s By scheduled date/time.
+t By date/time, either the first active time stamp in the entry, or, if
+ none exist, by the first inactive one.
Capital letters will reverse the sort order.
@@ -8775,8 +8776,8 @@ When sorting is done, call `org-after-sorting-entries-or-items-hook'."
(unless sorting-type
(message
"Sort %s: [a]lpha [n]umeric [p]riority p[r]operty todo[o]rder [f]unc
- [t]ime [s]cheduled [d]eadline [c]reated
- A/N/P/R/O/F/T/S/D/C means reversed:"
+ [t]ime [s]cheduled [d]eadline [c]reated cloc[k]ing
+ A/N/P/R/O/F/T/S/D/C/K means reversed:"
what)
(setq sorting-type (read-char-exclusive))
@@ -8794,6 +8795,7 @@ When sorting is done, call `org-after-sorting-entries-or-items-hook'."
(mapcar 'list (org-buffer-property-keys t))
nil t))))
+ (when (member sorting-type '(?k ?K)) (org-clock-sum))
(message "Sorting entries...")
(save-restriction
@@ -8828,6 +8830,8 @@ When sorting is done, call `org-after-sorting-entries-or-items-hook'."
(if (looking-at org-complex-heading-regexp)
(funcall case-func (org-sort-remove-invisible (match-string 4)))
nil))
+ ((= dcst ?k)
+ (get-text-property (point) :org-clock-minutes))
((= dcst ?t)
(let ((end (save-excursion (outline-next-heading) (point))))
(if (or (re-search-forward org-ts-regexp end t)