2012-07-11 123 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