Edgewall Software

Ticket #5654: pygments-options.diff

File pygments-options.diff, 1.5 KB (added by thatch, 5 years ago)

First version, against r5537 in 0.11-dev

  • mimeview/pygments_renderer.py

     
    5656        to override the default quality ratio used by the 
    5757        Pygments render.""") 
    5858 
     59    pygments_options = ListOption('mimeviewer', 'pygments_options', 
     60        '', doc= 
     61        """List of options to be passed to lexers. 
     62 
     63        For each, a tuple `mode:option` has to be specified, 
     64        for example `php:startinline=1`.  To specify more than 
     65        one option, simply repeat the mode in the style, 
     66        `php:a=1,php:b=2` 
     67        """) 
     68 
    5969    expand_tabs = True 
    6070    returns_source = True 
    6171 
     
    179189            Mimeview(self.env).configured_modes_mapping('pygments') 
    180190        ) 
    181191 
     192        self._options = {} 
     193        for t, opt in [x.split(':', 1) for x in self.pygments_options]: 
     194            opts = self._options.get(t) 
     195            if not opts: 
     196                opts = {} 
     197                self._options[t] = opts 
     198            key, value = opt.split('=', 1) 
     199            opts[str(key)] = value 
     200 
    182201    def _generate(self, language, content): 
    183         lexer = get_lexer_by_name(language, stripnl=False) 
     202        self.log.debug("Pygments renderering for language=%s" % language) 
     203        opts = self._options.get(language, {}) 
     204        opts['stripnl'] = False 
     205        lexer = get_lexer_by_name(language, **opts) 
    184206        return GenshiHtmlFormatter().generate(lexer.get_tokens(content)) 
    185207 
    186208