Emacs Whitespace Mode忽略whitespace-line-column和fill-column

How*_*hip 0 emacs whitespace emacs24

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

我所看到的是,无论whitespace-line-column的设置如何,都会用空白行字体突出显示超过70个字符的行.

屏幕截图的问题

在这个镜头中,很明显我已经定制了whitespace-line-column来跟踪填充列,并且我将fill-column设置为120,但是突出显示了更短的行.

我已经浏览了Jade模式的代码,并没有看到任何可以解释这种行为的东西,但我对Emacs Lisp只有了解.

提前感谢任何指针!

Tho*_*mas 5

你必须whitespace-line-column 激活之前设置whitespace-mode.也就是说,如果您想要更改其值,除非您再次whitespace-mode关闭再打开,否则它不会生效.具有讽刺意味的是,M-x customize在您激活模式一次之前,该变量不可用:-(

但是,您可以通过在.emacs文件中添加以下行来自定义此变量的全局值:

(setq whitespace-line-column 120)
Run Code Online (Sandbox Code Playgroud)

由于在启动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))))
Run Code Online (Sandbox Code Playgroud)

如果您根本不想特别突出显示长行,则可能需要考虑第三个选项.您可以自定义变量空白样式(通过键入M-x customize-variable ENTER whitespace-style ENTER),并在值列表中删除条目:

  • 线
  • 线尾

(如果有的话).这应该关闭全局独立于长线的突出显示whitespace-line-column(同样,只有在你去除并重新激活空白模式之后).