Mam stronę HTML z włączoną html-mode
. Wywołuję funkcję sgml-validate
, aby sprawdzić, czy nie występują błędy znaczników. Opiera się na compilation-mode
. Chcę usunąć niektóre ostrzeżenia z wyjścia kompilacji, więc napisałem funkcję i podłączyłem ją do compilation-filter-hook
(ta zmienna nie jest udokumentowana, ale wywołuje ją compilation-filter
). Wszystko działa poprawnie. Mój problem polega na tym, że w jaki sposób mogę zagwarantować, że funkcja filtru zostanie wywołana dopiero po uruchomieniu procesu kompilacji na stronie HTML (przez sgml-validate
)?Jak mogę filtrować dane wyjściowe kompilacji tylko dla określonego trybu lub bufora w Emacs?
Widzę dwa sposoby, ale żaden z nich nie pracował:
- Po pierwsze, mogę sprawdzić wartość
major-mode
. Ale zawsze zwracacompilation-mode
, ponieważ jest włączona w buforze*compilation*
. (Znalazłem funkcję filtru w source code ofgrep+
i sprawdzono wartośćmajor-mode
. Nie mogę się dowiedzieć, jak to działa poprawnie.) - Innym pomysłem było tylko podpięcie funkcji filtra do pliku HTML bufor, ale z podobnych powodów nie mógł działać, ponieważ wynik procesu kompilacji przechodzi do oddzielnego bufora.
Dzięki, przyjrzę się temu. W moim przypadku wydaje mi się, że powinienem użyć polecenia near-advise, ponieważ chcę filtrować wygenerowane dane wyjściowe i nadal potrzebuję nazwy bufora kompilacji zwracanej przez 'sgml-validate'. –
W takim przypadku po udzieleniu porady może być to, czego potrzebujesz, zamiast doradzać - chyba że musisz wykonać operacje zarówno przed, jak i po zakończeniu sprawdzania sgml. –
Ale czy mogę uzyskać wartość zwracaną '' 'sgml-validate' przy korzystaniu z pouczenia? Informuje mnie o nazwie bufora kompilacji, w przeciwnym razie nie będę w stanie uruchomić funkcji filtru na wyjściu. –