search – Navegación de código con hipervínculo

Pregunta:

Me gustaría navegar por el código fuente en emacs buscando hits de 'palabra' o 'etiqueta' de una manera algo similar a etags pero:

  • hacer clic en las palabras para buscar coincidencias en una base de código (por ejemplo, un directorio o proyecto)
  • cada clic conduce a una vista de lista de resultados de búsqueda que en sí misma tiene palabras en las que se puede hacer clic para buscar nuevamente

Para ser más específico: aquí hay un programa que funciona de manera similar a lo que me gustaría usar en emacs: es una pequeña aplicación web en Python:

https://github.com/mseaborn/sbrowse

Básicamente, hay dos vistas, que quizás podrían mapear en emacs algo como esto:

web view -> emacs 'view'
------------------------
source code -> a regular editing buffer with appropriate mode (say python-mode)
hits listing -> something like compilation-mode

En la vista del código fuente, uno puede hacer clic en una 'palabra' para saltar a la lista de resultados.

La lista de visitas se parece al bloque en línea a continuación (aquí he mostrado lo que vería al buscar 'spam'

path/to/file.py:
104:    ham = spam()
123:    # Some more spam

path/to/other/file.py
98:     ham *= spam ** 2

Desde aquí uno podría:

  • Haga clic en 'jamón' o 'Algunos' y obtenga una lista similar para esa palabra
  • Haga clic en un número de línea ('98: ') para saltar a una vista de código fuente que muestra el resultado en contexto
  • Hacer clic en la ruta de un archivo es un enlace para saltar a la parte superior de la vista del código fuente correspondiente

Por lo general, la búsqueda se realiza mediante grepping simple de palabras basadas en límites de palabras regexp o similares. Sin embargo, otra característica de sbrowse que es agradable es que tiene implementaciones de búsqueda conectables. Por ejemplo, me gustaría poder implementar una función elisp o un comando unix para buscar usando https://github.com/google/codesearch , de modo que los clics en ambas vistas realicen la búsqueda usando ese programa.

¿Hay algo disponible como esto en el universo emacs?

Respuesta:

Quizás pueda probar cualquiera de las variantes de interfaz AG. AG con PCRE admite búsquedas de expresiones regulares en archivos.

Este es un ejemplo de cómo hacer esto en Emacs: https://github.com/syohex/emacs-helm-ag

ver la opción personalizada:

(setq helm-ag-use-emacs-lisp-regexp t)

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım