LinuxovΘ noviny | B°ezen 1998 | ||
| |||
Posledn∞ jsme se seznßmili se zßkladnφmi dokumenty popisujφcφmi Emacs a poskytujφcφmi u╛ivateli podrobnou nßpov∞du. Tentokrßt se zam∞°φme na programy, kterΘ kvalitnφ info dokumentacφ nedisponujφ. Povφme si takΘ n∞co o klßvesov²ch p°φkazech a zastavφme se u p°φkaz∙ pro rychlΘ zφskßnφ nßpov∞dy. Dokumentace k program∙mMnohdy se stßvß, ╛e narazφte na zajφmav² balφk, kter² v╣ak nemß vlastnφ info dokumentaci. Co potom?╪ada emacsovsk²ch program∙ definuje n∞jakΘ m≤dy, a╗ u╛ hlavnφ nebo vedlej╣φ. V p°φpad∞ takov²ch program∙ m∙╛ete vyu╛φt p°φkazu C-h m, kter² zobrazφ dokumentaci pro v╣echny momentßln∞ aktivnφ m≤dy. P°itom popis aktivnφho hlavnφho m≤du obvykle naleznete a╛ na konci v²pisu dokumentace, musφte tedy zobrazenou nßpov∞dou trochu zalistovat, hledßte-li informaci prßv∞ o hlavnφm m≤du. Naprostß v∞t╣ina program∙ obsahuje struΦn∞j╣φ Φi obsßhlej╣φ popis v ·vodnφch komentß°φch ve svΘm zdrojovΘm textu. Obvykle tam naleznete informaci o instalaci, zßkladnφ nßvod k pou╛itφ a popis nejd∙le╛it∞j╣φch konfiguraΦnφch prom∞nn²ch. Pokud se zdrojov² k≤d nachßzφ n∞kde ve stromu emacsovsk²ch adresß°∙, naleznete jej nejsnßze pomocφ p°φkazu M-x locate-library (tento p°φkaz m∙╛e b²t tΘ╛ u╛iteΦn² v p°φpad∞, kdy si nejste jisti, zda se vßm nßhodou mφsto instalovanΘ nejnov∞j╣φ verze nezavßdφ n∞jak² zapomenut² exemplß° danΘho programu). Pokud neznßte ani jmΘno programovΘho souboru a znßte nap°φklad pouze jmΘno jeho hlavnφ funkce, zkuste C-h f. Tento p°φkaz krom∞ popisu funkce vypφ╣e i jmΘno souboru, ze kterΘho byla naΦtena. To m∙╛e b²t spojeno s urΦit²mi obtφ╛emi:
V druhΘm p°φpad∞ lze stßle je╣t∞ pou╛φt tags. Mßte-li Emacs instalovßn v adresß°i directory, vygenerujete p°φkazem
rm -f TAGS find directory -name '*.el' -print | xargs etags -aindex v╣ech elispovsk²ch prom∞nn²ch a funkcφ definovan²ch v distribuci Emacsu (musφte mφt ov╣em samoz°ejm∞ instalovßny zdrojovΘ *.el soubory). Kdykoliv pak hledßte n∞jakou funkci nebo prom∞nnou ze standardnφ distribuce Emacsu, naleznete ji velmi rychle p°φkazem M-.. Pozor, n∞kdy musφte pro nalezenφ sprßvnΘho v²skytu aplikovat hledßnφ opakovan∞ prost°ednictvφm C-u M-.. ZdrojovΘ texty jsou zajφmavΘ nejen z hlediska ·vodnφch komentß°∙. PokroΦilej╣φ u╛ivatel si v nich najde zajφmavΘ defvary. Pro u╛ivatele vlßdnoucφ (na prvnφ pohled magickou) schopnostφ programovat v Elispu jsou pak zdrojovΘ texty prav²m pokladem. Lze v nich nalΘzt nesΦetnΘ mno╛stvφ tip∙ a zajφmavostφ a nez°φdka do nich Φlov∞k nahlΘdne prßv∞ proto, aby zjistil "jak se n∞co d∞lß". Programujete-li v Elispu a nem∙╛ete najφt nßvod pro n∞jakou v∞c po manußlech, zkuste si vzpomenout, kde jste odpovφdajφcφ chovßnφ ji╛ vid∞li. Nßvod pak najdete ve zdrojov²ch textech p°φslu╣nΘho programu. (Pro neznalce Elispu to celΘ m∙╛e znφt jako pokus o vtip, ale skuteΦnost je jinß. Elisp je velmi Φiteln² jazyk a nalΘzt n∞co v jeho zdrojov²ch textech je obvykle daleko snaz╣φ, ne╛ si mo╛nß myslφte.) Vra╗me se zpßtky k b∞╛nΘmu u╛ivateli. M∙╛e se stßt, ╛e narazφte na rozsßhl² balφk se ╣patnou dokumentacφ (jako je nap°φklad w3) a pot°ebujete jej zkonfigurovat. Pokud autor disponuje alespo≥ elementßrnφ mφrou ·cty k u╛ivateli, tak dokumentuje p°inejmen╣φm konfiguraΦnφ prom∞nnΘ pomocφ customize. (Pokud nevφte, co to customize je, nahlΘdn∞te do menu "Help" a zvolte odpovφdajφcφ polo╛ku; pozor, standardn∞ je p°φtomna a╛ v Emacsu 20.) Na prvnφ pohled se m∙╛e zdßt, ╛e customize je zde pouze pro u╛ivatele, kte°φ si neumφ zkonfigurovat Emacs editacφ souboru ~/.emacs. Ve skuteΦnosti v╣ak mß tento mechanismus i v²znamnou vedlej╣φ funkci - naleznete zde toti╛ hierarchicky uspo°ßdanΘ konfiguraΦnφ prom∞nnΘ s popisem a mo╛nostφ je ihned nastavit a p°φpadn∞ i ulo╛it. A pak u╛ vlastn∞ ╛ßdnou dal╣φ dokumentaci ke konfiguraci balφku podporujφcφho customize nepot°ebujete! PouΦenφ pro tv∙rce elispovsk²ch program∙:
Klßvesy╚ast²m problΘmem je vyznat se v pom∞rn∞ poΦetn²ch klßvesov²ch kombinacφch.NejΦast∞j╣φ otßzkou b²vß: "Co tato klßvesovß zkratka vlastn∞ d∞lß?" Nechcete-li b²t obt∞╛ovßni dlouh²mi v²klady, pou╛ijte C-h c. To se hodφ zejmΘna v p°φpad∞, kdy si chcete p°ipojit funkci t°eba na n∞jakou funkΦnφ klßvesu a pot°ebujete znßt jejφ jmΘno pro zapsßnφ odpovφdajφcφ definice do ~/.emacs. Pokud chcete zφskat kompletnφ nßpov∞du k funkci danΘ klßvesy, pou╛ijte C-h k. Pokud naopak nevφte, pomocφ kter²ch klßves lze n∞jakou funkci vyvolat, m∙╛ete zkusit:
╚asto se tΘ╛ stßvß, ╛e n∞co necht∞n∞ zmßΦknete a ono to provede zajφmav² p°φkaz, kter² dosud neznßte. Rßdi byste v∞d∞li, kter² p°φkaz to byl, proto╛e je vßm ihned jasnΘ, ╛e jej te∩ budete naprosto nezbytn∞ a opakovan∞ pot°ebovat. Pom∙╛e vßm p°φkaz C-h l, kter² zobrazφ poslednφch 100 stisknut²ch klßves. Mimochodem, vφte, proΦ nenφ dobrΘ odchßzet od neuzamΦenΘho Emacsu, ve kterΘm jste se prßv∞ p°ihlßsili na vzdßlen² poΦφtaΦ se zadßnφm hesla? N∞kte°φ lidΘ majφ vyvinut∞j╣φ smysl pro systematiΦnost. Ti se pak s nßhodn²m bouchßnφm do klßvesnice nespokojφ a cht∞jφ vid∞t v╣echno najednou. Pro ty je ideßlnφ p°φkaz C-h b. Ano, je to trochu p°ehnanΘ, ani tento p°φkaz nem∙╛e zobrazit spoΦetn∞ mnoho p°φkaz∙ Emacsu, tak╛e zobrazφ pouze aktußln∞ dostupnΘ klßvesovΘ kombinace. Ty jsou samoz°ejm∞ zßvislΘ na momentßln∞ aktivnφch hlavnφch a vedlej╣φch m≤dech. Pokud vßs zajφmajφ pouze p°φkazy zaΦφnajφcφ urΦit²m prefixem, m∙╛ete si je nechat vypsat zadßnφm prefixu nßsledovanΘho stiskem C-h. Nap°φklad p°φkazy pro prßci s registry, zßlo╛kami a obdΘlnφkov²mi bloky si vypφ╣ete pomocφ C-x r C-h. TypickΘ p°φkazy aktußlnφho hlavnφho m≤du pak pomocφ C-c C-h. Prom∞nnΘ a funkceZejmΘna p°i editaci souboru ~/.emacs Φi programovßnφ v Elispu vyu╛ijete p°φkazy C-h f a C-h v zobrazujφcφ dokumentaci zadanΘ funkce (p°φpadn∞ makra) nebo prom∞nnΘ. Neocenitelnou v²hodou t∞chto p°φkaz∙ je to, ╛e poskytujφ p°φstup k nejaktußln∞j╣φ a obvykle i nej·pln∞j╣φ dokumentaci k b∞╛n²m objekt∙m. Pokud mßte p°i programovßnφ v Elispu notorickΘ problΘmy zapamatovat si argumenty funkcφ, pou╛ijte "eldoc-mode". Tip: P°φkaz C-h f v∞t╣inou nabφzφ identifikßtor z poslednφho volßnφ funkce p°ed kurzorem, nikoliv slovo pod kurzorem, m∙╛ete si tedy mnohdy u╣et°it pohyb kurzoru.Jednφm z nejmocn∞j╣φch p°φkaz∙ nßpov∞dy Emacsu je apropos. Apropos p°φkazy vßm umo╛nφ vyhledat funkci nebo prom∞nnou podle regulßrnφho v²razu. Zadßte regulßrnφ v²raz a Emacs vßm vypφ╣e v╣echny funkce a prom∞nnΘ, kterΘ znß a kterΘ tomuto v²razu odpovφdajφ. Kliknutφm nebo stiskem RET na danΘ polo╛ce z vyhledanΘho seznamu se vßm zobrazφ dokumentace k odpovφdajφcφ funkci nebo prom∞nnΘ. Apropos existuje ve t°ech zßkladnφch variantßch:
Na prvnφ pohled nemusφ b²t z°ejmΘ, o jak mocn² nßstroj se jednß. Kdo se ale nauΦφ apropos efektivn∞ pou╛φvat, u╣et°φ si spoustu hledßnφ v manußlech a ve zdrojov²ch textech. Nap°φklad pot°ebujete obrßtit po°adφ °ßdk∙ v souboru. StaΦφ si uv∞domit, ╛e s obrßcen²m po°adφm by mohlo mφt n∞co spoleΦnΘho anglickΘ slovo "reverse". Zjevn∞ by se m∞lo jednat o u╛ivatelsk² p°φkaz, tak╛e zadßte C-h a reverse RET a ve zobrazenΘm v²sledku ji╛ odpovφdajφcφ funkci snadno naleznete. Nebo provßdφte sofistikovanou konfiguraci Gnus a pot°ebujete pro svΘ ·Φely najφt n∞jak² vhodn² hook. Pou╛ijete M-x apropos ^\(gnus\|message\|nn\).*hook RET stoprocentnφ jistotu, ╛e p°ed sebou vidφte kompletnφ seznam v╣ech hook∙, kterΘ m∙╛ete pou╛φt. Nebo vßs zajφmajφ mo╛nosti BibTeX m≤du. Aplikujete tedy C-u C-h a ^bibtex RET. (Tento p°φklad je pon∞kud um∞l², spφ╣e byste na tomto mφst∞ pou╛ili customize.) Pozor na malou zßludnost: N∞kterΘ programy jsou zavßd∞ny prost°ednictvφm autoload mechanismu a╛ p°i vy╛ßdßnφ jejich funkcφ. Do doby jejich zavedenφ ╛ßdn² z p°φkaz∙ pro popis funkce nebo prom∞nnΘ a tφm pßdem ani apropos nevφ o existenci v∞t╣iny funkcφ a prom∞nn²ch definovan²ch v tomto balφku. Chcete-li proto hledat nap°φklad n∞co t²kajφcφ se Gnus, je dobrΘ nejprve Gnus spustit a chvφli s nimi pracovat, proto╛e teprve potom je naΦtena v∞t╣ina programov²ch soubor∙ Gnus a nebudete se marn∞ sna╛it najφt dosud nezavedenou prom∞nnou. TotΘ╛ platφ pro p°φklad s BibTeXem - p°ed aplikacφ apropos nejprve otev°ete libovoln² (t°eba prßzdn²) .bib soubor. PouΦenφ pro programßtory v Elispu:
P°φ╣t∞V zßv∞reΦnΘ Φßsti tohoto miniserißlu si °ekneme, jak hledat programy slou╛φcφ k ╛ßdanΘmu ·Φelu, kde hledat dal╣φ pomoc a takΘ malinko poradφme vφajist∙m.![]()
|