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

[mhc:00009] Re: mhc-0.13 is now available.



大原です。

既に登録されているスケジュールを C-c m → C-c C-c で修正しようとすると、
ミニバッファで、
I will refile to +schedule/1999/04 ... (y or n)
と質問され、"y" と答えると、今度は、
File /home/os/Mail/schedule/1999/04/95 already exists; overwrite anyway? (y or 
と質問されるのですが、ここで "y" と答えると、
そのスケジュールが修正されるだけではなく、
同じ内容のスケジュールが追加されてしまいます。

つまり、修正する度に、(修正された)同じスケジュールが増殖してしまいます。

さらに、後者の質問の時に、"n" で答えると、添付のようなエラーとなります。

また、C-c d によるスケジュールの削除ができないようです。

これは、[Mew-dist 08549] の問題と関係あったりするのでしょうか?



nom@xxxxxxxxxxxxxxxxxxx (Yoshinari NOMURA) さんの、
"Tue, 13 Apr 1999 19:38:32 +0900" にだした、
「[mhc:00004] mhc-0.13 is now available.」というメールにて…… :

> 気になってるのは、X-SC-* フォーマットのイベント記述能力です。
> 日をまたがるイベントを書けないのは Mytv に辛いかもしれないし。:-)

これ、ちょっと考えてみたんですが、やっぱり難しいですね。

何か議論のネタになれば、と思い、敢えて整理したりせずに、
とりあえず、今、思っていることを書き殴ってみました。

---- ここから ----
X-SC-Day: 、X-SC-Time: による表現能力の低さの問題。

日付をまたがるようなスケジュールの表現。
たとえば、冗長だし後方互換性もないけど、次のような表現はどうか?

X-SC-Begin: YYYYDDMM [HH:MM[:SS]]
X-SC-End: [YYYYDDMM] [HH:MM[:SS]]


スケジュールと一口に言っても

・起点が重要なもの
  (例) 4月29日 18:00 に知り合いと待ち合わせ。
  X-SC-Begin: 19990429 18:00

・終了点が重要なもの
  (例) 3月31日 17:00 が提出期限。
  X-SC-End: 19990331 17:00

・起点と終了点があるもの
  (例) 4月14日 23:55-00:25 放送の番組
  X-SC-Begin: 19990414 23:55
  X-SC-End: 19990415 00:25

・時間に無関係なもの
  (例) ToDo リスト

などがありそう。

最後のは、現状の mhc.el からは扱いづらいが、
today などで表示されると嬉しいし、
gtk や Tk のフロントエンドを作るなら ToDo も扱えると素敵かも。


イベントが月(年)にまたがる場合はどうなる?
ほんとに X-SC-Begin: & X-SC-End: の導入で解決するか?

また、
+schedule/1999/04
のように、フォルダを月毎に分けることにこだわる必要があるか?
#Mew のメッセージの DB 化によってフォルダ分けにこだわる必要もなくなる?

分けるとすれば、当該月以外の月のフォルダの scan も必要になってくる。
通常、スケジュール管理が必要なイベントというのは未来にしかない。
過去は見る必要がない&未来しか見る必要がない。(ほんとかな?)

たとえば、
・X-SC-End: のあるスケジュールファイルは、
  X-SC-End: に指定の月のフォルダに置く。
・X-SC-Begin: しかないスケジュールファイルは、
  X-SC-Begin: 指定の月のフォルダに置く。
という決まりにしておく。
こうしておいて、当該月の Summary 表示時には、
当該月 *以降* の月のフォルダの scan により Summary を生成する。

過去のスケジュール(フォルダ)を scan する必要はなくなり、
未来のスケジュール(フォルダ)だけを scan すれば良くなる。(ほんとかな?)


ToDo のようなものにも、
・FIFO な queue 的なもの
・FILO な stack 的なもの
や、
・期日の決まっているもの
・とにかくいつかやればいいもの
がある。

期日の特に決まっていないものは、たとえば、
+schedule/todo
+schedule/todo/queue
+schedule/todo/stack
+schedule/todo/done
+schedule/todo/trash
のようなフォルダを用意し、スケジュールには、
X-SC-Priority: みたいな属性によって優先順位を付け、
Summary では、この優先順位の順に上から sort して表示。
容易に優先順位の入れ替えができるようなコマンドもあるといいかも。


+schedule/memo
+schedule/memo/*
みたいなのもあると何かと便利かも。
メモの為だけに自分宛にメールする感覚。メモが散逸するのも防げる?
---- ここまで ----

----
OHARA Shigeki (大原重樹) <os@xxxxxxxxx>
Signaling: (file-already-exists "File already exists" "/home/os/Mail/schedule/1999/04/95")
  write-region(1 931 "/home/os/Mail/schedule/1999/04/95" nil silence nil iso-2022-jp)
  (cond ((string< "20" emacs-version) (write-region ... ... tmp-file nil ... nil ...)) ((string< "19.3" emacs-version) (write-region ... ... tmp-file nil ... nil *iso-2022-jp*)) (t (write-region ... ... tmp-file nil ... *iso-2022-jp*)))
  (let ((tmp-file ...)) (cond (... ...) (... ...) (t ...)) (message "Refiling ...") (call-process mhc-prog-refile nil nil nil "-file" tmp-file folder) (message "Refiling ... Done.") (set-buffer-modified-p nil) (kill-buffer (buffer-name)) (mhc-window-pop))
  mhc-draft-refile("+schedule/1999/04")
  (progn (mhc-draft-refile folder) (mhc-window-pop))
  (if (y-or-n-p (format "I will refile to %s ... " folder)) (progn (mhc-draft-refile folder) (mhc-window-pop)))
  (if (not folder) (error "Invalid Header Value... quit") (mhc-hdr-delete-separator) (if (y-or-n-p ...) (progn ... ...)))
  (let (folder) (setq folder (mhc-hdr-to-folder intersect)) (if (not folder) (error "Invalid Header Value... quit") (mhc-hdr-delete-separator) (if ... ...)))
  mhc-draft-finish(nil)
* call-interactively(mhc-draft-finish)