add assertion routine to check for errors
File modified: lisp/ivan/nterm.el
Change280 at Thu Apr 22 18:59:44 2010 +0200 by Ivan Kanis <squeeze@koi>
diff -r 0bfd6609b253 -r 04b11cd7426e lisp/ivan/nterm.el --- a/lisp/ivan/nterm.el Thu Apr 22 15:32:15 2010 +0200 +++ b/lisp/ivan/nterm.el Thu Apr 22 18:59:44 2010 +0200 @@ -126,7 +126,7 @@ "Map single width character to unicode double width equivalent.") ;;; Debugging -(defvar nterm-debug (make-bool-vector 5 nil) +(defvar nterm-debug (make-bool-vector 6 nil) "Debugging bool vector") (defvar nterm-debug-emulator 0) @@ -134,6 +134,7 @@ (defvar nterm-debug-cursor 2) (defvar nterm-debug-ansi 3) (defvar nterm-debug-vt52 4) +(defvar nterm-debug-assert 5) ;; (aset nterm-debug nterm-debug-emulator t) ;; (aset nterm-debug nterm-debug-emulator nil) ;; (aset nterm-debug nterm-debug-vt100 t) @@ -144,6 +145,8 @@ ;; (aset nterm-debug nterm-debug-ansi nil) ;; (aset nterm-debug nterm-debug-vt52 t) ;; (aset nterm-debug nterm-debug-vt52 nil) +;; (aset nterm-debug nterm-debug-assert t) +;; (aset nterm-debug nterm-debug-assert nil) (defvar nterm-record-enable nil "Enable recording") @@ -219,6 +222,14 @@ (let ((collect-number (string-to-number number))) (if (eq collect-number 0) default collect-number))) +(defun nterm-assert () + "Check integrity of the emulator" + (interactive) + (message "I am asserting") + (let ((line (count-lines (point-min) (point-max)))) + (if (not (= line nterm-height)) + (error "Number of lines is %d but nterm-height is %d" + line nterm-height)))) (defun nterm-blank-screen (&optional char) "Blank screen and memory with CHAR. If char is not specified fill with space. @@ -315,7 +326,9 @@ (if (aref nterm-debug nterm-debug-emulator) (message "received 0x%x %c dispatch %S" emulate-char emulate-char emulate-dispatch)) - (funcall emulate-dispatch emulate-char)) + (funcall emulate-dispatch emulate-char) + (if (aref nterm-debug nterm-debug-assert) + (nterm-assert))) (if (aref nterm-debug nterm-debug-emulator) (message "received 0x%x not handled" emulate-char))))) (incf emulate-index)) @@ -909,7 +922,7 @@ (nterm-cursor-line-set line) (or length (progn - (setq length (1- (nterm-vt100-width))) + (setq length (nterm-vt100-width)) (nterm-cursor-col-set 0))) (let ((line-index 0)) (while (< line-index length)