Saya menggunakan *compilation*
buffer untuk membangun aplikasi C ++ pada Centos 5 dan Centos 6. Buffer menunjukkan build dan menyertakan referensi ke file yang merupakan bagian dari build. Namun, saya mendapatkan karakter kontrol seperti ^[
muncul di output dan sulit dibaca dan emacs mendapatkan nama file yang rusak ketika Anda mengklik satu di output. Saya pikir karakter-karakter ini adalah semacam pewarnaan atau anotasi lain pada keluaran kompiler tetapi saya tidak tahu dari mana mereka berasal. Berikut adalah contoh output:
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
Bagaimana saya bisa menyingkirkan output non-teks di buffer kompilasi saya?
major-mode
formatting
coloring
WilliamKF
sumber
sumber
-fdiagnostics-color=never
kegcc
(dengan asumsi bahwagcc
adalah Andacc
)ansi-color-apply-on-region
bisa lambat, saya telah menulis cuplikan ini beberapa minggu yang lalu: de-ansi.el . Saya tidak bermaksud untuk menjadi sebuah paket dan karena itu memiliki dependensi pada paket key-chord dan pada mode minor sementara temp-mode.el . Anda juga harus menggunakan emacs 24.4 atau lebih baru untuk fitur notifikasi file.Jawaban:
Ini memang urutan yang lolos yang harus ditafsirkan terminal sebagai perintah untuk mengubah warna teks. Biasanya mereka tidak boleh digunakan ketika kompiler dipanggil dari Emacs (tipe terminal harus diatur ke
dumb
, yang seharusnya menyebabkan kompiler menahan diri dari menggunakan urutan melarikan diri apa pun). Mungkin ada sesuatu yang salah dalam konfigurasi Anda yang menyebabkan warna digunakan padahal seharusnya tidak. Tetapi Anda dapat membuat Emacs mengenali urutan pelarian dengan paket ansi-color .Sesuatu seperti ini seharusnya membuat buffer kompilasi menangani urutan pelarian ANSI alih-alih menampilkannya sebagai string mentah.
sumber