是否将堆栈溢出功能集成到IDE中?

时间:2020-03-06 14:44:00  来源:igfitidea点击:

好吧,这只是我的一个疯狂主意。堆栈溢出看起来非常结构化,可以集成到开发应用程序中。那么是否有可能为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。