Mercurial > public > mercurial-scm > hg
diff hgext/highlight/__init__.py @ 6938:ce94b3236ea4
highlight: split code to improve startup times
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Mon, 25 Aug 2008 23:04:56 +0200 |
parents | |
children | d09e813b21e3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hgext/highlight/__init__.py Mon Aug 25 23:04:56 2008 +0200 @@ -0,0 +1,50 @@ +"""a mercurial extension for syntax highlighting in hgweb + +It depends on the pygments syntax highlighting library: +http://pygments.org/ + +To enable the extension add this to hgrc: + +[extensions] +hgext.highlight = + +There is a single configuration option: + +[web] +pygments_style = <style> + +The default is 'colorful'. + +-- Adam Hupp <adam@hupp.org> +""" + +import highlight +from mercurial.hgweb import webcommands, webutil, common + +web_filerevision = webcommands._filerevision +web_annotate = webcommands.annotate + +def filerevision_highlight(web, tmpl, fctx): + style = web.config('web', 'pygments_style', 'colorful') + highlight.pygmentize('fileline', fctx, style, tmpl) + return web_filerevision(web, tmpl, fctx) + +def annotate_highlight(web, req, tmpl): + fctx = webutil.filectx(web.repo, req) + style = web.config('web', 'pygments_style', 'colorful') + highlight.pygmentize('annotateline', fctx, style, tmpl) + return web_annotate(web, req, tmpl) + +def generate_css(web, req, tmpl): + pg_style = web.config('web', 'pygments_style', 'colorful') + fmter = highlight.HtmlFormatter(style = pg_style) + req.respond(common.HTTP_OK, 'text/css') + return ['/* pygments_style = %s */\n\n' % pg_style, fmter.get_style_defs('')] + + +# monkeypatch in the new version + +webcommands._filerevision = filerevision_highlight +webcommands.annotate = annotate_highlight +webcommands.highlightcss = generate_css +webcommands.__all__.append('highlightcss')