summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyle Meyer <kyle@kyleam.com>2016-11-28 18:30:16 -0500
committerKyle Meyer <kyle@kyleam.com>2016-11-28 18:40:43 -0500
commit6983f8e8bfce12a35b1a87d5298efde3eace7c6f (patch)
treea7e2a96db9352fb5782d7c525f9c798f91702001
parent9299efa3519b3ef3191e8dc06a4466696c720f6c (diff)
downloadorg-mode-6983f8e8bfce12a35b1a87d5298efde3eace7c6f.tar.gz
Issue user-error when trying to drag before first element
* lisp/org.el (org-drag-element-backward): (org-drag-element-forward): Check that org-element-at-point returns a non-nil value to avoid a type-error when called before first element. * testing/lisp/test-org.el (test-org/drag-element-backward): (test-org/drag-element-forward): Add test for when point is before first element. Adjust existing should-error calls to specify user-error.
-rw-r--r--lisp/org.el6
-rw-r--r--testing/lisp/test-org.el23
2 files changed, 23 insertions, 6 deletions
diff --git a/lisp/org.el b/lisp/org.el
index 273ca3d..e372475 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -24693,7 +24693,8 @@ Move to the previous element at the same level, when possible."
"Move backward element at point."
(interactive)
(if (org-with-limited-levels (org-at-heading-p)) (org-move-subtree-up)
- (let* ((elem (org-element-at-point))
+ (let* ((elem (or (org-element-at-point)
+ (user-error "No element at point")))
(prev-elem
(save-excursion
(goto-char (org-element-property :begin elem))
@@ -24719,7 +24720,8 @@ Move to the previous element at the same level, when possible."
"Move forward element at point."
(interactive)
(let* ((pos (point))
- (elem (org-element-at-point)))
+ (elem (or (org-element-at-point)
+ (user-error "No element at point"))))
(when (= (point-max) (org-element-property :end elem))
(user-error "Cannot drag element forward"))
(goto-char (org-element-property :end elem))
diff --git a/testing/lisp/test-org.el b/testing/lisp/test-org.el
index 03dd429..99d905e 100644
--- a/testing/lisp/test-org.el
+++ b/testing/lisp/test-org.el
@@ -3244,18 +3244,27 @@ Outside."
;; Error when trying to move first element of buffer.
(should-error
(org-test-with-temp-text "Paragraph 1.\n\nParagraph 2."
- (org-drag-element-backward)))
+ (org-drag-element-backward))
+ :type 'user-error)
;; Error when trying to swap nested elements.
(should-error
(org-test-with-temp-text "#+BEGIN_CENTER\nTest.\n#+END_CENTER"
(forward-line)
- (org-drag-element-backward)))
+ (org-drag-element-backward))
+ :type 'user-error)
;; Error when trying to swap an headline element and a non-headline
;; element.
(should-error
(org-test-with-temp-text "Test.\n* Head 1"
(forward-line)
- (org-drag-element-backward)))
+ (org-drag-element-backward))
+ :type 'user-error)
+ ;; Error when called before first element.
+ (should-error
+ (org-test-with-temp-text "\n"
+ (forward-line)
+ (org-drag-element-backward))
+ :type 'user-error)
;; Preserve visibility of elements and their contents.
(should
(equal '((63 . 82) (26 . 48))
@@ -3287,7 +3296,13 @@ Text.
;; headline.
(org-test-with-temp-text "Test.\n* Head 1"
(should-error (org-drag-element-forward)))
- ;; 4. Otherwise, swap elements, preserving column and blank lines
+ ;; 4. Error when called before first element.
+ (should-error
+ (org-test-with-temp-text "\n"
+ (forward-line)
+ (org-drag-element-backward))
+ :type 'user-error)
+ ;; 5. Otherwise, swap elements, preserving column and blank lines
;; between elements.
(org-test-with-temp-text "Paragraph 1\n\n\nPara2\n\nPara3"
(search-forward "graph")