【问题标题】:Why does this Emacs Lisp snippet break list-colors-display?为什么这个 Emacs Lisp 片段会破坏 list-colors-display?
【发布时间】:2009-04-02 18:24:50
【问题描述】:

我喜欢 Emacs 使用尾随空白面突出显示制表符,我将其设置为我的背景颜色稍微灰一点的版本。这样一来,我认为不需要的所有空格(制表符和尾随空格)都将具有略带灰色的背景。

这是我使用的代码:

(add-hook 'font-lock-mode-hook
  '(lambda ()
     (font-lock-add-keywords
       nil
        '(("\t" 0 'trailing-whitespace prepend))
     )
   )
)

但是,它似乎破坏了 list-colors-display:这个函数仍然列出所有颜色,但它们是单色的。我没有得到它应该提供的令人眼花缭乱的光谱。

为什么会这样?可以修复吗?

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

    不确定错误的原因。 wiki 上有一种模式可以显示标签 (show-wspace.el),效果很好。

    (require 'show-wspace)
    (show-ws-toggle-show-tabs) ; default is no tabs shown, turn it on
    ;; the face used is 'show-ws-tab, which you can customize at will    
    

    【讨论】:

      【解决方案2】:

      您可以包装您的函数,这样它就不会在以 * 开头/结尾的缓冲区中执行空白操作。无论如何,您可能不希望它出现在这些类型的缓冲区中:

      (add-hook ...
        (unless (string-match "\\*.+\\*" (buffer-name))
          (font-lock-add-keywords ...)))
      

      【讨论】:

      • 这是一个很好的解决方法。如果没有人就问题实际发生的原因发表解释,我会接受这个答案。
      猜你喜欢
      • 2016-08-16
      • 1970-01-01
      • 2011-07-23
      • 2021-05-27
      • 2012-10-08
      • 1970-01-01
      • 2011-09-27
      • 2011-11-19
      • 1970-01-01
      相关资源
      最近更新 更多