2014-07-23 4 views
0

저는 Emacs 내부에서 VS2012 프로젝트를 빌드 할 수 있도록 .emacs를 설정하려고합니다.Emacs가 VS2012 빌드를 지원합니다.

나는 이것을 수행하기 위해 Emacswiki의 지침을 따랐습니다. 그것은 VS2005와 함께 저에게 과거에 일했습니다.

이 새로운 버전의 VS는 모든 오류/경고 줄 앞에 CPU 지정을 추가하고 이맥스의 C++ 컴파일러 구문 분석이 혼란스러워지고 파일 이름의 일부로 생각됩니다. 예를 들어, 오류 :

Find this error in (default 5>my_class.h): ~/dev/proj/ 

내가에서 만들 수있는 비틀기가 있습니까 :

5>c:\dev\proj\my_class.h(35): warning C4100: 'command' : unreferenced formal parameter (my_class.cpp) 

대신 파일과 줄을 기르는의 "다음 오류"를 방문, 나에게 프롬프트를 제공합니다 .emacs (또는 아마도 C와 C++ 모드)이 문제를 해결할 수 있습니까? 또는 VS2012를 더 잘 다루는 Emacs (또는 모드 .el 파일)의 최신 버전이 있습니까? 나는 현재 GNU Emacs를 사용하고있다. 24.2.1

+1

조정할 변수는'compilation-error-regexp-alist' 및/또는'compilation-error-regexp-alist-alist'입니다. – legoscia

+0

@legoscia - 지금보고 있습니다. 흥미로운 점은 현재 작동해야하는 것처럼 보이는 "msft"표현이있는 것입니다. –

답변

2

나는 이것을 추적했다고 생각한다.

아니요,이 GNU Emacs가 VS2012 컴파일러 메시지를 지원하려고 시도하지 않았으므로 문제는 지원에 버그가 있다는 것입니다 (24.2.1).

약간의 배경 : 이맥스가 오류와 경고를 인식하는 데 사용하는 모든 정규식은 compilation-error-regexp-alist-alist이라는 엄청나게 중복 된 이름을 가진 변수에 있습니다. 이것은 compile.el elisp 파일 안에 선언되어 있습니다.

가장 큰 문제는 목록에서 첫 번째로이 사용 된 것이므로 입니다. VS2012 오류 및 경고와 일치하는 edg-1 (Edison Design Group의 LLVM 프런트 엔드) 목록에 대한 정규 표현식이 있습니다. 목록에서 msft보다 빠르기 때문에 대신 사용되었습니다. Presto : 잘못된 디렉토리 일치.

문제는 emacs dev 목록의 this thread과 2012 년 10 월 14 일 fixed with a patch에서 논의되었습니다.

두 가지 방법이 있습니다.

  1. Emacs 24.3 이상으로 업그레이드하십시오. 패치가 있어야합니다.
  2. (편리한) lisp/progmodes/compile.el 파일을 편집하십시오. compilation-error-regexp-alist-alist에서 "msft"항목을 찾아 문제가되는 "edg-1"항목 앞 어딘가에 옮깁니다. 그 동안 백 슬래시 앞에있는 첫 번째 정규식 줄 끝에 ?을 추가 할 수 있습니다 (diff link 참조). 그런 다음 파일을 바이트 컴파일하고 emacs를 다시 시작하십시오.