##// END OF EJS Templates
hghave: add "chg" flag to skip tests that can't be compatible with chg...
hghave: add "chg" flag to skip tests that can't be compatible with chg Several tests fail with chg for several reasons such as loaded chgserver extension, running uisetup() per server instead of per runcommand, etc. Since these tests can't/shouldn't be changed to be chg friendly, we need a flag to skip them. This patch explicitly drops CHGHG environment if chg isn't involved. This way, hghave can just check if CHGHG exists.

File last commit:

r27637:b502138f default
r28880:f74eed31 default
Show More
highlight.py
75 lines | 2.6 KiB | text/x-python | PythonLexer
Martin Geisler
highlight: add copyright and license header
r8251 # highlight.py - highlight extension implementation file
#
# Copyright 2007-2009 Adam Hupp <adam@hupp.org> and others
#
# This software may be used and distributed according to the terms of the
Matt Mackall
Update license to GPLv2+
r10263 # GNU General Public License version 2 or any later version.
Patrick Mezard
highlight: split code to improve startup times
r6938 #
# The original module was split in an interface and an implementation
# file to defer pygments loading and speedup extension setup.
from mercurial import demandimport
Benoit Boissinot
fix coding style (reported by pylint)
r10394 demandimport.ignore.extend(['pkgutil', 'pkg_resources', '__main__'])
Matt Mackall
move encoding bits from util to encoding...
r7948 from mercurial import util, encoding
Patrick Mezard
highlight: split code to improve startup times
r6938
from pygments import highlight
from pygments.util import ClassNotFound
from pygments.lexers import guess_lexer, guess_lexer_for_filename, TextLexer
from pygments.formatters import HtmlFormatter
SYNTAX_CSS = ('\n<link rel="stylesheet" href="{url}highlightcss" '
'type="text/css" />')
Gregory Szorc
highlight: add option to prevent content-only based fallback...
r26680 def pygmentize(field, fctx, style, tmpl, guessfilenameonly=False):
Patrick Mezard
highlight: split code to improve startup times
r6938
# append a <link ...> to the syntax highlighting css
Matt Mackall
highlight: fix to work with caching templater
r10959 old_header = tmpl.load('header')
Patrick Mezard
highlight: split code to improve startup times
r6938 if SYNTAX_CSS not in old_header:
timeless
cleanup: remove superfluous space after space after equals (python)
r27637 new_header = old_header + SYNTAX_CSS
Patrick Mezard
highlight: split code to improve startup times
r6938 tmpl.cache['header'] = new_header
text = fctx.data()
if util.binary(text):
return
Matt Mackall
highlight: ignore Unicode's extra linebreaks (issue4291)...
r23613 # str.splitlines() != unicode.splitlines() because "reasons"
for c in "\x0c\x1c\x1d\x1e":
if c in text:
text = text.replace(c, '')
Yuya Nishihara
highlight: fixes garbled text in non-UTF-8 environment...
r9424 # Pygments is best used with Unicode strings:
# <http://pygments.org/docs/unicode/>
text = text.decode(encoding.encoding, 'replace')
Christian Ebert
highlight: convert text to local before passing to pygmentize (issue1341)...
r7120
Patrick Mezard
highlight: split code to improve startup times
r6938 # To get multi-line strings right, we can't format line-by-line
try:
Alexander Plavin
highlight: fix page layout with empty first and last lines...
r19169 lexer = guess_lexer_for_filename(fctx.path(), text[:1024],
stripnl=False)
Patrick Mezard
highlight: split code to improve startup times
r6938 except (ClassNotFound, ValueError):
Gregory Szorc
highlight: add option to prevent content-only based fallback...
r26680 # guess_lexer will return a lexer if *any* lexer matches. There is
# no way to specify a minimum match score. This can give a high rate of
# false positives on files with an unknown filename pattern.
if guessfilenameonly:
return
Patrick Mezard
highlight: split code to improve startup times
r6938 try:
Alexander Plavin
highlight: fix page layout with empty first and last lines...
r19169 lexer = guess_lexer(text[:1024], stripnl=False)
Patrick Mezard
highlight: split code to improve startup times
r6938 except (ClassNotFound, ValueError):
av6
highlight: exit early on textual and unknown files (issue3005)...
r25899 # Don't highlight unknown files
return
# Don't highlight text files
if isinstance(lexer, TextLexer):
return
Patrick Mezard
highlight: split code to improve startup times
r6938
av6
highlight: produce correct markup when there's a blank line just before EOF...
r25867 formatter = HtmlFormatter(nowrap=True, style=style)
Patrick Mezard
highlight: split code to improve startup times
r6938
colorized = highlight(text, lexer, formatter)
Yuya Nishihara
highlight: fixes garbled text in non-UTF-8 environment...
r9424 coloriter = (s.encode(encoding.encoding, 'replace')
for s in colorized.splitlines())
Patrick Mezard
highlight: split code to improve startup times
r6938
Dirkjan Ochtman
templater: provide the standard template filters by default
r8360 tmpl.filters['colorize'] = lambda x: coloriter.next()
Patrick Mezard
highlight: split code to improve startup times
r6938
oldl = tmpl.cache[field]
newl = oldl.replace('line|escape', 'line|colorize')
tmpl.cache[field] = newl