anchor.diff:    (forward-word-end (current-point) n t))
   
   (define-command vi-move-to-beginning-of-line () ()
  -  (move-to-beginning-of-line))
  +  (goto-bol (current-point)))
   
   (define-command vi-move-to-end-of-line () ()
  -  (move-to-end-of-line))
  +  (goto-eol (current-point)))
   
   (define-command vi-back-to-indentation () ()
     (back-to-indentation-command))
   
   (define-command vi-delete-next-char (&optional (n 1)) ("p")
  -  (delete-next-char n))
  +  (unless (empty-line (current-point))
  +    (delete-next-char n)
  +    (fall-within-line (current-point))))
   
   (define-command vi-delete-previous-char (&optional (n 1)) ("p")
  -  (delete-previous-char n))
  +  (unless (bolp (current-point))
  +    (delete-previous-char n)))
  
positive.code:            :vi-delete-previous-char))
  (in-package :lem-vi-mode.commands)
  
  (defun eolp (point)
    (= (point-charpos point)
       (1- (length (line-string point)))))
  
  (define-command vi-move-to-beginning-of-line/universal-argument-0 () ()
    (if (mode-active-p (current-buffer) 'universal-argument)
  
negative.code: 
  (define-command vi-forward-char (&optional (n 1)) ("p")
    (let ((p (current-point)))
      (dotimes (_ n)
        (if (eolp p)
            (return)
            (character-offset p 1)))))
  
  (define-command vi-backward-char (&optional (n 1)) ("p")
    (let ((p (current-point)))
      (dotimes (_ n)
        (if (bolp p)
            (return)
            (character-offset p -1)))))
  
  (defun fall-within-line (point)
    (when (eolp point)
      (goto-eol point)))
  
  (define-command vi-next-line (&optional (n 1)) ("p")
    (next-line n)
    (fall-within-line (current-point)))
  
  (define-command vi-previous-line (&optional (n 1)) ("p")
    (previous-line n)
    (fall-within-line (current-point)))
  
  (define-command vi-forward-word-begin (&optional (n 1)) ("p")
    (forward-word-begin (current-point) n nil))
  