まずは通常の動作。

上のように、スクリプトエディタの History でエラー時ライン番号を表示する設定をしている場合に、下のスクリプトを実行すると、
1 2 3 4 5 6 | global proc assert() { warning "warning:hogehoge" ; error "error:hogehoge" ; print "hogehoge" ; } |

こんな風に、スクリプトのパスと行番号に続いてメッセージが表示されます。
で、このスクリプトパスと行番号を出さないようにする為に、今まではひと手間かけていました。
こんな感じ。
1 2 3 4 5 6 7 8 9 10 11 12 | global proc assert2() { int $buf =`commandEcho -q -ln`; commandEcho -ln off; warning "warning:hogehoge" ; catch (`error "error:hogehoge" `); commandEcho -ln $buf ; print "hogehoge" ; } |
commandEcho というのが Line number in errors のこと。
3行目でバッファリングしておいて一旦オフにします。
error コマンドでスクリプトが停止してしまわないように catch も使用しています。
コレを実行すると Line number in errors にチェックが入っていても、スクリプトパスと行番号が表示されなくなります。

catch のおかげで print コマンドも実行されていますね。
ま、意外と面倒です。
で、warning と error に新しく追加されたオプション。
-noContext(-n) 警告メッセージにコンテキスト情報を出さないようにできるらしい。
これを使ってみます。
1 2 3 4 5 6 7 | global proc assert3() { warning -noContext "warning:hogehoge" ; error -noContext "error:hogehoge" ; print "hogehoge" ; } |
その結果、

commandEcho の操作をしなくても行番号が表示されなくなりました!
さすがに error コマンドはスクリプトが止まってしまうので catch は使用しないと駄目ですが、便利かも。