Spis HOWTO za zaèetnike v Emacsu Jeremy D. Zawodny: jzawodn@wcnet.org, prevod v sloven¹èino Ale¹ Ko¹ir: ales.kosir@hermes.si 14. oktober, 1999 ($Razlièica: 1.7 $) Ta spis seznanja uporabnika operacijskega sistema Linux z urejeval nikom Emacs. Predpostavlja, da uporabnik pozna urejevalnik vi ali podobnega. Zadnja razlièica tega spisa je na voljo v spletu na naslovu http://www.wcnet.org/jzawodn/emacs/. ______________________________________________________________________ Kazalo 1. Uvod 1.1 Copyright 1.2 Ciljna skupina in namen 1.3 Kaj je Emacs? 1.3.1 Prilagoditve in razlièice 1.3.2 Kako pridobimo Emacs? 2. Uporaba Emacsa 2.1 Zagon in zapustitev Emacsa 2.1.1 Kaj vidimo? 2.1.1.1 Menujska letev 2.1.1.2 Statusna vrstica in pogovorni vmesnik 2.2 Nekaj o terminologiji 2.2.1 Vmesniki in datoteke 2.2.2 Toèka in obmoèje 2.2.3 Okna 2.2.4 Okvirji 2.3 Osnove tipkovnice 2.3.1 Ukazne tipke (Meta, Esc, Control in Alt) 2.3.2 Premikanje po vmesniku 2.3.3 Najpomembnej¹i ukazi 2.3.4 Dopolnjevanje s tipko Tab 2.4 Prvo berilo, pomoè in strani info 3. Naèini v Emacsu 3.1 Glavni naèini in podnaèini 3.2 Naèini za programiranje 3.2.1 C, C++ in Java 3.2.2 Perl 3.2.3 Python 3.2.4 Drugi naèini 3.3 Pisanje 3.3.1 Èrkovanje (naèin 3.3.2 HTML (naèin 3.3.3 TeX ( 3.3.4 SGML ( 3.4 Drug naèini 3.4.1 Nadzor razlièic (naèin 3.4.2 Naèin za ukazno lupino 3.4.3 Telnet in FTP 3.4.4 Man 3.4.5 Ange-FTP 4. Emacs po meri 4.1 Zaèasno prilagojevanje 4.1.1 Prirejanje vrednosti spremenljivkam 4.1.2 Zveze z datotekami 4.2 Uporaba datoteke 4.3 Paket za prilagojevanje 4.4 Zaslon oken X 5. Priljubljeni paketi 5.1 VM (po¹tni program) 5.2 Gnus (program za po¹to in novice) 5.3 BBDB (rollodex) 5.4 AucTeX (¹e en naèin za TeX) 6. Drugi viri 6.1 Knjige 6.1.1 Learning GNU Emacs 6.1.2 Writing GNU Emacs Extensions 6.1.3 Programming in Emacs Lisp: An Introduction 6.1.4 The GNU Emacs Lisp Reference Manual 6.2 Spletna mesta 6.2.1 EMACSulation 6.3 Novièarske skupine 6.4 Seznami elektronskih naslovov 6.5 Arhiv za Emacsov lisp 7. Zahvale ______________________________________________________________________ 1. Uvod 1.1. Copyright Copyright © 1998 - 1999 Jeremy D. Zawodny. Dovoljenje za raz¹irjanje in spreminjanje tega dokumenta daje splo¹no dovoljenje GNU (General Public License). Izvod dovoljenja je dostopen na strani http://www.gnu.org/copyleft/gpl.html 1.2. Ciljna skupina in namen Ta spis je namenjen uporabniku sistema Linux, tistemu, ki bi se rad nauèil uporabljati urejevalnik Emacs. Spis je zaèel nastajati kot povzetek za kratko predstavitve, ki sem jo pripravil za tole¹ko obmoèno sreèanje uporabnikov Linuxa (Toledo Area Linux User Group) http://www.talug.org/. Spis je kasneje zrasel zaradi pomoèi skupnosti, kakor ka¾e razdelek z zahvalami. Posebej moram poudariti, da ni v spisu skoraj niè, kar bi veljalo le za Linux. Povedano se nana¹a na vse vrste Unixov in celo na Emacs, ki teèe v okolju Microsoft Windows. A ker je ta spis del linuxovskega dokumentacijskega projekta (Linux Documentation Project), trdim, da je spis pripravljen za uporabnike Linuxa, ker je bil prav njim resnièno namenjen. Tisti izmed bralcev, ki imate ime GNU/Linux raje kot preprosto ,,Linux'' (preberite http://www.gnu.org/gnu/linux-and-gnu.html, da boste zvedeli, zakaj bi to kdo rad razloèeval) pa ste vabljeni, da v mislih z nizom GNU/Linux nadomestite vse besede Linux v tem spisu. Èetudi ne nasprotujem utemeljitvi in duhu zamisli, ki je v ozadju, ne èutim potrebe, da bi zapisal ,,GNU/Linux''. 1.3. Kaj je Emacs? Emacs pomeni razliènim ljudem razliène stvari. Odvisno od tega, koga boste vpra¹ali, boste morebiti dobili naslednje odgovore: * urejevalnik besedil, * odjemalec za elektronsko po¹to, * pregledovalnik novièarskih skupin, * program za stavljenje besedila, * vero, * integrirano razvojno okolje, * karkoli bi vi ¾eleli, da je! Za na¹ namen se pretvarjajmo, da je Emacs urejevalnik besedila, in sicer neverjetno zmogljiv urejevalnik besedila, kasneje pa bomo globlje obravnavali to vpra¹anje. Emacs je napisal Richard Stallman (ustanovitelj fundacije za prosto programje, Free Software Foundation http://www.fsf.org/, in projekta GNU http://www.gnu.org/) in ga ¹e danes vzdr¾uje. Emacs je eden od najbolj raz¹irjenih in zmogljivih urejevalnikov v Linuxu (in Unixu) in je po priljubljenosti takoj za urejevalnikom vi. Slovi po ogromnem naboru funkcij, zmo¾nosti preprostega prilagojevanja in po tem, da nima napak. Obse¾ni nabor funkcij in zmo¾nost prilagojevanja sta posledica naèina, na katerega je bil Emacs naèrtovan in izveden. Ne da bi se spustil v podrobnosti, trdim, da Emacs ni le urejevalnik. Velik del ga je napisanega v programskem jeziku lisp. Jedro Emacsa je v jeziku C napisan popolnoma funkcionalen tolmaè za jezik lisp in le najbolj osnovni in nizkonivojski del predstavlja prevedena koda C, veèina Emacsove kode pa je napisana v jeziku lisp. Trdimo lahko, da je v Emacs vgrajen celotni programski jezik, njegovo kodo pa lahko po potrebi spreminjamo, prilagajamo, dodajamo in tako prikrojujemo Emacsovo obna¹anje. Emacs je hkrati tudi eden od najstarej¹ih urejevalnikov. Dejstvo, da ga zadnjih dvajset let (?) uporabljajo tisoèi programerjev, je razlog, da je zanj na voljo veliko dodatnih paketov. Ti paketi omogoèajo, da vi postorite stvari, o katerih se Stallmanu, ko je Emacs zaèel pisati, ¹e sanjalo ni. Veè o tem pa v nadaljevanju. Na voljo je mnogo spletnih mest in spisov, ki dajo bolj¹i pregled Emacsa, njegove zgodovine in podobnega od tega, ki je pred vami. Raje kot da bom posku¹al zajeti èimveè znanega, svetujem, da si ogledate nekaj mest, ki jih navajam v razdelku ``Drugi viri''. 1.3.1. Prilagoditve in razlièice Potrebno je omeniti, da obstajata dva razlièna urejevalnika: GNU Emacs in XEmacs. Oba izvirata iz skupnega prednika in veèina funkcij je skupna. To besedilo se nana¹a na GNU Emacs (izrecno na razlièico 20.3), a veèina zapisanega velja tudi za XEmacs in zgodnej¹e razlièice GNU Emacs. V tem besedilu se sklicujem preprosto na ,,Emacs'', kar upo¹tevajte. 1.3.2. Kako pridobimo Emacs? Emacs zlahka pridobimo. Èe uporabljate raz¹irjeno distribucijo Linuxa, kakr¹na je Debian, RedHat, Slackware ali podobna, je Emacs zelo verjetno ¾e prilo¾en kot paket, ki ga namestimo z na¹ega nosilca za distribucijo. Èe Emacsa nimamo, lahko dobimo tudi njegovo izvorno kodo in jo sami prevedemo. Obi¹èite spletno mesto http://www.gnu.org/software/emacs/emacs.html, kjer boste na¹li toèna navodila, kako ga pridobite. 2. Uporaba Emacsa 2.1. Zagon in zapustitev Emacsa Kot novi uporabnik Emacsa ga bomo sprva verjetno hoteli pognati in preskusiti. A ko smo enkrat v njem in ga ¾elimo zapustiti, tega verjetno sprva ne bomo znali. Èe ga nismo ¹e nikoli uporabili, ga poskusimo pognati prav zdaj. V svoji ukazni lupini za pozivnikom vpi¹imo emacs in pritisnimo tipko Enter. Emacs bi se moral zagnati. Èe se ne za¾ene, bodisi ne le¾i v poti do programov bodisi ni name¹èen. Ko pa smo uspe¹no pognali Emacs, se moramo nauèiti, kako ga zapustimo. Vtipkati moramo ukaz C-x C-c. Pisava C-x pomeni, da pritisnemo tipko Ctrl, jo pridr¾imo, nato pritisnemo ¹e tipko x, zatem pa popustimo x in ¹e Ctrl. V zgornjem primeru moramo za prvim delom pritisniti in pridr¾ati ¹e tipko Ctrl in pritisniti c, da zapustimo urejevalnik. Morebiti se nam bodo sprva zdeli Emacsovi ukazi èudni, nenavadni in celo nerodni, posebej èe smo vajeni urejevalnika vi. V nasprotju z urejevalnikom vi Emacs nima posebnih naèinov za vna¹anje besedila in ukazov. Na kratko: ukaz emacs po¾ene urejevalnik Emacs. Z Emacsovim ukazom C-x C-c urejevalnik zapustimo. 2.1.1. Kaj vidimo? Ko po¾enemo Emacs, njegov izpis zasede vse okno X ali zaslon, èe ga poganjamo v konzoli. Na vrhu opazimo menujsko letev, v srednjem delu nekaj besedila in nekaj vrstic na dnu. Zaslon je podoben tej skici z znaki: +----------------------------------------------------------------------+ |Buffers Files Tools Edit Search Mule Help | | | |Welcome to GNU Emacs, one component of a Linux-based GNU system. | | | | | | | | ... | | | |---1:---F1 *scratch* (Lisp Interaction)--L1--All-------------| |For information about the GNU Project and its goals, type C-h C-p. | +----------------------------------------------------------------------+ Razlièica v slovenskem jeziku pa je tak¹na: +----------------------------------------------------------------------+ |Buffers Files Tools Edit Search Mule Help | | | |Dobrodo¹li v GNU Emacs, sestavnem delu sistema GNU v Linuxu. | | | | | | | | ... | | | |---1:---F1 *scratch* (Lisp Interaction)--L1--All-------------| |Pritisnite C-h C-p, da dobite opis projekta GNU in njegovega namena. | +----------------------------------------------------------------------+ Opomba: Emacs obièajno zavzame celotno okno ali zaslon. Zgornjo skico sem okrnil, da bi jo lahko prikazal na omejenem prostoru. Ko prviè po¾enemo Emacs, bomo opazili pozdravno sporoèilo. Da bi prihranil prostor, sem njegovo vsebino izpusti in jo nadomestil z znaki ,,...''. Pozdravno sporoèilo navaja razlièico Emacsa, ki ga uporabljamo, in nas vabi, da si ogledamo dostopno pomoè na zvezi. 2.1.1.1. Menujska letev Vrhnja vrstica v Emacsovem vmesniku je menujska letev (ang. menu bar). Èe poganjamo Emacs v oknih X, se bodo izbire v menuju obna¹ala kot obièajni potezni menuji (ang. pull-down menu), do katerih pridemo z mi¹ko. Drugaèe pa moramo za dostop do menujev uporabiti tipkovnico z ustreznimi bli¾njicami tipk, o èemer tu ne govorimo. 2.1.1.2. Statusna vrstica in pogovorni vmesnik Zgornja od zadnjih dveh vrstic Emacsovega vmesnika je statusna letev (ang. status bar). Vsebuje podatke o vmesniku, v katerem delamo, o naèinu dela v trenutnem vmesniku in podobne koristne informacije. Zaenkrat se zadovoljimo s tem, da se zavedamo obstoja te letve. Najspodnej¹a vrstica se imenuje pogovorni vmesnik (ang. mini-buffer). Od osrednjega vmesnika (ang. main buffer) ga na zaslonu loèi pravkar opisana statusna letev. Pogovorni vmesnik si lahko zami¹ljamo kot Emacsovo ukazno vrstico. Vanj vna¹amo ukaze, ki jih dajemo Emacsu, in v njem nam Emacs izpisuje svoja sporoèila in odgovore na na¹e ukaze. Ugotovili boste, da tistemu, kar sem pravkar imenoval statusna letev (ang. status bar), Emacsova dokumentacija pravi naèinovna vrstica (ang. mode line). To je mesto, kjer Emacs prikazuje podatke o naèinu ali naèinih dela v trenutnem vmesniku kot tudi trenutni datum in èas, zaporedno ¹tevilko vrstice, velikost datoteke, torej skoraj vse, kar bi si ¾eleli videti v tej vrstici. 2.2. Nekaj o terminologiji Ta razdelek obravnava najbolj osnovno terminologijo Emacsa. Potrebno jo je poznati, de bomo lahko brali o Emacsu in ga uporabljali. 2.2.1. Vmesniki in datoteke Za razliko od nekaterih drugih urejevalnikov datoteka, ki jo odpremo v Emacsu, ne ostane odprta ves èas dela. Namesto tega jo Emacs prebere v vmesnik (ang. buffer) v pomnilniku. Ko urejamo datoteko, se njena vsebina na disku ne spremeni, dokler vsebine vmesnika na shranimo na disk. Tak naèin dela ima svoje prednosti in slabosti, a trenutno je pomembno le, da razumemo ta pristop. Posledica tega je, da to isto besedo uporabljamo v Emacsovi dokumentaciji, naèinih, paketih in tako naprej. Pomeni nam trenutno vsebino datoteke v pomnilniku. Eh, potrebno je omeniti, da vmesnik ni nujno povezan s kakr¹nokoli datoteko na disku. Velikokrat Emacs ustvari vmesnik, v katerega bo shranil izhod ukazov, ki smo jih izvedli. Nekateri vmesniki bodo vsebovali izpis ukaza, seznam izbir, med katerimi lahko izbiramo, in podobno. 2.2.2. Toèka in obmoèje V Emacsovem ¾argonu bomo velikokrat sli¹ali za toèko (ang. point) ali o njej brali. V splo¹nem je toèka utripalka (ang. cursor). Natanèen razloèek med toèko in utripalko na zaèetku verjetno ni odloèilen. A èe ste radoveni, si predstavljajte razliko takole: utripalka je vidni prikaz toèke. Utripalka je vselej vidna na doloèenem mestu trenutnega vmesnika. Toèka pa nasprotno prebiva v prostoru med dvema znakoma trenutnega vmesnika. Èe vidimo utripalko na èrki ,o' besede ,,zob'', to pomeni, da je toèka v resnici med èrkama ,z' in ,o'. Emacs omogoèa urejanje vmesnika kot mnogi sodobni urejevalniki z naslednjimi funkcijami: zamikanje (ang. indent), èrkovanje (ang. spell-check), preoblikovanje (ang. reformat), izrezovanje (ang. cut), prepisovanje (ang. copy), lepljenje (ang. paste) in podobno na delu besedila trenutnega vmesnika. Oznaèimo (ang. mark) lahko besedilo s poudarjanjem (ang. highlight), tako da uporabimo mi¹ko, in nato izvedemo ukaz le na izbranem obmoèju besedila. Tak del besedila se v Emacsu imenuje obmoèje (ang. region). 2.2.3. Okna Res je, nadaljevanje bo zmedlo marsikoga, ki je ¾e uporabljal grafièni vmesnik. Spomniti pa se moramo, da je bil Emacs razvit veliko preden so postali popularni grafièni vmesniki in okenski upravljaniki. Okno (ang. window) v Emacsu je obmoèje na zaslonu, v njem pa je prikazan vmesnik. Ko Emacs prviè po¾enemo, dobimo na zaslonu le eno okno. Nekateri ukazi (denimo pomoè ali dokumentacija) v Emacsu odpro dodatna zaèasna okna na Emacsovem zasonu. Emacsovo okno nima niè skupnega z okni X v smislu grafiènega vmesnika. Odpremo lahko dodatna okna X, v katerih prika¾emo Emacsove vmesnike, denimo za vzporedno primerjavo vsebine dveh datotek, ta nova okna X pa se imenujejo v Emacsovem ¾argonu okvirji. Nadaljujte z branjem! 2.2.4. Okvirji V Emacsu je okvir (ang. frame) loèeno okno X, ki prikazuje nek Emacsov vmesnik. A vsa so del iste Emacsove seje. Obna¹ajo se skoraj tako, kot èe v Netscapovem Navigatorju uporabimo ukaz Alt+N. 2.3. Osnove tipkovnice Ta razdelek opisuje osnove igranja na tipkovnico v Emacsu. Kot v veèini zmogljivih urejevalnikov, je tudi v Emacsu vse, kar lahko v njem storimo, od nas oddaljeno le nekaj pritiskov na tipke. Èe ste uporabnik urejevalnika vi, ste se nekaj èasa morali privajati na tipke k, j, l, h, s katerimi se v njem pomikamo za vrstico navzgor ali navzdol ali za znak naprej ali nazaj. Priznajmo, da smo potrebovali nekaj ur ali tednov, da smo se jim privadili in jih zaèeli udobno uporabljati za premikanje po datoteki. Emacs se v tem ne razlikuje. Tudi tu se moramo nauèiti razliènih pritiskov tipk in ukazov. Kakor v vi se moramo nauèiti le nekaj osnov, pa ¾e lahko opravimo veèino dela. Sèasoma se lahko poèasi priuèimo tudi drugih ukazov in raz¹irimo svoje znanje, tako da znamo vedno hitreje opraviti svoje stvari. 2.3.1. Ukazne tipke (Meta, Esc, Control in Alt) Kot se bomo kmalu nauèili, Emacs zelo pogosto uporabljamo z veètipkovnimi kombinacijami, akordi. Ker Emacs ni naèinovni urejevalnik (ang. modal editor), kakr¹en je vi, nam ni potrebno pomniti, kdaj smo v ,,ukaznem'' (ang. command mode) ali ,,urejevalnem'' naèinu (ang. editing mode), da bi premaknili utripalko ali izvedli ukaz. Zato veèinoma le pritisnemo pravo zaporedje ukazov in Emacs nas (obièajno) takoj uboga. Tipke, ki jih Emacs uporablja najpogosteje, so v dokumentaciji navedene takole C za tipko Control ali Ctrl in M za tipko Meta. Medtem ko ima veèina sodobnih osebnih raèunalnikov eno ali veè tipk, ki so oznaèene s Ctrl, imajo le redki tipko z oznako Meta. V mislih vselej nadomestimo tipko Meta z eno od tipk Esc ali Alt. V veèini obièajnih primerov se obna¹ata tipki Esc in Alt enako. Kadarkoli potemtakem vidite v Emacsovi dokumentaciji sklic na C-x f, to pomeni ,,pritisnite Control-x in zatem tipko f''. In èe vidite omenjeno kaj podobno temu M-x shell, to v resnici pomeni ,,pritisnite alt-x in vpi¹ite besedo shell''. Za zaèetnika zelo koristen ukaz je M-x apropos ali skraj¹ano C-h a. Ukaz apropos prei¹èe Emacsovo dokumentacijo na zvezi in poi¹èe vse funkcije, katerih imena ustrezajo regularnemu izrazu, ki smo ga vpisali. Na ta naèin na primer zlahka poi¹èemo vse ukaze, ki so povezani z okvirji (ang. frame). Preprosto vnesemo C-h a in zatem vpi¹emo frame. 2.3.2. Premikanje po vmesniku Ko smo spoznali, kaj pomenijo èudne okraj¹ave zaporedij tipk, je èas, da si ogledamo seznam najpogostej¹ih ukazov za premikanje po vmesniku: tipke uèinek ----------------------------------- C-p navzgor za vrstico C-n navzdol za vrstico C-f naprej za znak C-b nazaj za znak C-a zaèetek vrstice C-e konec vrstice C-v navzdol za celo stran M-v navzgor za celo stran M-f naprej za besedo M-b nazaj za besedo M-< zaèetek vmesnika M-> konec vmesnika C-g prekini trenutni ukaz ----------------------------------- In kot bi si ¾eleli, tudi smerne tipke (tiste s pu¹èicami) obièajno delujejo po na¹ih prièakovanjih. Tipka vraèalka (ang. backspace) pa morebiti ne. A to je druga zgodba. :-( 2.3.3. Najpomembnej¹i ukazi Potem ko smo se nauèili, kako se premikamo po vmesniku, ali smo ¾e pripravljeni tudi za odpiranje in shranjevanje datotek? Morebiti celo za iskanje? Ja, tukaj bomo na¹li teh nekaj najpomembnej¹ih ukazov. Preden pa se zapodimo med ukaze, naj na kratko pojasnim, kako delujejo. Vsi ,,ukazni akordi'' v Emacsu (ti, ki jih zapi¹emo kot M-nekaj ali C- nekaj) so v resnici le bli¾njice do funkcij, ki so del Emacsa. Vsako izmed funkcij lahko poklièemo po njenem imenu, tako da vpi¹emo M-x ime-funkcije in pritisnemo Enter. Èe pa je na tipkovnico prilepljena bli¾njica do te funkcije, zado¹èa, da uporabimo bli¾njico. Emacsova funkcja, ki shrani vsebino vmesnika na disk, se imenuje save- buffer. Privzeto je pripeta na akord C-x C-s. Da bi shranili vmesnikovo vsebino, lahko pritisnemo akord ali pa vpi¹emo M-x save- buffer in dose¾emo popolnoma enak uèinek. Vse najpogosteje uporabljane funkcije imajo vnaprej prirejene akorde. Nekaj jih navajamo spodaj. akord funkcija opis ------------------------------------------------------------------- C-x C-s save-buffer shrani trenutni vmesnik na disk C-x u undo razveljavi zadnji ukaz C-x C-f find-file odpri datoteko na disku C-s isearch-forward poi¹èi niz znakov v smeri naprej C-r isearch-backward poi¹èi niz znakov v smeri nazaj replace-string poi¹èi niz znakov in ga zamenjaj replace-regexp poi¹èi regularni izraz in ga zamenjaj C-h t help-with-tutorial po¾eni uèenje Emacsa s prvim berilom C-h f describe-function izpi¹i opis funkcije C-h v describe-variable izpi¹i opis spremenljivke C-h x describe-key izpi¹i pomen akorda C-h a apropos poi¹èi dokumentacijo z regularnim izrazom C-h F view-emacs-FAQ prika¾i odgovore na pogosta vpra¹anja o Emacsu C-h i info izpi¹i dokumentacijo o Emacsu C-x r m bookmark-set oznaèi trenutno mesto z zaznamkom C-x r b bookmark-jump skoèi na zaznamek ------------------------------------------------------------------- Ko bomo uporabljali te funkcije, bomo opazili, da mnoge od nas prièakujejo vnos. Tega vselej vnesemo v pogovornem oknu, kar spominja na ukaze : v vi. V Emacs je vgrajenih dobesedno stotine funkcij, ki so vse dosegljive. Zgornji seznam je le izvleèek ukazov, ki jih uporabljam najpogosteje. Za bolj podrobne opise, kaj te funkcije poèno, in za njihov popolnej¹i seznam pa si moramo ogledati neposredno pomoè. 2.3.4. Dopolnjevanje s tipko Tab Podobno kot mnoge priljubljene ukazne lupine v Unixu (bash, csh, tcsh...) tudi Emacs omogoèa dopolnjevanje imen ukazov s tipko Tab. Resnici na ljubo je treba priznati, da dopolnjevanje ukazov v lupini bash posnema to v Emacsu. Èe ga uporabljamo v lupini, se nam bo prikupilo tudi v Emacsu. Poskusimo ga uporabiti tako, da vnesemo M-x search in nato pritisnemo Tab. Emacs bo imenu dodal pomi¹ljaj in tako oznaèil, da obstaja mnogo imen, ki se vsa zaèno s tem nizom in imajo pomi¹ljaj. Ponovimo pritisk na tipko Tab in Emacs bo prikazal vsa imena, ki se zaèno z izpisanim nizom. Opazimo, da Emacs za ta seznam odpre novo okno. Emacs zaèasno prepolovi prikazovalnik v dve okni. Eno vsebuje vmesnik, ki ga urejamo, drugo pa seznam vseh dopolnjenih imen, ki se zaèno na ,,search-''. Èe pritisnemo ukaz za prekinitev C-g, zapustimo okno z izbiranjem in se vrnemo v prvotni vmesnik. 2.4. Prvo berilo, pomoè in strani info Emacs ima za novince vgrajeno prvo berilo, ki nas popelje prek osnovnih ukazov za urejanje in funkcij, ki jih vsi uporabljamo. Teèaj nas tudi nauèi, kako uporabljamo druge sisteme pomoèi v Emacsu. Priporoèam, da si vzamemo èas in se sprehodimo skozi prvo berilo, èe se ¾elimo Emacsa res nauèiti. Kot prikazuje zgornja preglednica, po¾enemo prvo berilo z akordom C-h t. Prvo berilo je namenjeno novincem, ki bi se radi samoizobrazili, narejeno pa je kot zaèetni teèaj. Èe poganjamo Emacs v oknih X, bomo opazili, da je skrajni menu v menujski letvi oznaèen s Help. Ko raziskujemo, kaj nam Help nudi, najprej opazimo, da ima nekaj postavk v menuju na desni strani navedene akorde ukazov, s katerim jih na hitro po¾enemo. Za konec si lahko ogledamo, kolik¹na kolièina dokumentacije je na voljo v Emacsu. Vpi¹imo M-x info ali C-h i, kar po¾ene sistem Info, brskalnik po dokumentaciji v Emacsu. 3. Naèini v Emacsu Naèini (ang. mode) v Emacsu so povezana pravila obna¹anja in sklopi funkcij, ki jih lahko vklapljamo ali izklapljamo in tako prilagodimo Emacs za uporabo v razliènih okoli¹èinah. Z naèini dose¾emo to, da je Emacs lahko enako primeren za pisanje dokumentacije, za programiranje v raznolikih jezikih (C, C++, Perl, Python, Java in ¹e mnogih drugih), za izdelavo domaèe strani, za elektronsko dopisovanje, za branje novièarskih skupin, za vodenje seznama na¹ih zmenkov in celo za igranje iger. Naèini v Emacsu so preprosto knji¾nice s kodo v lispu, s katero raz¹irjamo, prilagajamo, spreminjamo ali na kak¹en naèin izbolj¹ujemo Emacs. 3.1. Glavni naèini in podnaèini Obstajata dve vrsti naèinov: glavni naèini (ang. major mode) in podnaèini (ang. minor mode). Razlika med vrstama ni najbolj oèitna, dokler se ne poglobimo vanju, a poskusimo jo opisati. Vsak vmesnik je v nekem trenutku le v enem glavnem naèinu, poleg tega pa je lahko v veè podnaèinih. Glavni naèini so v splo¹nem vezani na programsko okolje ali posebna velika opravila, medtem ko so podnaèini manj¹e prilagoditve in manj specifièni priroèni programi, ki jih lahko sproti uporabljamo pri razliènih veèjih opravilih. Tole je zvenelo precej abstraktno, zato raje ponazorimo s primerom. Ko pi¹em neformatirano besedilo, uporabljam glavni naèin, imenovan text-mode. Ta naèin je bil naèrtovan za pripravo neformatiranega besedila, kakr¹no so datoteke README. Naèin razume, kako mora prepoznavati besede in odstavke ter kaj uporabnik prièakuje pri uporabi obièajnih tipk za navigacijo. Ko pripravljam besedilo, namenjeno ljudem, obièajno hoèem, da bo tudi njegov videz dober. Besedilo mora biti ovito (ang. word-wrapped), tako da vrstice niso predolge in podobno. Da omogoèim ovijanje besedila, po¾enem podnaèin auto-fill. Podnaèin poskrbi, da se vrstice po ,,prièakovanju'' samodejno pravilno prelomijo, ko vna¹am besedilo. Ker je to podnaèin, ga lahko uporabim tudi v drugih glavnih naèinih. Moje ,,prièakovanje'', kaj naj se zgodi ob zakljuèku vrstice pa je v text- mode razlièno od tistega, ko sem na primer v naèinu java-mode. Prav gotovo si ne ¾elim, da bo javanska koda ovita na enak naèin, kot je besedilo v slovenskem jeziku. Vendar pa hoèem, da je v komentarjih javanske kode besedilo ovito! Podnaèin auto-fill je dovolj pameten, da bo to sam razre¹il. Ustvarjalci razliènih Emacsovih naèinov so se zelo potrudili, da so zagotovili, da so tiste stvari, ki sodijo v podnaèine, tudi res podnaèini. Èe si ogledamo skico Emacsovega zaslona, opazimo, da naèinovna vrstica ka¾e, v katerem naèinu ali naèinih je Emacs v danem vmesniku. V prikazanem primeru je Emacs v naèinu ,,Lisp Interaction'', ki je privzeti naèin. Naèin je uporaben le za pisanje kode v lispu, a ker je veèina Emacsa izvedena v njem, taka odloèitev za privzeti naèin prav gotovo ni slaba, ali paè? 3.2. Naèini za programiranje Najva¾nej¹e, Emacs so ustvarili programerji za programerje. Na voljo so visokokakovostni naèini za skoraj vsakega od raz¹irjenih programskih jezikov in tudi za nekaj manj pogostih. Tukaj bom na kratko opisal le nekatere od njih. Za veèino programskih naèinov je znaèilnih nekaj skupnih lastnosti. Pogosto bodo ti naèini: * skladenjsko barvali (ang. syntax highlight) jezikovne elemente, * samodejno zamikali in formatirali kodo v skladu s programskim jezikom, * podpirali kontekstno obèutljivo in od programskega jezika odvisno pomoè, * samodejno podpira vmesnik do na¹ega razhro¹èevalnika, * v menujsko letev dodaja nove menuje za podporo jeziku. Poleg tega obstaja nekaj naèinov, ki niso v povezavi z jezikom, in pomagajo pri nalogah, ki so skupne mnogim programskim jezikom. Pri tem mislim na podporo za programe za nadzor razlièic, samodejno dodajanje komentarjev v kodo, izdelavo datotek Makefile, osve¾evanje dnevni¹kih zapisov (ang. change log) in podobno. Èe zdru¾imo vse te naèine ter upo¹tevamo zrelost in stabilnost Emacsove kode, ugotovimo, da je izdelek primerljiv komercialnim paketom integriranih razvojnih okolij (ang. integrated development environment, IDE) za jezike, kot sta C++ in Java. Poleg tega pa je Emacs na voljo brezplaèno, seveda! 3.2.1. C, C++ in Java Zaradi c-jevske skladnje sta jezika C++ in java jeziku C precej podobna, in tudi naèin, ki podpira vse tri jezike, poleg njih pa ¹e Objective-C in IDL, je le en sam. Paket, v katerem je naèin podprt, je zelo zrel in lepo zaokro¾en ter prihaja s standardno distribucijo Emacsa. Naèin se imenuje cc-mode ali tudi CC Mode. Èe i¹èemo njegovo najnovej¹o razlièico ali èe ¾elimo zvedeti podrobnosti, obi¹èimo spletno stran http://www.python.org/emacs/. 3.2.2. Perl V Emacs sta vgrajena dva naèina za urejanje kode v perlu. Prvi se imenuje perl-mode (kot seveda prièakujemo), drugi pa cperl-mode. Ne poznam zgodovinskih okoli¹èin in razlogov, zakaj je pri¹lo do dveh naèinov, dokumentacija pa jih tudi ne omenja. Zdi pa se, da je bil perl-mode razvit najprej. Je manj zmogljiv kot cperl-mode in ne prepozna nekaterih bolj zavitih perlovih jezikovnih tvorb. Osebno uporabljam in priporoèam cperl-mode, ki ka¾e, da se ga vzdr¾uje precej pogosto, ima pa tudi skoraj prav vse funkcije, ki bi si jih kdajkoli ¾elel. Njegova zadnja razlièica je dostopna na strani: ftp://ftp.math.ohio-state.edu/pub/users/ilya/emacs. Ne verjemite mi slepo na besedo. Raje preskusite oba naèina in se odloèite za tistega, ki vam bolj ustreza. 3.2.3. Python Python, zelo priljubljen skriptni jezik, ima tudi Emacsov naèin, s katerim je podprt. Kot lahko poroèam, se ta naèin ne raz¹irja z GNU Emacs, paè pa le z XEmacs. Deluje pa v obeh urejevalnikih prav dobro. Paket za podporo naèinu python-mode lahko pridobimo z uradne pythonove spletne strani http://www.python.org/emacs/python-mode/. 3.2.4. Drugi naèini Poleg ¾e na¹tetih je na voljo programerjem ¹e mnogo mnogo drugih naèinov. Ti naèini pomagajo pri: * ukaznih lupinah (Bash, sh, ksh, csh...), * awk, sed, tcl... * datotekah Makefile, * dnevni¹kih zapisih (ang. change logs), * dokumentaciji, * razhro¹èevanju In ¹e veliko veè. Zadnji razdelek tega spisa pojasnjuje, kje lahko najdemo druge naèine in dodatke za Emacs. 3.3. Pisanje Èudoviti Emacsovi naèini niso omejeni le na pomoè pri pisanju kode. Tudi pisci vsakovrstne dokumentacije lahko s pridom uporabljamo ob¹iren nabor Emacsovih naèinov. 3.3.1. Èrkovanje (naèin ispell ) Avtorji razliènih vrst dokumentacije od èasa do èasa potrebujemo orodje za preverjanje pravilnosti èrkovanja (ang. spellchecking). èe smo namestili program GNU ispell, lahko uporabimo ukaz M-x ispell in po¾enemo èrkovanje trenutnega vmesnika. Èe èrkovalnik najde besedo, ki je ne pozna, predlaga za zamenjavo podobne besede iz slovarja in nam omogoèi, da izmed njih izberemo eno ali nobene. Po zmo¾nostih je podoben mnogim raz¹irjenim neprostim èrkovalnim paketom. 3.3.2. HTML (naèin html-helper ) Èe moramo od èasa do èasa ali celo pogosteje pripraviti spis v zapisu HTML, bomo morebiti uporabili naèin html-helper-mode. Paket je dostopen na strani http://www.santafe.edu/~nelson/tools/ kot tudi spremljajoèa dokumentacija in dodatki. Kot ka¾e ime paketa, naèin html-helper-mode predvsem pomaga tistim piscem, ki se lotevajo pisanja dokumentov v zapisu HTML na roko, na star naèin. 3.3.3. TeX ( tex-mode ) Èe pi¹emo v TeXu, je priroèno, da nam Emacs sproti barva ukaze, besedilo v nekaterih oklepajih in kar je ¹e te oblikovne krame. Naèin tex-mode se potrudi in stori to samodejno. Èeprav ne pi¹em veè pogosto v TeXu, mi je nekoè ta naèin moèno pomagal, da je postalo pisanje preglednej¹e. 3.3.4. SGML ( sgml-mode ) Spis, ki ga pravkar berete, je bil pripravljen v jeziku SGML in kasneje zelo verjetno pretvorjen v drug zapis, ki ga berete. Naèin sgml-mode podpira osnove dokumentov SGML: preverjanje njihove skladenjske pravilnosti, skladenjsko barvanje, premikanje po znaèkah in poleg tega ¹e veliko veè. Naèin je del standardne distribucije Emacs. 3.4. Drug naèini Seveda, poleg na¹tetih obstaja ¹e mnogo drugih naèinov, ki nam olaj¹ujejo ¾ivljenje. Vzorec bolj priljubljenih za poku¹ino: 3.4.1. Nadzor razlièic (naèin vc ) Naèin vc je vmesnik do raz¹irjenih sistemov za nadzor razlièic (RCS, SCCS in CVS). Omogoèa preprost vnos in povrnitev nadzorovanih datotek, pomaga pri upravljanju z razlièicami in izdajami programov ter podobno. Je del standardne distribucije Emacsa in je ob¹irno opisan v Emacsovi dokumentaciji. 3.4.2. Naèin za ukazno lupino Zakaj bi morali skoèiti v drugo okno X ali navidezno konzolo zgolj zaradi tega, ker bi radi pognali nekaj ukazov v ukazni lupini? Storimo to v Emacsu in si prihranimo nekaj truda. :-) Ukaz M-x shell v Emacsovem vmesniku po¾ene ukazno lupino. V njej lahko postorimo skoraj vse, kar lahko v pravi ukazni lupini. Ne moremo pa poganjati programov, ki zahtevajo celo okno, taka sta na primer vi ali pine. Emacs se s pravo ukazno lupino pogovarja v ozadju. Ker je ta naèin del standardne distribucije, najdemo navodila za njegovo uporabo v prilo¾eni dokumentaciji. 3.4.3. Telnet in FTP Zakaj bi morali preklopiti v drugo okno X ali navidezno konzolo zgolj zaradi tega, ker bi radi pognali programa telnet ali ftp? Tudi za to ni pravega razloga, oboje lahko storimo v Emacsu in si prihranimo nekaj truda. (Ali ste ¾e opazili vzorec?) Enako kot ukazno lupino v Emacsu po¾enemo tudi programa telnet ali ftp. Uporabimo ukaza M-x telnet ali M-x ftp in ju preskusimo sami. Dokumentacija pa nam bo pomagala pri razre¹evanju grenkih podrobnosti. 3.4.4. Man Zakaj bi morali preklopiti v drugo okno X ali navidezno konzolo zgolj zaradi tega, ker bi radi prebrali strani man? To lahko storimo iz Emacsa in si prihranimo nekaj truda. (Obljubljam, da se ne bom veè ponovil.) Enako kot ukazno lupino v Emacsu po¾enemo tudi pregledovalnik strani man. Uporabimo ukaz M-x man in ga preskusimo. Veè pa lahko preberemo v dokumentaciji. 3.4.5. Ange-FTP Citat iz navodil za ange-ftp: Ta paket se trudi narediti dostop iz GNU Emacs do datotek in imenikov prek protokola FTP kar najbolj preprost in pregle den. Podmno¾ica skupnih rutin za delo z datotekami je raz¹irjena za delo s programom FTP. To pomeni, da do datotek v oddaljenih sistemih dostopamo, kot da bi bile v lokalnem sistemu. Èe moramo urediti datoteko v drugem sistemu, Emacsu z imenom sistema v poti do datoteke povemo, kje naj jo odpre, Emacs pa bo poskrbel za vse ostalo in pridobil datoteko z oddaljenega sistema. Ko datoteko shranimo z obièajnim ukazom C-x C-s, bo ange-ftp prestregel klic funkcije za shranjevanje in sam datoteko zapisal v oddaljeni sistem. Skladnja za oznaèevanje datotek je takole raz¹irjena... Datoteko ,,moja-datoteka.txt'' uporabnice ,,metka'' v njenem imeniku ,,naloga/podatki'' oddaljenega sistema ,,kjer.koli.si'' odpremo z ukazom C-x f, tako da za pot navedemo: /metka@kjer.koli.si:naloga/podatki/moja-datoteka.txt Tudi ta paket je del standardne distribucije Emacsa in ob¹irnej¹a navodila zanj najdemo v Emacsovi standardni dokumentaciji. Zahvaljujem se Etiennu Grossmannu (etienne@anonimo.isr.ist.utl.pt) za zgornji primer. 4. Emacs po meri Emacs prilagodimo po svoji meri, tako da spremenimo kodo v lispu. Nastavimo lahko spremenljivke, ki vplivajo na obna¹anje Emacsa ali dodamo nove funkcije, s katerimi dose¾emo nove uèinke ali pa z njimi nadomestimo obstojeèe funkcije. 4.1. Zaèasno prilagojevanje Èe posku¹amo Emacs prilagoditi, bomo zelo verjetno to najprej storili tako, da bodo spremembe le zaèasne. Èe ga pri prilagojevanju (ang. customization) zelo moèno polomimo, zado¹èa, da Emacs zapustimo z obièajnim ukazom C-x C-c in ga ponovno po¾enemo. Ko pa se odloèimo, katere spremembe ¾elimo ohraniti za vselej, jih lahko dodamo v svojo osebno datoteko .emacs in njihov uèinek se bo poznal ob vsakem zagonu Emacsa. O tem govorimo v naslednjih razdelkih. 4.1.1. Prirejanje vrednosti spremenljivkam Emacs najpreprosteje spremenimo, tako da spremenljivkam, od katerih je odvisno njegovo obna¹anje, doloèimo prave vrednosti. Lispova koda, s katero spremenljivki priredimo vrednost, je videti takole: (setq ime-spremenljivke nova-vrednost) Pri tem je ime-spremenljivke ime spremeljivke, ki ji prirejamo vrednost, nova-vrednost pa vrednost, ki jo prirejamo (V lispovem ¾argonu pravimo, da spremenljivko pove¾emo z vrednostjo.) Lispova funkcija setq ustreza prireditvenemu operatorju (obièajno predstavljenim z znakom =) v drugih programskih jezikih. Opomba: Na tem mestu preskakujem mnoge podrobnosti, da bi ostal dovolj razumljiv. Mnogi poleg te uporabljamo ¹e podobne lispove funkcije, kakr¹na je set ali celo setq-default. Èe ste resnièno radovedni, èemu so namenjene, si oglejte Emacsov priroènik o jeziku lisp. Oglejmo si vrstico iz moje datoteke .emacs: (setq-default transient-mark-mode t) Spremenljivka transient-mark-mode nadzoruje, ali bo obmoèje, ki ga izberemo, poudarjeno oznaèeno ali ne. V mnogih uporabni¹kih programih v GUI se klik mi¹ke in njen premik uporablja za oznaèevanje besedila, pri èemer to postane oznaèeno z inverznim videom ali ustreznimi barvami. Emacs stori podobno, èe je spremenljivka transient-mark-mode nastavljena na neprazno (ang. non-nil) vrednost. Kak¹no vrednost? Poèasi. Potrebna je kratka zastranitev. Veèina programskih jezikov pozna logièni vrednosti resnièno in neresnièno. V jezikih C in C++ je logièna vrednost spremenljivke enaka resnièno, èe je njena vrednost razlièna od niè. V perlu je logièna vrednost enaka resnièno, èe je vrednost spremenljivke razlièna od niè ali od null. ???????Prevod??????? V lispu gre za enako idejo, le imena in oznake so drugaène. Logièna vrednost resnièno je v lispu obièajno oznaèena kot t in neresnièno (ali null) kot nil. Enako kot v drugih jezikih je vsaka vrednost, ki je razlièna od neresnièno, vzeta kot resnièno. Da si ogledamo popolni opis, na kaj vse vpliva spremenljivka transient-mark-mode, uporabimo pomoè na zvezi. Vpi¹imo C-h v ali M-x describe-variable in nato transient-mark-mode. Èe smo leni, si lahko pomagamo s tipko za dopolnjevanje Tab. Vpi¹imo le zaèetni kos imena spremenljivke in pritisnimo tipko Tab. Èe smo ¾e zapisali dovolj¹en del njenega imena, da jo lahko Emacs enoznaèno doloèi, bomo takoj dobili njeno ime izpisano v celoti. Druga spremenljikva, ki jo pogosto nastavljamo, je fill-column. Spremenljivka pove, kako ¹irok je zaslon, da more Emacs v naèinu auto- fill-mode glede na to primerno ovijati besedilo. Da bi si najbolj nazorno ogledali njen uèinek, jo nastavimo na absurdno majhno vrednost: (setq fill-column 20) A zgolj zapis tega izraza ¹e ne stori niè. Emacsu moramo povedati, naj zapisani ukaz tudi izvede (ang. evaluate). Utripalko postavimo na konec izraza in vtipkajmo C-x C-e, kar poklièe funkcijo eval-last- sexp, èe vas ¾e zanima. Ko storimo to, lahko opazimo, da se je v pogovornem oknu na dnu zaslona izpisala vrednost 20 (ali karkoli ste uporabili za nastavitev). To je tudi vrednost funkcije, ki smo jo pravkar uporabili. Da se preprièamo, kako ovijanje po novem deluje, vpi¹imo stavek ali dva. Èe imamo omogoèen podnaèin auto-fill-mode (èeprav ga verjetno nimamo), lahko opazimo, da se besedilo ovija pred 20 stolpcem. Drugaèe pa zatem, ko smo vnesli nekaj besedila, pritisnemo M-q, kar poklièe funkcijo fill-paragraph. Ta pa ovije besedilo zadnjega odstavka. 4.1.2. Zveze z datotekami Emacs lahko tako prilagodimo, da bo doloèeno opravilo samodejno naredil vsakiè, ko odpremo datoteko doloèenega tipa. To je podobno nekaterim GUI, ki samodejno po¾enejo namenski program (ang. application) vsakiè, ko kliknemo na ikono datoteke doloèenega tipa. Ali ¾elimo na primer, da Emacs samodejno preklopi glavni naèin v text- mode vsakiè, ko odpremo datoteko s konènico .txt? V resnici se je to ¾e zgodilo. :-) No, pa naroèimo Emacsu, naj datoteko ,,README'' odpre vselej v naèinu text-mode. (setq auto-mode-alist (cons '("README" . text-mode) auto-mode-alist)) Hmm? Ne da bi se poglobili v programiranje v lispu, ki za obèutek razumevanja ni nujno potrebno, a ¹kodi tudi ne, èe se ga nauèimo, zaenkrat zado¹èa, da povemo, da spremenljivka auto-mode-alist vsebuje seznam parov. Vsak par je sestavljen iz regularnega izraza in iz imena Emacsovega naèina. Èe ime datoteke, ki jo odpiramo, ustreza kateremu od regularnih izrazov (v na¹em primeru nizu ,,README''), bo Emacs pognal naèin, ki smo ga podali. Na prvi pogled zamotana skladnja zgornjega primera je tak¹na zaradi tega, ker dodajamo seznamu parov nov par. Najbr¾ ne bi ¾eleli, da spremenljivki auto-mode-alist zgolj priredimo novo vrednost in pri tem izgubimo vse ¾e nastavljene pare. In èe bi ¾eleli, da Emacs samodejno uporabi naèin html-helper-mode vsakiè, ko odpremo datoteko s konènico .html ali .htm, bomo v svojo datoteko .emacs dodali vrstici: (setq auto-mode-alist (cons '("\\.html$" . html-helper-mode) auto-mode-alist)) (setq auto-mode-alist (cons '("\\.htm$" . html-helper-mode) auto-mode-alist)) ©tevilo mo¾nosti je resnièno neomejeno. 4.2. Uporaba datoteke .emacs Po tem ko smo v Emacsu ¾e pre¾iveli nekaj èasa in dobili obèutek, kaj lahko storimo s prilagojevanjem, bomo morebiti ¾eleli prilagoditve narediti za trajne (ali vsaj do naslednje spremembe). èe uporabljamo Emacs vsak dan, bomo opazili, da velikost datoteke .emacs s èasom nara¹èa. To je zelo drobro, saj ka¾e, da smo ugotovili, kako naj nam Emacs slu¾i tako, kot hoèemo, da bo. Velika ¹koda je, da se enako ne obna¹a ¹e veè programov. èe se morebiti ¹e nismo vpra¹ali, vsakiè ko po¾enemo Emacs, ta najprej v na¹em domaèem imeniku poi¹èe datoteko .emacs. V njej je koda v lispu, ki jo ¾elimo pognati ob vsakem zagonu programa Emacs, s èimer omogoèimo prilagojevanje, o katerem smo pravkar govorili. ¹e en primer iz moje datoteke .emacs: (setq inhibit-startup-message t) Spremenljivka inhibit-startup-message odloèa, ali bo Emacs ob zagonu izpisal pozdravno sporoèilo ali pa ga ne bo. Ko bomo Emacs uporabljali ¾e nekaj èasa, nam bo pozdravljanje verjetno ¹lo po¹teno na ¾ivce. Sam sem znal uporabiti pomoè in poiskati naèin, kako pozdravljanje izklopim. Za nalogo v domaèem imeniku ustvarimo datoteko .emacs in vanjo dodajmo navedeno vrstico. Zapustimo Emacs in ga ponovno po¾enimo. Pozdravnega sporoèila ob novem zagonu ne bi smelo biti. Pogosto bomo v zvezi z Emacsom ali kak¹nim od spremljajoèih paketov prebrali nasvet, kako lahko s primerno kodo v datoteki .emacs prilagodimo njihovo delovanje. Datoteka z odgovori na pogosto zastavljena vpra¹anja, dosegljiva z C-h F, vsebuje nekaj predlogov v zvezi s prilagojevanjem, kar nas bo morebiti zanimalo. 4.3. Paket za prilagojevanje Ko je Emacs s èasom vse bolj rasel in se razvijal, se je nekdo domislil, da ,,mora obstajati la¾ji naèin za novince, da si ga prilagodijo''. Nastal je paket za prilagojevanje customize. Paket ponuja preprostej¹e prilagojevanje delov Emacsa. Preskusimo ga tako, da v glavnem menuju Help obi¹èemo podmenu Customize ali pa vtipkamo M-x customize. Mo¾nosti za prilagojevanje so razvr¹èene v logiène skupine, denimo ,,Editing'', ,,Programming'', ,,Files'' in podobno. Nekatere skupine vsebujejo nove podskupine. èe si Emacs prilagodimo s pomoèjo tega vmesnika, bo Emacs spremembe vpisal v na¹o datoteko .emacs. To je zelo priroèno, saj si lahko spremembe ogledamo in jih po potrebi sami popravimo. Ker ne uporabljam vmesnika za prilagojevanje ,,Customize'', ¾al ne morem veliko povedati o njem. 4.4. Zaslon oken X Kot vsak lepo vzgojen namenski program tudi Emacs upo¹teva sredstva (ang. resource) oken X. S tem poudarjamo, da lahko zaèetne nastavitve, denimo za barve, geometrijo okna in podobne lastnosti oken X, opravimo na enak naèin kot pri programih xterm, nxterm in sorodnih. V ilustracijo navajam ustrezne vrstice iz svoje datoteke ~/.Xdefaults: emacs*Background: DarkSlateGray emacs*Foreground: Wheat emacs*pointerColor: Orchid emacs*cursorColor: Orchid emacs*bitmapIcon: on emacs*font: fixed emacs.geometry: 80x25 Opomba prevajalca: Uporabniki, ki pi¹emo v razporedu ISO-8859-2, imenovanem tudi Latin-2, bomo raje uporabili enakovredno pisavo s ¹umniki, èe jo seveda imamo name¹èeno v sistemu: emacs*font: -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-2 Za ob¹irnej¹a navodila o sredstvih X si moramo ogledati strani man, ki so posveèene oknom X, man X. Chris Gray (cgray4@po-box.mcgill.ca) pripominja: Zdi se, da se v distribuciji Debian datoteka ~/.Xdefaults ne uporablja. Namesto vanjo lahko postavimo ukaze z enakim uspehom v datoteko /etc/X11/Xresources/emacs, pa bomo dobili enako pisane barve, kot ko smo uporabljali RedHat. 5. Priljubljeni paketi Poleg mnogih Emacsovih naèinov je na voljo ¹e veliko dodatnih paketov (ang. package). Imenujem jih paketi, ker so veè kot le novi naèini. Obièajno vkljuèujejo posebne priroène programe (ang. utility) ali pa so tako obse¾ni, da bi bila oznaka ,,naèini'' do njih krivièna. V nekaterih primerih pa gre za tako programsko opremo, ki raz¹irja ali zdru¾uje ostale Emacsove naèine ali pakete. Definicija ni popolnoma jasna, a kakr¹na je, tak¹na zado¹èa. 5.1. VM (po¹tni program) Navedek iz odgovorov na pogosto zastavljena vpra¹anja o VM: VM (View Mail) je podsklop v Emacsu za branje in odpo¹iljanje pisem znotraj Emacsa. Vsebuje ukaze, ki jih prièakujemo in potrebujemo za delo s po¹to, na primer pripravo odgovorov na pisma, shranjevanje pisem v mape, brisanje pisem in podobno. Poleg teh obstajajo ¹e ukazi za pripravo izvleèkov in povzetkov (ang. digest), prepo¹iljanje sporoèil, njihovo urejanje glede na razliène kriterije... Ko sem zaèenjal z Emacsom, sem nekaj èasa uporabljal VM. Zdelo se mi je, da je prava zamenjava za Pine, Elm ali veèino podobnih po¹tnih programov. A za branje po¹te in novic ¾elim uporabljati le en program. VM se razvija ¹e danes in je dobro podprt. Na voljo je na spletni strani http://www.wonderworks.com/vm/. 5.2. Gnus (program za po¹to in novice) Navedek iz priroènika za GNUS: Gnus je laboratorij za branje sporoèil. Omogoèa, da si sko raj vse stvari ogledamo, kot bi bile novice iz novièarske skupine. Z njim lahko beremo elektronsko po¹to, pregledu jemo imenike ali uporabljamo program ftp, z njim lahko celo beremo novièarske skupine. Gnus posku¹a ponuditi uporabnikom, ki berejo novièarske skupine, tisto, kar daje Emacs uporabnikom, ki urejajo besedilo. Gnus uporabnika pri tem nikakor ne omejuje in mu pomaga raz¹iriti Gnus, da se obna¹a, kakor uporabnik ¾eli. Program ne sme upravljati z ljudmi, ti morajo imeti mo¾nost, da s programom storijo ali starejo, karkoli ¾elijo! Kot ste morebiti opazili, trenutno uporabljam za branje po¹te in novièarskih skupin paket GNUS. GNUS se ¹e vedno razvija in je dobro podprt. Na voljo je na spletni strani: http://www.gnus.org/. 5.3. BBDB (rollodex) BBDB je ime za Insidious Big Brother Database, program tipa rollodex. Deluje dobro v povezavi z drugimi Emacsovimi programi za po¹to (vkljuèno z VM in GNUS). Na voljo je na spletni strani: http://pweb.netcom.com/~simmonmt/bbdb/index.html. 5.4. AucTeX (¹e en naèin za TeX) AucTeX je ¹e en naèin za urejanje datotek TeX. Navedek s spletne strani za AucTeX: AUC TeX je raz¹irljivi paket za pisanje in oblikovanje datotek v zapisu TeX za veèino razlièic urejevalnika GNU Emacs. Podprtih je mnogo razliènih paketov s texovimi makroukazi, vkljuèno s paketi AMS TeX, LaTeX in TeXinfo. Na voljo je na spletni strani: http://sunsite.auc.dk/auctex/. 6. Drugi viri Ta razdelek govori o knjigah, spletnih straneh, novièarskih skupinah, seznamih elektronskih naslovov in podobnih krajih, kjer je najti gradivo o Emacsu. 6.1. Knjige Na voljo je le nekaj zares dobrih knjig za uèenje Emacsa. Poleg tega pa bomo ugotovili, da mnoge knjige o Linuxu in Unixu vsebujejo poglavje, ki je namenjeno Emacsu (in urejevalniku vi). 6.1.1. Learning GNU Emacs Avtorji: Debra Cameron, Bill Rosenblatt, Eric S. Raymond Izdajatelj: O'Reilly & Associates - http://www.ora.com/ Knjigo lahko kupimo s popustom pri Amazon.com z njihovim dru¾abni¹kim programom: http://www.amazon.com/exec/obidos/ASIN/1565921526/ Komentar: To je verjetno najbolj¹a knjiga za novince. Potem ko smo si ogledali prièujoèi HOWTO in se sprehodili po odgovorih na pogosto postavljena vpra¹anja, je ta knjiga najprimernej¹i in najbolj izèrpni vodnik. 6.1.2. Writing GNU Emacs Extensions Avtor: Bob Glickstein Izdajatelj: O'Reilly & Associates - http://www.ora.com/ Knjigo lahko kupimo s popustom pri Amazon.com z njihovim dru¾abni¹kim programom: http://www.amazon.com/exec/obidos/ASIN/1565922611/ Komentar Potem ko smo Emacs ¾e uporabljali nekaj èasa in se odloèili, da napi¹emo svoj lastni naèin ali pa opravimo bolj zahtevno prilagoditev, nam bo morebiti koristila ta knjiga. Èetudi nas ne posku¹a nauèiti jezika lisp, vsebuje kratek uvod v ta jezik. 6.1.3. Programming in Emacs Lisp: An Introduction Avtor: Robert J. Chassell Iz datoteke README: To je osnovni uvod v programiranje v Emacsovem jeziku lisp za ljudi, ki niso programerji in ki jih programiranje morda niti ne zanima, a bi si radi prilagodili ali raz¹irili svoje raèunalni¹ko okolje. Priroènik je v celoti na voljo za brezimni ftp v stre¾niku GNU FTP: ftp://prep.ai.mit.edu/gnu/emacs/. Knjiga v lepem tisku je na voljo tudi pri Amazon.com prek njihovega dru¾abni¹kega programoma: http://www.amazon.com/exec/obidos/ASIN/1882114418/jeremydzawodny/. Komentar: Knjiga je dober uvodni priroènik v Emacsov lisp in je primerna tudi za tiste, ki nismo dolgometra¾ni programerji. 6.1.4. The GNU Emacs Lisp Reference Manual Avtor: Richard Stallman Izdajatelj: The Free Software Foundation - http://www.fsf.org/ Priroènik je v celoti na voljo za brezimni ftp v stre¾niku GNU FTP: ftp://prep.ai.mit.edu/gnu/emacs/. Komentar: Knjiga je kljuèni vodnik (ang. definitive guide) za programski jezik Emacs Lisp. 6.2. Spletna mesta 6.2.1. EMACSulation EMACSulation je ime kolumna, ki ga pi¹e Eric Marsden za revijo na zvezi Linux Gazette, dostopno na spletnem mestu http://www.linuxgazette.com/. Ob èasu tega pisanja je bil zadnji èlanek http://www.linuxgazette.com/issue39/marsden.html. Ob koncu èlanka so napotki, kje najti prej¹nje dele. 6.3. Novièarske skupine Pove¾imo se s svojim krajevnim stre¾nikom za novièarske skupine in poi¹èimo tiste, ki v imenu vsebujejo niz ,,emacs'', pa jih bomo gotovo na¹li nekaj. Moj stre¾nik posreduje naslednje skupine: * comp.emacs * comp.emacs.sources * gnu.emacs * gnu.emacs.bug * gnu.emacs.help * gnu.emacs.sources 6.4. Seznami elektronskih naslovov Edini seznam elektronskih naslovov, za katerega vem, da je namenjen uporabnikom Emacsa, zdru¾uje uporabnike razlièice Emacsa za Micro$oftov sistem Windows NT. Veè o tem v seznamu odgovorov na pogosto zastavljena vpra¹anja o NT-Emacs http://www.cs.washington.edu/homes/voelker/ntemacs.html. 6.5. Arhiv za Emacsov lisp Navedek iz datoteke README iz arhiva za Emacsov lisp: Arhivi za Emacsov lisp v stre¾niku ftp.cis.ohio-state.edu vsebujejo razliène ko¹èke in pakete kode v Emacsovem lispu. Emacsov lisp je jezik za raz¹iritev urejevalnika GNU Emacs, ki ga izdaja Free Software Foundation. Èeprav je veèina kode za Emacsov lisp vkljuèena v distribucijo za GNU Emacs, je mnogo ljudi napisalo pakete za vmesnike do drugih siste mov, za bolj¹o podporo urejanju v programskih jezikih, ki jih uporabljajo, dodalo povsem nove funkcije ali pa spreme nilo privzeto obna¹anje Emacsa. Veèino vsebine tega arhiva so pripravili posamezniki, ki so jo distribuirali v javnost prek internetnih seznamov elektronskih naslovov ,,info- emacs'' ali ,,info-gnu-emacs'' in novièarskih skupin ,,comp.emacs'', ,,gnu.emacs'' ali ,,gnu.emacs.sources''. Arhivi so na voljo za brezimni dostop ftp na spletnem mestu ftp://ftp.cis.ohio-state.edu/pub/emacs-lisp/. Opomba: Kolikor vem, arhiv za Emacsov lisp poèasi zastareva. Nove ali osve¾ene pakete na njem vidim le poredko, èeprav vem, da obstajajo in da so celo priobèeni v novièarski skupini comp.emacs.sources. (Prosim, popravite me, èe se motim.) 7. Zahvale Naslednji pisci so pomagali pri nastajanju tega spisa. * Robert Vollmert rvollmer@gmx.net * Larry Brasfield larrybr@seanet.com * Etienne Grossmann etienne@anonimo.isr.ist.utl.pt * Thomas Weinell kf6mli@amsat.org * Adam C. Finnefrock adam@bigbro.biophys.cornell.edu * Chris Gray cgray4@po-box.mcgill.ca * Robert J. Chassell bob@rattlesnake.com * Isaac To kkto@csis.hku.hk * Matteo Valsasna valsasna@elet.polimi.it * Tijs van Bakel smoke@casema.net