anchor.diff:     (%frame :initarg :frame :accessor frame)
      (%buffer-list :initarg :buffer-list :accessor buffer-list)
      (%buffer :initarg :buffer :accessor current-buffer)
  +   (%last-buffer :initarg :last-buffer :accessor last-buffer)
      (%font :initarg :font :reader font)
      (%foreground-colour :initarg :foreground-colour :accessor foreground-colour)
      (%background-colour :initarg :background-colour :accessor background-colour)
  
positive.code:                    (make-mark (last-line buffer) (line-length (last-line buffer))))
      (dolist (b (buffer-list *editor*))
        (insert buffer (buffer-property b 'name))
        (insert buffer #\Newline))))
  
  (defun switch-to-buffer-command ()
    (switch-to-buffer (get-buffer-create (read-from-minibuffer "Buffer: "))))
  
  (defun kill-buffer-command ()
    (let* ((name (read-from-minibuffer (format nil "Buffer (default ~A): " (buffer-property (current-buffer *editor*) 'name))))
  
negative.code:   (values))
  
  (defun move-mark (mark &optional (n 1))
    "Move MARK forward by N character. Move backwards if N is negative.
  Returns false when the mark reaches the start or end of the buffer, true otherwise."
    (cond ((minusp n)
           (setf n (- n))
           (dotimes (i n)
             (let ((current-line (mark-line mark)))
               (cond ((zerop (mark-charpos mark))
                      (cond ((previous-line current-line)
                             ;; At start of line.
                             (setf (mark-line mark) (previous-line current-line)
                                   (mark-charpos mark) (line-length (previous-line current-line))))
                            (t ;; At start of buffer.
                             (return-from move-mark nil))))
                     (t ;; Moving within a line.
                      (decf (mark-charpos mark)))))))
          (t
           (dotimes (i n)
             (let ((current-line (mark-line mark)))
               (cond ((eql (line-length current-line) (mark-charpos mark))
                      (cond ((next-line current-line)
                             ;; At end of line.
                             (setf (mark-line mark) (next-line current-line)
                                   (mark-charpos mark) 0))
                            (t (return-from move-mark nil))))
                     (t ;; Moving within a line.
                      (incf (mark-charpos mark))))))))
    t)
  
  (defun move-char (buffer &optional (n 1))
    "Move point forward by N characters. Move backwards if N is negative."
  