Mercurial > emacs
comparison lisp/term.el @ 71351:30e91c99f01a
(term-handle-scroll, term-delete-lines)
(term-insert-lines): Fix off by one errors.
author | Dan Nicolaescu <dann@ics.uci.edu> |
---|---|
date | Thu, 15 Jun 2006 22:58:10 +0000 |
parents | 1a9194ab1577 |
children | fc1ff7769630 138027c8c982 |
comparison
equal
deleted
inserted
replaced
71350:0844ec8948e9 | 71351:30e91c99f01a |
---|---|
3611 (cond (term-scroll-with-delete | 3611 (cond (term-scroll-with-delete |
3612 (if (< down 0) | 3612 (if (< down 0) |
3613 (progn | 3613 (progn |
3614 ;; Delete scroll-needed lines at term-scroll-end, | 3614 ;; Delete scroll-needed lines at term-scroll-end, |
3615 ;; then insert scroll-needed lines. | 3615 ;; then insert scroll-needed lines. |
3616 (term-vertical-motion (1- term-scroll-end)) | 3616 (term-vertical-motion term-scroll-end) |
3617 (end-of-line) | 3617 (end-of-line) |
3618 (setq save-top (point)) | 3618 (setq save-top (point)) |
3619 (term-vertical-motion scroll-needed) | 3619 (term-vertical-motion scroll-needed) |
3620 (end-of-line) | 3620 (end-of-line) |
3621 (delete-region save-top (point)) | 3621 (delete-region save-top (point)) |
3765 (defun term-delete-lines (lines) | 3765 (defun term-delete-lines (lines) |
3766 (let ((start (point)) | 3766 (let ((start (point)) |
3767 (save-current-column term-current-column) | 3767 (save-current-column term-current-column) |
3768 (save-start-line-column term-start-line-column) | 3768 (save-start-line-column term-start-line-column) |
3769 (save-current-row (term-current-row))) | 3769 (save-current-row (term-current-row))) |
3770 (when (>= (+ save-current-row lines) term-scroll-end) | 3770 ;; The number of inserted lines shouldn't exceed the scroll region end. |
3771 (setq lines (- lines (- (+ save-current-row lines) term-scroll-end)))) | 3771 (when (> (+ save-current-row lines) (1+ term-scroll-end)) |
3772 (setq lines (- lines (- (+ save-current-row lines) (1+ term-scroll-end))))) | |
3772 (term-down lines) | 3773 (term-down lines) |
3773 (delete-region start (point)) | 3774 (delete-region start (point)) |
3774 (term-down (- term-scroll-end save-current-row lines)) | 3775 (term-down (- (1+ term-scroll-end) save-current-row lines)) |
3775 (term-insert-char ?\n lines) | 3776 (term-insert-char ?\n lines) |
3776 (setq term-current-column save-current-column) | 3777 (setq term-current-column save-current-column) |
3777 (setq term-start-line-column save-start-line-column) | 3778 (setq term-start-line-column save-start-line-column) |
3778 (setq term-current-row save-current-row) | 3779 (setq term-current-row save-current-row) |
3779 (goto-char start))) | 3780 (goto-char start))) |
3790 (progn | 3791 (progn |
3791 (setq lines (- lines (- term-scroll-start save-current-row))) | 3792 (setq lines (- lines (- term-scroll-start save-current-row))) |
3792 (term-down (- term-scroll-start save-current-row)) | 3793 (term-down (- term-scroll-start save-current-row)) |
3793 (setq start (point))) | 3794 (setq start (point))) |
3794 ;; The number of inserted lines shouldn't exceed the scroll region end. | 3795 ;; The number of inserted lines shouldn't exceed the scroll region end. |
3795 (when (>= (+ save-current-row lines) term-scroll-end) | 3796 (when (> (+ save-current-row lines) (1+ term-scroll-end)) |
3796 (setq lines (- lines (- (+ save-current-row lines) term-scroll-end)))) | 3797 (setq lines (- lines (- (+ save-current-row lines)(1+ term-scroll-end))))) |
3797 (term-down (- term-scroll-end save-current-row lines))) | 3798 (term-down (- (1+ term-scroll-end) save-current-row lines))) |
3798 (setq start-deleted (point)) | 3799 (setq start-deleted (point)) |
3799 (term-down lines) | 3800 (term-down lines) |
3800 (delete-region start-deleted (point)) | 3801 (delete-region start-deleted (point)) |
3801 (goto-char start) | 3802 (goto-char start) |
3802 (setq term-current-column save-current-column) | 3803 (setq term-current-column save-current-column) |