Browse Source

Make sure narrowing to subtree does not swallow headings

Jan Bcker writes:

> Consider the following situation:
>
> * A
>  Some text.
> * B
>
> - Place the cursor on A, press C-x n w (org-narrow-to-subtree).
> - Go to the very end of the buffer and insert "xyz".
> - C-x n w (widen).
>
> You end up with:
>
> * A
>  Some Text
> xyz* B
Carsten Dominik 15 years ago
parent
commit
4fc5ac29c6
2 changed files with 12 additions and 2 deletions
  1. 6 0
      lisp/ChangeLog
  2. 6 2
      lisp/org.el

+ 6 - 0
lisp/ChangeLog

@@ -1,3 +1,9 @@
+2010-01-18  Jan Böcker  <jan.boecker@jboecker.de>
+
+	* org.el (org-narrow-to-subtree): Position the end of the narrowed
+	region before the line with the next heading, to prevent the user
+	from prepending text to the next headline.
+
 2010-01-20  Stephen Eglen  <stephen@gnu.org>
 
 	* org-agenda.el (org-get-time-of-day): Use

+ 6 - 2
lisp/org.el

@@ -6023,7 +6023,9 @@ frame is not changed."
 	  (outline-up-heading 1 t)))
       (setq beg (point)
 	    heading (org-get-heading))
-      (org-end-of-subtree t t) (setq end (point)))
+      (org-end-of-subtree t t)
+      (if (org-on-heading-p) (backward-char 1))
+      (setq end (point)))
     (if (and (buffer-live-p org-last-indirect-buffer)
 	     (not (eq org-indirect-buffer-display 'new-frame))
 	     (not arg))
@@ -6830,7 +6832,9 @@ If yes, remember the marker and the distance to BEG."
     (save-match-data
       (narrow-to-region
        (progn (org-back-to-heading t) (point))
-       (progn (org-end-of-subtree t t) (point))))))
+       (progn (org-end-of-subtree t t)
+	      (if (org-on-heading-p) (backward-char 1))
+	      (point))))))
 
 (defun org-clone-subtree-with-time-shift (n &optional shift)
   "Clone the task (subtree) at point N times.