2010-10-20 11 views
8

Configuré emacs 23.1.50.1 con CEDET 1.0 y ECB 2.40 (muy inspirado en la configuración de Alex Otts en http://github.com/alexott/emacs-configs/blob/master/rc/emacs-rc-cedet.el y su gentil presentación en Cedet (http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html), gracias Alex). Funciona bastante bien, pero necesito más comprensión sobre cómo se manejan la finalización del código y las referencias a símbolos cuando se trabaja con múltiples proyectos.Emacs/CEDET. Múltiples proyectos y finalización de código

que he creado un proyecto ede simple como esto:

(ede-cpp-root-project "test" 
         :file "~/src/sw/anchor" 
         :include-path '("/Common") 
         :system-include-path '("~/include")) 

Cuando se carga este proyecto, se semánticas sólo buscan terminaciones en los diversos directorios especificados en las configuraciones del proyecto?

Seguí http://mmmyddd.freeshell.net/blog/Computer/Emacs/usecscopesemanticdbbackend para usar cscope como backend para semántica. Puedo ejecutar semanticdb-enable-cscope-in-buffer sin que emacs arroje ningún error, pero no tengo idea de si la semántica utiliza mi base de datos. ¿Puedo agregar una referencia a cscope.out en mi proyecto-definición también, para tener más control sobre qué archivos buscar referencias en mi contexto actual?

Un par de rarezas:

Cuando intento abrir un nuevo archivo de origen consigo el error "se aplican: ¿Busca programa: No existe el fichero o directorio, mundial" y no pasa nada. Si trato de abrirlo nuevamente, todo está bien.

Cuando intento cargar un proyecto, señalando en el archivo de anclaje, me sale este error: "si: argumento de tipo incorrecto: Clase-p, Ede-cpp-root"

+0

Para el "aplicar: Buscando el programa: no existe ese archivo o directorio, global" error, ¿copió la parte de la configuración de Alex Ott que usó "(semanticdb-enable-gnu-global-databases ...)"? – Dingo

+0

Eso hice, pero sospecho que no lo necesito. El hecho de que diga "soporte global gnu" debería haber hecho sospechar que el problema estaba allí :). Gracias. – anr78

Respuesta

5

Cuando se producen errores en su configuración, lo mejor que se puede hacer es:

M-x toggle-debug-on-error RET 

y obtener el seguimiento de la pila que apuntará al área del problema. Muchas veces es útil para identificar el problema de configuración.

CEDET intentará asociar cada archivo con un solo proyecto, y todos los comandos que operan en ese búfer estarán restringidos a los límites de ese proyecto. Para el soporte de CScope, también usará EDE para identificar el directorio raíz, y eso ayudará a encontrar el archivo cscope.out, y está relacionado tanto con las herramientas de finalización como de referencia.

La excepción, por supuesto, es el sistema include path que generalmente es/usr/include o lo que sea. Este es un aumento al sistema predeterminado que incluye la ruta que se calcula con el soporte de GCC. En uno de sus archivos C puede hacer:

M-x semantic-c-describe-environment RET 

y eso debe mostrar lo que Semantic intentará usar.

comprobar si CSCOPE está siendo utilizado para la finalización de código, se puede comprobar con:

M-x semanticdb-find-test-translate-path RET 

y comprobar el final de la lista por alguna cosa CSCOPE.

+0

Gracias Eric, tanto por la respuesta como por el software. Esos comandos son realmente muy útiles.Actualmente, semántica-c-describe-environment no dice nada sobre cscope, y semanticdb-find-test-translate-path dice: * # anr78

+0

Derecha, el cscope el soporte no se molesta en calcular la cantidad de etiquetas que CScope conoce, y no es realmente parte del "proyecto", ya que las partes internas se abstraen, por lo que el entorno C no lo sabe. – Eric

Cuestiones relacionadas