* संकलन * बफ़र नियंत्रण पात्रों को क्यों दिखाता है?


9

मैं *compilation*Centos 5 और Centos पर C ++ एप्लिकेशन बनाने के लिए बफर का उपयोग कर रहा हूं । 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

मैं अपने संकलन बफर में गैर-पाठ आउटपुट से कैसे छुटकारा पा सकता हूं?


1
वे दिखने में VT100 कलर और फॉर्मेटिंग से बच जाते हैं। आप पास करके रंग अक्षम करने का प्रयास हो सकता है -fdiagnostics-color=neverकरने के लिए gcc(यह सोचते हैं कि gccआपकी है cc)
PythonNut

जैसा कि ansi-color-apply-on-regionधीमा हो सकता है, मैंने कुछ हफ़्ते पहले इस स्निपेट को लिखा है: de-ansi.el । मैंने इसे पैकेज बनाने का इरादा नहीं किया और इसलिए इसमें की-कॉर्ड्स पैकेज पर और मेरे अस्थायी मामूली मोड अस्थायी मोड पर निर्भरता है । आपको फ़ाइल-सूचना सुविधा के लिए 24.4 या बाद में emacs पर होना चाहिए।
कौशल मोदी

जवाबों:


14

ये वास्तव में एस्केप सीक्वेंस हैं जिन्हें टर्मिनल को टेक्स्ट कलर बदलने के आदेश के रूप में व्याख्या करना चाहिए। आम तौर पर इनका उपयोग तब नहीं किया जाना चाहिए जब कंपाइलर को एमएसीएस (टर्मिनल प्रकार को सेट dumbकिया जाना चाहिए, जिससे कंपाइलर को किसी भी भागने के क्रम का उपयोग करने से बचना चाहिए)। आपके कॉन्फ़िगरेशन में कुछ गलत हो सकता है जिसके कारण रंगों का उपयोग तब किया जाना चाहिए जब उन्हें नहीं करना चाहिए। लेकिन आप एम्स-रंग पैकेज के साथ भागने के दृश्यों को पहचानने के लिए Emacs बना सकते हैं ।

कुछ इस तरह से संकलन बफ़र्स को कच्चे तारों के रूप में प्रदर्शित करने के बजाय एएनएसआई से बचना चाहिए।

(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
अत्यंत उपयोगी। Emacs में काम करता है 26.1।
लालइल्यूलो

1
यह हर बार चलने वाले पूरे बफर को फिर से रंग देता है (और मेरे लिए पिछले अग्रभूमि रंग को सभी पाठ को रंग देने के परिणामस्वरूप)। यह हुक बिंदु के साथ सम्मिलित किए गए क्षेत्र के प्रारंभ में "संकलन-फ़िल्टर-प्रारंभ" सेट करता है जो अंत तक चला गया। इसलिए मैं (बिंदु-मिनट) और (बिंदु-अधिकतम) के बजाय उन का उपयोग करूंगा।
gct
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.