2014-03-29 1 views
2

나는 #if이 기본적으로 여기에있는 yesod 프로젝트에 대해 emacs (prelude 설치, 아무도 궁금하지 않고, 추가 구성이 필요 없음)에서 flymake (-ghc)를 사용하고 있습니다. .ghc/flymake가 전처리 지시문에 멈춤

/path/to/Import.hs:18:2: 
    lexical error at character 'i' 

및 라인, 그래서 정확하게 ghci과 완전히 동일한 동작

#if __GLASGOW_HASKELL__ >= 704 

입니다 : flymake이 오류를 보여준다는 사실에서 떨어져 모든 좋은

Prelude> #if something 

<interactive>:2:2: lexical error at character 'i' 

아무것도가있다 나는 여기에서 놓치고있다?

보너스 : auto-complete은 (이맥스, 전주곡, 기본 설정 등) 중 하나를 작동하지 않습니다 : 그것은 다른 것들 (예를 들어 R) 작동합니다.

+0

"yesod init"에서 생성 된 많은 * 기타 * 언어 확장 지정 문에 대해 flymake가 불만을 토로합니다 (이유가 불분명 함). – marco

답변

3

나는 이것을 추정한다 flymake-ghc 것은 검사하는 동안 C 전처리기를 가능하게하지 않는다. 이 문제를 해결하려면 영향을받는 하스켈 파일의 맨 위에 다음을 추가 ::

{-# LANGUAGE CPP #-} 

이 pragma는 포함하는 파일에 대한 전처리를 할 수 있습니다.

일반적으로 실제로는 Haskell 언어 옵션과 확장 기능을 사용하기 위해 선호되는 방법입니다. 실제로이 옵션은 실제로 필요한 파일에만 국한되어 있기 때문입니다.

+0

그게 고마워! 분명히 이것이 유일한 구성 차이는 아니지만 적어도이 문제는 사라졌습니다. – marco