2011-02-03 6 views
11

필자는 편집기 구성과 관련하여 기술이없는 Emacs 사용자입니다.haskell-indentation-mode over haskell-indentation-mode haskell-mode 2.7에서 강제?

  • 들여 쓰기 내가 아주 싫어하는 방법으로, 어떻게 든 다른이다 : 나는 2.7 haskell-mode 2.4에서 업그레이드 한 후, 나는 두 가지 사항을 변경 나타났습니다. 나는 그것이 무엇인지 내 손가락을 넣을 수는 없다.
  • 더 중요하게 : 큐어 모드가 활성화되어 있고 텍스트 블록을 강조 표시 한 경우 백 스페이스/삭제는 이 아니며 블록 전체를 삭제하고 내 마커의 이전 문자 만 삭제합니다.

haskell-mode 2.7은 마이너 모드 인 haskell-indentation-mode를 기본적으로 사용하는 반면, 2.4 동작은 haskell-indent-mode의 형태로 보존되어 있습니다. 먼저 전자를 끄고 후자를 끄면 원하는 동작이 복원됩니다 (예 : 들여 쓰기가 이전처럼 느껴지고 백 스페이스/삭제가 강조 표시된 블록을 삭제함).

그러나 .hs 접미사가있는 파일을 열 때마다이 작업이 자동으로 수행 될 수는 없습니다. 나는 다양한

(remove-hook 'haskell-mode-hook 'turn-on-haskell-indentation-mode) 
(add-hook 'haskell-mode-hook 'turn-on-haskell-indent-mode) 

를 닮은 사물과 그것의 좋아하는을 시도했지만, 나도 표준 모드 또는 들여 쓰기 및 문서없이 일반 하스켈 모드와 끝까지.

아이디어가 있으십니까?

솔루션는 (감사 nominolo하기) :

(add-hook 'haskell-mode-hook 'my-haskell-mode-hook) 

(defun my-haskell-mode-hook() 
    (haskell-indentation-mode -1) ;; turn off, just to be sure 
    (haskell-indent-mode 1)  ;; turn on indent-mode 

    ;; further customisations go here. For example: 
    (setq locale-coding-system 'utf-8) 
    (flyspell-prog-mode) ;; spell-checking in comments and strings 
    ;; etc.  

    ) 

당신은 또한 거기에 익명 함수를 스틱 수 :

(remove-hook 'haskell-mode-hook 'turn-on-haskell-indent) 
(remove-hook 'haskell-mode-hook 'turn-on-haskell-indentation) 
(add-hook 'haskell-mode-hook 'my-haskell-mode-hook) 
(defun my-haskell-mode-hook() 
    (haskell-indentation-mode -1) ;; turn off, just to be sure 
    (haskell-indent-mode 1)  ;; turn on indent-mode 
    ) 

답변

14

같은 것을 구성하는 가장 좋은 방법은 사용자 정의 후크를 작성하는 것입니다 일부 설정을 실험하려는 경우 이름이 지정된 함수를 사용하는 것이 더 쉽습니다. 함수를 다시 정의하면 (그리고 Haskell 파일을 다시 열면) 새로운 동작을 얻을 수 있습니다.

+0

위대한 답변; 이것은 이전에 가지고 있던 무작위'add-hook' 패턴보다 훨씬 낫습니다. 감사! – acfoltzer

+0

슬프게도, 이것은 나에게 도움이되지 않습니다. 내 .emacs에 부여한 코드를 추가했지만, .hs haskell-indentation-mode를 열면 여전히 켜져 있습니다. 'M-x haskell-indentation-mode'를 실행하면 예상대로 꺼집니다. – gspr

+0

@gspr : 다른 후크가 계속있을 수도 있습니다. 활성 후크를 보려면'C -h v haskell-mode-hook'을 사용하십시오. 또는 실제로 세 개의 들여 쓰기 모드가있는 것 같습니다. 그래서 다른 모드를 꺼야 할 수도 있습니다. – nominolo