Navigare nel codice sorgente

Nella sezione precedente, abbiamo discusso dell'esplorazione del codice sorgente, cioè ottenere informazioni sui simboli, sui file e progetti. Il passo successivo consisterà nel saltare da un punto all'altro del codice, cioè navigarlo. Ci sono ancora diversi livelli ai quali questo può essere fatto: locale, dentro un file, e all'interno di un progetto.

Nota

Molti dei modi di attraversare il codice sono accessibili dal menu Navigazione nella finestra principale di KDevelop.

Navigazione locale

KDevelop è molto di più di un editor, ma è anche un editor di sorgenti. Come tale, ovviamente puoi spostare il cursore verso l'alto, il basso, a sinistra o a destra in un file sorgente. Puoi anche usare i tasti Pag↑ e Pag↓, e tutti gli altri comandi che usi da qualsiasi editor utile.

Navigazione dell'ambito del file e modalità schema riassuntivo

All'ambito del file, KDevelop offre molti modi diversi di attraversare il codice sorgente. Per esempio:

  • Schema riassuntivo: puoi ottenere uno schema riassuntivo di quello che c'è nel file corrente in almeno tre modi diversi:

    • Facendo clic nella casella di testo Schema riassuntivo in alto a destra della finestra principale, o premendo Alt+Ctrl+N si apre un menu a discesa che elenca le dichiarazioni di tutte le funzioni e classi:

      Poi potrai selezionare quale scegliere, o — se ce ne sono molte — iniziare a digitare del testo che potrebbe apparire nei nomi mostrati; in questo caso, mentre continui a digitare, l'elenco diventa sempre più piccolo mentre i nomi che non corrispondono a quello che hai già digitato vengono rimossi finché non sei pronto a selezionarne uno.

    • Selezionando il cursore nell'ambito del file (cioè fuori da qualsiasi dichiarazione o definizione di funzione o classe) e avendo aperto lo strumento Browser del codice:

      Questo fornisce anche uno schema riassuntivo di quello che sta accadendo nel file corrente, e ti permette di selezionare il punto in cui vuoi andare.

    • Passando il mouse sopra la scheda su uno dei file aperti viene prodotto anche uno schema riassuntivo del file nella scheda.

  • I file sorgente sono organizzati come un'elenco di dichiarazioni e definizioni. Premendo Alt+Ctrl+PgUp e Alt+Ctrl+PgDown si salta alla definizione di funzione precedente o successiva in questo file.

Navigazione dell'ambito della sessione e del progetto: navigazione semantica

Come detto da altre parti, KDevelop di solito non considera file sorgente individuali ma piuttosto guarda nel suo insieme ai progetti (o, piuttosto, a tutti i progetti che sono parte della sessione corrente). Di conseguenza, offre molti modi di attraversare interi progetti. Alcuni di questi sono derivati da quello che abbiamo già discusso nella sezione Esplorare il codice sorgente mentre altri sono molto diversi. Il tema comune è che queste caratteristiche di navigazione sono basate sulla comprensione semantica del codice, cioè ti offrono qualcosa che richiede l'analisi di progetti interi e dei dati collegati.

  • Come hai visto nella sezione Esplorare il codice sorgente, puoi ottenere un suggerimento che spiega namespace, classi, funzioni o nomi di variabili passando sopra il tuo mouse o tenendo premuto per un po' il tasto Alt. Ecco un esempio:

    Facendo clic sui collegamenti delle dichiarazioni di un simbolo o espandendo l'elenco degli usi questo consente di saltare in queste posizioni. Un effetto simile può essere ottenuto utilizzando lo strumento Browser del codice discusso anche in precedenza.

  • Un modo più veloce per passare alla dichiarazione di un simbolo senza dover fare clic sui collegamenti nel suggerimento consiste nell'abilitare temporaneamente la Modalità navigazione dei sorgenti tendendo premuti i tasti Alt e Ctrl. In questo modo sarà possibile fare clic direttamente su qualsiasi simbolo nell'editor per passare alla sua dichiarazione.

  • Apertura veloce: un modo molto potente di saltare ad altri file o posizioni è usare i vari metodi di apertura rapida in KDevelop. Ci sono quattro versioni di questi:

    • Apertura veloce classe (NavigazioneApertura veloce classe o Alt+Ctrl+C): otterrai un elenco di tutte le classi in questa sessione. Inizia a digitare il nome (una parte) di una classe e l'elenco continuerà a ridursi a soltanto quelle classe che corrispondono a quello che hai scritto finora. Se l'elenco è abbastanza corto, seleziona un elemento usando i tasti su e giu e KDevelop ti porterà dov'è dichiarata la classe.

    • Apertura veloce funzione (NavigazioneApertura veloce funzione o Alt+Ctrl+M): otterrai un elenco di tutte le funzioni (membro) che fanno parte del progetto in questa sessione, che puoi selezionare nello stesso modo visto sopra. Nota che questo elenco potrebbe includere sia la definizione della funzione che la dichiarazione della stessa.

    • Apertura veloce file (NavigazioneApertura veloce file o Alt+Ctrl+O): otterrai un elenco di tutti i file che sono parte dei progetti di questa sessione, che puoi selezionare nello stesso modo visto qui sopra.

    • Apertura veloce universale (NavigazioneApertura veloce o Alt+Ctrl+Q): se ti dimentichi quale combinazione di tasti è associata ai comandi visti sopra, questo è il coltellino svizzero — che semplicemente ti presenta un elenco combinato di tutti i file, funzioni, classi e altre cose che hai selezionato.

  • Salta alla dichiarazione/definizione: quando si implementa una funzione (membro), c'è spesso bisogno di ritornare al punto in cui è dichiarata la funzione, per esempio per tenere sincronizzato l'elenco degli argomenti delle funzioni tra dichiarazioni e definizioni, o per aggiornare la documentazione. Per farlo, metti il cursore sul nome della funzione e seleziona NavigazioneSalta alla dichiarazione (o premi Ctrl+.) per raggiungere il posto in cui è dichiarata la funzione. Ci sono diversi modi per tornare dove si era prima:

    • Selezionando NavigazioneSalta alla definizione (o premendo Ctrl+,).

    • Selezionando NavigazioneContesto visitato precedente (o premendo Meta+Sinistra), come è stato descritto sopra.

