Browse Source

Bug fix in org-beginning-of-line visual line motion

* lisp/org.el (org-beginning-of-line): check `visual-line-mode'
instead of `line-visual-mode' to determine whether to move by visual
lines.

* lisp/org.el (org-kill-line): use of org-bound-and-true-p macro.

* testing/lisp/test-org.el: Add test
Toby S. Cubitt 5 years ago
parent
commit
2aeb28d2af
2 changed files with 38 additions and 5 deletions
  1. 2 2
      lisp/org.el
  2. 36 3
      testing/lisp/test-org.el

+ 2 - 2
lisp/org.el

@@ -21271,7 +21271,7 @@ beyond the end of the headline."
 		     (car org-special-ctrl-a/e)
 		   org-special-ctrl-a/e))
 	refpos)
-    (if (org-bound-and-true-p line-move-visual)
+    (if (org-bound-and-true-p visual-line-mode)
 	(beginning-of-visual-line 1)
       (beginning-of-line 1))
     (if (and arg (fboundp 'move-beginning-of-line))
@@ -21398,7 +21398,7 @@ depending on context."
 		(not (y-or-n-p "Kill hidden subtree along with headline? ")))
 	    (error "C-k aborted - would kill hidden subtree")))
     (call-interactively
-     (if (and (boundp 'visual-line-mode) visual-line-mode) 'kill-visual-line 'kill-line)))
+     (if (org-bound-and-true-p visual-line-mode) 'kill-visual-line 'kill-line)))
    ((looking-at (org-re ".*?\\S-\\([ \t]+\\(:[[:alnum:]_@#%:]+:\\)\\)[ \t]*$"))
     (kill-region (point) (match-beginning 1))
     (org-set-tags nil t))

+ 36 - 3
testing/lisp/test-org.el

@@ -418,12 +418,44 @@ http://article.gmane.org/gmane.emacs.orgmode/21459/"
  
 ;; Navigation
 
+(ert-deftest test-org/beginning-of-line ()
+  "Test `org-beginning-of-line' specifications."
+  ;; Standard test.
+  (should
+   (org-test-with-temp-text "Some text\nSome other text"
+     (progn (org-beginning-of-line) (bolp))))
+  ;; Standard test with `visual-line-mode'.
+  (should-not
+   (org-test-with-temp-text "A long line of text\nSome other text"
+     (progn (visual-line-mode)
+	    (forward-char 2)
+	    (dotimes (i 1000) (insert "very "))
+	    (org-beginning-of-line)
+	    (bolp))))
+  ;; At an headline with special movement.
+  (should
+   (org-test-with-temp-text "* TODO Headline"
+     (let ((org-special-ctrl-a/e t))
+       (org-end-of-line)
+       (and (progn (org-beginning-of-line) (looking-at "Headline"))
+	    (progn (org-beginning-of-line) (bolp))
+	    (progn (org-beginning-of-line) (looking-at "Headline")))))))
+
 (ert-deftest test-org/end-of-line ()
   "Test `org-end-of-line' specifications."
   ;; Standard test.
   (should
    (org-test-with-temp-text "Some text\nSome other text"
      (progn (org-end-of-line) (eolp))))
+  ;; Standard test with `visual-line-mode'.
+  (should-not
+   (org-test-with-temp-text "A long line of text\nSome other text"
+     (progn (visual-line-mode)
+	    (forward-char 2)
+	    (dotimes (i 1000) (insert "very "))
+	    (goto-char (point-min))
+	    (org-end-of-line)
+	    (eolp))))
   ;; At an headline with special movement.
   (should
    (org-test-with-temp-text "* Headline :tag:"
@@ -451,9 +483,10 @@ http://article.gmane.org/gmane.emacs.orgmode/21459/"
   ;; At a block with hidden contents.
   (should-not
    (org-test-with-temp-text "#+BEGIN_CENTER\nContents\n#+END_CENTER"
-     (progn (org-hide-block-toggle)
-	    (org-end-of-line)
-	    (eobp)))))
+     (let ((org-special-ctrl-a/e t))
+       (org-hide-block-toggle)
+       (org-end-of-line)
+       (eobp)))))
 
 (ert-deftest test-org/forward-element ()
   "Test `org-forward-element' specifications."