emacs-elpa-diffs
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]