[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/hyperbole fbef2e1: Move backwards to previous cell when
From: |
ELPA Syncer |
Subject: |
[elpa] externals/hyperbole fbef2e1: Move backwards to previous cell when starting from invalid pos (#127) |
Date: |
Mon, 1 Nov 2021 04:57:20 -0400 (EDT) |
branch: externals/hyperbole
commit fbef2e1cfd069996b12b10be439ca973e83718ac
Author: Mats Lidell <mats.lidell@lidells.se>
Commit: GitHub <noreply@github.com>
Move backwards to previous cell when starting from invalid pos (#127)
Count moving to the previous cell as one step when starting from an
invalid position. Test cases added.
---
ChangeLog | 10 +++++++
kotl/kotl-mode.el | 12 +++++++++
test/kotl-mode-tests.el | 70 +++++++++++++++++++++++++++++++++++++++++++++++--
3 files changed, 90 insertions(+), 2 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index e99d2b5..f26d1e0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2021-10-31 Mats Lidell <matsl@gnu.org>
+
+* test/kotl-mode-tests.el (kotl-mode-previous-cell-from-invalid-position)
+ (kotl-mode-backward-cell-from-invalid-position)
+ (kotl-mode-backward-cell-from-invalid-pos-leave-point-in-valid-pos):
+ Test cases for invalid start position before moving backwards.
+
+* kotl/kotl-mode.el (kotl-mode:previous-cell, kotl-mode:backward-cell):
+ Handle case when start pos is invalid.
+
2021-10-26 Mats Lidell <matsl@gnu.org>
* hui.el (hui:link-directly): Use use-region-p for active region.
diff --git a/kotl/kotl-mode.el b/kotl/kotl-mode.el
index 22ce277..73e9131 100644
--- a/kotl/kotl-mode.el
+++ b/kotl/kotl-mode.el
@@ -1365,6 +1365,12 @@ Return number of cells left to move."
(kotl-mode:forward-cell (- arg))
(let ((prior (= arg 0))
(label-sep-len (kview:label-separator-length kview)))
+ (when (not (kview:valid-position-p))
+ (progn
+ (kotl-mode:to-valid-position t)
+ (kotl-mode:beginning-of-cell)
+ (setq arg (1- arg))
+ (setq prior t)))
(while (and (> arg 0) (setq prior (kcell-view:backward t label-sep-len)))
(setq arg (1- arg)))
(if (or prior (not (called-interactively-p 'interactive)))
@@ -1902,6 +1908,12 @@ Return non-nil iff there is a next tree within this
koutline."
(kotl-mode:next-cell (- arg))
(let ((previous (= arg 0))
(label-sep-len (kview:label-separator-length kview)))
+ (when (not (kview:valid-position-p))
+ (progn
+ (kotl-mode:to-valid-position t)
+ (kotl-mode:beginning-of-cell)
+ (setq arg (1- arg))
+ (setq previous t)))
(while (and (> arg 0) (setq previous
(kcell-view:previous t label-sep-len)))
(setq arg (1- arg)))
diff --git a/test/kotl-mode-tests.el b/test/kotl-mode-tests.el
index b906b75..8fac227 100644
--- a/test/kotl-mode-tests.el
+++ b/test/kotl-mode-tests.el
@@ -322,8 +322,74 @@
(should (string= (kcell-view:idstamp) "02")))
(delete-file kotl-file))))
-(provide 'kotl-mode-tests)
-;;; kotl-mode-tests.el ends here
+(ert-deftest kotl-mode-previous-cell-from-invalid-position ()
+ "When in an invalid position previous cell should move back to first valid
cell."
+ (let ((kotl-file (make-temp-file "hypb" nil ".kotl")))
+ (unwind-protect
+ (progn
+ (find-file kotl-file)
+ (insert "1")
+ (kotl-mode:add-cell)
+ (insert "2")
+ (kotl-mode:add-cell)
+ (insert "3")
+ (kotl-mode:previous-cell 1)
+ (kotl-mode:end-of-cell)
+ (goto-char (1+ (point)))
+ (should-not (kview:valid-position-p))
+ (kotl-mode:previous-cell 1)
+ (should (string= (kcell-view:label (point)) "2")))
+ (delete-file kotl-file))))
+
+(ert-deftest kotl-mode-backward-cell-from-invalid-position ()
+ "When in an invalid position backward cell should move back to first valid
cell."
+ (let ((kotl-file (make-temp-file "hypb" nil ".kotl")))
+ (unwind-protect
+ (progn
+ (find-file kotl-file)
+ (insert "1")
+ (kotl-mode:add-child)
+ (insert "1a")
+ (kotl-mode:add-parent)
+ (insert "2")
+ (kotl-mode:previous-cell 1)
+ (kotl-mode:end-of-cell)
+ (goto-char (1+ (point)))
+ (should-not (kview:valid-position-p))
+
+ (kotl-mode:backward-cell 1)
+ (should (string= (kcell-view:label (point)) "1a")))
+ (delete-file kotl-file))))
+
+(ert-deftest kotl-mode-backward-cell-from-invalid-pos-leave-point-in-valid-pos
()
+ "From invalid pos backward cell leaves point in valid pos on error."
+ (let ((kotl-file (make-temp-file "hypb" nil ".kotl")))
+ (unwind-protect
+ (progn
+ (find-file kotl-file)
+ (insert "1")
+ (kotl-mode:add-child)
+ (insert "1a")
+ (kotl-mode:add-parent)
+ (insert "2")
+
+ (kotl-mode:previous-cell 1)
+ (kotl-mode:end-of-cell)
+ (goto-char (1+ (point)))
+ (should-not (kview:valid-position-p))
+
+ (condition-case err
+ (funcall-interactively #'kotl-mode:backward-cell 2)
+ (error
+ (progn
+ (should (equal (car err) 'error))
+ (should (string-match "(kotl-mode:backward-cell): No prior cell
at same level" (cadr err))))))
+ (should (kotl-mode:bocp)) ;; Point is moved to begining of cell
+ (should (string= (kcell-view:label (point)) "1a")))
+ (delete-file kotl-file))))
+
+(provide 'kotl-mode-tests)
+;;; kotl-mode-tests.el ends here
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/hyperbole fbef2e1: Move backwards to previous cell when starting from invalid pos (#127),
ELPA Syncer <=