20

好吧,这只是我的一个疯狂想法。Stack Overflow 看起来非常结构化并且可以集成到开发应用程序中。那么,是否有可能,甚至有用,为 Eclipse 提供一个 Stack Overflow 插件?

您希望将 Stack Overflow 的哪些功能直接集成到您的 IDE 中,以便您可以“本地”使用它而无需更改为浏览器?

编辑:我正在考虑更深入的集成方式,而不仅仅是在 IDE 中使用网页。就像当您使用某个 Java 类并遇到问题时,来自 SO 的答案可能会突然爆发。在某些情况下,这样的事情可能很烦人,但其他人可能会很有帮助。

4

7 回答 7

21

跟进乔希的回答。此 VS 宏将在 StackOverflow 中搜索 Visual Studio IDE 中突出显示的文本。只需突出显示并按 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

安装:

  1. 转到工具 - 宏 - IDE
  2. 在“MyMacros”下使用您选择的名称创建一个新模块。或使用现有模块。
  3. 将上面的代码粘贴到模块中
  4. 向模块添加对 System.Web 命名空间(用于 HttpUtility)的引用
  5. 关闭宏 IDE 窗口
  6. 转到工具 - 选项 - 环境 - 键盘
  7. 在“显示包含的命令”文本框中键入“google”。SearchGoogleForSelectedText 宏应该会出现
  8. 单击“按快捷键”文本框,然后按 ALT+F1
  9. 单击分配按钮
  10. 点击确定

这一切都取自 Jeff Atwood 的Google Search VS Macro帖子,只是修改为搜索 StackOverflow。

于 2008-09-25T18:06:15.583 回答
11

我认为我无法将 SO 集成到 IDE 中完成任何工作。它几乎和将 Digg/Reddit 集成到 IDE 中一样糟糕,如果不是最糟糕的话。

于 2008-09-25T17:08:03.693 回答
5

在 Visual Studio 中,您可以添加一个快捷方式来搜索 StackOverflow 中突出显示的术语。Jeff Atwood 在他的Google 搜索 VS.NET 宏博客条目中写到了与 Google 做类似的事情。

使用这种方法,您可以突出显示术语或错误消息(或 IDE 中的任何其他可选文本),按下快捷键,然后在 StackOverflow 上查看所有匹配结果。

我确信在其他 IDE 中也有办法做到这一点。

于 2008-09-25T17:05:44.400 回答
3

如果 StackOverflow 可以开始识别每个代码片段包含的语言,那么我可以看到 IDE 的代码完成/代码片段插件,该插件响应特殊语法,用于在 SO 上执行搜索并插入已接受答案的代码部分。

例如:在我的来源中,我可能会输入:

//# read an XML file

//# 语法提示插件开始搜索并显示问题标题列表。当我选择一个时,它会插入已接受答案的代码部分。

于 2008-09-25T17:08:00.603 回答
2

我不了解 Eclipse,但对于 Visual Studio,如果有人真的想要这个,他们可以轻松地为“起始页新闻频道”添加 SO RSS 提要,因此 SO 问题列表出现在起始页中,或者甚至更好,缩小它带有一个标签(如 C#)。它不完全是“集成”,但它可以让您以极少的努力快速了解最近的事情。但是,不确定它有多“有用”。

于 2008-09-25T17:03:25.797 回答
1

您有 Eclipse 的RSS 插件来读取 StackOverflow 提要。

但我支持你,一个 SO Eclipse 插件会很酷。

于 2008-09-25T17:06:43.087 回答
0

您可以将其设置为 Visual Studio 中的起始页。

不确定这会带来什么好处……但对每个人都有好处。

于 2008-09-25T16:59:48.503 回答