我是 Emacs 的长期用户(26 年),从 TECO Emacs 一直到适用于 MacOS X 的 GNU Emacs 23.4。我可以破解 Lisp 宏并且通常会找到自己的方法。
Emacs 变得非常庞大。并且非常丰富多彩。
有没有一种简单的方法可以确保 Emacs 永远不会改变字体大小或颜色?
您可以使用 .emacs 中的以下行关闭所有字体颜色和其他装饰:
(global-font-lock-mode 0)
Emacs 有一些不受font-lock-mode
.
这是Juri Linkov 在 2007 年发布到 Emacs Dev 邮件列表的解决方案:
I use the following trick to post-process faces immediately after they
get created. I also modified this code to not reset mode line faces:
(defun my-faces-fix (&optional frame)
"Fix defined faces."
(interactive)
;; Check if this function is called by `custom-define-hook' from
;; `custom-declare-face' where the variable `face' is bound locally.
(when (boundp 'face)
(dolist (face (face-list))
(unless (memq face '(mode-line mode-line-highlight mode-line-inactive))
;; Reset all face attributes
(modify-face face)))))
;; 1. Fix existing faces
(let ((face t)) (my-faces-fix))
;; 2. Call `my-faces-fix' every time some new face gets defined
(add-to-list 'custom-define-hook 'my-faces-fix)
这是我两年来一直在使用的:
(custom-set-faces
'(default ((t (:inherit nil :height 113 :family "DejaVu Sans Mono"))))
'(font-lock-builtin-face ((nil (:foreground "#7F0055" :weight bold))))
'(font-lock-keyword-face ((nil (:foreground "#7F0055" :weight bold))))
'(font-lock-comment-face ((nil (:foreground "#3F7F5F"))))
'(font-lock-string-face ((nil (:foreground "#2A00FF"))))
'(font-lock-type-face ((t (:underline t :slant italic :foreground "#000000"))))
'(font-lock-constant-face ((t (:foreground "#110099"))))
'(font-lock-variable-name-face ((nil nil)))
'(font-lock-function-name-face ((t (:weight bold)))))
您也可以自定义一堆其他面孔:只需调用M-x customize-face
. 它将自动选择当前面。