読者です 読者をやめる 読者になる 読者になる

プログラマーな日々

プログラマーです。CSharper。主にプログラミング、時々ライフハック。

Visual Studio 2015から公開リポジトリを横断検索するマクロを書いてみた

Visual Studio マクロ

公開リポジトリのソースコードを横断検索できる「searchcode」というサイトを知りました。

techmemo.biz

先日書いたGitHubを検索するマクロを元に、searchcodeを検索するマクロを書いてみました。

続きを読む

Visual StudioからGitHubのコードを検索するマクロを書いてみました

Visual Studio マクロ GitHub

Visual Studioのマクロ機能は2012で廃止されてしまいました。理由は使用しているユーザーが少ないからだそうですが、個人的は残念でした。

そのマクロを2015で使える拡張機能「Macros for Visual Studio」が公開されたので、GitHubのコードを検索するマクロを書いてみました。

マクロ作成手順

1. Nugetから「Macros for Visual Studio」をインストールします。
2. メニュー[ツール] - [Macros] - [Macro Explorer]を実行します。
3. Macro Explorerの保存アイコンを実行します。
f:id:JHashimoto:20160521140849p:plain
4. ダイアログで、マクロ名と割り当てるショートカットキーを入力し、OKを実行します。
5. Macro Explorerで、作成されたファイルを右クリックし、[開く]を実行します。
6. ソースコードをエディタに貼り付けて、保存します。

ソースコード

var queryBase1 = "https://github.com/search?l="
var queryBase2 = "&ref=searchresults&type=Code&utf8=✓";

if (dte.ActiveDocument.Selection != "") {
    var fileName = new String(dte.ActiveDocument.ProjectItem);

    if (fileName.match(".+.cs"))
        queryBase1 += "C%23";
    else if (fileName.match(".+.vb"))
        queryBase1 += "visual-basic";
    else if (fileName.match(".+.js"))
        queryBase1 += "JavaScript";

    dte.ExecuteCommand("View.WebBrowser", queryBase1 + "&q=" + dte.ActiveDocument.Selection + queryBase2);
}

とりあえず、C#とVBとJavaScriptに対応しました。

使い方

1. エディターで、検索したい文字列を選択します。
f:id:JHashimoto:20160521141539p:plain
2 .割り当てたショートカットキーを入力します。
3. 新しいタブが開き、GitHubの検索結果が表示されます。
f:id:JHashimoto:20160521141717p:plain

昔はマクロといえばVisual Basicでしたが、今時はやっぱりJavaScriptなんですね。

【.NET】文字列が指定された書式の日時として妥当かどうかを返す拡張メソッドIsValidAsDateTimeExact

.NET 拡張メソッド

前回は、文字列が日時として妥当かどうかを返す拡張メソッドを作成しました。
blog.jhashimoto.net

そこで、今回は、文字列が指定された書式の日時として妥当かどうかを返す拡張メソッドIsValidAsDateTimeExactを作成してみます。

続きを読む

文字列が日時として妥当かどうかを返す拡張メソッドIsValidAsDateTime

.NET 拡張メソッド

文字列の変換は不要で、日時として妥当かどうかを知りたいだけの場合、DateTime.TryParseを使うのは、煩わしいですよね。

DateTime result;    // わざわざ変数を宣言しなければならない。
bool isValid = DateTime.TryParse("2016/01/01", out result);

そこで、文字列が日時として妥当かどうかを返す拡張メソッドIsValidAsDateTimeを書いてみました。

続きを読む