私は Visual Studio のアドインを作成するのは初めてですが、現在アクティブなコード ウィンドウでテキストを少し操作する VS2010 用の簡単なツールを作成することができました。現在のテキスト ビューの言語 (VB.Net、C# など) を知る必要があるところまで来ました。
次のコードを使用して、ファイル名を取得しようとしました(拡張子を調べて言語を判断できます)。
IVsTextManager txtMgr = (IVsTextManager)GetService(typeof(SVsTextManager));
int mustHaveFocus = 1;//means true
txtMgr.GetActiveView(mustHaveFocus, null, out currentTextView);
userData = currentTextView as IVsUserData;
if (userData == null)// no text view
{
Console.WriteLine("No text view is currently open");
return;
}
object pathAsObject;
Guid monikerGuid = typeof(IVsUserData).GUID;
userData.GetData(ref monikerGuid, out pathAsObject);
string docPath = (string)pathAsObject;
残念ながら、pathAsObject は常に null を返します。ファイル名/言語を取得する他の方法はありますか?