emacs次要模式,用于临时修改默认面部

时间:2010-12-16 15:00:50

标签: emacs elisp highlight emacs-faces

例如,如何制作将默认前景色更改为灰色的次要模式,并在退出次要模式时,前景色会恢复为黑色?当您不喜欢在肩膀上看到某些文字时,此模式可能很有用。

现在,我运行以下代码将文本颜色变为灰色:

(set-face-attribute 'default (selected-frame) :foreground "darkgrey")

以下代码回来。

(set-face-attribute 'default (selected-frame) :foreground "SystemWindowText")

但这会影响所有缓冲区。

1 个答案:

答案 0 :(得分:8)

您可以使用基于叠加层的缓冲区面部模式,它还可以更改缓冲区中文本的背景。

(make-face 'hard-to-read-font)
(set-face-attribute 'hard-to-read-font nil :background "darkgrey" :foreground "grey")

(define-minor-mode hard-to-read-mode
  "This mode might be useful when you don't like certain text to be seen over your shoulders."
  :init-value nil :lighter " hard-to-read" :keymap nil
  (if hard-to-read-mode
      (progn
        (font-lock-mode nil)
        (buffer-face-mode t)
        (buffer-face-set 'hard-to-read-font))
    (progn
      (font-lock-mode t)
      (buffer-face-mode nil))))

;; change this to mode you need
;; or turn it on manually
;; (add-hook 'text-mode-hook
;;           (lambda ()
;;             (hard-to-read-mode t)))

更新:你知道,这不安全。它对人眼有效,但任何人都可以使用相机,然后只是增加对比度来阅读文字。