Emacs空白模式忽略空白行列和填充列

Emacs空白模式忽略空白行列和填充列,emacs,whitespace,emacs24,Emacs,Whitespace,Emacs24,我在Mac OS X上使用Emacs 24.1.1时遇到了一个问题。我正在编辑Jade和CoffeeScript文件,所以我为这些文件类型打开了空白模式 我所看到的是,长度超过70个字符的行会用空白行字体突出显示,而不管空白行列的设置如何 在这张照片中,很明显,我已经自定义了空白行列来跟踪填充列,并且我已经将填充列设置为120,但是高亮显示了更短的行 我浏览了Jade模式的代码,没有看到任何可以解释该行为的内容,但我对Emacs Lisp只有一点初步的了解 提前感谢您的指点 在激活空白模式之前

我在Mac OS X上使用Emacs 24.1.1时遇到了一个问题。我正在编辑Jade和CoffeeScript文件,所以我为这些文件类型打开了空白模式

我所看到的是,长度超过70个字符的行会用空白行字体突出显示,而不管空白行列的设置如何

在这张照片中,很明显,我已经自定义了空白行列来跟踪填充列,并且我已经将填充列设置为120,但是高亮显示了更短的行

我浏览了Jade模式的代码,没有看到任何可以解释该行为的内容,但我对Emacs Lisp只有一点初步的了解


提前感谢您的指点

在激活
空白模式之前,必须设置
空白行列
。也就是说,如果要更改其值,除非关闭并再次打开
空白模式
,否则它不会生效。具有讽刺意味的是,只有在激活一次模式后,该变量才能用于
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定制变量 >输入<代码>空白空间样式< /Cord>输入),并在值列表中删除条目:

  • 线条
  • 线尾

(如果有)。这应该关闭与
空白行列
的值无关的长行全局高亮显示(同样,仅在您取消并重新激活空白模式后).

在激活
空白模式
之前,您必须设置
空白行列
。也就是说,如果您想更改其值,除非您关闭并再次打开
空白模式
。具有讽刺意味的是,该变量在激活模式onc之前不可用于
M-x自定义
e:-(

但是,您可以通过在.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定制变量 >输入<代码>空白空间样式< /Cord>输入),并在值列表中删除条目:

  • 线条
  • 线尾

(如果有)。这应该关闭与
空白行列
的值无关的长行全局高亮显示(同样,仅在您取消并重新激活空白模式后).

fill column
是缓冲区本地的。您能在
用户中键入
M-:fill column
确认它是120缓冲区吗?^H v fill column fill column fill column是在“C源代码”中定义的变量。它的值是120原始值是70缓冲区索引中的本地值。jade;全局值是70它的looking like whitespace mode只接受fill column的全局值;它似乎不知道buffer local版本。
fill column
是buffer local。您能否在
用户中确认它是120。jade
buffer在当前缓冲区中键入
M-:fill column
?^H v fill column fill column是一个变量定义它的值是120的原始值,在缓冲区索引中是70个本地值。JADE;全局值是70.它看起来像空白模式,只为填充列提供全局ALUE;它似乎不知道缓冲区本地版本。你认为这是一个bug吗?在我看来,空白模式应该尊重空白空间行列。(和填充列)每当它改变。你会认为这是一个bug吗?在我看来,空白模式应该尊重空白空间行列(和填充列),每当它改变。