Copyright © 2001 Михаил Якшин, Андрей Носенко
Последнюю версию этого документа можно найти по адресу: http://www.linux.zp.ua/xemacs/
Русификацию XEmacs можно проводить двумя способами: либо без MULE, либо с ним. Ниже рассматриваются все аспекты русификации обоими способами. Заранее считаем, что русский язык на уровне системы у вас проставлен (есть необходимые шрифты, установлена локаль, переключатель клавиатуры и т.п.) и вы обладаете некими минимальными навыками работы с системой.
Определимся также сразу, что мы понимаем под русификацией XEmacs: во-первых, чтобы он показывал русские буквы, во-вторых, чтобы он мог и позволял их вводить. О переводе меню и сообщений на русский язык речь не идет.
Также следует заметить, что речь идет о XEmacs версий 21.1.xx и 21.4.xx. Использовать на текущий момент более ранние версии, по-видимому, нет смысла.
Все описания, рассуждения и "рецепты" относятся к Unix системам, поскольку у авторов нет опыта работы с XEmacs под Windows.
Для тех, кто впервые столкнулся с термином "MULE", заметим, что это такая самодостаточная система, замахивающаяся на тотальную поддержку большинства даже очень сложных языков (с иероглифами), требующая только наличия шрифтов у X-сервера. Расшифровывается, как "MULti-lingual Enhancement".
Его преимущества - перед вами целый мир, полный разных языков и кодировок. И все это вы можете использовать даже в одном документе. Лишь бы шрифты были.
Его недостатки - он массивнее (базовые пакеты для поддержки MULE занимают ~5-8 Mb) и сложнее в управлении. Работает также медленнее (хотя насколько это заметно для пользователя на современных процессорах - это еще вопрос.)
Если вы еще не знаете, чего хотите, то следующий маленький вопросник позволит Вам определить "Что же Вам надо":
Если же по какой-то причине это не возможно, а игры с "перекодировал -> отредактировал -> перекодировал" Вас не устраивают, то - XEmacs + MULE.
Преимущества этого подхода - он (XEmacs) легче. И на диске, и в памяти, и в управлении. Вам не надо хранить приблизительно 5-8 Mb пакетов для MULE-поддержки. Вам не надо беспокоится, правильно ли он распознал кодировку - у него нет понятия кодировки.
Недостатки этого подхода - обратная сторона его преимуществ. Вы ограничены одним языком (русским) и одной кодировкой (koi8-r, если не приложить руки). И за ее пределы Вам не выпрыгнуть. По крайней мере без перезапуска XEmacs'а в другой конфигурации. Если Вам попадется файл в другой (не родной) для Вашей системы кодировке, то Вам придется его сначала перекодировать, что не всегда возможно, или работать "вслепую", что очень неприятно.
Теория проста - надо заставить XEmacs использовать для
отображения символов вместо шрифта в кодировке iso-8859-1, как он
это делает по-умолчанию, шрифт в koi8-r, или какой является
"родным" для Вашей системы.1)
Параллельно с этим Вам, возможно, потребуется подстроить значение переменной ctl-arrow,
дабы разрешить отображать верхнюю половину кодовой таблицы "как есть".
Дабы сделать возможным ввод русских букв надо связать между собой keysym'ы и соответствующие им символы. (Cyrillic_A соответствует, "А", Cyrillic_BE - "Б" и т.д.) По-умолчанию XEmacs этого соответствия не знает.
Дабы правильно работали функции перехода по словам, преобразования
верхний/нижний регистр и т.п. необходимо описать
syntax-table и case-table. (Точнее,
надо правильно модифицировать уже существующие.)
1) Известен случай, и он работал, когда основной кодировкой была cp866.
Emacs.default.attributeFont: -*-*-medium-r-*-*-*-120-*-*-m-*-koi8-r
style "XEmacsText"
{
font = "-*-*-medium-r-*-*-*-120-*-*-m-*-koi8-r"
}
widget_class "*GtkXEmacs" style "XEmacsText"
(set-face-font 'default
"-*-*-medium-r-*-*-*-120-*-*-m-*-koi8-r")
Этот способ работает на всех версиях XEmacs'а, но при этом его старт может и, скорее всего, будет выглядеть, мягко говоря, по-уродскому и способен довести своими визуальными эффектами до белого каления.
Это связано с тем, что сперва инициализируются значениями по-умолчанию шрифты, затем открывается окно XEmacs'а (в терминах самого XEmacs - frame), а уже после этого интерпретируется init-файл.
Второй его недостаток есть следствие все того-же порядка инициализации - переопределение default face происходит после того, как будут вычислены italic face, bold face и bold-italic face. Соответственно по-умолчанию в них прописаны шрифты для iso-8859-1. Попытка сказать что-нибудь, вроде
(set-face-font 'italic
"-*-*-medium-o-normal-*-*-120-*-*-m-*-koi8-r")
(set-face-font 'bold
"-*-*-bold-r-normal-*-*-120-*-*-*-m-koi8-r")
(set-face-font 'bold-italic
"-*-*-bold-o-normal-*-*-120-*-*-m-*-koi8-r")
по-крайней мере у меня (awn@bcs.zp.ua) на 21.4.3 ни к чему путному не привела.
По умолчанию, XEmacs отображает символы, в "печатности"
которых не уверен, либо как "управляющие символы со значком
^", либо как "обратный слэш + восьмеричный код
символа". Поэтому, если вместо русского слова
"Привет" вы видите
"\360\322\311\327\305\324",
то Вам надо подстроить значение переменной ctl-arrow.
Присвоение переменной ctl-arrow значения
128 позволит отображать все символы из верхней
половины таблицы "как есть".
Этого можно добиться либо
(setq ctl-arrow 128)
Эти проблемы решает ru-keys.
Надо просто скачать его и положить в директорию, где XEmacs сможет его найти (например, для XEmacs 21.1.xx - это ~/.xemacs/lisp, а для XEmacs 21.4.xx - это ~/.xemacs/xemacs-packages/lisp) и добавить следующую строчку в init-файл (обычно это ~/.emacs или ~/.xemacs/init.el):
(require 'ru-keys)
подробные инструкции по установке - см. внутри файла ru-keys.el.
Замечание: В XEmacs 21.1.xx преобразования верхний/нижний регистр, регистро-независимый isearch, и т.п. работать не будут. 21.1.xx просто игнорирует case-table для символов с кодом >= 128. В 21.4.xx это уже исправлено.
Этот способ хорош тем, что обеспечивает большую общность, и вообще говоря, он более идеологически правильный, так как оставляет вам возможность работать в XEmacs не только с русскими текстами в кодировке koi8-r, а еще и непосредственно с некоторыми другими кодировками русского текста и иностранными алфавитами, например, кодировки iso-8859-1 (западноевропейский) - что крайне полезно людям, работающим, например, с немецкими текстами.
Для работы с MULE (механизмом для использования многоязыковых документов, в том числе разных языков в одном документе) нужен XEmacs, собранный с его поддержкой. Как правило, в дистрибутивах Linux'а есть необходимый пакет или можно собрать XEmacs самому из исходников.
Про MULE надо знать, что это такая самодостаточная система, замахивающаяся на тотальную поддержку большинства даже очень сложных языков (с иероглифами), требующая только наличия шрифтов у X-сервера. Русский язык она поддерживает отлично в куче кодировок, но единственная проблема - она считает по умолчанию, что русские шрифты у пользователя стоят стандартные, то есть в кодировке iso-8859-5. Их можно найти в пакете cyrrfx.
Для показа русских букв шрифтов (и установки кодировки, как показано ниже) в принципе будет достаточно, но для набора возможно понадобится еще маленькое ухищрение: дело в том, что тут начинается коренное отличие XEmacs от GNU emacs (за что его не любят половина русских пользователей) - XEmacs различает сами символы, а не коды символов, то есть для него файл - это не просто набор двоичных кодов, а каждый из символов файла имеет свое наименование, типа Cyrillic_IO.
В результате если попытаться через XKB вводить русские символы, то XEmaсs будет ругаться, почему же он получает всякие Cyrillic_A, Cyrillic_BE, Cyrillic_VE, а не "А", "Б", "В", и т.п. Тут можно действовать двумя способами:
Заметить это легко, это примечание о MULE много раз мелькает во время запуска, в конце концов просто должно быть меню . Если MULE нет - то надо либо поставить с дистрибутива (в случае с RPM-пакетами, например, основной пакет может называться xemacs, а к нему надо еще поставить xemacs-mule, xemacs-i18n или что-нибудь в этом роде), либо можно скачать XEmacs самому и собрать из исходников. Ссылки и подробные инструкции по скачиванию и сборке есть на www.xemacs.org.
По умолчанию XEmacs работает с русскими шрифтами только в кодировке iso8859-5, поэтому для него придется скачать и установить шрифты iso-8859-5 от cyrrfx. Все инструкции по установке этих шрифтов есть в их архиве, поэтому подробно на этом останавливаться тут нет смысла.
Это можно сделать или в меню MULE непосредственно перед загрузкой (или открытием нового) файла. Через меню выберите нужную языковую среду (обычно Cyrillic-KOI8, хотя никто не запрещает выбрать любую другую поддерживаемую MULE кодировку), либо это можно сделать введя команду M-x set-language-environment и выбрав среду там. После этого можно загружать необходимый файл - для показа русских букв этого должно быть достаточно.
Если языковая среда Cyrillic-KOI8 станет для вас более или менее постоянной, то стоит добавить следующую строчку в ваш конфигурационный файл (~/.emacs или ~/.xemacs/init.el):
(setup-cyrillic-koi8-environment)
Эта строчка должна быть одной из первых, чтобы избежать возможных конфликтов кодировок при загрузке дополнительных файлов дальше по ходу инициализации.
(require 'ru-keys)Более подробные инструкции по установке - см. внутри файла ru-keys.el.
Last modified: Thu Jul 5 21:17:01 EEST 2001