2012-05-04 8 views
11

Sto usando Emacs 23 e il seguente problema:Come regolare il percorso che compile-goto-error di Emacs ottiene dal buffer di compilazione?

corro il nostro sistema di compilazione del progetto dall'interno di Emacs come Mx compile -> cd/foo/bar & & ./build

Il sistema di compilazione ora fa po 'di magia, "cd" s in qualche sottodirectory per il processo di costruzione e quindi gcc genera un errore:

../src/somesource.cc:50 errore: blablabla

Ora il problema è che Emacs ha vinto' Trovare quel percorso, perché assume il processo di compilazione presentato in/foo/bar, e non in/foo/bar/builddir. Quindi il primo "../" non funziona per Emacs, ad es. quando si esegue compile-goto-error. C'è un modo per dire a Emacs di provare a saltare con "../"?

+1

Stranamente, mi sto imbattendo in questo quando costruisco * Emacs * ... – SamB

risposta

11

La soluzione migliore potrebbe essere quella di modificare il sistema di generazione per emettere messaggi quando cambia directory. Emacs cerca

Entering directory `...' 
... 
Leaving directory `...' 

(Vedere la variabile compilation-directory-matcher. Se il sistema di compilazione emette messaggi quando cambia directory, ma sono non nel formato di Emacs sta cercando, è possibile aggiungere nuove espressioni regolari per compilation-directory-matcher.)

L'altra soluzione è modificare compilation-search-path (che è un elenco di directory).

+0

Non sapevo della funzionalità "Immissione ..." di Emacs. Questo probabilmente aiuterà! – Arne

+1

@Arne, GNU Make [stampa messaggi in tale formato] (http://www.gnu.org/software/make/manual/html_node/_002dw-Option.html) quando si utilizzano makefile ricorsivi. Ecco perché Emacs li cerca. – cjm

+1

Questa soluzione sembra essere quello che sto cercando, ma non riesco a modificare la variabile 'compilation-directory-matcher' (come potete vedere qui: http://stackoverflow.com/q/21309720/61838). Inoltre, il 'compilation-search-path' non sembra risolvere il problema (anche quando ho solo bisogno di emacs per cercare le fonti in una directory). Qualsiasi aiuto sarebbe apprezzato! – claf

Problemi correlati