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:           move-to-line))
  
  (defun buffers-start (buffer)
    (buffer-start-point buffer))
  
  (defun buffers-end (buffer)
    (buffer-end-point buffer))
  
  (defun first-line-p (point)
    (null (line-prev (point-line point))))
  
  (defun last-line-p (point)
    (null (line-next (point-line point))))
  
  (defun start-line-p (point)
    (zerop (point-charpos point)))
  
  (defun end-line-p (point)
    (= (point-charpos point)
       (line-length (point-line point))))
  
  (defun start-buffer-p (point)
    (and (first-line-p point)
         (start-line-p point)))
  
  (defun end-buffer-p (point)
    (and (last-line-p point)
         (end-line-p point)))
  
  (defun same-line-p (point1 point2)
    (assert (eq (point-buffer point1)
                (point-buffer point2)))
    (eq (point-line point1) (point-line point2)))
  
  (defun line-string (point)
    (line-str (point-line point)))
  
  (defun %move-to-position (point line charpos)
  
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))
  