(X)Emacsin PO-tila ja oikoluku
Pauli Virtanen (pauli.virtanen@saunalahti.fi) 4.8.2000
Päivitetty 25.8.2000
Tämä ohje kertoo, miten Emacsin po-tilan saa näyttämään
kirjoitusvirheet heti kun olet niitä tehnyt, ja ehdottamaan korjauksia
niihin. Kyseessä on siis samanlainen oikolukujärjestelmä kuin
Microsoftin Wordissa.
1 Tarvittavat osat
Jotta kirjoitusvirheiden näyttäminen ja oikaisuluku toimisi Emacsissa
po-tilan kanssa, tarvitset tietysti Emacsin, ispellin sekä siihen
suomen kielen tuen. Muut tarvittavat palaset ovat Emacsin ispell-tuki
ja flyspell.
Useimpien GNU/Linux-jakeluiden mukana tulevat ainakin ispell ja Emacs.
Ne kannattaakin asentaa jakelusi paketeista. Tällöin Emacsin
ispell-tuki sekä mahdollisesti myös flyspell tulevat useimmiten
Emacsin mukana. Jos käyttämässäsi jakelupaketissa ei kuitenkaan ole
jotakin näistä osista, niin voit hakea puuttuvat osat Internetistä
(ks. liite A).
2 Osien asentaminen
2.1 Ensitarkistus
Ensiksi kannattaa tarkistaa turhan työn välttämiseksi, etteivät osat
ole jo asennettuina. Siispä käynnistä Emacs, ja näppäile:
M-x ispell ENTER
Jos komento onnistuu, niin sekä ispell että Emacsin ispell-tuki on
asennettu. Flyspellin havaitsemiseksi näppäile Emacsissa:
M-x flyspell-mode ENTER
Suomenkielisen sanaston olemassaolon voit tarkistaa näppäilemällä joko
M-x ispell-change-dictionary ENTER suomi ENTER
tai
M-x ispell-change-dictionary ENTER finnish ENTER
Jos myös toinen näistä onnistuu, niin kaikki tarpeelliset osat ovat
asennettu, ja voit siirtyä kappaleeseen 3. Onnittelut.
2.2 ispell
Asenna ispell joko jakelusi paketista, tai imuroi se Internetistä (ks.
liite A), ja asenna sen mukana tulevien ohjeiden mukaisesti.
2.3 Suomenkielinen sanasto ispellille
Jos GNU/Linux-jakelusi mukana ei tullut kunnollista suomenkielistä
oikolukusanastoa, voit yrittää hakea parempaa Internetistä (ks. liite A).
Asenna sanasto sen mukana tulevien ohjeiden mukaisesti.
2.4 Emacsin ispell-tuki ja flyspell
Ensimmäiseksi kopioi tiedostot "flyspell.el" ja "ispell.el"
hakemistoon, jonka saat selville komennolla:
find / -name '*lisp' -type d
Hakemisto on yleensä joko "/usr/share/emacs/site-lisp" tai
"/usr/local/lib/emacs/site-lisp". Seuraavaksi lisää seuraavat rivit
"~/.emacs" -tiedostoosi.
(autoload 'ispell "ispell")
(autoload 'ispell-change-dictionary "ispell")
(autoload 'flyspell-mode "flyspell")
2.4.1 Emacsin ispell-tuki ja suomenkielinen sanasto
Jotta Emacsin ispell-tuki huomaisi suomenkielisen sanaston
olemassaolon, niin lisää seuraavat kuusi riviä "~/.emacs" -tiedostoosi.
(setq ispell-local-dictionary-alist
(append ispell-local-dictionary-alist
'(("suomi" ; Finnish mode
"[A-Za-z\345\344\366\351\340\374\350\346\370\347\305\304\326\311\300\334\310
\30
6\330\307]"
"[A-Za-z\345\344\366\351\340\374\350\346\370\347\305\304\326\311\300\334\310
\30
6\330\307]"
"[']" nil ("-C" "-m" "-d" "suomi") "list" iso-8859-1))))
3 Asetusten asettaminen
Seuraavaksi on vuorossa asetusten säätäminen kohdalleen. Vaikeaa se ei
ole: useimmissa tapauksissa joidenkin rivien lisääminen
"~/.emacs"-tiedostoosi riittää.
3.1 Flyspell
Jotta flyspell ei yrittäisi oikaisulukea po-tiedoston kommentteja ja
avainsanoja, lisää seuraavat rivit "~/.emacs"-tiedostoosi.
;;
;; Asetetaan se oikolukemaan vain suomennoksia
;;
(put 'po-mode 'flyspell-mode-predicate 'po-mode-flyspell-verify)
(defun po-mode-flyspell-verify ()
"This function is used for `flyspell-generic-check-word-p' in po-mode."
(save-excursion
(if (or (looking-at "msgstr")
(save-excursion
(progn
(skip-chars-backward "mgrst")
(looking-at "msgstr"))))
nil
(progn
(re-search-backward "\\(^msgstr\\|^msgid\\|^#\\)" nil t)
(if (looking-at "msgstr")
(if (progn
(re-search-backward
"\\(^msgstr\\|^msgid\\|^#\\)" nil t)
(not (looking-at "msgid \"\"")))
t)
nil)))))
Lisäksi jos haluat flyspellin käynnistyvän automaattisesti aina kun
avaat .po-tiedoston, niin lisää seuraavat rivit
"~/.emacs"-tiedostoosi.
;;
;; Asetetaan flyspell olemaan aina käynnissä po-tilassa
;;
(defun my-po-mode-hook ()
(ispell-change-dictionary "suomi") ;; HUOM! Tuo saattaa olla muukin
(flyspell-mode)) ;; kuin "suomi", esimerkiksi
;; "finnish".
(add-hook 'po-mode-hook 'my-po-mode-hook)
(add-hook 'po-subedit-mode-hook 'my-po-mode-hook)
(add-hook 'po-subedit-mode-hook 'flyspell-buffer)
3.2 Ispell
En ole keksinyt miten Emacsin ispellillä voisi oikaisulukea
po-tiedostoja hyvin.
Lähinnä korvaava ratkaisu on käyttää spellutilsin pospell-ohjelmaa
(ks. liite A). Tämän ohjelman käyttöä helpottaakseni olen kirjoittanut
seuraavan pienen skriptin.
#! /bin/sh
#
# Käyttö: pofispell <oikaisuluettava po-tiedosto>
#
exec pospell -n "$1" -p ispell - -d finnish -x %f
A. Tarvittavien ohjelmien Internet-osoitteet
|