Update of /project/mcclim/cvsroot/mcclim/Drei In directory clnet:/tmp/cvs-serv23422/Drei
Modified Files: lr-syntax.lisp Log Message: Don't use the drawing options of the stack-top in Drei.
This solves a problem where pretty much the entire buffer would be drawn a beautiful shade of bright red when a syntax error occured. I think the Right Thing is to make Lisp syntax a little more intelligent with respect to syntax errors.
--- /project/mcclim/cvsroot/mcclim/Drei/lr-syntax.lisp 2008/01/03 21:11:40 1.8 +++ /project/mcclim/cvsroot/mcclim/Drei/lr-syntax.lisp 2008/01/04 14:12:48 1.9 @@ -91,6 +91,10 @@ (preceding-parse-tree :initform nil :reader preceding-parse-tree) (parser-state :initform nil :initarg :parser-state :reader parser-state)))
+(defmethod print-object ((object parser-symbol) stream) + (print-unreadable-object (object stream :type t :identity t) + (format stream "~s ~s" (start-offset object) (end-offset object)))) + (defclass literal-object-mixin () () (:documentation "Mixin for parser symbols representing literal (non-character) objects in the buffer.")) @@ -118,10 +122,6 @@
(defclass lexeme (parser-symbol) ())
-(defmethod print-object ((lexeme lexeme) stream) - (print-unreadable-object (lexeme stream :type t :identity t) - (format stream "~s ~s" (start-offset lexeme) (end-offset lexeme)))) - (defclass nonterminal (parser-symbol) ())
(defmethod initialize-instance :after ((parser-symbol nonterminal) &rest args) @@ -467,8 +467,8 @@
(defun get-drawing-options (highlighting-rules syntax parse-symbol) "Get the drawing options with which `parse-symbol' should be -drawn. If `parse-symbol' is NIL, return NIL." - (when parse-symbol +drawn. If `parse-symbol' or the stack-top of syntax, return NIL." + (when (and parse-symbol (not (eq (stack-top syntax) parse-symbol))) (funcall highlighting-rules syntax parse-symbol)))
(defstruct (pump-state @@ -535,7 +535,7 @@ (finish (line-end-offset line) start-symbol)) ((and (typep symbol 'literal-object-mixin)) (finish (start-offset symbol) symbol - (or (get-drawing-options highlighting-rules syntax symbol) + (or symbol-drawing-options (make-drawing-options :function (object-drawer))))) ((and (> (start-offset symbol) offset) (not (drawing-options-equal (or symbol-drawing-options