ProgramßtorskΘ editory (X)WPE a (X)FTE |
Miroslav Jani╣, 9. Φervna 1998 |
Editory wpe a fte budou patrn∞ bli╛╣φ t∞m, kte°φ
p°echßzejφ na Linux z DO$u a UNIXovΘ editory typu vi nebo emacs
jsou pro n∞ zßhadou. Oba popisovanΘ editory se vφce Φi mΘn∞ ·sp∞╣n∞
sna╛φ napodobit "standardnφ" Borlandφ ovlßdßnφ (kterΘ podle mne
nepat°φ mezi nejhor╣φ). Hned na zaΦßtku bych v╣ak zmφnil i nev²hody
t∞chto editor∙ - fte nemß verzi pro terminßl a u wpe se
mi ji v∙bec nepoda°ilo rozchodit. Tak╛e jejich pou╛itelnost je z·╛ena
na X-Window System a u fte je╣t∞ lze pou╛φt verzi pro textovou
konzoli. (BTW: pokud pou╛φvßte KDE, tak vßs mo╛nß pot∞╣φ verze pro
tento X desktop (nenφ ale souΦßstφ standardnφ distribuce fte).)
TΘm∞° dokonalß kopie Borlandφho rozhranφ; umo╛≥uje v╣e (velmi
nadnesen∞ °eΦeno), co si zmlsan² programßtor m∙╛e p°ßt.
Stvo°il ho pan Fred Kruse a ve verzi 1.4.2 existuje bez zm∞ny ji╛ od
roku 1993. Teprve v nedßvnΘ dob∞ byly zdrojßky oprß╣eny a byl zahßjen
projekt "za lep╣φ WPE" (just kidding). Podφvejte se na adresu
http://www.rpi.edu/~payned/xwpe/. Dal╣φ text se bez
v²jimek bude vztahovat ke starΘ verzi 1.4.2.
Podobnou simulacφ Borland∙ je program RHIDE, kter² byl napsßn pro djgpp, co╛ je dosov² port p°ekladaΦe GNU C (produkuje tak dobr² k≤d,
╛e byl pou╛it IDSoftwarem k p°ekladu QUAKEa mφsto Watcom C). RHIDE
existuje jak pod DO$, tak pro Linux. Linuxovou verzi jsem v╣ak
nezkou╣el a o tΘ dosovΘ si pamatuji jen to, ╛e kdy╛ jsem hned na
zaΦßtek zdrojßku napsal komentß°, tak p°i listovßnφ spolehliv∞ zatuhl
:-) Tak╛e toto rozhranφ rßd p°enechßm povolan∞j╣φm...
Obrßzek ukazuje editor xwpe p°i krokovßnφ programu (t∞sn∞ p°ed
tφm, ne╛ mi spadl :-) ).
- vytvß°enφ projekt∙ s definicφ parametr∙ pro p°ekladaΦ i linker
- definice breakpoint∙ a krokovßnφ p°φmo ve zdrojovΘm k≤du, klasickΘ
v²pisy obsahu prom∞nn²ch (Watch) a zßsobnφku programu
(Stack)
- odskakovßnφ na chyby a "warningy" objevenΘ p°ekladaΦem a zp°φstupn∞nΘ
pomocφ okΘnka Messages
- mo╛nost nakonfigurovat a vyu╛φt r∙znΘ p°ekladaΦe - krom∞ C(++) t°eba
Fortran, Pascal Φi LaTeX (hmm... tady je trochu problΘm, proto╛e
xwpe "cpe" zcela svΘvoln∞ libovolnΘmu p°ekladaΦi spu╣t∞nΘmu
z menu p°φkazem Run/Compile parametr -c, tak╛e je t°eba
spou╣t∞t skript, kter² ignoruje prvnφ parametr (-c) a spou╣tφ
latex a╛ s tφm druh²m (filename))
- zobrazovßnφ manov²ch strßnek i GNU info - umo╛≥uje pohodlnou navigaci
dokumentem, leΦ tu a tam ╣patn∞ interpretuje odkaz (spφ╣
ignoruje)...
- "obarvovßnφ" syntaxe (snaha o Φesk² p°eklad (spφ╣ p°epis)
slova highlight) a konfigurace barev editoru a syntaxe
- konfigurace chovßnφ editoru (tabelßtory, autoindent, autosave...),
ale jinak je konfigurace mo╛nostφ editace dost omezenß.
- a nakonec umφ takΘ zcela neΦekan∞ v ten nejnevhodn∞j╣φ okam╛ik spolehliv∞
chcφpnout (hlavn∞ p°i prohlφ╛enφ manov²ch strßnek) ;-) (ale v∞t╣inou
se mu poda°φ rozd∞lanou prßci ulo╛it ...)
Obecn∞ lze °φci, ╛e k programovßnφ (spφ╣e ke zkou╣enφ programovat) je
tento editor celkem pou╛iteln² - napφ╣ete k≤d, rovnou ho p°elo╛φte,
opravφte syntaktickΘ a jinΘ chyby odhalenΘ p°ekladaΦem a m∙╛ete ho
vesele krokovat a provßd∞t s nφm r∙znΘ jinΘ kejkle bez nutnosti
vytvß°et Makefile a spou╣t∞t debugger. Ov╣em k v∞t╣φmu projektu
je Makefile stejn∞ nutno vytvo°it (co s nep°enositeln²m
"projektfajlem"? (N∞jak²m kouzlem (skriptφkem) by z n∞ho ten Makefile
vytvo°it mo╛nß ╣lo...)) a chyby je v zßsad∞ lΘpe v∙bec ned∞lat - u╣et°φ to spoustu prßce s nßsledn²m hon∞nφm n∞jakΘho stupidnφho bugu
;-).
Jinak se mi zdß tento editor dost omezen² - barevnß syntaxe funguje
jen pro pßr vyvolen²ch (C(++), Pascal, Fortran(?)...), indent je
dost hloup², a editor v∙bec neumφ kompletaci slov (dopl≥ovßnφ slov
podle p°edchozφho kontextu). O definovßnφ klßvesov²ch zkratek pro
vklßdßnφ Φasto pou╛φvan²ch v²raz∙ si p°i pou╛φvßnφ tohoto editoru
m∙╛ete nechat jen zdßt. A prßv∞ tyto vlastnosti mß editor fte.
Editor fte si neklade za cφl kopφrovat IDE. Je to jen
editor. Ov╣em editor vhodn² pro programßtory zvyklΘ Borlandφmu
ovlßdßnφ. Zdß se, ╛e byl p∙vodn∞ stvo°en pod OS/2 a teprve postupem
Φasu portovßn na ostatnφ systΘmy i "systΘmy" - DOS, Linux,
Win32. Napsal (a naprogramoval :-) ) ho pan Mirko Macek a je mo╛nΘ ho
zφskat na http://ixtas.fri.uni-lj.si/~markom/fte.
Zde existuje ve verzi pro X-Window a linuxovou konzoli (hovo°φme-li
o mo╛nostech t²kajφcφch se Linuxu). N∞kde na adrese http://www.kde.org lze tΘ╛ najφt port pro KDE od jinΘho
autora. Tato verze mß tu v²hodu, ╛e pokud mßte sprßvn∞ nainstalovanou
Φeskou klßvesnici pod X-Window (Φili chodφ-li vßm t°eba pod KDE
aplikacemi), tak vßm zde bude chodit tΘ╛.
Xfte v plnΘ krßse - ukßzka r∙zn²ch indent styl∙, ty [0] znaΦφ
foldy. Cel² text by po zav°enφ fold∙ m∞l t°i °ßdky...
- KonfigurovatelnΘ zv²razn∞nφ syntaxe (highlighting) - m∙╛ete p°idßvat
vlastnφ definice r∙zn²ch formßt∙ soubor∙. Nadefinovßny jsou tyto
jazyky/formßty: C(++), Java, REXX, Perl, Pascal, Ada, UNIX shell
skripty, tcl, HTML, LaTeX, E-mailovΘ zprßvy, DIFF a dal╣φ. Ne v╣ude
funguje hilite tak, jak by si Φlov∞k p°edstavoval - u HTML nejsou
nadefinovßna n∞kterß klφΦovß slova a JavaScript to v∙bec nerozeznß
:-) V shellovsk²ch skriptech je zase jako p°φkaz zv²razn∞no jen
prvnφ slovo, tak╛e pokud volßte n∞jak² program celou cestou, tak je
zv²razn∞n jen prvnφ adresß° (krom∞ lenosti v╣ak nic nebrßnφ
odstran∞nφ t∞chto nedostatk∙ p°φmo v konfiguraΦnφch souborech).
- Specißlnφ indent pro C(++), Perl, Javu, REXX, p°iΦem╛ pro C existujφ
t°i m≤dy - standardnφ, GNU a Linux kernel styl. CΘΦkovsk² indent
mne opravdu nadchl - na pat°iΦnΘ mφsto na °ßdku kursor odskakuje
hned po stisknutφ klßvesy Enter a inteligentn∞ rozpoznßvß slo╛enΘ
zßvorky. To znamenß, ╛e zdrojßk pφ╣ete bez jak²chkoli starostφ
o formßtovßnφ textu - v╣e se provßdφ automaticky. Dal╣φ pom∙cka
usnad≥ujφcφ orientaci v textu je, ╛e p°i najetφ kursorem na zßvorku
(jakoukoli - [, ], {, },
( a )) se zv²raznφ odpovφdajφcφ zßvorka.
- Schopnost kompletovßnφ slov na zßklad∞ p°edchozφho kontextu - pokud
se v p°edchozφm textu ji╛ danΘ slovo vyskytuje, staΦφ napsat n∞kolik
prvnφch pφsmen a stiskem klßves Ctrl+Tab se slovo automaticky
dopφ╣e (pro lenochy jako jsem jß je to p°φmo terno...). Bohu╛el
to ji╛ nefunguje, kdy╛ n∞co dopisujete na zaΦßtku zdrojßku a slovo,
kterΘ byste cht∞li doplnit, se sice v textu ji╛ vyskytuje, ale
nachßzφ se za inkriminovan²m mφstem :-(
- Folds (Φti faldy ;-) ) - aΦkoli je pro n∞ vytvo°eno
specißlnφ menu, teprve nedßvno (cca p∙l hodiny) jsem pochopil,
k Φemu tohle zvφ°e vlastn∞ je, nebo╗ jsem m∞l Φas, chu╗ a hlavn∞
d∙vod (psanφ tohoto Φlßnku) se tφm zab²vat. Zdß se, ╛e je to velmi
u╛iteΦnß schopnost zp°ehlednit vytvß°en² text - nap°. v C
zdrojßku m∙╛ete pomocφ menu Fold/Create folds at routines
vytvo°it "faldφk" pro ka╛dou funkci. Potom stiskem klßves
Alt+Gray / v╣echny foldy zav°ete. Text se potΘ jevφ jako
seznam funkcφ - zobrazφ se toti╛ pouze prvnφ °ßdek
ve foldu. Na libovoln² fold lze najet kursorem a kombinacφ klßves
Ctrl+Gray + a
Ctrl+Gray - je lze otvφrat Φi
zavφrat. Foldy lze vytvß°et i pomocφ regexpu Φi jak se vßm zachce
- viz menu Fold. Nenφ v╣ak v╣e zlato, co se t°pytφ...
U fold∙ lze definovat pouze zaΦßtek. UkonΦenφ za°φdφ bu∩ definice
dal╣φho foldu nebo konec souboru. To vede nap°. p°i
"ofoldovßnφ" zdrojßku podle funkcφ (viz v²╣e) k tomu, ╛e se
komentß°e p°ed funkcφ, kterΘ se jφ v∞t╣inou takΘ t²kajφ, dostanou
na konec foldu, ve kterΘm je p°edchßzejφcφ funkce. Je zde v╣ak
stßle mo╛nost pou╛φt regexp - tak╛e pokud pφ╣ete komentß°e
k funkcφm ve stylu /* Fce: ... */, m∙╛ete vytvo°it foldy p°es
regexp pomocφ v²razu \/\* Fce:.
- Chovßnφ editoru lze ovliv≥ovat na pom∞rn∞ nφzkΘ ·rovni (vφte, jak
to myslφm - assembler je takΘ programovacφ jazyk nφzkΘ ·rovn∞, ale
lze v n∞m ud∞lat v╣echno). Pro ka╛d² typ dokumentu je vytvo°en
zvlß╣tnφ konfiguraΦnφ soubor, ve kterΘm je nadefinovßn zp∙sob
obarvovßnφ syntaxe, specißlnφ klßvesovΘ zkratky, p°φdavnß menu (viz
HTML), formßtovßnφ textu, okraje a spousta dal╣φch vlastnostφ. V╣e
lze libovoln∞ m∞nit a upravovat podle vlastnφch p°edstav. Je v╣ak
pravda, ╛e je v t∞ch konfiguraΦnφch souborech trochu chaos, ale kdy╛
zaΦnete souborem main.fte, tak se snadno
zorientujete. A editor fte mß pro tyto konfigurßky zvlß╣tnφ
m≤d s barviΦkami :-). Po editaci konfiguraΦnφch soubor∙ je t°eba
je╣t∞ vytvo°it "p°eklad" pomocφ progrßmku cfte
a p°ekopφrovat ho do souboru $HOME/.fterc. Potom znovu
spustφte fte a je to.
- P°eklad a opravy zdrojov²ch text∙ - fte umo╛≥uje spou╣t∞t p°ekladaΦ
na pozadφ (implicitn∞ spou╣tφ make, tak╛e je t°eba vytvo°it
i Makefile (pro kter² je tΘ╛ zvlß╣tnφ m≤d)) a odchytßvß si jeho
chybovΘ hlß╣ky. Potom lze pomocφ okna Messages skßkati po
chybßch a opravovati. «ßdnΘ debugovacφ schopnosti (krokovßnφ Φi
breakpointy) to v╣ak nemß - je ov╣em otßzka, zda je to bug nebo
feature (fprintf(stderr, "Err: blah\n"); takΘ nenφ
k zahozenφ).
AΦkoli ladφcφ schopnosti editoru fte jsou zredukovßny na okΘnko
s chybov²mi hlß╣kami, p°esto si tento editor snadno zφskal mΘ srdce
- jeho implicitnφ nastavenφ mi toti╛ maximßln∞ vyhovuje, a tak zm∞ny
v konfiguraci nebyly n∞jak dalekosßhlΘ. P°idal jsem si pouze m≤d pro
Φeskou klßvesnici, zkratku pro v HTML m≤du
(Ctrl+Space) a je╣t∞ pßr maliΦkostφ jako pou╛φvßnφ ΦeskΘho fontu
nebo p°edefinovßnφ zkratky Ctrl+Tab na Shift+Tab kv∙li
KDE. Samoz°ejm∞, ╛e i tento editor jako v∞t╣ina jin²ch mß svΘ
nedostatky, o kter²ch jsem se zmi≥oval v²╣e, ale tyto nedostatky
bohat∞ vyva╛ujφ mo╛nosti, kterΘ tento editor poskytuje.
|