Navigare tra le funzioni PHP con Notepad++? Si può fare, con un po’ di fantasia
luglio 10, 2009 Scripting e dintorni
Immaginatevi mentre state leggendo il codice PHP di un grosso progetto ( ad esempio quello di WordPress ) con il vostro fido editor Notepad++. Probabilmente troverete delle funzioni di cui non sapete lo scopo oppure di cui volete approfondire il funzionamento leggendone il codice. E allora la soluzione più rapida è quella di effettuare una ricerca nei file contenuti nella cartella principale del progetto ( con ricorsione nelle sottocartelle ) alla ricerca della definizione della funzione. Sicuramente non è il metodo più rapido; come possiamo rimediare e minimizzare anche queste tediose operazioni
AGGIORNAMENTO: modificata leggermente l’espressione regolare per “grep” in modo da trovare anche le funzioni dichiarate con un & davanti al nome.
Innanzitutto voglio consigliarvi il plugin Function List. Questo plugin aggiunge un pannello laterale all’interfaccia di Notepad++ dove è possibile vedere una lista delle funzioni definite all’interno del file corrente. Cliccando su una delle voci il cursore verrà automaticamente spostato nella riga corrispondente. Il pannello è anche filtrabile così da districarsi più facilmente con un numero elevato di funzioni. Porto alla vostra attenzione anche questo e quest’altro post che contengono due ottimi consigli per utilizzare quest plugin.
Tutto questo è sicuramente comodo ma cosa fare se la definizione della funzione non è presente nel file che stiamo esaminando, cosa che spesso accade? Ci viene in aiuto una serie di strumenti. Ecco cosa vi serve ( oltre a Notepad++ ):
- il plugin NppExec per Notepad++ ( lo potete reperire qui, l’ultima versione ad oggi è la 0.3.1 )
- PERL, o un altro linguaggio di scripting, correttamente installato
- GREP per Windows ( lo trovate in questo pacchetto di utility UNIX per Windows nella cartella usr/local/wbin dell’archivio )
Da ora in avanti supporrò che stiate utilizzando PERL come me e che abbiate impostato la directory dell’interprete tra quelle del PATH di sistema. Ponete invece il file grep.exe nella cartella di Windows.
Create un file di testo nella cartella di Notepad++, chiamatelo “open_from_grep.pl” ( senza virgolette ) e incollateci questo script PERL:
$in = ;
if (!$in){
print "ERROR";
exit 0;
}
@in_arr = split /:/, $in;
$file_name = $in_arr[0].":".$in_arr[1];
$row = $in_arr[2];
print $file_name.":".$row."\n";
system("\"c:\\program files\\notepad++\\notepad++.exe\" -n$row \"".$file_name."\"");
print "OK";
Ora aprite Notepad++ ( dopo aver ovviamente installato il plugin NppExec ) e andate nel menù Plugins->NppExec->Execute. Si aprirà una finestra con una casella di testo. Incollate quanto segue:
// script to find function definition in PHP NPP_CONSOLE 0 INPUTBOX "Search this dir" : $(CURRENT_DIRECTORY) cmd /c grep -rinE "^[[:space:]]*function[[:space:]&]+$(CURRENT_WORD)" "$(INPUT)\." | perl "$(NPP_DIRECTORY)/open_from_grep.pl"
Cliccate sul pulsante Save e immettete un nome tipo “search_function”. Potete ora chiudere la finestra cliccando sulla croce in alto a destra e aprire il menù Plugins->NppExec->Advanded Options.
L’immagine sopra vi mostra come sia possibile configurare il nuovo script per apparire nel menù “Macro”; in tal modo potrete associare alla voce del menù una scorciatoia da tastiera per velocizzare ulteriormente l’esecuzione dello script. Per modificare la scorciatoia da tastiera navigate nel menù Configurazione->Tasti di scelta rapida e consultate la scheda “Plugin Commands”.
Ecco fatto! Ora vi basterà porre il cursore del mouse sul nome di una funzione e premere la combinazione di tasti che avete scelto per aprire automaticamente il file .php che contiene la definizione della funzione.
Enjoy
P.S.: se non dovesse funzionare bene in qualche caso fatemi sapere, cercherò di migliorare lo script.
P.S.S.: ah, potete anche usare uno script analogo fatto in Python o Windows Batch, basta che faccia la stessa cosa del mio in PERL
Articoli correlati:

