Emacs pro mírně pokročilé (11): Kalendář a jiné kratochvíle

21. 6. 2001
Doba čtení: 6 minut

Sdílet

Ilustrační obrázek
Autor: Depositphotos – stori
Ilustrační obrázek
Zpestření a rozšíření seriózní práce nabízí prostředí editoru Emacs v podobě mnoha rozličných her a více či méně užitečných pomůcek. V posledním díle seriálu věnujícímu se Emacsu si o některých z nich povíme.

Kalendář / Diář

Mezi velmi užitečné pomůcky patří kalendář
(resp. diář), který dovoluje zaznamenávat již uplynulé či nastávající
události. Kalendář vyvoláme jednoduše pomocí M-x calendar. Emacs zobrazí buffer pojmenovaný
*Calendar*, v němž jsou zobrazeny tři po sobě jdoucí
měsíce (aktuální, minulý a následující), přičemž kursor se nachází na
aktuálním dni. Předřazením numerického argumentu a zadáním měsíce a
roku při startu kalendáře se zobrazí takto zadaný měsíc a měsíce jemu
předcházející a následující. Funkce kalendáře lze kromě níže popsaných
klávesových zkratek poměrně snadno ovládat pomocí myši. Kalendář
opustíme klávesou  q.

Pohyb po kalendáři je v zásadě možný po logických blocích
(jednotkách), jakými jsou den, týden, měsíc nebo rok. Zkratky
C-f, resp. C-b slouží pro pohyb po
jednotlivých dnech vpřed, resp. vzad. Podobně týdny C-n,
resp. C-p pohybují kursorem o týden vpřed,
resp. zpět. Skoky po měsících, resp. rocích jsou namapovány na
složené, resp. hranaté závorky za současného držení klávesy
Control. Mnemotechnické připomenutí těchto
„kroků“ je zkušenějším uživatelům Emacsu jistě zřejmé. Kromě
pohybu po těchto logických časových jednotkách lze v kalendáři
odskočit přímo na konkrétní datum zadáním g d (funkce
calendar-goto-date) a příslušného data. Návrat na
aktuální dnešní datum lze snadno provést stiskem klávesy s tečkou.

Dále prostředí kalendáře umožňuje snadný skok na začátky,
resp. konce logických časových úseků, tj. týdne, měsíce či
roku. Začátek týdne ( C-a) a konec týdne
( C-e) představuje analogii s pohybem na začátek a konec
řádky, jak je jistě pokročilým uživatelům Emacsu známo. Podobně
začátek a konec měsíce jsou namapovány na stejné klávesy jako pohyb po
větách. Odskoky na začátky a konce let jsou namapovány na shodné
klávesy jako běžné přesuny kursoru na začátek a konec bufferu.
Kalendář při pohybu po datech automaticky roluje. Rolovat kalendářem
lze také „ručně“.

Kromě samotného zobrazování dat (a jejich rozpis podle dnů v týdnu)
poskytuje kalendář mnoho zajímavých funkcí. Lze například
„vytisknou“ příslušnou část kalendáře do LaTeXovského kódu a
po zpracováním LaTeXem jej skutečně vytisknout. Kalendář
Emacsu dále například umí zobrazovat různé svátky,

na základě zadané zeměpisné šířky a délky zobrazovat východy a západy
slunce nebo zobrazovat fáze měsíce. Umožňuje také konverzi mezi
různými, často velmi exotickými, druhy kalendářů. Jeho patrně
nejsilnější zbraní je zaznamenávání a plánování vlastních událostí do
diáře.

Jedná se vlastně o zaznamenávání poznámek o schůzkách či podobných
událostech do samostatného souboru (diary file) předem daného formátu,
se kterým umí kalendář Emacsu pracovat. Standardně jsou záznamy
ukládány do souboru ~/.diary. Tento soubor lze editovat
buď ručně, nebo prostřednictvím příkazů kalendáře. Formát souboru
obsahuje vždy datum a příslušný záznam. Formát data je velmi
různorodý; lze například mj. zadávat i cyklická data, data podle dnů v
týdnu apod.

Následně lze zobrazovat záznamy v diáři, např. klávesou d
pro daný den; klávesou s zobrazíme všechny záznamy v
diáři. Dále lze označit všechny dny obsahující nějaký záznam,
vytisknout záznamy z diáře na tiskárnu nebo dokonce poslat mailem.
(Tento proces lze navíc pomocí cronu předáním příslušné dávky
editoru zautomatizovat.) Vložení záznamu do diáře v prostředí
kalendáře provedeme pomocí i d (funkce
insert-diary-entry), podobně vložíme záznam pro daný den
v týdnu, měsíci či roce (klávesa i je vždy následována
počátečním písmenem odpovídajícího anglického slova).

