\chyph
\def\uvv#1{\char"FE\relax#1\char"FF{}}
\input cztexinfo
@c $Id: emacs-czech.texi,v 3.8 1997/11/08 01:19:56 pdm Exp $
@c %**start of header
@setfilename emacs-czech.info
@settitle Czech Support for Emacs
@set version 3.8
@set years 1995, 1996, 1997
@setchapternewpage off
@ignore
@ifinfo
@format
START-INFO-DIR-ENTRY
* Czech: (emacs-czech).                Czech Support for Emacs.
END-INFO-DIR-ENTRY
@end format
@end ifinfo
@end ignore
@c @syncodeindex fn vr
@c %**end of header

@ifinfo
This file documents Czech support for Emacs

Copyright @copyright{} @value{years} Milan Zamazal

Permission is granted to make and distribute verbatim
copies of this manual provided the copyright notice and
this permission notice are preserved on all copies.

@ignore
Permission is granted to process this file through TeX
and print the results, provided the printed document
carries a copying permission notice identical to this
one except for the removal of this paragraph (this
paragraph not being relevant to the printed manual).
@end ignore
@end ifinfo

@iftex
@afourpaper
@end iftex
@tex
@tolerance 10000
@end tex
@finalout

@titlepage
@title{Emacs Czech}
@subtitle{Podpora češtiny pro Emacs}
@subtitle{Verze @value{version}}
@author Milan Zamazal
@page
@vskip 0pt plus 1filll
Copyright @copyright{} @value{years} Milan Zamazal

Permission is granted to make and distribute verbatim
copies of this manual provided the copyright notice and
this permission notice are preserved on all copies.
@end titlepage

@c -----***** Konec úvodních hlaviček *****-----


@node Top, Úvodem, (dir), (dir)
@comment  node-name,  next,  previous,  up
@top Podpora češtiny pro Emacs

@ifinfo
This manual describes the package @samp{emacs-czech}, version @value{version}.
This package helps to work with Czech or Slovak in Emacs 19.

Most of the following text is in Czech language.  If you are interested in it
and you don't understand Czech, contact me, @xref{Author}.  You may also found
some information at the beginning of the source files, especially
@file{czech.el}.

