Re: How to adjust the lexer used by pygments highlighting

Tom Tromey <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
>>>>> "Simon" == Simon Sobisch via Gdb <[email protected]> writes:

Simon> The highlighting via pygments actually works quite fine in general,
Simon> but in some cases it uses the wrong lexer and then has bad results.

Simon> It _seems_ that pygments' "filename (extension) based" language lookup
Simon> is not used, because tested files using `pygmentize` are always well
Simon> colored, the ones in GDB sometimes use the wrong lexer.

Simon> Question: How can we adjust the lexer used by pygments syntax
Simon> higlighting in GDB for a given file?

There's no customization to be done here, as far as I know, but the code
is in gdb/python/lib/gdb/styling.py.

Simon> Is it possible to setup a filename extension-based selection when GDB
Simon> does not know of the language ("set language " _seems_ to have no
Simon> effect on highlighting, but that would only work if the language is
Simon> known to GDB)? If not can the "normal" extension list [1] be added to
Simon> GDB or the decision which lexer to be used passed on to pygments?

From what I can see it does appear to use just the filename and not the
current language:

    def colorize(filename, contents):
        # Don't want any errors.
        try:
            lexer = lexers.get_lexer_for_filename(filename, stripnl=False)
            formatter = get_formatter()
            return highlight(contents, lexer, formatter).encode(
                gdb.host_charset(), "backslashreplace"
            )
        except:
            return None

We're definitely open to accepting improvements here.

One thing is to be sure you're using pygments and not Source Highlight.

Tom
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.