##// END OF EJS Templates
largefiles: make archive -S store largefiles instead of standins...
largefiles: make archive -S store largefiles instead of standins This is essentially a copy of largefile's override of archive() in the archival class, adapted for overriding hgsubrepo's archive(). That means decoding isn't taken into consideration, nor is .hg_archival.txt generated (the same goes for regular subrepos). Unlike subrepos, but consistent with largefile's handling of the top repo, ui.progress() is *not* called. This should probably be refactored at some point, but at least this generates the archives properly for now. Previously, the standins were ignored and the largefiles were archived only for the top level repo. Long term, it would probably be most desirable to figure out how to tweak archival's archive() if necessary such that largefiles doesn't need to override it completely just to special case the translating of standins to the real files. Largefiles will already return a context with the true largefiles instead of the standins if lfilesrepo's lfstatus is True- perhaps this can be leveraged?

File last commit:

r10959:d1f4657f default
r16578:43fb170a default
Show More
highlight.py
61 lines | 2.1 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" />')
def pygmentize(field, fctx, style, tmpl):
# 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:
new_header = old_header + SYNTAX_CSS
tmpl.cache['header'] = new_header
text = fctx.data()
if util.binary(text):
return
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:
Yuya Nishihara
highlight: fixes garbled text in non-UTF-8 environment...
r9424 lexer = guess_lexer_for_filename(fctx.path(), text[:1024])
Patrick Mezard
highlight: split code to improve startup times
r6938 except (ClassNotFound, ValueError):
try:
Yuya Nishihara
highlight: fixes garbled text in non-UTF-8 environment...
r9424 lexer = guess_lexer(text[:1024])
Patrick Mezard
highlight: split code to improve startup times
r6938 except (ClassNotFound, ValueError):
Yuya Nishihara
highlight: fixes garbled text in non-UTF-8 environment...
r9424 lexer = TextLexer()
Patrick Mezard
highlight: split code to improve startup times
r6938
Yuya Nishihara
highlight: fixes garbled text in non-UTF-8 environment...
r9424 formatter = HtmlFormatter(style=style)
Patrick Mezard
highlight: split code to improve startup times
r6938
colorized = highlight(text, lexer, formatter)
# strip wrapping div
colorized = colorized[:colorized.find('\n</pre>')]
colorized = colorized[colorized.find('<pre>')+5:]
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