nterm don't reset attributes with EL

 

File modified: lisp/nterm/nterm.el

Change345 at Thu Aug 19 20:22:29 2010 +0200 by Ivan Kanis <ivan@tao>

diff -r e5bf71cd0e33 -r f1ad9447a287 lisp/nterm/nterm.el
--- a/lisp/nterm/nterm.el	Sun Aug 15 12:24:03 2010 +0200
+++ b/lisp/nterm/nterm.el	Thu Aug 19 20:22:29 2010 +0200
@@ -916,13 +916,14 @@
   "Bell."
   (ding))
 
-(defun nterm-vt100-blank-line (bl-line bl-start bl-end)
-  "Blank LINE from START to END.
+(defun nterm-vt100-blank-line (bl-line bl-start bl-end bl-reset)
+  "Blank LINE from START to END, RESET line attribute.
 If END is nil go to the end of the term. Reset all attributes
-on the line."
+on the line. If RESET is non nil reset line attribute."
   (if (not bl-line)
       (setq bl-line (nterm-cursor-line-get)))
-  (nterm-mem-line-reset bl-line)
+  (if bl-reset
+      (nterm-mem-line-reset bl-line))
   (let ((bl-index bl-start))
     (while (< bl-index bl-end)
       (aset (cdr (assq 'char (nth bl-line nterm-memory))) bl-index ?\s)
@@ -1336,11 +1337,11 @@
     (while (< ed-index nterm-height)
       (cond
        ((and (< ed-index ed-line) (not (eq ed-number 0)))
-        (nterm-vt100-blank-line ed-index 0 nterm-width))
+        (nterm-vt100-blank-line ed-index 0 nterm-width t))
        ((= ed-index ed-line)
-        (nterm-vt100-el-ex ed-number))
+        (nterm-vt100-el-ex ed-number t))
        ((and (> ed-index ed-line) (not (eq ed-number 1)))
-        (nterm-vt100-blank-line ed-index 0 nterm-width)))
+        (nterm-vt100-blank-line ed-index 0 nterm-width t)))
       (incf ed-index))
     (nterm-vt100-escape-end char)))
 
@@ -1348,18 +1349,22 @@
   "EL -- Erase In Line - host to vt100."
   (if nterm-debug-vt100
       (message "EL par=%d" el-number))
-  (nterm-vt100-el-ex (car (nterm-argument-to-list 1 0)))
+  (nterm-vt100-el-ex (car (nterm-argument-to-list 1 0)) nil)
   (nterm-vt100-escape-end char))
 
-(defun nterm-vt100-el-ex (el-ex-number)
-  "Erase line, used by ED and EL."
+(defun nterm-vt100-el-ex (el-ex-number el-ex-reset)
+  "Erase line, used by ED and EL.
+Erase part line depending on NUMBER. If RESET is t reset line
+attribute."
   (cond
    ((eq el-ex-number 0)
-    (nterm-vt100-blank-line nil (nterm-cursor-col-get) nterm-width))
+    (nterm-vt100-blank-line
+     nil (nterm-cursor-col-get) nterm-width nil))
    ((eq el-ex-number 1)
-    (nterm-vt100-blank-line nil 0 (1+ (nterm-cursor-col-get))))
-   (t ;; 2 and everything else
-    (nterm-vt100-blank-line nil 0 nterm-width))))
+    (nterm-vt100-blank-line
+     nil 0 (1+ (nterm-cursor-col-get)) nil))
+   ((eq el-ex-number 2)
+    (nterm-vt100-blank-line nil 0 nterm-width el-ex-reset))))
 
 (defun nterm-vt100-escape-start (char)
   "Enter escape mode"


back