Русский в emacs 22.2.1 (Debian Lenny)

Модератор: /dev/random

Аватара пользователя
kt315e
Сообщения: 303
ОС: Linux Debian Jessie

Русский в emacs 22.2.1

Сообщение kt315e » 08.07.2011 16:10

Emacs 22.2.1 из дистрибутива Debian Lenny
Локаль в системе ru_RU.UTF-8
При переключении кодировки (Ctrl-Shift) вместо русских букв рисуются квадратики.
Как лечить?
Связанные вопросы:
Как открывать файлы с разными кодировками (koi-8, cp1251)?
Что сделать для правильного отображения имён файлов с русскими буквами?
mule-ucs поставил.
Спасибо сказали:

watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Русский в emacs 22.2.1

Сообщение watashiwa_daredeska » 08.07.2011 18:29

kt315e писал(а):
08.07.2011 16:10
При переключении кодировки (Ctrl-Shift) вместо русских букв рисуются квадратики.
Как лечить?
При переключении или при набирании текста? Если последнее, то надо указать Emacs'у правильный шрифт, в котором есть нужные символы (русские буквы или какой там алфавит/набор иероглифов используете). Для примера, я использую по умолчанию шрифт Terminus и настраиваю так: в ~/.Xresources:

Код: Выделить всё

Emacs.Fontset-0: -*-terminus-medium-r-*-*-14-*-*-*-*-*-fontset-14
В ~/.emacs:

Код: Выделить всё

(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
, ~/.emacs:

Код: Выделить всё

(when window-system
  (set-face-attribute 'default nil :font "fontset-14")
  (set-face-attribute 'variable-pitch nil :font "fontset-variable"))
Спасибо сказали:

Аватара пользователя
kt315e
Сообщения: 303
ОС: Linux Debian Jessie

Re: Русский в emacs 22.2.1

Сообщение kt315e » 08.07.2011 22:45

Заработало, но не работают горячие клавиши при переключении на русский :(
Это можно вылечить?
Спасибо сказали:

watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Русский в emacs 22.2.1

Сообщение watashiwa_daredeska » 09.07.2011 13:11

kt315e писал(а):
08.07.2011 22:45
Это можно вылечить?
Вариантов два:
1. Отказаться от системного переключения раскладок в Emacs и пользоваться внутренней переключалкой. Я этим способом не пользовался, поэтому уточнять не буду.
2. Пользоваться системной переключалкой. Тогда можно частично реализовать горячие клавиши для русского: http://pastebin.com/pe0yECSy Частично, потому что длинные комбинации, вроде C-x C-s работать не будут, только одношаговые, и то, комбинации со знаками препинания в русской раскладке могут переехать на другие клавиши (у меня, скажем "_" набирается на разных клавишах в русской и английской раскладках, поэтому Undo (C-_) набирается также по разному.
Спасибо сказали:

Аватара пользователя
kt315e
Сообщения: 303
ОС: Linux Debian Jessie

Re: Русский в emacs 22.2.1

Сообщение kt315e » 09.07.2011 17:35

watashiwa_daredeska писал(а):
09.07.2011 13:11
2. Пользоваться системной переключалкой. Тогда можно частично реализовать горячие клавиши для русского: http://pastebin.com/pe0yECSy Частично, потому что длинные комбинации, вроде C-x C-s работать не будут, только одношаговые, и то, комбинации со знаками препинания в русской раскладке могут переехать на другие клавиши (у меня, скажем "_" набирается на разных клавишах в русской и английской раскладках, поэтому Undo (C-_) набирается также по разному.

Спасибо. А какая принципиальная разница, между одношаговыми и многошаговыми комбинациями? Или просто много переписывать?
Спасибо сказали:

Аватара пользователя
kt315e
Сообщения: 303
ОС: Linux Debian Jessie

Re: Русский в emacs 22.2.1

Сообщение kt315e » 09.07.2011 18:29

watashiwa_daredeska писал(а):
09.07.2011 13:11
Тогда можно частично реализовать горячие клавиши для русского: http://pastebin.com/pe0yECSy

После записи кода в ~/.emacs изменилась реакция при включеном русском на комбинацию клавиш C-n: вместо "вниз на строку" происходит перестановка двух символов в строке. :ohmy:


Лечение нашёл:

Код: Выделить всё

(define-key function-key-map [(control ?т)] [(control ?t)])

заменить на

Код: Выделить всё

(define-key function-key-map [(control ?т)] [(control ?n)])

И аналогично везде где встречается русское "т" и "Т"
Спасибо сказали:

watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Русский в emacs 22.2.1

Сообщение watashiwa_daredeska » 09.07.2011 19:52

kt315e писал(а):
09.07.2011 17:35
Спасибо. А какая принципиальная разница, между одношаговыми и многошаговыми комбинациями?
Хм… Многошаговые тоже работают… Значит, осталась лишь проблема с «переезжающими» знаками препинания. С ними проблема в том, что в Elisp нельзя определить текущую раскладку. Если в X-Window это еще теоретически возможно, то в текстовом терминале это невозможно даже теоретически.

kt315e писал(а):
09.07.2011 18:29
Лечение нашёл
Спасибо :) Я на этот косяк как-то не нарывался, слишком мало текстов на русском пишу.
Спасибо сказали:

watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Русский в emacs 22.2.1

Сообщение watashiwa_daredeska » 09.07.2011 19:59

watashiwa_darede... писал(а):
09.07.2011 19:52
Значит, осталась лишь проблема с «переезжающими» знаками препинания.
А, и еще проблема с многошаговыми комбинациями, в которых используются буквы без модификаторов. Т.е. C-x C-b работать будет, а C-x b — нет, в силу конструкции :) Чтобы это побороть, надо уже не просто переписывать клавиши (C-и → C-b, например), но менять keymap'ы в emacs'е, следить за их изменениями (особенно при переключении major mode'ов) и опять менять. Муторное занятие, короче.
Спасибо сказали:

Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Русский в emacs 22.2.1

Сообщение t.t » 13.07.2011 23:41

У меня комбинации с Ctrl работают в обеих раскладках безо всяких дополнительных телодвижений. Не работают только с Meta и, понятное дело, двухшаговые, в которых второе нажатие без модификатора. Правда, сейчас у меня emacs23, но помнится, и во времена 21 оно так же было. Хотя... Может быть дело в том, что я только консольной версией ползуюсь? (X11 -> roxterm -> screen -> emacs-nox)
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали: