Browse Source

org.el: New function `org-at-drawer-p'.

* org.el (org-at-drawer-p): New function.
(org-end-of-line): Use it.

This function make the behavior of C-e in folded drawers consistent
with C-e in folded subtrees: in this case, point moves to the last
invisible characters of the line, not to the last character.
Bastien Guerry 14 years ago
parent
commit
356611bf07
1 changed files with 10 additions and 1 deletions
  1. 10 1
      lisp/org.el

+ 10 - 1
lisp/org.el

@@ -20426,7 +20426,7 @@ beyond the end of the headline."
 		   org-special-ctrl-a/e)))
 		   org-special-ctrl-a/e)))
     (cond
     (cond
      ((or (not special) arg
      ((or (not special) arg
-	  (not (or (org-on-heading-p) (org-at-item-p))))
+	  (not (or (org-on-heading-p) (org-at-item-p) (org-at-drawer-p))))
       (call-interactively
       (call-interactively
        (cond ((org-bound-and-true-p line-move-visual) 'end-of-visual-line)
        (cond ((org-bound-and-true-p line-move-visual) 'end-of-visual-line)
 	     ((fboundp 'move-end-of-line) 'move-end-of-line)
 	     ((fboundp 'move-end-of-line) 'move-end-of-line)
@@ -20446,6 +20446,9 @@ beyond the end of the headline."
 	  (call-interactively (if (fboundp 'move-end-of-line)
 	  (call-interactively (if (fboundp 'move-end-of-line)
 				  'move-end-of-line
 				  'move-end-of-line
 				'end-of-line)))))
 				'end-of-line)))))
+     ((org-at-drawer-p)
+      (move-end-of-line 1)
+      (when (overlays-at (1- (point))) (backward-char 1)))
      ;; At an item: Move before any hidden text.
      ;; At an item: Move before any hidden text.
      (t (call-interactively 'end-of-line)))
      (t (call-interactively 'end-of-line)))
     (org-no-warnings
     (org-no-warnings
@@ -20641,6 +20644,12 @@ This version does not only check the character property, but also
 (defun org-at-heading-p (&optional ignored)
 (defun org-at-heading-p (&optional ignored)
   (outline-on-heading-p t))
   (outline-on-heading-p t))
 
 
+(defun org-at-drawer-p nil
+  "Whether point is at a drawer."
+  (save-excursion
+    (move-beginning-of-line 1)
+    (looking-at org-drawer-regexp)))
+
 (defun org-point-at-end-of-empty-headline ()
 (defun org-point-at-end-of-empty-headline ()
   "If point is at the end of an empty headline, return t, else nil.
   "If point is at the end of an empty headline, return t, else nil.
 If the heading only contains a TODO keyword, it is still still considered
 If the heading only contains a TODO keyword, it is still still considered