* Derleme * arabelleği neden kontrol karakterlerini gösteriyor?


9

*compilation*Tampon, Centos 5 ve Centos 6 üzerinde bir C ++ uygulaması oluşturmak için kullanıyorum. Tampon yapı gösterir ve yapının bir parçası olan dosyalara başvurular içerir. Ancak, ^[çıktıda görünen gibi kontrol karakterleri alıyorum ve okumak zor ve çıktı birinde birini tıkladığınızda emacs bozuk dosya adları alıyorum. Bu karakterlerin derleyici çıktısında bir tür renklendirme veya başka ek açıklama olduğunu düşünüyorum, ancak nereden geldiklerini bilmiyorum. İşte örnek çıktı:

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

Derleme arabelleğimdeki metin dışı çıktıdan nasıl kurtulabilirim?


1
Bunlar VT100 Renk gibi görünüyor ve biçimlendirme kaçıyor. Sen ileterek renkleri devre dışı bırakmayı deneyebilirsiniz -fdiagnostics-color=neveriçin gcc(varsayarak gccsenin olduğunu cc)
PythonNut

As ansi-color-apply-on-region: yavaş olabilir, bu geri birkaç hafta pasajı yukarı yazdım de-ansi.el . Ben bir paket olmak niyetinde değildi ve bu yüzden anahtar akorları paketi ve geçici küçük mod temp-mode.el bağımlılıkları vardır . Dosya bildirim özelliği için ayrıca emacs 24.4 veya daha yeni bir sürümde olmanız gerekir.
Kaushal Modi

Yanıtlar:


14

Bunlar aslında terminalin metin rengini değiştirmek için emirler olarak yorumlaması gereken kaçış dizileridir. Normal olarak, derleyici Emacs'tan çağrıldığında kullanılmamalıdır (terminal türü dumb, derleyicinin herhangi bir kaçış dizisi kullanmaktan kaçınmasına neden olacak şekilde ayarlanmalıdır ). Yapılandırmanızda, renklerin kullanılmaması gerektiğinde kullanılmasına neden olan bir sorun olabilir. Ancak Emacs'ın ansi-renk paketi ile kaçış dizilerini tanımasını sağlayabilirsiniz .

Böyle bir şey derleme arabellekleri ham dizeleri olarak görüntülemek yerine ANSI kaçış dizileri işlemek gerekir.

(require 'ansi-color)
(defun my/ansi-colorize-buffer ()
  (let ((buffer-read-only nil))
    (ansi-color-apply-on-region (point-min) (point-max))))
(add-hook 'compilation-filter-hook 'my/ansi-colorize-buffer)

1
Son derece kullanışlı. Emacs'ta Çalışır 26.1.
Lalylulelo

1
Bu, her çalıştırıldığında arabelleği yeniden renklendirir (ve tüm metni benim için son ön plan rengine boyamaya neden olur). Bu kanca ucuna hareket ettirilen nokta ile eklenen bölgenin başlangıcına "derleme-filtre-başlat" ayarını yapar. Bu yüzden (point-min) ve (point-max) yerine kullanacağım.
gct
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.