light-symbol.el只能点亮匹配符号的背景,而不是重新整理它

时间:2014-02-03 23:17:16

标签: emacs elisp

我使用light-symbol.el在页面上显示光标所在的匹配符号。除了完全从原始颜色方案中剥离匹配符号然后突出显示背景外,它一直运行良好。我试图错过代码,让它只突出显示背景而不重置符号的颜色,但没有成功。 任何帮助表示赞赏。 以下是来自light-symbol.el的相关代码:

(defun light-symbol-refontify ()
  (unless font-lock-mode
    (font-lock-mode 1))
  (font-lock-fontify-buffer))
(defun light-symbol-show-symbol ()
  (when (and light-symbol-mode
             ;; FIXME: this should prevent us from changing when
             ;; isearch is running but does not... ?
             (not this-command))
    (let ((refontify nil))
      (when light-symbol-previous-symbol
        (font-lock-remove-keywords nil light-symbol-previous-symbol)
        (setq refontify t))
      (let ((sym (thing-at-point 'symbol)))
        (if sym
            (progn
              (set-text-properties 0 (length sym) nil sym)
              (setq light-symbol-previous-symbol
                    (list (list
                           (concat light-symbol-rx-start
                                   (regexp-quote sym)
                                   light-symbol-rx-end)
                           (list 0 (list 'quote light-symbol-face) t))))
              (font-lock-add-keywords nil light-symbol-previous-symbol)
              (setq refontify t))
          (setq light-symbol-previous-symbol nil)))
      (if refontify
          (light-symbol-refontify)))))
(defun light-symbol-pre-command ()
  (when light-symbol-previous-symbol
    (font-lock-remove-keywords nil light-symbol-previous-symbol)
    (setq light-symbol-previous-symbol nil)
    (light-symbol-refontify)))

这是图书馆的链接: https://raw.github.com/nealford/emacs/master/elpa/light-symbol-0.1/light-symbol.el

1 个答案:

答案 0 :(得分:1)

如果你注释掉这一行:

(set-text-properties 0 (length sym) nil sym)

这可能会满足您的要求。我不知道它是否是一个强大的解决方案,因为我不知道为什么这样做是首先。

显然,如果文字颜色与浅色符号脸部背景类似,则您将无法阅读。

如果你想控制前景色以防止低对比度问题,你可以defface自定义脸部(或者找到一个适当的现有脸部来设置前景和背景;总是假设你不要我想弄乱hi-blue脸部,并将light-symbol-face改为。

然而,这可能与你开始时的情况没有太大的不同。