Emacs несовершеннолетний режим для временного изменения лица по умолчанию - PullRequest
2 голосов
/ 16 декабря 2010

Например, как я могу сделать второстепенный режим, который меняет цвет переднего плана по умолчанию на серый, а после выхода из второстепенного режима цвет переднего плана снова становится черным?Этот режим может быть полезен, когда вам не нравится, чтобы какой-то текст появлялся у вас за плечами.

На данный момент я запускаю следующий код, чтобы изменить цвет текста на серый:

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

И следующий код для возврата.

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

Но это влияет на все буферы.

1 Ответ

8 голосов
/ 16 декабря 2010

Вы можете использовать режим буфера для лица, основанный на наложениях, он также позволяет изменять фон текста в вашем буфере.

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

update: вы знаете, это небезопасно.Он работает против человеческих глаз, но любой может использовать камеру, а затем просто увеличить контраст, чтобы прочитать текст.

...