2010-09-24 11 views
7

Mi versión de emacs es 23.2.1 Aunque usé lo siguiente para cambiar el backend para usar GTAGS. (requiere 'semántica/db-global) (modo-c-semántico-habilitado-gnu-global-databases') (semánticas-enable-gnu-global-databases 'C++ - modo) Intenté generar un archivo GTAGS para ser utilizado como un backend de semántica. Sin embargo, cada vez que abro un archivo C, Semántica sigue analizando archivos sin usar el archivo GTAGS.Cómo hacer emacs Uso semántico del archivo TAG generado por GTAGS

  1. ¿Es posible utilizar el archivo GTAGS en lugar del analizador semántico incorporado? Descubrí que el analizador incorporado no es muy preciso.

  2. ¿Es posible usar el archivo GTAGS sin especificar el alcance del proyecto? En mi caso, traté de poner el archivo GTAGS en/usr/include, que debería ser el camino de inclusión estándar de emacs. Pero la Semántica no lo está usando.

Respuesta

7

Semántica no utiliza el archivo GTAGS para generar etiquetas que usará directamente para características como saltar o completar inteligentemente. El backend GNU Global para db semántica usará GTAGS en su lugar como una tabla de nombres gigantes. Por lo tanto, si necesita encontrar un símbolo por su nombre, GTAGS le dirá a la semántica dónde está, y Semantic analizará esos archivos más directamente para obtener los detalles.

La razón por la cual GTAGS no se utiliza directamente como analizador de reemplazo es porque la información en GTAGS es insuficiente para los tipos de operaciones. Necesidades semánticas, ya que excluye información de tipo de datos, análisis de argumentos y análisis de contexto local.

Usar gtags en/usr/include es una idea interesante, pero probablemente no se use demasiado. Semantic solo buscará los archivos de encabezado realmente utilizados en su código en lugar de buscar todos los archivos incluidos. El backend GNU Global es específicamente para escanear un proyecto completo para un símbolo o referencias de símbolos. Si desea buscar todas sus inclusiones para un símbolo, entonces sería útil, pero no existe tal característica en Semántica en este momento.

Es posible usar ebrowse para hacer lo que quiera, pero encontré que para C++, el analizador no era suficiente en formas sutiles, y causaba algunos problemas.

Si crees que el analizador semántico es inexacto, entonces deberías publicarlo como un error en la lista de distribución de cedet-devel.

Cuestiones relacionadas