Интегрировать переполнение стека в IDE? - PullRequest
20 голосов
/ 25 сентября 2008

Хорошо, у меня просто сумасшедшая идея. Переполнение стека выглядит очень структурированным и интегрируемым в приложения для разработки. Так возможно ли было бы, даже полезно, иметь плагин Stack Overflow для, скажем, Eclipse?

Какие функции Stack Overflow вы хотели бы напрямую интегрировать в вашу среду IDE, чтобы вы могли использовать его «изначально», не переходя в браузер?

РЕДАКТИРОВАТЬ: я думаю о способах более глубокой интеграции, чем просто использование веб-страницы внутри IDE. Например, когда вы используете определенный класс Java и у вас есть проблема, ответы от SO могут вспыхнуть. Вероятно, будут случаи, когда что-то подобное раздражает, но другие могут быть очень полезны.

Ответы [ 7 ]

21 голосов
/ 25 сентября 2008

Продолжение ответа Джоша. Этот макрос 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. щелкните в текстовом поле Press Shortcut Keys, затем нажмите ALT + F1
  9. нажмите кнопку Назначить
  10. нажмите ОК

Все это взято из поста Джеффа Этвуда Google Search VS Macro , только что измененного для поиска в StackOverflow.

11 голосов
/ 25 сентября 2008

Не думаю, что смогу выполнить какую-либо работу с SO, интегрированным в IDE. Это почти так же плохо, если не хуже, чем интеграция Digg / Reddit в IDE.

5 голосов
/ 25 сентября 2008

В Visual Studio вы можете добавить ярлык для поиска выделенного термина в StackOverflow. Джефф Этвуд писал о том, как сделать что-то похожее с Google, в своей записи в блоге макрос поиска VS.NET .

Использование этого подхода позволит вам выделить термин или сообщение об ошибке (или любой другой выбираемый текст в IDE), нажать сочетания клавиш, а затем просмотреть все результаты сопоставления в StackOverflow.

Я уверен, что есть способ сделать это и в других IDE.

3 голосов
/ 25 сентября 2008

Если StackOverflow может начать определять язык, содержащийся в каждом фрагменте кода, то я мог бы видеть плагин дополнения кода / кода-фрагмента для IDE, который отвечает на специальный синтаксис для выполнения поиска в SO и вставки части кода принятого ответы.

Например: в моем источнике я мог бы напечатать:

//# read an XML file

Синтаксис // # предлагает плагину начать поиск и отобразить список заголовков вопросов. Когда я выбираю один, он вставляет часть кода принятого ответа.

2 голосов
/ 25 сентября 2008

Я не знаю об Eclipse, но для Visual Studio, если кто-то действительно этого хотел, он мог бы легко добавить SO RSS-канал для «Новостного канала стартовой страницы», чтобы список вопросов SO появился на стартовой странице, или даже лучше сузить его с помощью тега ( как для C # ). Это не совсем «интеграция», но она позволит быстро взглянуть на последние вещи с минимальными усилиями. Однако не уверен, насколько «полезным» это будет.

1 голос
/ 25 сентября 2008

У вас есть плагин RSS для Eclipse для чтения ленты StackOverflow.

Но я с тобой, плагин SO Eclipse был бы действительно крут.

0 голосов
/ 25 сентября 2008

Вы можете просто установить его как стартовую страницу в Visual Studio.

Не уверен, какую пользу это принесет ... но каждому свое.

...