Hlavní navigace

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

Jan Kohout

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.

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

Našli jste v článku chybu?
Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Vitalia.cz: Poznáte poctivé suroviny na pečení cukroví?

Poznáte poctivé suroviny na pečení cukroví?

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Vitalia.cz: I církev dnes vyrábí potraviny

I církev dnes vyrábí potraviny

120na80.cz: Jmelí je více léčivé než jedovaté

Jmelí je více léčivé než jedovaté

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Podnikatel.cz: Chaos u EET pokračuje. Jsou tu další návrhy

Chaos u EET pokračuje. Jsou tu další návrhy

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Měšec.cz: mBank cenzuruje, zrušila mFórum

mBank cenzuruje, zrušila mFórum