インデント単位で折りたたみたい:SmartOutline for .NET
先日、猿頁 » Blog Archive » インデント単位で折りたたみたい:Code Collapse VS Add-in で
実はもうひとつ、同じようなアドインを見つけてある
と言ったんですが、そいつが SmartOutline for .NET って奴でして。
SubMain / SmartOutline for VS2005
VSIP 使って作ったんだぜーとか Microsoft Visual Studio Extensibility Contest で 3 位獲ったんだぜーとかなかなか胸を張った勢いのアドインなわけですが。
一方で、先にご紹介した Code Collapse VS Add-in の作者 Jay Flowers さんは、
It, IMHO, requires too many actions to create a region.
(私からすれば、操作性悪すぎ。)
とコメントされてまして。
さて、どんなもんでしょうかね。
1. 入手とインストール
提供されているサイトはこちら。
SubMain / SmartOutline for VS2005
ページ右側の「Download」ボタンからダウンロードページへ飛び、メールアドレスを入力して「Download Now」ボタンを押せば、.msi ファイル(Microsoft インストーラ用ファイル)をダウンロードできます。
入力したメールアドレスは、…特になんのメールも届いてきません。何のために入力が必要なのかよくわからないんですがまあいいや。
あとは 入手した SmartOutline_v1.1.msi をエクスプローラあたりからダブルクリックでもしてインストーラを起動、画面に指示に従っていけばいいわけなんですが。
だめだ、「管理者特権が必要です」と出てしまう。
こうなると、.msi はちょっとしんどいです。.exe と違い、エクスプローラから右クリック → コンテキストメニューを表示させても、「管理者として実行」が表示されません。
しかたがないので、スタートメニューから Windows PowerShell を「管理者として実行」。
(Windows7 では、「コマンドプロンプト」がメニューからなくなってしまっているような感じです。cmd.exe 自体は存在しており、手動では起動できるんですけれども。私の環境だけなのかなー。)
SmartOutline_v1.1.msi のあるフォルダをカレントにして、
msiexec /i SmartOutline_v1.1.msi
と手で打ち込んで実行してやります。
これでなんとかインストール完了。
なんでこんな無意味にハードル高いんでしょう。.msi を管理者権限で実行させる方法を調べるのに、少々手間がかかってしまったではないですか。
2. 初期設定
インストール完了後、Visual Studio を起動してみると
メニューバーに「SmartOutline」の項目が追加されていました。
[Options...]で設定ダイアログを開いてみましたが、とくに初期設定を変える必要はなさそうです。
3. 使い心地
たたみ込みたい範囲を選択して、
メニューバーから[SmartOutline] → [Create New Region...]を選択するか、
選択時に表示されるスマートタグから[Create New Region...]を選択するか、

Alt+「S」→Alt+「C」のショートカットを押すかをすると、Smart Outline が起動。
って、リージョン命名が必須かよ!
[Region Name]に名称を入力して、ついでに[Collapse region]にチェックもつけて、
[OK]。
なるほど、たたみ込まれた時の表示が、指定した「リージョン名」になるわけですね。
でも「リージョン名必須」はかなりつらいなー。いちいち入力しないとたたみ込めないってのはさほどな生産性の向上を望めなかったりするような気がします。
また、リージョン設定後のツールチップもつらい。
リージョン名が表示されるのはいいんですが、リージョン内のどこにマウスをポイントしても SmartOutline の表記になってしまい、IDE 標準の説明が全部殺されてしまいます。
やはり、変数名をポイントした場合にはその変数の情報が表示されてほしいところです。
メリットとしては、設定したリージョンがちゃんと保存されるというのがデカいです。
ファイル的には、.sodata というリージョンの位置・範囲情報を xml で記録したファイルが独自に生成されます。
ので、ドキュメントウィンドウを閉じようが VS IDE を閉じようが、次回読み込み時にちゃんとリージョンの設定が復元されます。
もひとつ、他のリージョンと部分的にカブるような範囲指定でリージョンを作ろうとすると、「カブらないように選択範囲を広げてもいいすかね?」という確認ダイアログが表示されるのも安全設計で嬉しいです。
たとえば、For ~ Next の範囲にリージョンを設定している場合に、
そのリージョンの途中から外側までを範囲として新しくリージョンを設定しようとすると、
こんな感じのダイアログが。
ここで[はい]と答えると、1 つめのリージョンをすべて含むように 2 つめのリージョンの範囲が広がります。
[いいえ]と答えると、2 つめのリージョンは設定されません。
うーん、びみょー。
範囲選択なし・インデント基準、名前付けなしで折りたためる簡便さで、操作性は間違いなく Code Collapse の方が使いやすいです。
一方で、リージョンのネストを破壊しない安全性と、設定した折りたたみ構造を保存できる堅牢性は SmartOutline に軍配を上げたいところです。
名前付けの強制はまだしも、ツールチップの乗っ取りはかえって生産性を下げかねないので、、そこだけでも機能をつぶせるなら SmartOutline を使ってみようかなーとも思うんですが、サポートフォーラムで「SmartOutline のソースを公開する予定はまったくないっ」と中の人が言い切っちゃってますし、機能追加/改善の要求も 2 年前くらいから完全無視の状態になっちゃってますし。
となると、ソース公開されている Code Collapse の方にリージョン保存の機能を追加する方が現実的かなあ。
むう。
いずれにせよ、ここまでのものが提供されているのであれば、充分使い物なりそうな感じです。
しばらく、Code Collapse に的を絞って使い込んでみようかと思います。
















