CalMemo 00readme


<HEADER>

$ -*- Mode: Text; column: 80; Last updated: "2005/09/29 21:40:50"; -*- $

 CalMemo -- メモ書きカレンダー

   by HIE Masahiro <madoinuアットybb.ne.jp>

■概要


calendar にメモ書き機能を追加します。

・1 日 1 ファイルでメモを保存します。
・自分用の休日等を設定し,カレンダーに色付けできます。
・カレンダー上で,その日のメモをポップアップ表示します。
・メモの一覧表示ができます。
・記述したメモファイルを Grep で検索したり,一覧表示からブロック単位で絞込検索し
  たりできます。
・他のメモやファイルにリンクできます。
・いくらかの ToDo 管理ができます。


■簡単な使い方


・M-x calmemo (または toggle-calmemo) で起動します。初回起動時は,フォルダ作成確
  認ダイアログが表示されます。
・CalMemo メニューとか右クリックメニューとかでいろいろします。
・CalMemo のカスタマイズには,~/.calmemo を使います。(00sample.calmemo 参照)
・Q で終了します。


■ウィンドウ/バッファ


  ウィンドウ構成はこんな感じ。

    ┌───┬───────┐    ┌──┬────────┐
    │  サ  │  カレンダア  │    │カレ│                │
    │  イ  ├───────┤    ├──┤     閲  覧     │
    │  ド  │              │ or │ サ │                │
    │  バ  │    閲  覧    │    │ イ │                │
    │  ア  │              │    │ ド │                │
    └───┴───────┘    └──┴────────┘

  サマリウィンドウを表示している場合。

    ┌───┬───────┐    ┌──┬────────┐
    │  サ  │  カレンダア  │    │カレ│     サマリ     │
    │  イ  ├───────┤    ├──┼────────┤
    │  ド  │    サマリ    │ or │ サ │                │
    │  バ  ├───────┤    │ イ │     閲  覧     │
    │  ア  │    閲  覧    │    │ ド │                │
    │      │              │    │    │                │
    └───┴───────┘    └──┴────────┘

  ウィンドウの構成は,以下の変数で指定が可能です。

    ;カレンダのスタイル
    ;  0 : 横
    ;  1 : 上に 1 ヶ月分
    ; -1 : 下に 1 ヶ月分
    (setf *cmcalendar-style* 1)

  ウィンドウサイズは,以下の変数で指定が可能です。

    ;カレンダーの高さ
    (setf *window-calendar-height* 8)
    ;カレンダーの幅(1ヶ月分表示用)
    (defvar *window-calendar-width* 24)
    ;サマリの高さ
    (setf *window-summary-height* 8)
    ;サイドバーの幅
    (setf *window-sidebar-width* 13)

  サマリウィンドウには,サマリバッファまたは Grep バッファが表示されます。

  閲覧ウィンドウには,閲覧バッファ,一覧バッファ,検索バッファまたは編集バッファ
  が表示されます。

  サイドバーバッファ : pFarm, Mark フォルダ,現在カレンダバッファが持っている年
                       月の一覧を表示します。現在の pFarm(複数の pFarm を持って
                       いる場合)および現在の月は, Bold 表示されます。

  カレンダーバッファ : カレンダーを表示します。

  サマリバッファ     : メモの一行目を抽出したサマリを表示します。日付メモの場合,
                       1 日分のメモを 1 レコードとして表示しますが,カテゴリサマ
                       リの場合は,1 カテゴリを 1 レコードとして表示します。

  閲覧バッファ       : メモを単一表示します。

  一覧バッファ       : 複数のメモをまとめて表示します。

  Grepバッファ       : Grep の結果を表示します。

  検索バッファ       : 一覧バッファから行った絞込検索の結果を表示します。

  編集バッファ       : メモの編集を行います。


■各バッファとキー割り当て


