Я использую *compilation*
буфер для сборки приложения C ++ на Centos 5 и Centos 6. Буфер показывает сборку и включает ссылки на файлы, которые являются частью сборки. Тем не менее, я получаю управляющие символы, такие как ^[
появляются в выходных данных, и их трудно прочитать, а emacs получает поврежденные имена файлов, когда вы нажимаете один из них в выходных данных. Я думаю, что эти символы - какая-то окраска или другая аннотация на выходе компилятора, но я не знаю, откуда они берутся. Вот пример вывода:
cc -c -g -I../machind -I. -DRELEASE_VERSION -g -O2 -m64 -D__BITS64 -pipe -DARCH_64 -DARCH_INTEL -DARCH_X86 -DARCH_X86_64 -DOS_LINUX -pthread -DLM_INTERNAL -DFLEXLM_KITBUILD -DFLEX_STATIC -DRELEASE_VERSION -DGPLATFORM=\\"x64_lsb\\" -DLINUX -DLSB3_0 -D__FD_SETSIZE=65535 -DGLIBC -DLINUX64 -DAMD64 -DREDHAT -DREL -DRHLINUX64 -DPLATFORM_AMD64_RHLINUX -DNO_ACTIVATION_SUPPORT ../machind/lmcrypt.c
^[[01m^[[K../machind/lmcrypt.c:^[[m^[[K In function ^[[01m^[[Kmain^[[m^[[K :
^[[01m^[[K../machind/lmcrypt.c:156:47:^[[m^[[K ^[[01;35m^[[Kwarning: ^[[m^[[Kcast to pointer from integer of different size [-Wint-to-pointer-cast]
lc_set_attr(lm_job, LM_A_MAX_LICENSE_LEN, (LM_A_VAL_TYPE)max);
^[[01;32m^[[K ^^[[m^[[K
Как я могу избавиться от нетекстового вывода в моем буфере компиляции?
major-mode
formatting
coloring
WilliamKF
источник
источник
-fdiagnostics-color=never
кgcc
(при условии , чтоgcc
вашcc
)ansi-color-apply-on-region
может быть медленным, я написал этот фрагмент несколько недель назад: de-ansi.el . Я не хотел, чтобы это был пакет, и поэтому у него есть зависимости от пакета key-chords и от моего временного вспомогательного режима temp-mode.el . Вы также должны быть на emacs 24.4 или новее для функции уведомления о файлах.Ответы:
Это действительно escape-последовательности, которые терминал должен интерпретировать как приказы об изменении цвета текста. Обычно они не должны использоваться, когда компилятор вызывается из Emacs (тип терминала должен быть установлен на
dumb
, что должно заставить компилятор воздерживаться от использования любой escape-последовательности). В вашей конфигурации может быть что-то не так, что заставляет использовать цвета, когда они не должны. Но вы можете заставить Emacs распознавать escape-последовательности с помощью пакета ansi-color .Нечто подобное должно заставить буферы компиляции обрабатывать escape-последовательности ANSI, а не отображать их в виде необработанных строк.
источник