diff hgext/highlight/__init__.py @ 6987:d09e813b21e3

highlight: only pygmentize for HTML mimetypes For non-html mimetypes it doesn't make much sense. This also fixes the issue that highlight unconditionally adds a <link/> tag for its CSS to the template's header (which is pointless in text/plain output).
author Rocco Rutte <pdmef@gmx.net>
date Fri, 05 Sep 2008 10:39:57 +0200
parents ce94b3236ea4
children 9df67ee30ef5
line wrap: on
line diff
--- a/hgext/highlight/__init__.py	Fri Sep 05 10:39:19 2008 +0200
+++ b/hgext/highlight/__init__.py	Fri Sep 05 10:39:57 2008 +0200
@@ -25,14 +25,25 @@
 web_annotate = webcommands.annotate
 
 def filerevision_highlight(web, tmpl, fctx):
-    style = web.config('web', 'pygments_style', 'colorful')
-    highlight.pygmentize('fileline', fctx, style, tmpl)
+    mt = ''.join(tmpl('mimetype', encoding=web.encoding))
+    # only pygmentize for mimetype containing 'html' so we both match
+    # 'text/html' and possibly 'application/xhtml+xml' in the future
+    # so that we don't have to touch the extension when the mimetype
+    # for a template changes; also hgweb optimizes the case that a
+    # raw file is sent using rawfile() and doesn't call us, so we
+    # can't clash with the file's content-type here in case we
+    # pygmentize a html file
+    if 'html' in mt:
+        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)
+    mt = ''.join(tmpl('mimetype', encoding=web.encoding))
+    if 'html' in mt:
+        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):