anchor.diff:    (values))
   
   (defun move-mark (mark &optional (n 1))
  -  "Move MARK forward by N character. Move backwards if N is negative."
  +  "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))
  -                    ;; At start of line.
  -                    (when (previous-line current-line)
  -                      (setf (mark-line mark) (previous-line current-line)
  -                            (mark-charpos mark) (line-length (previous-line current-line)))))
  +                    (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))
  -                    ;; At end of line.
  -                    (when (next-line current-line)
  -                      (setf (mark-line mark) (next-line current-line)
  -                            (mark-charpos mark) 0)))
  +                    (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))))))))
  -  (values))
  +  t)
   
   (defun move-char (buffer &optional (n 1))
     "Move point forward by N characters. Move backwards if N is negative."
  
positive.code:   (set-key #\C-B 'backward-char-command key-map)
    (set-key #\C-N 'next-line-command key-map)
    (set-key #\C-P 'previous-line-command key-map)
    (set-key #\C-A 'move-beginning-of-line-command key-map)
    (set-key #\C-E 'move-end-of-line-command key-map)
    (set-key #\C-K 'kill-line-command key-map)
  
negative.code: (defun previous-line-command ()
    (move-line (current-buffer *editor*) -1))
  
  (defun forward-word-command ()
    (move-word (current-buffer *editor*)))
  
  (defun backward-word-command ()
    (move-word (current-buffer *editor*) -1))
  
  (defun move-beginning-of-line-command ()
    (move-beginning-of-line (current-buffer *editor*)))
  
  