misc:software:Emacs:mode:howm:実践

misc:software:Emacs:mode:howm:実践

= (未完成)

基本的な機能

howm ヘルプ

howm-menu を実行して ? を入力する。

メモの執筆

タイトルを記述する

行頭に = を書いてから文字列を書きます。

= my title

キーワードの検索用リンクを生成する / 検索結果を集約したページを生成する

キーワードを [[ と ]] でくくれば、すべてのメモからキーワードを探し出すためのリンクが生成されます。 そのリンクにカーソルを移動してエンターキーを押すと、そのキーワードへのリンクを集約するページも生成されます。

[[emacs:]]

実際には、このように[[ と ]] でキーワードをくくることで >>> の機能を実行し、そのキーワードの位置でエンターキーを押すことで <<< の機能を実行しているのです。

>>>

後続の文字列を検索するよう処理するコマンド

<<<

後続の文字列が検索された場合にその箇所を表示するよう処理するコマンド

>>> emacs:
<<< emacs:

ファイルを開くと同時にキーワードとして検索もするリンクを作成する

>>> と書いてからファイルのパスを記します。

>>> ~/.emacs.d/init.el

インターネット上のアドレスやファイルのパスを記入する

インターネット上のアドレスやファイルのパスをそのまま記入すればクリックができる状態になります。 そこでエンターキーを押すとインターネット上のアドレスならEmacs外のブラウザで開き、ファイルであれば Emacs で開きます。

http://www.yahoo.co.jp/
https://www.yahoo.com/
file://~/.emacs.d/init.el

{ }: トグルスイッチを利用する

{と}の間でエンターキーを押せばこの順に切り替えます。 購入リストといった to-do リストに最適な機能でしょう。

{ }
{*}
{-}

{_}: 未処理の項目を明示する

{と}の間の_上でエンターキーを押せば現在の日付と時刻を表示します。

{_}
[2013-08-19 00:03]

キーワードに別名を設定する (alias)

このように書くと、いったん keyword1, keyword2, keyword3 のどれか一つを検索すればメモから keyword1, keyword2, keyword3 のキーワードすべてを探し出します。

<<< keyword1 <<< keyword2 <<< keyword3

keyword1 を一つ検索するだけで keyword2 や keyword3 も同時に探し出せるということは、キーワードに別名を設定できるということです。

なお、howm のキーワードファイルにキーワードは普通このように追加されます。

keyword4

別名を設定した場合は、タブで区切られたキーワードが一行分追加されます。

keyword1        keyword2        keyword3

メモの閲覧

メモを検索する

howm-menu を実行して、メニューの項目から語句検索を行います

固定

既定のキーワードを利用しメモ全体を対象として検索します

正規

正規表現を利用しメモ全体を対象として検索します

roma

migemoを利用しメモ全体を対象として検索します

バ内

閲覧中のバッファ内を対象として検索します

メモの一覧を取得する

メモ一覧を並び替える (sorting) / 抽出する (filtering)

タスクの設定

単一のタスクを設定する

howm-menu を実行して d を入力すれば日付を、Tを入力すれば日付と時刻を容易に挿入できます。

[YYYY-MM-DD]
[YYYY-MM-DD hh:mm]

そのうえでメモに記号をこのように書いてください。

* 記号と数字の例(数字は省略時の既定設定) * 機能 * 詳細
[2013-01-04]@1 予定 予定表に表示します。
指定日からn日間、その予定を繰り返します
[2013-01-04]!7 〆切 指定日のn日前から徐々に浮かび上がり、指定日以降は浮かび続けます
[2013-01-04]+7 todo 指定日からn日間かけて徐々に浮かびます
[2013-01-04]-1 覚書 指定日に浮かび上がり、以降n日かけて単位量だけ徐々に沈みます
[2013-01-04]~30 保留 指定日に浮かび上がり、以降n日周期で浮き沈みをくりかえします
[2013-01-04]. 済み 常に沈んだままです

定期的に繰り返し行うタスクを設定する

まず日付を挿入します。

[2013-08-20]+ 一週間を振り返る

そして日付の上にカーソルを移動しエンターキーを押します。

[RET (list), +num (shift), yymmdd (set), ~yymmdd (repeat), . (today)] 

ここで ~YYYYMMDD の形式で日付を入力しましょう。

~20130930

ここでエンターキーを押して、どのように繰り返すのかを選択します。

all

毎日

days

n日ごと

week

一週間ごと

month

一ヶ月ごと

year

一年ごと

weekを選択するとこうなります。

