Browse Source

Merge branch 'maint'

Nicolas Goaziou 13 years ago
parent
commit
5acffad561
2 changed files with 34 additions and 32 deletions
  1. 33 31
      lisp/org.el
  2. 1 1
      testing/lisp/test-org.el

+ 33 - 31
lisp/org.el

@@ -21637,37 +21637,39 @@ tags on the first attempt, and only move to after the tags when
 the cursor is already beyond the end of the headline."
 the cursor is already beyond the end of the headline."
   (interactive "P")
   (interactive "P")
   (let ((special (if (consp org-special-ctrl-a/e) (cdr org-special-ctrl-a/e)
   (let ((special (if (consp org-special-ctrl-a/e) (cdr org-special-ctrl-a/e)
-		   org-special-ctrl-a/e))
-        (type (org-element-type
-               (save-excursion (beginning-of-line) (org-element-at-point)))))
-    (cond
-     ((or (not special) arg)
-      (call-interactively
-       (if (fboundp 'move-end-of-line) 'move-end-of-line 'end-of-line)))
-     ((memq type '(headline inlinetask))
-      (let ((pos (point)))
-        (beginning-of-line 1)
-        (if (looking-at (org-re ".*?\\(?:\\([ \t]*\\)\\(:[[:alnum:]_@#%:]+:\\)?[ \t]*\\)?$"))
-            (if (eq special t)
-                (if (or (< pos (match-beginning 1)) (= pos (match-end 0)))
-                    (goto-char (match-beginning 1))
-                  (goto-char (match-end 0)))
-              (if (or (< pos (match-end 0))
-                      (not (eq this-command last-command)))
-                  (goto-char (match-end 0))
-                (goto-char (match-beginning 1))))
-          (call-interactively
-           (if (fboundp 'move-end-of-line) 'move-end-of-line 'end-of-line)))))
-     ((memq type
-            '(center-block comment-block drawer dynamic-block example-block
-                           export-block item plain-list property-drawer
-                           quote-block special-block src-block verse-block))
-      ;; Never move past the ellipsis.
-      (or (eolp) (move-end-of-line 1))
-      (when (org-invisible-p2) (backward-char)))
-     (t
-      (call-interactively
-       (if (fboundp 'move-end-of-line) 'move-end-of-line 'end-of-line))))
+		   org-special-ctrl-a/e)))
+    (if (or (not special) arg)
+	(call-interactively
+	 (if (fboundp 'move-end-of-line) 'move-end-of-line 'end-of-line))
+      (let* ((element (save-excursion (beginning-of-line)
+				      (org-element-at-point)))
+	     (type (org-element-type element)))
+	(cond
+	 ((memq type '(headline inlinetask))
+	  (let ((pos (point)))
+	    (beginning-of-line 1)
+	    (if (looking-at (org-re ".*?\\(?:\\([ \t]*\\)\\(:[[:alnum:]_@#%:]+:\\)?[ \t]*\\)?$"))
+		(if (eq special t)
+		    (if (or (< pos (match-beginning 1)) (= pos (match-end 0)))
+			(goto-char (match-beginning 1))
+		      (goto-char (match-end 0)))
+		  (if (or (< pos (match-end 0))
+			  (not (eq this-command last-command)))
+		      (goto-char (match-end 0))
+		    (goto-char (match-beginning 1))))
+	      (call-interactively
+	       (if (fboundp 'move-end-of-line) 'move-end-of-line
+		 'end-of-line)))))
+	 ((memq type
+		'(center-block comment-block drawer dynamic-block example-block
+			       export-block item plain-list property-drawer
+			       quote-block special-block src-block verse-block))
+	  ;; If element is hidden, `move-end-of-line' would put point
+	  ;; after it.  Use `end-of-line' to stay on current line.
+	  (call-interactively 'end-of-line))
+	 (t
+	  (call-interactively
+	   (if (fboundp 'move-end-of-line) 'move-end-of-line 'end-of-line))))))
     (org-no-warnings (and (featurep 'xemacs) (setq zmacs-region-stays t)))))
     (org-no-warnings (and (featurep 'xemacs) (setq zmacs-region-stays t)))))
 
 
 (define-key org-mode-map "\C-a" 'org-beginning-of-line)
 (define-key org-mode-map "\C-a" 'org-beginning-of-line)

+ 1 - 1
testing/lisp/test-org.el

@@ -506,7 +506,7 @@ http://article.gmane.org/gmane.emacs.orgmode/21459/"
    (org-test-with-temp-text "#+BEGIN_CENTER\nContents\n#+END_CENTER"
    (org-test-with-temp-text "#+BEGIN_CENTER\nContents\n#+END_CENTER"
      (progn (org-hide-block-toggle)
      (progn (org-hide-block-toggle)
 	    (org-end-of-line)
 	    (org-end-of-line)
-	    (eolp)))))
+	    (eobp)))))
 
 
 (ert-deftest test-org/forward-element ()
 (ert-deftest test-org/forward-element ()
   "Test `org-forward-element' specifications."
   "Test `org-forward-element' specifications."