2012-07-07 4 views
1

Emacs 24.1 및 Haskell에 대한 또 다른 질문. 나는 그것이 나를 위해 들여 쓰기를하는 것을 알아 차렸고 나를위한 아주 기본적인 강조 표시 (유형은 초록색 임)를 예로 들었다. 그러나 즉시 사용할 수있는 Emacs 24.1은 foldr, map 등과 같이 일반적으로 사용되는 기능을 강조 표시하지 않습니다. Emacs 및 haskell 모드에서 일반적으로 사용되는 기능을 강조 표시 할 수 있습니까?Prelude와 일반적으로 사용되는 함수의 Emacs 24.1 & Haskell 구문 강조 표시

답변

4

기본적으로 표준 라이브러리 함수는 바로 그 함수입니다. 실제로 수입에 따라 표준 서곡보다는 사용자 제공이 가능합니다! 이것은 실제로 자주 발생합니다. 예를 들어 Control.Category을 사용하려는 경우 대개 id을 숨기고 다형성 버전으로 바꿉니다.

간단히 말해서 표준 기능을 강조 할 실제 이유가 없습니다. 그래서 나는이 기능이 표준 하스켈 모드에 존재하는지 정말로 의심한다.

즉, 이것은 Emacs입니다. 원하는 것을 쉽게 추가 할 수 있습니다. 강조 표시하려는 모든 함수 이름의 목록이 있으면 하스켈 모드에 추가하는 것이 어렵지 않습니다.

당신은 당신의 .emacs 파일에 이런 코드 뭔가 강조 하스켈 모드에 새로운 기능을 추가 할 수 있습니다

(font-lock-add-keywords 'haskell-mode 
         '(("\\<\\(map\\|foldr\\|foldl\\)\\>" 1 
          '(:foreground "#3366FF") t))) 

이상한 찾고 문자열은 이맥스 스타일 정규 표현식입니다. \<\>\b\(, \|\)은 그룹 내에서 교대로 표시됩니다. 정규 표현식 리터럴이 없기 때문에 모든 \을 문자열 내에서 이스케이프 처리해야합니다. 정규식은 \<\(map\|foldr\|foldl\)\>으로 더 읽기 쉽습니다. 표현식에 새 사례를 추가하여 다른 함수 이름을 쉽게 추가 할 수 있습니다.

(:foreground "#3366FF")은 텍스트의 색상을 오히려 가져 오는 음영으로 설정합니다.

+0

감사합니다. 이해 했어. 나는 자주 사용하는 것들을 강조하고 싶다. 어떻게하면 haskell-mode에 기능을 추가 할 수 있는지에 대한 지침을 줄 수 있습니까? 적어도 elisp에 익숙하지 않습니다. 감사. – Ana