[2013-08-20]+ 一週間を振り返る
[2013-08-27]+ 一週間を振り返る
[2013-09-03]+ 一週間を振り返る
[2013-09-10]+ 一週間を振り返る
[2013-09-17]+ 一週間を振り返る
[2013-09-24]+ 一週間を振り返る

なお初期設定では、定期的に繰り返し行うタスクは一度に200個分まで設定できます(howm-action-lock-date-repeat-max変数)。

タスクの日付を変更する

まず日付を挿入します。

[2013-08-20]+ 一週間を振り返る

そして日付の上にカーソルを移動しエンターキーを押します。

[RET (list), +num (shift), yymmdd (set), ~yymmdd (repeat), . (today)] 

ここで -n +n を入力しましょう。-n の場合はn日前へと変更し、+nの場合はn日後へと変更します。

-10 => [2013-08-10]+ 一週間を振り返る
+10 => [2013-08-30]+ 一週間を振り返る

タスクの状態を変更する

次のようなタスクを設定します。

[2013-08-20]+ 一週間を振り返る

日付の直後にある記号の上にカーソルを移動してエンターキーを押すと、タスクの状態を変更できます。

RET (done), x (cancel), symbol (type), num(laziness):

それぞれのコマンドを実行するとこうなります。

[2013-08-20]. [2013-08-20]:+ 一週間を振り返る
[2013-08-20]. cancel [2013-08-20]:+ 一週間を振り返る
[2013-08-20]@ 一週間を振り返る
[2013-08-20]+3 一週間を振り返る

タスクの閲覧

howm のメニュー画面にて

howm-menu を実行すると、予定や締め切り、Todo が表示されます。

メモの一覧として

emacs lisp を利用した設定

howm 関連ファイルの設置場所を変更する

; メモファイルを 1 日 1 ファイルしか作成しないようにする
(setq howm-file-name-format "%Y/%m/%Y_%m_%d.txt")

(setq howm-menu-file "menu.txt")

(setq howm-keyword-file "~/howm/.howm-keys")
(setq howm-history-file "~/howm/.howm-history")

メニューの表示方法を変更する

; 一覧時にタイトルを表示しない
(setq howm-list-title nil)

; save 時にメニューを自動更新せず
(setq howm-menu-refresh-after-save nil)

; メニューを 2 時間キャッシュ
(setq howm-menu-expiry-hours 2)

; スケジュールのセパレーターを変更する
(setq howm-menu-reminder-separators
      '(
        (-1  . "━━━━━━━今日↓━━━━━━━━")
        (0   . "━━━━━━━予定(~3日)↓━━━━━")
        (3   . "━━━━━━━もっと先 (~30日)↓━━")
        (nil . "━━━━━━━todo↓ (~20件)━━━━") ;予定とtodoの境
        ))

メモの設定を変更する

; <<< で大文字小文字を区別しない
(setq howm-keyword-case-fold-search t)

; save 時に下線を引き直さない
(setq howm-refresh-after-save nil)

(setq howm-user-font-lock-keywords
  '(
    ("<home>" . (0 'highlight prepend))
    ))



(setq howm-template
      (concat howm-view-title-header " %title%date %cursor\n\n"))

howm の高速化

(setq howm-process-coding-system 'utf-8-unix)

(setq gc-cons-threshold (* 5 (* 100 (* 1000 1000))))

(setq font-lock-verbose nil)

他のモードとの併用

(add-hook 'howm-mode-hook
          (lambda ()
            (turn-on-orgstruct++)
            (turn-on-orgtbl)
            ))

同封ツールの活用

snap.el

snap.el を使うためにはw3m を導入しておかなければなりません。

apt-get install w3m

html への変換

cd ~/.emacs.d/elisp/howm-test-version/ext
ruby ./howm2 ~/howm/ ~/howm-converted/
# ***n*** files ./howm2:79:in `title_match': invalid byte sequence in Windows-31J (ArgumentError)
#         from ./howm2:293:in `block (3 levels) in come_go_master'
#         from ./howm2:292:in `each_line'
#         from ./howm2:292:in `block (2 levels) in come_go_master'
#         from ./howm2:291:in `open'
#         from ./howm2:291:in `block in come_go_master'
#         from ./howm2:290:in `each'
#         from ./howm2:290:in `come_go_master'
#         from ./howm2:399:in `<main>'
 
# invalid byte sequence in Windows-31J が出たときは
# http://blog.cles.jp/item/5698
ruby  -Eutf-8 ./howm2 ~/howm/ ~/howm-converted/
# ***n*** files (***x*** entries)
# body pages: .....
# reference pages: .
# index page: .

Last modified : 2013/08/20 16:17:30 JST
blechmusik (blechmusik@gmail.com)