LoginSignup
2
0

More than 5 years have passed since last update.

Paper Plane xUI で peco を使ってフォルダ配下を検索

Last updated at Posted at 2017-03-05

Paper Plane xUI(PPx)に一発でソースコード検索&表示できる「peco」改を移植した - Qiita に触発されて考えていたら昔やりたかったことができるようになった話。

やりたかったのは、howm のファイルをインクリメンタルサーチしたいというもの。
以下のスクリプトを *script ppxpero.js9,C:\User\hokorobi\howm,^^=\s と実行してやると、howm のタイトルが peco に列挙されるので migemogrep で migemo も使える。(コマンドプロンプトでは ^ がエスケープ文字なので二個続ける)
*script ppxpero.js9 で 「peco」改のようにも動く。

ppxpero.js9
//!*script
// ディレクトリ配下のファイルを peco で選択してエディタで開く
// PPx 1.53+3 x64 + Script Module R16

var args = PPx.Arguments;

// 第一引数があればそのディレクトリへ移動して検索
// 移動せずにディレクトリを指定すると
// - peco のファイルパス表示が長くなりすぎる。
// - ファイルパスと行数を分離する際に : を分割文字に使っているので C:\ などの処理が面倒。
if (args.length > 0) {
    var dir = args(0);
    PPx.Execute('*jumppath ' + dir);
}

// 第二引数があれば peco の表示対象を絞り込み
var ptquery = '.';
if (args.length > 1) {
    ptquery = args(1);
}

// 第三引数があれば peco の初期クエリとする
var pecoquery = '';
if (args.length > 2) {
    pecoquery = ' --query ' + args(2);
}

// peco 実行
// peco の出力は UTF-8 なので CP932 へ変換してクリップボードへ渡す
// FIXME: 文字コード変換に iconv より軽い方法を使いたい
// FIXME: クリップボードを汚したくない
PPx.Execute('%Obsq pt /nogroup /nocolor /S /e ' + ptquery + ' .\ | peco' + pecoquery + ' | iconv -f UTF-8 -t CP932 | clip');

// クリップボードからファイルパスと行数を取り出してエディタへ渡す
var path_line = PPx.Clipboard;
if (path_line == '') {
    PPx.Quit(-1);
}
var list = path_line.split(':');
PPx.Execute("%'editor' %'editorL'" + list[1] + ' "' + list[0] + '"');


2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0