Integrar Stack Overflow en IDEs?
-
02-07-2019 - |
Pregunta
Bueno, esto es solo una idea loca que tengo. Stack Overflow se ve muy estructurado e integrable en aplicaciones de desarrollo. Entonces, ¿sería posible, incluso útil, tener un complemento de desbordamiento de pila para, por ejemplo, Eclipse?
¿Qué funciones de Desbordamiento de pila desea que se integren directamente en su IDE para que pueda usarlo " nativamente " sin cambiar a un navegador?
EDITAR: Estoy pensando en formas de integración más profunda que simplemente usando la página web dentro del IDE. Al igual que cuando usa una cierta clase de Java y tiene un problema, las respuestas de SO pueden estallar. Probablemente haya casos en los que algo como esto sea molesto, pero otros pueden ser muy útiles.
Solución
Siguiendo la respuesta de Josh. Esta macro de VS buscará en StackOverflow el texto resaltado en el IDE de Visual Studio. Solo resalta y presiona 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
Para instalar:
- vaya a Herramientas - Macros - IDE
- cree un nuevo Módulo con un nombre de su elección en " MyMacros " ;. O usa un módulo existente.
- pega el código anterior en el módulo
- agregue una referencia al espacio de nombres System.Web (para HttpUtility) al módulo
- cierra la ventana de macro IDE
- vaya a Herramientas - Opciones - Entorno - Teclado
- escribe " google " en el cuadro de comandos Comandos que contienen texto. La macro SearchGoogleForSelectedText debería aparecer
- haga clic en el cuadro de texto Presione las teclas de acceso directo, luego presione ALT + F1
- haz clic en el botón Asignar
- haz clic en Aceptar
Todo esto está tomado de Macro de Búsqueda de Google VS de Jeff Atwood , solo se modificó para buscar StackOverflow en su lugar.
Otros consejos
No creo que pueda realizar ningún trabajo con SO integrado en un IDE. Es casi tan malo, si no peor, que integrar Digg / Reddit en un IDE.
En Visual Studio, puede agregar un acceso directo para buscar un término resaltado en StackOverflow. Jeff Atwood escribió sobre hacer algo similar con Google en su macro VS.NET de búsqueda de Google entrada de blog.
El uso de este enfoque le permitiría resaltar un término o mensaje de error (o cualquier otro texto seleccionable en el IDE), presionar las teclas de acceso directo y luego ver todos los resultados coincidentes en StackOverflow.
Estoy seguro de que también hay una forma de hacer esto en otros IDE.
Si StackOverflow puede comenzar a identificar el idioma que contiene cada fragmento de código, entonces podría ver un complemento de finalización de código / fragmento de código en un IDE que responde a una sintaxis especial para realizar búsquedas en SO e insertar la porción de código de aceptada respuestas.
Por ejemplo: en mi fuente podría escribir:
//# read an XML file
La sintaxis de // # solicita al complemento que inicie una búsqueda y muestre una lista de títulos de preguntas. Cuando elijo uno, inserta la parte del código de la respuesta aceptada.
No sé sobre Eclipse, pero para Visual Studio, si alguien realmente quisiera esto, podría agregar fácilmente la fuente SO RSS para el " Canal de noticias de la página de inicio " así que la lista de preguntas SO apareció en la página de inicio, o incluso mejor, delimítela con una etiqueta ( como para C # ). No es exactamente "integración", pero proporcionaría un vistazo rápido a las cosas recientes con un esfuerzo extremadamente pequeño. Sin embargo, no estoy seguro de cómo " útil " sería.
Tienes el complemento RSS para que Eclipse lea el StackOverflow alimentación.
Pero estoy contigo, un plugin SO Eclipse sería realmente genial.
Puede configurarlo como su página de inicio en Visual Studio.
No estoy seguro de qué beneficio proporcionaría esto ... pero a cada uno lo suyo.