Kromě „obyčejných“ záznamů můžeme do diáře vkládat záznamy
„zvláštní“. Jejich odlišnost spočívá v tom, že neoznačují
přímo konkrétní den, ale pomocí lispovského výrazu označují množinu
dat. Nejčastěji lze takto vkládat data narození ( i a),
ale také údaje pro celý blok ( i b) nebo nějaké cyklické
záznamy ( i c). Zajímavou, i když pro někoho možná otravnou
funkcí jsou upozornění na schůzky (přesněji na záznamy obsahující mimo
samotného data i čas) ve stavové řádce (mode line). K aktivace této
vymoženosti je nutné mít zapnuté zobrazování času (např. M-x display-time), navíc je třeba přidat k diary-hook
funkci  appt-make-list.

Další užitečnou pomůckou (která je standardně součástí kalendáře až od
verze GNU Emacsu 21, ale lze ji provozovat i na verzi
nižší) je sledování stráveného času (time tracking). Získat ji lze
například na domovské
stránce
autora. Počítání stráveného času na daném projektu
zapneme pomocí M-x timeclock-in a zadáním názvu
projektu. (Všechny příkazy tohoto módu lze namapovat například
na zkratky s prefixem C-x t.) Přerušení či zastavení práce
na daném projektu zadáme pomocí M-x timeclock-out. Během,
ale i po skončení sledování času stráveného na jednotlivých projektech
lze generovat výstup ( M-x timeclock-generate-report),
zobrazovat zbývající pracovní čas ( M-x timeclock-workday-remaining-string) apod.

Kratochvíle

Jelikož se jedná o poslední díl seriálu, zmíníme se také o několika
hrách či zábavných funkcích Emacsu. Podle distribuce a podle verze
Emacsu je často k dispozici mnoho knihoven, které poskytují zpestření
či rozptýlení při práci. Mnoho jich lze také nalézt na internetu a
mohou být zdrojem inspirací při programátorských pokusech s
ELispem.

Skutečně znuděným uživatelům nabízí Emacs „odpočinek“ při
pohledu na rekursivní přeskupování hanojských věží (po zadání
M-x hanoi. Poněkud aktivnější zapojení bude vyžadovat
například hra „Go Moku“ (spustíme ji M-x gomoku), v Čechách je tato hra známa jako
„piškvorky“. M-x blackbox, M-x mpuz jsou hádanky. V případě blackboxu je cílem hry nalézt
čtyři skryté kuličky vysláním paprsku do černé skříňky. Pro paprsek
nastane jedna z možností: 1) projde černou skříňkou beze změny 2)
zasáhne kuličku a bude pohlcen 3) vychýlí se a opustí skříňku 4)
vychýlí se, aniž by se dostal dovnitř skříňky. Paprsek se vysílá
stiskem klávesy <SPC> a jednotlivé pokusy o vyslání
paprsků jsou číslovány, paprsky, které zasáhnou kuličku, jsou označeny
písmenem H a paprsky, který nejsou do skříňky vůbec
vpuštěny, jsou označeny písmenem R. Máme-li dostatek
informací, můžeme se pokusit umístit kuličky a klávesou
<RET> se přesvědčit o správnosti našeho
tipu. Podrobnější instrukce lze nalézt v dokumentaci.

Druhá zmiňovaná hádanka je algebraická rovnice s násobením, kde jsou
místo číslic písmena. Cílem je na co nejmenší počet pokusů nalézt
číslice tak, aby rovnost byla splněna.

Krátit chvíli lze například při M-x dunnet, textové
verzi dobrodružné hry. „Léčit“ se lze návštěvou u
lékaře ( M-x doctor). V tomto případě se jedná o jednu z
implementací historického programu Eliza. Dostupný
je většinou také velmi populární M-x tetris. Zahrát si
můžete i ping pong ( M-x pong), který je známý
jako jedna z „televizních“ her, nebo deskovou hru
M-x solitaire. Jejím cílem je „přeskákat“ všechny kameny tak, aby jich na hrací ploše zbylo co nejméně. Pro GNU Emacs
existuje celá řada „lokálních“ her, ale i her, které je možné
hrát prostřednictvím sítě internet se vzdálenými spoluhráči.

Školení Kubernetes

Mnoho dalších více či méně užitečných knihoven lze získat v rozličných
archivech, odkaz na seznam
některých z nich lze nalézt i na domovské stránce GNU Emacsu. Popis
funkcí kalendáře ani popis her není úplný a má sloužit zejména jako
návod při prvním kontaktu s těmito rozšířeními. Úplný popis je vždy
nutné hledat v příslušném manuálu nebo dokonce přímo ve zdrojových
kódech. Tolik tedy seriál, který měl rozšířit obzory uživatelům Emacsu
a podnítit větší zájem o tento „více než editor“.