Howm の設定

始めに

hown じゃなくて howm です. MuseMode で publish(するまでもない|しない)メモを howm で記述しています.

unofficial Debian Package があるのでそれを使います.

install

apt-line に以下の行を追加します.

deb http://howm.sourceforge.jp/debian ./
deb-src http://howm.sourceforge.jp/debian ./

http://howm.sourceforge.jp/debian によれば Key ID:8E632DCB との事でしたので

$ gpg --keyserver subkeys.pgp.net --recv-keys 8E632DCB
$ gpg --armor --export 8E632DCB | sudo apt-key add -

で鍵を追加して

 $ sudo aptitude install howm

で終了です.

設定

最初に test をします. /usr/share/doc/howm/README.Debian によれば,

 * All sample files with howm (in sample/ directory) are available at
   /usr/share/doc/howm/sample. Please do followed instead of doing
   `make test' and M-x howm-menu.

  $ HOWM_TEST=t emacs -q -l /usr/share/doc/howm/sample/dot.emacs

との事です. M-x howm-menu で生成されたメニューファイルを ~/work/howm/.howm-menu へ 保存しておきます.

.emacs で設定しているのは以下. 基本的には rd-mode で記述しています.

elscreen-howm については cc-env::ElScreen#elscreen-howm, RD の設定は RdMode へ.

;;; ========================================================================
;; rd-mode と併用設定
;; goto, come-frome の記号の変更
(setq howm-ref-header "==>")
(setq howm-keyword-header "<==")
(setq howm-directory "~/work/howm")
(setq howm-file-name-format "%Y/%m/%Y%m%d-%H%M%S.howm")
(setq howm-keyword-file "~/work/howm/.howm-keys")
(setq howm-keyword-case-fold-search t)
(setq howm-list-title nil)
(setq howm-menu-refresh-after-save nil)
(setq howm-refresh-after-save nil)
(add-to-list 'auto-mode-alist '("\\.howm$" . rd-mode))
(setq dired-bind-jump nil)
;; 以下は決まり文句
(setq howm-menu-top nil)
(setq howm-menu-lang 'ja)
(setq howm-history-file "~/work/howm/.howm-history")
(setq howm-menu-file "~/work/howm/.howm-menu")
(require 'howm)
(set-face-foreground 'howm-mode-keyword-face "yellow") ;; <<<
(set-face-foreground 'howm-mode-ref-face "yellow") ;; >>>
(set-face-foreground 'action-lock-face "cyan") ;; 下線文字
(set-face-underline 'action-lock-face t) ;; 下線は文字と同色 (Emacs 21)
(set-face-underline 'action-lock-face "blue") ;; 下線 (Emacs 21)
;; howm のテンプレートのカスタマイズ
(setq howm-template-date-format "[%Y-%m-%d %H:%M:%S]")
(setq howm-template-file-format "==>%s")
(setq howm-template "%date %cursor %file\n= ")
;; elscreen + howm でバッファを操作.
(setq load-path(cons "~/.emacs.d/elisp/elscreen-howm" load-path))
(require 'elscreen-howm)
;; \C-x m で howm-create(clmemo 風)
(define-key ctl-x-map "m" 'howm-create)
;; 全文検索の対象ディレクトリ追加
(setq howm-search-path '("~/work/muse"))
(setq howm-search-other-dir t)
;; grep の設定
(setq howm-view-grep-command "egrep")
(setq howm-view-fgrep-command "fgrep")
(setq howm-view-grep-extended-option nil)
(setq howm-view-grep-fixed-option nil)
(setq howm-view-grep-file-stdin-option nil)  ; パターンは引数で渡す
;; 「最近のメモ」一覧時にタイトル表示
(setq howm-list-recent-title t)
;; 全メモ一覧時にタイトル表示
(setq howm-list-all-title t)
;; メニューを 2 時間キャッシュ
(setq howm-menu-expiry-hours 2)
;; howm の時は auto-fill で
;(add-hook 'howm-mode-on-hook 'auto-fill-mode)
;; RET でファイルを開く際, 一覧バッファを消す
;; C-u RET なら残る
(setq howm-view-summary-persistent nil)
;; メニューの予定表の表示範囲
;; 21 日前から
(setq howm-menu-schedule-days-before 10)
;; 3 日後まで
(setq howm-menu-schedule-days 3)
;; いちいち消すのも面倒なので
;; 内容が 0 ならファイルごと削除する
(if (not (memq 'delete-file-if-no-contents after-save-hook))
    (setq after-save-hook
          (cons 'delete-file-if-no-contents after-save-hook)))
(defun delete-file-if-no-contents ()
  (when (and
         (buffer-file-name (current-buffer))
         (string-match "\\.howm" (buffer-file-name (current-buffer)))
         (= (point-min) (point-max)))
    (delete-file
     (buffer-file-name (current-buffer)))))
;; カレンダーからの日付入力
(eval-after-load "calendar"
  '(progn
     (define-key calendar-mode-map
       "\C-m" 'my-insert-day)
     (defun my-insert-day ()
       (interactive)
       (let ((day nil)
             (calendar-date-display-form
              '("[" year "-" (format "%02d" (string-to-int month))
                "-" (format "%02d" (string-to-int day)) "]")))
         (setq day (calendar-date-string
                    (calendar-cursor-to-date t)))
         (exit-calendar)
         (insert day)))))

参考文献