Ho reinstallato emacs 24.2.50 su un nuovo host Linux e ho avviato una nuova configurazione dotEmacs basata sulla configurazione di emacs magnars. Dal momento che ho utilizzato CEDET con successo nel mio precedente flusso di lavoro, ho iniziato a configurarlo. Tuttavia, c'è qualche strano comportamento ogni volta che carico un file sorgente C++.Errore semantico sconosciuto
[Questa parte è risolto]
Come previsto, analizza semantiche tutti i file inclusi (e durante la configurazione iniziale analizza tutti i file specificati dal semantico-add-system-includono variabili), ma esso stampa questa un messaggio di errore che va come questo:
WARNING: semantic-find-file-noselect called for /usr/include/c++/4.7/vector while in set-auto-mode for /usr/include/c++/4.7/vector. You should call the responsible function into 'mode-local-init-hook'.
nell'esempio sopra l'errore viene stampato per il vettore STL, ma un messaggio di errore viene stampato per ogni file incluso da quello che sto visitando e ogni successiva comprende. Di conseguenza ci vuole molto tempo per finire e, sfortunatamente, il processo si ripete di qualsiasi tipo apro un nuovo buffer.
[Questo problema è risolto Troppo]
Inoltre sembra che l'analisi non funziona davvero, come quando ho posto il punto sopra un non-c tipo primitivo (cioè non int, double, float, ecc) invece di stampare la definizione del tipo in modeline un messaggio di errore come
Idle Service Error semantic-idle-local-symbol-highlight-idle-function: "#<buffer DEPFETResolutionAnalysis.cc> - Wrong type argument: stringp, (((0) \"IndexMap\"))" Idle Service Error semantic-idle-summary-idle-function: "#<buffer DEPFETResolutionAnalysis.cc> - Wrong type argument: stringp, ((\"fXBetween\" 0 nil nil))"
dove DEPFETResolutionAnalysis.cc è il buffer di file & attualmente sto modificando e IndexMap e fXTra i tipi sono definiti nei file inclusi dal file che sto modificando/alcuni file inclusi dal file che sto modificando.
Non ho ancora testato ulteriori funzionalità di CEDET/semantico poiché il problema è piuttosto fastidioso. La mia confet cedet può essere trovata here.
MODIFICA: Con l'aiuto di Alex Ott ho risolto il primo problema. Era dovuto alla mia orribile inizializzazione del cedet. Guarda la sua prima risposta per il modo corretto di configurare CEDET!
Rimane il problema con lo Idle Service Error
(che, quando si attiva global-semantic-idle-local-symbol-highlight-mode
, si verifica in modo permanente, non solo quando si verifica la definizione del tipo nel punto).
E c'è il nuovo problema di come disabilitare il file di avvio del sito (s).
EDIT2: ho eseguito semantic-debug-idle-function
in un buffer in cui si verifica il problema e produce un ~ 700kb uscita [sic!]. Sembra che stia eseguendo alcune operazioni su un contenitore di dati che, a quanto sembra, contiene informazioni su tutti i simboli definiti nei file analizzati. Come ho analizzato un pacchetto piuttosto grande (~ 20Mb file sorgente) questa tabella è piuttosto grande. Può la semantica gestire un database così grande o impossibile e il motivo del mio problema?
EDIT3: Eliminare il contenuto di ~/.semanticdb
e ripetere tutti gli include ha fatto il trucco.Devo ancora disabilitare i file init site-wise ma poiché questo non è collegato a CEDET, chiuderò questa domanda (la domanda relativa ai file init site-wise può essere trovata here).
Si prega di fornire informazioni su quale versione di CEDET si sta utilizzando, ecc Si prega di tenere anche in account, che non è necessario mettere le linee 2-40 in hook. Questa attività (caricamento di CEDET) dovrebbe essere eseguita una sola volta, non all'apertura di ciascun file C/C++. Vedi https://gist.github.com/3930120 come esempio della configurazione di CEDET –
Ci sono anche altri errori nel tuo init - quando stai usando 'c-mode-common-hook', allora sarà chiamato per C, C++, ecc., Quindi non è necessario impostarlo separatamente per le modalità C & C++. –