[共通]

  @ : 今日のメモを追加・編集
  j : 指定日のメモを編集
  i : 新しい ToDo を追加
  
  a : 次のウィンドウに移動
  q : 前のウィンドウに移動
  
  0 : 0 ファイルを閲覧
  1 : 今日のメモを表示
  2 : ToDo サマリと予定表を表示
  5 : 数日分の予定を表示
  J : 指定日に移動
  k : 今月のメモ一覧を表示
  K : 今月のメモ一覧とそのサマリを表示
  l : 現在月のメモ一覧を表示
  L : 現在月のメモ一覧とそのサマリを表示
  t : ToDo 一覧を表示
  T : ToDo 一覧とそのサマリを表示
  c : カーソル位置の日付をコピー
  
  r : カレンダをリロード
  R : インデックスを作成しなおしてカレンダをリロード
  
  C-Left    : 前の月とかメモとか一覧に移動
  C-Right   : 次の月とかメモとか一覧に移動
  C-M-Left  : 前年に移動
  C-M-Right : 次年に移動
  
  g : キーワードを指定して Grep (セレクションがあればセレクションの文字列を)
  G : キーワードを指定して Grep → 絞込検索
  / : 登録済みのキーワードを選択して検索
  
  S   : サイドバーウィンドウに移動
  C   : カレンダーウィンドウに移動
  V   : 閲覧ウィンドウに移動
  s s : サマリウィンドウに移動
  
  s q : サマリを閉じる
  
  C-c v : 閲覧バッファに切替
  C-c l : 一覧バッファに切替
  C-c s : 検索バッファに切替
  C-c d : 編集バッファに切替
  C-c g : Grep バッファに切替
  C-c n : Note フォルダを開く
  
  RBtnDown : CalMemo ポップアップメニュー
  Apps     : CalMemo ポップアップメニュー
  
  + : ウィンドウサイズを拡大
  - : ウィンドウサイズを戻す
  
  C-0 : カレンダーを横長に表示
  C-1 : カレンダーを左上に1ヶ月分表示
  C-2 : カレンダーを左下に1ヶ月分表示
  
  F1 : readme.txt を表示
  F2 : pFarm 切替ダイアログ
  
  Q  : CalMemo 終了
  
[サイドバーバッファ]

  RET : 実行
  TAB : 該当月のカレンダーを表示
  g   : 該当月のメモフォルダから Grep
  d   : カーソル行のマークフォルダを削除
  T   : 護美箱を空にする

[カレンダバッファ]

  ?         : 休日情報をポップアップ
  RET       : カーソル位置のメモを編集 (or LBtnDown click 3)
  TAB       : カーソル位置のメモを表示 (or LBtnDown click 2)
  SPC       : カーソル位置のメモを表示し,閲覧ウィンドウに移動
  m         : カーソル位置のメモをマーク
  d         : カーソル位置のメモを削除
  n         : 次のメモのある日付に移動し表示
  p or C-h  : 前のメモのある日付に移動し表示
  z         : 長年メモ
  C-v       : 次ページのカレンダーに移動 (or PageDown)
  M-v       : 前ページのカレンダーに移動 (or PageUp)
  MouseMove : マウスポインタ移動 & ポップアップ表示
  Home      : 今日に移動
  Left      : 前日に移動
  Right     : 翌日に移動
  Up        : 前行の日付または前月末日に移動
  Down      : 次行の日付または翌月 1 日に移動
  M-Up      : 閲覧バッファを上スクロール
  M-Down    : 閲覧バッファを下スクロール

[サマリバッファ]

  Down   : 次行のメモを表示 (or SPC)
  Up     : 前行のメモを表示 (or C-h)
  RET    : カーソル位置のメモを編集 (or LBtnDown click 3)
  TAB    : カーソル位置のメモを表示 (or LBtnDown click 2)
  SPC    : カーソル位置のメモを表示し,閲覧ウィンドウに移動
  v      : カーソル位置のメモを単一表示
  p      : メモをポップアップ表示 (ToDo のみ)
  d      : 削除マーク "D" をつける
  D      : すべてに削除マーク "D" をつける
  m      : マーク "M" をつける
  u      : マークを削除
  U      : すべてのマークを削除
  x      : マークを実行
  C-F6   : ソートダイアログ(アイテムサマリ,ToDo サマリのみ)
  M-Up   : 閲覧バッファを上スクロール
  M-Down : 閲覧バッファを下スクロール
  *      : サマリ & 閲覧ウィンドウサイズを拡大

[閲覧バッファ]

  e      : 表示中のメモを編集
  d      : 表示中のメモを削除
  l      : 一覧表示
  p      : 前のメモを表示
  n      : 次のメモを表示
  m      : メモをマーク
  M      : カーソル位置のメモのアイテムヘッダを ToDo に追加
  c      : カーソル位置のURLまたは日付をコピー
  z      : 長年メモ
  RET    : 日付リンクへ跳ぶ,または,カテゴリ名で Grep & 絞込検索
  C-RET  : カテゴリ名で Grep & 絞込検索
  TAB    : 次のリンク記述箇所へ移動。前方にタブ文字がある場合は,タブを跳び越えます。
  C-u TAB: 前のリンク記述箇所へ移動。
  M-Left : 日付リンク元に戻る,または,Grep や絞込検索を開始した位置に戻る
  *      : サマリ & 閲覧ウィンドウサイズを拡大

