Hatena::ブログ(Diary)

とりあえず日記 このページをアンテナに追加 RSSフィード Twitter

2011-04-02

秀丸エディタから 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系なら多分動くと思います)


動作イメージ

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

f:id:ohtorii:20110402135007p:image


アウトプット枠

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

f:id:ohtorii:20110402135006p:image


出来ること


動作環境

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 で表示できます。

f:id:ohtorii:20110402142614p:image


(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) に変更すると有効

になります。


秀丸エディタ側の表示

f:id:ohtorii:20110402135003p:image


Visual Studio側の表示

f:id:ohtorii:20110402134954p:image


元ネタ

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

softyasu(ソフト屋巣)softyasu(ソフト屋巣) 2011/07/12 15:46 秀丸エディタから VisualStudio を制御するマクロを使わさせていただきました!
便利なのですが、Windows7(64bit)で日本語が混じったパスだとエラーが出るようです。
C:\users\softyasu\appdata\roaming\HIDEMA~1\hidemaru\macro\VISUAL~1.EXE:949: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
Pythonに詳しくないので対応して頂けると幸いです。

エラーの原因と思われるパスです。
D:\c_開発中\C Program\

ohtoriiohtorii 2011/07/13 00:38 どうもです。
現象を確認しました。
今週末にでも修正してみます、しばらくお待ち下さい。

ohtoriiohtorii 2011/07/19 20:24 修正版をアップしました。
https://github.com/ohtorii/visual_studio_hidemaru
全ファイル上書きでも構いませんが、マクロを改造されているならexeだけ差し替えてください。

softyasu(ソフト屋巣) softyasu(ソフト屋巣) 2011/07/20 10:50 対応ありがとうございます。
デバッグ開始などは動きました。
ただ、リビルドなどを実行すると

Traceback (most recent call last):
File "visual_studio_hidemaru.py", line 1307, in <module>
File "visual_studio_hidemaru.py", line 1285, in start
File "visual_studio_hidemaru.py", line 1252, in main
File "<string>", line 1, in <module>
File "visual_studio_hidemaru.py", line 1171, in cmd_te_project_rebuild
File "visual_studio_hidemaru.py", line 1083, in _te_main
File "visual_studio_hidemaru.py", line 435, in _dte_output
File "visual_studio_hidemaru.py", line 181, in _vs_print
UnicodeEncodeError: 'ascii' codec can't encode characters in position 7-16: ordinal not in range(128)
とエラーが出るようです。度々申し訳ないのですが調査して頂けると嬉しいです。

ohtoriiohtorii 2011/07/20 22:55 一通り試してからリリースしたつもりですが、何か見落としがあったのかもしれません。
週末に調査&修正してみます、少々お待ち下さい。

ohtoriiohtorii 2011/07/24 15:15 修正しました。。。今度こそ大丈夫なはず。。。
https://github.com/ohtorii/visual_studio_hidemaru
うまく動かなければ教えて下さい。

ついでと言っては何ですが、秀丸で編集しているファイルをVisualStudio側で開くマクロを追加しました。
デフォルトは非表示にしています、visual_studio_menu_simple.mac を開いて if(0) を if(1) にすると有効になります。
VisualStudioと秀丸で同じファイルを編集するときに使うことを想定しています、カーソル位置も追随します。

softyasu(ソフト屋巣)softyasu(ソフト屋巣) 2011/07/25 00:29 対応ありがとうございました。無事、問題なく動きました。
動作は、VisualStudio2008と2005で動作を確認できました。
ビルド・デバッグ開始・新機能のファイル表示も問題ありません。

本当にありがとうございました。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証