2014-03-27 2 views
0

내가 탭 문자를 강조하기 위해이 코드를 프로젝트 - 구체적인 매크로를 사용하여 비활성화 할 특정 프로젝트의 파일 탭 문자를 강조하는 방법 :이맥스

(require 'highlight-chars) 
(make-variable-buffer-local 'prevent-highlight-tabs) 
(setq highlight-chars-disable '(term-mode erc-mode fundamental-mode)) 
(setq-default prevent-highlight-tabs nil) 
(add-hook 'font-lock-mode-hook 
      (lambda() 
      (message "lock") 
      (when (and (null (memql major-mode highlight-chars-disable)) 
         (not prevent-highlight-tabs)) 
       (message "%s" prevent-highlight-tabs) 
       (hc-highlight-tabs)))) 
(custom-set-faces '(hc-tab ((t (:background "red"))))) 

project-specificsfind-file-hook을 추가 정의하는 매크로이다 내가하고 싶었던 어떤이 question

(project-specifics "projects/test" 
    (message "specific") 
    (setq prevent-highlight-tabs t) 
    (setq indent-tabs-mode t)) 

에서 dired-after-readin-hook는 비활성화 빨간색 탭 (나는 대부분의 프로젝트에 나는 단지 공간을 원하기 때문에 그들을 원하고 탭을보고 싶어) projec의 파일입니다 t/test를 사용하지만, font-lock-mode-hook의 코드가 project-specifics (find-file-hook) 이전에 실행되고 있으며, prevent-highlight-tabs는 font-lock-mode-hook에서 항상 nil이므로 문제가 있습니다. 왜 그런가, 어떻게 고쳐야 할까?

+0

내장 된 '공백 모드'는 요 유. (여러분의 필요에 따라 과도하게 사용하고 지나치게 복잡하게 만들지 만 확실히 놀아 볼만한 가치가 있습니다.) – phils

+0

@phils 첫 번째 시도에서 공백 모드를 사용하고 싶었지만 다른 사람이'highlight-chars '대신. – jcubic

답변

2

당신이하고있는 일은 복잡한 것처럼 보입니다.

그리고 여기에서 부분적으로 정의되지 않았습니다 (예 : 주요 모드는 무엇입니까? highlight-chars-disable? 라이브러리 highlight-chars.el에 정의되어 있지 않으며 대문자 모드의 좋은 후보가 될 것 같지 않습니다.

라이브러리 highlight-chars.elCommentary을 참조하십시오.

(add-hook 'font-lock-mode-hook 
      (lambda() (unless (get major-mode 'prevent-highlight-tabs) 
         (hc-highlight-tabs)))) 

또는 Commentary에서이 같은() :

(add-hook 'change-major-mode-hook 
      (lambda() 
      (add-hook 'font-lock-mode-hook 'hc-highlight-tabs))) 

(add-hook 'after-change-major-mode-hook 
      (lambda() 
      (when (eq major-mode 'THE-MODE) 
       (remove-hook 'font-lock-mode-hook 'hc-highlight-tabs) 
       (hc-dont-highlight-tabs))) 
      'APPEND) 
+0

미안하지만'highlight-chars-disable'을 포함하지 않았습니다. 탭으로 표시해서는 안되는 모드 목록입니다. – jcubic

2

I를

이런 식으로 뭔가가, 아마 (당신은 당신이 원하는 주요 모드에 문자 특성 prevent-highlight-tabs을 둘 것 Per-Directory Local Variables에 설명 된대로 .dir-locals.el에 설정을 지정하는 것이 좋습니다.