summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Guerry <bzg@altern.org>2013-07-03 14:57:19 +0200
committerBastien Guerry <bzg@altern.org>2013-07-03 14:57:19 +0200
commitf80e262967cbb6776105ceebd555aa2946a8ac33 (patch)
treeaabf693a9dac17e733b650e8956711e0c45f8e65
parent330eb689cdba665d2cdca687a574dc8c566ecbbf (diff)
downloadorg-mode-f80e262967cbb6776105ceebd555aa2946a8ac33.tar.gz
org-list.el (org-sort-list): Implement sorting by "checked" status for check lists
* org-list.el (org-sort-list): Implement sorting by "checked" status for check lists. * org.texi (Plain lists): Add index entry for sorting plain list. Document sorting by checked status for check lists.
-rw-r--r--doc/org.texi4
-rw-r--r--lisp/org-list.el13
2 files changed, 12 insertions, 5 deletions
diff --git a/doc/org.texi b/doc/org.texi
index 6f2aa36..79737ce 100644
--- a/doc/org.texi
+++ b/doc/org.texi
@@ -1832,9 +1832,11 @@ This command also cycles bullet styles when the cursor in on the bullet or
anywhere in an item line, details depending on
@code{org-support-shift-select}.
@kindex C-c ^
+@cindex sorting, of plain list
@item C-c ^
Sort the plain list. You will be prompted for the sorting method:
-numerically, alphabetically, by time, or by custom function.
+numerically, alphabetically, by time, by checked status for check lists,
+or by a custom function.
@end table
@node Drawers, Blocks, Plain lists, Document Structure
diff --git a/lisp/org-list.el b/lisp/org-list.el
index 86afe11..ccd8f9d 100644
--- a/lisp/org-list.el
+++ b/lisp/org-list.el
@@ -2799,13 +2799,14 @@ optional argument WITH-CASE, the sorting considers case as well.
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 ?f ?F). Here is the precise
-meaning of each character:
+be a character, \(?n ?N ?a ?A ?t ?T ?f ?F ?c ?C). Here is the
+detailed meaning of each character:
n Numerically, by converting the beginning of the item to a number.
a Alphabetically. Only the first line of item is checked.
t By date/time, either the first active time stamp in the entry, if
any, or by the first inactive one. In a timer list, sort the timers.
+c By \"checked\" status of a check list.
Capital letters will reverse the sort order.
@@ -2827,7 +2828,7 @@ ignores hidden links."
(or sorting-type
(progn
(message
- "Sort plain list: [a]lpha [n]umeric [t]ime [f]unc A/N/T/F means reversed:")
+ "Sort plain list: [a]lpha [n]umeric [t]ime [f]unc [c]hecked A/N/T/F/C means reversed:")
(read-char-exclusive))))
(getkey-func
(or getkey-func
@@ -2844,7 +2845,8 @@ ignores hidden links."
(sort-func (cond
((= dcst ?a) 'string<)
((= dcst ?f) compare-func)
- ((= dcst ?t) '<)))
+ ((= dcst ?t) '<)
+ ((= dcst ?c) 'string<)))
(next-record (lambda ()
(skip-chars-forward " \r\t\n")
(or (eobp) (beginning-of-line))))
@@ -2875,6 +2877,9 @@ ignores hidden links."
(point-at-eol) t)))
(org-time-string-to-seconds (match-string 0)))
(t (org-float-time now))))
+ ((= dcst ?c) (or (and (stringp (match-string 1))
+ (match-string 1))
+ ""))
((= dcst ?f)
(if getkey-func
(let ((value (funcall getkey-func)))