/**
*
* 選択範囲を行番号付きでOutputに出力/クリップボードへコピーする
* usage: :run cpAddNum.vvs 選択範囲を行番号付きでOutputに出力
* :run cpAddNum.vvs -o 選択範囲を行番号付きでOutputに出力
* :run cpAddNum.vvs -c 選択範囲を行番号付きでクリップボードにコピーする
* クリップボードコピー時は作業用にビューを作成するためにビューを作っていいか
* 確認するダイアログが開きます。yと答えてください。終了後は自動でビューを閉じます。
*
* ※ :'<,'>run cpAddNum.vvs でもちゃんと動きます。
*
*/
function main(){
if( !thisView.isSelected() ){
statusBar.write( "選択範囲がありません" );
return;
}
// クリップボードにコピーするか調べる
var copyFlag = 0;
if( __argv.getCount() > 1 ){
var argv1 = __argv[1];
if( argv1 == "-c" ){
copyFlag = 1;
}else if( argv1 == "-o" ){
copyFlag = 0;
}else{
statusBar.write( " 引数は-c(クリップボードにコピー)か-o/無指定(アウトプットに出力)のみです。" );
return;
}
}
var targetView = thisView;
var sel = targetView.getSelectedRange();
var lineFormat = "%" + sel.line2.toString().length() + "d: %s\n";
if( copyFlag == 0 ){
for( var i=sel.line1; i<=sel.line2; i++ ){
console.write( format( lineFormat, i, targetView.getLineString( i ) ) );
}
}else{
// クリップボード操作系のメソッドが選択範囲コピーしかないので
// 作業用のドキュメントを作成してそこからコピーする。
var tmpDoc = openDocument( thisDocument.getTitle() + ".tmp" );
var tmpView = tmpDoc.getView();
for( var j=sel.line1; j<=sel.line2; j++ ){
tmpView.insertText( format( lineFormat, j, targetView.getLineString( j ) ) );
}
tmpView.setSelect();
tmpView.copy();
tmpView.close();
statusBar.write( "クリップボードにコピーしました。" );
}
}