Molto spesso quando si analizza una codebase grossa c’è la necessità di muoversi nel codice in modo flessibile. Tipo vedi una funzione che viene chiamata e vuoi capire dove è stata definita.
Ci sono vari modi per approcciare il problema. Uno dei più recenti è tramite la tecnologia LSP (Language Server Protocol). Tendenzialmente però richiede l’uso di un server e richiede quindi un minimo di configurazione, più le cose si possono rompere dopo aggiornati e via dicnedo.
Come alternativa lightweight troviamo la tecnologia dei TAGS. È inoltre possibile utilizzare questi tags direttamente da Emacs in modo molto intuitivo. La tecnologia sembra molto più stabile degli LSP.
Supponiamo di lavorare ad un progetto. Ci mettiamo nella root directory del progetto e creiamo il file TAGS con il seguente comando, che in modo ricorsivo va a trovare tutti i file presenti nella cartella che terminano con .h
o .c
.
find . -type f -iname "*.[ch]" | etags -
A questo punto in Emacs possiamo leggere e caricare in memoria il file tags tramite il comando visit-tags-table
.
Una volta che abbiamo caricato il file ci basterà impostare sul nome della funzione / nome del tipo di dato di interesse, e tramite il keybind M-.
sarà possibile navigare direttamente dove la funzione / struct è definita.
Non è completo come LSP, ma può essere molto utile per avere qualcosa di funzionante in modo immediato con essenzialmente nessun tipo di configurazione. Per navigare il codice durante code review / analisi di nuove codebase è molto comodo.
In futuro ci farò un video, scrivo qui prima per comodità.