Настройка терминов в новом Emacs 24.3

Как я могу отрегулировать грань term в новом Emacs, чтобы получить тот же элемент управления, который был возможен с помощью ansi-term-color-vector?

Одна из новых функций в Emacs 24.3 выглядит так, что она обновляет механизм управления гранью буферов term, т.е.

Теперь переменные term-default-fg-color и term-default-bg-colorустарел в пользу настраиваемого лица term.

Вы можете настроить отображение цветов и стилей терминала ANSI на настраивая соответствующие term-color-COLOR, term-color-underlineи term-color-bold.

Микки из Mastering Emacs комментирует следующее:

Если, как и я, вы настроили ansi-color-names-vector, чтобы изменить цвета термина по умолчанию Я предлагаю вам переключиться на использование лиц теперь. хорошие новости здесь, вы можете, должны пожелать, изменить больше, чем просто цвета для каждого цвета ANSI: нет ничего, что останавливало бы вас от принуждения другой шрифт для определенных цветов

Как и Микки, я также использовал ansi-color-names-vector, чтобы убедиться, что цвет моих буферов term хорошо выглядит на темных тем (например, tango-dark)

(setq ansi-term-color-vector [unspecified "black" "red3" "lime green" "yellow3" "DeepSkyBlue?3" "magenta3" "cyan3" "white"])

Но теперь это приводит к ошибке:

"error in process filter: Invalid face; unspecified" 

При попытке использовать новое лицо term, когда я перехожу к M-x describe-face term, я вижу следующее:

[] Font Family
[] Font Foundry
[] Width
[] Height
[] Weight
[] Slant
[] Underline
[] Overline
[] Strike-through
[] Box around text
[] Inverse-video
[] Foreground
[] Background
[] Stipple
[x]  Inherit

Но как мне настроить эти настройки, чтобы получить тот же эффект, который я достиг с помощью ansi-term-color-vector?

Update

Я все еще не могу исправить цвета. Вот меню, которое я получаю для M-x customize-theme tango-dark:

enter image description here

И вот пример одного из цветов/граней в терминале, которые трудно увидеть:

                enter image description here

Ответ 1

Это работало для меня в Emacs 24.3.1, чтобы установить цвета термина и ansi-term. Просто измените цвета на ваши предпочтительные значения (с соответствующим фоном).

;; term
(defface term-color-black 
  '((t (:foreground "#3f3f3f" :background "#272822"))) 
  "Unhelpful docstring.")
(defface term-color-red
  '((t (:foreground "#cc9393" :background "#272822"))) 
  "Unhelpful docstring.")
(defface term-color-green
  '((t (:foreground "#7f9f7f" :background "#272822"))) 
  "Unhelpful docstring.")
(defface term-color-yellow
  '((t (:foreground "#f0dfaf" :background "#272822"))) 
  "Unhelpful docstring.")
(defface term-color-blue 
  '((t (:foreground "#6d85ba" :background "#272822"))) 
  "Unhelpful docstring.")
(defface term-color-magenta 
  '((t (:foreground "#dc8cc3" :background "#272822"))) 
  "Unhelpful docstring.")
(defface term-color-cyan
  '((t (:foreground "#93e0e3" :background "#272822"))) 
  "Unhelpful docstring.")
(defface term-color-white
  '((t (:foreground "#dcdccc" :background "#272822"))) 
  "Unhelpful docstring.")
'(term-default-fg-color ((t (:inherit term-color-white))))
'(term-default-bg-color ((t (:inherit term-color-black))))

;; ansi-term colors
(setq ansi-term-color-vector
  [term term-color-black term-color-red term-color-green term-color-yellow 
    term-color-blue term-color-magenta term-color-cyan term-color-white])

Ответ 2

В Emacs 24.3 вам необходимо настроить следующие грани:

   ;; term
   `(term-color-black ((t (:foreground ,zenburn-bg
                                       :background ,zenburn-bg-1))))
   `(term-color-red ((t (:foreground ,zenburn-red-2
                                       :background ,zenburn-red-4))))
   `(term-color-green ((t (:foreground ,zenburn-green
                                       :background ,zenburn-green+2))))
   `(term-color-yellow ((t (:foreground ,zenburn-orange
                                       :background ,zenburn-yellow))))
   `(term-color-blue ((t (:foreground ,zenburn-blue-1
                                      :background ,zenburn-blue-4))))
   `(term-color-magenta ((t (:foreground ,zenburn-magenta
                                         :background ,zenburn-red))))
   `(term-color-cyan ((t (:foreground ,zenburn-cyan
                                       :background ,zenburn-blue))))
   `(term-color-white ((t (:foreground ,zenburn-fg
                                       :background ,zenburn-fg-1))))
   '(term-default-fg-color ((t (:inherit term-color-white))))
   '(term-default-bg-color ((t (:inherit term-color-black))))

Этот код из последней версии Zenburn. Лично я чувствую, что новый способ настройки лиц - это улучшение по сравнению с использованием неясного вектора.

Ответ 3

Я бы предложил M-x customize-group RET term RET
как простейшая точка входа для настройки этих цветов.