##// END OF EJS Templates
Improve error handling in osutil.c...
Improve error handling in osutil.c 1) In posix part set error when path is too long so instead of SystemError: error returned without exception set it will raise ValueError: path too long 2) In Win32 part replace generic PyErr_SetExcFromWindowsErrWithFilename by PyErr_SetFromWindowsErrWithFilename The exception returned is WinError(based on OSError) and some rudimentary errno translation is performed from Windows error range to errno module friendly range so errors like ENOENT can be handled via symbolic constant and consistently between Win32 and Posix.

File last commit:

r6987:d09e813b default
r7059:6a76cf98 default
Show More
__init__.py
61 lines | 2.0 KiB | text/x-python | PythonLexer
"""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):
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):
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):
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')