2012-07-11 126 views
0

我在Mac OS X上使用Emacs 24.1.1時遇到問題。我正在編輯Jade和CoffeeScript文件,因此我已經爲這些文件啓用了空白模式文件類型。Emacs空白模式忽略空白行列和填充列

我看到的是,無論空白行列的設置如何,超過70個字符的行都用空白行字體突出顯示。

screen shot of problem

在這幅圖中,很顯然,我已經定製的空白行,列跟蹤填充柱,和我設置填充列120,但更短的線路正在凸顯。

我瀏覽了Jade模式的代碼,沒有看到任何可以解釋行爲的東西,但我對Emacs Lisp只有一種理解。

在此先感謝您的指點!

+0

'fill-column'是緩衝區本地。你可以在你的'user.jade'緩衝區中通過在當前緩衝區輸入'M-:fill-column'來確認它是120嗎? – ataylor 2012-07-11 19:49:48

+0

^H v填充列 填充列是「C源代碼」中定義的變量。 它的值是120 原值是70 本地緩衝區index.jade;全球價值是70 – 2012-07-12 01:28:46

+0

它看起來像空白模式只符合填充列的全局意義;它似乎沒有意識到緩衝區本地版本。 – 2012-07-12 01:31:11

回答

4

您必須設置whitespace-line-column之前您激活whitespace-mode。也就是說,如果您想更改其值,除非您關閉並重新打開whitespace-mode,否則它不會生效。諷刺的是,該變量不適用於M-x customize直到激活模式,一旦:-(

但是,您可以通過將下面一行在你的.emacs自定義此變量的全局值文件:

(setq whitespace-line-column 120) 

由於您在啓動Emacs時對.emacs進行了評估,因此該設置將在首次調用空白模式之前生效,因此應該按照您的要求進行操作。如果您不想全局設置該值,但僅限於對於Jade文件,請將以下內容放在.emacs文件中:

(set (make-local-variable 'whitespace-line-column) 80) 
(add-hook 'after-change-major-mode-hook 
      '(lambda() (when (eq major-mode 'jade-mode) 
         (setq whitespace-line-column 120)))) 

如果您永遠不想讓長長的線條突出顯示,您可能需要考慮第三個選項。你可以自定義變量空白式(通過鍵入M-x customize-variableENTERwhitespace-styleENTER)和值列表中刪除的條目:

  • 線尾

(如果任何)。這應該關閉全局長線的突出顯示,而不依賴於whitespace-line-column的值(再次,僅在您禁用並重新激活空白模式後)。

+0

你認爲這是一個錯誤嗎?在我看來,空格模式應該在每當它改變時遵守空白行列(和填充列)。 – 2012-07-12 18:24:16