Up to date information about @samp{emacs-czech} and its newest versions are
available at @w{@samp{http://www.fi.muni.cz/~pdm/emacs-czech.html}}.

@xref{Copying and warranty}, for information about copying and warranty.
@end ifinfo

@menu
* Úvodem::                      Proč @samp{emacs-czech}, co umí a co ne.
* Novinky::                     Co se změnilo a co je nového.
* Instalace::                   Návod k instalaci.
* Nejjednodušší konfigurace::   Jak to jednoduše použít a o více se nestarat.

* Konfigurace::                 Toto si prosím přečtěte přednostně.
* Klávesnice::                  Konfigurace klávesnice.
* Psaní českých textů::         Použití české klávesnice.
* Konvertory::                  Konverze znakových sad.
* Třídění::                     Pseudočeské třídění.
* Messages::                    České maily, newsy s Gnusy.
* Různé::                       Ostatní funkce.

* Nedostatky a chyby::          Co nefunguje, jak by mělo.
* FAQ::                         Často pokládané otázky.
* Index kláves::                Seznam všech klávesových příkazů.
* Index proměnných a funkcí::   Seznam všech proměnných a funkcí.

* Čeština a UN*X::              Stav podpory češtiny v UN*Xu.
* Pojďme psát česky!::          Přežije "cestina" rok 2000?

* Author::                      O autorovi a jeho spolupracovnících.
@end menu


@c ***** Úvod *****

@node Úvodem, Novinky, Top, Top
@comment  node-name,  next,  previous,  up
@chapter Úvodem

Tento balík nabízí základní funkce nutné pro pohodlnou práci s češtinou nebo
slovenštinou v interaktivním výpočetním prostředí Emacs.  Je určen pro použití
v grafickém rozhraní X Window System, i když většinu funkcí lze bez problémů
používat i na textových terminálech nebo v NT verzi Emacsu.  Vyžadován je Emacs
19 verze alespoň 19.30 nebo XEmacs 19 verze alespoň 19.14; pro zcela
bezproblémovou funkci Emacs 19 verze alespoň 19.31 v unixové verzi.

Tato verze balíku není určena pro Emacs 20.  Pro tuto verzi Emacsu je nutné mít
@samp{emacs-czech} verze alespoň 4.

V balíku je obsažena zejména podpora pro zobrazování českých znaků, jejich
syntaxi, českou klávesnici, konverze kódování, Gnus a jednoduché třídění.

Poznámka: @emph{XEmacs není Emacs v Xové podobě, nýbrž jiný druh GNU Emacsu};
Emacs spuštěný v Xech s menu, barvami a myší je stále Emacs.  Všude, kde se v
tomto dokumentu hovoří o Emacsu, míní se tím všechny tři podporované verze GNU
Emacsu (Emacs, Emacs NT, XEmacs), není-li výslovně řečeno jinak.

@menu
* Motivace::                    Proč jsem stvořil vlastní podporu.
* Co to umí a co ne::           Jakými vlastnostmi disponuje.
* Budoucnost::                  Bude se @file{czech.el} dále vyvíjet?
* Copying and warranty::        Kopírování a záruka.
@end menu


@node Motivace, Co to umí a co ne, Úvodem, Úvodem
@comment  node-name,  next,  previous,  up
@section Historie

Jsem zavilým příznivcem GNU Emacsu a potrpím si na psaní textů česky
(tj. nikoliv
@ifinfo
"cesky").
@end ifinfo
@iftex
@uv{cesky}).
@end iftex
Proto potřebuji solidní českou podporu, která mi
umožňuje soustředit se na to, co píšu a ne jen neustále narážet na drobná, leč
nepříjemná omezení vyplývající z mé nechuti psát bez háčků a čárek.

Vyzkoušel jsem minimálně tři různé podpory češtiny pro Emacs, ale coby poměrně
náročný uživatel jsem ani s jednou z nich nebyl zcela spokojen.  Protože, jak
známo, v Emacsu lze udělat všechno (případné pochybovače odkazuji na diskusní
skupinu @samp{alt.religion.emacs}), rozhodl jsem se napsat podporu vlastní,
která bude splňovat mých deset základních požadavků:

@enumerate
@item
Zobrazení 8-bitových znaků.
@item
Nastavení českých fontů.
@item
Správná vzájemná konverze malých a velkých (českých) písmen.
@item
Česká klávesnice s mrtvou klávesou.
@item
Při zapnuté české klávesnici možnost psaní čísel na numerickém bloku.
@item
Původní (předefinované) klávesy stále dostupné přes mrtvou klávesu.
@item
Správná funkce i v overwrite modu.
@item
Přinejmenším možnost zapnutí české klávesnice v minibufferu.
@item
Česká klávesnice lokální vzhledem k bufferům.
@item
Česká klávesnice v @samp{Isearch} modu.
@end enumerate

Podařilo se mi splnit všechny tyto požadavky a postupem času byl program
rozšířen o řadu dalších funkcí.  Dnes už není česká klávesnice jedinou hlavní
funkcí programu; balík by měl sloužit jako komplexní podpora pro zpracování
českých textů v Emacsu.


@node Co to umí a co ne, Budoucnost, Motivace, Úvodem
@comment  node-name,  next,  previous,  up
@section Co to umí, co ne a proč

Začněme tím, co program umí:

@itemize @bullet
@item
Splňuje všech deset v předchozím odstavci uvedených požadavků.
@item
Dává možnost volby různé míry globálního či lokálního přepínání klávesnic.
@item
Minibuffery a @samp{Isearch} dědí druh klávesnice z volajícího bufferu.
@item
Má předdefinované dvě české klávesnice, ale umožňuje i nadefinovat si vlastní
rozložení kláves.
@item
Možnost předefinování kláves @kbd{M-1} až @kbd{M-0}.
@item
Vložení libovolného ISO-8859-2 znaku.
@item
Korekce slov napsaných na špatně přepnuté klávesnici.
@item
Rozpoznání českého textu.
@item
Podporuje konverze znakových sad včetně možnosti využití @file{.enc} souborů z
balíku @samp{cstools/cstocs}.
@item
Automatické konverze textů psaných v jiném než ISO-8859-2 (resp. CP 1250 v
případě NT verze Emacsu) kódování.
@item
Jednoduché pseudočeské třídění.
@item
Automatická konverze mailů a news příspěvků do ASCII nebo MIME (ve spojení s
balíkem @samp{tm}).
@item
Individuální konverze mailů a newsů podle specifikací uložených v proměnných
nebo v @samp{BBDB}.
@item
Umí navíc ještě řadu dalších drobností.
@end itemize


A co program neumí:

@itemize @bullet
@item
Nejsou počeštěna menu v Emacsu ani žádná hlášení s výjimkou kalendáře a svátků.
I když by i toto bylo teoreticky možné udělat, jednalo by se o úkon velice
složitý a s takřka nulovým praktickým přínosem.
@item
Možná něco dalšího, co by se vám hodilo --- dejte mi vědět.
@end itemize


Několik poznámek k požadavkům pro bezproblémový provoz programu:

@itemize @bullet
@item
Pro zcela bezproblémový provoz je vyžadován Emacs 19 verze alespoň 19.31
(testování probíhalo na verzi 19.34) nebo XEmacs 19 verze alespoň 19.14
(testování probíhalo na verzi 19.15).
@item
Program není určen pro Emacs 20 a vyšší.  Pro tyto verze Emacsu je nutno mít
verzi 4 (nebo vyšší) programu.
@item
Použití textových terminálů je problematické.  Neposkytují jednotné rozhraní a
mnohdy ani možnost nastavení fontů.  Přesto program do určité míry funguje i na
takovém terminálu.  Jako příklad mohu uvést linuxovskou konzolu, kde program
pouze nerespektuje zvláštní postavení kláves na numerickém bloku a také je
samozřejmě nutné externě nastavit český font.  Ostatní funkce pracují normálně.
@item
V XEmacsu a NT verzi Emacsu nejsou dostupné některé funkce.
@end itemize


@node Budoucnost, Copying and warranty, Co to umí a co ne, Úvodem
@comment  node-name,  next,  previous,  up
@section Pohled do budoucna

Od verze 20 disponují obě verze GNU Emacsu širokou podporou internacionalizace.
Původní účel balíku @samp{emacs-czech} tak pomalu ztrácí svůj význam.  Snahou
autora bude prosadit případné další, v Emacsu zatím chybějící, rysy vyžadované
českým národním prostředím přímo do oficiální distribuce Emacsu.

Verze 3 balíku @samp{emacs-czech} již nebude dále rozvíjena a podporována
s~výjimkou oprav případných chyb.  Verze 4 bude podporovat již jen Emacs 20 a
vyšší.  V první fázi bude poskytovat chybějící funkce Emacsu 20, které se autor
bude snažit prosadit do oficiální distribuce Emacsu.  Tím by se postupně balík
@samp{emacs-czech} měl redukovat až do podoby, kdy v něm zbudou pouze speciální
funkce, které většina uživatelů nebude potřebovat.


@node Copying and warranty,  , Budoucnost, Úvodem
@comment  node-name,  next,  previous,  up
@ifinfo
@section Copying and warranty

Copyright @copyright{} @value{years} Milan Zamazal

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
@end ifinfo
@iftex
@section Kopírování a záruka

Copyright @copyright{} @value{years} Milan Zamazal

Tento program je free software; můžete jej distribuovat a/nebo modifikovat
podle podmínek GNU General Public License, verze 2, v podobě, v jaké byla
publikována Free Software Foundation.

Tento program je distribuován v naději, že bude užitečný, avšak @emph{bez
jakékoliv záruky}; dokonce i bez implicitní záruky dané obchodními zákony nebo
@emph{způsobilosti pro jakékoliv použití}.  Podmínky jsou popsány detailněji v
GNU General Public License.

Kopie GNU General Public License by měla být obsažena v programovém balíku;
pokud tomu tak není, lze ji získat od Free Software Foundation, Inc., 675 Mass
Ave, Cambridge, MA 02139, USA.
@end iftex


@c ***** Release notes *****

@node Novinky, Instalace, Úvodem, Top
@comment  node-name,  next,  previous,  up
@chapter Hlavní novinky a změny oproti předchozím verzím

@itemize @bullet
@item Změny ve verzi 3.8
@itemize @minus
@item
Podpora pro slovenštinu, @xref{Slovenština}.
@item
Nová proměnná @code{cz-tex-tilde-string}, @xref{Vlnkování}.
@end itemize

@item Změny ve verzi 3.7
@itemize @minus
@item
Změny v dokumentaci.
@end itemize

@item Změny ve verzi 3.6

@itemize @minus
@item
Vlnkování v @TeX{}ovských textech, @xref{Vlnkování}.
@item
Dokončena podpora spřežkového kódování, @xref{Interní konverze}.
@item
Nová proměnná: @code{cz-keyboard-disable}, @xref{Externí klávesnice}.
@item
Nová proměnná: @code{cz-keyboard-test-function},
@xref{Chameleónská klávesnice}.
@end itemize

@item Změny ve verzi 3.5

@itemize @minus
@item
Díky Davidu Šauerovi byl počeštěn kalendář a byly implementovány české svátky,
@xref{Kalendář}.
@item
Podpora pro český ispell.
@item
Nová proměnná: @code{cz-8bit-input}, @xref{Externí klávesnice}.
@item
Experimentální podpora pro spřežkové kódování, @xref{Interní konverze}.
@end itemize

@item Změny ve verzi 3.4

@itemize @minus
@item
Díky Jaroslavu Šnajdrovi má nyní XEmacs menu a @code{ascii-display-mode}.
@item
Zfunkčněny a zdokonaleny automatické konverze, @xref{Automatické konverze}.
@item
@emph{Nekompatibilita}: Klávesové kombinaci @kbd{M-Pause} nyní přísluší nová
funkce @code{cz-correct-switch}, @xref{Opravy}.
@item
@emph{Nekompatibilita:} Opravena řada pravopisných chyb v názvech konverzních
funkcí.
@item
Updatovány informace o češtině a o jiných programech.
@end itemize

@item Změny ve verzi 3.3

@itemize @minus
@item
Nový mód: @code{cz-ascii-display-mode}, @xref{ASCII terminály}.
@end itemize

@item Změny ve verzi 3.2

@itemize @minus
@item
Nová funkce: @code{cz-message-show-method},
@xref{Obsluha v message-mode}.
@item
Nová proměnná: @code{cz-evils}, @xref{Obcházení problémů}.
@end itemize

@item Změny ve verzi 3.1

@itemize @minus
@item
Pouze opravy chyb.
@end itemize

@item Změny ve verzi 3.0

@itemize @minus
@item
Nová implementace klávesnice (@emph{nekompatibilní} specifikace klávesnice),
@xref{Vlastní rozložení kláves}.
@item
Možnost vložení libovolného @w{ISO 8859-2} znaku, @xref{Exotické znaky}.
@item
Nové a vylepšené funkce pro korekci textu napsaného na opačné klávesnici,
@xref{Opravy}.
@item
Možnost přepínání klávesnice v @samp{Isearch} módu, @xref{Přepínání klávesnic}.
@item
Automatická konverze textů do/z kódování pracovního prostředí,
@xref{Automatické konverze}.
@item
Více interních konverzních funkcí a jejich lepší kvalita, @xref{Konvertory}.
@item
Automatická konverze mailů a newsů podle příjemce, @xref{Messages}.
@item
Možnost využití balíků @samp{tm} a @samp{BBDB}, @xref{Messages}.
@item
Jednoduché pseudočeské třídění, @xref{Třídění}.
@item
Daleko více příkazů dostupných klávesovými zkratkami (@emph{nekompatibilními}),
@xref{Index kláves}.
@item
Menu.
@item
Podpora NT verze Emacsu.
@item
@TeX{}ovatelná dokumentace zcela v češtině.
@item
@emph{Nekompatibilita}: Název souboru @file{czech-conv.el} změněn na
@file{czech-convert.el}; nové zdrojové soubory.
@end itemize

@item Změny ve verzi 2.1

@itemize @minus
@item
Funguje i v XEmacsu.
@item
@TeX{}ovatelná dokumentace.
@end itemize

@item Změny ve verzi 2.0

@itemize @minus
@item
@emph{Nekompatibilita}: Implicitně se nastavuje @emph{nestandardní}
@ifinfo
("programátorská")
@end ifinfo
@iftex
(@uv{programátorská})
@end iftex
česká klávesnice,
@xref{Volba klávesnice}.
@item
@emph{Nekompatibilita}: Proměnná @w{@code{cz-disable-annoying-messages}} je
nahrazena proměnnou @w{@code{cz-verbose-level}}, @xref{Různé}.
@item
@emph{Nekompatibilita}: Název info dokumentace změněn z @file{czech.info} na
@file{emacs-czech.info}.
@item
Výrazně rozšířeny možnosti konverze kódování, @xref{Konvertory}.
@item
Podpora pro konverze externím programem, @xref{Externí konverze}.
@item
Možnost předefinovat kombinace kláves @kbd{M-0} až @kbd{M-9},
@xref{Numerické klávesy}.
@item
Nová funkce @samp{cz-is-cz-text} detekující český text,
@xref{Autodetekce českých textů}.
@item
Řada změn v dokumentaci.
@end itemize

@item Změny ve verzi 1.2

@itemize @minus
@item
Funguje v Emacsu 19.30.
@item
Lze konfigurovat proměnné příkazem @samp{set-variable} a @samp{edit-options}.
@end itemize

@item Změny ve verzi 1.1

@itemize @minus
@item
Nová funkce @w{@code{cz-correct-word}}, @xref{Opravy}.
@item
Nová proměnná @w{@code{cz-redefine-keypad}}, @xref{Numerické klávesy}.
@end itemize

@end itemize


@c ***** Instalace *****

@node Instalace, Nejjednodušší konfigurace, Novinky, Top
@comment  node-name,  next,  previous,  up
@chapter Instalace

Doporučuji následující postup instalace:

@itemize @bullet
@item
Zeditujte dle potřeby úvodní proměnné v @file{Makefile}.
@item
Upgradujete-li ze starší verze, smažte všechny soubory této verze (důležité!).
@item
Proveďte @kbd{make install} (warningy byte-kompilátoru Emacsu ignorujte).
@item
Updatujte soubor @file{dir} v patřičném @file{info} adresáři.
@item
Do svého @file{~/.emacs} přidejte řádky
@example
(setq load-path (cons "/cesta/k/adresáři/s/emacs/czech" load-path))
(load "czech")
@end example
Instalujete-li @samp{emacs-czech} globálně, umístěte první řádek (nastavení
cesty) do souboru @file{site-start.el}.  Neumisťujte zde druhý řádek (zavedení
češtiny)!  Chcete-li, aby se čeština zaváděla všem uživatelům, umístěte do
souboru @file{default.el} (pokud v adresářích Emacsu není, vytvořte jej v
adresáři, kde se nachází @file{site-start.el}) řádek
@example
(require 'czech)
@end example
@item
Máte-li zájem, přečtěte si celou dokumentaci, balík má řadu zajímavých funkcí a
široké možnosti konfigurace.
@end itemize

V případě, že používáte XEmacs nebo možná i Emacs 19.30 z linuxovských
distribucí Slackware nebo RedHat, nainstalujte i přiložený soubor
@file{iso02-syn.el}, nejlépe do @emph{standardního} adresáře lispovských
souborů (X)Emacsu.

Pokud z nějakého důvodu @samp{make} selže, musíte provést patřičné kroky
ručně podle šablony dané následujícím seznamem:

@enumerate
@item
Proveďte byte-kompilaci všech souborů @file{czech*.el}.
@item
Zkopírujte vzniklé @file{*.elc} soubory do nějakého @file{site-lisp} adresáře.
@item
Soubory @file{emacs-czech.info*} zkopírujte do nějakého adresáře s info soubory
(obvykle @file{/usr/local/info/}).
@item
Chcete-li, můžete tyto soubory zagzipovat (i pak budou pro Emacs čitelné).
@end enumerate


@c ***** Stručný návod ******

@node Nejjednodušší konfigurace, Konfigurace, Instalace, Top
@comment  node-name,  next,  previous,  up
@chapter Velmi stručný návod k použití

Zde jsou informace pro ty, kteří neradi čtou dlouhé návody, spokojí se s
implicitními nastaveními a nezajímají je žádné další funkce.  Není zde uvedeno
nic, co by se nevyskytovalo v jiných částech tohoto manuálu.

Vše se provede pouhým přidáním několika řádků do vašeho @file{~/.emacs}.
Nejzákladnější možnosti jsou tyto:

@itemize @bullet
@item
Pouhé zavedení a nic víc:

@example
(load "czech")
@end example

Tímto se definuje minor mode @samp{cz-keyboard-mode} pro přepínání české
klávesnice. Klávesnici lze přepínat pomocí klávesy @kbd{Pause} (funguje
většinou v prostředí X Window a na linuxovské konzole).
@item
Použití standardní české klávesnice:

@example
(setq cz-keyboard-nonstandard nil)
(load "czech")
@end example

Definuje standardní českou klávesnici (na rozdíl od předchozích případů, kdy se
definuje klávesnice
@ifinfo
"programátorská").
@end ifinfo
@iftex
@uv{programátorská}).
@end iftex
@end itemize

Toť vše, co je potřeba pro aktivaci všech funkcí, z nichž ty nejzákladnější
jsou dostupné z menu @samp{Czech} nebo z klávesnice pod prefixem @kbd{C-x C-z},
@xref{Index kláves}.

Doporučení: Udělejte si někdy čas a přečtěte si tento manuál.  Vyplatí se to.


@c ***** Konfigurace *****

@node Konfigurace, Klávesnice, Nejjednodušší konfigurace, Top
@comment  node-name,  next,  previous,  up
@chapter Několik obecných poznámek úvodem

Nejdůležitější funkce jsou dostupné z menu nebo klávesovými zkratkami s
prefixem @kbd{C-x z} či @kbd{C-c z} v případě lokálních funkcí.  (@kbd{C-x} a
@kbd{C-c} je dáno konvencemi Emacsu, @kbd{z} je pak druhé písmeno slova
@ifinfo
"Czech",
@end ifinfo
@iftex
@uv{Czech},
@end iftex
které je navíc na klávesnici velmi blízko oběma prefixovým klávesám.)

Konfigurace nastavení vám vyhovujícího chování se provádí prostřednictvím
nastavení hodnot konfiguračních proměnných nebo volání funkcí, nejlépe v
souboru @file{~/.emacs}.

@emph{Důležité upozornění:}

@enumerate
@item
Veškeré @emph{funkce} lze volat až po provedení @kbd{M-x load RET czech RET}
nebo @w{@code{(load "czech")}}, protože dříve o nich Emacs nemůže vědět.
@item
Nastavení některých @emph{proměnných} má okamžitý účinek na chování
@samp{emacs-czech} (je-li již zavedena).  Takových proměnných je většina a lze
je nastavovat kdykoliv.
@item
Nastavení některých @emph{proměnných} se projeví teprve @emph{až po načtení
nebo znovunačtení} @samp{emacs-czech} nebo po zavolání nějaké funkce.  To se
týká proměnných, na jejichž základě se budují různé pomocné struktury, na něž
tyto proměnné nemají okamžitý vliv.  Přes snahu množství takových proměnných
minimalizavot přeci jen ještě některé existují.  Jejich kompletní seznam je
uveden níže.  Pokud změníte hodnotu některé z těchto proměnných, proveďte
@emph{poté} (znovu)zavedení pomocí některého z příkazů uvedených v bodě 1.
Znovuzavádění @samp{emacs-czech} nemá žádný negativní vliv na ostatní funkce
ani na spotřebu paměti či něco podobného.
@end enumerate

Seznam proměnných, po jejichž změna vstoupí v platnost až po zavolání nějaké k
tomu určené funkce nebo (znovu)zavedení @samp{emacs-czech}:

@itemize @bullet
@item cz-8bit-input
@item cz-calendar-all-holidays
@item cz-calendar-inhibit
@item cz-convert-unknown-char
@item cz-dead-key-1
@item cz-dead-key-2
@item cz-enable-keybindings
@item cz-enable-menu
@item cz-font-default
@item cz-font-faces-list
@item cz-font-info-list
@item cz-global-mode
@item cz-keyboard-default-on
@item cz-keyboard-disable
@item cz-keyboard-nonstandard
@item cz-keys
@item cz-keys-dead-1
@item cz-keys-dead-2
@item cz-minibuffer-nonczech
@item cz-redefine-alt-digits
@item cz-redefine-keypad
@item cz-sk
@end itemize


@c ***** Klávesnice *****
@node Klávesnice, Psaní českých textů, Konfigurace, Top
@comment  node-name,  next,  previous,  up
@chapter Klávesnice

@findex cz-keyboard-mode
Základní funkcí @samp{emacs-czech} je redefinice klávesnice pro možnost psaní
českých textů.  Pro použití české klávesnice je definován minor mode
@w{@code{cz-keyboard-mode}}.  Tento mód nemá za úkol nic jiného, než přepínat
mezi dvěmi klávesnicemi.

K dispozici jsou dvě předdefinované klávesnice --- standardní a
@ifinfo
"moje"
@end ifinfo
@iftex
@uv{moje}
@end iftex
(ta je myslím velmi podobná
@ifinfo
"programátorské"
@end ifinfo
@iftex
@uv{programátorské}
@end iftex
klávesnici legendárního T602),
nazývejme ji dále @dfn{programátorská}.

Standardní klávesnice je česká klávesnice se 101 klávesami.  Programátorská
klávesnice se od standardní americké liší obvyklým přenastavením kláves @kbd{2}
až @kbd{0} na české znaky, přičemž čísla zůstávají dostupná přes numerický blok
nebo mrtvou klávesu.  Na místě hranatých závorek jsou klávesy @kbd{ú} a
@kbd{ů}, klávesa @kbd{=/+} slouží jako mrtvá klávesa.  Původní znaky jsou opět
dostupné přes mrtvou klávesu.  Tento model se mi dobře osvědčil zejména při
psaní La@TeX{}ovských textů (fundamentalisticky ladění plainisté nechť mi
prominou@dots{}).

Předpokládám, že některým uživatelům nevyhovuje ani jedna z těchto klávesnic, a
proto je zde i možnost nadefinovat si zcela vlastní rozložení kláves.

@menu
* Globální či lokální::         V kterých bufferech se bude psát česky.
* Chameleónská klávesnice::     Kdy se v bufferu píše česky.
* Volba klávesnice::            Standardní nebo programátorská?
* Numerické klávesy::           Jak fungují klávesy numerického bloku.
* Číslice mimo numerický blok:: Číslice na @kbd{M-1} až @kbd{M-0}.
* Symboly mrtvých kláves::      Jak vypadá háček a čárka? 
* Vlastní rozložení kláves::    Chci jinou klávesnici.
* Externí klávesnice::          Užívání a neužívání české klávesnice systému.
@end menu

@node Globální či lokální, Chameleónská klávesnice, Klávesnice, Klávesnice
@comment  node-name,  next,  previous,  up
@section Jak nastavit lokální nebo globální zapínání klávesnice

@file{czech.el} dává možnost poměrně široké volby možností, kde českou
klávesnici používat a kde nikoliv.  Pro tuto volbu slouží následující proměnné:

@table @code
@vindex cz-global-mode
@item cz-global-mode
Je-li hodnota této proměnné true, má přepnutí klávesnic vliv na všechny buffery
v Emacsu.  V opačném případě se přepnutí provede jen v rámci aktuálního
bufferu.  Obecná zkušenost hovoří ve prospěch druhé varianty a proto je
implicitně nastaveno lokální přepínání.  Chcete-li klávesnici přepínat
globálně, proveďte

@example
(setq cz-global-mode t)
@end example

@vindex cz-keyboard-default-on
@item cz-keyboard-default-on
Hodnota této proměnné určuje, má-li se implicitně po startu a při vytváření
nových bufferů nastavovat česká klávesnice.  Hodnota @code{nil} znamená ne,
jakákoliv jiná hodnota značí ano.  Implicitní je nil, tj. česká klávesnice se
nenastavuje.  Toto chování lze měnit i v závislosti na typu editovaného
souboru, @xref{Hooky}.
@vindex cz-minibuffer-nonczech
@item cz-minibuffer-nonczech
Při vstupu do minibufferu se nastavuje klávesnice podle bufferu, ze kterého
jste do minibufferu vstoupili.  Pokud často zadáváte @kbd{M-x} příkazy nebo
voláte elispovské funkce během editace českých textů, mohou vás předefinované
klávesy v minibufferu obtěžovat.  Nastavením proměnné
@w{@code{cz-minibuffer-nonczech}} na hodnotu true toto chování potlačíte.
Pozor: Je-li na hodnotu true nastavena některá z proměnných
@w{@code{cz-global-mode}} nebo @w{@code{cz-keyboard-default-on}}, nehraje
hodnota proměnné @w{@code{cz-minibuffer-nonczech}} žádnou roli.  Hodnota této
proměnné se také netýká příkazů rodiny @samp{Isearch}, tam se vždy klávesnice
dědí z volajícího bufferu.
@end table


@node Chameleónská klávesnice, Volba klávesnice, Globální či lokální, Klávesnice
@comment  node-name,  next,  previous,  up
@section Chameleónská klávesnice

@vindex cz-keyboard-test-function
Pokud máte náročnější požadavky na volbu klávesnice a chcete často střídat
klávesnice v jednom bufferu, můžete do proměnné
@code{cz-keyboard-test-function} přiřadit jméno nějaké funkce.  Jestliže je
hodnotou této proměnné něco jiného než @code{nil}, je při každém stisku
dvojznačné klávesy (tj. klávesy s různým významem na české a americké
klávesnici) volána odpovídající funkce.  Klávesa se pak chová jako na české
klávesnici, právě když volaná funkce vrátí jinou hodnotu než @code{nil}.

Upozornění: Sofistikované testy mohou vést k citelnému zpomalení editace.
Proměnná @code{cz-keyboard-test-function} je určena pouze pro speciální účely a
obvykle je lépe využít například různých hooků, @xref{Hooky}.


@node Volba klávesnice, Numerické klávesy, Chameleónská klávesnice, Klávesnice
@comment  node-name,  next,  previous,  up
@section Volba klávesnice

@vindex cz-keyboard-nonstandard
K tomuto účelu slouží proměnná @w{@code{cz-keyboard-nonstandard}}.  Je-li její
hodnotou @code{nil}, je použita standardní česká klávesnice o 101 klávesách.
Je-li její hodnotou přesně @code{t}, je použita programátorská klávesnice.
Chcete-li si nadefinovat vlastní rozložení kláves,
@xref{Vlastní rozložení kláves}, musíte nastavit hodnotu této proměnné na
cokoliv jiného.
Například:

@example
(setq cz-keyboard-nonstandard 1)
@end example

Implicitní hodnota je @code{t}, tj. je nastavena programátorská česká
klávesnice.

@node Numerické klávesy, Číslice mimo numerický blok, Volba klávesnice, Klávesnice
@comment  node-name,  next,  previous,  up
@section Klávesy na numerickém bloku

@vindex cz-redefine-keypad
Program implicitně předefinuje klávesy numerického bloku.  Pozitivním důsledkem
tohoto kroku je možnost psát bez problémů i při použití české klávesnice čísla.
Pokud z nějakého důvodu nechcete toto předefinování provést, nastavte hodnotu
proměnné @w{@code{cz-redefine-keypad}} na @code{nil}.


@node Číslice mimo numerický blok, Symboly mrtvých kláves, Numerické klávesy, Klávesnice
@comment  node-name,  next,  previous,  up
@section Psaní čísel přes @kbd{Alt} na české klávesnici

@vindex cz-redefine-alt-digits
Pokud chcete používat kombinace kláves @kbd{M-1} až @kbd{M-0} pro psaní čísel
na české klávesnici, nastavte hodnotu proměnné
@w{@code{cz-redefine-alt-digits}} na @code{t}.  Implicitní hodnota je
@code{nil}, tj. předefinování se neprovádí.  Toto opatření se týká jen české
klávesnice, nečeská klávesnice zůstává beze změny.

Tímto nastavením se ochudíte o možnost předávat numerický argument přes dané
kombinace kláves.  Proto je lépe toto předefinování neprovádět a psát raději
čísla na numerickém bloku.

Jiná situace nastává, používáte-li Emacs na linuxovské konzole.  Pak totiž
psaní čísel na numerickém bloku při zapnuté české klávesnici nefunguje.  Pokud
tedy chcete psát čísla mimo numerický blok například právě na textových
terminálech, přidejte si do svého @file{~/.emacs} následující řádek:

@example
(if (not window-system) (setq cz-redefine-alt-digits t))
@end example

@node Symboly mrtvých kláves, Vlastní rozložení kláves, Číslice mimo numerický blok, Klávesnice
@comment  node-name,  next,  previous,  up
@section Symboly mrtvých kláves

Při stisku mrtvé klávesy se většinou na obrazovce objeví příslušný akcent,
tj. nejspíše háček nebo čárka.  Ne všechny fonty mají tyto akcenty na stejném
místě znakové sady.  Následující proměnná umožňuje nastavit správné akcenty.

@table @code
@vindex cz-dead-symbols
@item cz-dead-symbols
Asociativní seznam formátu
@example
(@var{MRTVÁ-KLÁVESA} . @var{ZNAK}) ... (@var{MRTVÁ-KLÁVESA} . @var{ZNAK})
@end example
určující znaky zobrazované při stisku příslušných mrtvých kláves.  Mrtvé
klávesy, pro něž není v této proměnné žádná položka, při svém stisku
nezobrazují žádné znaky.
@end table

Implicitní hodnota v prostředí UN*Xu je @w{@code{((?= . ?\264) (?+ . ?\267))}}.
Nastavením

@example
(setq cz-dead-symbols '((?= . ?=) (?+ . ?+)))
@end example

lze zajistit, že na obrazovce se budou objevovat přímo znaky mrtvých kláves.
Nechcete-li, aby se vám při stisku mrtvé klávesy zobrazoval akcent, proveďte

@example
(setq cz-dead-symbols nil)
@end example


@node Vlastní rozložení kláves, Externí klávesnice, Symboly mrtvých kláves, Klávesnice
@comment  node-name,  next,  previous,  up
@section Definice jiného rozložení kláves

Česká klávesnice je v @file{czech.el} definována specifikováním tří věcí:

@enumerate
@item
Které klávesy fungují jako mrtvé.
@item
Co se má stát po jejich stisku.
@item
Jaké je obecné rozložení kláves.
@end enumerate

Jednotlivé body jsou podrobně rozebrány v následujících odstavcích.  Musím
jenom upozornit, že se nepředpokládá potřeba předefinování kláves na numerickém
bloku.  Tyto klávesy vyžadují trošku zvláštní zacházení.  Ponechávají si svůj
původní význam za všech okolností (díky tomu jsou například vždy přístupné
číslice) a nelze je tedy předefinovat.

Je možné si definovat vlastní kompletní klávesnici nebo pouze částečně
modifikovat klávesnici programátorskou.

@menu
* Definice klávesnice::         Zcela vlastní klávesnice.
* Modifikace klávesnice::       Modifikace programátorské klávesnice.
* Nastavení nové klávesnice::   Aktivace změněné klávesnice.
@end menu


@node Definice klávesnice, Modifikace klávesnice, Vlastní rozložení kláves, Vlastní rozložení kláves
@comment  node-name,  next,  previous,  up
@subsection Definice vlastní klávesnice

Vyhovuje-li vám klávesnice výrazně odlišná od předdefinované klávesnice
programátorské, můžete si definovat kompletně celou vlastní českou klávesnici.
Klávesnice je dána seznamem následujícího formátu:

@example
( ( @var{redefinice-kláves} )
  ( @var{mrtvá-klávesa} @var{redefinice-kláves} )
  @dots{}
  ( @var{mrtvá-klávesa} @var{redefinice-kláves} ) )
@end example

První položka seznamu určuje jednoduché předefinování kláves a je povinná.
Další položky pak postupně definují všechny mrtvé klávesy a redefinice kláves
po jejich stisku.  Mrtvých kláves může být definován libovolný nezáporný počet.

@var{redefinice-kláves} je posloupnost elementů asociativního seznamu tvaru

@example
( @var{klávesa} . @var{redefinice} ) @dots{} ( @var{klávesa} . @var{redefinice} )
@end example

@var{klávesa} a @var{mrtvá-klávesa} musí být vždy @emph{znak}.
@var{redefinice} může být cokoliv, co jako redefinici akceptuje funkce
@code{define-key}, tedy zejména řetězec nebo vektor.

Příklad definice standardní české klávesnice v prostředí UN*Xu:

@example
(((?1 . "+") (?2 . [236]) (?3 . [154]) (?4 . [232]) (?5 . [248])
  (?6 . [158]) (?7 . [253]) (?8 . [225]) (?9 . [237]) (?0 . [233])
  (?` . "\"") (?~ . ";") (?! . "1") (?@ . "2") (?# . "3")
  (?$ . "4") (?% . "5") (?^ . "6") (?& . "7") (?* . "8")
  (?\( . "9") (?\) . "0") (?- . "=") (?_ . "%") (?\[ . [250])
  (?@{ . "/") (?\] . ")") (?@} . "(") (?\; . [249]) (?: . "\"")
  (?' . [167]) (?\" . "!") (?< . "?") (?> . ":") (?/ . "-")
  (?\? . "_") (?y . "z") (?Y . "Z") (?z . "y") (?Z . "Y"))
 (?+ (?c . [232]) (?d . [239]) (?e . [236]) (?n . [242]) (?r . [248])
     (?s . [154]) (?t . [157]) (?u . [249]) (?y . [190]) (?C . [200])
     (?D . [207]) (?E . [204]) (?N . [210]) (?R . [216]) (?S . [138])
     (?T . [141]) (?U . [217]) (?Y . [174])
     (?z . "z") (?Z . "Z"))
 (?= (?a . [225]) (?e . [233]) (?i . [237]) (?o . [243]) (?u . [250])
     (?z . [253]) (?A . [193]) (?E . [201]) (?I . [205]) (?O . [211])
     (?U . [218]) (?Z . [221])
     (?y . "y") (?Y . "Y")))
@end example

Takto definovaná klávesnice se aktivuje pomocí funkce @code{cz-set-keyboard},
@xref{Nastavení nové klávesnice}.  Tato funkce mimo jiné automaticky zajistí,
že stisk kterékoliv mrtvé klávesy a následný stisk předefinované klávesy
vyprodukuje znak původně náležející předefinované klávese.

Máte-li pocit, že vaše klávesnice by mohla být zajímavá i pro jiné uživatele,
můžete mi ji poslat, @xref{Author}.  Možná ji pak zařadím do příští verze
@samp{emacs-czech}.


@node Modifikace klávesnice, Nastavení nové klávesnice, Definice klávesnice, Vlastní rozložení kláves
@comment  node-name,  next,  previous,  up
@subsection Modifikace programátorské klávesnice

Pokud vám celkem vyhovuje předdefinovaná programátorská klávesnice, ale chtěli
byste v ní něco málo změnit, můžete tak relativně snadno učinit nastavením
některé z následujících proměnných.  Pokud něčemu z níže uvedeného nerozumíte,
nepropadejte panice.  Jistě postačí osvědčená metoda modifikace na konci
uvedeného příkladu i bez znalosti věci.

@table @code
@vindex cz-dead-key-1
@item cz-dead-key-1
Specifikuje mrtvou klávesu implicitně použitou vesměs pro písmena s háčky.
Hodnotou této proměnné musí být znak.
@vindex cz-dead-key-2
@item cz-dead-key-2
Shodná s @code{cz-dead-key-1}, ale specifikuje mrtvou klávesu implicitně
použitou vesměs pro písmena s čárkami.
@vindex cz-keys
@item cz-keys
Určuje základní význam kláves.  Je to asociativní seznam tvaru
@example
( ( @var{klávesa} . @var{definice} )
    @dots{}
  ( @var{klávesa} . @var{definice} ) )
@end example
@var{klávesa} musí být opět znak (stejně jako u definice mrtvých kláves) a
@var{definice} může být cokoliv, čemu rozumí funkce @code{define-key}, tedy
nejlépe vektor (jeden znak v hranatých závorkách) nebo řetězec (v uvozovkách).
@item cz-keys-dead-1
Určuje význam kláves po stisku první mrtvé klávesy (@code{cz-dead-key-1}).
Formát stejný jako pro @code{cz-keys}.
@item cz-keys-dead-2
Určuje význam kláves po stisku druhé mrtvé klávesy (@code{cz-dead-key-2}).
Formát stejný jako pro @code{cz-keys}.
@end table

Poznámka: Je obecně vhodné před některé potenciálně citlivé znaky (jako
uvozovky, obrácené lomítko a hranaté závorky) umisťovat obrácené lomítko
(@samp{backslash}).  I když to z hlediska syntaxe elispu není vždy nezbytně
nutné, má to i jiné pozitivní efekty --- např. není matena kontrola závorkování
v Emacsu.  Navíc uvedení obráceného lomítka před znakem, který to nevyžaduje,
nemůže nic pokazit.

Následuje příklad nastavení proměnných v prostředí UN*Xu.  Nastaví se mrtvé
klávesy na dvojici kláves @key{~} (háčky) a @key{`} (čárky), prohodí se @key{y}
a @key{z} a po stisku mrtvé klávesy @key{~} a následném @key{a} se objeví
@samp{ä}, případně @samp{Ä}.

@example
(setq cz-dead-key-1 ?~)   ; znak se uvozuje otazníkem, někdy je nutno i \
(setq cz-dead-key-2 96)   ; i číslo je znak (zde obrácený apostrof)
(setq cz-keys             ; vektory znaků v [] nebo řetězce v ""
  '((?2 . [236]) (?3 . [185]) (?4 . [232]) (?5 . [248]) (?6 . [190])
    (?7 . [253]) (?8 . [225]) (?9 . [237]) (?0 . [233]) (?\[ . [250])
    (?\] . [249])         ; až sem je to původní definice
    (?z . "y") (?y . "z")))
(setq cz-keys-dead-1
  '((?c . [232]) (?d . [239]) (?e . [236]) (?n . [242]) (?r . [248])
    (?s . [185]) (?t . [187]) (?u . [249]) (?z . [190]) (?C . [200])
    (?D . [207]) (?E . [204]) (?N . [210]) (?R . [216]) (?S . [169])
    (?T . [171]) (?U . [217]) (?Z . [174])   ; až sem původní definice
    (?a . [228]) (?A . [196])))
@end example

Modifikovanou klávesnici je nutno po nastavení patřičných proměnných
aktivovat, @xref{Nastavení nové klávesnice}.


@node Nastavení nové klávesnice,  , Modifikace klávesnice, Vlastní rozložení kláves
@comment  node-name,  next,  previous,  up
@subsection Nastavení nové klávesnice

@findex cz-set-keyboard
Chcete-li nastavit modifikovanou programátorskou klávesnici a provedete
nastavení patřičných proměnných před @w{@code{(load "czech")}}, bude zavedena vaše
modifikovaná klávesnice.  Pokud proměnné nastavíte později, aktivujete
modifikovanou klávesnici znovuzavedením @samp{emacs-czech} pomocí @code{(load
"czech")} nebo voláním funkce @code{cz-set-keyboard} jako

@example
(cz-set-keyboard)
@end example

Chcete-li aktivovat vlastní kompletní klávesnici, provedete to voláním

@example
(cz-set-keyboard @var{klávesnice})
@end example


@node Externí klávesnice,  , Vlastní rozložení kláves, Klávesnice
@comment  node-name,  next,  previous,  up
@section Externí klávesnice

@samp{emacs-czech} lze samozřejmě používat bez emacsovské klávesnice,
tj. používat českou klávesnici poskytovanou přímo operačním systémem nebo
grafickým uživatelským rozhraním.  Výhodou takového postupu je jednotná
klávesnice pro všechny aplikace, naopak nevýhodou je prakticky nulová
flexibilita klávesnice.

@table @code
@vindex cz-8bit-input
@item cz-8bit-input
Právě kvůli bezproblémovému využívání externí klávesnice nastavuje
@samp{emacs-czech} při svém zavedení implicitně 8-bitový vstup.  To může občas
působit potíže --- např. nefungují klávesové kombinace
@w{@key{Alt}+@key{číslice}} na linuxovské konzole.  Pro tento případ je
definována proměnná @code{cz-8bit-input} --- 8-bitový vstup bude při zavedení
@samp{emacs-czech} nastaven právě tehdy, je-li hodnota této proměnné něco
jiného než @code{nil}.  Implicitní hodnota je @code{t}, působí-li vám to
potíže, změňte ji na @code{nil} ještě @emph{před} provedením @code{(load
"czech")}.
@vindex cz-keyboard-disable
@item cz-keyboard-disable
Je-li hodnota této proměnné při zavedení @samp{emacs-czech} @code{t}, nebude
automaticky aktivována podpora emacsovské české klávesnice.  Tím lze zamezit
případným problémům.  Implicitní hodnota je @code{nil}.
@end table

Chcete-li tedy využívat české podpory v Emacsu, ale přitom používat českou
klávesnici poskytovanou operačním systémem nebo grafickým uživatelským
rozhraním, je nejlépe si do @file{~/.emacs} přidat @emph{před} zavedení
@samp{emacs-czech} následující řádky:

@example
(setq cz-8bit-input (not (string= (getenv "TERM") "linux")))
(setq cz-keyboard-disable t)
@end example


@c ***** Hlavní návod *****

@node Psaní českých textů, Konvertory, Klávesnice, Top
@comment  node-name,  next,  previous,  up
@chapter Psaní českých textů

Zde jsou popsány funkce pro práci s českou klávesnicí a českými texty.

@menu
* Přepínání klávesnic::         Jak zapnout/vypnout českou klávesnici.
* Exotické znaky::              Vložení libovolného ISO 8859-2 znaku.
* Opravy::                      Korekce po použití nesprávné klávesnice.
* Hooky::                       Speciální akce.
* Autodetekce českých textů::   Je to český text?
@end menu


@node Přepínání klávesnic, Exotické znaky, Psaní českých textů, Psaní českých textů
@comment  node-name,  next,  previous,  up
@section Přepínání klávesnic

Pro přepínání klávesnic je definována následující kombinace kláves:

@table @kbd
@kindex C-x z z
@kindex pause
@findex cz-keyboard-mode
@item C-x z z
Přepínání mezi českou a anglickou klávesnicí (@code{cz-keyboard-mode}).  Ve
většině prostředí je tato funkce dostupná i klávesou @kbd{Pause}.  Pomocí
klávesy @kbd{Pause} pak lze přepínat klávesnici i během inkrementálního
vyhledávání příkazy @kbd{C-s} a @kbd{C-r} (tato funkce nefunguje v XEmacsu).
@end table

Dáváte-li naopak přednost použití dvou kláves, z nichž jedna českou klávesnici
vždy zapíná a druhá vždy vypíná, můžete to udělat kupříkladu takhle:

@example
(global-set-key "\C-x8" 'cz-keyboard-mode-off)
(global-set-key "\C-x9" 'cz-keyboard-mode-on)
@end example

O syntaxi zápisu různých kombinací kláves se lze více dozvědět v manuálu
Emacsu,
@ifinfo
@xref{Init Rebinding,,,emacs}.
@end ifinfo
@iftex
viz manuál Emacsu, oddíl [Init Rebinding].
@end iftex


@node Exotické znaky, Opravy, Přepínání klávesnic, Psaní českých textů
@comment  node-name,  next,  previous,  up
@section Vložení libovolného ISO 8859-2 znaku

Běžnou metodou vkládání nečeských znaků ze sady @w{ISO 8859-2} je použití
souboru obsahujícího všech 256 znaků.  Z toho pak písař žádaný znak zkopíruje.
Následující funkce může tuto poněkud nekultivovanou metodu nahradit.

@table @kbd
@kindex C-x z c
@kindex C-pause
@findex cz-select-char
@item C-x z c
Ukáže buffer se všemi písmeny z horní poloviny sady @w{ISO 8859-2}, ze kterého
lze vložit klávesou @kbd{RET} nebo prostředním tlačítkem myši zvolený znak do
textu.  Vyvolání s prefixovým argumentem vloží ihned naposledy zvolený znak.
Buffer se znaky lze zrušit bez volby znaky stiskem @kbd{C-c C-c}.  Na většině
klávesnic je tato funkce (@code{cz-select-char}) dostupná i přes @kbd{C-pause}.
@end table


@node Opravy, Hooky, Exotické znaky, Psaní českých textů
@comment  node-name,  next,  previous,  up
@section Korekce slov napsaných na opačné klávesnici

Občas se někomu stává, že napíše několik slov, aniž by se podíval na obrazovku,
a poté zjistí, že měl zapnutou jinou klávesnici, než předpokládal.  Pro
usnadnění následných oprav jsou k dispozici níže uvedené funkce.

@table @kbd
@findex cz-correct-word
@item M-x cz-correct-word
Opraví poslední slovo jako kdyby bylo napsáno na opačné klávesnici, než která
je právě aktivována.  Je-li vyvoláno s číselným prefixovým argumentem, provede
se oprava odpovídajícího počtu předcházejících slov.
@kindex C-x z w
@findex cz-correct-word-switch
@item C-x z w
Shodné s předchozím, ale nejprve se provede přepnutí klávesnic
(@code{cz-correct-word-switch}).
@kindex C-x z x
@kindex M-pause
@findex cz-correct-switch
@item M-x cz-correct-switch
Provede korekci do začátku aktuálního řádku s přepnutím klávesnic.  Prefixový
argument způsobí korekci i zadaný počet řádků před aktuálním řádkem.  Je-li
funkce vyvolána bez prefixového argumentu a od pozice kurzoru do začátku řádku
jsou pouze mezerové znaky, provede se korekce předcházejícího řádku.  Na
většině klávesnic je tato funkce dostupná i přes @kbd{M-pause}.
@kindex C-x z r
@findex cz-correct-region
@item C-x z r
Provede korekci regionu (@code{cz-correct-region}).
@findex cz-correct-word-on
@item M-x cz-correct-word-on
Stejné jako @code{cz-correct-word}, ale provede korekci slov, jako kdyby byla
napsána chybně na anglické klávesnici.
@findex cz-correct-word-off
@item M-x cz-correct-word-off
Stejné jako @code{cz-correct-word}, ale provede korekci slov, jako kdyby byla
napsána chybně na české klávesnici.
@end table


@node Hooky, Autodetekce českých textů, Opravy, Psaní českých textů
@comment  node-name,  next,  previous,  up
@section Použití hooků

@vindex cz-keyboard-mode-hook
Jako každý minor mode, má i @w{@code{cz-keyboard-mode}} vlastní hook s názvem
@w{@code{cz-keyboard-mode-hook}}.  Chcete-li tedy například při každém zapnutí
české klávesnice provést funkci @code{foo}, přidejte do svého konfiguračního
souboru řádek

@example
(add-hook 'cz-keyboard-mode-hook 'foo)
@end example

Využít hooky lze i pro automatické zapnutí české klávesnice pro určité typy
souborů.  Jsou definovány následující funkce:

@table @kbd
@findex cz-keyboard-mode
@item cz-keyboard-mode
Slouží jako přepínač klávesnic.
@findex cz-keyboard-mode-on
@item cz-keyboard-mode-on
Zapne českou klávesnice nezávisle na jejím předchozím nastavení.
@findex cz-keyboard-mode-off
@item cz-keyboard-mode-off
Vypne českou klávesnice nezávisle na jejím předchozím nastavení.
@end table

Chcete-li tedy, aby se vám například pro každý La@TeX{}ovský soubor zapnula
česká klávesnice, zavolejte ve svém konfiguračním souboru funkci

@example
(add-hook 'LaTeX-mode-hook 'cz-keyboard-mode-on)
@end example

Pokud máte naopak nastavenu hodnotu proměnné @w{@code{cz-keyboard-default-on}}
na hodnotu true, ale nechcete používat českou klávesnici při editaci C
programů, lze to zařídit takto:

@example
(add-hook 'c-mode-hook 'cz-keyboard-mode-off)
@end example

Poznámka: Předpokládá se správné nastavení emacsovské proměnné
@w{@code{auto-mode-alist}}, která nastavuje módy podle jména editovaného
souboru.  Je též možné zařídit automatické nastavení české klávesnice přímo v
daném souboru.  Podrobnější informace o automatickém nastavování módů naleznete
v manuálu Emacsu,
@ifinfo
@xref{Choosing Modes,,,emacs}.
@end ifinfo
@iftex
viz manuál Emacsu, oddíl [Choosing Modes].
@end iftex
S výhodou lze též využít autodetekce českých textů, @xref{Autodetekce českých
textů}.


@node Autodetekce českých textů,  , Hooky, Psaní českých textů
@comment  node-name,  next,  previous,  up
@section Autodetekce českých textů

@findex cz-is-cz-text
Funkce @w{@code{cz-is-cz-text}} se pokouší detekovat, zda aktuální buffer
obsahuje český text.  Pokud dospěje k názoru, že tomu tak je, vrátí @code{t}, v
opačném případě vrátí @code{nil}.

Funkci lze využít pro automatické nastavení klávesnice při otevření souboru.
Zkuste si do svého @file{~/.emacs} přidat řádky

@example
(defun my-find-file-hook ()
  (if (cz-is-cz-text) (cz-keyboard-mode 1)))
(add-hook 'find-file-hooks 'my-find-file-hook)
@end example

V optimálním případě se vám pak při otevření souboru nastaví česká klávesnice
právě pro české texty.

Autodetekce je založena na počtech českých a nečeských znaků v testovaném
vzorku textu.  Lze ji řídit pomocí následujících proměnných:

@table @code
@vindex cz-is-empty-czech
@item cz-is-empty-czech
Určuje, zda má být prázdný buffer považován za český text (hodnoty @code{t} a
@code{nil}).  Implicitní hodnota je @code{nil}.
@vindex cz-is-buffer-empty
@item cz-is-buffer-empty
Do jaké velikosti bufferu v bytech má být buffer považován za prázdný.
Implicitní hodnota je 80.
@vindex cz-is-test-size
@item cz-is-test-size
Maximální počet testovaných bytů.  Implicitní hodnota je 1000.
@vindex cz-is-skip-start
@item cz-is-skip-start
Kolik úvodních bytů má být před testováním přeskočeno.  Implicitní hodnota je
0.
@vindex cz-is-czech-min
@item cz-is-czech-min
Minimální podíl českých znaků ve vzorku, aby text mohl být považován za český.
Implicitní hodnota je 0.01.
@vindex cz-is-nonczech-max
@item cz-is-nonczech-max
Maximální podíl nečeských znaků z horní poloviny znakové sady, kdy smí být
ještě text považován za český.  Implicitní hodnota je 0.01.
@vindex cz-is-czech-characters
@item cz-is-czech-characters
Seznam českých znaků.
@end table


@c ***** Překódování *****

@node Konvertory, Třídění, Psaní českých textů, Top
@comment  node-name,  next,  previous,  up
@chapter Konverze kódování

Program umí provádět konverze znakových sad.  K dispozici jsou převodníky
založené pouze na interních strukturách i komplexnější metody založené na
definičních souborech balíku @samp{cstocs}.

O konfiguraci zde platí totéž důležité upozornění jako v případě konfigurace
fontů a klávesnice, @xref{Konfigurace}.

Tip: Konverze jsou až mnohonásobně rychlejší, nemáte-li zapnut
@samp{font-lock-mode}.

@menu
* Interní konverze::            Zabudované konverze.
* Univerzální převodník::       Konverze s využitím externích souborů.
* Externí konverze::            Konverze externím programem.
* Speciální konverze::          OdDO$uj/zaDO$uj.
* Automatické konverze::        Nechci vidět nic než ISO kódování.
* ASCII terminály::             Nechci vidět nic než sedmibitové znaky.
* Emacs versus cstocs::         Kdy použít co.
@end menu


@node Interní konverze, Univerzální převodník, Konvertory, Konvertory
@comment  node-name,  next,  previous,  up
@section Interní konverze

Tyto konvertory jsou určeny pro jednoduché použití a mají méně možností, než
jejich dokonalejší ekvivalenty, @xref{Univerzální převodník}.  Přesto ve
většině případů postačují a nejsou závislé na externích souborech.

@table @kbd
@findex cz-convert-to-csech
@item C-x z 7
Funkce (@code{cz-convert-to-csech}) je aplikována na region, kde převede
všechny 8-bitové znaky do jejich neakcentové podoby, tj. odstraní háčky, čárky
a jiná diakritická znaménka.  Neakcentované znaky z horní poloviny znakové sady
jsou nahrazeny tečkami.  Pokud je funkce vyvolána s prefixovým argumentem, je
za zkonvertovaný region doplněna věta @samp{Český text konvertován na cesky
text.}.  Tato funkce se může uplatnit při odesílání česky psané pošty pro
příjemce, kterému by se správně nezobrazily české znaky.  Použijete-li
prefixový argument, můžete jej decentně upozornit na to, že by s tím měl něco
dělat.
@findex cz-convert-to-native
@item C-x z n
Zkonvertuje region do @w{ISO 8859-2} kódování, resp. do kódování
@ifinfo
"Code page 1250"
@end ifinfo
@iftex
@uv{Code page 1250}
@end iftex
v případě NT verze Emacsu (nadále shrnuto pod společný pojem @dfn{kódování
prostředí}).  Kódování regionu musí být některé z následujících: bratří
Kamenických, KOI8,
@ifinfo
"Code page 852", "Code page 1250".
@end ifinfo
@iftex
@uv{Code page 852}, @uv{Code page 1250}.
@end iftex
Kódování je implicitně automaticky detekováno; při použití prefixového
argumentu je uživatel na vstupní kódování dotázán.  Tato funkce
(@code{cz-convert-to-native}) je primárně určena jako vyšší rozhraní k níže
uvedeným funkcím a využívá funkci @samp{cz-is-cz-text}, @xref{Autodetekce
českých textů}.
@end table

Pokud autodetekce kódování selže, můžete kromě prefixového argumentu použít i
odpovídající funkci z následujícího seznamu:

@table @kbd
@findex cz-convert-from-kamenik
@item M-x cz-convert-from-kamenik
Zkonvertuje region z kódování bratří Kamenických do kódování prostředí.
@findex cz-convert-from-koi8
@item M-x cz-convert-from-koi8
Zkonvertuje region z kódování KOI8 do kódování prostředí.
@findex cz-convert-from-windoze
@item M-x cz-convert-from-windoze
Zkonvertuje region z kódování
@ifinfo
"Code page 1250"
@end ifinfo
@iftex
@uv{Code page 1250}
@end iftex
do kódování prostředí.
@findex cz-convert-from-do$
@item M-x cz-convert-from-do$
Zkonvertuje region z kódování
@ifinfo
"Code page 852"
@end ifinfo
@iftex
@uv{Code page 852}
@end iftex
do kódování prostředí.
@end table

Vhodným kódováním češtiny pro ASCII terminály mohou být spřežky (spřežky jsou
používány několika lidmi z okolí Masarykovy univerzity):

@table @kbd
@findex cz-convert-to-digraphs
@item M-x cz-convert-to-digraphs
Zkonvertuje region z kódování @w{ISO 8859-2} do spřežek.  Protože spřežkové
kódování nemá žádný oficiální ani neoficiální standard, byl jeho typ zvolen
direktivně autorem @samp{emacs-czech} na základě konzultací se spřežkovými
odborníky a vstřícnými čtenáři newsové skupiny @samp{cz.comp.linux}.
@vindex cz-convert-digraphs
@vindex cz-convert-digraphs-specchar
@findex cz-convert-from-digraphs
@item M-x cz-convert-from-digraphs
Zkonvertuje region ze spřežek do kódování @w{ISO 8859-2}.  Z výše zmíněné
absence standardu vyplývá, že různí lidé používají mírně odlišné varianty
spřežkopisu.  @samp{emacs-czech} se snaží provádět alespoň základní detekce
použitého spřežkového kódování pro zkvalitnění nejednoznačného výstupu.
@end table

Spřežkové funkce lze konfigurovat pomocí proměnných @code{cz-convert-digraphs}
a @code{cz-convert-digraphs-specchar}.

@node Univerzální převodník, Externí konverze, Interní konverze, Konvertory
@comment  node-name,  next,  previous,  up
@section Univerzální převodník

Tento převodník využívá definičních souborů programu @samp{cstocs}, proto je
nutné je mít instalovány.  Program @file{cstocs} je součástí balíku
@file{cs-tools}.  Je k dispozici například na
@samp{ftp://ftp.muni.cz/pub/linux/localization/linux/cs-tools/}.

@table @kbd
@findex cz-convert-from-to
@item M-x cz-convert-from-to
Konvertuje region z jednoho kódování do jiného.  Zeptá se na vstupní a výstupní
kódování, které by mělo být zadáno jménem příslušného definičního souboru.
Je-li funkce vyvolána s prefixovým argumentem, použijí se bez dotazu naposledy
zadaná kódování.
@findex cz-convert-delete-tables
@item M-x cz-convert-delete-tables
Smaže všechny konverzní tabulky z paměti a cache soubor z disku.  Viz níže
proměnné @code{cz-convert-unknown-char} a @code{cz-convert-cache-file}.
@end table

Obvykle je nutné ještě nejprve nastavit některé z následujících proměnných:

@table @code
@vindex cz-encoding-files-dir
@item cz-encoding-files-dir
Řetězec určující cestu k definičním souborům různých kódování (@file{.enc}
soubory a soubor @file{accent}).  Implicitní hodnota je
@w{@code{"/usr/local/lib/cstocs"}}.
@vindex cz-convert-accent-file
@item cz-convert-accent-file
Jméno souboru definujícího 7-bitové ekvivalenty k různým znakům.  Implicitní
hodnota je @w{@code{"accent"}}.
@vindex cz-convert-unknown-char
@item cz-convert-unknown-char
Znak, kterým jsou nahrazeny znaky bez ekvivalentu v novém kódování.  Implicitní
hodnota je @code{.}.  Je-li tento znak změněn až po provedení nějakého
překódování v Emacsu, musí být zavolána funkce
@w{@code{cz-convert-delete-tables}}, aby změna vstoupila v platnost (důvodem
jsou v paměti vybudované tabulky, které by tuto změnu nerespektovaly).
@vindex cz-convert-onebymore
@item cz-convert-onebymore
Je-li @code{nil}, neprovádí se nahrazení znaků jejich víceznakovými ekvivalenty
a příslušné znaky jsou nahrazeny podle proměnné
@w{@code{cz-convert-unknown-char}}.  V jiném případě jsou nahrazeny svými
víceznakovými ekvivalenty.  Implicitní hodnota je @code{nil}.
@vindex cz-convert-encfiles
@item cz-convert-encfiles
Asociativní seznam určující předdefinované názvy konverzních souborů.
@vindex cz-convert-cache-file
@item cz-convert-cache-file
Na pomalejších strojích může chvíli trvat počáteční vybudování konverzní
tabulky z definičních souborů.  V takovém případě je možné použít cache soubor,
do kterého jsou konverzní tabulky ukládány pro pozdější použití.  Za normálních
okolností je použití cache souboru zbytečné.  Obsahem této proměnné je řetězec
určující název cache souboru.  Implicitní hodnota je @code{nil},
což znamená, že cache soubor nebude používán.
@end table

@node Externí konverze, Speciální konverze, Univerzální převodník, Konvertory
@comment  node-name,  next,  previous,  up
@section Externí konverze

Konverze lze provádět i pomocí externího programu, zejména @samp{cstocs}.
Konverze se provádějí pomocí totožných funkcí, pouze se pomocí konfiguračních
proměnných určí, za jakých podmínek má být konverze provedena externím
programem.

@table @code
@vindex cz-use-cstocs-limit
@item cz-use-cstocs-limit
Minimální velikost konvertovaného regionu v bytech, od které je prováděna
konverze externím programem.  Pokud je hodnota proměnné nastavena na
@w{@code{infinity}} (implicitní), není externí program používán vůbec.  Je-li
hodnota 0, jsou naopak veškeré konverze prováděny externím programem.
@vindex cz-use-cstocs-program
@item cz-use-cstocs-program
Řetězec definující jméno externího programu.  Implicitní je
@w{@code{"cstocs"}}.
@end table

Ostatní proměnné jsou stejné jako v případě univerzálního převodníku,
@xref{Univerzální převodník}.

@node Speciální konverze, Automatické konverze, Externí konverze, Konvertory
@comment  node-name,  next,  previous,  up
@section Speciální konverze

Některé systémy mají zlozvyk přidávat či vyžadovat znaky @samp{^M} na koncích
řádků, případně i znak @samp{^Z} na konec souboru.

@table @kbd
@kindex C-x z u
@findex cz-convert-undo$
@item C-x z u
Odstraní paznaky na koncích řádků v celém bufferu a případně i na jeho konci
(@code{cz-convert-undo$}).
@item C-x z d
Přidá paznaky na konce řádků v celém bufferu (@code{cz-convert-do$}).
@end table

Zařídit částečně automatické odstraňování těchto znaků lze například pomocí
následujího řádku v @file{~/.emacs}:

@example
(add-hook 'find-file-hooks 'cz-convert-undo$)
@end example

Možným řešením je i aktivace automatických konverzí, @xref{Automatické
konverze}, (nefunguje zatím u ASCII souborů).


@node Automatické konverze, ASCII terminály, Speciální konverze, Konvertory
@comment  node-name,  next,  previous,  up
@section Automatické konverze

@samp{emacs-czech} umí provádět i automatické konverze na pozadí při načítání a
zápisu souborů.  Tato funkce je užitečná například při prohlížení souborů
vzniklých na jiné platformě nebo při editaci souborů pro jinou platformu.
Podporovaná kódování jsou: @w{ISO 8859-2}, Kameničtí, KOI8,
@ifinfo
"Code page 1250" a "Code page 852".
@end ifinfo
@iftex
@uv{Code page 1250} a @uv{Code page 852}.
@end iftex

@table @kbd
@kindex C-x z a
@findex cz-convert-auto-toggle
@item C-x z a
Přepne režim automatických konverzí (@code{cz-convert-auto-toggle}).  Tento
režim je globální a je implicitně vypnut.  Při zapnutém režimu automatických
konverzí je při každém otevření souboru autodetekováno jeho kódování,
@xref{Autodetekce českých textů}, a je provedena konverze bufferu (nikoliv
souboru) do kódování prostředí.  Při zápisu do souboru je provedena zpětná
konverze do kódování souboru.  Detekované kódování souboru je symbolicky
vyznačeno ve stavovém řádku (modeline).  Při vložení textu ze souboru v jiném
kódování je opět provedena patřičná konverze, původně stanovené kódování
souboru se nemění, lze jej však v případě potřeby změnit ručně (viz níže).
@findex cz-convert-auto-enable
@item M-x cz-convert-auto-enable
Zapne režim automatických konverzí (@code{cz-convert-auto-enable}).
@findex cz-convert-auto-disable
@item M-x cz-convert-auto-disable
Vypne režim automatických konverzí (@code{cz-convert-auto-disable}).
@kindex C-x z b
@findex cz-convert-auto-encoding
@item C-x z b
Změní stanovené kódování souboru příslušného aktuálnímu bufferu
(@code{cz-convert-auto-encoding}).  Volba @samp{none} vypne automatickou
konverzi pro tento buffer.
@end table

Při převodu z @w{ISO 8859-2} do některého jiného kódování, resp. naopak, jsou
přidávány, resp. odstraňovány, znaky @samp{^M} na koncích řádků.

Chcete-li, aby se automatické konverze implicitně prováděly, přidejte do svého
@file{~/.emacs} někam @emph{za} @w{@code{(load "czech")}} řádek

@example
(cz-convert-auto-enable)
@end example

Je-li režim automatických konverzí vypnut, ale buffer má nastaveno nějaké
kódování, automatické konverze se pro něj provádí.

Automatické konverze jsou prováděny pouze při práci se soubory a nefungují při
prohlížení či editaci @samp{tar} souborů.


@node ASCII terminály, Emacs versus cstocs, Automatické konverze, Konvertory
@comment  node-name,  next,  previous,  up
@section ASCII terminály

Pracujete-li na zařízení, které z nějakého důvodu není schopno správně zobrazit
české znaky, může vám pomoci následující funkce:

@table @kbd
@findex cz-ascii-display-mode
@kindex C-x z t
@item C-x z t
Přepíná globální minor mode sedmibitového zobrazování znaků
(@code{cz-ascii-display-mode}).  Je-li tento mód aktivován, jsou místo všech
akcentovaných @w{ISO 8859-2} znaků zobrazovány jejich sedmibitové náhražky.
Samotný text v bufferu zůstává nezměněn (konverze se provádí pouze na úrovni
zobrazování) a lze v něm normálně psát česky.
@end table

Tuto funkci jistě s radostí využijí i lidé, které přivádí k nepříčetnosti česky
psané příspěvky v newsech.


@node Emacs versus cstocs,  , ASCII terminály, Konvertory
@comment  node-name,  next,  previous,  up
@section Kdy použít Emacs a kdy @samp{cstocs}?

Oba programy mají své výhody i nevýhody.  Obecně platí přibližně tyto principy:

@noindent Emacs je výhodné použít za těchto okolností:

@itemize @bullet
@item
Jste-li právě v Emacsu a potřebujete zkonvertovat editovaný text nebo nějaký
soubor, který je po ruce.
@item
Pokud je pro vás jednodušší zkonvertovat větší množství souborů v dired bufferu
Emacsu než z příkazové řádky shellu.
@end itemize

@noindent @samp{cstocs} je výhodné použít za těchto okolností:

@itemize @bullet
@item
Jste-li v shellu a nemáte zrovna spuštěný Emacs.  (Jak se vám ale něco takového
může stát?)
@item
Pokud je pro vás jednodušší zkonvertovat větší množství souborů z příkazové
řádky shellu než v dired bufferu Emacsu.
@item
Potřebujete-li konvertovat mnohamegabytové soubory a máte k dispozici novou
rychlejší verzi @samp{cstocs}.  @samp{cstocs} funguje na rozdíl od Emacsu jako
filtr a má tedy konstantní paměťové nároky nezávislé na velikosti
zpracovávaného souboru.
@item
Provádíte-li konverzi dávkově z shell-scriptu.  Konverze pomocí @samp{cstocs}
je asi o něco pohodlnější.
@end itemize


@c ***** Třídění *****

@node Třídění, Messages, Konvertory, Top
@comment  node-name,  next,  previous,  up
@chapter Pseudočeské třídění

Emacs má celou řady příkazů umožňujících třídění podle různých
kritérií.  @samp{emacs-czech} se snaží alespoň zčásti umožnit i třídění
českých textů.

@menu
* Typ třídění::                 Co je toto třídění zač.
* Ovládání třídění::            Jak se to používá.
@end menu


@node Typ třídění, Ovládání třídění, Třídění, Třídění
@comment  node-name,  next,  previous,  up
@ifinfo
@section Jaký typ "českého" třídění byl implementován
@end ifinfo
@iftex
@section Jaký typ @uvv{českého} třídění byl implementován
@end iftex

Implementované třídění je pouze nejjednodušší variantou třídění českých
textů.  Definuje pouze správné zařazení českých znaků do anglické
abecedy.  Nezohledňuje písmeno @samp{ch} ani žádná jiná specifika
českého třídění textů.  Pořadí znaků vzniklo setříděním všech znaků
znakové sady pomocí programu @samp{csr} Petra Olšáka.

Základním problémem českého třídění je jeho pomalost.  Z důvodu interní
implementace třídění v Emacsu nelze dost dobře implementovat seriózní české
třídění, které by nebylo velmi pomalé.  I v @samp{emacs-czech} implementovaná
nejjednodušší podoba českého třídění je výrazně pomalejší než třídění
standardní.  Nezávisle na případné aktivaci českého třídění však původní
rychlost standardního třídění zůstává zachována.


@node Ovládání třídění,  , Typ třídění, Třídění
@comment  node-name,  next,  previous,  up
@section Použití českého třídění

Existují tři režimy českého třídění:

@enumerate
@item
Vždy standardní třídění (tento režim je implicitní).
@item
Vždy české třídění.
@item
Třídění podle módu.
V tomto případě se aplikuje české třídění, je-li v daném bufferu
zapnuta česká klávesnice, jinak se aplikuje standardní třídění Emacsu.
@end enumerate

Aktivované české třídění má vliv na některé standardní třídící funkce
Emacsu (jako například @samp{sort-lines}).  Ostatních funkcí, které
nevyužívají standardní třídící funkci Emacsu (a kterých je patrně
většina), se toto nastavení netýká.

Nastavení režimu lze provést z menu nebo pomocí následujícího příkazu:

@table @kbd
@kindex C-x z s
@findex cz-sort-toggle
@item C-x z s
Cyklické přepínání mezi třemi režimy třídění (@code{cz-sort-toggle}).
Je-li vyvoláno s prefixovým argumentem, cyklické přepínání se provádí v
opačném směru.
@end table

@vindex cz-sort
Implicitní režim je vždy standardní třídění.  Toto lze změnit nastavením
proměnné @code{cz-sort} před provedením @w{@code{(load "czech")}}.  Je-li
hodnota této proměnné @code{t}, bude nastaveno vždy české třídění.  Je-li
hodnotou této proměnné symbol @code{by-mode}, třídění je nastaveno podle módu.


@c ***** Messages *****

@node Messages, Různé, Třídění, Top
@comment  node-name,  next,  previous,  up
@chapter Maily, newsy a čeština

Program podporuje automatickou konverzi mailů a newsů do
@ifinfo
"správného"
@end ifinfo
@iftex
@uv{správného}
@end iftex
kódování.  Umožňuje i využití balíků @samp{tm} (MIME) a @samp{bbdb} (Insidious
Big Brother Database).  Podporován je @samp{message-mode} Gnus.  Z toho
vyplývá, že příslušné funkce balíku @samp{emacs-czech} lze používat jen v rámci
Gnus verze 5.2 nebo vyšší (máte-li Emacs verze alespoň 19.31 nebo XEmacs verze
alespoň 19.14, pak tyto Gnus máte).  V případě zájmu uživatelů mohou být v
budoucnu podporovány i jiné systémy, zejména @samp{rmail}.

@menu
* Volba kódování::              Kdo je kdo.
* Obsluha v message-mode::      Funkce pro konverze v message-mode.
* Hooky v message-mode::        Co provádět před konverzí a po ní.
* MIME::                        Emacs a MIME.
@end menu


@node Volba kódování, Obsluha v message-mode, Messages, Messages
@comment  node-name,  next,  previous,  up
@section Nastavení proměnných pro správnou funkci automatických konverzí

@samp{emacs-czech} rozlišuje čtyři základní typy kódování odesílaného mailu
nebo článku:

@table @code
@item ascii
7-bitové kódování jako v anglickém textu, dosud bohužel nejčastěji používané i
pro české texty.
@item mime
Kódování podle standardu MIME, 7-bitové.  Toto kódování by měli být schopni
přijímat všichni lidé v českých zemích vybavení rozumným softwarem.
@item plain
Žádné kódování odesílaného textu, případně 8-bitové kódování podle standardu
MIME.  Zásadními nevýhodami tohoto způsobu kódování je neprůchodnost přes
7-bitové linky (kterých je poměrně dost) a nečitelnost v prostředích
použivajících nestandardní znakové sady (kterých je bohužel ještě více).
@item sprzezjky
Odesílaný text bude převeden do spřežek.  (Spřežky jsou používány několika
lidmi z okolí Masarykovy univerzity.  Pokud o nich nic nevíte, nemusíte se tím
nijak trápit.)
@end table

@vindex cz-gnus
@samp{emacs-czech} umí na základě E-mailové adresy (nikoliv jména!) či názvu
diskusní skupiny nastavit podle zadaných kritérií správný typ kódování
odesílané zprávy.  Aktivace nebo deaktivace této funkce se provádí nastavením
proměnné @code{cz-gnus} na některou z následujících hodnot:

@itemize @bullet
@item
@code{nil}: Konverze nebude prováděna.
@item
@code{no-mime} (implicitní): Konverze bude prováděna, ale není využíván balík
@samp{tm} (podpora MIME).
@item
@code{t}: Konverze bude prováděna včetně využití funkcí balíku @samp{tm}.
@end itemize

Jestliže není k dispozici podpora MIME (proměnná @code{cz-gnus} má hodnotu
@code{no-mime}), značí @code{mime} vždy totéž, co @code{ascii}.

Jestliže je k dispozici podpora pro MIME (proměnná @code{cz-gnus} má hodnotu
@code{t}), používá se vždy v případě @code{plain} 8-bitová podoba tohoto
standardu.

@menu
* Globální nastavení::          Implicitní kódování.
* Individuální nastavení::      Kódování na jméno.
* Využití BBDB::                Velký Bratr to ví.
* Více příjemců::               Kdo z koho.
@end menu


@node Globální nastavení, Individuální nastavení, Volba kódování, Volba kódování
@comment  node-name,  next,  previous,  up
@subsection Globální nastavení

Jednotné implicitní nastavení typů kódování se provádí pomocí následujících
proměnných:

@table @code
@item cz-message-method-default
Implicitní typ kódování všech typů odesílaných zpráv (implicitně
@code{ascii}).  Tato proměnná se použije v případě, kdy je má některá z níže
uvedených proměnných hodnotu @code{nil}.
@item cz-message-method-mail
Implicitní typ kódování odesílaných mailů (implicitně @code{mime}).
@item cz-message-method-news
Implicitní typ kódování odesílaných newsů (implicitně @code{nil}).
@end table

Tyto proměnné určují typ kódování odesílané zprávy v případě, kdy pro příjemce
není dána individuální specifikace, @xref{Individuální nastavení}.

@node Individuální nastavení, Využití BBDB, Globální nastavení, Volba kódování
@comment  node-name,  next,  previous,  up
@subsection Individuální nastavení

V případě, kdy se pro některé vám známé příjemce nebo diskusní skupiny liší
požadovaný typ kódování od implicitního, lze pomocí níže uvedených proměnných
určit typ kódování přímo pro dané příjemce.  Je záhodno definovat individuální
nastavení kódování i pro ty příjemce zpráv, u nichž je požadovaný typ kódování
shodný s implicitním --- ušetříte si pak práci (a možná i problémy) při změně
implicitního typu kódování.  V případě většího množství nastavovaných adres
může být s výhodou využito balíku @samp{bbdb}, @xref{Využití BBDB}.

Typ kódování se určuje na základě e-mailové adresy příjemce, resp. názvu
diskusní skupiny.  V níže uvedených proměnných je adresa či název vždy
považována za regulární výraz, u něhož stačí i shoda na podřetězec adresy nebo
názvu.  Pokud se adresa či název shoduje s více položkami konfiguračních
proměnných, platí první shoda.

Konfigurační proměnné:

@table @code
@item cz-message-method-people
Určuje typ kódování pro příjemce e-mailů.  Jedná se o seznam obsahující
podseznamy formátu @w{@code{(@var{typ-kódování} "řetězec 1" ... "řetězec n")}}.
První položka podseznamu je některý ze symbolů @code{ascii}, @code{mime} nebo
@code{plain}, ostatní jsou specifikující regulární výrazy.  I pro jeden a týž
typ kódování může být uvedeno více podseznamů.
@item cz-message-method-newsgroups
Tato proměnná má zcela shodný formát s @code{cz-message-method-people}, avšak
používá se pro posuzování newsových zpráv.
@end table

Příklad nastavení:

@example
(setq cz-message-method-people
  '((mime "\\<mime_user@@"
          "\\.mime_factory\\.com\\>")
    (plain "@@our\\.domain\\.")
    (ascii "\\.oldware\\.com\\>"
           "\\<csech@@.*ascii\\.cz\\>"
           "\\<.*sevenbit.*@@")))
(setq cz-message-method-newsgroups
  '((mime "\\<cz\\." "mail.linux")
    (plain "\\<fido\\.")))
@end example

@node Využití BBDB, Více příjemců, Individuální nastavení, Volba kódování
@comment  node-name,  next,  previous,  up
@subsection Určení typu kódování z BBDB

Používáte-li balík @samp{bbdb} (Insidious Big Brother Database; dostupný v
elisp archívu, též standardní součástí Debianu), můžete k osobám ve své
databázi přidat informaci o typu kódování, které preferují.  Založte položku
@code{mailtype} a do ní pro každou z daných osob uložte některou z hodnot
@code{ascii}, @code{mime} nebo @code{plain}.

Jestliže je hodnota proměnné @code{cz-message-use-bbdb} nastavena na jinou
hodnotu než @code{nil} a je k dispozici balík @samp{bbdb}, je při rozhodování o
typu konverze provedeno nejprve prohledání databáze.  Je-li nalezena u příjemce
položka @code{mailtype}, nastaví se kódování na její hodnotu.  V opačném
případě se aplikuje standardní postup určení kódování podle konfiguračních
proměnných.

Na rozdíl od konfiguračních proměnných popsaných v předchozí sekci musí
e-mailová adrese příjemce souhlasit přesně s údajem v databázi, tj. při
porovnávání se neakceptuje podřetězec ani regulární výraz.  @samp{bbdb} není
nikdy využíváno při určování typu kódování pro diskusní skupiny.

@node Více příjemců,  , Využití BBDB, Volba kódování
@comment  node-name,  next,  previous,  up
@subsection Více příjemců

Jestliže je zpráva určena více příjemcům, typ kódování se volí podle
následujících pravidel:

@itemize @bullet
@item
Je-li typ kódování pro některého z příjemců @code{ascii}, zvolí se toto
kódování.
@item
Jinak je-li typ kódování pro všechny příjemce @code{mime}, zvolí se
@code{mime}.
@item
Jinak je-li typ kódování pro všechny příjemce @code{plain}, zvolí se
@code{plain}.
@item
Jinak se zvolí typ kódování @code{ascii}.
@end itemize

Tímto je zaručeno, že nikdo z příjemců nedostane zprávu v pro něm (zcela)
nečitelném kódování.

Je-li zpráva určena do diskusní skupiny a zároveň se kopie posílá e-mailem,
rozhoduje pouze název diskusní skupiny a nikoliv adresy příjemců kopií.


@node Obsluha v message-mode, Hooky v message-mode, Volba kódování, Messages
@comment  node-name,  next,  previous,  up
@section Aktivace a korekce automatických konverzí

Je-li proměnná @code{cz-gnus} nastavena na jinou hodnotu než @code{nil}, je
aktivována možnost konverze odesílaných mailů nebo článků.  V
@samp{message-mode} jsou definovány následující funkce:

@table @kbd
@kindex C-c C-z
@findex cz-message-send-and-exit
@item C-c C-z
Totéž, co standardní funkce @code{message-send-and-exit} (@kbd{C-c C-c}), ale
před odesláním provede patřičnou konverzi (@code{cz-message-send-and-exit}).
@findex cz-message-send
@item M-x cz-message-send
Totéž, co standardní funkce @code{message-send}, ale před odesláním
provede patřičnou konverzi.
@kindex C-c C-s
@findex cz-message-show-method
@item C-c C-s
Vypíše metodu konverze, která má být aplikována při odeslání mailu
(@code{cz-message-show-method}). @footnote{Kombinace kláves @kbd{C-s C-s} je v
Gnus standardně přiřazena pro vložení signatury.  Protože však pro tento účel
existuje novější funkce na @kbd{C-c C-w}, lze zmíněnou kombinaci předefinovat.}
@end table

Je-li nastavena proměnná @code{cz-message-ask-on-send} na jinou hodnotu než
@code{nil}, Emacs se před odesláním mailu nebo článku zeptá, je-li ve správné
podobě.  Implicitní hodnota této proměnné je závislá na hodnotě proměnné
@code{cz-verbose}, @xref{Různé různé}, což implicitně znamená @code{t}.

Kromě automatického určení správného kódování lze toto zadat i explicitně.

@table @kbd
@kindex C-c C-m
@findex cz-message-set-method
@item C-c C-m
Tato funkce (@code{cz-message-set-method}) se zeptá, jaké má být kódování
editované zprávy.  Možné odpovědi jsou @code{ascii}, @code{mime} (jen při
aktivované podpoře MIME), @code{plain} a @code{default} (v tomto případě bude
kódování zvoleno podle automatického výběru).
@end table

Je-li mail nebo příspěvek odeslán pomocí standardních funkcí (například
@kbd{C-c C-c}), žádná konverze se neprovádí.  Obáváte-li se, že byste mohli
kvůli chybnému stisku kombinace kláves omylem odeslat zprávu nezakódovanou,
můžete do svého @file{~/.emacs} přidat následující řádky:

@example
(defun my-safe-message ()
  (define-key message-mode-map "\C-c\C-c" 'undefined))
(add-hook 'message-mode-hook 'my-safe-message)
@end example


@node Hooky v message-mode, MIME, Obsluha v message-mode, Messages
@comment  node-name,  next,  previous,  up
@section Hooky v @samp{message-mode}.

Pro @samp{message-mode} jsou definovány tyto hooky prováděné při odesílání
zpráv:

@itemize @bullet
@vindex cz-message-before-hook
@item cz-message-before-hook
Hook aplikovaný před konverzí zprávy připravené pro odeslání.
@vindex cz-message-after-hook
@item cz-message-after-hook
Hook aplikovaný po konverzi zprávy těsně před jejím odesláním.
@end itemize


@node MIME,  , Hooky v message-mode, Messages
@comment  node-name,  next,  previous,  up
@section Emacs a MIME

Existují dva programy umožňující používání standardu MIME v Emacsu: @samp{tm} a
@samp{rmime}.  Protože o druhém z nich je mi známo jen velmi málo a
@samp{emacs-czech} jej nepodporuje, uvedu zde několik poznámek jen o balíku
@samp{tm}, konkrétně jeho verzi 7.100.3.  I když nemáte instalovánu žádnou
podporu pro MIME, Gnus vám umožňují alespoň převést quoted printable v článku
do čitelné podoby pomocí příkazu @kbd{W q}.

Balík @samp{tm} je dostupný na následujících adresách:

@noindent
@samp{ftp://ftp.jaist.ac.jp/pub/GNU/elisp/mime/}@*
@samp{ftp://ftp.nis.co.jp/pub/gnu/emacs-lisp/tm/}@*
@samp{ftp://ftp.nisiq.net/pub/gnu/emacs-lisp/tm/}@*
@samp{ftp://ftp.miranova.com/pub/gnus/jaist.ac.jp/}@*
@samp{ftp://ftp.unicamp.br/pub/mail/mime/tm/}@*
@samp{ftp://ftp.tnt.uni-hannover.de/pub/editors/xemacs/contrib/}

Kromě toho je též součástí Debianu, takže zdrojové texty patrně získáte
nejrychleji z některého jeho mirroru v České republice.

Funguje v Emacsu i XEmacsu.  Autoři uvádí, že plná podpora většiny znakových
sad (včetně @w{ISO 8859-2}) je k dispozici jen v MULE Emacsu (multijazyková
modifikace GNU Emacsu, používaná zejména v Japonsku).  Z důvodu rychlosti je
využívána externí podpora MIME, tj. metamail @footnote{Nemáte-li instalován
metamail, můžete přesto @samp{tm} v omezené míře používat: nastavte proměnné
@code{quoted-printable-internal-encoding-limit} a
@code{quoted-printable-internal-decoding-limit} na dostatečně velké hodnoty
(tyto proměnné nejsou popsány v dokumentaci).}.  Přestože se oficiálně jedná o
beta verzi, program se zdá být plně funkční a má celkem příjemné ovládání a
vlastnosti a spolupracuje (na rozdíl od @samp{emacs-czech}) se všemi
emacsovskými mail a news rozhraními.

Tip: Používáte-li @samp{font-lock-mode}, přidejte do svého @file{~/.gnus.el}
řádek

@example
(add-hook 'mime-editor/translate-hook (lambda () (font-lock-mode 0)))
@end example

Možná pak bude ukončení editace MIME zprávy výrazně rychlejší a s výrazně
menšími paměťovými nároky.


@c ***** Co se nevešlo jinam *****

@node Různé, Nedostatky a chyby, Messages, Top
@comment  node-name,  next,  previous,  up
@chapter Různé

@menu
* Fonty::                       Nastavení (českých) fontů.
* Menu::                        Menu ano či ne?
* Kalendář::                    Český kalendář.
* Vlnkování::                   Jak opravit @TeX{}ovské texty bez vlnek.
* Obcházení problémů::          Co s problematickým SW okolo?
* Slovenština::                 Slovenské prostředí.
* Různé různé::                 Co se nevešlo jinam.
@end menu


@node Fonty, Menu, Různé, Různé
@comment  node-name,  next,  previous,  up
@section Fonty

Pro správné zobrazení českých znaků je potřeba Emacsu nastavit české fonty.
Toho lze dosáhnout trojím způsobem:

@enumerate
@item
Nastavením atributů systému X Window před startem Emacsu.
@item
Parametrem příkazové řádky při jeho spuštění.
@item
Nastavením fontů funkcemi Emacsu za jeho běhu.
@end enumerate

Jak lze realizovat kteroukoliv z těchto metod je popsáno v manuálu Emacsu,
@ifinfo
@xref{Font X,,,emacs}.
@end ifinfo
@iftex
viz manuál Emacsu, oddíl [Font X].
@end iftex

První metoda,
@ifinfo
@xref{Resources X,,,emacs},
@end ifinfo
@iftex
viz manuál Emacsu, oddíl [Resources X],
@end iftex
je obecně nejvýhodnější.  Stačí jednou nastavit správný font v
souboru @file{~/.Xdefaults} a o více se nestarat.  Tato metoda selhává v
případě, kdy je tento soubor sdílený mezi prostředími vyžadujícími různé fonty
a nelze provést volbu patřičnými instrukcemi makroprocesoru.

Druhá metoda je nejjednodušší v případě, kdy font není nastaven a je potřeba
jej zvolit.  Je však poněkud nepohodlná.

Třetí metoda umožňuje nastavit fonty přímo z Emacsu, například podle obsahu
proměnné @samp{DISPLAY}.  Její nevýhodou je pomalejší start Emacsu, je-li
použita v @file{~/.emacs}, neboť se mění původně nastavený font.  Tuto metodu
využívá @samp{emacs-czech}.

@menu
* Konfigurační proměnné::       Počáteční nastavení fontů.
* Nastavení fontů::             Explicitní nastavení fontů.
* Příklad::                     Příklad konfigurace a nastavení.
@end menu


@node Konfigurační proměnné, Nastavení fontů, Fonty, Fonty
@comment  node-name,  next,  previous,  up
@subsection Konfigurační proměnné

Pomocí nastavení následujících proměnných @emph{před} provedením
@w{@code{(load "czech")}} lze nastavit žádané fonty.

@table @code
@vindex cz-font-default
@item cz-font-default
Proměnná určující implicitní font, který se použije ve všech druzích textu,
není-li specifikováno jinak.  Její hodnotou je řetězec se jménem fontu.
Nastavení této proměnné má stejný efekt jako totéž nastavení v seznamu atributů
nebo volba @samp{-fn} na příkazové řádce.  Příklad:

@example
(setq cz-font-default
"-misc-fixed-medium-r-normal-sans-15-140-75-75-c-90-iso8859-2")
@end example

Stručné vysvětlení jednotlivých položek je uvedeno například v manuálu Emacsu,
@ifinfo
@xref{Font X,,,emacs}.
@end ifinfo
@iftex
viz manuál Emacsu, oddíl [Font X].
@end iftex

@vindex cz-font-faces-list
@item cz-font-faces-list
Seznam určující fonty použité v různých typech textu (@dfn{faces}).  Prvky
tohoto seznamu jsou seznamy o dvou položkách určujících typ textu a příslušný
font.  Není nutné určit fonty pro všechny druhy textu --- není-li font pro
nějaký typ textu uveden, bude použit implicitní font.  Příklad:

@example
(setq cz-font-faces-list
'((modeline "-misc-fixed-medium-r-normal-*-15-*-*-*-c-*-iso8859-2")
  (highlight "-misc-fixed-medium-r-normal-*-15-*-*-*-c-*-iso8859-2")
  (region "-misc-fixed-medium-r-normal-*-15-*-*-*-c-*-iso8859-2")
  (secondary-selection 
   "-misc-fixed-medium-r-normal-*-15-*-*-*-c-*-iso8859-2")
  (bold "-misc-fixed-bold-r-normal-*-15-*-*-*-c-*-iso8859-2")
  (italic "-misc-fixed-medium-r-normal-*-15-*-*-*-c-*-iso8859-2")
  (bold-italic "-misc-fixed-bold-r-normal-*-15-*-*-*-c-*-iso8859-2")
  (underline "-misc-fixed-medium-r-normal-*-15-*-*-*-c-*-iso8859-2")
))
@end example

Větší fantazii při zachování čitelnosti textů lze při současném množství volně
dostupných českých fontů, jen sotva uplatnit.

@vindex cz-font-info-list
@item cz-font-info-list
Zcela analogická proměnná k @w{@code{cz-font-faces-list}}, pouze se zde
nastavují fonty pro info, tj. @w{@code{info-xref}}, @w{@code{info-node}} a
@w{@code{info-menu-5}}.  Tyto položky nelze uvádět v proměnné
@w{@code{cz-font-faces-list}}, protože pokus o jejich nastavení před prvním
vstupem do info prohlížeče by vedl k chybě.
@end table

Pokud tyto proměnné nejsou explicitně nastaveny, je jejich hodnota @code{nil} a
příslušné fonty se nenastaví (použijí se fonty implicitní).


@node Nastavení fontů, Příklad, Konfigurační proměnné, Fonty
@comment  node-name,  next,  previous,  up
@subsection Nastavení fontů

Nastavení fontů podle hodnot konfiguračních proměnných se provede automaticky
při zavedení @samp{emacs-czech} (@w{@code{(load "czech")}}) nebo jej lze provést
explicitně kdykoliv později pomocí funkce @code{cz-set-fonts}.

@table @code
@findex cz-set-fonts
@item cz-set-fonts @var{default} &optional @var{faces-list} @var{info-list}
Nastaví základní font (@var{default}), fonty pro faces (@var{faces-list}) a
fonty pro info browser (@var{info-list}).  Formát parametrů je shodný s
formátem odpovídajících konfiguračních proměnných,
@xref{Konfigurační proměnné}.
@end table


@node Příklad,  , Nastavení fontů, Fonty
@comment  node-name,  next,  previous,  up
@subsection Příklad konfigurace fontů

Ukázka nastavení fontů v souboru @file{~/.emacs}:

@example
(setq cz-font-default
  (cond
    ((string= (substring (getenv "DISPLAY") 0 10) "bigdisplay")
      "-*-20-*-2")
    ((string= (substring (getenv "DISPLAY") 0 5) "small")
      "-*-12-*-2")
    (t
      "-*-16-*-2")))
(load "czech")
@end example

Toto zajistí nastavení určených fontů pro konzoly počítačů @samp{bigdisplay} a
@samp{small}.  Na displayích ostatních počítačů bude nastaven font
@samp{-*-16-*-2}.  Analogickým způsobem lze nastavit ostatní proměnné
definující fonty.

Je-li používán secure shell s automatickou alokací displaye, neznám žádnou
metodu, jak zjistit typ prostředí.  Případné informace na toto téma uvítám.


@node Menu, Kalendář, Fonty, Různé
@comment  node-name,  next,  previous,  up
@section Menu

@vindex cz-enable-menu
@findex cz-menu-on
@findex cz-menu-off
Pokud vám vadí menu @samp{Czech} v menubaru, můžete jej zrušit jeho
sebedestrukční položkou.  Druhou možností je přidat do svého
@file{~/.emacs} nastavení proměnné @code{(setq cz-enable-menu nil)} @emph{před}
@w{@code{(load "czech")}} nebo volání funkce @code{(cz-menu-off)} @emph{za}
@w{@code{(load "czech")}}.

Chcete-li, aby se menu objevovalo jen v některých módech, lze i toto
zařídit.  Chcete-li například, aby se menu @samp{Czech} objevovalo pouze
v některých textových režimech, přidejte do svého @file{~/.emacs}
následující řádky:

@example
(load "czech")   ; není nutno, bylo-li již provedeno
(cz-menu-off)
(make-variable-buffer-local 'cz-menu-mode)
(add-hook 'text-mode-hook 'cz-menu-on)
(add-hook 'indented-text-mode-hook 'cz-menu-on)
(add-hook 'latex-mode-hook 'cz-menu-on)
@end example

Chcete-li naopak, aby se toto menu vyskytovalo všude, ale neobtěžovalo
vás v dired módu, přidejte tyto řádky:

@example
(load "czech")   ; není nutno, bylo-li již provedeno
(cz-menu-on)
(make-variable-buffer-local 'cz-menu-mode)
(add-hook 'dired-mode-hook 'cz-menu-off)
@end example


@node Kalendář, Vlnkování, Menu, Různé
@comment  node-name,  next,  previous,  up
@section Kalendář

@samp{emacs-czech} automaticky nastaví české prostředí a svátky pro kalendář.
Pokud chcete toto chování potlačit, použijte následující proměnné:

@table @code
@vindex cz-calendar-inhibit
@item cz-calendar-inhibit
Je-li tato proměnná nastavena na něco jiného než @code{nil}, originální
kalendářová nastavení Emacsu se nezmění.  Implicitní hodnota je @code{nil}.
@vindex cz-calendar-all-holidays
@item cz-calendar-all-holidays
Je-li tato proměnná nastavena na něco jiného než @code{nil}, budou se kromě
českých a moravských svátků vypisovay i svátky angloamerické.  Implicitní
hodnota je @code{nil}.
@end table

Případné změny těchto proměnných musíte provést ještě @emph{před} zavedením
souboru @file{czech.el}.  Jejich pozdější změny už nastavení českých
kalendářových zvyklostí nezruší.

Funguje i vytváření českých kalendářů v @TeX{}u.  Avšak pozor, do hlavičky
@TeX{}ovského zdrojáku budete muset ve většině případů přidat načtení stylu
@samp{czech.sty}.


@node Vlnkování, Obcházení problémů, Kalendář, Různé
@comment  node-name,  next,  previous,  up
@section Vlnkování

Někteří (La)@TeX{}isté občas zapomínají ve svých textech přidávat vlnky (tildy)
za neslabičné předložky.  Text s chybějícími vlnkami lze pak opravit buď pomocí
programu @samp{vlna} pana Olšáka
(@file{ftp://math.feld.cvut.cz/pub/olsak/vlna/}) nebo pomocí interaktivních
funkcí @samp{emacs-czech}:

@table @kbd
@findex cz-tex-tildes
@item M-x cz-tex-tildes
Pokouší se doplnit chybějící vlnky v aktuálním bufferu.
@findex cz-tex-tildes-region
@item M-x cz-tex-tildes-region
Pokouší se doplnit chybějící vlnky v regionu.
@end table

Ve srovnání se zmíněným programem pana Olšáka jsou funkce @samp{emacs-czech}
asi méně dokonalé.  Na druhou stranu jsou dostupné přímo z Emacsu a
interaktivně.  Jejich chování lze ovlivnit pomocí následujících proměnných:

@table @code
@vindex cz-tex-tilde-string
@item cz-tex-tilde-string
String vkládaný na příslušných místech.  Implicitní hodnota je @code{"~"} pro
@TeX{}.  Editujete-li například HTML dokumenty, je dobré v hooku pro
příslušný mód nastavit hodnotu této proměnné na @code{"&nbsp;"}.
@vindex cz-tex-tilde-regexp-pair
@item cz-tex-tilde-regexp-pair
Asociativní dvojice @code{(REGEXP . ČÍSLO)}, kde @var{regexp} je regulární
výraz určující pozice s chybějící vlnkou.  Místo, které má být nahrazeno vlnkou
(například několik mezer) musí být vyznačeno pomocí skupinových závorek
@code{\(} a @code{\)}.  Protože těchto závorek může být v regulárním výrazu
více, hodnota @var{číslo} určuje pořadí skupiny (počínaje od 1), která má být
nahrazena.  Pozor, v tomto regulárním výrazu vždy záleží na velikosti písmen.
@vindex cz-tex-env-alist
@item cz-tex-env-alist
Určuje La@TeX{}ovská prostředí, ve kterých nemá být vlnkování prováděno.  Jedná
se o asociativní seznam, jehož prvky jsou tvaru @code{(ZAČÁTEK . KONEC)}.
@var{začátek} je regulární výraz určující začátek ignorovaného prostředí.
@var{konec} je konec odpovídajícího prostředí opět v podobě regulárního výrazu
nebo v podobě seznamu regulárních výrazů a čísel.  V druhém případě se
odpovídající ukončovač prostředí získá dynamicky pospojováním prvků seznamu s
nahrazením čísel odpovídajícími skupinami z regulárního výrazu @var{začátek}.
@end table

Pokaždé, když vlnkovací funkce narazí na regulární výraz z
@code{cz-tex-tilde-regexp-pair}, zeptá se uživatele, zda má doplnit řetězec z
@code{cz-tex-tilde-string} na pozici kurzoru.  Chování je podobné jako u funkce
@code{query-replace}.  Stiskem @kbd{y} nebo mezerníku se nahrazení provede,
stiskem @kbd{n} se přeskočí na další výskyt.  Pomocí @kbd{!} lze provést
nahrazení bez dalších dotazů a @kbd{q} nahrazování ukončí.


@node Obcházení problémů, Slovenština, Vlnkování, Různé
@comment  node-name,  next,  previous,  up
@section Obcházení problémů

Někdy se stává, že externí software nefunguje jak má.  Uživatel nemá možnost
jej vyměnit, autor @samp{emacs-czech} jeho chování neovlivní.  Nezbývá než
spolehnout se na kličky a háčky --- k těmto účelům slouží proměnná
@code{cz-evils}.

@table @code
@vindex cz-evils
@item cz-evils
Seznam symbolů upozorňující na chybně se chovající software v okolí
@samp{emacs-czech}.  V současné době je brán zřetel na následující hodnoty:
@table @code
@item bad-sendmail
Existují systémy, na kterých je instalován sendmail a je zkonfigurován tak, že
automaticky překódovává maily odesílané v 8-bitovém MIME do některé ze
7-bitových variant.  Pokud nemůžete toto chování změnit jinak (např. vlastním
zásahem nebo prostřednictvím vašeho systémového administrátora), použijte tento
symbol.  8-bitové maily pak budou odesílány bez MIME hlaviček, čímž bude
nevhodné chování sendmailu potlačeno.  Na druhou stranu tyto maily budou (na
rozdíl od mailů s MIME hlavičkami) patrně chybně zobrazeny ve všech mail
readerech v prostředí Windoze.
@end table
@end table

@node Slovenština, Různé různé, Obcházení problémů, Různé
@comment  node-name,  next,  previous,  up
@section Slovenština

Je-li při zavedení @samp{emacs-czech} hodnota proměnné @code{cz-sk} něco jiného
než @code{nil}, nastaví se slovenské prostředí.

@node Různé různé,  , Slovenština, Různé
@comment  node-name,  next,  previous,  up
@section Různé různé věci

Některé další funkce:

@table @kbd
@findex cz-save-settings
@item M-x cz-save-settings
Uloží aktuální nastavení do souboru @file{~/.emacs}.  Při příštím spuštění
Emacsu by měla být konfigurace @samp{emacs-czech} podobná konfiguraci při
posledním zavolání této funkce.  Mějte na paměti, že autor programu nenese
žádnou zodpovědnost za případný nepořádek ve vašem @file{~/.emacs}, který tato
funkce nadělá.
@end table

Některé další proměnné:

@table @code
@vindex cz-verbose-level
@item cz-verbose-level
Tato proměnná udává, jak moc má být program ukecaný.  Povolené hodnoty jsou
celá čísla od 0 do 9.  0 znamená, že se nebudou vypisovat žádná hlášení kromě
fatálních chyb, při hodnotě 9 se vypisuje úplně vše.  Chcete-li, aby se vám
vypisovala právě důležitá varování, nastavte hodnotu proměnné na 5.  Implicitní
hodnota je 9.
@vindex cz-enable-keybindings
@item cz-enable-keybindings
Je-li tato proměnná nastavena na hodnotu @code{nil}, nebudou při zavedení
@samp{emacs-czech} definovány klávesové příkazy.  Implicitní hodnota je
@code{t}.
@end table

@c ***** Bugs *****

@node Nedostatky a chyby, FAQ, Různé, Top
@comment  node-name,  next,  previous,  up
@chapter Nedostatky a chyby

Program má následující nedostatky:

@itemize @bullet
@item
Česká klávesnice nefunguje v jednoznakovém interaktivním promptu (např. funkce
@w{@code{zap-to-char}}).
@item
V XEmacsu a na některých strojích i v Emacsu nefunguje přepínání klávesnic v
@samp{Isearch} módu.
@item
Na některých svérázných klávesnicích (např. Sun) některé klávesnicové funkce
nefungují.
@item
Program se ve více situacích nechová zcela korektně, je-li vkládaný znak uvozen
prefixovým argumentem.
@item
Automatické konverze nefungují při prohlížení a editaci @samp{tar} souborů.
@item
V NT verzi Emacsu nefunguje správně MIME z důvodu nestandardního kódování
znaků v tamějším prostředí.
@item
Nastavení proměnné @w{@code{cz-default-font}} na hodnotu @code{nil} neprovede
odstranění českého fontu, jak by někdo mohl očekávat.
@item
Dokumentace neprošla jazykovou úpravou.
@item
Vzezření z@TeX{}ované dokumentace je limitováno možnostmi stylu @samp{texinfo}.
@item
Při použití některých fontů se může stát, že kurzor natvrdo překrývá znaky ---
znaky přes něj
@ifinfo
"neprosvítají".
@end ifinfo
@iftex
@uv{neprosvítají}.
@end iftex
Nemám tušení, co je příčinou tohoto jevu (snad chyba ve fontu) a tudíž ani
nemám žádnou ideu, jak mu zabránit (samozřejmě kromě použití jiných fontů).
Nejedná se však o chybu mého programu.
@end itemize

@samp{emacs-czech} se umí přizpůsobit některým problémům, které jsou způsobeny
použitím nestandardně se chovajícího softwaru, @xref{Obcházení problémů}.

Nejsou mi známy žádné jiné chyby.  Pokud nějaké naleznete, můžete mě o nich
informovat, @xref{Author}.  Připojte prosím informaci o verzi
@w{@samp{emacs-czech}}, vašeho Emacsu a o prostředí, ve kterém jej používáte.
Aktuální informace jsou k dispozici na
@w{@samp{http://www.fi.muni.cz/~pdm/emacs-czech.html}}.


@c ***** Frequntly asked questions *****

@node FAQ, Index kláves, Nedostatky a chyby, Top
@comment  node-name,  next,  previous,  up
@chapter Často pokládané otázky

@itemize @bullet
@item
? Při načítání souboru @w{@file{czech.el}} se objevuje chyba o neexistujícím
souboru @w{@file{iso02-syn.el}}.

! Zkopírujte přiložený soubor @w{@file{iso02-syn.el}} do @emph{standardního}
adresáře lispovských knihoven Emacsu.
@item
? Ve svém @file{~/.emacs} mám řádek
@example
(setq @var{proměnná} @var{hodnota})
@end example
ale toto nastavení nemá žádaný účinek.

! Některá nastavení proměnných je nutno provést před provedením
@example
(load "czech")
@end example
tj. v tomto případě je správné pořadí příkazů
@example
(setq @var{proměnná} @var{hodnota})
(load "czech")
@end example
@item
? Nefunguje mi přepínání klávesnic pomocí klávesy @kbd{Pause}@*
!
@itemize @minus
@item V prostředí systému X Window:@*
Zkontrolujte, zda klávesa @kbd{Pause} skutečně dává odpovídající symbol,
například pomocí programu @samp{xev}.  Pokud tomu tak není, je nutné si přidat
patřičný řádek do souboru @file{~/.Xmodmap} (bližší informace podá manová
stránka programu @samp{xmodmap}).
@item Na znakovém terminálu:@*
Zde je situace trochu složitější.  Znakové terminály nevrací symbol
@samp{Pause}, nýbrž sekvenci symbolů obvykle uvozenou znakem @samp{Escape}.
Tuto sekvenci je nutno nějakým způsobem zjistit a poté jí přiřadit funkci
přepínání klávesnice.  Například na linuxovské konzole může fungovat
@example
(global-set-key "\e[P" 'cz-keyboard-mode)
@end example
@end itemize
@item
? Jsem začínajícím uživatelem Emacsu.  Kde mohu získat o Emacsu, jeho funkcích
a konfiguraci více informací?

! Možností je několik:
@itemize @minus
@item
Emacs obsahuje tutoriál dostupný z menu @samp{Help} položkou @samp{Emacs
Tutorial} nebo kombinací kláves @kbd{C-h t}.  Tento tutoriál je poněkud hůře
stravitelný, ale obsahuje všechny základní informace a je ihned po ruce.  Pěkný
úvod do Emacsu je součástí linuxovské uživatelské přiručky dostupné na většině
linuxovských ftp.
@item
Emacs obsahuje kompletní dokumentaci v elektronické podobě přístupnou z menu
@samp{Help} položkou @samp{Browse Manuals} nebo kombinací kláves @kbd{C-h i}.
Je velmi obsáhlá a lze v ní najít veškeré uživatelské informace.  Tuto
dokumentaci lze i zTeXovat a vytisknout --- originální Texinfo soubor je
součástí distribuce Emacsu.  Pokud chcete i trochu programovat v Emacs LISPu,
lze si přečíst úvodní příručku @w{@file{emacs-lisp-intro}}; referenční
příručkou je @w{@file{elisp-manual}}.  Všechny tyto věci jsou dostupné na řadě
ftp serverů v adresářích @file{gnu}.  Originální zdroj je
@w{@samp{ftp://prep.ai.mit.edu/pub/gnu/}}.
@item
Existuje několik diskusních skupin o Emacsu, zejména:
@display
gnu.emacs.help
comp.emacs
gnu.emacs.source
gnu.emacs.announce
@end display
Ve skupině @w{@samp{gnu.emacs.help}} jsou publikovány frequently asked
questions about Emacs, ze kterých se lze dozvědět více zajímavých věcí (a
jejichž, většinou mírně zastaralá, verze je dostupná z menu
@w{@samp{Help/Emacs FAQ}}.
@end itemize
@item
? Stále si nevím rady.  Co mám dělat?

! Ještě jednou si dobře přečtěte tuto dokumentaci.  Pokud to nepomůže, zkuste
se zeptat nějakého kolegy nebo se podívat na
@w{@samp{http://www.fi.muni.cz/~pdm/emacs-czech.html}}.  Pokud ani to nepomůže
nebo není možné, zkuste se obrátit na adresu @w{@samp{pdm@@fi.muni.cz}}.
Popište však váš problém pokud možno co nejpodrobněji a nejsrozumitelněji.
Nezapomeňte připojit informaci o verzi @w{@samp{emacs-czech}}, vašeho Emacsu a
prostředí, ve kterém jej používáte.
@end itemize


@c ***** Indexy *****


@node Index kláves, Index proměnných a funkcí, FAQ, Top
@comment  node-name,  next,  previous,  up
@chapter Seznam klávesových příkazů

@printindex ky


@node Index proměnných a funkcí, Čeština a UN*X, Index kláves, Top
@comment  node-name,  next,  previous,  up
@chapter Seznam proměnných a funkcí

Zde je seznam všech proměnných, které lze použít pro konfiguraci, a dále
všech interaktivních a některých neinteraktivních funkcí programu.

Seznam funkcí:

@printindex fn

Seznam proměnných:

@printindex vr


@c ***** O češtině v Unixu *****

@node Čeština a UN*X, Pojďme psát česky!, Index proměnných a funkcí, Top
@comment  node-name,  next,  previous,  up
@chapter Čeština a UN*X

Na tomto místě již odkazy na balíky podporující češtinu nenajdete.  V poslední
době se konečně začaly více rozvíjet aktivity směřující k počeštění Linuxu,
existuje několik zdrojů na WWW a není v možnostech autora @samp{emacs-czech}
ani účelem dokumentace k tomuto balíku udržovat aktuální přehled o jejich
stavu.  Místo toho konzultujte dokument @samp{Czech HOWTO} poskytující návody k
počeštění Linuxu, který je k nalezení na
@file{ftp://ftp.muni.cz/pub/linux/local/czech-howto/}.


@c ***** Politika *****

@node Pojďme psát česky!, Author, Čeština a UN*X, Top
@comment  node-name,  next,  previous,  up
@ifinfo
@chapter Přežije "cestina" rok 2000?
@end ifinfo
@iftex
@c Nemá to rádo normální uvozovky v moving argumentu
@chapter Přežije @uvv{cestina} rok 2000?
@end iftex

@emph{(Protože mi bylo několikrát vyčteno, že nemám dostatek taktu, doporučuji
tuto sekci přeskočit. --- Pozn. autora.)}

Jsem asi jen jeden z mála, komu vadí, že většina lidí posílá
@ifinfo
"české"
@end ifinfo
@iftex
@uv{české}
@end iftex
maily bez akcentů a že ve všech českých diskusních skupinách se diskutuje tímto
způsobem.  Nemohu si však pomoci --- je pro mne naprosto nepochopitelné,
jaktože na konci dvacátého století nejsme schopni komunikovat ve své
mateřštině.

Nejde přitom jen o problém čistoty jazyka.  Zásadní problém vidím v tom, že
bezakcentové texty jsou hůře čitelné, mnohdy matoucí a někdy dochází i ke
ztrátě informace
@ifinfo
("jak se ten pán vlastně jmenuje?").
@end ifinfo
@iftex
@uv{jak se ten pán vlastně jmenuje?}.
@end iftex
Nicméně i
@ifinfo
"estetické"
@end ifinfo
@iftex
@uv{estetické}
@end iftex
hledisko je nezanedbatelné.

Jsem nucen konstatovat, že jsem přístupem většiny lidí k tomuto problému
naprosto znechucen.  Přestalo mě definitivně bavit bojovat s ignorancí, leností
a ještě ledasčím jiným.  Inu, kdo chce kam, pomozme mu tam.  Máme, co chceme.
Patrně skončíme jako národ pologramotných hackerů, na něž si budou vysmátí
Windozisti ukazovat prstem.


@c ***** O autorovi ******

@node Author,  , Pojďme psát česky!, Top
@comment  node-name,  next,  previous,  up
@ifinfo
@chapter Author of this program

My name is Milan Zamazal.  I am a student of computer science at Masaryk
University in Brno.  E-mail: @w{@samp{pdm@@fi.muni.cz}}.

I would like to thank especially the following people:

@itemize @bullet
@item
Jaroslav Šnajdr, who contributed and consulted some XEmacs parts.
@item
David Šauer, who contributed Czech calendar and holidays code.
@item
Tibor Šimko for contribution to Slovak support.
@item
Michal Konečný, who made the simple Czech keyboard package from which I got
the first basic ideas how to make Czech keyboard for Emacs.
@item
Jan "Yenya" Kasprzak, the famous UN*X guru and the main author of the
@samp{cstools} package; he answers a lot of my UN*X questions and gave me some
ideas.
@item
Petr Olšák for the well documented program @samp{vlna} and other useful
programs supporting Czech.
@item
Aleš Čepek for various consulting.
@item
All other, who supported development of @samp{emacs-czech} in any way.
@end itemize

Feel free to send me bugs, comments, improvements, suggestions, and your
opinions on this package.
@end ifinfo
@iftex
@chapter Autor programu

Jmenuji se Milan Zamazal.  Jsem studentem matematické informatiky na Masarykově
univerzitě v Brně.  E-mail: @w{@samp{pdm@@fi.muni.cz}}.

Chtěl bych na tomto místě poděkovat zejména následujícím lidem:

@itemize @bullet
@item
Jaroslavu Šnajdrovi, který přispěl kódem a radami k částem týkajícím se
XEmacsu.
@item
Davidu Šauerovi, který přispěl počeštěním kalendáře a svátků.
@item
Tiboru Šimkovi, který dodal definice pro slovenské prostředí.
@item
Michalu Konečnému, který vytvořil jednoduchý elispovský prográmek pro českou
klávesnici, ze kterého jsem načerpal první ideje, jak českou klávesnici
v Emacsu implementovat.
@item
Janu @uv{Yenyovi} Kasprzakovi, známému UN*Xovému expertovi a autoru balíku
@samp{cstools}, za všestrannou spolupráci v oblasti poznávání UN*Xu a některé
myšlenky.
@item
Petru Olšákovi za dobře dokumentovaný program @samp{vlna} a další užitečné
programy pro podporu češtiny.
@item
Aleši Čepkovi za konzultaci ohledně balíku a dokumentace.
@item
Všem ostatním, kteří práci na @samp{emacs-czech} nějakým způsobem podpořili.
@end itemize

Informace o chybách, komentáře, vylepšení, návrhy a názory na tento program
jsou vítány.
@end iftex


@c -------****** Závěr *****-------

@contents
@bye


@c Local Variables:
@c mode: texinfo
@c cz-keyboard-mode: t
@c abbrev-mode: t
@c End:

