2011-11-30 48 views
0

我有一些代碼,我從很久以前,設置一個長線面借來當線路過長:如何在不影響Emacs中其他字體鎖自定義的情況下更改長線的面部?

(add-hook 'font-lock-mode-hook 
      (function 
      (lambda() 
       (setq font-lock-keywords 
        (append font-lock-keywords 
          '(("^.\\{133,\\}$" (0 'my-long-line-face t)) 
          ) 
          ) 
        ) 
      ) 
      )) 

(我知道字體鎖定添加的關鍵字現在,BTW;就像我說的,這是舊的。)

問題是,這改變了整條線的面貌。因此,如果我指出長線的臉部是粗體,那麼我會失去線條的所有上下文定製,並且它會顯示在默認臉部中,但是會顯示爲粗體。

我該如何讓它保持上下文的顏色,但使一切都大膽?

+0

我曾經這樣做過,但我現在更喜歡fill-column-indicator庫。 http://www.emacswiki.org/emacs/FillColumnIndicator –

+0

請參閱邁克爾H.提到的其他幾種方法來突出顯示或以其他方式表示長行。 – Drew

+0

我實際上首先檢查了emacswiki,但我不喜歡那裏的任何解決方案。 – RealityMonster

回答

2

您在字體鎖定規範中重寫與t的分身。嘗試將(0 'my-long-line-face t)更改爲(0 'my-long-line-face prepend)(0 'my-long-line-face append)

+0

正確,只需稍作修改。它需要是(0'my-long-line-face prepend)或(0'my-long-line-face append)。但現在它像一個魅力一樣工作。我不知道追加和前置。 :) – RealityMonster

+0

糟糕,你是對的。固定。 – scottfrazer

1

試試這個修改代碼:

(add-hook 'font-lock-mode-hook 
     (function 
    (lambda() 
     (setq font-lock-keywords 
     (append font-lock-keywords 
      '(("^.\\{133\\}\\(.*\\)$" (1 'my-long-line-face t)) 
      ) 
      ) 
     ) 
    ) 
    )) 

你想要的正則表達式有下面的133個字符是不太長的子表達式,然後鍵爲適用my-long-line-face於以下子表達式 - 如1所示(而不是您所擁有的0)。有關更多詳細信息,請參閱Search-based Fontification的信息頁面。

+0

絕對符合廣告標準,但我希望更像scottfrazer給出的答案。謝謝! – RealityMonster

相關問題