venerdì 19 giugno 2009

Geany, creare librerie di codice (snippets)

Tra le varie funzioni di Geany, l'editor / IDE di cui ho già avuto modo di scrivere, una interessante anche se un po' nascosta (nel senso che è sì documentata, ma non a portata di click per cui può sfuggire) è la possibilità di creare una libreria di snippets, blocchi di codice che si utilizzano di frequente e per l'inserimento dei quali è quindi comodo predisporsi delle scorciatoie o macro.

Un certo numero di queste macro è definito nel file snippets.conf che si trova in '/usr/share/geany'. La prima cosa da fare è copiare questo file in '/home/username/.config/geany/' (sostituire username con il proprio nome utente su Ubuntu) in modo da poterlo modificare senza perdere le modifiche a seguito di un aggiornamento di Geany.

Apriamo poi il file con un editor di testo o Geany stesso. Troviamo questa parte

[PHP]
for=for ($i = 0; $i < %cursor%; $i++)%brace_open%\n%brace_close%

Per vedere come funziona creiamo un nuovo file PHP in Geany (menù File » Nuovo da modello » Sorgente PHP). Posizionandoci sulla prima riga dopo <?php scriviamo for e premiamo poi il tasto [TAB]: nell'editor vedremo il blocco di codice

Da questo esempio dovrebbe risultare abbastanza chiaro come è strutturata una macro: un nome o chiave seguito dal segno uguale seguito dal blocco di codice tutto sulla stessa riga. Quando nell'editor scriviamo la chiave (for nell'esempio) seguita dal tasto TAB, il blocco di codice corrispondente sarà inserito.

Per semplificare la scrittura di macro, delle sequenze di caratteri di uso frequente possono essere sostituite da variabili segnaposto. Nell'esempio ne troviamo due: %brace_open% e %brace_close%. Quando il blocco di codice viene inserito queste due variabili sono rimpiazzate dai caratteri definiti nella sezione [Special] di snippets.conf

[Special]
brace_open=\n{\n\t brace_close=}\n

Oltre a quelle già definite possiamo aggiungere altre variabili in [Special] da utilizzare nelle nostre macro.

Poiché la definizione di una macro deve stare tutta su una riga si utilizza \n per andare a capo, %cursor% invece indica la posizione dove sarà collocato il cursore una volta che il blocco di codice è stato inserito.

Per fare un altro esempio aggiungo una macro alla sezione [PHP]: la chiamo forar e serve ad impostare un ciclo for per percorrere tutti gli elementi di un array. La definizione è

forar=for ($i = 0, $l = count(%cursor%); $i <= $l; $i++)%brace_open%\n%brace_close%

Quando si modifica snippets.conf con Geany in esecuzione, bisogna ricordarsi di ricaricare la configurazione (menù Strumenti » Ricarica la configurazione) o le nuove macro inserite non saranno disponibili.

Scrivendo nell'editor forar e premendo [TAB] questo è il risultato

Nessun commento: