В этом разделе я опишу настройку различных текстовых редакторов для работы с
кириллическими текстами. Этот раздел на охватывает текстовые процессоры,
настройка которых описывается позже (смотри раздел Текстовые процессоры)
Есть две версии редактора Emacs - GNU Emacs и
XEmacs . Они обеспечивают более или менее сходный набор функций и
возможностей. Реализация некоторых деталей расходится довольно сильно. Настройка
кириллицы требует некого низко-уровневого (в духе Emacs Лиспа) "хака" и немного
отличается для этих двух реализаций.
ВНИМАНИЕ:Помимо настройки, описанной здесь, существует альтернативный
путь обучения обоих версий emacs кириллице. Для этого используется
MULE (MULtilanguage Emacs support). Этот путь несколько сложен и
(на сколько я знаю) редко используется, поэтому я его здесь не описываю.
Минимальная поддержка кириллицы в GNU emacs (вам не нужно этого
делать при настройке XEmacs ) обеспечивается при выполнении
следующих вызовов, добавленных в .emacs (при условии, что поддержка
символов кириллицы установлена для консоли или для X Windows соответственно):
(standard-display-european t)
(let ((m (current-input-mode)))
(set-input-mode (car m) (nth 1 m) 1))
Это позволит вам видеть и вводить символы, находящиеся в верхней части ASCII
таблицы.
Однако, этого не достаточно. Emacs обрабатывает кириллические символы как
специальные, и как следствие не распознает границы русских слов и не делает
различия между строчными и заглавными буквами. Чтобы обойти это, вам следует
несколько модифицировать таблицы синтаксиса и регистра emacs:
(require 'case-table)
(let* ((ruc "\341\342\367\347\344\345\263\366\372\351\352\353\354\355
\356\357\360\362\363\364\365\346\350\343\376\373\375\370
\371\377\374\340\361")
(rlc "\301\302\327\307\304\305\243\326\332\311\312\313\314\315
\316\317\320\322\323\324\325\306\310\303\336\333\335\330
\331\337\334\300\321")
(i 0)
(len (length ruc)))
(while (< i len)
(modify-syntax-entry (elt ruc i) "w ")
(modify-syntax-entry (elt rlc i) "w ")
(set-case-syntax-pair (elt ruc i) (elt rlc i) (standard-case-table))
(setq i (+ i 1))))
Для этого я создал файл rusup.el , который содержит эти команды,
также как и пару других удобные функции. Вы должны вызвать его в вашем
~/.emacs .
Ну и в заключении: пакет russian.el, созданный
Валерием Алексеевым (valery@math.uga.edu ), позволяющий пользователю
переключаться между кириллическим и стандартным модами ввода и преобразовывать
текстовый буфер из одной русской кодировки в другую (это очень полезно, для
чтения текстов импортированных из MS-DOS или Windows).
Редактор vi (по крайней мере его клон vim ,
присутствующий в большинстве дистрибутивов Linux) знает о существовании 8ми
битных символов. Это дает вам возможность вводить кириллические буквы. Редактор
правильно распознает границы слов. Я ничего не знаю по поводу правил
преобразования из строчных в заглавные и обратно, так как я не часто работаю в
vi . Если вы знаете что-либо об этом, то пожалуйста сообщите
мне
Для того чтобы распознавать 8ми битные символы joe требует
специальную опцию -asis . Вы можете указать ее в командной строке
или вставить в файл ~/.joerc для личного пользования или в
/usr/lib/joerc для настройки всей системы.
Если ваша программа не воспринимает -asis , то вам следует
обновить ее версию.
Однако, joe не распознает границы русских слов. Я предполагаю,
что тоже самое происходит и с перекодировкой из верхнего регистра в нижний и
обратно.
Для проверки правописания я использую программу GNU ispell . Она
имеет очень гибкие настройки и возможности для расширения. Ее можно использовать
при проверки правописания текстов написанных на языках отличных от английского
путем добавления новых словарей.
Константин Книжник создал очень хороший русский словарь для
ispell . Вы можете найти его на Домашней страничке К.Книжника. В
поставку словаря включен полезный скрипт, обеспечивающий инкрементальный режим
проверки правописания слов для emacs ;
В идеальном случае ваш ispell установлен правильно, и вам надо
только создать словарь, используя команды, обеспечиваемые файлом
Makefile из дистрибутива. Однако с довольно большой вероятностью у
вас возникнут проблемы с ispell , который откажется понимать 8ми
битные данные. Это может произойти по той причине, что в большинстве
дистрибутивов Linux ispell скомпилирован без поддержки 8ми битных
символов. В этом случае вам не удастся избежать перекомпиляции пакета
ispell .
К счастью пользователей RedHat я скомпилировал пакет ispell
вместе с русским и немецким словарями. Как обычно, вы можете утянуть его с RedHat FTP
site.
Если вы все сделали правильно, то можете инициировать проверку правописания
для русских текстов, путем вызова программы ispell с опцией
'-d russian'
Теперь, если вы используете Emacs , то вероятно вы не против
добавить пункт в меню для проверки с русским словарем. Я послал соответствующие
изменения к человеку, поддерживающему ispell.el , и он согласился
включить его в файл при следующем официальном релизе. Кроме того, вы можете
сделать это же путем добавления следующего кода в ваш ~/.emacs (или
в /usr/share/emacs/site-lisp/site-start.el для настройке всей
системы)
(setq ispell-dictionary-alist
(append ispell-dictionary-alist
'(("russian"
"[\341\342\367\347\344\345\263\366\372\351\352\353
\354\355\356\357\360\362\363\364\365\346\350\343
\376\373\375\370\371\377\374\340\361\301\302\327
\307\304\305\243\326\332\311\312\313\314\315\316
\317\320\322\323\324\325\306\310\303\336\333\335
\330\331\337\334\300\321]"
"[^\341\342\367\347\344\345\263\366\372\351\352\353
\354\355\356\357\360\362\363\364\365\346\350\343
\376\373\375\370\371\377\374\340\361\301\302\327
\307\304\305\243\326\332\311\312\313\314\315\316
\317\320\322\323\324\325\306\310\303\336\333\335
\330\331\337\334\300\321]"
"[']" t ("-C" "-d" "russian") "~latin1"))))
(define-key-after ispell-menu-map [ispell-select-russian]
'("Select Russian (KOI-8)" . (lambda ()
(interactive)
(ispell-change-dictionary "russian")))
'british)
К сожалению, это не работает в XEmacs . Я попытаюсь разрешить эту
проблему позже.
|