[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mhc:02278] mhc-guess/search-in-boundaryでエラー



mhc-goto-date()でエラーがまれに起こるので
ちょっと調べてみました。

直接の原因は
(search-backward-regexp REGEXP &optional BOUND NOERROR COUNT)
でNOERRORが指定してあっても
BOUNDがpointからみてあさっての方向に設定されていると
エラー "Invalid search bound (wrong side of point)"
が返ってくるということでした。

とりあえずガードするコードを入れてみましたが
単にmhc-goto-date()の作りがよくないのかもしれません。

 (defun mhc-guess/search-in-boundary (regexp ptr rel-boundary sameline)
   (let ((pmin (+ ptr rel-boundary)) (pmax (+ ptr rel-boundary)))
     (save-excursion
       (goto-char ptr)
       (if sameline
 	  (setq pmax (min pmax (save-excursion (end-of-line)       (point)))
 		pmin (max pmin (save-excursion (beginning-of-line) (point)))))
       (if (< 0 rel-boundary)
-	  (search-forward-regexp regexp pmax t)
-	(search-backward-regexp regexp pmin t)))))
+          (and (< (point) pmax)
+               (search-forward-regexp regexp pmax t))
+        (and (< pmin (point))
+             (search-backward-regexp regexp pmin t)))))

--
KOIE Hidetaka <hide@xxxxxxxx>