Nota

Saltare alla dichiarazione di un simbolo è qualcosa che non funziona solo quando si mette il cursore sul nome delle funzione che stai implementando al momento. In effetti, funziona anche per altri simboli: mettendo il cursore su una variabile (locale, globale o membro) e saltando alla sua dichiarazione si viene portati alla posizione della dichiarazione. Allo stesso modo puoi mettere il cursore sul nome della classe, per esempio su una variabile di una dichiarazione di funzione, e saltare nella posizione della sua dichiarazione.

  • Commuta tra definizione/dichiarazione: nell'esempio precedente, per saltare al punto in cui è definita la funzione corrente, dovevi mettere prima il cursore sul nome della funzione. Per evitare questo passo, puoi selezionare NavigazioneCommuta definizione/dichiarazione (o premere Shift+Ctrl+C) per saltare alla dichiarazione della funzione sul quale è presente il cursore. La selezione della stessa voce del menu una seconda volta ti riporterà nel posto in cui è definita la funzione.

  • Uso di precedente/successivo: mettendo il cursore sul nome di una variabile locale e selezionando NavigazioneUso successivo (o premendo Meta+Shift+Destra) si viene portati all'uso successivo di questa variabile nel codice. (Nota che questo non solo cerca l'occorrenza successiva del nome della variabile ma tiene conto del fatto che le variabili con lo stesso nome ma in differenti ambiti sono diverse). La stessa cosa vale per l'uso dei nomi delle funzioni. Selezionando NavigazioneUso precedente (o premendo Meta+Shift+Sinistra) si viene portati all'uso precedente di un simbolo.

Nota

Per visualizzare un elenco di tutti gli usi di un nome, posiziona il cursore su di esso e apri lo strumento Browser del codice o premi e tieni premuto il pulsante Alt. Questo è spiegato in dettaglio nella sezione Esplorare il codice.

  • L'elenco dei contesti: i browser web hanno questa caratteristica con la quale si può andare indietro o avanti nell'elenco delle pagine visitate più di recente. KDevelop ha lo stesso tipo di caratteristica, a parte il fatto che invece di pagine web si visitano contesti. Un contesto è la posizione corrente del cursore, e puoi cambiarla allontanandoti da questa usando qualsiasi cosa eccetto i cursori — per esempio, facendo clic su una posizione fornita da un suggerimento nella vista strumento Browser del codice, una delle opzioni date nel menu Navigazione, o qualsiasi altro comando. Usando NavigazioneContesto visitato precedente (Meta+Sinistra) e NavigazioneContesto visitato successivo (Meta+Destra) si viene portati all'elenco dei contesti visitati proprio come i pulsanti indietro e avanti di un browser ti portano alla pagina precedente o prossima tra quelle che hai visitato.

  • Infine, ci sono viste strumenti che ti permettono di navigare in posti diversi del tuo codice. Per esempio, lo strumento Classi ti fornisce un elenco di tutti i namespace e classi di tutti i progetti della sessione corrente, e ti permette di espanderli per vedere le funzioni e variabili membro di ognuna di queste classi:

    Il doppio clic su un elemento (o scorrendo il menu contestuale usando il tasto destro del mouse) ti permette di saltare alla posizione della dichiarazione dell'elemento. Gli altri strumenti ti permettono di fare cose simili; per esempio, la vista strumento Progetti fornisce un elenco di file che sono parte di una sessione:

    Un ulteriore doppio clic su un file lo apre.