V etom razdele ya opishu nastrojku razlichnyh tekstovyh redaktorov dlya raboty s kirillicheskimi tekstami. |tot razdel na ohvatyvaet tekstovye processory, nastrojka kotoryh opisyvaetsya pozzhe (smotri razdel Tekstovye processory)
Est' dve versii redaktora Emacs - GNU Emacs i XEmacs.
Oni obespechivayut bolee ili menee shodnyj nabor funkcij
i vozmozhnostej. Realizaciya nekotoryh detalej rashoditsya dovol'no sil'no.
Nastrojka kirillicy trebuet nekogo nizko-urovnevogo (v duhe Emacs Lispa)
"haka" i nemnogo otlichaetsya dlya etih dvuh realizacij.
VNIMANIE:Pomimo nastrojki, opisannoj zdes', sushchestvuet
al'ternativnyj put' obucheniya oboih versij emacs kirillice. Dlya
etogo ispol'zuetsya MULE (MULtilanguage Emacs support).
|tot put' neskol'ko slozhen i (na skol'ko ya znayu) redko ispol'zuetsya,
poetomu ya ego zdes' ne opisyvayu.
Minimal'naya podderzhka kirillicy v GNU emacs (vam ne nuzhno
etogo delat' pri nastrojke XEmacs) obespechivaetsya pri
vypolnenii sleduyushchih vyzovov, dobavlennyh v .emacs (pri uslovii,
chto podderzhka simvolov kirillicy ustanovlena dlya konsoli ili dlya
X Windows sootvetstvenno):
(standard-display-european t) (let ((m (current-input-mode))) (set-input-mode (car m) (nth 1 m) 1))
|to pozvolit vam videt' i vvodit' simvoly, nahodyashchiesya v verhnej chasti ASCII tablicy.
Odnako, etogo ne dostatochno. Emacs obrabatyvaet kirillicheskie simvoly kak special'nye, i kak sledstvie ne raspoznaet granicy russkih slov i ne delaet razlichiya mezhdu strochnymi i zaglavnymi bukvami. CHtoby obojti eto, vam sleduet neskol'ko modificirovat' tablicy sintaksisa i registra 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))))
Dlya etogo ya sozdal fajl rusup.el, kotoryj soderzhit eti komandy,
takzhe kak i paru drugih udobnye funkcii. Vy dolzhny vyzvat' ego v
vashem ~/.emacs.
Nu i v zaklyuchenii: paket
russian.el, sozdannyj Valeriem Alekseevym (valery@math.uga.edu),
pozvolyayushchij pol'zovatelyu pereklyuchat'sya mezhdu kirillicheskim i
standartnym modami vvoda i preobrazovyvat' tekstovyj bufer iz
odnoj russkoj kodirovki v druguyu (eto ochen' polezno, dlya chteniya tekstov
importirovannyh iz MS-DOS ili Windows).
Redaktor vi (po krajnej mere ego klon vim, prisutstvuyushchij
v bol'shinstve distributivov Linux) znaet o sushchestvovanii 8mi bitnyh
simvolov. |to daet vam vozmozhnost' vvodit' kirillicheskie bukvy. Redaktor
pravil'no raspoznaet granicy slov. YA nichego ne znayu po povodu pravil
preobrazovaniya iz strochnyh v zaglavnye i obratno, tak kak ya ne chasto
rabotayu v vi. Esli vy znaete chto-libo ob etom, to
pozhalujsta soobshchite mne
Dlya togo chtoby raspoznavat' 8mi bitnye simvoly joe trebuet
special'nuyu opciyu -asis. Vy mozhete ukazat' ee v komandnoj
stroke ili vstavit' v fajl ~/.joerc dlya lichnogo pol'zovaniya
ili v /usr/lib/joerc dlya nastrojki vsej sistemy.
Esli vasha programma ne vosprinimaet -asis, to vam sleduet
obnovit' ee versiyu.
Odnako, joe ne raspoznaet granicy russkih slov. YA predpolagayu,
chto tozhe samoe proishodit i s perekodirovkoj iz verhnego registra
v nizhnij i obratno.
Dlya proverki pravopisaniya ya ispol'zuyu programmu GNU ispell.
Ona imeet ochen' gibkie nastrojki i vozmozhnosti dlya rasshireniya.
Ee mozhno ispol'zovat' pri proverki pravopisaniya tekstov
napisannyh na yazykah otlichnyh ot anglijskogo putem dobavleniya
novyh slovarej.
Konstantin Knizhnik sozdal ochen' horoshij russkij slovar' dlya
ispell. Vy mozhete najti ego na
Domashnej stranichke K.Knizhnika.
V postavku slovarya vklyuchen poleznyj skript, obespechivayushchij
inkremental'nyj rezhim proverki pravopisaniya slov dlya emacs;
V ideal'nom sluchae vash ispell ustanovlen pravil'no, i vam
nado tol'ko sozdat' slovar', ispol'zuya komandy, obespechivaemye
fajlom Makefile iz distributiva. Odnako s dovol'no bol'shoj veroyatnost'yu
u vas vozniknut problemy s ispell, kotoryj otkazhetsya ponimat'
8mi bitnye dannye. |to mozhet proizojti po toj prichine, chto v bol'shinstve
distributivov Linux ispell skompilirovan bez podderzhki
8mi bitnyh simvolov. V etom sluchae vam ne udastsya izbezhat' perekompilyacii
paketa ispell.
K schast'yu pol'zovatelej RedHat ya skompiliroval paket ispell
vmeste s russkim i nemeckim slovaryami. Kak obychno, vy mozhete utyanut'
ego s
RedHat FTP site.
Esli vy vse sdelali pravil'no, to mozhete iniciirovat' proverku
pravopisaniya dlya russkih tekstov, putem vyzova programmy ispell
s opciej '-d russian'
Teper', esli vy ispol'zuete Emacs, to veroyatno vy ne protiv
dobavit' punkt v menyu dlya proverki s russkim slovarem. YA poslal
sootvetstvuyushchie izmeneniya k cheloveku, podderzhivayushchemu ispell.el, i
on soglasilsya vklyuchit' ego v fajl pri sleduyushchem oficial'nom relize.
Krome togo, vy mozhete sdelat' eto zhe putem dobavleniya sleduyushchego koda
v vash ~/.emacs (ili v /usr/share/emacs/site-lisp/site-start.el
dlya nastrojke vsej sistemy)
(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)
K sozhaleniyu, eto ne rabotaet v XEmacs. YA popytayus' razreshit' etu problemu
pozzhe.