diff --git a/editor/editor.lisp b/editor/editor.lisp index a44fed0..88903d2 100644 --- a/editor/editor.lisp +++ b/editor/editor.lisp @@ -384,7 +384,20 @@ serial connection the editor normally runs under.") (replace (line-content left-line) (line-content right-line) :start1 start) (delete-line right-line) - (redisplay-view-from-line (current-view *editor*) left-line) + (let ((view (current-view *editor*))) + (update-view-bottom view) + (cond ((and (line-in-view left-line view) + (< (1+ (view-line-number view left-line)) + (height view))) + (redisplay-line left-line) + (set-scrolling-region (1+ (view-line-number view left-line)) + (height view)) + (scroll-screen-up) + (set-scrolling-region) + (unless (null (bottom-line view)) + (redisplay-view-from-line view (bottom-line view)))) + (t + (redisplay-view-from-line (current-view *editor*) left-line)))) (setf (cursor-line (cursor *editor*)) left-line (cursor-column (cursor *editor*)) start) (update-buffer-cursor (current-buffer *editor*))))))