はじめまして、Sleipnir 開発担当の上田です。
プログラミングをしていて関数を作るたびに、関数ヘッダを別の箇所からコピーして、
ペーストして、書き換えて、不要な箇所を削除して作成するのは大変です。
今回は、Visual Studio のマクロを使ってもっと楽に関数ヘッダを付けてみたいと思います。
説明に使用する Visual Studio は 2010 で
以下のような関数ヘッダ付けることが目標になります。
1.関数ヘッダマクロの内容
' 一時データパスを取得 Function GetDataPath() Return FileIO.SpecialDirectories.Temp + "\vc_macro_.dat" End Function 'ユーザを取得 Function GetUser() Dim strUser As String ' 一時データパスを取得 Dim strPath As String = GetDataPath() ' 名前を読み込む If FileIO.FileSystem.FileExists(strPath) Then Dim reader As System.IO.StreamReader reader = FileIO.FileSystem.OpenTextFileReader(strPath) strUser = reader.ReadLine() reader.Close() End If If strUser = "" Then strUser = InputBox("名前を入力してください", "名前") ' 次回の為に名前を書き込む Dim writer As System.IO.StreamWriter writer = FileIO.FileSystem.OpenTextFileWriter(strPath, False) writer.WriteLine(strUser) writer.Close() End If Return strUser End Function Sub 関数ヘッダ() Dim txtSelection As EnvDTE.TextSelection Dim dateTime As DateTime Dim strBrief As String Dim strUser As String ' ユーザ取得 strUser = GetUser() strBrief = InputBox("要約を入力してください", "要約") dateTime = System.DateTime.Today txtSelection = DTE.ActiveWindow.Selection txtSelection.StartOfLine() txtSelection.Insert("/**") txtSelection.NewLine() : txtSelection.StartOfLine() txtSelection.Insert(" * @brief") : txtSelection.Indent() : txtSelection.Insert(strBrief) txtSelection.NewLine() : txtSelection.StartOfLine() txtSelection.Insert(" * ") : txtSelection.Indent(3) txtSelection.NewLine() : txtSelection.StartOfLine() txtSelection.Insert(" * @param") : txtSelection.Indent() : txtSelection.Insert("なし") txtSelection.NewLine() : txtSelection.StartOfLine() txtSelection.Insert(" * ") : txtSelection.Indent(3) txtSelection.NewLine() : txtSelection.StartOfLine() txtSelection.Insert(" * @return") : txtSelection.Indent() : txtSelection.Insert("なし") txtSelection.NewLine() : txtSelection.StartOfLine() txtSelection.Insert(" * ") : txtSelection.Indent(3) txtSelection.NewLine() : txtSelection.StartOfLine() txtSelection.Insert(" * @note") : txtSelection.Indent() : txtSelection.Insert("なし") txtSelection.NewLine() : txtSelection.StartOfLine() txtSelection.Insert(" * ") : txtSelection.Indent(3) txtSelection.NewLine() : txtSelection.StartOfLine() txtSelection.Insert(" * @date") : txtSelection.Indent() txtSelection.Insert(dateTime.ToString("yyyy/MM/dd")) : txtSelection.Indent() txtSelection.Insert(strUser) : txtSelection.Indent() : txtSelection.Insert("新規作成") txtSelection.NewLine() : txtSelection.StartOfLine() txtSelection.Insert(" */") txtSelection.NewLine() : txtSelection.StartOfLine() End Sub Sub データクリア() ' データパスを取得 Dim strPath As String = GetDataPath() If FileIO.FileSystem.FileExists(strPath) Then FileIO.FileSystem.DeleteFile(strPath) End If End Sub
2.関数ヘッダマクロの登録
1.Visual Studio を立ち上げて、マクロ IDE を起動 ( メニュー | ツール |
マクロ | マクロ IDE ) します。
2.プロジェクトエクスプローラのツリーより MyMacros | Module1 をダブルクリック
して編集画面を開きます。
3.”Public Module Module1″ の行から “End Module” の行までの間に、
関数ヘッダマクロを貼り付けて保存します。
3.関数ヘッダマクロの実行
1.関数ヘッダを付けたい関数の行に入力カレットを移動します。
2.Visual Studio のマクロエクスプローラ ( メニュー | ツール | マクロ |
マクロ エクスプローラ ) を表示します。
3.マクロエクスプローラのツリーより MyMacros | Module1 | 関数ヘッダ をダブル
クリックします。
名前,要約を入力する画面が出てきて入力すると関数ヘッダが作成されます。
@param, @return, @note は “なし” 固定にしているのである程度の書き換えが
必要ですが...
※1.名前は初回のみになりファイルに保存されます。
C:\Users\<ユーザー名>\AppData\Local\Temp\vc_macro_.dat
※2.名前の再度入力したい場合は、データクリアのマクロを使います。
4.より便利に使う為に
関数ヘッダを作るたびにマクロエクスプローラから実行していると
意外と大変なので、ツールバーやショートカットキーに登録すると
より便利に使えます。
今回は関数ヘッダのマクロのみ説明しましたが、少し変更するとファイルヘッダの
マクロも簡単にできると思います。