[一覧バッファ]

  e      : カーソル位置のメモを編集
  v      : カーソル位置のメモだけを閲覧
  d      : カーソル位置のメモを削除
  n      : 次のメモに移動
  p      : 次のメモに移動
  f      : 絞込検索 (セレクションがあればセレクションの文字列を)
  F      : 複数のキーワードで絞込検索(AND/OR検索)
  >      : 登録済みのキーワードを選択して絞込検索
  m      : メモをマーク
  c      : カーソル位置のURLまたは日付をコピー
  z      : 長年メモ
  s c    : 現在の一覧から日付サマリを作成
  s e    : 現在の一覧からアイテムサマリを作成(日付順)
  s i    : 現在の一覧からアイテムサマリを作成(指定順)
  RET    : 日付リンクへ跳ぶ,または,カテゴリ名で Grep & 絞込検索
  C-RET  : カテゴリ名で Grep & 絞込検索
  TAB    : 次のリンク記述箇所へ移動。前方にタブ文字がある場合は,タブを跳び越えます。
  C-u TAB: 前のリンク記述箇所へ移動。
  M-Left : 日付リンク元に戻る,または,Grep や絞込検索を開始した位置に戻る
  F6     : ToDo ソートダイアログ

[Grepバッファ]

  RET  : カーソル行のメモを編集
  TAB  : カーソル行のメモを表示 (or F10, LBtnDown click 2)
  Down : 次行のメモを表示 (or SPC, F11)
  Up   : 前行のメモを表示 (or C-h)
  l    : Grep でヒットしたファイルを一覧表示
  L    : Grep でヒットしたファイルを一覧表示 → 絞込検索
  w    : 最後の検索文字列を検索キーワードとして登録
  q    : カレンダバッファに戻る

[検索バッファ]

  l      : 一覧バッファの該当メモに跳ぶ
  w      : 最後の検索文字列を絞込キーワードとして登録
  M-Left : 一つ前の検索条件結果に戻る

  あとは [一覧バッファ] と同じ

[編集バッファ]

  C-c e   : カテゴリ名を挿入
  C-c t   : ToDo Type 切替
  C-x k   : 編集バッファを破棄
  C-c a   : セレクションに色付け (or S-RBtnDown)
  C-x C-s : 保存
  C-c C-c : 保存して編集を終了

  C-c C-n : 次の日付メモを編集(App f の方が押しやすいかも)
  C-c C-p : 前の日付メモを編集(App b         〃          )

  C-j     : item 挿入
  C-.     : カテゴリ名補完
  C-,     : 現在日時を挿入

  C-+     : ウィンドウサイズを拡大
  C--     : ウィンドウサイズを戻す


■設定ファイル


  個人用設定は,~/.calmemo で行います。同梱の 00sample.calmemo をコピーして適当
  に編集してください。その他の設定は defs.l を参考にしてみてください。


■カレンダーの表示色


  xyzzy の calendar は,標準機能として土曜日を青,日曜日および休日を赤で表示して
  くれますが,その他に 3 種類の色付けを行うことができます。

  *local-holiday-list-1* と *local-holiday-list-2* に年月日を文字列のリストで指
  定しておくと,それぞれ指定した色で表示することができます。

    (setf *local-holiday-list-1*
          '("20030725" "20030728" "20030729" "20030730" "20030731"))

  また,*special-day-alist* に月日とコメント文字列を設定しておくと,指定した日付
  を色付けし,カーソル移動時にコメントをポップアップ表示します。

    (setf *special-day-alist*
          '(("0401" . "叔父さんの従兄弟の知人の誕生日")
            ("1111" . "1がよっつ")))


