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.
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“.