[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[mhc:02130] Re: [ 現象報告 & 質問 ] guess date
森下と申します。
From: NOGUCHI Yusuke <nogunogu@xxxxxxxxxxxxxxxxx>
Subject: [mhc:02129] Re: [ 現象報告 & 質問 ] guess date
Date: Tue, 17 May 2005 17:37:28 +0900 (JST)
Message-ID: <20050517.173728.08243104.nogunogu@xxxxxxxxxxxxxxxxx>
> > mhc-guess-date-regexp-list 中の throw を取ると,
> > 最後まで候補になると思います.
> > throw を挿入した所以前の regexp にマッチした場合は,
> > 以降の regexp を使いません.
>
> アドバイス通り、2カ所の throw をコメントアウトしたところ、「18日」が選
> 択候補になりました。
または、.emacs なりで、
(setq mhc-guess-ignore-english-date t)
としてしまう手もありますね。この場合には、英語日付は候補の対象になりま
せん。
> > throw を入れた部分の前後に日付けとしての確からしさの落差があると
> > 考えて,ゴミを集めないような配慮からそうしています.
> > 外すと,うっとうしい場面もあると思います.
> > 自分のスタイルに合わせて実験してみてください.
>
> 私個人の好みでいうと、過剰にヒットする方が楽ですね。
> "C-n/C-p" で移動する分にはそれほど苦にはなりませんが、yyyy/mm/dd を入
> 力するのはメンドな性質です...
英語も日本語も候補に挙げたいという要望は、それなりにあると思います。
日英混合文が送られてくること(たとえば英語の国際会議の案内が日本語のコ
メント付きで転送されてくるなど)を考えると、日本語と英語とでは、双方独
立にマッチ対象とできる方が良いように思えてきました。
つまり、日本語と英語で throw の位置を共有せずに、変数を分けてしまった
方が良いということです。
そこで、添付のパッチを書いてみました。
これを当てると、
> > 添付の "Subject: sample mail 1" をスケジュール登録しようとすると、date の
> > guess の際、引用メールの情報である
> > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
> > > Sent: Monday, May 16, 2005 7:04 PM
> > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
> > の「May 16, 2005」*のみ* が検出され、本来検出してもらいたい「18日」が
> > 検出されません。
> > C-n/C-p でも候補移動できないようです。
C-n/C-p で、「18日」と「May 16, 2005」とで行ったり来たりするようになる
と思います。よろしければ試してみてください。
--
もりした みんぺい
Index: mhc-guess.el
===================================================================
RCS file: /cvsroot/mhc/emacs/mhc-guess.el,v
retrieving revision 1.23
diff -c -r1.23 mhc-guess.el
*** mhc-guess.el 24 Apr 2005 05:32:35 -0000 1.23
--- mhc-guess.el 17 May 2005 09:36:11 -0000
***************
*** 107,113 ****
"\\)?")
mhc-guess/make-date-from-mmdd 2 3 8 9 10)
! ;; USA style date format
(,(concat "\\(Jan\\(uary\\)?\\|Feb\\(ruary\\)?\\|Mar\\(ch\\)?\\|"
"Apr\\(il\\)?\\|May\\|June?\\|July?\\|Aug\\(ust\\)?\\|"
"Sep\\(tember\\)?\\|Oct\\(ober\\)?\\|"
--- 107,135 ----
"\\)?")
mhc-guess/make-date-from-mmdd 2 3 8 9 10)
! throw
!
! (,(concat "\\(今度\\|[今来次]週\\|再来週\\)[\n ]*の?[\n ]*"
! "\\([月火水木金土日]\\)曜")
! mhc-guess/make-date-from-relative-week 1 2)
!
! throw
!
! ("\\([0-90-9]+\\)[\n ]*日"
! mhc-guess/make-date-from-mmdd nil 1)
!
! ("\\([0-90-9]+\\)[ ]*[((][月火水木金土日]"
! mhc-guess/make-date-from-mmdd nil 1)
!
! ("[^\((]\\([月火水木金土日]\\)\n?曜"
! mhc-guess/make-date-from-relative-week nil 1)
!
! ("\\(本日\\|今日\\|あす\\|あした\\|あさって\\|明日\\|明後日\\)"
! mhc-guess/make-date-from-relative-day 1)
! ))
!
! (defvar mhc-guess-date-english-regexp-list
! `(
(,(concat "\\(Jan\\(uary\\)?\\|Feb\\(ruary\\)?\\|Mar\\(ch\\)?\\|"
"Apr\\(il\\)?\\|May\\|June?\\|July?\\|Aug\\(ust\\)?\\|"
"Sep\\(tember\\)?\\|Oct\\(ober\\)?\\|"
***************
*** 117,123 ****
"\\(\\('\\|[1-9][0-9]\\)?[0-9][0-9]\\)?") ;; year
mhc-guess/make-date-from-usa-style-date 1 11 13)
- ;; British style date format
(,(concat "\\([0-9][0-9]?\\)\\(st\\|nd\\rd\\|th\\)?,? " ;; day
"\\(Jan\\(uary\\)?\\|Feb\\(ruary\\)?\\|Mar\\(ch\\)?\\|"
"Apr\\(il\\)?\\|May\\|June?\\|July?\\|Aug\\(ust\\)?\\|"
--- 139,144 ----
***************
*** 129,138 ****
throw
- (,(concat "\\(今度\\|[今来次]週\\|再来週\\)[\n ]*の?[\n ]*"
- "\\([月火水木金土日]\\)曜")
- mhc-guess/make-date-from-relative-week 1 2)
-
(,(concat "\\([Tt]his\\|[Nn]ext\\)[\n ]+"
"\\(Monday\\|Tuesday\\|Wednesday\\|Thursday\\|Friday\\|"
"Saturday\\|Sunday\\)")
--- 150,155 ----
***************
*** 145,166 ****
throw
- ("\\([0-90-9]+\\)[\n ]*日"
- mhc-guess/make-date-from-mmdd nil 1)
-
- ("\\([0-90-9]+\\)[ ]*[((][月火水木金土日]"
- mhc-guess/make-date-from-mmdd nil 1)
-
- ("[^\((]\\([月火水木金土日]\\)\n?曜"
- mhc-guess/make-date-from-relative-week nil 1)
-
(,(concat "\\(Monday\\|Tuesday\\|Wednesday\\|Thursday\\|Friday\\|"
"Saturday\\|Sunday\\)")
mhc-guess/make-date-from-english-relative-week 1 nil nil)
- ("\\(本日\\|今日\\|あす\\|あした\\|あさって\\|明日\\|明後日\\)"
- mhc-guess/make-date-from-relative-day 1)
-
(,(concat "\\([Tt]oday\\|[Tt]omorrow\\|"
"[Tt]he[ \n]+[Dd]ay[ \n]+[Aa]fter[ \n]+[Tt]omorrow\\)")
mhc-guess/make-date-from-english-relative-day 1)
--- 162,171 ----
***************
*** 249,258 ****
(defun mhc-guess-date (&optional hint1)
(let ((now (or (mhc-date-new-from-string3 (mhc-header-get-value "Date"))
(mhc-date-now))))
! (mhc-guess/guess mhc-guess-date-regexp-list hint1 now)))
(defun mhc-guess-time (&optional hint1)
! (mhc-guess/guess mhc-guess-time-regexp-list hint1))
(defun mhc-guess-location-setup ()
(if mhc-guess-location-list
--- 254,267 ----
(defun mhc-guess-date (&optional hint1)
(let ((now (or (mhc-date-new-from-string3 (mhc-header-get-value "Date"))
(mhc-date-now))))
! (mhc-guess/guess
! (if mhc-guess-ignore-english-date
! (list mhc-guess-date-regexp-list)
! (list mhc-guess-date-regexp-list mhc-guess-date-english-regexp-list))
! hint1 now)))
(defun mhc-guess-time (&optional hint1)
! (mhc-guess/guess (list mhc-guess-time-regexp-list) hint1))
(defun mhc-guess-location-setup ()
(if mhc-guess-location-list
***************
*** 268,274 ****
(setq mhc-guess/location-regexp-list mhc-guess-location-regexp-list)))
(defun mhc-guess-location (&optional hint1)
! (mhc-guess/guess mhc-guess/location-regexp-list hint1))
(defun mhc-guess/guess (control-regexp-lst &optional hint1 now)
(let ((score-list
--- 277,283 ----
(setq mhc-guess/location-regexp-list mhc-guess-location-regexp-list)))
(defun mhc-guess-location (&optional hint1)
! (mhc-guess/guess (list mhc-guess/location-regexp-list) hint1))
(defun mhc-guess/guess (control-regexp-lst &optional hint1 now)
(let ((score-list
***************
*** 288,307 ****
;;
(defun mhc-guess/gather-candidate (control-regexp-lst &optional now)
! (let ((ret nil) cand-lst)
(while control-regexp-lst
! (cond
! ((listp (car control-regexp-lst))
! (if (setq cand-lst
! (mhc-guess/gather-candidate2
! (car (car control-regexp-lst)) ;; regexp
! (car (cdr (car control-regexp-lst))) ;; convfunc
! (cdr (cdr (car control-regexp-lst))) ;; posision list
! now ;; current date
! ))
! (setq ret (nconc ret cand-lst))))
! ((and (string= "throw" (symbol-name (car control-regexp-lst))) ret)
! (setq control-regexp-lst nil)))
(setq control-regexp-lst (cdr control-regexp-lst)))
ret))
--- 297,325 ----
;;
(defun mhc-guess/gather-candidate (control-regexp-lst &optional now)
! (let ((ret nil) ret-work cand-lst cr-lst)
(while control-regexp-lst
! (setq cr-lst (car control-regexp-lst))
! (while cr-lst
! (cond
! ((listp (car cr-lst))
! (if (setq cand-lst
! (mhc-guess/gather-candidate2
! (car (car cr-lst)) ;; regexp
! (car (cdr (car cr-lst))) ;; convfunc
! (cdr (cdr (car cr-lst))) ;; posision list
! now ;; current date
! ))
! (setq ret-work (nconc ret-work cand-lst))))
! ((and (string= "throw" (symbol-name (car cr-lst))) ret-work)
! (setq ret (nconc ret ret-work))
! (setq ret-work nil)
! (setq cr-lst nil)))
! (setq cr-lst (cdr cr-lst)))
! (if ret-work
! (progn
! (setq ret (nconc ret ret-work))
! (setq ret-work nil)))
(setq control-regexp-lst (cdr control-regexp-lst)))
ret))