Načini v urejevalniku Emacs predstavljajo različna obnašanja in lastnosti, ki jih lahko vključite in izključite (ali prilagodite) v različnih okoliščinah. Prav ti različni načini naredijo urejevalnik (Emacs) primeren za pisanje dokumentacije, za programiranje v različnih jezikih (C, C++, Perl, Python, Java, in še v veliko drugih), za tvorjenje domačih strani, pošiljanje elektronskih sporočil, branje novic Usenet, vodenje vaših sestankov in celo za igranje iger.
Načini v Emacsu so dejansko samo knižnice kode v programskem jeziku Lisp, ki na nek način razširijo, prilagodijo ali posodobijo urejevalnik Emacs.
Primarno sta na voljo dva različna tipa načinov: Major in Minor. Dokler ne boste pričeli delali z njimi, boste razliko dokaj težko razumeli. Pa vseeno poskusimo.
V določenem trenutku je lahko aktiven samo en način major, medtem ko je lahko v določenem trenutku aktivnih več načinov minor. Načini tipa major so običajno specifični za določeno nalogo oz. programski jezik, medtem ko so načini minor manjši in manj specifični pripomočki, ki izpolnjujejo veliko opravil.
To zveni nekoliko abstraktno, pa poskusimo razložiti s primerom. Obstaja način, ki ga zelo pogosto
uporabljam, kadar pišem preproste stare tekstovne datoteke. Imenuje se tekstovni način
(text-mode)
. Ta način je bil razvit za pisanje prosto oblikovanega besedila, na primer za datoteke
README. Ta način zna prepoznavati besede in odstavke in običajno preverja, da počne stvari,
ki jih od njega pričakujem, kadar uporabljam običajne navigacijske tipke.
Kadar pa pišem besedila za ljudi, običajno želim, da dobro izgledajo. Besedila morajo biti lepo prelomljena.
Da bi omogočil deljenje besed, samo vključim način tipa minor auto-fill
. Ta način poskuša
storiti Pravilne Stvari, kadar vnašam besedilo in pridem do konca vrstice. Dejstvo da gre za način tipa minor
pomeni, da lahko deluje v različnih načinih tipa major. Definicija ``Prave Stvari'', ko dosežem konec vrstice
se razlikuje kadar sem v tekstovnem načinu (text-mode)
od definicije kadar sem na primer
v java-načinu (java-mode)
. Ne želim da bi bila moja koda jezika Java deljena, kot da bi šlo
za slovensko besedilo. Vsekakor pa želim, da so bloki komentarja v kodi jezika Java
pravilno deljenji! Način auto-fill
je dovol prebrisan, da za te stvari samodejno poskrbi.
Avtorji številnih načinov v urejevalniku Emacs so se zelo potrudili, da stvari, ki bi morale delovati kot načini tipa minor tako tudi delujejo.
Če se vrnete nazaj in si ogledate skico ASCII zalona urejevalnika Emacs, boste opazili, da načinovna vrstica prikazuje načine v katerih je Emacs. V tistem primeru je bil to način z imenom ``Lisp Interaction'', ki je privzet način. Uporaben je samo v primeru, če boste želeli programirati v Lispu. (Zakaj pa ne, saj je večina urejevalnika Emacs napisana v tem jeziku?)
Prvo in najpomembnejše, Emacs je zgradil programer za programerje. Obstajajo zelo kvalitetni načini za skoraj vse priljubljene programske jezike (in celo za nekatere manj priljubljene). Na kratko bom opisal samo nekatere.
Večina programskih načinov ima nekaj skupnih karakteristik. Običajno izvajajo nekatere ali vse izmed naslednjih operacij:
Obstaja tudi nekaj načinov, ki niso specifični za jezik, pomagajo pa pri izvajanju opravil, ki so običajni pri programiranju v večini jezikov. Stvari kot je komuniciranje z vašo programsko opremo za nadziranje različic, samodejno dodajanje komentarjev v vašo kodo, tvorjenje datotek Makefiles, posodabljanje dnevnikov, itd.
Ko seštejete vse te načine in dodate še zrelost in zanesljivost kode urejevalnika Emacs, ga je kaj mogoče primerjati s komercialnimi Integriranimi razvojnimi okolji (Integrated Development Environments - IDE) za jezike kot sta C++ in Java. Seveda pa je urejevalnik Emacs prosto dostopen.
Ker je skladnja jezikov C, C++, in Java dokaj podobna, obstaja en sam način urejevalnika
Emacs, ki skrbi za vse tri jezike (pa tudi za Objective-C in IDL). Je zelo zrel in popoln paket in je
vključen v distribucijo Emacsa. Ta način pokličete s kombinacijo tipk cc-mode
ali CC Mode
.
Več podrobnosti ali če želite dobiti novo različico najdete na spletnem naslovu http://www.python.org/emacs/.
Dejansko obstajata dva načina za urejanje kode Perl v urejevalniku Emacs. Prvi način pokličete
s kombinacijo tipk perl-mode
(kot ste verjetno že sami ugotovili) drugega pa s kombinacijo
cperl-mode
. Ne vem zakaj obstajata dva načina (tega ne piše v dokumentaciji), zdi pa se, da
je način perl-mode
originalni način za urejanje kode Perl v urejevalniku Emacs. Vsebuje
nekoliko manj lastnosti kot cperl-mode
, manjka pa mu tudi sposobnost prepoznavanja
nekaterih novejših konstruktov jezika Perl.
Jaz osebno uporabljam in vam priporočam cperl-mode
, ki je dokaj aktivno vzdrževan in
vsebuje vse lastnosti, ki sem jih kadarkoli želel. Zadnjo različico lahko najdete na naslovu:
ftp://ftp.math.ohio-state.edu/pub/users/ilya/emacs.
Ne držite me za besedo. Preizkusite oba in izberite tistega, ki bolj ustreza vašim zahtevam.
Tudi za Python (še en zelo priljubljen skriptni jezik) je v urejevalniku Emacs na voljo način. Kolikor vem, tega načina ni v distribuciji urejevalnika GNU Emacs, je pa priložen distribuciji urejevalnika XEmacs. Vendar dokaj dobro deluje v obeh urejvalnikih.
Način python-mode
lahko najdete na uradni spletni strani Pythona
http://www.python.org/emacs/python-mode/.
Obstaja veliko veliko ostalih načinov za urejanje, ki pomagajo programerjem. Ti načini vam lahko pomagajo pri stvareh kot so:
In še veliko več. Oglejte si zadnji del te dokumentacije, kjer boste našli več informacij o dodatkih in iskanju drugih načinov.
Posebni načini urejevalnika Emacs niso omejeni samo na tiste ljudi, ki so jih napisali. Tudi ljudje, ki pišejo dokumentacijo (kakršno koli), lahko imajo koristi od velikega izbora načinov v urejevalniku Emacs.
ispell
)Avtorji, ki pišejo različno dokumentacijo, morajo vsake toliko časa preveriti pravilnost črkovanja.
Če imate nameščen GNU ispell, lahko uporabite kombinacijo tipk M-x ispell
in
preverite pravilnost črkovanja v trenutnem bufferu. Če ispell najde besede, ki jih ne pozna, vas bo o
tem obvestil s pomočjo seznama možnih zamenjav in vam omogočil izbrati eno (ali nobeno) izmed njih.
Njegova funkcionalnost se lahko kosa s črkovalniki v priljubljenih komercionalnih paketih
programske opreme.
html-helper
)Če vsake toliko časa napišete kakšno datoteko tipa HTML (ali pa to počnete pogosto), boste
mogoče preizkusili način html-helper-mode
. Dobite ga lahko na naslovu
http://www.santafe.edu/~nelson/tools/,
kot tudi dokumentacijo in stvari, ki so povezane s tem načinom.
Kot je razvidno iz njegovega imena, način html-helper-mode
nudi veliko stvari, ki pomagajo
tistim ljudem, ki še vedno ročno pišejo dokumente tipa HTML -na staromoden način.
tex-mode
)Kadar pišete dokumente v urejevalniku TeX, je pogostokrat v pomoč, če si priskrbite urejevalnik Emacs,
ki vnese nekoliko barv in nudi osvetljevanje oklepajev in ostalih znakov. Način tex-mode
sam poskrbi za te stvari.
Čeprav ne pišem več pogostokrat neposredno v urejevalniku TeX, če pa to že počnem, ta način poskrbi za preglednejšo izvorno kodo TeX.
sgml-mode
)Dokument, ki ga sedaj berete je bil napisan v SGML (oz. pretvorjen v format, v katerem ga trenutno
berete). sgml-mode
nudi vse osnove za pisanje dokumentov tipa SGML: ovrednotenje (validation),
osvetljevanje, forward-tag, backward-tag in še veliko več. Ta način je standarden del urejevalnika Emacs.
Seveda obstaja še veliko drugih priročnih načinov, ki vam olajšajo delo. Naštel bom samo nekaj najbolj priljubljenih:
vc
mode)Način vc
komunicira z veliko večino popularnih programov za nadzor različic (RCS, SCCS,
CVS), kar zelo poenostavi označevanje in odznačevanje datotek, upravljanje z izdajami itd. Je standarden
del urejevalnika Emacs, dokumentacijo pa lahko najdete v dokumentaciji urejevalnika Emacs.
Zakaj bi odpirali novo okno X ali navidezno konzolo samo zaradi tega, da bi izvršili nekaj ukazov
v lupini? Storite to kar v urejevalniku Emacs in si prihranite nekaj težav. :-)
M-x shell
bo znotraj bufferja urejevalnika Emacs zagnal lupino. V tem bufferju lahko počnete
skoraj vse stvari, ki jih lahko počnete tudi v običajnem pozorniku lupine (razen zaganjanje programov
kot je vi
ali pine
), ker se urejevalnik Emacs v ozadju pogovarja z vašo dejansko lupino.
Tudi to je standarden del urejevalnika Emacs in je dokumentiran v dokumentih urejevalnika Emacs.
Zakaj bi odpirali novo okno X ali navidezno konzolo, samo da bi zagnali telnet ali FTP? Storite to kar v urejevalniku Emacs in si prihranite nekaj težav. (Ali ste že opazili, da se ponavljam?)
Prav tako kot zaganjanje lupine znotraj urejevalnika Emacs, lahko zaženete tudi telnet in ftp.
Preizkusite M-x telnet
ali M-x ftp
in se prepričajte sami. Preberite dokumentacijo
in poiščite vse podrobnosti.
Zakaj bi prehajali v drugo okno X ali navidezno konzolo, samo da bi prebrali strani programa man? Storite to kar v urejevalniku Emacs in si prihranite nekaj težav. (Obljubim, da bom sedaj nehal s tem.)
Prav tako kot zaganjanje lupine znotraj urejevalnika Emacs, lahko prebirate tudi strani priročnika.
Preiskusite M-x man
in se prepričajte sami. Več podatkov lahko najdete v dokumentaciji.
Citat iz dokumentacije ange-ftp
:
Ta paket poskuša olajšati dostopanje do datotek in imenikov, ki uporabljajo FTP znotraj urejevalnika GNU Emacs. Podmnožica teh običajnih rutin za delo z datotekam je razširjena na delo s progamom FTP.
To pomeni, da lahko obravnavate datoteke, ki so na oddaljenih računalnikih, kot bi bile lokalne.
Če torej morate urediti datoteko na drugem računalniku, samo povejte urejevalniku Emacs naj jo odpre
(s pomočjo malce različne sintakse poti) in poskrbi za vse podrobnosti prijavljanja in prejemanja datoteke.
Ko potem shranite datoteko s pomočjo C-x C-s
, ange-ftp
prestreže proces shranjevanja
in datoteko zapiše nazaj na oddaljen računalnik.
Malce drugačna sintaksa poti se glasi... Datoteka z imenom ``mojadatoteka'', v imeniku ``uporabnik '', na
računalniku z imenom ``moj.gostitelj.org'' se lahko odpre z odprtjem datoteke (C-x f
):
/uporabnik@moj.gostitelj.org:~uporabnik/mojadatoteka
Tudi to je standardni del distribucije urejevalnika Emacs, torej lahko najdete informacije v dokumenaciji za urejevalnik Emacs.
Za zgornji primer se zahvaljujem Etiennu Grossmannu ( etienne@anonimo.isr.ist.utl.pt).