是否将堆栈溢出功能集成到IDE中?
好吧,这只是我的一个疯狂主意。堆栈溢出看起来非常结构化,可以集成到开发应用程序中。那么是否有可能为Eclipse提供Stack Overflow插件?
我们希望将Stack Overflow的哪些功能直接集成到IDE中,以便可以在不更改浏览器的情况下"本地"使用它?
编辑:我正在考虑进行更深层集成的方法,而不仅仅是在IDE中使用网页。就像当我们使用某个Java类并遇到问题时,SO的答案可能会突然爆发。在某些情况下,类似这样的事情可能会令人讨厌,但其他情况可能会很有帮助。
解决方案
我们可以将其设置为Visual Studio中的"起始页"。
不知道这会带来什么好处……但是对每个人来说都是如此。
我不了解Eclipse,但是对于Visual Studio,如果有人真的想要这样做,他们可以轻松地为"起始页新闻频道"添加SO RSS提要,以便SO问题列表出现在起始页中,或者甚至更好它带有一个标记(如C#)。它不完全是"集成",但是可以以极少的精力快速浏览一下最近发生的事情。但是,不确定会有多"有用"。
在Visual Studio中,我们可以添加快捷方式以在StackOverflow中搜索突出显示的术语。杰夫·阿特伍德(Jeff Atwood)在他的Google搜索VS.NET宏博客条目中写道,要与Google做类似的事情。
使用此方法将使我们突出显示术语或者错误消息(或者IDE中的任何其他可选文本),按快捷键,然后在StackOverflow上查看所有匹配的结果。
我敢肯定,在其他IDE中也可以做到这一点。
我们具有用于Eclipse的RSS插件,可以阅读StackOverflow提要。
但我与我们同在,一个SO Eclipse插件真的很棒。
如果StackOverflow可以开始识别每个代码段所包含的语言,那么我可以看到IDE的代码完成/代码段插件,该插件可以响应特殊语法以在SO上执行搜索并插入接受答案的代码部分。
例如:在我的来源中,我可以输入:
//# read an XML file
//语法提示插件开始搜索并显示问题标题列表。当我选择一个时,它会插入接受答案的代码部分。
我认为将SO集成到IDE中无法完成任何工作。它几乎与将Digg / Reddit集成到IDE中一样糟糕,甚至还不算糟糕。
跟进乔希的答案。该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
- 单击分配按钮
- 点击确定
这全部取自Jeff Atwood在Google搜索VS Macro上发布的文章,该文章刚刚被修改为搜索StackOverflow。