Вывод цветного мерзавца в eshell


10

Я использую emacs внутри терминала mintty (настроенного, чтобы сказать, что это xterm-256color) на Cygwin. list-colors-displayработает отлично. и цвета отображаются в списках Dired и т. д. Теперь я установил цвет для git branchтекущей ветви yellow reverse. Однако ни оболочки, ни окна eshell не отображают правильный цвет; вместо этого текущая ветвь отображается цветом по умолчанию. В ansi-termокне или вне emacs, внутри того же терминала, он отображается так, как должен.

У меня есть это в моем .emacs:

(add-hook 'eshell-preoutput-filter-functions  'ansi-color-apply)

Есть ли способ заставить эти цвета отображаться внутри окон оболочки или eshell?


1
Я не могу воспроизвести это в eshell с графическим Emacs, настроив git config --global color.ui alwaysзапуск git diff. Не могли бы вы предоставить более подробные шаги?
Rekado

мой ответ ниже поможет вам или что-то неясно?
rekado

Ответы:


5

Eshell и shell-modeоба используют ansi-color.elдля преобразования цветовых кодов ANSI в лица. ansi-color.elподдерживает следующие лица:

Parameter  Description        Face used by default
  0        default            default
  1        bold               bold
  2        faint              default
  3        italic             italic
  4        underlined         underline
  5        slowly blinking    success
  6        rapidly blinking   warning
  7        negative image     error

«Негативное изображение» является «обратным», и оно отображается на errorлице. Когда я настраиваю свой репозиторий такой ...

[color]
        ui = always
[color "branch"]
        current = yellow reverse

... и запускаю, git branchя вижу свои локальные ветви, а текущая ветвь отображается жирным желтым цветом. Когда я ставлю точку на желтый текст и запускаю, describe-faceя вижу, что он на самом деле отображается с errorлицом.

Вы можете настроить ansi-color-faces-vectorназначение другого лица, отличного от error«негативное изображение» / «обратное».

Вам не нужно (add-hook 'eshell-preoutput-filter-functions 'ansi-color-apply)использовать цвета ANSI в eshell.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.