2

たとえば、デフォルトの前景色を灰色に変更するマイナー モードを作成し、マイナー モードを終了すると前景色が黒に戻るようにするにはどうすればよいですか? このモードは、特定のテキストが肩越しに見えたくない場合に便利です。

とりあえず、次のコードを実行してテキストの色を灰色にします。

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

そして、戻るための次のコード。

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

しかし、これはすべてのバッファに影響します。

4

1 に答える 1

8

オーバーレイに基づいて buffer-face-mode を使用できます。また、バッファー内のテキストの背景を変更することもできます。

(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)))

更新: ご存じのとおり、これは安全ではありません。これは人間の目に対しては機能しますが、誰でもカメラを使用して、コントラストを上げるだけでテキストを読むことができます。

于 2010-12-16T16:08:01.257 に答える