ugrás a tartalomhoz

Ragyogó php-mode Emacshoz

Török Gábor · 2007. Dec. 9. (V), 17.03
PHP alapú fejlesztésre Emacshoz mindidáig nagy megelégedésemre Fred Yankowski php-mode-ját használtam. Az alapvetően a c-mode képességeire támaszkodó, némi többlet színkiemelést nyújtó és beágyazott HTML-t támogató bővítményből az általam hiányolt két funkciót – úgy mint automatikus kulcsszó kiegészítés és kód validáció – pedig megoldottam a DIY szellemiségében.

A What Comes with Mewde? (My Emacs Web Development Environment) bemutatójában olvastam előszőr Vincent Debout az XEmacshoz készített, a Mewde keretében pedig GNU Emacs kompatibilissá tett php-mode-járól, amely a hivatalos Ubuntu tárolóból is elérhető például, ha jól láttam. Fred csomagjához képest Vincent variánsa a következő ismérvekkel bír.

Rendelkezik beépített kifejezés (függvények, változók, szövegliterál stb.) kiegészítővel, ehhez az etagsot alkalmazza a háttérben, így rettentőten gyors. Külön klassz, hogy függvénynevek kiegészítésekor alapértelmezetten is eltérő színnel jelzi a beépítetteket és az általunk definiáltakat. Fred mode-jához írt kiegészítésemben a dabbrev-expand-del vettem ezt az akadályt, természetesen azzal a korláttal, hogy az csak az aktuális pufferből gyűjtötte le a kiegészíthető kulcsszavakat, itt pedig egy teljes körű megoldásról beszélhetünk. Ehhez kapcsolódik szervesen az intelligens tabulátor kezelés, amely kifejezés előtt behúz (indent), kifejezés gépelésekor kiegészít, egyéb esetekben pedig tabulátor karaktert (illetve a beállítástól megfelelő szóköz mennyiséget) szúr be.

Gyorsbillentyűvel elérhető az aktuálisan szerkesztett kód szintaktikai helyességének ellenőrzése, noha erre célszerűbb eszköznek tartom a Flymake PHP-t, amely gépelés közben is képes a validáció elvégzésére, továbbá testreszabható regex gyűjtőjének köszönhetően kibányássza az érdemi információt az értelmező hibaüzenetéből és rááll a sebzett sorra.

Az áttörést és egyúttal a váltást azonban nálam az eljárás sablonozó funkciója hozta.

A substr() függvény argumentumainak megadása a sablon funkció segítségével


Mióta néha foglalkozom C nyelvű fejlesztéssel is, a szabványos kódtárakban megszokott függvények PHP-s megfelelőinek paraméterezése már kevesebb problémát szokott okozni, de azért még mindig erősen a PHP kézikönyvre támaszkodom egy-egy ritkábban használt függvény argumentumainak megfelelő sorrendű deklarációjához. Ezt a problémát oldja meg egyfelől a mode a menüsorból előhívható függvény skeleton makrók meghívásával (Templates), de az igazi erőssége ott mutatkozik, amikor gépelés közben a függvény beírását követően egy szóközt nyomunk, és a minibufferen keresztül kommunikálva bekéri a szükséges argumentumokat a program. Ezt a legtöbb IDE felbukkanó segédszöveggel oldja meg, ez az elképzelés azonban működik szöveges módú felhasználásnál is. Külön említésre méltó, hogy a skeletonokhoz a mode az általam a múltkori MSDN workshop óta megkedvelt jelölést használja.

Kényelmes vonása továbbá a csomagnak a speedbar-integráció, illetve az akár a speedbarból vagy menüből elérhető osztály és függvény legyűjtés. PHP alapú fejlesztéshez Emacsban mindenféleképpen ajánlom.