заставить emacs в терминале использовать темные цвета, а не светлые цвета блокировки шрифта

Я использую emacs в MacOS 10.6 с терминалом. У меня белый фон.

Очень сложно читать строки C ++ в кавычках. Они появляются в бледно-зеленом цвете. Ключевые слова выделены бирюзой.

После поиска в источнике я нашел cpp.el и определил, что использую cpp-face-light-name-list вместо cpp-face-dark-name-list.

Очевидно, эта функция должна выбирать правильный список на основе цвета фона:

(defcustom cpp-face-default-list nil
  "Alist of faces you can choose from for cpp conditionals.                                                           
Each element has the form (STRING . FACE), where STRING                                                               
serves as a name (for `cpp-highlight-buffer' only)                                                                    
and FACE is either a face (a symbol)                                                                                  
or a cons cell (background-color . COLOR)."
  :type '(repeat (cons string (choice face (cons (const background-color) string))))
  :group 'cpp)

Но похоже, что это не работает.

Что я должен поместить в свой файл .emacs, чтобы получить cpp-face-dark-list вместо cpp-face-light-list?

Спасибо!


person vy32    schedule 11.04.2010    source источник
comment
Может, работает явная установка светлого фона? (установить белый цвет фона)?   -  person Patrick    schedule 11.04.2010


Ответы (5)


У меня такая же проблема, выбранные мной темы всегда не читаются на терминале. Ответ состоит в том, чтобы использовать пакет цветовой темы, как говорили другие, затем выбрать одну тему для Emacs в терминале и другую тему для Emacs, работающую в собственном окне, как это:

(require 'color-theme)
(setq color-theme-is-global t)
(if window-system
    (color-theme-deep-blue)   ;; Emacs in own window
    (color-theme-dark-laptop) ;; Emacs in tty
)

В Emacs вы можете набрать M-x color-theme-Tab, чтобы получить список доступных тем. Точно так же вы можете добавить крючки для основных режимов, чтобы изменить цветовую тему в зависимости от того, какой код вы редактируете.

person snim2    schedule 16.05.2010

Как было предложено в одном из комментариев - ознакомьтесь с пакетом color-theme. Это гораздо более универсальное решение таких проблем, как ваша, и его гораздо проще использовать, чем настраивать начертание шрифта вручную.

person Bozhidar Batsov    schedule 11.04.2010

Если вы явно установите для переднего плана по умолчанию черный цвет, а для фона - белый (M-x customize-group basic-faces), блокировка шрифта гарантирует, что все будет доступно для чтения автоматически. Эти два цвета - единственные, которые вам нужно установить, если все, что вам нужно, - это достаточный контраст, чтобы блокировка шрифта была удобочитаемой.

Я пробовал colortheme.el, и особенно с emacs23, он имеет тенденцию делать вещи менее, чем более читаемыми, мне пришлось перезапускать, чтобы восстановить лица, которые были установлены на нечитаемые комбинации переднего и заднего плана и не сбрасывались.

person Justin Smith    schedule 12.04.2010

Возможно, стоит убедиться, что на вашем терминале включен цвет: export TERM=xterm-256color

person Anycorn    schedule 11.04.2010
comment
Поскольку он видит шрифты в бледно-зеленом цвете, я думаю, можно с уверенностью предположить, что цвета в терминале включены. - person Bozhidar Batsov; 12.04.2010

Это еще один способ сделать это, и он особенно удобен, если вы используете режим демона в Emacs 23+. При использовании режима демона иногда используется графический клиент, а иногда - терминальный клиент. Приведенный ниже «фрагмент» пытается выяснить, какой клиент вы используете, а затем переключается на соответствующую тему (из выбора цветовой темы). Нашел на emacswiki.

(require 'color-theme)
(eval-after-load "color-theme"
    (color-theme-initialize))

;; http://www.emacswiki.org/emacs/ColorTheme#toc10
;; select theme - first list element is for windowing system, second is for console/terminal
(setq color-theme-choices 
      '(color-theme-tangotango color-theme-standard))

(funcall (lambda (cols)
           (let ((color-theme-is-global nil))
             (eval 
              (append '(if (window-system))
                  (mapcar (lambda (x) (cons x nil)) 
                      cols)))))
         color-theme-choices)

(require 'cl)
(fset 'test-win-sys 
      (funcall (lambda (cols)
             (lexical-let ((cols cols))
               (lambda (frame)
                 (let ((color-theme-is-global nil))
               (select-frame frame)
               (eval 
            (append '(if (window-system frame)) 
                (mapcar (lambda (x) (cons x nil)) 
                    cols)))))))
               color-theme-choices ))
(add-hook 'after-make-frame-functions 'test-win-sys)
person monotux    schedule 01.06.2010