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でやってるけど、これも変えたいと思う。