Help:SyntaxHighlighting
From UIC
Contents |
Syntax Highlighting
Il wiki e' in grado di evidenziare automaticamente le parole chiavi, funzioni e argomenti dei seguenti linguaggi:
|
|
|
Il syntax highlighter e' semplicissimo da utilizzare, basta includere nel tag <code> il parametro: lang="linguaggio", dove linguaggio e' uno di quelli elencati poco sopra. Facciamo un esempio, volete effettuare l'highlight di un listato in assembler x86 (o x86_64), bastera' usare il tag <code> in questo modo:
- <code lang="asm">
facciamo un test:
and eax,0FFFFh
mov hitpoint.x,eax
Stessa cosa per altri linguaggi, proviamo con C usando il tag in questo modo:
- <code lang="C">
#include <string.h>
int strncmp(s1, s2, n)
register const char *s1, *s2;
register size_t n;
{
if (n == 0)
printf("aaa");
return (0);
do {
if (*s1 != *s2++)
return (*(const unsigned char *)s1 -
*(const unsigned char *)(s2 - 1));
if (*s1++ == 0)
break;
} while (--n != 0);
return (0);
}
Lo stesso discorso vale per ogni altro linguaggio tra quelli elencati qui sopra.
Sintassi avanzata del tag
Numero di riga
Grazie al syntax highlighter e' possibile anche inserire il numero di riga di fianco al sorgente, basta aggiungere il parametro line=GESHI_NORMAL_LINE_NUMBERS al tag, facciamo un esempio utilizzando:
- <code lang="asm" line=GESHI_NORMAL_LINE_NUMBERS>
- ; Le righe vengono numerate automaticamente
- mov eax,lParam
- and eax,0FFFFh
- mov hitpoint.x,eax
E' possibile indicare al wiki da quale numero iniziare il conteggio, questa feature e' utile nel caso si analizzi in due momenti un unico snapshot di codice, per iniziare il conto dal numero 10 utilizzeremo il tag in questo modo:
- <code lang="asm" line=GESHI_NORMAL_LINE_NUMBERS start=10>
- ; Le righe iniziano il conteggio da 10
- mov eax,lParam
- and eax,0FFFFh
- mov hitpoint.x,eax
Strict mode
Alcuni linguaggi interpretati, come PHP, vengono eseguiti soltanto se si trovano all'interno dei tag <? ?>, ma in mezzo al codice PHP puo' trovarsi senza problemi anche dell'HTML e questo confonde la maggior parte degli highlighter, cosa fare dunque se il vostro codice non viene evidenziato correttamente? Bastera' dichiarare il parametro strict nel tag <code></code>, ad esempio cosi':
- <code lang="asm" strict>
E dal momento che un'immagine vale piu' di mille parole, facciamo una prova, _senza_ dichiarare il tag strict:
Come vedete, il codice PHP non viene affatto evidenziato, anzi appare come una dichiarazione di stringa, proviamo quindi a dichiarare il parametro strict:
Ecco che il codice viene evidenziato in maniera corretta.
Overflow
Puo' capitare che il codice vada oltre i margini della pagina, sarebbe buona norma correggere il listato per evitare che questo accada... In fondo basta andare a capo. Ma se avete una valida ragione per non farlo... Non preoccupatevi, verra' generato automaticamente uno scroll per consentirvi di visualizzare correttamente il listato. Ricordate che il codice ordinato ed entro i margini si legge molto meglio, percio' correggete sempre i vostri listati nel caso di overflow non voluti.
#include <string.h>
int strncmp(s1, s2, n)
register const char *s1, *s2;
register size_t n;
{
if (n == 0)
printf("aaa");
return (0);
do {
if (*s1 != *s2++)
return ( *(const unsigned char *)s1 - *(const unsigned char *)(s2 - 1));
if (*s1++ == 0)
break;
} while (--n != 0);
return (0);
}
Stile personalizzato
Il tag <code> è molto flessibile, potete specificare al suo interno tutti i parametri utilizzati dallo standard CSSCascading Style Sheets: i così detti fogli di stile, servono a personalizzare il layout senza intervenire in maniera diretta sul codice html della pagina, ad esempio facendo così:
- <code style="background-color: #def8d4; font-weight: bold; border-style: solid;">Codice....</code>
Linguaggio non supportato
Cosa accade se il linguaggio che state inserendo non e' supportato? Niente di particolare, semplicemente non verra' evidenziato! In questo caso NON specificate il parametro lang, ed inserite il codice come fate di solito, se avete bisogno di evidenziare qualcosa, ad esempio dei commenti, e' presente il tag <comment></comment> che vi consente di colorare una stringa, e va usato cosi':
<code> pop ciccio->borsello <comment>// Questo commento verra' evidenziato</comment> save bubba->geppetto.cucchiaio print "mucca" </code>
Facciamo il solito test:
save bubba->geppetto.cucchiaio
print "mucca"
Se avete personalizzato la vostra toolbar, allora avrete anche un comodo pulsante per inserire automaticamente questo tag, si trova tra il pulsante "code" ed il pulsante "<br />". Non potrete pero' far uso di tag html perche' questi vengono encodati proprio dal tag <code> nelle rispettive html entities, se volete usare dei colori, potete semplicemente utilizzare il tag PRE, ma questo e' spiegato a dovere nella guida per gli editori.