ratxor (ratxor) wrote in ru_emacs,
ratxor
ratxor
ru_emacs

ansi colors in shell

Добрый день. Столкнулся со следующей проблемой. В EmacsW32 при выполнении команды M-x shell у меня запускается cygwin bash. И в этом shell команда ls --color возвращает цветной результат, а echo 1 | grep 1 --color - нецветной. Причем, если указать echo 1 | grep 1 --color=always, то на экране появляются управляющие ANSI-коды. Раз вывод команды ls --color цветной значит данный терминал поддерживает ansi-коды. Grep вызывается именно тот, который нужен - из cygwin. И в cygwin shell, и в Far cygwin grep с опцией --color возвращает цветной результат. В конфиге emacs команды (autoload 'ansi-color-for-comint_mode-on "ansi-color" nil t) и (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on) указывал.

Оказывается, grep --color формирует странные ANSI-коды: echo 1 | grep 1 --color=always | od -t x1
0000000 1b 5b 31 3b 33 33 6d 1b 5b 4b 31 1b 5b 6d 1b 5b
0000020 4b 0a
0000022

То есть, странные коды здесь это "[K" и "[m".

Для сравнения ls --color | od -t x1
0000000 1b 5b 30 6d 1b 5b 30 31 3b 33 32 6d 62 61 73 68
0000020 2e 65 78 65 2e 73 74 61 63 6b 64 75 6d 70 1b 5b
0000040 30 6d 2a 0a 1b 5b 30 31 3b 33 32 6d 63 6d 64 70
0000060 72 6f 78 79 2e 65 78 65 2e 73 74 61 63 6b 64 75
0000100 6d 70 1b 5b 30 6d 2a 0a 65 63 68 6f 5f 72 65 73
0000120 2e 74 78 74 0a 65 63 68 6f 5f 72 65 73 5f 63 79
0000140 67 77 69 6e 2e 74 78 74 0a 6c 73 5f 72 65 73 2e
0000160 74 78 74 0a
0000164

Может быть, это файл ansi-color.el не поддерживает такие SGR-коды. У меня была версия ansi-color.el 3.4.2. Скачал и скомпилировал последнюю версию - 3.4.5. Результат тот же.
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

  • 0 comments