/**
 *
 * 選択範囲を行番号付きで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( "クリップボードにコピーしました。" );
	}

}