スタック オーバーフローを IDE に統合しますか?
-
02-07-2019 - |
質問
わかりました、これは私が持っているただのクレイジーなアイデアです。Stack Overflow は非常に構造化されており、開発アプリケーションに統合可能に見えます。では、たとえば Eclipse 用の Stack Overflow プラグインを使用することは可能でしょうか、あるいは便利でしょうか?
ブラウザに変更せずに「ネイティブ」に使用できるように、Stack Overflow のどの機能を IDE に直接統合したいと思いますか?
編集:IDE 内の Web ページを使用するだけでなく、より深い統合の方法を考えています。特定の Java クラスを使用していて問題が発生した場合と同様に、SO からの回答が炎上する可能性があります。おそらく、このようなことが煩わしい場合もあるでしょうが、非常に役立つ場合もあります。
解決
ジョシュの答えをフォローアップします。この VS マクロは、Visual Studio IDE で強調表示されたテキストを StackOverflow で検索します。ハイライト表示して Alt+F1 を押すだけです
Public Sub SearchStackOverflowForSelectedText()
Dim s As String = ActiveWindowSelection().Trim()
If s.Length > 0 Then
DTE.ItemOperations.Navigate("http://www.stackoverflow.com/search?q=" & _
Web.HttpUtility.UrlEncode(s))
End If
End Sub
Private Function ActiveWindowSelection() As String
If DTE.ActiveWindow.ObjectKind = EnvDTE.Constants.vsWindowKindOutput Then
Return OutputWindowSelection()
End If
If DTE.ActiveWindow.ObjectKind = "{57312C73-6202-49E9-B1E1-40EA1A6DC1F6}" Then
Return HTMLEditorSelection()
End If
Return SelectionText(DTE.ActiveWindow.Selection)
End Function
Private Function HTMLEditorSelection() As String
Dim hw As HTMLWindow = ActiveDocument.ActiveWindow.Object
Dim tw As TextWindow = hw.CurrentTabObject
Return SelectionText(tw.Selection)
End Function
Private Function OutputWindowSelection() As String
Dim w As Window = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)
Dim ow As OutputWindow = w.Object
Dim owp As OutputWindowPane = ow.OutputWindowPanes.Item(ow.ActivePane.Name)
Return SelectionText(owp.TextDocument.Selection)
End Function
Private Function SelectionText(ByVal sel As EnvDTE.TextSelection) As String
If sel Is Nothing Then
Return ""
End If
If sel.Text.Length = 0 Then
SelectWord(sel)
End If
If sel.Text.Length <= 2 Then
Return ""
End If
Return sel.Text
End Function
Private Sub SelectWord(ByVal sel As EnvDTE.TextSelection)
Dim leftPos As Integer
Dim line As Integer
Dim pt As EnvDTE.EditPoint = sel.ActivePoint.CreateEditPoint()
sel.WordLeft(True, 1)
line = sel.TextRanges.Item(1).StartPoint.Line
leftPos = sel.TextRanges.Item(1).StartPoint.LineCharOffset
pt.MoveToLineAndOffset(line, leftPos)
sel.MoveToPoint(pt)
sel.WordRight(True, 1)
End Sub
インストールするには:
- [ツール] - [マクロ] - [IDE] に移動します。
- 「MyMacros」の下に任意の名前で新しいモジュールを作成します。または、既存のモジュールを使用します。
- 上記のコードをモジュールに貼り付けます
- System.Web 名前空間 (HttpUtility 用) への参照をモジュールに追加します。
- マクロIDEウィンドウを閉じます
- [ツール] - [オプション] - [環境] - [キーボード]に移動します。
- [次を含むコマンドを表示] テキストボックスに「google」と入力します。SearchGoogleForSelectedText マクロが表示されるはずです
- 「ショートカットキーを押す」テキストボックスをクリックし、ALT+F1を押します。
- 「割り当て」ボタンをクリックします
- 「OK」をクリックします
これはすべて Jeff Atwood の記事から引用したものです Google 検索 VS マクロ 代わりに StackOverflow を検索するように変更しました。
他のヒント
SO を IDE に統合して作業を行うことはできないと思います。これは、Digg/Reddit を IDE に統合するのと同じくらい、あるいは最悪ではありますが。
Visual Studio では、StackOverflow で強調表示された用語を検索するためのショートカットを追加できます。ジェフ・アトウッドは、Google と同様のことを行うことについて次のように書いています。 Google 検索 VS.NET マクロ ブログの記事。
このアプローチを使用すると、用語またはエラー メッセージ (または IDE 内のその他の選択可能なテキスト) を強調表示し、ショートカット キーを押すと、StackOverflow で一致する結果をすべて表示できます。
他のIDEでもこれを行う方法があると思います。
StackOverflow が各コード スニペットに含まれる言語の識別を開始できれば、SO で検索を実行し、受け入れられた回答のコード部分を挿入するための特別な構文に応答する IDE へのコード補完/コード スニペット プラグインが表示される可能性があります。
例えば:ソースに次のように入力します。
//# read an XML file
//# 構文は、プラグインに検索を開始して質問タイトルのリストを表示するように促します。1 つを選択すると、受け入れられた回答のコード部分が挿入されます。
Eclipse については知りませんが、Visual Studio の場合、誰かが本当にこれを望んでいれば、「スタート ページ ニュース チャンネル」の SO RSS フィードを簡単に追加できるので、SO の質問リストがスタート ページに表示されるか、さらに良く言えば、狭い範囲で表示されるようになります。タグを付けて(C#の場合のように)。正確には「統合」ではありませんが、非常に少ない労力で最近のことをざっと確認できます。ただし、それがどれほど「役立つ」かはわかりません。
あなたが持っているのは、 RSSプラグイン Eclipse が StackOverflow フィードを読み取るようにします。
しかし、私もそう思います。SO Eclipse プラグインは本当に素晴らしいでしょう。
これを Visual Studio のスタート ページとして設定するだけです。
これによってどのようなメリットが得られるのかはわかりませんが...しかし、それぞれ独自のものです。