2010-05-31 10 views
8

Da quello che posso dire dalla documentazione, lavori semantici lentamente costruendo un'idea di ciò che è nel progetto analizzando ogni file (e, eventualmente, i suoi vicini) come li si visita. Questo è troppo lento. Mi piacerebbe solo che visiti tutti i file del mio progetto. C'è un modo semplice per farlo? Dovendo visitare centinaia di file prima di poter ottenere un lavoro di autocomplete decente sembra pazzesco.E 'possibile ottenere semantica (emacs) per visitare tutti i file automaticamente?

Ho anche un file etags generato. Posso sfruttare questo in qualche modo?

informazioni rilevanti: Emacs su Windows, versione 23.2.1

+0

Perché non dare un'occhiata a GCCSense (http://cx4a.org/software/gccsense/)? –

+0

Bozhidar: fai a sapere se questo sarà in conflitto con semantica/CEDET a tutti? – Yktula

risposta

7

CEDET analizzerà automaticamente tutti i riferimenti file tramite istruzioni #include, fornendo così abbastanza bene completamento. Se stai cercando di saltare nei file, è possibile impostare CEDET di utilizzare GNU globale, Cscope, per fornire la base di dati necessaria per muoversi un progetto in base al nome di tag.

Inoltre, CEDET analizzerà le intestazioni e i file nelle vicinanze in idle time, quindi alla fine si avrà un database completo di tutti i file locali in circa 10 minuti dopo l'utilizzo degli strumenti la prima volta. Puoi accelerarlo aprendo un file e chiamando

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

che andrà fuori e fare quella roba senza aspettare.

+0

Grazie, Eric. Ho le funzioni di lavoro inattivo andando ora. Sospetto a questo punto di avere piccoli problemi con il mio setup. Sto usando la versione integrata di CEDET di Emacs 23, quindi tutti gli articoli sull'impostazione includono cose che non sono più rilevanti o possibili. Usando semplici casi di test, non riesco a convincere la Semantic a completare qualsiasi cosa tranne le informazioni più semplici nel file (cioè, nessun lavoro di completamento della variabile membro). Proverò anche GNU Global. Grazie! – RealityMonster

1

Alla fine, ho trovato che la soluzione migliore è quella di forza bruta il parsing dei file manualmente utilizzando un po 'di elisp. La migliore risposta che ho trovato è here.