Модифицируйте лицо под курсором в Emacs, в том числе на ANSIMER

Есть ли способ легко изменить font-face под курсором?

Например, текст синим цветом ниже трудно читать:

Выше приведен вывод

ipython --color "Linux"

работает на ansi-term с tango-dark в Emacs 24.1т.е. (load-theme 'tango-dark t)

Если я бегу what-cursor-position на изображении выше (описано здесь: получить шрифт под курсором в Emacs), я получаю:

             position: 30385 of 30477 (100%), column: 22
            character: / (displayed as /) (codepoint 47, #o57, #x2f)
    preferred charset: ascii (ASCII (ISO646 IRV))
code point in charset: 0x2F
               syntax: _    which means: symbol
             category: .:Base, a:ASCII, l:Latin, r:Roman
          buffer code: #x2F
            file code: #x2F (encoded by coding system nil)
              display: by this font (glyph code)
    xft:-unknown-DejaVu LGC Sans Mono-bold-normal-normal-*-11-*-*-*-m-0-iso10646-1 (#x12)

Character code properties: customize what to show
  name: SOLIDUS
  old-name: SLASH
  general-category: Po (Punctuation, Other)
  decomposition: (47) ('/')

There are text properties here:
  face                 (:weight bold :foreground "blue2" :background unspecified)

Как я могу изменить этот шрифт?

Если вам интересно, IPython поддерживает только три набора цветов:

  • Nocolor
  • Linux (тот, который я использую выше)
  • LightBG (для светлых фонов)

Обновить:

Я думаю font-lock-string-face это другое лицо:

На самом деле, я думаю, что это не лицо, которое IPython использует для представления строк, а лицо, которое python-mode используется для представления строк в буфере с обычным кодом Python (в tango-dark) -- увидеть ниже --.

3 ответа

M-x customize-face наведя курсор на конкретную вещь, которую вы хотите изменить. Также доступны set-face-foreground а также set-face-background в зависимости от того, что вы хотите сделать (иногда полезно изменить цвет подложки, чтобы шрифт было легче увидеть в терминалах).

Поэтому я проверил IPython, как указано в моем комментарии ниже и ipython.el не выделяет самостоятельно. Окраска выполняется с использованием терминальных цветов ANSI. В некоторых терминалах возможно изменить цвета с помощью .bashrc или же .zshrc или что бы ни была ваша оболочка и запускать ее из M-x term возможно. В самом Emacs я не вижу способа изменить его, поскольку у IPython есть только 3 схемы по умолчанию и нет способа указать что-либо конкретное, насколько я вижу.

Можно изменить способ отображения цветов ANSI:

(defface term-color-red
    '((t (:foreground "#ff0000" :background "#ff0000")))
  "Unhelpful docstring.")

Вот целая связка:

term-color-red
term-color-green
term-color-black
term-color-yellow
term-color-blue
term-color-magenta
term-color-cyan
term-color-white

Как и Сабоф, я думаю, что цвет, который вы видите, установлен ansi-termи не по цветовой теме Emacs.

Способ настроить эти цвета состоит в установке ansi-term-color-vector переменная. Глядя на код в term.el помогает понять значение этой переменной: она содержит спецификации цвета для 8- цветных escape-кодов ANSI:

(defvar ansi-term-color-vector
  [unspecified "black" "red3" "green3" "yellow3" "blue2"
   "magenta3" "cyan3" "white"])

Вот мои настройки (которые могут вам подойти, так как я также использую темную тему танго):

;; ANSI Term colors
(setq ansi-term-color-vector
      [unspecified "#000000" "#b21818" "#18b218" "#BE5F00"
                   "#6D85BA" "#b218b2" "#18b2b2" "#b2b2b2"])
Другие вопросы по тегам