# HG changeset patch # User Dan Nicolaescu # Date 1132074802 0 # Node ID a723e6ef69a44ef19308ea6f15846006ec07eaec # Parent 0a46c5ea06d080e7f2f43b7e964fbc5dd83f9651 (term-termcap-format): Fix typos. (term-down): Fix the negative argument case. diff -r 0a46c5ea06d0 -r a723e6ef69a4 lisp/ChangeLog --- a/lisp/ChangeLog Tue Nov 15 13:53:45 2005 +0000 +++ b/lisp/ChangeLog Tue Nov 15 17:13:22 2005 +0000 @@ -1,3 +1,8 @@ +2005-11-15 Dan Nicolaescu + + * term.el (term-termcap-format): Fix typos. + (term-down): Fix the negative argument case. + 2005-11-16 Nick Roberts * progmodes/gdb-ui.el: Remove face-alias left over from change on diff -r 0a46c5ea06d0 -r a723e6ef69a4 lisp/term.el --- a/lisp/term.el Tue Nov 15 13:53:45 2005 +0000 +++ b/lisp/term.el Tue Nov 15 17:13:22 2005 +0000 @@ -1406,8 +1406,8 @@ :UP=\\E[%%dA:DO=\\E[%%dB:LE=\\E[%%dD:RI=\\E[%%dC\ :kl=\\EOD:kd=\\EOB:kr=\\EOC:ku=\\EOA:kN=\\E[6~:kP=\\E[5~:@7=\\E[4~:kh=\\E[1~\ :mk=\\E[8m:cb=\\E[1K:op=\\E[39;49m:Co#8:pa#64:AB=\\E[4%%dm:AF=\\E[3%%dm:cr=^M\ -:bl=^G:do=^J:le=^H:ta=^I:se=\E[27m:ue=\E24m\ -:kb=^?:kD=^[[3~:sc=\E7:rc=\E8:r1=\Ec:" +:bl=^G:do=^J:le=^H:ta=^I:se=\\E[27m:ue=\\E24m\ +:kb=^?:kD=^[[3~:sc=\\E7:rc=\\E8:r1=\\Ec:" ;;; : -undefine ic ;;; don't define :te=\\E[2J\\E[?47l\\E8:ti=\\E7\\E[?47h\ "termcap capabilities supported") @@ -3615,21 +3615,32 @@ (defun term-down (down &optional check-for-scroll) "Move down DOWN screen lines vertically." (let ((start-column (term-horizontal-column))) - (if (and check-for-scroll (or term-scroll-with-delete term-pager-count)) - (setq down (term-handle-scroll down))) - (term-adjust-current-row-cache down) - (if (or (/= (point) (point-max)) (< down 0)) - (setq down (- down (term-vertical-motion down)))) - ;; Extend buffer with extra blank lines if needed. + (when (and check-for-scroll (or term-scroll-with-delete term-pager-count)) + (setq down (term-handle-scroll down))) + (unless (and (= term-current-row 0) (< down 0)) + (term-adjust-current-row-cache down) + (when (or (/= (point) (point-max)) (< down 0)) + (setq down (- down (term-vertical-motion down))))) (cond ((> down 0) + ;; Extend buffer with extra blank lines if needed. (term-insert-char ?\n down) (setq term-current-column 0) (setq term-start-line-column 0)) (t - (setq term-current-column nil) + (when (= term-current-row 0) + ;; Insert lines if at the beginning. + (save-excursion (term-insert-char ?\n (- down))) + (save-excursion + (let (p) + ;; Delete lines from the end. + (forward-line term-height) + (setq p (point)) + (forward-line (- down)) + (delete-region p (point))))) + (setq term-current-column 0) (setq term-start-line-column (current-column)))) - (if start-column - (term-move-columns start-column)))) + (when start-column + (term-move-columns start-column)))) ;; Assuming point is at the beginning of a screen line, ;; if the line above point wraps around, add a ?\n to undo the wrapping. @@ -3695,7 +3706,7 @@ ;;; Insert COUNT spaces after point, but do not change any of ;;; following screen lines. Hence we may have to delete characters -;;; at teh end of this screen line to make room. +;;; at the end of this screen line to make room. (defun term-insert-spaces (count) (let ((save-point (point)) (save-eol) (point-at-eol))