2016-12-27 7 views
0

저는 Emacs를 처음 사용하며 eshell을 사용하려고합니다. 나는 C 파일에 오류가있을 때 불행하게도, 예를 들어, 좀 이상한 오류 출력을 수신 (이것은 단지 예이며, 특정 오류가하지 않는 것이 중요합니다) :emacs eshell로 이상한 오류가 출력 될 수 있습니다 (아마도 zsh와 관련이있을 수 있습니다)

^[[1m2-2.c:18:18: ^[[0m^[[0;1;31merror: ^[[0m^[[1mexpected ';' after expression^[[0m 
    c = getchar() 
^[[0;1;32m    ^
^[[0m^[[0;32m     ; 
^[[0m^[[1m2-2.c:21:5: ^[[0m^[[0;1;31merror: ^[[0m^[[1muse of undeclared identifier 's'^[[0m 
    s[i] = c; 
^[[0;1;32m ^
^[[0m2 errors generated. 

내가 무엇을 모든 확실하지 않다 이 수단의. 나는 보통 bash가 아닌 zsh를 사용하고있다. 그래서 아마도 그것과 관련이있다?

정상적인 단말기에서 동일한 파일을 실행해도 오류는 계속 발생하지만 읽을 수 있습니다.

답변

0

이것은 굵은 글씨체와 같은 색상을 사용하여 출력 형식을 멋지게 만드는 컴파일러입니다. 이상하게도 상자 밖에서 잘 작동해야합니다. eshell-output-filter-functions 변수 검사하십시오 : 당신이 목록에서 이러한 요소의 일부를 놓치는 경우에 나를 위해

C-h v eshell-output-filter-functions 

이 변수의 값이

(eshell-postoutput-scroll-to-bottom eshell-handle-control-codes eshell-handle-ansi-color eshell-watch-for-password-prompt) 

입니다, 수동으로 추가하십시오 :

(add-to-list 'eshell-output-filter-functions 'eshell-handle-ansi-color) 
(add-to-list 'eshell-output-filter-functions 'eshell-handle-control-codes) 

이전 버전의 Emacs를 사용하는 경우 eshell-handle-control-codes과 같은 기능이 없으므로 직접 정의해야합니다. 예제는 this 위키 페이지를 참조하십시오.

추신. 이것은 아마 관련이 없지만 컴파일 모드를 시도해야합니다. M-x compile.

0

당신이보고있는 것은 ansi 이스케이프 시퀀스입니다. 대부분의 터미널 에뮬레이터는 이것들을 굵은 글씨체, 다양한 색깔 등과 같은 다른 텍스트 속성으로 해석 할 것입니다.

이맥스는 일반적으로 이것을 처리하는데 꽤 좋으며 기본적으로 이러한 제어 코드를 처리 할 수있는 출력 필터가 있어야합니다. emacs의 이전 버전을 돌리거나 어떤 이유로 든 eshell의 출력 필터가 변경되었습니다.

-q 스위치로 emacs를 실행하고 eshell을 열고 컴파일을 실행하십시오. 여전히 제어 문자가 표시되면 eshell 출력 필터 함수를 설정하여 ANSI 색상 지원을 추가해야합니다. 제어 코드가 보이지 않으면 init 파일에있는 내용 중 출력 필터가 제거되거나 손상됩니다.

이것은 zsh와 관련되지 않을 가능성이 매우 높습니다. 실제로, 이맥스가 sh를 사용하고 있거나 어쨌든 'ood'아래에서 bash를 사용하고있는 것을 볼 수있을 것입니다. 또한 emacs는 프로그램을 빌드하는 데보다 정교한 지원을합니다. 이맥스 정보 설명서에서 프로그램 컴파일 및 테스트를 살펴보십시오. 사용자의 언어에 따라 컴파일 과정을 간소화하여 프로그램을보다 인터랙티브하게 만들 수 있으며 컴파일러 오류 및 코드 등을 쉽게 다시 컴파일하고 건너 뛸 수 있습니다. 처음에는 약간의 작업이 필요할 수 있습니다. 특히 컴파일러 나 언어는 이맥 (emacs)이 '상자 밖으로'이해하지 못하는 것이지만, 그만한 가치가있다. 로컬에서 코드를 편집하고 변경 사항을 원격 서버 등에서 컴파일하는 것과 같은 정말 펑키 한 작업을 수행 할 수도 있습니다.

마지막으로, 지금 당장 emacs를 조정하는 데 더 많은 시간을 투자하지 않으려는 경우 컴파일러 옵션. 대부분의 컴파일러는 제어 코드를 비활성화하는 방법을 제공합니다. '색상 끄기'또는 오류 메시지 서식 지정 등을 찾아보십시오.