2011年3月26日土曜日

wikifs いらなくないか?

Acmeでhowmっぽいことをしようと、wikifsを使っていたが、
よく考えたら、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に持ってくることは可能?

0 件のコメント:

コメントを投稿