MoEの最小構成
普段使っているPC以外でもMoEができるように、fenrirとかを抜いた最小構成を考えてみる。MoEでやってるのは大掛かりだけどちょっと試してみたいという場合とかもいいかもしれない。あれやろうとすると、フォルダ構造とか少しがんばる必要あるので。
MoEの本質は、howm形式でとったメモの編集を、PPxでやることにある。
Xyzzy
Xyzzyをインストールした後、次のスクリプトをsite-lispフォルダに入れる。
- howmcreate2dir.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 hateda-heading1 () (interactive "*") (save-excursion (goto-bol) (insert "*") (fix-selection-point))) (defun hateda-heading2 () (interactive "*") (save-excursion (goto-bol) (insert "**") (fix-selection-point))) (defun hateda-num-list () (interactive "*") (save-excursion (goto-bol) (insert "+") (fix-selection-point))) (defun hateda-list () (interactive "*") (save-excursion (goto-bol) (insert "-") (fix-selection-point))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;モードの設定 (defun howm-create2dir-mode () (interactive) (kill-all-local-variables) (setq buffer-mode 'howm-create2dir-mode) (setq mode-name "howm Create2dir") (make-local-variable 'regexp-keyword-list) (setq hateda-regexp-keyword-list (compile-regexp-keyword-list `( ("^[=].*" t (:color 7 13 :line :bold )) ("^[*][*][^*].*" t (:color 10 15 :line )) ("^[*][*][*][^*].*" t (:color 9 12 :line )) ))) (setq regexp-keyword-list hateda-regexp-keyword-list) (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-] 'hateda-heading1) (define-key *howm-create2dir-mode-map* '#\C-: 'hateda-heading2) (define-key *howm-create2dir-mode-map* '#\C-+ 'hateda-num-list) (define-key *howm-create2dir-mode-map* '#\C-- 'hateda-list) (define-key *howm-create2dir-mode-map* '(#\C-c #\, #\c) 'howm-create2dir))
ついで、.xyzzyに以下を追加。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;howmモード (pushnew '("\\.howm$" . howm-create2dir-mode) *auto-mode-alist* :test #'equal) (require "howm-create2dir")
PPx
- Paper Plane xUI本体
- Paper Plane xUI Script Module(これも本体と同じページからダウンロード)
をインストールした後、PPxフォルダにscriptフォルダを作る。
そこに次のスクリプトを保存。
- MakeComment.js
//!*script var strLine = "\n"; currentDir = PPx.Extract("%1"); // ファイル操作 var objApl = new ActiveXObject("Shell.Application"); var objFolder = objApl.NameSpace(currentDir); // ファイルのリストを取得 var objFolderItems = objFolder.Items(); // フォルダ内のファイルとフォルダへの処理 for(var i=0;i<objFolderItems.Count;i++) { var objItem = objFolderItems.Item(i); var objFileSys = new ActiveXObject("Scripting.FileSystemObject"); // ディレクトリでなく空ファイルでもなく00_INDEX.txtでもなく拡張子がtxtかhowmの場合に処理する if (objItem.IsFolder==false && objItem.Size != 0 && objItem != "00_INDEX.txt" && (objFileSys.GetExtensionName(objItem) == "txt" || objFileSys.GetExtensionName(objItem) == "howm")) { // ファイルの内容を取得 objInFile = objFileSys.OpenTextFile(objItem, 1); // ファイル名+Tab+一行目の最初二文字を切り取ったもの+改行をstrに代入 str = objItem + "\t" + objInFile.ReadLine().slice( 2 ) + "\n" strLine = strLine + str; objInFile.Close(); }else{} } // カレントディレクトリに00_INDEX.txtを作成 strCreateFile = objFileSys.BuildPath(currentDir,"00_INDEX.txt"); objFileSys.CreateTextFile(strCreateFile); // 00_INDEX.txtに書き込み objOutFile = objFileSys.OpenTextFile(strCreateFile, 2); objOutFile.Write(strLine); objOutFile.Close(); PPx.Execute("%K\"@[F5]\"")
次に、以下をコピペして、カスタマイザーから編集して取り込み。
;PPcのキーカスタマイズ KC_main = { ; PPcメイン窓 F6 ,*script %0\Script\MakeComment.js \K ,%M_makefile,H E ,%"Text edit"%Orib,editor %FDC } ;表示形式"howmtitle"の追加 MC_celS = { ; エントリ表示 書式([;]メニュー) howmtitle = M cF50,5 C z7 S1 tC"y-N-D" s1 } ;拡張子がhowmの時にEnterを押すとビューアが起動 E_cr = { HOWM ,%v %FCD } ;PPvのキーカスタマイズ KV_main = { UP ,%KC"@UP@N" DOWN ,%KC"@DOWN@N" SPACE ,%KC"@SPACE@N" \SPACE ,%KC"@\SPACE@N" ENTER = @Q } ;howm作成用メニュー ;パスはxyzzyをインストールした場所になおす M_makefile = { ** comment ** &howm-create2dir = %Ob D:\bin\xyzzy\xyzzy.exe -e (howm-create2dir) %1 -- = ディレクトリ(&D) = *makedir %1\%E }