2010-05-31 15 views
8

Por lo que puedo ver en los documentos, la semántica funciona construyendo lentamente una idea de lo que hay en su proyecto analizando cada archivo (y posiblemente sus vecinos) a medida que los visita. Esto es muy lento Me gustaría simplemente hacer que visite todos los archivos en mi proyecto. ¿Hay una forma fácil de hacer esto? Tener que visitar cientos de archivos antes de que pueda obtener un trabajo de autocompletado decente parece una locura.¿Es posible obtener Semántica (emacs) para visitar todos los archivos automáticamente?

También tengo un archivo etags generado. ¿Puedo aprovechar eso de alguna manera?

información relevante: Emacs en Windows, versión 23.2.1

+0

¿Por qué no echas un vistazo a GCCSense (http://cx4a.org/software/gccsense/)? –

+0

Bozhidar: ¿sabes si esto entrará en conflicto con la semántica/cedet en absoluto? – Yktula

Respuesta

7

CEDET analizará automáticamente todas las referencias a archivos mediante instrucciones # include, proporcionando así bastante buena terminación. Si está buscando saltar en sus archivos, puede configurar CEDET para usar GNU Global, CScope, para proporcionar la base de datos necesaria para moverse por un proyecto por nombre de etiqueta.

Además, CEDET analizará sus encabezados y archivos cercanos en tiempo de inactividad, por lo que eventualmente tendrá una base de datos completa de todos sus archivos locales en aproximadamente 10 minutos después de usar las herramientas por primera vez. Puede acelerarlo abriendo un archivo y llamando al

M-x semantic-debug-idle-work-function 

que sonará y lo hará sin esperar.

+0

Gracias, Eric. Tengo las funciones de trabajo inactivas en este momento. Sospecho que en este punto tengo pequeños problemas con mi configuración. Estoy usando la versión integrada de Emacs 23 de CEDET, por lo que todos los artículos sobre cómo configurar cosas incluyen cosas que ya no son relevantes o posibles. Utilizando casos de prueba simples, no puedo obtener que Semantic complete nada, excepto la información más simple en el archivo (es decir, no funciona la finalización de la variable miembro). También probaré GNU Global. ¡Gracias! – RealityMonster

1

Al final, he encontrado que la mejor solución es aplicar fuerza bruta al análisis sintáctico de los archivos manualmente usando un poco de elisp. La mejor respuesta que he encontrado para esto es here.

Cuestiones relacionadas