Ho una pagina HTML, con html-mode
abilitato. Chiamo la funzione sgml-validate
per verificare eventuali errori di markup. È basato su compilation-mode
. Voglio rimuovere alcuni avvisi dall'output della compilation, così ho scritto una funzione e l'ho agganciata a compilation-filter-hook
(questa variabile non è documentata, ma compilation-filter
la invoca). Tutto funziona. Il mio problema è che come posso garantire che la funzione filtro venga richiamata solo quando ho avviato il processo di compilazione su una pagina HTML (tramite sgml-validate
)?Come posso filtrare l'output della compilation solo per una modalità o buffer specifici in Emacs?
vedo due metodi, ma nessuno di loro ha lavorato:
- In primo luogo, posso controllare il valore di
major-mode
. Ma restituisce semprecompilation-mode
, poiché è abilitato nel buffer*compilation*
. (Ho trovato una funzione filtro nello source code ofgrep+
e hanno verificato il valore dimajor-mode
. Non riesco a capire come funziona correttamente.) - L'altra idea era quella di collegare solo la mia funzione filtro al file HTML buffer, ma per ragioni simili non potrebbe funzionare poiché l'output del processo di compilazione passa a un buffer separato.
Grazie, ho dato un'occhiata. Nel mio caso penso che dovrei usare un around-advise, perché voglio filtrare l'output generato, e ho ancora bisogno del nome del buffer di compilazione che viene restituito da 'sgml-validate'. –
In tal caso, dopo aver consigliato potrebbe essere quello che ti serve invece di consigliare in giro - a meno che non sia necessario eseguire operazioni sia prima che dopo la chiamata a validare sgml. –
Ma posso ottenere il valore restituito 'di' sgml-validate' quando si usa after-advise? Mi dice il nome del buffer di compilazione, altrimenti non sono in grado di eseguire la funzione filtro sull'output. –