■日付メモの記述フォーマット


  決まったフォーマットで書く必要はありません。基本的になんでもありです。

  が,ChangeLog 形式で記述しておくと,アイテム単位で絞込検索ができたり,カテゴリ
  サマリが作成できたり,chalow を使って HTML に変換したりと,少しだけ便利かもし
  れません。

  ChangeLog 形式で記述する場合は,行頭をタブでインデントする必要はありません。各
  アイテムの先頭に,ChangeLog 形式に従ったカテゴリ名(item header)を付けておく
  だけです。あとは一覧表示時に,勝手に各アイテムをインデントします。

     ChangeLog 形式での記述例:
    ┌──────────────────────────┐
    │* foo: こんな感じで記述します。                     │
    │この場合,foo がカテゴリ名(item header)となり,この │
    │文章の末尾までが1アイテムとなります。              │
    │                                                    │
    │* bar: 次のアイテムを記述する場合は,1行空けて記述 │
    │してください。                                      │
    │                                                    │
    │アイテムの途中に空行があっても構いません。          │
    └──────────────────────────┘

  カテゴリを複数指定する場合は,次のようにします。

    * category1: category2: ...
    * [category1] [category2]: ...
    * title [category1] [category2]: ...

  `:' や `[]' 前後の半角スペースは,あってもなくても構いません。

  編集バッファで C-j すると,「* : 」を挿入します。ただし,カーソルの位置により
  以下のように動作が変わります。

    - カテゴリ名を持つ行の行頭にある場合 : 行を空けて「* : 」を挿入
    - 空白行にある場合                   : 「* : 」を挿入
    - その他の場合                       : 改行 + インデント(通常の動作)

  カテゴリ名のリストを設定しておくと, C-. でカテゴリ名の補完,C-c e でカテゴリ
  名のリストをポップアップします。

    (setf *category-list* '("bookmark" "foo" "idea" "memo" "schedule"))

  また,以下の設定により C-j 実行時にカテゴリ名のリストをポップアップします。

    (setf *insert-item-with-popup-category-list* t)

  さらに,以下の設定により閲覧バッファまたは一覧バッファ表示時に,カテゴリ名を収
  集し *category-list* に追加します。収集したカテゴリ名は,CalMemo を終了させる
  まで有効です。

    (setf *category-list-auto-get* t)

  オプションから「正しい ChangeLog 形式で表示」にチェックを入れておき,「全メモ
  一覧」を表示してどこかに保存すれば,そのまま ChangeLogMemo へ移行することもで
  きると思います。


■CalMemo フレームの外で編集


  CalMemo フレームでないフレーム(例えば 2ch-mode とか使ってて)でメモの編集を行
  うこともできます。「CalMemo(M)」メニューから操作することもできますが,.calmemo 
  に以下のようなキーバインドの設定をしておくこともできます。

    ;; howm もどきなキーバインドの例 :-)
    ;出したり引っ込めたり
    (global-set-key '(#\C-c #\. #\.) 'toggle-calmemo)
    ;CalMemo フレームの外で使用するコマンド
    (global-set-key '(#\C-c #\. #\@) 'edit-today) ; 今日のメモを編集
    (global-set-key '(#\C-c #\. #\j) 'edit-jump-to) ; 指定日のメモを編集
    (global-set-key '(#\C-c #\. #\i) 'todo-add) ; ToDo 追加

  CalMemo を autoload する場合は,少なくとも 1 回は CalMemo を起動しないと上記の
  コマンドは使用できません。1 度でも起動した後ならば,CalMemo を起動していてもし
  ていなくても上記コマンドを使用することができます。

  ちなみに ni-autoload の設定は,require になっています。ので,xyzzy 起動直後か
  ら CalMemo フレームの外で編集が可能です。

  CalMemo フレームの外で上記コマンドを実行すると,ウィンドウが二分割されて,編集
  バッファが表示されます。元のウィンドウが三分割されていても四分割されていても二
  分割になります。編集バッファでは,以下のようなキーが使用できます。

    C-c C-c : メモをファイルに保存してウィンドウ状態を元に戻す
    C-x k   : 編集中のメモを破棄してウィンドウ状態を元に戻す

  その他のキーは,「各バッファとキー割り当て」を参照ください。


■メモの閲覧


  メモのある日付は,Bold 表示されます。

  カレンダー上でカーソルを移動させると,その日付のメモが閲覧ウィンドウに表示され
  ます。マウスカーソルを日付に合わせると,その日付のメモがポップアップ表示されま
  す。

  l したり k したりすると,1 ヶ月分のメモがまとめて表示されます。t すると ToDo 
  メモの一覧が表示されます。

  サマリ上では上下矢印キーでカーソルを移動させることにより,一覧バッファの該当箇
  所を表示します。(一覧表示でなく)単一メモ表示させる場合は v します。 v した後,
  上下矢印キーで移動すると,新たにサマリが作成しなおされるまで 1 メモづつの表示
  が継続されます。常時単一メモ表示としたい場合は,以下のように設定しておきます。

    (setf *summary-view-1-memo-always* t)


