Markdown dans Gedit
La coloration syntaxique pour le markdown est plutôt correcte si on tient compte des limites techniques de GtkSourceView. Il s'agit ici d'appliquer des styles aux différents niveaux de titres.
cp /usr/share/gtksourceview-3.0/styles/theme.xml ~/.local/share/gtksourceview-3.0/styles/theme.xml
<style name="markdown:header1" foreground="#0077aa" scale="2" bold="true" />
<style name="markdown:header2" foreground="#0077aa" scale="1.75" bold="true" />
<style name="markdown:header3" foreground="#0077aa" scale="1.5" bold="true" />
<style name="markdown:header4" foreground="#0077aa" scale="1.25" bold="true" />
<style name="markdown:header5" foreground="#0077aa" bold="true" />
<style name="markdown:header6" foreground="#0077aa" underline="true"/>
cp /usr/share/gtksourceview-3.0/language-specs/markdown.lang ~/.local/share/gtksourceview-3.0/language-specs/markdown.lang
<style id="header1" _name="Header 1" />
<style id="header2" _name="Header 2" />
<style id="header3" _name="Header 3" />
<!-- etc. -->
<!-- header 1 -->
<context id="atx-header1" style-ref="header1">
<match>^#\s+.+</match>
</context>
<!-- header 2 -->
<context id="atx-header2" style-ref="header2">
<match>^##\s+.+</match>
</context>
<!-- header 3 -->
<context id="atx-header3" style-ref="header3">
<match>^###\s+.+</match>
</context>
<!-- etc. -->
On peut aussi préférer ne styliser que le texte du titre et laisser en retrait les préfixes:
<!-- header 1 -->
<context id="atx-header1">
<match>^(#)\s+(.+)</match>
<include>
<context sub-pattern="1" style-ref="h-prefix"/>
<context sub-pattern="2" style-ref="header1"/>
</include>
</context>
<!-- header 2 -->
<context id="atx-header2">
<match>^(##)\s+(.+)</match>
<include>
<context sub-pattern="1" style-ref="h-prefix"/>
<context sub-pattern="2" style-ref="header2"/>
</include>
</context>
<!-- header 3 -->
<context id="atx-header3">
<match>^(###)\s+(.+)</match>
<include>
<context sub-pattern="1" style-ref="h-prefix"/>
<context sub-pattern="2" style-ref="header3"/>
</include>
</context>
<context ref="atx-header1"/>
<context ref="atx-header2"/>
<context ref="atx-header3"/>
- Ne pas utiliser les styles « def:header[0-6] » sinon cela s'appliquera à toutes les syntaxes utilisant ses styles comme pour le HTML par exemple (ou alors définir des styles qui vont bien partout — faire varier la taille ne rend pas terrible pour du HTML).
- La gestion de la syntaxe setext reste limitée car GtkSourceView ne permet pas d'écrire des regex multilignes.
On peut aussi ajouter des snippets pour le langage markdown afin d'insérer automatiquement les prefixes de titraille :
<snippet>
<description>h2</description>
<accelerator><![CDATA[<Primary><Shift>2]]></accelerator>
<text><![CDATA[## $GEDIT_CURRENT_LINE]]></text>
</snippet>
<snippet>
<description>h3</description>
<accelerator><![CDATA[<Primary><Shift>3]]></accelerator>
<text><![CDATA[### $GEDIT_CURRENT_LINE]]></text>
</snippet>
J'ai toujours utiliser la titraille setext pour la délimitation visuelle que fournit la ligne de soulignement mais avec GtkSourceView, seule la syntaxe atx permet de faire varier (grossir) la taille du texte du titre.