(setq debug-on-error t) (defvar egg-face-color-Japanese '("Blue" . "Cyan")) (defvar egg-face-color-Chinese-GB '("Red" . "OrangeRed")) (defvar egg-face-color-Chinese-CNS '("Purple" . "Violet")) (defvar egg-face-color-Korean '("ForestGreen" . "Green")) (defvar egg-face-color-other (cons (frame-parameter (selected-frame) 'foreground-color) (frame-parameter (selected-frame) 'foreground-color))) (defconst egg-face-lang-names '("Japanese" "Chinese-GB" "Chinese-CNS" "Korean" "t")) (defun egg-make-face (lang) (let ((mode (eq (frame-parameter (selected-frame) 'background-mode) 'light)) (face (make-face (intern (concat "egg-face-" lang)))) (color (intern (concat "egg-face-color-" lang)))) (setq color (and (boundp color) (symbol-value color))) (set-face-foreground face (if (consp color) (if mode (car color) (cdr color)) color)) face)) (defconst its-fence-face (if window-system (mapcar (lambda (lang) (let ((lang-name (if (equal lang "t") "other" lang))) (cons (intern lang) (egg-make-face lang-name)))) egg-face-lang-names))) (defconst egg-conversion-face its-fence-face)