Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Custom Syntax Highlighting with Sphinx

I am interested in creating a custom syntax highlighter that can be used in a Sphinx environment. Is this possible? If so how would I go about doing it?

like image 924
sean9898 Avatar asked May 09 '13 19:05

sean9898


1 Answers

Background

Sphinx (http://sphinx-doc.org/) internally uses Pygments (http://pygments.org/) as a syntax highligher. Pygments supports adding custom syntax highlighter (lexer) as described here http://pygments.org/docs/lexerdevelopment/.

Example usage

I would try to define a new custom lexer in Pygments and initialize that new custom lexer in the conf.py sphinx configuration file. A small example that should get you started:

from pygments.lexer import RegexLexer
from pygments import token
from sphinx.highlighting import lexers

class BCLLexer(RegexLexer):
    name = 'MYLANG'

    tokens = {
        'root': [
            (r'MyKeyword', token.Keyword),
            (r'[a-zA-Z]', token.Name),
            (r'\s', token.Text)
        ]
    }

lexers['MYLANG'] = BCLLexer(startinline=True)
like image 196
Robert Lujo Avatar answered Nov 06 '22 04:11

Robert Lujo