Skip to content

Commit

Permalink
outline.el: Fix subtree movement.
Browse files Browse the repository at this point in the history
Fixes: debbugs:19102

Co-authored-by: Stefan Monnier <monnier@iro.umontreal.ca>
* outline.el (outline-move-subtree-down): Make sure we can move
forward to find the end of the subtree and the insertion point.
  • Loading branch information
Stephen Berman committed Nov 27, 2014
1 parent b66511f commit b3910f6
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 6 deletions.
7 changes: 7 additions & 0 deletions lisp/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
2014-11-27 Stephen Berman <stephen.berman@gmx.net>
Stefan Monnier <monnier@iro.umontreal.ca>

* outline.el (outline-move-subtree-down): Make sure we can move
forward to find the end of the subtree and the insertion point
(bug#19102).

2014-11-27 Leonard Randall <leonard.a.randall@gmail.com>

* textmodes/reftex-parse.el (reftex-using-biblatex-p): Make search
Expand Down
17 changes: 11 additions & 6 deletions lisp/outline.el
Original file line number Diff line number Diff line change
Expand Up @@ -649,27 +649,32 @@ the match data is set appropriately."
'outline-get-last-sibling))
(ins-point (make-marker))
(cnt (abs arg))
;; Make sure we can move forward to find the end of the
;; subtree and the insertion point.
(maybe-forward-char (lambda ()
(if (eq (char-after) ?\n) (forward-char 1)
(if (and (eobp) (not (bolp))) (insert "\n")))))
beg end folded)
;; Select the tree
;; Select the tree.
(outline-back-to-heading)
(setq beg (point))
(save-match-data
(save-excursion (outline-end-of-heading)
(setq folded (outline-invisible-p)))
(outline-end-of-subtree))
(if (= (char-after) ?\n) (forward-char 1))
(funcall maybe-forward-char)
(setq end (point))
;; Find insertion point, with error handling
;; Find insertion point, with error handling.
(goto-char beg)
(while (> cnt 0)
(or (funcall movfunc)
(progn (goto-char beg)
(error "Cannot move past superior level")))
(user-error "Cannot move past superior level")))
(setq cnt (1- cnt)))
(if (> arg 0)
;; Moving forward - still need to move over subtree
;; Moving forward - still need to move over subtree.
(progn (outline-end-of-subtree)
(if (= (char-after) ?\n) (forward-char 1))))
(funcall maybe-forward-char)))
(move-marker ins-point (point))
(insert (delete-and-extract-region beg end))
(goto-char ins-point)
Expand Down

0 comments on commit b3910f6

Please sign in to comment.