diff options
author | Dan Nicolaescu <dann@ics.uci.edu> | 2005-11-15 17:13:22 +0000 |
---|---|---|
committer | Dan Nicolaescu <dann@ics.uci.edu> | 2005-11-15 17:13:22 +0000 |
commit | 59c560f76f2df0444d8682ac286aac496d1906d0 (patch) | |
tree | c1ba4ec318f815dbe35d33902550171260de2f37 /lisp/term.el | |
parent | 28a099a4aa5b85217d0b5a5c9a725c96d162e702 (diff) | |
download | emacs-59c560f76f2df0444d8682ac286aac496d1906d0.tar.gz |
(term-termcap-format): Fix typos.
(term-down): Fix the negative argument case.
Diffstat (limited to 'lisp/term.el')
-rw-r--r-- | lisp/term.el | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/lisp/term.el b/lisp/term.el index 4d319c253ae..14d4fb9a5ab 100644 --- a/lisp/term.el +++ b/lisp/term.el @@ -1406,8 +1406,8 @@ The main purpose is to get rid of the local keymap." :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 @@ all pending output has been dealt with.")) (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 @@ Should only be called when point is at the start of a screen line." ;;; 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)) |