Merge branch 'maint'

This commit is contained in:
Kyle Meyer 2017-05-09 14:49:59 -04:00
commit 6fee6b6cde
3 changed files with 272 additions and 7 deletions

View File

@ -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

View File

@ -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

View File

@ -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