あいさつ
つかさです。
xyzzyで一日一ファイル形式のメモを取れるようにしてみる。
以下を site-lispフォルダに保存。
onedaymemo.l
; -*- Mode: Lisp -*-
;
; メモファイルを引数のディレクトリに作成する
;
; キーバインド
; C-x,C-x 新たな見出し
;
; Installation:
;
; ~/.xyzzy または $XYZZY/site-lisp/siteinit.l に以下のコードを追加
;
; (require "onedaymemo")
(defun make-onedaymemo-file (memo-dir)
(let* ((filename (format-date-string "%Y-%m-%d.txt"))
(filepath (merge-pathnames filename memo-dir))
(directory (directory-namestring filepath)))
(if (not (file-directory-p directory))
(create-directory directory))
(find-file filepath)
(if (eq (point-max) (point-min))
(insert (format-date-string "%d %b %Y %H:%M:%S\n\n * : "))
(progn
(goto-char (point-max))
(insert (format-date-string "\n\n * : "))))))
(defun onedaymemo ()
(interactive)
(if si:*command-line-args* (setq x (pop si:*command-line-args*))(setq x nil))
(make-onedaymemo-file x)
(onedaymemo-mode))
(defun onedaymemo-mode ()
(interactive)
(kill-all-local-variables)
(setq buffer-mode 'onedaymemo-mode)
(setq mode-name "One Day Memo")
(use-keymap *onedaymemo-mode-map*))
(defvar *onedaymemo-mode-map* nil)
(unless *onedaymemo-mode-map*
(setq *onedaymemo-mode-map* (make-sparse-keymap))
(define-key *onedaymemo-mode-map* '(#\C-x #\C-x)
#'(lambda ()
(interactive)
(goto-char (point-max))
(insert (format-date-string "\n\n * : ")))))
次いで.xyzzyに以下を追加。
(require "onedaymemo")
引数として指定したフォルダに、特定の書式でメモファイルを作るスクリプトです。
その日に一度もメモを取っていなければ、メモファイルを新規作成。ファイル名は2015-07-25.txtのように日時から自動で付けられる。その日に既にメモを取っていれば、その日のメモファイルを開き、新しい見出しからはじめる。内容は
25 Jul 2015 17:03:46 * : Changelogのテスト 書式をChangeLogっぽく変えてみる * : 日付 日付とかはどうせファイルで分かるから不要?最初に起動するときだけにするとか。 あとは時間。これは本当に必要か?時間的なことが書きたいのなら、文中でやればいいだけかも。タイトルの区切りだけ入れるとか。 また、起動時に新規に作成するようにするか。 日付が必要な場合と不要な場合。あまり使わないだろうか。 あとはキーバインドをどうするか。C_x2度押しとか単純なのでいいかも。 * : PPvの一時コマンド なぜか中に入っていない。
みたいになる。
また、C_x二回押しで、カーソルを末尾に移動し、次の見出しをコピペする。
PPxへの登録
これを、PPxから起動できるようにする。
以下を編集して取込。
KC_main = { ; PPcメイン窓
^Z ,*setnextkey K_launcher
}
K_launcher = { ** comment **
C ,%Ob D:\bin\xyzzy\xyzzy.exe -e (onedaymemo) D:\Work\Log
}
C_z c(Ctrl+Zを押したあとにCを押す)
で起動します。フォルダパスは適宜変更を。
何で作ったか
僕は普段、howm形式でメモを取っているのだが、本を読みながらのメモ、作業してる時のちょっとしたメモ、誰かに出会った時の記録等については、howmはあまり適していないと思っていた。そこで、一ファイル形式の時系列順でメモれる方法を探していた。
この用途として以前使ってたのはCatMemoNoteだった。メモ間の区切りは区切り線で。日付についてはホットキーを設定し、適宜挟み込むというようにしていた。
これはこれで悪くはなかったのだが、時たま新規にメモを作成しないと、1ファイルが非常に長くなってしまうのが嫌だった。だが、新規メモを適宜作るようにすると、以前作ったメモが残ったままになるので、それはそれで鬱陶しい。
そこで、それを解消し、かつ僕が追求してる「すべての動作をPPx基点で行う」にあわせた方法を考えて、このスクリプトを作ってみた。書式はchangelog.lを参考にしてます。





