瀏覽代碼

Merge branch 'maint'

Nicolas Goaziou 12 年之前
父節點
當前提交
854ddf635c
共有 1 個文件被更改,包括 9 次插入14 次删除
  1. 9 14
      lisp/org.el

+ 9 - 14
lisp/org.el

@@ -21637,10 +21637,12 @@ 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)))
-    (if (or (not special) arg)
-	(call-interactively
-	 (if (fboundp 'move-end-of-line) 'move-end-of-line 'end-of-line))
+		   org-special-ctrl-a/e))
+	(move-fun (cond ((org-bound-and-true-p visual-line-mode)
+			 'end-of-visual-line)
+			((fboundp 'move-end-of-line) 'move-end-of-line)
+			(t 'end-of-line))))
+    (if (or (not special) arg) (call-interactively move-fun)
       (let* ((element (save-excursion (beginning-of-line)
       (let* ((element (save-excursion (beginning-of-line)
 				      (org-element-at-point)))
 				      (org-element-at-point)))
 	     (type (org-element-type element)))
 	     (type (org-element-type element)))
@@ -21657,19 +21659,12 @@ the cursor is already beyond the end of the headline."
 			  (not (eq this-command last-command)))
 			  (not (eq this-command last-command)))
 		      (goto-char (match-end 0))
 		      (goto-char (match-end 0))
 		    (goto-char (match-beginning 1))))
 		    (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))
+	      (call-interactively move-fun))))
+	 ((org-element-property :hiddenp element)
 	  ;; If element is hidden, `move-end-of-line' would put point
 	  ;; If element is hidden, `move-end-of-line' would put point
 	  ;; after it.  Use `end-of-line' to stay on current line.
 	  ;; after it.  Use `end-of-line' to stay on current line.
 	  (call-interactively 'end-of-line))
 	  (call-interactively 'end-of-line))
-	 (t
-	  (call-interactively
-	   (if (fboundp 'move-end-of-line) 'move-end-of-line 'end-of-line))))))
+	 (t (call-interactively move-fun)))))
     (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)