Tato stránka je návodem pro práci s GNU Emacsem 21 v českém a slovenském prostředí v kódování ISO-8859-2.
Informace pro starší verze GNU Emacsu naleznete na stránkách starších verzí emacs-cs-utils.
Jedná se o návod typu co kam napsat, který se jen mírně snaží zodpovědět otázky typu proč a který se nezabývá pokročilými technikami. K těmto účelům slouží příslušné manuály.
V tomto textu dále předpokládáme, že:
Pokud tomu tak není, podívejte se na domovskou stránku projektu GNU Emacs (http://www.gnu.org/software/emacs/emacs.html) a stáhněte si poslední verzi (emacs-21.1.tar.gz). Nezapomeňte si přečíst veškerou dokumentaci k instalaci (soubor INSTALL). Pro správnou práci v českém a slovenském jazyce (a platí to i pro ostatní jazyky) potřebujete i balík LEIM (Library of Emacs Input Methods) (leim-21.1.tar.gz) a soubor obsahující mezinárodní fonty (intlfonts-1.2.tar.gz), který naleznete na serveru projektu GNU (ftp://ftp.gnu.org/gnu/intlfonts/). Některé linuxové distribuce bohužel některé z těchto balíků neobsahují (nebo je sice obsahují, ale v podobě naprosto nepoužitelné), proto doporučujeme tyto distribuce opustit nebo si nainstalovat GNU Emacs 21 ze zdrojových textů.
nemáte superuživatelská práva (pokud je máte, nevadí, v tom případě asi ale budete chtít nainstalovat některé věci do globálních adresářů a ne pouze do svého domovského).
máte základní znalosti unixových operačních systémů a GNU Emacsu.
budete chtít implementaci české klávesnice na úrovni GNU Emacsu (pokud chcete používat implementaci na úrovni systému, nevadí, pouze nemusíte některé věci z tohoto návodu provádět).
máte po ruce nejnovější verzi emacs-cs-utils.
Pokud se o počeštění nechcete dozvědět příliš mnoho až příliš nedůležitých detailů, nainstalujte si RPM balíky emacs, emacs-leim, intlfonts a emacs-cs-utils a přidejte na konec svého souboru ~/.emacs následující řádky:
(load "emacs-cs-utils-init") (load "intlfonts-init")
a vše by mělo fungovat.
Pokud si chcete chování upravit podle svých představ, můžete v menu Tools / Emacs-cs-utils nastavit chování tohoto balíku podle svých potřeb. Měli byste si však přečíst i další části tohoto dokumentu.
Věřím, že i následující obrázek váženému čtenáři pomůže v rozhodování, který editor používat:
A pokud se ptáte, jak dopadne tento soubor při tisku, vězte, že dobře.
Následující postup poskytuje návod, kterým lze GNU Emacs v rámci jeho možností více či méně počeštit.
GNU Emacs 21 obsahuje podporu kódování ISO 8859-2, kódování CP 1250, kódování CP 852, pět českých klávesnic (czech, czech-qwerty, czech-prog-1, czech-prog-2, czech-prog-3), čtyři slovenské klávesnice (slovak, slovak-prog-1, slovak-prog-2, slovak-prog-3), český a slovenský tutoriál (viz soubory etc/TUTORIAL.cs a etc/TUTORIAL.sk), podporu kontroly pravopisu a podporu národního tisku. Novinkou je též přítomnost českého i slovenského překladu referenční karty, referenční karty Diredu a tzv. Survival Card.
Balíček emacs-cs-utils slouží k rozšíření možností GNU Emacsu a zjednodušení práce českým a slovenským uživatelům. Obsahuje také tento dokument a českou dokumentaci, která již je součástí GNU Emacsu. Novinkou této verze je i možnost nastavení jednotlivých částí pomocí standardního rozhraní Customize:
Na obrázku vidíte, že lze velmi jednoduše upravit chování emacs-cs-utils např. pomocí myši.
Kompletní instalace emacs-cs-utils je velmi jednoduchá a je popsána v souboru README ve zdrojových textech.
GNU Emacs verze 21 již nastavuje jazykové prostředí podle nastavených proměnných prostředí. Pokud tedy máte správně nastavenu proměnnou prostředí LANG např. na cs_CZ (resp. sk_SK), bude v GNU Emacsu 21 správně nastaveno jazykové prostředí na češtinu (resp. slovenštinu). Pokud tuto proměnnou nemáte nastavenu, konzultujte manuálové stránky vašeho příkazového interpretu, jak to napravit.
Pokud nemáte standardně nastavenou proměnnou prostředí LANG na doporučenou hodnotu cs_CZ, doporučujeme GNU Emacs startovat pomocí:
LANG=cs_CZ emacs
Standardní klávesnice, kterou budete moci použít po přepnutí vstupní metody pomocí kombinace kláves C-\, je czech (standardní česká klávesnice systému Microsoft Windows NT). Pokud budete chtít standardně používat jinou klávesnici, můžete si customizovat proměnnou default-input-method. Nastavení proveďte v menu Tools / Emacs-cs-utils / Customize Default Input Method. Objeví se standardní buffer umožňující změnit hodnotu zvolené proměnné.
Zde můžete nastavit libovolnou vstupní metodu ("klávesnici"), kterou chcete používat standardně. Pokud např. budete chtít používat českou klávesnici s přehozenými písmeny y a z, vyplňte ve formuláři hodnotu czech-qwerty. Autor stránek používá klávesnici czech-prog-2.
Pokud používáte ISO-8859-2 fonty na linuxové konzole nebo nějakém jiném terminálu schopném zobrazení ISO-8859-2 znaků a/nebo máte nastaveno ISO-8859-2 prostředí v X Window, můžete do svého souboru ~/.emacs přidat následující nastavení, které zajistí, že text, který bude do GNU Emacsu 21 vložen pomocí tzv. "selection" z jiných X klientů, bude ve správném kódování.
(if (display-selections-p) (set-selection-coding-system 'iso-8859-2))
Pokud budete do dokumentu chtít vložit např. ruský text, musíte před použitím prostředního tlačítka myši, které vloží do GNU Emacsu ruský text, předem nastavit, v jakém kódování bude vkládaný text. Např. pro ruštinu můžete použít C-x RET X koi8 RET.
Někteří X klienti (jako například Mozilla) nepoužívají pro selection kódování ISO 8859-2, ale tzv. compound-text, tedy kódování stejné jako používá GNU Emacs standardně. Před použitím selection z těchto klientů musíte použít C-x RET X compound-text RET.
Budete-li používat kontrolu pravopisu, doporučujeme do souboru ~/.emacs přidat i nastavení české (či slovenské) kontroly pravopisu:
(if (equal current-language-environment "Czech") (ispell-change-dictionary "czech" t)) (if (equal current-language-environment "Slovak") (ispell-change-dictionary "slovak" t))
Chcete-li se přepínat mezi klávesnicemi jinak než pomocí standardní kombinace C-\ (např. pomocí klávesy Pause) přidejte do svého souboru ~/.emacs:
(global-set-key [pause] 'toggle-input-method) (define-key isearch-mode-map [pause] 'isearch-toggle-input-method)
Toto nastavení zajistí, že klávesa Pause bude mít stejný význam jako funkce toggle-input-method a bude tedy sloužit k přepínání vstupních metod ("přepínání klávesnic").
Potřebujete-li v GNU Emacsu pracovat i se soubory, které jsou v kódování CP 1250, které je používáno v jiných operačních systémech, přidejte do svého souboru ~/.emacs:
(codepage-setup '1250)
Potřebujete-li pracovat i se soubory v kódování CP 852, doplňte si do svého souboru ~/.emacs:
(codepage-setup '852)
Poté budete mít k dispozici i toto kódování. Pokud tedy nyní budete chtít jednoduše editovat soubor, který je uložen v kódování CP 1250 na disku, můžete využít vlastnosti GNU Emacsu, která umožňuje definovat tzv. coding-system pro následující příkaz. Jak tedy řekneme GNU Emacsu, že další soubor je v kódování CP 1250? C-x RET c cp1250 RET C-x C-f soubor-1250.txt. Nyní můžeme psát standardním způsobem české znaky, které budou v GNU Emacsu korektně zobrazeny, ale soubor bude uložen na disk v kódování CP 1250.
Stejného mechanismu můžeme využít i ke konverzi z jednoho kódování do kódování druhého. Následující sekvence příkazů ukazuje, jak soubor pokus.il2 v kódování ISO 8859-2 zkonvertujeme do souboru pokus.1250 v kódování 1250: C-x C-f pokus.il2 RET C-x RET c cp1250 RET C-x C-w pokus.1250 RET. Není to nádhera?
Opačný převod snad již jen telegraficky: C-x RET c cp1250 RET C-x C-f pokus.1250 RET C-x RET c iso-8859-2 RET C-x C-w pokus.il2 RET. Pokud Vás tento zápis děsí, tak se nebojte. Stejného efektu je možné dosáhnout jenom klikáním v menu, ale popis tohoto klikání by byl ještě nezajímavější...
Chcete-li při editaci souborů, které obsahují DOSové konce řádků,
vidět na konci každého řádku znak ^M místo řetězce
"(DOS)" v mode-line, customizujte si proměnnou
inhibit-eol-conversion
na hodnotu t.
Nové emacs-cs-utils také umožňují upravit chování
tzv. fill-
funkcí. Standardní chování je v našem
prostředí poněkud nevhodné, protože se může stát, že např. po
volání funkce fill-paragraph
zůstanou jednopísmenná
slova na koncích řádků, což není zrovna v souladu s českými
typografickými normami. Nicméně je zde velmi jednoduché
řešení. Přidejte do svého souboru ~/.emacs:
;; This code is from Stefan Monnier (defun fill-french-nobreak-p () (or (looking-at "[ \t]*[])}?!;:-]") (save-excursion (skip-chars-backward " \t") (unless (bolp) (backward-char 1)) (or (looking-at "[([{]") ;; Don't cut right after a single-letter word. (and (memq (preceding-char) '(?\t ?\ )) (eq (char-syntax (following-char)) ?w))))))
A GNU Emacs bude zarovnávat odstavce podle našich typografických pravidel:
![]() |
![]() |
Na levém obrázku je možné vidět, jak by volání funkce
fill-paragraph
zarovnalo tzv. *scratch*
buffer. Všimněte si písmen v
, která stojí samostatně
na koncích řádků. Na pravém obrázku je možné vidět výsledek stejné
funkce v GNU Emacsu s emacs-cs-utils.
Nastavení českých nebo slovenských kalendářových zvyklostí dosáhnete umístěním souborů lisp/czech-calendar.el a lisp/slovak-calendar.elněkam do elispovských cest GNU Emacsu (můžete je zjistit například tak, že se přepnete se do bufferu *scratch*, napíšete load-path a stisknete C-j) a přidáním
(require 'czech-calendar)
nebo
(require 'slovak-calendar)
do ~/.emacs.
Chcete-li mít v kalendáři české (či slovenské) jmenné svátky, přidejte před výše uvedené volání ještě
(setq emacs-cs-utils-calendar-names t)
Potom může váš kalendář vypadat například nějak takto:
Z kalendáře v GNU Emacsu je samozřejmě možné i tisknout. Tisk je řešen pomocí TeXu a tudíž se předpokládá, že máte nainstalovánu některou z distribucí TeXu, např. teTeX. Balík emacs-cs-utils poněkud upravuje standardní chování tisku z kalendáře, protože jeho původnímu autorovi pravděpodobně čeština ani slovenština nic neříká a mnoho také napoví skutečnost, že kalendáře jsou stále ještě generovány v LaTeXu 2.09. Podpora českého a slovenského tisku proto vypadá tak, jak vypadá... Ale funguje to. Kalendář je samozřejmě možné si uložit a potom případně ještě dále upravit.
GNU Emacs 21 podporuje práci s vícejazyčnými dokumenty. Jeden z příkladů jsme si již ukázali v dokumentu HELLO. GNU Emacs zde používá fonty X serveru, na kterém běží, a proto tento X server musí tyto fonty nabízet. GNU Emacs využívá fonty z balíku intlfonts. Po korektní instalaci tohoto balíku by mělo stačit X serveru říci, kde má tyto fonty hledat. To lze udělat dvěma způsoby - buď X serveru přidat cestu k těmto fontům do proměnné FontPath:
FontPath "/usr/share/emacs/fonts/"
Poté je však nutno X server restartovat. Druhou možností je příkazem xset říci již běžícímu X serveru totéž:
xset +fp /usr/share/emacs/fonts/
Po těchto úpravách by se Vám měl dokument HELLO zobrazit tak, jako autorovi těchto stránek.
GNU Emacs 21 umožňuje postscriptový tisk na bázi bitmapových BDF fontů. Není to tisk příliš elegantní, ale umožňuje tisknout vícejazyčné texty bez speciálních opatření (viz např. dokument HELLO).
Nyní si ukážeme, jak používat český tisk pomocí BDF fontů. Předpokládáme, že máte korektně nainstalován balík intlfonts v adresáři /usr (tedy nikoli /usr/local jako ve standardní instalaci ze zdrojových textů). Nyní musíme GNU Emacsu říci, kde jsou BDF fonty uloženy, protože standardní umístění je v adresáři /usr/local. GNU Emacsu také musíme sdělit, že si přejeme používat pro tisk BDF fonty:
(setq bdf-directory-list '("/usr/share/emacs/fonts/bdf/")) (setq ps-multibyte-buffer 'bdf-font)
Nyní bude fungovat tisk dokumentu pomocí příkazu M-x ps-print-buffer. Pokud budete chtít dokument pouze uložit v PostScriptu, použijte prefix: C-u M-x ps-print-buffer. Chcete-li hlouběji proniknout do problematiky vícejazyčného tisku a tisku pomocí ps-print obecně, proveďte příkaz M-x ps-print-customize.
Co by to byl GNU Emacs za editor, pokud by neposkytoval nástroje
pro jazykové korektury. Uživatelé počítačů až příliš často příliš
rychle píší, a proto se jim může korektor pravopisu hodit. GNU
Emacs standardně podporuje možnost kontroly pravopisu ve více
jazycích, a proto se Vám někdy bude zdát až příliš obtížné
přepínání mezi jednotlivými jazyky. Autoři GNU Emacsu si toho jsou
vědomi, a proto v menu Tools / Spell-Checking je několik
položek umožňujících zvolit si správný slovník (stejného efektu je
možné dosáhnout voláním funkce
ispell-change-dictionary
). Ve stejném menu jsou
i položky pro kontrolu pravopisu v celém bufferu,
v regionu nebo pro kontrolu jednoho slova či komentářů.
Tohle všechno již ale bylo k dispozici i v GNU Emacsu 20.7. Co je tedy ve verzi 21 nového? Především je to tzv. flyspell, tedy "plovoucí" korektor pravopisu, který umožňuje kontrolu pravopisu v průběhu vlastního psaní. Jak to pak vypadá? Podívejte se na následující obrázek, který vzniká právě teď při psaní této věty:
Na obrázku vidíte, že flyspell autora tohoto textu upozornil na to, že se pravděpodobně překlepl, protože použil slovo "Tohlr", které je tedy červeně (jde samozřejmě změnit jako téměř vše v GNU Emacsu) podtrženo. Jinou barvou jsou podtržena "divná" slova, která se třeba v textu vyskytují podobně zapsaná několikrát. Podrobné informace o kontrole pravopisu v GNU Emacsu se můžete dozvědět v info dokumentaci (C-h i m Emacs RET m Spelling RET). V GNU Emacsu 21 je k dispozici i podpora pro slovenský jazyk. Pokud máte nainstalován slovenský slovník pro ispell, budete mít v menu položku i pro slovenskou kontrolu pravopisu.
GNU Emacs 21 obsahuje Gnus ve verzi 5.9. Tato verze již plně podporuje práci v českém i slovenském jazyce i MIME, a proto se zde o Gnus nebudeme (zatím) podrobněji zmiňovat. Přečtěte si info stránku Gnus. Další podrobnou dokumentaci Gnus a odkazy na poštovní konference uživatelů i vývojářů Gnus naleznete přímo na webových stránkách Gnus (http://www.gnus.org).
Práce s Gnus 5.9 potom může například vypadat i takto:
Na tomto obrázku si můžete všimnout několika zajímavostí. První
z nich je zajímavý titulek okna. Milovníci GNU Emacsu již
jistě tuší, že se jedná o jeden z oblíbených akronymů.
Další zvláštností je, že v citaci je posloupnost znaků
[+]. Jak již jistě tušíte, nové Gnus podporují
i možnost zakrývat delší citace než si uživatel přeje. České
znaky (ruština také) jsou snad již standardem a téměř vše
v Gnus funguje plně podle očekávání. Zvýrazněné URL, které po
odkliknutí vyvolá uživatelem definovanou akci je již také
samozřejmostí. Hlava tučňáka je tzv. X-Face, o které se snad
zmíníme někdy v budoucnu. Nové Gnus dokonce podporují
i tzv. smilies (česky snad smajlíky): ,
,
. Možná si na těchto obrázcích všimnete, že nejsou až
příliš hezké, a proto jsem se rozhodl pro GNU Emacs 21
přizpůsobit smajlíky používané s XEmacsem. Bohužel kvůli autorským
právům není možné tyto smajlíky zatím integrovat do GNU
Emacsu. Nyní tedy vypadá zkušební mail se smajlíky takto (ani mi
nebudete věřit, kolik času mi zabralo jeho vytvoření):
Ale o Gnus snad někdy příště.
GNU Emacs 21 (s nainstalovaným balíkem emacs-cs-utils) na Vás již při svém startu promluví česky díky Davidu Šauerovi, který přeložil úvodní informaci uloženou v proměnné initial-scratch-message. K dispozici je samozřejmě i slovenský překlad.
Pan Jan Buchal společně s Milanem Zamazalem přeložili referenční kartu k GNU Emacsu. Tato karta je v GNU Emacsu 21 k dispozici ve zdrojové podobě i v PostScriptu. Pan Miroslav Vaško přeložil referenční kartu k GNU Emacsu do slovenštiny. Tato karta je k dispozici ve zdrojové podobě i v PostScriptu.
Milan Zamazal přeložil úvodní tutoriál k GNU Emacsu. Nyní je již standardní součástí GNU Emacsu. Vyvoláte jej klávesovou kombinací C-h t nebo z menu Help / Emacs Tutorial. Pokud máte zájem, můžete si přečíst tutoriál i v japonštině... Tutoriál je pro zájemce k dispozici i přímo v tomto balíku. Slovenský tutoriál přeložil Miroslav Vaško a je také součástí tohoto balíčku.
Pavel Janík přeložil dokument GNU Emacs Survival Card (Karta pro přežití s GNU Emacsem). Dokument je pro zájemce k dispozici i přímo v tomto balíku a to i ve zdrojové podobě. Slovenský překlad GNU Emacs Survival Card vytvořil Miroslav Vaško. Dokument je pro zájemce k dispozici i přímo v tomto balíku a to i ve zdrojové podobě.
Pavel Janík přeložil referenční kartu pro Dired. Tato karta je k dispozici ve zdrojové podobě i v PostScriptu. Miroslav Vaško přeložil referenční kartu pro Dired do slovenského jazyka. Tato karta je k dispozici ve zdrojové podobě i v PostScriptu.
GNU Emacs 21 je možné používat i pod operačními systémy společnosti Microsoft. Nicméně toto pracovní prostředí je poněkud omezené. Balíček emacs-cs-utils je možné použít i zde, ale je nutné mít nainstalovaný ispell s českým či slovenským slovníkem. Protože systémy společnosti Microsoft nepoužívám, nemohu Vám poradit v případě problémů. Vzhledem k tomu, že jsem dokázal pořídit i následující obrázek, tak si myslím, že GNU Emacs dokážete zprovoznit i vy.
Problémy mohou nastat, pokud potřebujete zvolit vhodný font. K jeho přehledné volbě můžete použít funkci
(w32-select-font)
Napište tedy tento řádek do bufferu *scratch*
, přemístěte
kurzor za pravou závorku a stiskněte C-j. Objeví se
systémové menu, kde si vhodný font můžete vybrat:
Pokud stisknete na tlačítko OK
, bude vybraný font vypsán
v uvozovkách v bufferu, ze kterého jste funkci
w32-select-font
vyvolali. Např.:
"outline-Verdana-normal-r-normal-normal-13-97-96-96-p-*-iso8859-2"
To je řetězec, který musíte předat funkci
set-default-font
, aby font změnila. Pokud vám bude tedy
tento font vyhovovat, jednoduše si do svého souboru
~/.emacs umístěte následující řádku:
(set-default-font "outline-Verdana-normal-r-normal-normal-13-97-96-96-p-*-iso8859-2")
Při práci s GNU Emacsem v operačním systému Microsoft Windows mějte na paměti, že tento systém používá kódování 1250, ale Emacs nemůže sám poznat, v jakém kódování je daný soubor uložen. Musíte mu to oznámit před vlastním otevřením souboru (viz odstavec Obvyklá vylepšení).
Další důležité informace o provozování GNU Emacsu pod operačními systémy Microsoft Windows získáte na http://www.gnu.org/software/emacs/windows/.
Některé fonty (např. font 7x13 z XFree86 do verze 4.1) mají špatně umístěné podtržení (vypadají jako přeškrtnuté). Pokud se Vám to stane, doplňte si do svého souboru ~/.emacs:
(setq x-use-underline-position-properties nil)
Na linuxové konzole GNU Emacs nemůže sám nastavit ISO 8859-2 fonty. Musíte je nastavit ručně prostředky systému. Většina linuxových distribucí k tomu má své nástroje. Předtím, než začnete pracovat s GNU Emacsem v českém jazyce, ověřte si, zda je vaše konzola schopná zobrazovat znaky v českém jazyce. Můžete tak učinit například pomocí následujícího příkazu:
echo -e "\xec\xb9\xe8\xf8\xbe\xfd\xe1\xed\xe9"
Pokud tento příkaz zobrazí korektně české znaky ěščřžýáíé
,
je vaše konzola připravena k práci v češtině.
xlsfonts *-2
Další drobné problémy, se kterými se můžete při práci s GNU Emacsem setkat, jsou popsány v souboru etc/PROBLEMS.
Pokud budete chtít využívat českou kontrolu pravopisu, musíte si nainstalovat český slovník pro ispell, jehož autorem je Petr Kolář (ftp://ftp.vslib.cz/pub/unix/ispell/ nebo http://ern.kit.vslib.cz/ispell/).
Slovenský slovník naleznete na http://ispell.hq.sk/.
Linuxová distribuce Red Hat Linux nepoužívá balíček ispell, ale aspell, který je v případě české kontroly pravopisu výrazně pomalejší.
Doplnit informace o instalaci GNU Emacsu.
Některá nastavení se projeví až po novém startu GNU Emacsu (např. česká jména v kalendáři).
Pokud je jméno souboru v attachmentu kódováno v qp, není při zobrazení dekódováno. Je zobrazen tvar stejný jako v samotném e-mailu bez jakéhokoli dekódování. V Oort Gnus to funguje spolehlivě.
Na češtině a slovenštině pro GNU Emacs 21 a předchozí se přímo či nepřímo podíleli zejména následující: