anchor.diff:                                     :fifo fifo
                                      :window window
                                      :frame frame
  +                                   :font font
                                      :display-pane display-pane
                                      :input-pane input-pane)))
             (setf (slot-value input-pane '%irc) irc)
  -          ;; Line seperating display and input panes.
  -          (mezzano.gui:bitset :set
  -                              (- (mezzano.gui.compositor:width window)
  -                                   (nth-value 0 (mezzano.gui.widgets:frame-size frame))
  -                                   (nth-value 1 (mezzano.gui.widgets:frame-size frame)))
  -                              1
  -                              (mezzano.gui:make-colour 0.5 0.5 0.5)
  -                              framebuffer
  -                              (nth-value 0 (mezzano.gui.widgets:frame-size frame))
  -                              (+ (nth-value 2 (mezzano.gui.widgets:frame-size frame))
  -                                 (- (mezzano.gui.compositor:height window)
  -                                    (nth-value 2 (mezzano.gui.widgets:frame-size frame))
  -                                    (nth-value 3 (mezzano.gui.widgets:frame-size frame))
  -                                    (mezzano.gui.font:line-height font)
  -                                    1)))
  +          (draw-seperating-line irc)
             (mezzano.gui.widgets:draw-frame frame)
             (mezzano.gui.compositor:damage-window window
                                                   0 0
  
positive.code:   ((%fifo :initarg :fifo :reader fifo)
     (%window :initarg :window :reader window)
     (%frame :initarg :frame :reader frame)
     (%display-pane :initarg :display-pane :reader display-pane)
     (%input-pane :initarg :input-pane :reader input-pane)
     (%current-channel :initarg :current-channel :accessor current-channel)
  
negative.code:                (format (display-pane irc) "~&[~A] ~D ~A" prefix command parameters))
                (t (format (display-pane irc) "~&~A" line)))))))
  
  (defmethod dispatch-event (app (event mezzano.gui.compositor:resize-request-event))
    (let ((old-width (mezzano.gui.compositor:width (window app)))
          (old-height (mezzano.gui.compositor:height (window app)))
          (new-width (max 100 (mezzano.gui.compositor:width event)))
          (new-height (max 100 (mezzano.gui.compositor:height event))))
      (when (or (not (eql old-width new-width))
                (not (eql old-height new-height)))
        (let ((new-framebuffer (mezzano.gui:make-surface
                                new-width new-height)))
          (mezzano.gui.widgets:resize-frame (frame app) new-framebuffer)
          (mezzano.gui.compositor:resize-window
           (window app) new-framebuffer
           :origin (mezzano.gui.compositor:resize-origin event))))))
  
  (defmethod dispatch-event (app (event mezzano.gui.compositor:resize-event))
    (let* ((window (window app))
           (fb (mezzano.gui.compositor:window-buffer window))
           (frame (frame app))
           (font (font app))
           (new-width (mezzano.gui:surface-width fb))
           (new-height (mezzano.gui:surface-height fb)))
      (draw-seperating-line app)
      (mezzano.gui.widgets:resize-text-widget (display-pane app)
                                              fb
                                              (nth-value 0 (mezzano.gui.widgets:frame-size frame))
                                              (nth-value 2 (mezzano.gui.widgets:frame-size frame))
                                              (- (mezzano.gui.compositor:width window)
                                                 (nth-value 0 (mezzano.gui.widgets:frame-size frame))
                                                 (nth-value 1 (mezzano.gui.widgets:frame-size frame)))
                                              (- (mezzano.gui.compositor:height window)
                                                 (nth-value 2 (mezzano.gui.widgets:frame-size frame))
                                                 (nth-value 3 (mezzano.gui.widgets:frame-size frame))
                                                 1
                                                 (mezzano.gui.font:line-height font)))
      (mezzano.gui.widgets:resize-text-widget (input-pane app)
                                              fb
                                              (nth-value 0 (mezzano.gui.widgets:frame-size frame))
                                              (+ (nth-value 2 (mezzano.gui.widgets:frame-size frame))
                                                 (- (mezzano.gui.compositor:height window)
                                                    (nth-value 2 (mezzano.gui.widgets:frame-size frame))
                                                    (nth-value 3 (mezzano.gui.widgets:frame-size frame))
                                                    (mezzano.gui.font:line-height font)))
                                              (- (mezzano.gui.compositor:width window)
                                                 (nth-value 0 (mezzano.gui.widgets:frame-size frame))
                                                 (nth-value 1 (mezzano.gui.widgets:frame-size frame)))
                                              (mezzano.gui.font:line-height font)))
    (reset-input app))
  
  (defun draw-seperating-line (irc)
    (let* ((window (window irc))
           (frame (frame irc))
           (font (font irc))
           (framebuffer (mezzano.gui.compositor:window-buffer window)))
      ;; Line seperating display and input panes.
      (mezzano.gui:bitset :set
                          (- (mezzano.gui.compositor:width window)
                             (nth-value 0 (mezzano.gui.widgets:frame-size frame))
                             (nth-value 1 (mezzano.gui.widgets:frame-size frame)))
                          1
                          (mezzano.gui:make-colour 0.5 0.5 0.5)
                          framebuffer
                          (nth-value 0 (mezzano.gui.widgets:frame-size frame))
                          (+ (nth-value 2 (mezzano.gui.widgets:frame-size frame))
                             (- (mezzano.gui.compositor:height window)
                                (nth-value 2 (mezzano.gui.widgets:frame-size frame))
                                (nth-value 3 (mezzano.gui.widgets:frame-size frame))
                                (mezzano.gui.font:line-height font)
                                1)))))
  
  (defun irc-main ()
    (catch 'quit
      (let ((font (mezzano.gui.font:open-font
  