Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Misha Verbitsky ([info]tiphareth)
@ 2017-03-28 20:45:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Настроение: sick
Музыка:Tangerine Dream - Thief (Extended Edition)
Entry tags:emacs, linux, unicode

Копипаст из Емакса в Хтерм с локалью koi8-r
Есть проблема, прошу помощи.
Раньше я ее решал путем установки
Emacs 22 либо Emacs 21 из оверлея, но сейчас чего-то
не могу найти таких оверлеев, и у меня пока что
Emacs 24.

Внутренняя кодировка Емакса у меня koi8-r,
локаль
LANG="C"
LC_COLLATE="ru_RU.koi8r"
LC_CTYPE="ru_RU.koi8r"

Мне нужно копировать из Емакса в окно xterm
(локаль koi8-r) русские буквы, и копировать
из окна Firefox/Chrome в Емакс русские буквы.
В Emacs 21/22 она решается следующей странной
штукой (выяснил экспериментально):

(set-terminal-coding-system 'koi8-r-unix)
(set-keyboard-coding-system 'koi8-r-unix)
(set-selection-coding-system 'x-ctext-with-extensions)
(setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING))

В новой версии это не работает ни на копипаст в емакс
(печатает кракозябры), ни на копипаст из емакса
(не печатает ничего). Можно сделать
(set-clipboard-coding-system 'koi8-r-unix)
и она будет хорошо передавать из емакса в хтерм,
не будет передавать ничего из xterm в емакс, и
будет передавать кракозябры из Firefox в емакс.

Если сделать
(set-clipboard-coding-system 'utf-8-unix)
она не передает ничего из хтерм и в хтерм,
и передает текст из Firefox/Chrome в Емакс
в emacs как надо.

Копипаст из Емакса в Firefox работает как надо
в обоих случаях

Меня бы наверное устроило, если бы
(set-clipboard-coding-system 'utf-8-unix)
работало на копипаст в, а
(set-clipboard-coding-system 'koi8-r-unix)
на копипаст из, но каждый раз переключать
это все-таки чересчур.

В общем, прошу совета, как эту бяку настроить,
либо адреса gentoo-overlay с емаксом 21 или 22.

В целом - емакс от версии к версии все хуже и хуже,
все гаже и гаже, и никакого конца-краю этому нет.
Самый лучший был 19 (но он с utf-8 совсем не работает,
так что и он не годится).

Такие дела
Миша



(Читать комментарии) - (Добавить комментарий)


[info]polytheme
2017-03-29 12:37 (ссылка)
как я понял, она преобразует кодировку приложения на удаленном компьютере в UTF-8, в котором работает xterm (и, надеюсь, обратно):

http://unix.stackexchange.com/questions/25350/working-with-filenames-in-a-different-encoding-over-ssh

она включается в поставку иксов или что-то такое, у меня она, как ни странно, уже есть на компе
(но на сервере может не быть, вероятно). она запускается префиксом, то есть тебе нужно
будет говорить luit mailx (или сделать alias).

но я не уверен, что это оно (судя по описанию тобой желаемого).

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tiphareth
2017-03-29 19:24 (ссылка)
>в UTF-8, в котором работает xterm

у меня он работает в koi8-r

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polytheme
2017-03-29 19:41 (ссылка)
потому и добавил последнее предложение (вряд ли это то, чего ты хочешь): _если бы он работал в utf8_ (т.е. системная локаль была бы такая на локальном компе), luit бы тебя спас (гипотетически): xterm корректно хватал бы utf-выход с emacs, пересылал бы utf на удаленный комп, а там luit отображал бы его в koi.

а, вот что интересно сделать:
скопировать из буфера emacs'а какую-нибудь русскую строчку (делая разные set-clipboard-coding-system - koi8 и utf8)
и набрать

xclip -o > clip.txt
а потом посмотреть, что лежит в clip.txt - так мы увидим, что emacs кладет в буфер.

xclip умеет и наоборот отправлять текст в буфер обмена; с помощью него можно посмотреть, кто где обламывается и глючит (emacs и/или xterm).

судя по тому, что ты говоришь - emacs; но все равно интересно, как именно он лажает.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tiphareth
2017-03-29 19:48 (ссылка)
>(делая разные set-clipboard-coding-system - koi8 и utf8)
>а потом посмотреть, что лежит в clip.txt -
>так мы увидим, что emacs кладет в буфер.

та же самая строчка, набранная юникодом (в обоих случаях)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]polytheme
2017-03-29 19:53 (ссылка)
а если xclip -noutf8 -o > clip.txt ?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tiphareth
2017-03-29 20:03 (ссылка)
то же самое, что и в терминале: та же строчка в кои для koi8-r если
(set-selection-coding-system (quote koi8-unix))
пробелы и знаки препинания для
(set-clipboard-coding-system (quote utf-8-unix))

(Ответить) (Уровень выше)


(Читать комментарии) -