anchor.diff:             (decf n (1+ charpos))))))
   
   (defun character-offset (point n)
  +  @lang(:jp "`point`を`n`が正の数なら後に、負の数なら前に移動し、移動後の`point`を返します。
  +`n`文字先がバッファの範囲外なら`point`の位置はそのままでNILを返します。")
     (%character-offset point n
                        (lambda (line charpos)
                          (%move-to-position point line charpos)
  
positive.code:   point)
  
  (defun move-point (point new-point)
    (%move-to-position point
                       (point-line new-point)
                       (point-charpos new-point)))
  
  (defun line-start (point)
    (setf (point-charpos point) 0)
    point)
  
  (defun line-end (point)
    (setf (point-charpos point)
          (line-length (point-line point)))
    point)
  
  (defun buffer-start (point)
    (move-point point (buffers-start (point-buffer point))))
  
  (defun buffer-end (point)
    (move-point point (buffers-end (point-buffer point))))
  
  (defun line-offset (point n &optional (charpos 0))
    (cond
      ((plusp n)
       (do ((n n (1- n))
  
negative.code:                        point)))
  
  (defun character-at (point &optional (offset 0))
    @lang(:jp "`point`から`offset`ずらした位置の文字を返します。
  バッファの範囲外ならNILを返します。")
    (%character-offset point offset
                       (lambda (line charpos)
                         (line-char line charpos))
  