よく考えたら、wikiを使わなくても普通にテキストファイルを使うだけで
howmに望むことが実現できるきがした。
webで公開するわけではないので、wikiにしなくても良かったなぁ。
ファイル名を書いておいたら右クリックでジャンプできるので、それだけでかなりのことができそう(あらためて、よく出来ていると思う)。
データはテキストで保存し、Dropboxで共有すれば完璧(あ~ぁInfernoで閉じられていない)。
日付の挿入
< date
検索してジャンプ
grep -n WORD パス
でOK。
検索結果を右クリックすればジャンプできる。
^=で検索すればタイトル行を抜き出せる。
TODO管理
→まだ自動では出来ていないが、TODOと記して検索に任せている
新規ファイル作成
現在時刻をYYYYMMDDhhmmssで出力するコマンドdate2を作成。
date=`{date2};echo '= '> $date.txt;plumb $date.txt
最近変更のあったファイル
ls -t
お、簡単。
最大?件とかする場合はheadで、、と思ったがheadがないぞ。むむ。
細かいソートをする場合はls かdu で詳細情報を出して、
カラムでソート、かな。カラムの取り出し方はどうするんだろう。awkがない。
ひとまずこのくらいで事足りている。
howmはもっと機能があるけどもともと使いこなしていないからOK。
※date2.b
implement Date2;
include "sys.m";
sys: Sys;
include "draw.m";
include "daytime.m";
include "arg.m";
Date2: module
{
init: fn(ctxt: ref Draw->Context, argv: list of string);
};
usage()
{
sys->fprint(sys->fildes(2), "usage: date [-un] [seconds]\n");
raise "fail:usage";
}
nomod(m: string)
{
sys->fprint(sys->fildes(2), "date: cannot load %s: %r", m);
raise "fail:load";
}
init(nil: ref Draw->Context, argv: list of string)
{
sys = load Sys Sys->PATH;
daytime := load Daytime Daytime->PATH;
if (daytime == nil)
nomod(Daytime->PATH);
arg := load Arg Arg->PATH;
if (arg == nil)
nomod(Arg->PATH);
nflag := uflag := 0;
arg->init(argv);
while ((opt := arg->opt()) != 0) {
case opt {
'n' =>
nflag = 1;
'u' =>
uflag = 1;
* =>
usage();
}
}
argv = arg->argv();
arg = nil;
if (argv != nil && (tl argv != nil || !isnumeric(hd argv)))
usage();
now: int;
if (argv != nil)
now = int hd argv;
else
now = daytime->now();
if (nflag)
sys->print("%d\n", now);
else if (uflag)
#sys->print("%s\n", daytime->text(daytime->gmt(now)));
{
#time: ref Tm;
time := daytime->gmt(now);
sys->print("%04d%02d%02d%02d%02d%02d\n",
time.year + 1900,
time.mon + 1,
time.mday,
time.hour,
time.min,
time.sec
);
}
else
#sys->print("%s\n", daytime->text(daytime->local(now)));
{
#time: ref Tm;
time := daytime->local(now);
sys->print("%04d%02d%02d%02d%02d%02d\n",
time.year + 1900,
time.mon + 1,
time.mday,
time.hour,
time.min,
time.sec
);
}
}
isnumeric(s: string): int
{
for (i := 0; i < len s; i++)
if (s[i] < '0' || s[i] > '9')
return 0;
return 1;
}
ところで、今流行のorg-modeってどうなんだろう。
acmeに持ってくることは可能?