2020年12月28日月曜日

PPx+howmでtodo管理

僕はPPx+howmでメモ環境を構築している(参考:MoE)。これに

  • 一行編集からタイトルを指定してhowmファイルを作成
  • 一行編集からhowmファイルのタイトルを変更

を追加して、todo管理もできるようにする。




 準備


以下をScriptフォルダに保存。それぞれ「タイトルを指定してhowmファイルを作成」「タイトルを変更」「タイトルを取得」するスクリプト。

settitle.js
//!*script

// howmファイルを作成する
// 第一引数:作成するフォルダ
// 第二引数:タイトル
// *script %0Script\makehowm.js,%1,homuhomu
// editor %*script(%0Script\makehowm.js,%1,%*now(date))

var fso = PPx.CreateObject("Scripting.FileSystemObject");
var dirname = PPx.Arguments.Item(0);
var filename = PPx.Extract("%*nowdatetime(Y-N-D-HMS)")+".howm";
var filepath = fso.BuildPath(dirname,filename);
var str="= ";

// 引数が複数あればそれをつなげる
for (var i = 1; i < PPx.Arguments.length; i++) {
  if (i==1){
    str += PPx.Arguments.Item(i);
  } else {
    str += ","+PPx.Arguments.Item(i);
  }
}

str += "\r\n\r\n\r\n["+PPx.Extract('%*now')+"]";

var file = fso.OpenTextFile(filepath, 2, true);
file.Write(str);
file.Close();
PPx.result = filename;

changetitle.js

//!*script
// 与えられたhowmファイルのタイトルを変更するスクリプト
// 第一引数:howmファイルパス
// 第二引数:変更するタイトル
// *script %0Script\changetitle.js,%R,homuhomu

var s="";
var str = "";
var filepath = PPx.Arguments.Item(0);
var fso = PPx.CreateObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile(filepath, 1);

// 引数が複数あればそれをつなげる
for (var i = 1; i < PPx.Arguments.length; i++) {
  if (i==1){
    str=str + PPx.Arguments.Item(i);
  } else {
    str=str + ","+PPx.Arguments.Item(i);
  }
}

s = "= "+str+"\r\n";

f.ReadLine(); //空読みで一行目を飛ばす

while (!f.AtEndOfStream) {
s += f.ReadLine()+"\r\n"; //sに一行づつ読み込み
}
f.Close();

//PPx.Echo(s);

// 書き込み
var f2 = fso.OpenTextFile(filepath, 2);
f2.Write(s);
f2.Close();


gettitle.js

//!*script
// 与えられたhowmファイルの一行目の2文字~30字を切り取ったものを返すスクリプト
// 第一引数:howmファイルのパス
// %*script(%0Script\gettitle.js,%R)

var filepath = PPx.Arguments.Item(0);
var objFileSys = PPx.CreateObject("Scripting.FileSystemObject");
var objInFile = objFileSys.OpenTextFile(filepath, 1);
var str = objInFile.ReadLine().slice( 2,30 );
objInFile.Close();

PPx.result = str;


以下を編集して取り込み。パスは各自で読み替えてください。
KC_main	= {	; PPcメイン窓
\K	,*ifmatch "/D:\\Temp\\todo/",%1 %: *script %0Script\settitle.js,D:\\Temp\\todo,%"todo"%E %: *stop
	%K"@\K"
\E	,*ifmatch "/D:\\Temp\\todo/",%1 %: *script %0Script\changetitle.js,%R,%"todoの変更"%{%*script(%0Script\gettitle.js,%R)%}%: *stop
	%K"@\E"
}

_Command	= {	; ユーザコマンド・関数
todo	= *script %0Script\settitle.js,D:\Temp\todo,%*arg(1)
}


やり方


*todo メモの内容

でメモを作成。todoフォルダでShift+Kを押すと表示される一行編集に入力してもいい。


todoフォルダでhowmファイルにカーソルをあわせ、Shift+Eを押すとタイトルを変更できる。


追記 2021-01-28

*todo の引数がなければtodoフォルダを開く設定は以下のようになる。

_Command	= {	; ユーザコマンド・関数
todo	= *ifmatch !0,0%*arg(1) %: *script %0Script\settitle.js,C:\Users\tukasa\Dropbox\todo,%*arg(1) %: *stop
	*execute C,*jumppath "C:\Users\tukasa\Dropbox\todo" %: *focus C
}

0 件のコメント:

コメントを投稿