Skoraj vse prilagoditve urejevalnika Emacs se vršijo s pomočjo spreminjanja kode Lispa. Spremenite lahko spremenljivke, ki vplivajo na način delovanja urejevalnika Emacs, lahko pa mu dodate tudi nove funkcije (ali prepišete obstoječe funkcije -jih zamenjate s svojimi).
Ko boste eksperimentirali s prilagoditvami urejevalnika Emacs, boste verjetno želeli, da so te
prilagoditve samo začasne. Če se kaj hudo zalomi, uporabite samo kombinacijo tipk
C-x C-c
za izhod iz urejevalnika Emacs in ga ponovno zaženete. Ko boste ugotovili,
katere spremembe naj bodo trajne, jih lahko dodate v svojo različico datoteke .emacs
,
kjer se bodo ob zagonu urejevalnika Emacs vedno upoštevale. To bomo obravnavali v naslednjem razdelku.
Prilagoditve boste najenostavneje izvršili tako, da boste spremenili vrednost spremenljivki v urejevalniku. Koda za takšno spremembo izgleda nekako tako:
(setq ime-spremenljivke nova-vrednost)
Kjer je ime-spremenljivke
ime spremenljivke in nova-vrednost
vrednost, ki bi jo radi
dodelili spremenljivki. (Povedano v jeziku Lisp, spremenljivko boste pripeli na določeno vrednost.)
Funkcija setq
v jeziku lisp je analogna dodeljevalnim operatorjem (običajno je to =
) v
drugih programskih jezikih.
OPOMBA: Izpustil sem veliko podrobnosti, da bi razlaga ostala karseda preprosta. Mogoče
boste videli, da drugi ljudje uporabljajo tudi funkcijo programskega jezika Lisp set
ali celo
funkcijo setq-default
. Če vas te funkcije res zanimajo, jih poiščite v referenčnem materialu za Lisp
v urejevalniku Emacs.
Oglejmo si vrstico v moji datoteki .emacs
(setq-default transient-mark-mode t)
Spremenljivka transient-mark-mode
nadzira ali postane področje osvetljeno, kadar ga
označim. V mnogih aplikacijah GUI, kadar z miško izberete območje besedila, le to postane osvetljeno
z neko barvo. Tudi Emacs bo storil tako, če bo nastavljena spremenljivka transient-mark-mode
(na neničelno vrednost).
Na KAKŠNO vrednost?
Dobro. Če se le malce oddaljimo od teme. Večina programskih jezikov uporablja neko notacijo za vrednosti prav/narobe. V jeziku C/C++ se vrednost smatra za pravilno, če je neničelna vrednost. V jeziku Perl je pravilna neničelna vrednost. Tudi v jeziku Lisp velja isti dogovor, razlikujejo se samo imena in simboli.
Pravilno se običajno zapiše s t
, nepravilno (oz nič) pa se zapiše z nil
. Kot v drugih
jezikih, se vsaka neničelna vrednost smatra za pravilno.
Da bi dobili popolen občutek o tem, čemu je način transient-mark-mode
sploh namenjen,
lahko uporabite pomoč na zvezi. Vnesite C-h v
ali M-x describe-variable
in potem
transient-mark-mode
. Če ste tako leni kot jaz, boste verjetno uporabili lastnost dopolnjevanja
s pomočjo tipke Tab
. Vtipkajte samo del imena spremenljivke in pritisnite na tipko Tab
.
Če boste vnesli dovolj imena in ga bo Emacs prepoznal kot unikatno ime, ga bo tudi doplolnil.
Naslednja spremenljivka, ki jo ljudje pogosto spreminjajo je fill-column
. Le ta pove urejevalniku
Emacs, kako širok naj bo zaslon za deljenje besed (in auto-fill-mode
upošteva to vrednost). Vtipkate
lahko neko nesmiselno vrednost:
(setq fill-column 20)
To pa ne bi delovalo. Urejevalniku Emacs morate povedati naj ovrednosti izraz, ki ste ga vnesli.
To storite tako, da postavite točko (kazalec) na konec izraza in potem vnesete C-x C-e
, s čimer
boste poklicali funkcijo eval-last-sexp
če vas seveda to gane. Ko boste to storili, boste lahko opazili,
da se vrednost 20
(oz. katero vrednost ste pač vnesli) izpiše v mini-bufferju na dnu zaslona. To je
samo vrnjena vrednost iz izraza, ki ste ga ovrednotili.
Da bi preskusili če zadeva deluje, vtipkajte stavek ali dva. Če imate vključen način auto-fill-mode
(verjetno ga nimate), boste opazili da se besede delijo na dvajseti vrstici. Ko boste vnesli nekaj besedila,
vtipkajte še M-q
, s čimer boste poklicali funkcijo fill-paragraph
. Le ta bo izvršila deljenje besed.
Urejevalnik Emacs lahko prilagodite tako, da samodejno izvrši določene operacije, ko odprete
določen tip datoteke (ravno tako, kot določeni GUI samodejno zaženejo specifično aplikacijo,
ko kliknete na ikono določene datoteke). Želim si, da bi urejevalnik Emacs
samodejno preklopi v način text-mode
vsakič, ko odprem datoteko s končnico .txt
.
No, dejansko se to že dogaja. :-)
Torej, povejmo urejevalniku Emacs naj vedno preide v način
text-mode
, kadar odprem datoteko z imenom ``README''.
(setq auto-mode-alist (cons '("README" . text-mode) auto-mode-alist))
Huh?
Ne da bi se spustili v podrobnosti programiranja v jeziku Lisp, ki vam jih ni potrebno videti (ne bo pa
nič narobe, če se jih boste naučili), povejmo samo, da spremenljivka auto-mode-alist
vsebuje
seznam parov. Vsak par vsebuje regularni izraz in ime načina v urejevalniku. Če datoteka, ki jo odprete
ustreza regularnemu izrazu (v tem primeru nizu README
) bo urejevalnik Emacs zagnal način,
ki ste ga podali.
Zgornjo skladnjo smo uporabili, ker smo na seznam dejansko dodali nov par. Verjetno si ne želite
preiti na auto-mode-alist
, ne da bi se prej prepričali, da se vrednosti, ki jih že vsebuje, niso izgubile.
Če pa želite, da Emacs samodejno preklopi na način html-helper-mode
vsakič, ko odprete
datoteke, ki se končajo s končnico .html
ali .htm
, bi v vašo datoteko .emacs dodali:
(setq auto-mode-alist (cons '("\\.html$" . html-helper-mode) auto-mode-alist)) (setq auto-mode-alist (cons '("\\.htm$" . html-helper-mode) auto-mode-alist))
Možnosti je res neskončno.
.emacs
Ko boste že nekaj časa delali v urejevalniku Emacs in dobili nekaj občutka, kako vam lahko
koristijo prilagoditve, boste verjetno želeli nekatere stvari narediti trajne (oz. vsaj dokler si ne boste
premislili). Če boste Emacs vsakodnevno uporabljali, boste opazili, da se vaša datoteka .emacs
sčasoma veča. To je vsekakor Dobra Stvar, ker pomeni, da ste našli način, kako prilagoditi
Emacs, da bo deloval, kot vi želite. Prava sramota je, da tega ne omogoča večje
število programske opreme.
Vsakič ko zaženete Emacs, le ta v vašem domačem imeniku poišče datoteko z imenom .emacs
.
Ta datoteka je mesto, kamor bi morali zapisati vso kodo v jeziku Lisp, za katero želite da se samodejno izvede.
Še en primer iz moje datoteke .emacs
:
(setq inhibit-startup-message t)
Spremenljivka inhibit-startup-message
nadzira ali bo Emacs ob zagonu izpisal pozdravno
sporočilo. Čez nekaj časa sem se tega sporočila že pošteno naveličal, torej sem začel iskati način, kako bi
ga izključil.
Za vajo poskusite sami tvoriti datoteko .emacs
in vanjo dodajte to vrstico. Sedaj zaprite
in ponovno zaženite Emacs. Pozdravnega sporočila ne bi smeli več videti.
Večkrat boste v dokumentaciji o načinih v urejevalniku Emacs (ali paketu) naleteli na predloge in
primere, ki jih lahko vstavite v datoteko .emacs
, da bi določen način ali paket deloval na
poseben način.
Tudi GNU Emacs FAQ (C-h F
) vsebuje nekaj tem, ki se nanašajo na datoteke .emacs
.
Mogoče vam bodo v pomoč.
Čeprav je urejevalniku Emacs priljubljenost rasla, nadaljeval pa se je tudi njegov razvoj, je nekdo
rekel ``obstajati mora boljši način s katerim bodo lahko novi uporabniki prilagodili svoj urejevalnik Emacs.''
Plod tega je prilagoditev
.
Prilagoditev nudi več intuitivnih metod za prilagajanje delov urejevalnika Emacs. Da bi to preizkusili,
poglejte v podmeni Customize
v vašem meniju Help
ali pa vtipkajte M-x customize
.
Prilagoditev deli prilagoditve v logične skupine, kot na primer ``urejanje'' (Editing), ``programiranje'' (Programming), ``datoteke'' (Files), itd. Nekatere skupine vsebujejo podskupine.
Če boste spremembe izvajali s pomočjo vmesnika za prilagoditve, jih bo Emacs shranil v vašo datoteko
.emacs
. To je res uporabno, ker lahko na ta način enostavno pregledate (in popravite) spremembe,
ki jih bo opravil za vas.
Vmesnika za prilagoditve ne uporabljam, zaradi tega vam tudi ne morem dati več informacij o njem.
kot vsaka aplikacija, ki se lepo obnaša v sistemu X, tudi Emacs uposteva vaše vire X. To pomeni, da lahko
nadzirate barve, geometrijo in ostale stvari, ki so specifične za sistem X, prav tako, kot lahko to počnete s
programom xterm
, nxterm
, oz. katerim koli.
Pa poglejmo ustrezen del moje datoteke ~/.Xdefaults
:
emacs*Background: DarkSlateGray emacs*Foreground: Wheat emacs*pointerColor: Orchid emacs*cursorColor: Orchid emacs*bitmapIcon: on emacs*font: fixed emacs.geometry: 80x25
Več podrobmosti o virih sistema X boste naši na vaših straneh priročnika X
.
Chris Gray ( cgray4@po-box.mcgill.ca) je napisal še opombo:
V distribuciji Debian izgleda, da se datotek~/.Xdefaults
ne uporablja. Uporabniki distribucije Debian lahko can put what you have given in/etc/X11/Xresources/emacs
and they can have the pretty colors that they had when they were using RedHat.