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

[mhc:00292] Re: mhc-insert-schedule, per-week support, and view by category



すみません、長くなってしまいました。m(__)m

nom> スケジュールの無い日は詰めて表示するモードも欲しいぞ、
nom> との声が上がっています。実装は簡単です。全ては操作体系の問題です。
nom> いい操作体系を募集です。

nom> # one key でぱちぱち切り替えられないのが辛い。minor mode の悲し
nom> # さでしょうか。いっそ derived major mode にしたほうがいい?

あぁ、なるほど、minor mode だと確かに辛いですね。derived major mode に
するとしたら、どの mode から derive すればいいのでしょう。 mew と
wl で別々になるのでしょうか?

sen_ml> # C-uC-cs のアイディアは気に入りました。

nom> 液晶プロジェクタ対策 (デモ モード) と読んでいます。:-)

paranoid 系の人には SECRET と表示すると、「秘密があるぞ」と宣伝して
いる様なので、完全に隠せるオプションもあると幸せかもしれません。(笑)

# でも、C-cc を使用すれば実現できますね。「あるけど詳細は表示しない」
   というのは案件を見落とさない観点から考えると重要ですね。

nom> 特定のカテゴリを表示して、それ以外は表示しない (伏せ字すら出ない)
nom> というのはあります。C-cc で category を指定できるので、
nom> !Private としておけば、Private は表示に出ません。

やってみました。最初はうまくいかなかったと思っていましたが、scan しなおしたら
ちゃんと表示されました :-)

# C-cc で category を指定してから再 scan しない事ってありますか?

nom>   Private Holiday  … Private と Holiday
nom>   !Private Holiday … Private と Holiday 以外

うーん。できればここでも補完機能が使用できると幸せなんだけど、うまい
やり方が思い浮びません :-(

# separator をスペース以外のものにして、今朝投稿した補完関係のコードの
   正規表現をいじればなんとかなるかな...それがうまくいったら、
   「Private と Holiday 以外」等をあらわすための文法を
   「!Private,!Holiday」か「!(Private,Holiday)」等にすれば
   うまくいくかも...あ、すみません、独り言です (^^;

nom> 実際の使い方例と操作体系を決めていただければ、実装は割と簡単だと
nom> 思います。

以下の様なものはどうでしょうか?

(("Private" nil)  ; t means show, nil means hide
 ("Work" t)       ; better to use symbols?
 ("Holiday" nil))

みたいな alist をユーザに定義させてあげて (入力方法はおいて^2) 
それに名前をつけさせてあげるというのはどうでしょうか? つまり名前がついた
テンプレートみたいなものです。

で、`mhc-scan-by-template' (?) というコマンド経由でテンプレートの
名前を指定するという形というのはどうでしょう? 

# 指定しなかったものを表示するかしないかはユーザが設定する?

; name too long :-(
(defvar mhc-template-category-visibility-default nil)

; meaning of each template depends on the value of 
; `mhc-template-category-visibility-default'
(defvar mhc-scan-templates
  '( 
    ; for demos
    ("Demo"
      (("Private" nil)
       ("Work" t)
       ("Holiday" t)))

    ; just show holidays
    ("Holidays"
      (("Holiday" t)))

    ; holidays don't mean anything for some unfortunate people
    ("Overworked"
      (("Private" t)
       ("Work" t)))

    ; fun
    ("Fun"
      (("Friends" t)
       ("Hobbies" t)))

    ; family
    ("Family"
      (("Mother" t)
       ("Father" t)
       ("Sister" t)
       ("Brother" t)))

    ; siblings
    ("Siblings"
      (("Sister" t)
       ("Brother" t)))
   ))

# こんな使い方は誰もしないかな? 人や役割をカテゴリにしてしまうと
   アドレス帳等とリンクしたくなっちゃう?

nom> さっきのにフォローするのを忘れていました。
nom> 今欲しいもの:
nom>         ちゃんとしたマニュアル (info)
nom>         Menu 関係。
nom>         Interactive な config

「また?」といわれる覚悟で、C-c e してからいくつかのフィールドの値を 
minibuffer から入力しますが、各フィールド毎に history を用意すると (確か、
`read-from-minibuffer' に五番目の引数として指定する) M-n, M-p で
前に入力した値を探しやすくなりませんか?

こんな感じで:

(defun mhc-input-month (prompt)
  (let ((ret nil) (month-str (ddate-yymm-s1 (ddate-now) "/")))
    (while (null ret)
      (setq month-str 
	    (read-from-minibuffer
	     (concat prompt "(yyyy/mm) : ") month-str nil nil mhc-month-hist))
      (if (string-match "\\([0-9]+\\)/\\([0-9]+\\)" month-str)
	  (setq ret(ddate-new (ddate-substring-to-int month-str 1)
			      (ddate-substring-to-int month-str 2) 1 t))))
    ret))

# 最近書いたコードで複数の history を使ってみましたが、ユーザとして使って
   みて便利だと思っています。

これで最後です:

  ユーザが定義した Category に関する色関係の設定って TODO に
  入ってましたっけ?