summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyle Meyer <kyle@kyleam.com>2017-05-09 14:49:59 -0400
committerKyle Meyer <kyle@kyleam.com>2017-05-09 14:49:59 -0400
commit6fee6b6cde5e82e8632408c865681c3aa709013a (patch)
tree1045fe3e714823aacda6be2c55bbfbcf9c0446c3
parent9a297d653199f199c886f9cb4419b9ed0c2e21cf (diff)
parentf4bb79a10c00591bfb3e77ef9e1e3674e770163e (diff)
downloadorg-mode-6fee6b6cde5e82e8632408c865681c3aa709013a.tar.gz
Merge branch 'maint'
-rw-r--r--contrib/lisp/org-link-edit.el15
-rw-r--r--testing/lisp/test-org-list.el68
-rw-r--r--testing/lisp/test-org.el196
3 files changed, 272 insertions, 7 deletions
diff --git a/contrib/lisp/org-link-edit.el b/contrib/lisp/org-link-edit.el
index 6fa105a..000dd1c 100644
--- a/contrib/lisp/org-link-edit.el
+++ b/contrib/lisp/org-link-edit.el
@@ -5,7 +5,7 @@
;; Author: Kyle Meyer <kyle@kyleam.com>
;; URL: https://gitlab.com/kyleam/org-link-edit
;; Keywords: convenience
-;; Version: 1.1.0
+;; Version: 1.1.1
;; Package-Requires: ((cl-lib "0.5") (org "8.2.10"))
;; This program is free software; you can redistribute it and/or modify
@@ -373,17 +373,18 @@ END."
(progn (goto-char pt)
(org-link-edit--on-link-p)))
(user-error "Cannot transport next link with point on a link"))
- (goto-char (car desc-bounds))
- (cl-multiple-value-bind (link-beg link-end link desc)
+ (goto-char (or (car desc-bounds) pt))
+ (cl-multiple-value-bind (link-beg link-end link orig-desc)
(org-link-edit--next-link-data previous)
- (unless (or (not desc-bounds) (= (length desc) 0))
+ (unless (or (not desc-bounds) (= (length orig-desc) 0))
(user-error "Link already has a description"))
(delete-region link-beg link-end)
(insert (org-make-link-string
link
- (and desc-bounds
- (delete-and-extract-region (car desc-bounds)
- (cdr desc-bounds))))))))
+ (if desc-bounds
+ (delete-and-extract-region (car desc-bounds)
+ (cdr desc-bounds))
+ orig-desc))))))
(provide 'org-link-edit)
;;; org-link-edit.el ends here
diff --git a/testing/lisp/test-org-list.el b/testing/lisp/test-org-list.el
index 24e4831..d583e2c 100644
--- a/testing/lisp/test-org-list.el
+++ b/testing/lisp/test-org-list.el
@@ -1012,6 +1012,74 @@
(org-toggle-item t)
(buffer-string)))))
+(ert-deftest test-org-list/sort ()
+ "Test `org-sort-list'."
+ ;; Sort alphabetically.
+ (should
+ (equal "- abc\n- def\n- xyz\n"
+ (org-test-with-temp-text "- def\n- xyz\n- abc\n"
+ (org-sort-list nil ?a)
+ (buffer-string))))
+ (should
+ (equal "- xyz\n- def\n- abc\n"
+ (org-test-with-temp-text "- def\n- xyz\n- abc\n"
+ (org-sort-list nil ?A)
+ (buffer-string))))
+ ;; Sort numerically.
+ (should
+ (equal "- 1\n- 2\n- 10\n"
+ (org-test-with-temp-text "- 10\n- 1\n- 2\n"
+ (org-sort-list nil ?n)
+ (buffer-string))))
+ (should
+ (equal "- 10\n- 2\n- 1\n"
+ (org-test-with-temp-text "- 10\n- 1\n- 2\n"
+ (org-sort-list nil ?N)
+ (buffer-string))))
+ ;; Sort by checked status.
+ (should
+ (equal "- [ ] xyz\n- [ ] def\n- [X] abc\n"
+ (org-test-with-temp-text "- [X] abc\n- [ ] xyz\n- [ ] def\n"
+ (org-sort-list nil ?x)
+ (buffer-string))))
+ (should
+ (equal "- [X] abc\n- [ ] xyz\n- [ ] def\n"
+ (org-test-with-temp-text "- [X] abc\n- [ ] xyz\n- [ ] def\n"
+ (org-sort-list nil ?X)
+ (buffer-string))))
+ ;; Sort by time stamp.
+ (should
+ (equal "- <2017-05-08 Mon>\n- <2017-05-09 Tue>\n- <2018-05-09 Wed>\n"
+ (org-test-with-temp-text
+ "- <2018-05-09 Wed>\n- <2017-05-09 Tue>\n- <2017-05-08 Mon>\n"
+ (org-sort-list nil ?t)
+ (buffer-string))))
+ (should
+ (equal "- <2018-05-09 Wed>\n- <2017-05-09 Tue>\n- <2017-05-08 Mon>\n"
+ (org-test-with-temp-text
+ "- <2018-05-09 Wed>\n- <2017-05-09 Tue>\n- <2017-05-08 Mon>\n"
+ (org-sort-list nil ?T)
+ (buffer-string))))
+ ;; Sort by custom function.
+ (should
+ (equal "- b\n- aa\n- ccc\n"
+ (org-test-with-temp-text "- ccc\n- b\n- aa\n"
+ (org-sort-list nil ?f
+ (lambda ()
+ (length (buffer-substring (point-at-bol)
+ (point-at-eol))))
+ #'<)
+ (buffer-string))))
+ (should
+ (equal "- ccc\n- aa\n- b\n"
+ (org-test-with-temp-text "- ccc\n- b\n- aa\n"
+ (org-sort-list nil ?F
+ (lambda ()
+ (length (buffer-substring (point-at-bol)
+ (point-at-eol))))
+ #'<)
+ (buffer-string)))))
+
;;; Radio Lists
diff --git a/testing/lisp/test-org.el b/testing/lisp/test-org.el
index 6b15138..d2576eb 100644
--- a/testing/lisp/test-org.el
+++ b/testing/lisp/test-org.el
@@ -2598,6 +2598,202 @@ http://article.gmane.org/gmane.emacs.orgmode/21459/"
(org-test-with-temp-text "xx abc<point> xx"
(org-in-regexp "abc" nil t))))
+(ert-deftest test-org/sort-entries ()
+ "Test `org-sort-entries'."
+ ;; Sort alphabetically.
+ (should
+ (equal "\n* abc\n* def\n* xyz\n"
+ (org-test-with-temp-text "\n* def\n* xyz\n* abc\n"
+ (org-sort-entries nil ?a)
+ (buffer-string))))
+ (should
+ (equal "\n* xyz\n* def\n* abc\n"
+ (org-test-with-temp-text "\n* def\n* xyz\n* abc\n"
+ (org-sort-entries nil ?A)
+ (buffer-string))))
+ ;; Sort numerically.
+ (should
+ (equal "\n* 1\n* 2\n* 10\n"
+ (org-test-with-temp-text "\n* 10\n* 1\n* 2\n"
+ (org-sort-entries nil ?n)
+ (buffer-string))))
+ (should
+ (equal "\n* 10\n* 2\n* 1\n"
+ (org-test-with-temp-text "\n* 10\n* 1\n* 2\n"
+ (org-sort-entries nil ?N)
+ (buffer-string))))
+ ;; Sort by custom function.
+ (should
+ (equal "\n* b\n* aa\n* ccc\n"
+ (org-test-with-temp-text "\n* ccc\n* b\n* aa\n"
+ (org-sort-entries nil ?f
+ (lambda ()
+ (length (buffer-substring (point-at-bol)
+ (point-at-eol))))
+ #'<)
+ (buffer-string))))
+ (should
+ (equal "\n* ccc\n* aa\n* b\n"
+ (org-test-with-temp-text "\n* ccc\n* b\n* aa\n"
+ (org-sort-entries nil ?F
+ (lambda ()
+ (length (buffer-substring (point-at-bol)
+ (point-at-eol))))
+ #'<)
+ (buffer-string))))
+ ;; Sort by TODO keyword.
+ (should
+ (equal "\n* TODO h1\n* TODO h3\n* DONE h2\n"
+ (org-test-with-temp-text
+ "\n* TODO h1\n* DONE h2\n* TODO h3\n"
+ (org-sort-entries nil ?o)
+ (buffer-string))))
+ (should
+ (equal "\n* DONE h2\n* TODO h1\n* TODO h3\n"
+ (org-test-with-temp-text
+ "\n* TODO h1\n* DONE h2\n* TODO h3\n"
+ (org-sort-entries nil ?O)
+ (buffer-string))))
+ ;; Sort by priority.
+ (should
+ (equal "\n* [#A] h2\n* [#B] h3\n* [#C] h1\n"
+ (org-test-with-temp-text
+ "\n* [#C] h1\n* [#A] h2\n* [#B] h3\n"
+ (org-sort-entries nil ?p)
+ (buffer-string))))
+ (should
+ (equal "\n* [#C] h1\n* [#B] h3\n* [#A] h2\n"
+ (org-test-with-temp-text
+ "\n* [#C] h1\n* [#A] h2\n* [#B] h3\n"
+ (org-sort-entries nil ?P)
+ (buffer-string))))
+ ;; Sort by creation time.
+ (should
+ (equal "
+* h3
+ [2017-05-08 Mon]
+* h2
+ [2017-05-09 Tue]
+* h1
+ [2018-05-09 Wed]
+"
+ (org-test-with-temp-text
+ "
+* h1
+ [2018-05-09 Wed]
+* h2
+ [2017-05-09 Tue]
+* h3
+ [2017-05-08 Mon]
+"
+ (org-sort-entries nil ?c)
+ (buffer-string))))
+
+ ;; Sort by scheduled date.
+ (should
+ (equal "
+* TODO h4
+SCHEDULED: <2017-05-06 Sat>
+* TODO h3
+SCHEDULED: <2017-05-08 Mon>
+* TODO h2
+DEADLINE: <2017-05-09 Tue>
+* TODO h1
+DEADLINE: <2017-05-07 Sun>
+"
+ (org-test-with-temp-text
+ "
+* TODO h2
+DEADLINE: <2017-05-09 Tue>
+* TODO h1
+DEADLINE: <2017-05-07 Sun>
+* TODO h3
+SCHEDULED: <2017-05-08 Mon>
+* TODO h4
+SCHEDULED: <2017-05-06 Sat>
+"
+ (org-sort-entries nil ?s)
+ (buffer-string))))
+ ;; Sort by deadline date.
+ (should
+ (equal "
+* TODO h1
+DEADLINE: <2017-05-07 Sun>
+* TODO h2
+DEADLINE: <2017-05-09 Tue>
+* TODO h3
+SCHEDULED: <2017-05-08 Mon>
+* TODO h4
+SCHEDULED: <2017-05-06 Sat>
+"
+ (org-test-with-temp-text
+ "
+* TODO h2
+DEADLINE: <2017-05-09 Tue>
+* TODO h1
+DEADLINE: <2017-05-07 Sun>
+* TODO h3
+SCHEDULED: <2017-05-08 Mon>
+* TODO h4
+SCHEDULED: <2017-05-06 Sat>
+"
+ (org-sort-entries nil ?d)
+ (buffer-string))))
+ ;; Sort by any date/time
+ (should
+ (equal "
+* TODO h4
+SCHEDULED: <2017-05-06 Sat>
+* TODO h1
+DEADLINE: <2017-05-07 Sun>
+* TODO h3
+SCHEDULED: <2017-05-08 Mon>
+* TODO h2
+DEADLINE: <2017-05-09 Tue>
+"
+ (org-test-with-temp-text
+ "
+* TODO h2
+DEADLINE: <2017-05-09 Tue>
+* TODO h1
+DEADLINE: <2017-05-07 Sun>
+* TODO h3
+SCHEDULED: <2017-05-08 Mon>
+* TODO h4
+SCHEDULED: <2017-05-06 Sat>
+"
+ (org-sort-entries nil ?t)
+ (buffer-string))))
+ ;; Sort by clocking time.
+ (should
+ (equal "
+* clocked h2
+ :LOGBOOK:
+ CLOCK: [2017-05-09 Tue 00:15]--[2017-05-09 Tue 00:22] => 0:07
+ CLOCK: [2017-05-09 Tue 00:00]--[2017-05-09 Tue 00:10] => 0:10
+ :END:
+* clocked h1
+ :LOGBOOK:
+ CLOCK: [2017-05-09 Tue 00:15]--[2017-05-09 Tue 00:22] => 0:07
+ CLOCK: [2017-05-09 Tue 00:00]--[2017-05-09 Tue 00:12] => 0:12
+ :END:
+"
+ (org-test-with-temp-text
+ "
+* clocked h1
+ :LOGBOOK:
+ CLOCK: [2017-05-09 Tue 00:15]--[2017-05-09 Tue 00:22] => 0:07
+ CLOCK: [2017-05-09 Tue 00:00]--[2017-05-09 Tue 00:12] => 0:12
+ :END:
+* clocked h2
+ :LOGBOOK:
+ CLOCK: [2017-05-09 Tue 00:15]--[2017-05-09 Tue 00:22] => 0:07
+ CLOCK: [2017-05-09 Tue 00:00]--[2017-05-09 Tue 00:10] => 0:10
+ :END:
+"
+ (org-sort-entries nil ?k)
+ (buffer-string)))))
+
;;; Navigation