Emacs 22.2.1 из дистрибутива Debian Lenny
Локаль в системе ru_RU.UTF-8
При переключении кодировки (Ctrl-Shift) вместо русских букв рисуются квадратики.
Как лечить?
Связанные вопросы:
Как открывать файлы с разными кодировками (koi-8, cp1251)?
Что сделать для правильного отображения имён файлов с русскими буквами?
mule-ucs поставил.
Русский в emacs 22.2.1 (Debian Lenny)
Модератор: /dev/random
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: Русский в emacs 22.2.1
При переключении или при набирании текста? Если последнее, то надо указать Emacs'у правильный шрифт, в котором есть нужные символы (русские буквы или какой там алфавит/набор иероглифов используете). Для примера, я использую по умолчанию шрифт Terminus и настраиваю так: в ~/.Xresources:
Код: Выделить всё
Emacs.Fontset-0: -*-terminus-medium-r-*-*-14-*-*-*-*-*-fontset-14
Код: Выделить всё
(when window-system
(set-face-attribute 'default nil :font "fontset-14"))
Если приводить полностью, вместе с fontset'ом с переменной шириной символов (кое-где надо), то так: ~/.Xresources:
Код: Выделить всё
Emacs.Fontset-0: -*-terminus-medium-r-*-*-14-*-*-*-*-*-fontset-14,\
japanese-jisx0208-1978:-*-fixed-medium-r-*-*-14-*-*-*-*-*-*-*
Emacs.Fontset-1: -*-helvetica-medium-r-*-*-14-*-*-*-*-*-fontset-variable,\
mule-unicode-0100-24ff:-rfx-helvetica-medium-r-*-*-14-*-*-*-*-*-iso10646-1
Код: Выделить всё
(when window-system
(set-face-attribute 'default nil :font "fontset-14")
(set-face-attribute 'variable-pitch nil :font "fontset-variable"))
Мои розовые очки
-
- Сообщения: 318
- ОС: Debian 11
Re: Русский в emacs 22.2.1
Заработало, но не работают горячие клавиши при переключении на русский
Это можно вылечить?
Это можно вылечить?
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: Русский в emacs 22.2.1
Вариантов два:
1. Отказаться от системного переключения раскладок в Emacs и пользоваться внутренней переключалкой. Я этим способом не пользовался, поэтому уточнять не буду.
2. Пользоваться системной переключалкой. Тогда можно частично реализовать горячие клавиши для русского: http://pastebin.com/pe0yECSy Частично, потому что длинные комбинации, вроде C-x C-s работать не будут, только одношаговые, и то, комбинации со знаками препинания в русской раскладке могут переехать на другие клавиши (у меня, скажем "_" набирается на разных клавишах в русской и английской раскладках, поэтому Undo (C-_) набирается также по разному.
Мои розовые очки
Спасибо сказали:
-
- Сообщения: 318
- ОС: Debian 11
Re: Русский в emacs 22.2.1
watashiwa_daredeska писал(а): ↑09.07.2011 13:112. Пользоваться системной переключалкой. Тогда можно частично реализовать горячие клавиши для русского: http://pastebin.com/pe0yECSy Частично, потому что длинные комбинации, вроде C-x C-s работать не будут, только одношаговые, и то, комбинации со знаками препинания в русской раскладке могут переехать на другие клавиши (у меня, скажем "_" набирается на разных клавишах в русской и английской раскладках, поэтому Undo (C-_) набирается также по разному.
Спасибо. А какая принципиальная разница, между одношаговыми и многошаговыми комбинациями? Или просто много переписывать?
-
- Сообщения: 318
- ОС: Debian 11
Re: Русский в emacs 22.2.1
watashiwa_daredeska писал(а): ↑09.07.2011 13:11Тогда можно частично реализовать горячие клавиши для русского: http://pastebin.com/pe0yECSy
После записи кода в ~/.emacs изменилась реакция при включеном русском на комбинацию клавиш C-n: вместо "вниз на строку" происходит перестановка двух символов в строке.
Лечение нашёл:
Код: Выделить всё
(define-key function-key-map [(control ?т)] [(control ?t)])
заменить на
Код: Выделить всё
(define-key function-key-map [(control ?т)] [(control ?n)])
И аналогично везде где встречается русское "т" и "Т"
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: Русский в emacs 22.2.1
Хм… Многошаговые тоже работают… Значит, осталась лишь проблема с «переезжающими» знаками препинания. С ними проблема в том, что в Elisp нельзя определить текущую раскладку. Если в X-Window это еще теоретически возможно, то в текстовом терминале это невозможно даже теоретически.
Спасибо :) Я на этот косяк как-то не нарывался, слишком мало текстов на русском пишу.
Мои розовые очки
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: Русский в emacs 22.2.1
А, и еще проблема с многошаговыми комбинациями, в которых используются буквы без модификаторов. Т.е. C-x C-b работать будет, а C-x b — нет, в силу конструкции :) Чтобы это побороть, надо уже не просто переписывать клавиши (C-и → C-b, например), но менять keymap'ы в emacs'е, следить за их изменениями (особенно при переключении major mode'ов) и опять менять. Муторное занятие, короче.watashiwa_darede... писал(а): ↑09.07.2011 19:52Значит, осталась лишь проблема с «переезжающими» знаками препинания.
Мои розовые очки
-
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: Русский в emacs 22.2.1
У меня комбинации с Ctrl работают в обеих раскладках безо всяких дополнительных телодвижений. Не работают только с Meta и, понятное дело, двухшаговые, в которых второе нажатие без модификатора. Правда, сейчас у меня emacs23, но помнится, и во времена 21 оно так же было. Хотя... Может быть дело в том, что я только консольной версией ползуюсь? (X11 -> roxterm -> screen -> emacs-nox)
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж