howmファイルを特定のフォルダに作る
あいさつ
Xyzzyフォルダの下のhowmフォルダではなく、別のフォルダにhowmファイルを作りたい場合がある。僕の用途だと、ある程度何を書きたいかが煮詰まっている場合は、howm2フォルダ(カテゴリーフォルダ)にメモを直接保存したい。
今までこれを使っていた。ただ、これだと一つしか同じフォルダにメモを作ることができなかった。新しいファイルを作ろうとしてC-c , cとしても、二つ目からはデフォルトのhowmフォルダに保存されてしまう。
というわけでこれを改造。引数にしたフォルダをスペシャル変数"*temp-howm-dir*"に保存し、C-c , cで新しいhowmファイルを作った場合はそれを参照してhowmファイルを作る。
ただこれだと通常のhowmフォルダにファイルを作るやつとキーがかぶってしまうので、モードで分け、それぞれ別のキーバインドにする。
howm-create2dir.l
(defvar *temp-howm-dir* nil) (defun make-howm-create2dir-file (howm-dir) (let* ((filename (format-date-string "%Y-%m-%d-%H%M%S.howm")) (filepath (merge-pathnames filename howm-dir)) (directory (directory-namestring filepath))) (if (not (file-directory-p directory)) (create-directory directory)) (find-file filepath) (if (eq (point-max) (point-min)) (progn (insert (format-date-string "= \n\n[%Y-%m-%d %H:%M]\n")) (goto-char (+ (point-min) 2)))) )) (defun howm-create2dir () (interactive) (if si:*command-line-args* (setq *howmdir* (pop si:*command-line-args*))) (make-howm-create2dir-file *temp-howm-dir*) (howm-create2dir-mode)) (defun howm-create2dir-mode () (interactive) (kill-all-local-variables) (setq buffer-mode 'howm-create2dir-mode) (setq mode-name "howm Create2dir") (use-keymap *howm-create2dir-mode-map*)) (defvar *howm-create2dir-mode-map* nil) (unless *howm-create2dir-mode-map* (setq *howm-create2dir-mode-map* (make-sparse-keymap)) (define-key *howm-create2dir-mode-map* '(#\C-c #\, #\c) 'howm-create2dir))
そして、.xyzzyに
(require "howm-create2dir")
と書き加える。
これをPPxで使う場合は、適当なキーやメニューに
%Ob D:\bin\xyzzy\xyzzy.exe -e (howm-create2dir) %1
と登録します。
howm-modoki-create.l
(defun make-howm-modoki-file (howm-dir) (let* ((filename (format-date-string "%Y/%m/%Y-%m-%d-%H%M%S.howm")) (filepath (merge-pathnames filename howm-dir)) (directory (directory-namestring filepath))) (if (not (file-directory-p directory)) (create-directory directory)) (find-file filepath) (if (eq (point-max) (point-min)) (progn (insert (format-date-string "= \n\n[%Y-%m-%d %H:%M]\n")) (goto-char (+ (point-min) 2)))) )) (defun howm-modoki-create () (interactive) (make-howm-modoki-file "~/howm") (howm-modoki-mode)) (defun howm-modoki-mode () (interactive) (kill-all-local-variables) (setq buffer-mode 'howm-modoki-mode) (setq mode-name "howm Modoki") (use-keymap *howm-modoki-mode-map*)) (defvar *howm-modoki-mode-map* nil) (unless *howm-modoki-mode-map* (setq *howm-modoki-mode-map* (make-sparse-keymap)) (define-key *howm-modoki-mode-map* '(#\C-c #\, #\c) 'howm-modoki-create))
今まではglobal-set-keyでC-c , cを登録してたけど、先の理由でこちらもローカルに変更。
.xyzzyには
(require "howm-modoki-create")
とのみ書き加える。こちらの方は、fenrirのインスタントコマンドの"/h"に登録してます。
h/=""D:\bin\xyzzy\xyzzy.exe" -e "(howm-modoki-create)""
あとしたいこと
見出しの色づけとか、行頭に"**"をつけるだとかも今はglobal-set-keyでやってるけど、これも変えたいと思う。