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.

functions_list

A destra il pannello con la lista delle funzioni

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.

Finestra delle opzioni di NppExec

Finestra delle opzioni di NppExec

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 :-D

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

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Twitter
  • Google Bookmarks
  • MySpace
  • Technorati
  • StumbleUpon
  • LinkedIn
  • FriendFeed

Articoli correlati:

  1. Estendere Notepad++ con Javascript? Possibile grazie a Npp Scripting!
  2. Rilasciato Notepad++ 5.5
  3. Debug di script PHP con Xdebug, Notepad++ e il plugin DBGP
  4. Snippet di codice con Notepad++ e il plugin QuickText
  5. Trovare le differenze tra due file di testo con Notepad++

Tags: ,

Leave a Reply

Get Adobe Flash playerPlugin by wpburn.com wordpress themes