- p°edchozφ Φlßnek - nßsledujφcφ Φlßnek - obsah - ·vodnφ strßnka -

LinuxovΘ noviny 06/98

ProgramßtorskΘ editory (X)WPE a (X)FTE

Miroslav Jani╣, 9. Φervna 1998

Abstract

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).)

Editor XWPE

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...

[ Xwpe ]

Obrßzek ukazuje editor xwpe p°i krokovßnφ programu (t∞sn∞ p°ed tφm, ne╛ mi spadl :-) ).

StruΦn² v²Φet schopnostφ WPE

  • 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 ...)

Zhodnocenφ

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 XFTE

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 ]

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...

MΘn∞ struΦn² v²Φet schopnostφ FTE

  • 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φ).

Zhodnocenφ

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. *


- p°edchozφ Φlßnek - nßsledujφcφ Φlßnek - obsah - ·vodnφ strßnka -