2014-03-27 25 views
0

我有這樣的代碼高亮顯示製表符,並希望利用項目的細節宏禁用它們:如何突出製表符從具體項目文件在Emacs

(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-specifics是定義添加find-file-hook宏和dired-after-readin-hook從這個question

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

我想做的事是禁止的紅色標籤(我想他們,因爲在大多數項目中,我只想要空間,並希望看到製表)在工程中的文件噸/測試,但是我有一個問題,因爲從font-lock-mode-hook代碼project-specifics(找到文件掛機)之前執行,並防止-高亮突出部總是零在字體鎖定模式掛機。爲什麼是這樣,以及如何解決它?

+0

的內置'空格mode'可能是有用的喲ü。 (這也可能是過度殺滅和過於複雜的滿足您的需求,但肯定是值得玩。) – phils

+0

@phils我想在第一次嘗試使用空白模式,但是當有人建議使用'亮點,字符相反。 – jcubic

回答

2

你在做什麼,似乎令人費解。

而且這部分是不確定的(在這裏) - 例如,什麼是主要的模式highlight-chars-disable?是不是在圖書館highlight-chars.el定義,它聽起來並不喜歡的事,將是一個重大模式一個很好的候選人。

見庫highlight-chars.elCommentary的建議。

這樣的事情,也許(你會把財產prevent-highlight-tabs在任何主要模式的符號你喜歡:

(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