問題意識
僕はhowm形式でメモを取っているが(参考:moe | メモの方法論)、一日に何度も編集したり、閲覧したりするファイルがある。日記や、短期的なtodoだ。こういったファイルを一々フォルダから探し出して開くのは手間なので、簡単に開けるようにしたい。
ユーザデータの利用
ユーザデータを利用する。_User:diaryや_User_todoを用意し、ここにファイルパスを保存する。
以下のファイルをScriptフォルダに保存。
settitle2.js
//!*script | |
// ES6版settitle.js | |
// howmファイルを作成する | |
// 第一引数:作成するフォルダ。省略したらカレントフォルダ | |
// 第二引数:タイトル。省略可能 | |
// 戻り値:ファイルパス | |
// | |
// *script %0Script\settitle2.js,%1,homuhomu | |
// editor %*script(%0Script\settitle2.js,%1,%*now(date)) | |
const g_args = ((args = PPx.Arguments) => { | |
const dirname = PPx.Extract("%1"); | |
const title = ""; | |
const arr = []; | |
for (let i = 0, l = args.length; i < l; i++) { | |
arr[i] = args.Item(i); | |
} | |
return { | |
dirname: arr[0] || dirname, | |
title: arr[1] || title | |
}; | |
})(); | |
const fso = PPx.CreateObject("Scripting.FileSystemObject"); | |
const filename = PPx.Extract("%*nowdatetime(Y-N-D-HMS)")+".howm"; | |
const filepath = fso.BuildPath(g_args.dirname,filename); | |
const now = PPx.Extract('%*nowdatetime(Y-N-D H:M)'); | |
const str = `= ${g_args.title}\r\n\r\n\r\n[${now}]`; | |
const f = fso.OpenTextFile(filepath, 2, true); | |
f.Write(str); | |
f.Close(); | |
PPx.result = filepath; |
以下を一行編集の補完候補リスト(参考:コマンドの実行 | PPxMemo)に追記する。
;<diaryを開く>; editor %su"diary"
;<diaryをppvで閲覧>; *ppv %su"diary"
;<diaryを新規作成>; *setcust _User:diary=%*script(%0Script\settitle2.js) %: editor %su"diary"
;<カーソル下ファイルをdiaryに登録>; *setcust _User:diary=%FCD
;<todoを開く>; editor %su"todo"
;<todoをppvで閲覧>; *ppv %su"todo"
;<todoを新規作成>; *setcust _User:todo=%*script(%0Script\settitle2.js) %: editor %su"todo"
;<カーソル下ファイルをtodoに登録>; *setcust _User:todo=%FCD