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.