summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <n.goaziou@gmail.com>2012-11-05 16:39:06 (GMT)
committer Nicolas Goaziou <n.goaziou@gmail.com>2012-11-05 16:39:06 (GMT)
commitc20730be9aef8c5389aaaef08664515b0a749bd9 (patch)
treefed4bf4f3d769ecf7f57173e7614bf44daa71e71
parent209afadbf9f56041beeaa959f47db4fa584b132e (diff)
downloadorg-mode-c20730be9aef8c5389aaaef08664515b0a749bd9.zip
org-mode-c20730be9aef8c5389aaaef08664515b0a749bd9.tar.gz
Fix `org-end-of-line' behaviour in visual line mode
* lisp/org.el (org-end-of-line): When visual line mode is on, really move by visual lines. Small refactoring.
-rw-r--r--lisp/org.el23
1 files changed, 9 insertions, 14 deletions
diff --git a/lisp/org.el b/lisp/org.el
index e5ea0ae..fabfd5c 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -21331,10 +21331,12 @@ tags on the first attempt, and only move to after the tags when
the cursor is already beyond the end of the headline."
(interactive "P")
(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)
(org-element-at-point)))
(type (org-element-type element)))
@@ -21351,19 +21353,12 @@ the cursor is already beyond the end of the headline."
(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))
+ (call-interactively move-fun))))
+ ((org-element-property :hiddenp element)
;; 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))))))
+ (t (call-interactively move-fun)))))
(org-no-warnings (and (featurep 'xemacs) (setq zmacs-region-stays t)))))
(define-key org-mode-map "\C-a" 'org-beginning-of-line)