とりあえず日記

VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ→VIM→秀丸エディタ(いまここ🍄)

秀丸エディタから VisualStudio を制御するマクロ

2011年8月5日(追記)
・日本語ファイル名を扱えるようにしました。
秀丸エディタで編集ファイルをVisualStudioで開くマクロを追加しました。
・ダウンロードはこちらから。 https://github.com/ohtorii/visual_studio_hidemaru

秀丸エディタから VisualStudio を制御するプログラマ向けのマクロです。

(github:左上のダウンロードボタンからzipを選択してください。開発中の最新版はこちら)
https://github.com/ohtorii/visual_studio_hidemaru
秀丸エディタのマクロライブラリ。安定版はこちら)
http://hide.maruo.co.jp/lib/macro/visual_studio_hidemaru.html



ソースコード秀丸エディタで書いて、ビルドする度に VisualStudio へ移動するのが面倒なので、「ビルド・リビルド・実行...etc」を秀丸エディタから出来るようにしました。
秀丸エディタ ver8.03(ver8系なら多分動くと思います)

動作イメージ

見ての通り、メニューから「コンパイル/リビルド/デバッグ・・・」の動作を選択する単純な方式です。

アウトプット枠

出力はアウトプット枠へ表示します、コンパイルエラーのあるファイル名位置で改行キーを押すかマウスクリックすると該当のファイル名と行位置へジャンプできます。

出来ること

  • コンパイル
  • ビルドのキャンセル
  • ソリューションのビルド
  • ソリューションのリビルド
  • ソリューションのクリーン
  • プロジェクトのビルド
  • プロジェクトのリビルド
  • プロジェクトのクリーン
  • デバッグ開始
  • デバッグなしで開始
  • デバッグの停止

動作環境

VisualStudio 2008
VisualStudio 2010

C++/C#/VBプロジェクトで動作を確認しています。
VisualStudioは複数起動していても正しく動作します。
Express版は未対応です(本マクロでは認識しません)。

マクロの説明

コンパイル・ビルドのキャンセル・ソリューションのビルド...etc」は1コマンド1ファイルになっています。
visual_studio_menu_simple.mac は各コマンドを呼び出しているサンプル的な位置づけです。

ファイル名 説明
visual_studio_menu_simple.mac 簡易メニュー
visual_studio_cf_compile.mac コンパイル
visual_studio_cf_cancel.mac ビルドのキャンセル
visual_studio_cf_debug.mac デバッグ開始
visual_studio_cf_debug_stop.mac デバッグの停止
visual_studio_cf_project_build.mac プロジェクトのビルド
visual_studio_cf_project_clear.mac プロジェクトのクリーン
visual_studio_cf_project_rebuild.mac プロジェクトのリビルド
visual_studio_cf_run_without_debug.mac デバッグなしで開始
visual_studio_cf_solution_build.mac ソリューションのビルド
visual_studio_cf_solution_clear.mac ソリューションのクリーン
visual_studio_cf_solution_rebuild.mac ソリューションのリビルド
visual_studio_cf_hmbook.mac 秀丸の(.hmbook)ファイルを作る(おまけマクロ)
visual_studio_call.mac 橋渡しをするマクロ
visual_studio_hidemaru.exe VisualStudioを制御する実行ファイル

visual_studio_hidemaru.exe が Visual Studio を制御しています、秀丸に依存しないので他のテキストエディから使用できるかもしれません。

内部動作

秀丸エディタで編集しているファイル名を含む Visual Studio を特定して、各種コマンド(ビルド/デバッグ・・・)を送りつけて結果を取得しています。

例えば Visual Studio が二つ起動しているとします、

・VisualStudio_0
    c:\my_app\src\main.cpp  (ソリューションエクスプローラーに含まれる)

・VisualStudio_1
    c:\project\main.cpp

このとき、c:\my_app\src\main.cpp を秀丸エディタでリビルドすると visual_studio_hidemaru.exe が VisualStudio_0 に対してリビルドコマンドを送り、ビルド中のメッセージを取得しています。

どうやって、Visual Studio を見つけるかというと、
Visual Studio を起動すると COM の RunningObjectTable に登録されます。


RunningObjectTable は IROTVIEW.EXE で表示できます。


(VC2010の例)
!VisualStudio.DTE.10.0:4464

末尾の4464はプロセスIDです。


あとは、プログラムから CreateBindCtx → monikers → GetObject → QueryInterface → Dispatch すると 該当のプロセスIDに結びついた DTE を取り出せます。
githubにソースがあるのでそちらを参照してください。


おまけ機能

Visual Studioに登録してあるファイル(cpp/h...etc)ら秀丸のプロジェクトファイル(.hmbook)を作る機能があります。

visual_studio_menu_simple.mac 90行目付近 のコメントを参照してください。if(0) を if(1) に変更すると有効
になります。

秀丸エディタ側の表示

Visual Studio側の表示

元ネタ

VIM の visual_studio.vim から拝借しました。