Il Code Snippet Editor, introdotto con la versione #1787 di IMHO viene fornito del supporto al Syntax Highlighting per 5 linguaggi predefiniti (C#, VB.NET, ILASM, XML e HTML). Il supporto alla colorazione del codice è ottenuto mediante una stretta integrazione con l'editor ICSharpCode.TextEditor, cui l'algoritmo di trasformazione in HTML si aggancia per leggere le informazioni sulla formattazione, sui colori e sui font. Questo significa che potendo aggiungere una nuova definizione di Syntax Highlighting per l'editor, automaticamente questa sarà ereditata anche dall'HTML prodotto per essere immesso nella pagina del weblog.

Il supporto alla colorazione in IMHO è realizzato esponendo all'esterno i file che contengono le regole di colorazione e quindi quanto detto finora, non solo è possibile, ma è anche auspicabile. Creare una nuova sintassi colorata non è una cosa semplicissima, ma nemmeno impossibile. Occorre innanzitutto trovare la cartella \formatters\CodeSnippet\styles nella directory di installazione. In questa cartella è presente un file SyntaxModes.xml che funge da indice dei file di regole.

<SyntaxModes version="1.0">
    <Mode 
file       = "CSharp-Mode.xshd"
          
name       = "C#"
          
extensions = ".cs;"/>
    <Mode 
file       = "VBNET-Mode.xshd"
          
name       = "VisualBasic.NET"
          
extensions = ".vb;"/>
    <Mode 
file       = "VBNET-Mode.xshd"
          
name       = "IL Asm"
          
extensions = ".il;"/>
    <Mode 
file       = "HTML-Mode.xshd"
          
name       = "HTML"
          
extensions = ".html;.html;"/>
    <Mode 
file       = "HTML-Mode.xshd"
          
name       = "XML"
          
extensions = ".xml;"/>
<
/SyntaxModes>

In questo file è possibile aggiungere tutti gli elementi <mode> necessari. Essi dovranno fare riferimento ad un file con estensione .xshd che contiene la definizione delle regole di colorazione del linguaggio. Per la spiegazione della sintassi del file di definizione, vi rimando al sito di ICSharpDevelop nel cui forum si può trovare molto materiale in merito.

powered by IMHO