Emacs? Help! (1.část)
                            -=-=-=-=-=-=-=-=-=-=-=-

      "[In 'Doctor' mode], I spent a good ten minutes telling Emacs what I
      thought of it. (The response was, 'Perhaps you could try to be less
                                  abusive.')"
                                 -- Matt Welsh

                          Milan Zamazal, 9.února 1998

          Emacs je oblíbeným pracovním prostředím mnoha uživatelů převážně
      unixových  systémů.  Avšak jen překvapivě  málo uživatelů  Emacsu je
      zběhlých v jedné z jeho nejsilnějších stránek -- nesmírně  rozsáhlém
      a mocném  dokumentačním  systému.  Mnozí  ani  neví, co vše a jak je
      v Emacsu dokumentováno, jiní zase dostanou z dokumentace hrůzu poté,
      co  poprvé  shlédnou  rozsah  referenční  příručky.  Přitom  vyhýbat
      se  dokumentaci   Emacsu  znamená   ochudit  se  o  mnoho  informací
      a o příjemný pocit z objevování fascinujícího.  Několikadílný článek
      o dokumentačních  schopnostech Emacsu by měl ukázat, že dokumentační
      systém Emacsu není nijak hrozivý a že mnohdy existuje řada cest, jak
      v něm žádanou informaci  nalézt. Snad také některé čtenáře přesvědčí
      o pozoruhodnostech  dokumentace Emacsu natolik, že sebe i své kolegy
      napříště spíše než triviálním  dotazem  potěší  sdělením  zajímavého
      tipu, na který  narazili  předchozí  večer  při  napínavém  průzkumu
      dokumentace.

      Tento miniseriál byl psán se třemi základními cíly:

      1)  Seznámit uživatele s nápovědními a dokumentačními  funkcemi,
          o kterých možná dosud nevěděli nebo neznali  některé  jejich
          vlastnosti, a umožnit jim tak používat Emacs efektivněji než
          doposud.

      2)  Prezentovat     příklad  z   hlediska     uživatele    dobře
          dokumentovaného  programu.  Dokumentační  systém Emacsu může
          být pro tvůrce  jiných  programů  dobrým  zdrojem  inspirace
          a  ukázkou  principů  umožňujících   vytvářet   interaktivní
          dokumentační  systém,  který je z hlediska  uživatele  mocný
          a z hlediska tvůrce dokumentace snadno zvládnutelný.

      3)  Připomenout autorům malých i větších elispovských  programů,
          že  by  měli  při   programování   pro   Emacs   vždy   dbát
          i na dokumentační stránku a psát své programy tak, aby dobře
          zapadly do.celého dokumentačního systému.

          Článek je psán se zřetelem na Emacs 20,  většina  zde  uvedených
      faktů však platí i pro Emacs 19 a XEmacs. V prvním  díle se zaměříme
      na příručky a dokumentace k programům jako celku.

                                Poprvé v Emacsu

          Emacs  vede  uživatele  okamžitě od svého  spuštění,  začátečník
      tedy  pro práci s Emacsem  nepotřebuje  žádnou  předchozí  přípravu.
      Již úvodní obrazovka obsahuje několik podstatných  informací (určitě
      jste si je už aspoň jednou  přečetli, že?). Kdo prakticky  zužitkuje
      informaci jak spustit  tutoriál, naučí se z něj základnímu  ovládání
      krok po kroku a ušetří si tím některé  problémy. Bývá častou  chybou
      začátečníků,  že  si  tutoriál  nepřečtou v mylném  domnění,  že tím
      uspoří  čas. Tutoriál  existuje i v českém  překladu,  naleznete jej
      na ftp://ftp.fi.muni.cz/pub/localization/emacs/emacs-20/.

          Kromě  úvodní  obrazovky je na.první  pohled  patrnou  nápovědou
      menu.  Je  obecně   rozšířeným   omylem,  že  menu  slouží  primárně
      k pohodlnějšímu  zadávání  příkazů  myší. To samozřejmě není pravda,
      však  také  u  položek   menu,  které  mají  klávesový   ekvivalent,
      odpovídající  klávesovou  zkratku  naleznete. Ve skutečnosti je účel
      menu  dvojí:  umožnit  snazší  výběr  z  dynamického  seznamu  (jako
      je  například  seznam  bufferů  nebo  odkazů na texty v kill  ringu)
      a usnadnit  uživateli  orientaci ve funkcích  programu.  Druhý  účel
      se vám asi zdá samozřejmý,  ale  přesto na něj  neustále  pamatujte.
      Až se  budete  pídit  po  nějakém  příkazu,  měli  byste  si v první
      řadě  prohlédnout  menu. To platí  zejména  pro  komplexní  programy
      s komplexními  menu,  jako jsou třeba  Gnus. Může se to ovšem  hodit
      i v banálnějších  případech.  Pokud  například  chcete  porovnat dva
      soubory  a  neuspokojuje  vás  nepřehledný  výstup   programu  diff,
      naleznete  odpovídající  funkci Emacsu během několika  vteřin v menu
      (zkuste  si  to,  při  tipování  správných  menu  nezapomínejte,  že
      většina věcí v Emacsu je organizována  přísně  logicky podle pečlivě
      promyšlených pravidel).

                                      Info

          Základním   zdrojem   dokumentace  k  Emacsu   je   pochopitelně
      referenční   manuál.   Tento  manuál  je  stejně  jako  většina  GNU
      dokumentace  napsán ve  formátu  Texinfo.  Tento  formát,  který  se
      lze snadno  naučit, byl vytvořen  speciálně pro tvorbu  dokumentace.
      Umožňuje z jednoho zdrojového dokumentu  vytvořit online dokumentaci
      i tištitelný  dokument.  Online  dokumentaci lze vytvořit  programem
      makeinfo nebo příkazy  Emacsu. Tyto dva postupy nejsou ekvivalentní,
      obvykle  dáte asi  přednost  programu  makeinfo,  protože je výrazně
      rychlejší a lépe pracuje s novými verzemi Texinfo formátu. Výstup si
      pak lze prohlížet  přímo v Emacsu  pomocí info  systému, o kterém se
      zmíníme níže. Výstup pro tisk je produkován programem TeX a nejsnáze
      jej pořídíte  programem  texi2dvi.  Například  hlavní manuál  Emacsu
      zformátujete  do DVI  příkazem  texi2dvi  emacs.texi v adresáři  man
      zdrojových textů Emacsu. Druhou cestou získání  tištěné  dokumentace
      je  samozřejmě  objednat si ji u Free  Software  Foundation,  což je
      jedna z dobrých  možností,  jak  sponzorovat  vývoj  free  softwaru.
      Dalším z možných výstupních formátů je HTML, který pořídíte nejspíše
      programem  texi2html,  který je  opět k mání v běžných  linuxovských
      distribucích, případně v CTANu.

          Při  práci s Emacsem  budete  nejspíše  používat  online  (info)
      dokumentaci. Info je mocný hypertextově orientovaný formát a mód pro
      prohlížení dokumentace, který umožňuje pomocí několika  jednoduchých
      příkazů provádět s dokumentací vše podstatné. Nebudeme zde popisovat
      jeho ovládání,  protože vás v tomto  směru  Emacs vede již od úvodní
      obrazovky a součástí info dokumentace je i podrobný návod k ovládání
      info  systému.  Důležité  je, že  zobrazený  online  manuál je běžný
      emacsovský  buffer, takže v něm můžete  provádět  obvyklé akce, jako
      je například  vyhledávání,  kopírování,  vyhodnocování  elispovských
      výrazů,  apod.  Uveďme  několik  užitečných  tipů  pro  práci s info
      systémem:

      - Rychlý vstup do některého z poduzlů mohou zajistit příkazy 1 až 9.
      - Prohledat úplně celý manuál nějakým regulárním výrazem lze příkazem
        s. Další hledání téhož regulárního výrazu se zopakuje příkazem s RET.
      - Řada příkazů akceptuje zkratky, například pro vstup do manuálu Emacsu
        obvykle stačí zadat m em RET.
      - Šipky jsou pomalé, po odkazech se můžete lépe pohybovat tabulátorem
        nebo pomocí příkazu f.
      - Příjemný pocit schopností teleportace vám dodá příkaz g.

                               Standardní manuály

          Existují  tři základní  balíky  Texinfo  dokumentace  vztahující
      se k  Emacsu:  sada  manuálů z  distribuce  Emacsu,  manuál k Elispu
      a  tutoriál  k  Elispu.   Info k Emacsu   je   součástí   standardní
      distribuce  Emacsu a bývá  instalováno  spolu s Emacsem.  Elispovské
      manuály  nainstalujete   nejsnáze  na  Linuxu  z  balíků  kterékoliv
      rozumné  linuxovské  distribuce  nebo je můžete  najít  ve  zdrojích
      na ftp://ftp.gnu.org/pub/gnu/ nebo na kterémkoliv z nespočetných GNU
      mirrorů pod názvy elisp-tutorial-verze.tar.gz a elisp-verze.tar.gz.

          Vstoupíte-li  do.info systému,  všimnete si, že info dokumentace
      Emacsu  sestává z několika  částí.  Hlavní  je  samozřejmě  "Emacs",
      ale nelze  opomenout ani  ostatní  části.  Zejména je to dokumentace
      k samotnému info,  dokumentace k podpoře  editace  zdrojových  textů
      jazyků  podobných  C/C++  ("CC mode" -- možná jste ji marně  hledali
      v  uzlu  "Emacs")  a  dokumentace  ke  Gnus  ("Gnus"  a  "Message").
      Tím nechceme  říci, že ostatní  uzly na této  úrovni  neobsahují nic
      zajímavého, zjištění jejich obsahu však ponecháváme vaší iniciativě.

          Primární  část ("Emacs") je velmi  rozsáhlá a začátečník se v ní
      jen těžko orientuje.  Netřeba  ovšem hned zoufat.  První krok by měl
      spočívat v pokusu o backtracking  vstupem do správného  uzlu  hlavní
      úrovně a následných  poduzlů, s návraty v případě  omylů.  Odhadnutí
      správného  uzlu  vyžaduje  jistou  zkušenost,  avšak  díky  křížovým
      odkazům máte dobrou šanci  nalézt  kýžené  místo i přes odkaz z jiné
      větve  dokumentačního  stromu.  V případě  neúspěchu  můžete  zkusit
      prohledat nejvyšší úroveň manuálu jednoduchým C-s, na tomto místě je
      totiž i seznam uzlů druhé úrovně. Dále můžete využít  indexů. Manuál
      Emacsu má celkem čtyři indexy.  Indexy  kláves,  funkcí a proměnných
      jsou určeny pro vyhledání již předem známých věcí, zejména  samotným
      počítačem  (viz  příkazy C-h C-f a C-h C-k).  Člověk  obvykle  sáhne
      po  pojmovém  ("concept")  indexu.  Užitečný  může  být i  slovníček
      ("glossary"). Pokud selže i index, lze ještě před destrukcí počítače
      vyzkoušet  konstruktivnější  použití hrubé síly v podobě  příkazu s.
      Popsaný postup lze aplikovat ve většině info manuálů.

          Ilustrujme si to na příkladu: Uživatel chce zjistit, jak v reply
      v Rmailu  citovat  odpověď, a dále  ještě,  jak  místo  standardního
      odsazení  citací  mezerami  použít před  citací  dvojtečky.  Vstoupí
      do uzlu "Emacs".  Uvidí  "Rmail" a vstoupí  do.tohoto uzlu  (chybně,
      správné je "Sending mail"). Jde mu o reply, takže pokračuje  vstupem
      do uzlu "Reply". V prvním odstavci nalezne křížový odkaz na "Sending
      mail" a projde  jím. Zde text k tématu nic neříká, ale dole je menu.
      Po rychlém  nahlédnutí  do  "Format"  se  vrací  zpátky a vylučovací
      metodou vybere položku  "Mode". Zde okamžitě vidí "Citing Mail", kde
      nalezne  kýžené  informace. Pokud by se mu to tak snadno  nezdařilo,
      mohl by zkusit na nejvyšší  úrovni uzlu Emacs vyhledat třeba řetězec
      "cit"  (coby  společnou  část  slov  "cite" a "citing"), což  nedává
      výsledek.  Použití téhož v pojmovém  indexu je však úspěšné.  Nemusí
      tedy dojít na.výraz krajního zoufalství v podobě aplikace s cit RET.

          Referenční  příručka  Emacsu je poměrně dobré čtení. Je to jedna
      z mála  relativně  jednoduchých  metod,  jak zjistit,  jaké  všechny
      fascinující  funkce  Emacs  má.  Zkuste  si  občas  sednout,  zvolit
      náhodně  nějaký uzel a přečíst si jej. Možná se budete  divit, kolik
      zajímavého  najdete třeba i v uzlech typu "Basic". Na druhou  stranu
      referenční  příručka  představuje jenom základní  návod a neobsahuje
      zdaleka  vše. Už přímo ve  standardní  distribuci  Emacsu se nachází
      řada  doplňujících   prográmků  (zejména  hlavní  módy  pro  editaci
      zdrojových kódů několika desítek  programovacích  jazyků), ke kterým
      je nutno hledat návod jinde, ale o tom si ještě povíme později.

                                   Emacs Lisp

          Řada  uživatelů  Emacsu  dříve  či  později  dospěje  k  závěru,
      že k  plnému  využití  možností  Emacsu  je  nutná  znalost  Elispu.
      Elisp (správně "Emacs Lisp") je programovací jazyk Emacsu a je v něm
      napsána  valná  část  Emacsu.  Přestože  mnoho lidí  Elisp děsí tím,
      že se jedná o podmnožinu  jazyka Lisp, tj. jazyka pro někoho poněkud
      nezvyklého  funkcionálního  programování,  jedná se o neopodstatněné
      obavy. Elisp je jazyk jednoduchý a snadno zvládnutelný. Programování
      v něm je podstatně  jednodušší než třeba programování v TeXu,  Perlu
      nebo  jazyce C a může se je naučit i neprogramátor.  Právě s ohledem
      na neprogramátory je napsán již zmíněný  tutoriál k Elispu. Pokud se
      chcete Elisp  naučit a vaše ješitnost  ostříleného  programátora vám
      dovolí číst příručky pro začátečníky,  zkuste to. Tento  tutoriál je
      čtivý,  obsahuje  řadu  dobrých  rad a Elisp se z něj učí přeci  jen
      snáze než z referenční příručky.

          Poslední ze zmíněných  standardních Texinfo příruček k Emacsu je
      referenční příručka Elispu. Pozor, je číslována nezávisle na.verzích
      Emacsu. Zatím poslední verze (2.4.2) odpovídá Emacsu 19.34 (poslední
      verze Emacsu 19). Od té doby vyšel Emacs 20, takže ne vše je v tomto
      manuálu zcela aktuální.  Elisp se mění méně než uživatelská  stránka
      Emacsu,  přesto  není  na.škodu si  prohlédnout  jeho  změny  pomocí
      příkazu C-h n v sekcích "Lisp changes". K významnějším  změnám došlo
      v souvislosti se  zavedením  podpory  multibytů v Emacsu  20, na což
      je potřeba při programování v Elispu  brát  určitý  ohled.  Aktuální
      informace ke konkrétním  proměnným a funkcím lze  samozřejmě  získat
      z jejich dokumentačních řetězců.

                                     Příště

          Příště  si  povíme o tom,  co  si  počít  s  programy  bez  info
      dokumentace,  a jak   získat   informace o   klávesách,   proměnných
      a funkcích.


            výheň