■サマリ


  一覧バッファまたは検索バッファで s c と入力すると各エントリ(日付単位)のサマ
  リが,s e と入力すると各アイテムのサマリが日付順に作成されます。

  アイテムサマリは並べ替えを行うことができます。s i と入力すると,あらかじめ指定
  した並び順でアイテムサマリを作成します。アイテムサマリを表示しているウィンドウ
  で,C-F6 と入力すると,並び順を指定することができます。

  あらかじめ並び順を設定しておく場合は,.calmemo に次のように設定します。

    (setf *summary-item-sort-order* '((category-title . t)))

  その他に以下のものが指定できます。

    'standard        : 並べ替えを行わない
    'category-title  : カテゴリ順の件名順
    'category-date   : カテゴリ順の日付順
    'title           : 件名順

  既定値は,カテゴリ順の件名順となっています。


■検索


  CalMemo で使える検索方法は,log フォルダ(全メモ)に対しての Grep , GGrep (※1)
  および,一覧バッファに表示中のメモに対しての絞込検索です。

  GGrep は,複数のキーワードで OR 検索する場合とか,カテゴリ名を複数記述してある
  状況で,AND 検索したりするのに便利です。

  Grep バッファで l すると,Grep でヒットしたファイルをまとめて一覧表示します。
  同じくGrep バッファで L すると,Grep をかけたキーワードで絞込検索を行います

  絞込検索(※2)は,行単位でなく,ブロック単位で検索をかけることができます。
  ChangeLog 形式でカテゴリ名を記述している場合はアイテム単位で,そうでない場合は
  日付単位で検索します。絞込検索を実行するには,一覧バッファで f するか,ショー
  トカットメニューから適当な絞込検索を選択します。

  絞込検索結果からは,さらに絞込みが可能です。前回の検索条件には,M-Left で戻る
  ことができます。

  GGrep の OR 検索で幅広く検索し一覧バッファを作成した後,絞込検索を行っていくと
  便利かもしれません。

  閲覧/一覧/検索バッファのカテゴリ名が記述してある位置で Enter すると,カテゴリ
  名をキーに Grep を実行し,続けて同じくカテゴリ名をキーに絞込検索を行ないます。

  また,一覧バッファのカテゴリ名が記述してある位置で f すると,カテゴリ名をキー
  に絞込検索を行ないます。

    ※1 OHKUBO Hiroshi さん作の ggrep.l が必要です。
    ※2 絞込検索は,fukae さん作の changelogmemo.l から頂戴したものです。


■検索キーワードの登録と検索インデックス


  繰り返し使用する検索文字列は,あらかじめ .calmemo に名前を付けて登録しておくこ
  とができます。実際には,次の書式でリストを作成しておきます。

    (setf *search-default-keyword-alist* '(("名前" . "検索文字列")))

  例えばこんな感じで。検索文字列には正規表現が使えます。

    (setf *search-default-keyword-alist*
          '(;;猿関連
            ("saru" . "むすめ")
            ;;カテゴリ `foo' と `bar'
            ("foo" . "^\t?\\* \\(url\\|foo\\): ")  ; ※1
            ))

  検索キーワードを使った検索では,全てのメモから絞込検索を行います。実行するには, 
  / と入力した後,ミニバッファに登録した名前を入力します。CalMemo 起動後,初回実
  行時に Grep を実行し,対象ファイル(日付)をインデックスとして記憶します。また,
  メモの保存時にもインデックスの更新を随時行います。この処理により,2 回目以降の
  検索時には Grep を実行することなく高速に全メモからマッチするメモ一覧を取得でき
  るようになります。検索インデックスは,xyzzy が終了すると消え去ります。

  Grep バッファから検索キーワードの登録をすることもできます。Grep バッファで w 
  と入力し,ミニバッファに登録する名前を入力して Enter でおっけーです。ただし,
  Grep バッファから登録した検索キーワードも検索インデックスと同じく,xyzzy が終
  了すると消え去ります。

  作成した検索インデックスをファイルに保存し,次回起動時にも使用することもできま
  す。この機能を使うには,.calmemo に次のように設定しておきます。

    (setf *search-index-use-history* t)

  再利用されるインデックスは,*search-default-keyword-alist* に登録されたキーワ
  ードのインデックスのみとなります。ただし,CalMemo 外から日付メモを編集する場合
  は注意が必要です。CalMemo 外から日付メモを編集した場合は,一旦 [CalMemo]→[い
  ろいろ]→[全ての検索インデックスを削除] を実行してから使用してください。

  絞込検索のみで使う検索文字列も登録することができます。.calmemo に上記の検索キ
  ーワードと同じ書式で設定しておきます。

    (setf *look-for-default-keyword-alist* '(("foobar" . "\\(foo\\|bar\\)")))

  登録したキーワードを使った絞込検索は,一覧または検索バッファのショートカットメ
  ニューの「メニューから選択して絞込検索」から実行することができます。

    ※1 Grep(単一のメモから検索)と絞込検索(一覧形式のメモから検索 & インデン
        ト付き)のそれぞれに同じ検索文字列を使用しているので,行頭にマッチさせる
        場合には,`^'だけでなく`^\t?' とかとしないと,うまくいかないと思います。


■リンク


  以下の形式で記述すると,一覧バッファまたは閲覧バッファから Enter でリンク先に
  跳ぶことができます。

    日付リンク     : [2004-01-01]  ※1
    Note リンク    : >>> ノート.txt
                     >>> どこか/ふぁいる.txt
    ファイルリンク : >>> C:/xyzzy/.xyzzy
                     >>> //pc/share/file.l
                     >>> ~/.calmemo

  Note リンクおよび,ファイルリンクについては,その行がファイル名で終わる(ファイ
  ル名の末尾に改行が入るようにする)必要があります。存在しないファイルを指定する
  と,新規作成確認ダイアログが表示されます。

  以下の形式で記述すると,xyzzy で何れかのメジャーモードに関連付けられている拡張
  子を持つファイル,および,拡張子のないファイルの場合は xyzzy で開く,さもなけ
  ればファイルを実行します。この形式の場合,行末に記述する必要はありません。

    Note リンク    : [[hoge.txt]] または [[foo/bar.xls]]
    ファイルリンク : [[c:/xyzzy/html/00README.html]]

  拡張子により xyzzy で開くかファイルを実行するかを明示的に指定する場合は,以下
  のようにします。

    ;; リンクファイルで find-file する拡張子のリスト
    (setf *link-find-file-type-list* '("dat" "inc"))

    ;; リンクファイルで shell-execute する拡張子のリスト
    (setf *link-shell-execute-type-list* '("html" "htm"))

  >>> ファイル名 な記述でも,[[ファイル名]] と同様な処理を行いたい場合は,以下の
  ようにします。

    (setf *jump-link-file1-same-as-jump-link-file2* t)

  shell-execute を使わないで,常に find-file を使い場合は,以下のようにします。

    (setf *link-find-file-always* t)


    ※1 日付リンクが,カテゴリ名として認識される場合は,Enter で Grep & 絞込検索
        が開始されます。ここで日付リンクへ跳ぶには,C-u Enter とします。


■サイドバー


  サイドバーには,
    ・pFarm 一覧     : pFarm を切替えます。
    ・フォルダ一覧   : フォルダのメモ一覧をサマリ表示します。
    ・最近の更新一覧 : 最近更新したメモに跳べます。
    ・カテゴリ一覧   : カテゴリ名で検索します。
    ・年月一覧       : 指定した年月のメモを一覧表示します。
  を表示することができます。Enter で実行です。

  見出し行([Category] とか)で Enter すると,一覧の折りたたみ/展開が切り替わり
  ます。

  最近の更新一覧,年月一覧では,TAB キーによりそれぞれ該当メモを表示してサイドバ
  ーに戻る,カレンダーの該当月に移動が可能です。

  サイドバーに表示する項目は,*sidebar-item-list* により設定することができます。
  初期値は以下のようになっています。

    (defvar *sidebar-item-list*
      '((pfarm . t) (folder . t) (recent . t) (category . t) (yearmonth . t)))

  ここでは,項目の表示順,項目の展開状態,項目を表示/非表示を指定することができ
  ます。例えば,最近の更新一覧を二番目に持ってきて,カテゴリ一覧は展開しないで表
  示して,年月一覧は表示しない場合,以下のように設定します。

    (setf *sidebar-item-list*
          '((pfarm . t) (recent . t) (folder . t) (category . nil)))

  最近の更新一覧の表示日数は,*recent-days* で指定することができます。既定値は 5 
  日です。表示日数を 10 日にする場合は,以下のように設定します。

    (setf *recent-days* 10)

  カテゴリ一覧には,*category-list* に登録されているカテゴリが表示されます。
  *category-list-auto-get* を t に設定していると,そのリストが増えていきますが,
  それが気になる場合や,*category-list* の一部だけを表示しておきたい場合には,
  *sidebar-category-list* を設定しておきます。

    (setf *sidebar-category-list* '("Bookmark" "idea"))

  カテゴリ一覧からカテゴリ名で Grep → 絞込検索時,`category' な表記の場合は,行
  頭の `* category:' を検索しますが,`[category]' な表記の場合は,位置の指定をす
  ることなく検索を行います。


■pFarm


  CalMemo は,複数のデータフォルダを切替えて使うことができます。pFarm 機能を使用
  する場合は,以下のような感じで *pfarm-list* を設定してください。"データフォル
  ダ","拡張子"は省略可で,省略した場合既定値が使用されます。

    (setf *pfarm-list*
         '(("名前1")
           ("名前2" "データフォルダ" "拡張子")
           ))

  *pfarm-list* で指定したデータフォルダは,あらかじめ作成しておいて下さい。起動
  時に開く pFarm を指定するには,*pfarm-default-name* を設定しておきます。

    (setf *pfarm-default-name* "名前2")

  *pfarm-default-name* を指定しない場合は,*pfarm-list* の 1 つ目の pFarm が起動
  時に選択されます。

  データフォルダが同じで拡張子が異なる場合,ToDo, Trash, Note は,共有されます。

  あまり多くの pFarm を持つ必要はないと思いますが,HD と USB メモリのそれぞれに
  データを持ちたい場合などに使えたりします。

  pFarm 毎の設定は,データフォルダに config.l というファイルを作成することにより
  行なうことができます。config.l を使用する場合は先頭に,

    (in-package "calmemo")

  と書いておいてください。config.l を使って .calmemo の設定内容を書き換えると,
  指定した pFarm に移動した後,他の pFarm(起動時に開く pFarm も含む)に移動した
  ときもその設定が引き継がれてしまうので,そのような設定は .calmemo に書かず,各 
  pFarm の config.l に記述しないといけません。


■ToDoフォルダ


  1 項目を 1 ファイルとして ToDo 管理を行うことができます。i で ToDo 追加,t で 
  ToDo の一覧表示です。

  ToDo は,先頭に記述した記号により表示色を変えます。使用できる記号は,「●■▲」
  の三つです。現在のところこの三つを変更することはできません。

  ToDo 一覧およびサマリは,いくらかの並べ替えができます。F6 で,件名順,作成日順,
  更新日時順およびそれらの逆順から選択することができます。

  ToDo メモ用フォルダは,Grep の対象になりません。必要ならば,一覧バッファから適
  当に検索してください。(-_-)


■Markフォルダ


  メモをマークします。マークフォルダは Sidebar に,&マーク名 で表示されます。

  メモをマークする場合は,マークしたいメモのある日付にカーソルを合わせ m → 「マ
  ーク名入力」RET します。既にあるマークに追加する場合はマーク名の補完ができます。
  新しいマークフォルダを指定して追加することもできます。

  日付メモを編集して保存すると,Mark フォルダに同名のメモがある場合には,そのメ
  モも変更されます。

  Mark フォルダの中のメモを編集して保存すると,日付メモおよび,他の Mark フォル
  ダに同名メモがある場合には,そのメモも変更されます。

  元になる日付メモを削除すると,Mark フォルダの中のメモも削除されますが,Mark フ
  ォルダの中のメモを削除しても,元になる日付メモや他の Mark フォルダのメモは削除
  されません。

  マークフォルダを削除する場合は,Sidebar から D です。


■Trashフォルダ


  削除された日付メモおよび ToDo メモは,Trash フォルダに移動されます。Trash フォ
  ルダの中のメモを編集して保存しても,他のフォルダに変更は反映されません。

  Trash フォルダ中のメモを個別に削除する場合は,サマリから d で削除マークをつけ
  た後 x で実行します。Trash フォルダ中のメモをすべて削除する場合は,Sidebar か
  ら T します。


■Noteフォルダ


  pFarm 毎に Note フォルダを持ち,まとめて残しておきたいメモを一つのファイルに保
  存したいときに使っています。唯一の機能は,リンク作成時,パス名を省略できること
  (だけ)です。C-c n で開きます。


■0 ファイル


  ToDo フォルダ中に作成される,00000000.0000 なファイルをそう呼んでいます。この
  ファイルは,0 で閲覧することができます。ToDo 一覧の対象にはなりません。毎日使
  う Note ファイルとか,よく見直す日付メモなどのリンクを作成して使っています。
  ちなみに,コマンドを埋め込んだりはできません。


■起動時に実行する関数


  起動時に実行する関数を指定することができます。主な関数は,以下の通り。

     scan-today-and-view-memo : 今日のメモを見る
     list-schedule            : 予定表
     list-this-month          : 今月のメモ一覧
     list-todo                : ToDo 一覧
     list-todo-and-schedule   : ToDo サマリと予定表
     list-naganen-today       : 今日の長年メモ
     zero                     : 0 ファイル

  これらの関数は,.calmemo で以下のように指定します。

    (setf *startup-function* #'list-naganen-today)

  また,自分で作成した関数や,ラムダ式を指定しても良いのです。

    (setf *startup-function*
          #'(lambda () (interactive) (list-search-keyword "foo")))


■HTML変換


  正しい ChangeLog 形式で記述しておけば,たつをさんの chalow を使って,HTML に変
  換することができます。

    http://nais.to/~yto/tools/chalow/

  Perl および chalow インストール後,*chalow-exec-directory* に chalow を設置し
  たフォルダを指定しておいてください。

    (setf *chalow-exec-directory* "C:/dokoka/chalow/")

  その後,一覧バッファもしくは検索バッファのショートカットメニューから「chalowで
  HTMLに変換」を実行してください。成功すれば,データフォルダ/chalow/ に HTML フ
  ァイルが作成されます。

  その他に以下のような設定が可能です。

    ;;; 出力するディレクトリ
    (setf *chalow-output-directory* "C:/home/htdocs/chalow/")

    ;;; 実行時のオプション
    (setf *chalow-options* "-n 10")

  こんな感じで自分用の変換関数を .calmemo に定義しておくと便利かもです。

    (defun chalow-foo ()
      (interactive)
      ;;`foo' という名前で登録済みの検索文字列で検索し一覧を作成
      (list-search-keyword "foo")
      ;;chalow で html に変換
      (chalow-transfer "C:/somewhere/chalow/"  "-n 3 -u"))

  また,ChangeLog 形式で記述しなくても,新しい pFarm を作成し,拡張子を diary に
  しておいた後,nDiary を使ってみてもなんとかなるかもしれません。

    http://www14.cds.ne.jp/~not/product/ndiary/


■howm 風な書式


  このあたりはかなり試作的なのですが,カテゴリ名として howm 風に以下のような書式
  を使ってみてます。

    [@] : 予定
    [!] : この日までにやらねばならぬこと
    [+] : 近々しておかねがならぬこと
    [-] : いづれやらねばならぬこと
    [.] : 済

  [@] 以外のカテゴリ名は,閲覧バッファ上で u すると,別のカテゴリ名に切り替わり
  ます。(+ とか - とかにカーソルを合わせんとダメです。)

    [!] → [+] → [-] → [.]
     ↑                  │
     └─────────┘

  また,U と入力すると,[.][2004-10-17] の形式でカテゴリ名を [.] に変更し日付を
  挿入します。

  次の形式のトグルスイッチも使えます。

    { } → {-} → {*}
    ↑            │
    └──────┘

  こんな感じで記述してみてます。

    * [@]: 近隣の方々とお食事

    * [!]: 税金支払期日

    * [+]: 今日のお仕事
    {_}風呂そーじ
    {*}こざるを塾まで送迎
    {_}バナナを買う

    * [-]: 例の本を買う

  例えば,次のような設定をしておくと,@ の上で u すると,カテゴリを予定から日記
  に変えられます。

    (push `("[@]" . "diary") *toggle-mark-alist*)


■その他


・ウィンドウ表示やバッファの状態が崩れた場合, M-x calmemo で初期状態に戻ります。

・どのウィンドウ(バッファ)でも使用できるメニューは,CalMemo(M)メニューから,その
  ウィンドウ(バッファ)でしか使用できないメニューは,ショートカットメニューから実
  行することができます。

・アプリメニューに「CalMemo(M)」メニューを追加したくない場合は,xyzzy の初期設定
  ファイルに以下のような設定を追加します。

    ;; アプリメニューに追加しない
    (setf *calmemo-disable-app-menu* t)


■問題点


・カテゴリサマリで同じ日に同じタイトルのカテゴリが複数あると,最初のカテゴリにし
  か跳べない。
・メモの量が増えるとどうなるか,想像がついていません。あまりに重くなるようなら,
  *calmemo-index* の取得/保存方法を見直すか,とりあえず古いデータは別の pFarm に
  移すとかしないといけないのかも。(-_-)
・.kamail で,*kamail-show-startup* を nil にしておかないと,KaMail の起動に失敗
  することがあります。(もしくは他のフレームから実行する,もしくはサマリウィンド
  ウを閉じてカレンダーウィンドウから実行する…)
・その他,星の数ほどあるような。


■参考にさせて頂いたもの/影響を受けたもの/使わせて頂いたもの


・服部さんの KaMail
    http://www7a.biglobe.ne.jp/~hat/
・ふかえさんの changelogmemo, diary
    http://www5e.biglobe.ne.jp/~fukafuka/xyzzy/script/scripts.html
・高林さんの Unixのメモ技術
    http://www.namazu.org/~satoru/unimag/1/
・たつをさんの chalow
    http://nais.to/~yto/tools/chalow/
・平岡さんの howm と kimura さんの howm-wrap
    http://www.me.ics.saitama-u.ac.jp/~hira/emacs/howm/index-j.html
    http://homepage3.nifty.com/~ko-ji/
・OHKUBO さんの ggrep
    http://ohkubo.s53.xrea.com/


■免責


  このソフトを利用することによって生じた損害等について,作者は責任を負わないもの
  とします。各自の責任においてご利用下さい。


;;; 以上で役に立たない readme はおしまいです。

Generated by outline-tree2 2005.05.18