anchor.diff:      (truncate (- (mezzanine.gui.compositor:height (window *editor*)) top bottom)
                 (mezzanine.gui.font:line-height (font *editor*)))))
   
  -(defun put-string (string pen y start end)
  +(defun put-string (string pen y start end &key bold invert underline)
     (multiple-value-bind (left right top bottom)
         (mezzanine.gui.widgets:frame-size (frame *editor*))
       (loop
  +       with pen-start = pen
          with font = (font *editor*)
  -       with y-pos = (+ (* y (mezzanine.gui.font:line-height font)) (mezzanine.gui.font:ascender font))
  +       with y-pos = (* y (mezzanine.gui.font:line-height font))
  +       with baseline = (+ y-pos (mezzanine.gui.font:ascender font))
          with fb = (mezzanine.gui.compositor:window-buffer (window *editor*))
          with colour = (foreground-colour *editor*)
  +       with line-height = (mezzanine.gui.font:line-height font)
  +       with foreground = (if invert
  +                             (background-colour *editor*)
  +                             (foreground-colour *editor*))
  +       with background = (if invert
  +                             (foreground-colour *editor*)
  +                             (background-colour *editor*))
          for ch-offset from start below end
          for glyph = (mezzanine.gui.font:character-to-glyph font (aref string ch-offset))
          for mask = (mezzanine.gui.font:glyph-mask glyph)
          for advance = (mezzanine.gui.font:glyph-advance glyph)
          do
  +         (when invert
  +           (mezzanine.gui:bitset line-height advance
  +                                 background
  +                                 fb (+ top y-pos) (+ left pen)))
            (mezzanine.gui:bitset-argb-xrgb-mask-8 (array-dimension mask 0) (array-dimension mask 1)
  -                                                colour
  +                                                foreground
                                                   mask 0 0
                                                   fb
  -                                                (+ top (- y-pos (mezzanine.gui.font:glyph-yoff glyph)))
  +                                                (+ top (- baseline (mezzanine.gui.font:glyph-yoff glyph)))
                                                   (+ left pen (mezzanine.gui.font:glyph-xoff glyph)))
  +         (when bold
  +           (mezzanine.gui:bitset-argb-xrgb-mask-8 (array-dimension mask 0) (array-dimension mask 1)
  +                                                  foreground
  +                                                  mask 0 0
  +                                                  fb
  +                                                  (+ top (- baseline (mezzanine.gui.font:glyph-yoff glyph)))
  +                                                  (+ left pen (mezzanine.gui.font:glyph-xoff glyph))))
  +         (when underline
  +           (mezzanine.gui:bitset-argb-xrgb 1 advance
  +                                           foreground
  +                                           fb (+ top baseline) (+ left pen)))
            (incf pen advance)
          finally (return pen))))
   
  
positive.code:     (cond ((next current-line)
             (setf (prev (next current-line)) new-line))
            (t (setf (last-line *editor*) new-line)))
      (setf (next current-line) new-line
            (fill-pointer (data current-line)) (point-offset *editor*))
      (setf (point-line *editor*) new-line
  
negative.code: (defclass line ()
    ((%next :initarg :next :accessor next)
     (%prev :initarg :prev :accessor prev)
     (%data :initarg :data :accessor data)
     (%version :initarg :version :accessor version))
    (:default-initargs :next nil
                       :prev nil
                       :data (make-array 50 :element-type 'character :adjustable t :fill-pointer 0)
                       :version 0))
  
  (defclass editor ()
    ((%fifo :initarg :fifo :reader fifo)
  