zsh の PROMPT に svk の trunk|branches/... を表示してみるテスト
毎回svk infoしてどこにいるか確かめるのが面倒になったので、
PROMPT='%(?..exit %?)
%{[33m%}%~%{[m%} %{[91m%}`perl /home/typester/dev/scratch/svkpath.pl $(pwd)`%{[m%}
%{[38m%}%(!.#.$)%{[m%}%{m%} '
PROMPTをこんなにして
#!/usr/bin/env perl
use strict;
use warnings;
use YAML;
use File::HomeDir;
use Path::Class qw/file dir/;
my $path = $ARGV[0] or die;
my $config = YAML::LoadFile( file(File::HomeDir->my_home, '.svk', 'config') );
my $hash = $config->{checkout}{hash};
$path = dir($path);
my $svkinfo;
do {
$svkinfo = $hash->{"$path"}
} while !$svkinfo and $path ne ($path = $path->parent);
exit unless $svkinfo;
if (my ($trunk, $branch) = $svkinfo->{depotpath} =~ m!(?:/(trunk)|/(branches/[^/]+))$!) {
print '(' . ($trunk || $branch) . ')';
}
とかしてみた。
これで
こんな感じになるわけだけども、毎回perl呼んでるので重い。
軽くできないかなー。
perlでやるなら裏でデーモン化してそこ呼ぶようにするのがいいのか。でもそこまでがんばる必要があるのかどうか。