Mercurial > hg
annotate hgext/highlight/__init__.py @ 25591:f1d46075b13a
verify: check the subrepository references in .hgsubstate
While hopefully atypical, there are reasons that a subrepository revision can be
lost that aren't covered by corruption of the .hgsubstate revlog. Such things
can happen when a subrepo is amended, stripped or simply isn't pulled from
upstream because the parent repo revision wasn't updated yet. There's no way to
know if it is an error, but this will find potential problems sooner than when
some random revision is updated.
Until recently, convert made no attempt at rewriting the .hgsubstate file. The
impetuous for this is to verify the conversion of some repositories, and this is
orders of magnitude faster than a bash script from 0..tip that does an
'hg update -C $rev'. But it is equally useful to determine if everything has
been pulled down before taking a thumb drive on the go.
It feels somewhat wrong to leave this out of verifymod (mostly because the file
is already read in there, and the final summary is printed before the subrepos
are checked). But verifymod looks very low level, so importing subrepo stuff
there seems more wrong.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Tue, 16 Jun 2015 16:15:15 -0400 |
parents | 80c5b2666a96 |
children | 85fb416f2fa7 |
rev | line source |
---|---|
8251
7fc30044b514
highlight: add copyright and license header
Martin Geisler <mg@lazybytes.net>
parents:
7216
diff
changeset
|
1 # highlight - syntax highlighting in hgweb, based on Pygments |
7fc30044b514
highlight: add copyright and license header
Martin Geisler <mg@lazybytes.net>
parents:
7216
diff
changeset
|
2 # |
7fc30044b514
highlight: add copyright and license header
Martin Geisler <mg@lazybytes.net>
parents:
7216
diff
changeset
|
3 # Copyright 2008, 2009 Patrick Mezard <pmezard@gmail.com> and others |
7fc30044b514
highlight: add copyright and license header
Martin Geisler <mg@lazybytes.net>
parents:
7216
diff
changeset
|
4 # |
7fc30044b514
highlight: add copyright and license header
Martin Geisler <mg@lazybytes.net>
parents:
7216
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
10263 | 6 # GNU General Public License version 2 or any later version. |
8251
7fc30044b514
highlight: add copyright and license header
Martin Geisler <mg@lazybytes.net>
parents:
7216
diff
changeset
|
7 # |
7fc30044b514
highlight: add copyright and license header
Martin Geisler <mg@lazybytes.net>
parents:
7216
diff
changeset
|
8 # The original module was split in an interface and an implementation |
7fc30044b514
highlight: add copyright and license header
Martin Geisler <mg@lazybytes.net>
parents:
7216
diff
changeset
|
9 # file to defer pygments loading and speedup extension setup. |
7fc30044b514
highlight: add copyright and license header
Martin Geisler <mg@lazybytes.net>
parents:
7216
diff
changeset
|
10 |
8932
f87884329419
extensions: fix up description lines some more
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8894
diff
changeset
|
11 """syntax highlighting for hgweb (requires Pygments) |
6938
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
12 |
9262
917e1d5674d6
highlight: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9210
diff
changeset
|
13 It depends on the Pygments syntax highlighting library: |
917e1d5674d6
highlight: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9210
diff
changeset
|
14 http://pygments.org/ |
6938
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
15 |
9210
2667ca525b59
highlight: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9064
diff
changeset
|
16 There is a single configuration option:: |
6938
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
17 |
9210
2667ca525b59
highlight: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9064
diff
changeset
|
18 [web] |
2667ca525b59
highlight: use reST syntax for literal block
Martin Geisler <mg@lazybytes.net>
parents:
9064
diff
changeset
|
19 pygments_style = <style> |
6938
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
20 |
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
21 The default is 'colorful'. |
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
22 """ |
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
23 |
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
24 import highlight |
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
25 from mercurial.hgweb import webcommands, webutil, common |
8874
74baf78202e8
highlight: was broken since 580a79dde2a3 (encoding)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8866
diff
changeset
|
26 from mercurial import extensions, encoding |
25186
80c5b2666a96
extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents:
19872
diff
changeset
|
27 # Note for extension authors: ONLY specify testedwith = 'internal' for |
80c5b2666a96
extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents:
19872
diff
changeset
|
28 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should |
80c5b2666a96
extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents:
19872
diff
changeset
|
29 # be specifying the version(s) of Mercurial they are tested with, or |
80c5b2666a96
extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents:
19872
diff
changeset
|
30 # leave the attribute unspecified. |
16743
38caf405d010
hgext: mark all first-party extensions as such
Augie Fackler <raf@durin42.com>
parents:
16683
diff
changeset
|
31 testedwith = 'internal' |
6938
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
32 |
7216
292fb2ad2846
extensions: use new wrapper functions
Matt Mackall <mpm@selenic.com>
parents:
7127
diff
changeset
|
33 def filerevision_highlight(orig, web, tmpl, fctx): |
8874
74baf78202e8
highlight: was broken since 580a79dde2a3 (encoding)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8866
diff
changeset
|
34 mt = ''.join(tmpl('mimetype', encoding=encoding.encoding)) |
6987
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
35 # only pygmentize for mimetype containing 'html' so we both match |
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
36 # 'text/html' and possibly 'application/xhtml+xml' in the future |
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
37 # so that we don't have to touch the extension when the mimetype |
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
38 # for a template changes; also hgweb optimizes the case that a |
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
39 # raw file is sent using rawfile() and doesn't call us, so we |
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
40 # can't clash with the file's content-type here in case we |
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
41 # pygmentize a html file |
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
42 if 'html' in mt: |
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
43 style = web.config('web', 'pygments_style', 'colorful') |
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
44 highlight.pygmentize('fileline', fctx, style, tmpl) |
7216
292fb2ad2846
extensions: use new wrapper functions
Matt Mackall <mpm@selenic.com>
parents:
7127
diff
changeset
|
45 return orig(web, tmpl, fctx) |
6938
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
46 |
7216
292fb2ad2846
extensions: use new wrapper functions
Matt Mackall <mpm@selenic.com>
parents:
7127
diff
changeset
|
47 def annotate_highlight(orig, web, req, tmpl): |
8874
74baf78202e8
highlight: was broken since 580a79dde2a3 (encoding)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8866
diff
changeset
|
48 mt = ''.join(tmpl('mimetype', encoding=encoding.encoding)) |
6987
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
49 if 'html' in mt: |
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
50 fctx = webutil.filectx(web.repo, req) |
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
51 style = web.config('web', 'pygments_style', 'colorful') |
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
52 highlight.pygmentize('annotateline', fctx, style, tmpl) |
7216
292fb2ad2846
extensions: use new wrapper functions
Matt Mackall <mpm@selenic.com>
parents:
7127
diff
changeset
|
53 return orig(web, req, tmpl) |
6938
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
54 |
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
55 def generate_css(web, req, tmpl): |
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
56 pg_style = web.config('web', 'pygments_style', 'colorful') |
19872
681f7b9213a4
check-code: check for spaces around = for named parameters
Mads Kiilerich <madski@unity3d.com>
parents:
16743
diff
changeset
|
57 fmter = highlight.HtmlFormatter(style=pg_style) |
6938
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
58 req.respond(common.HTTP_OK, 'text/css') |
16683 | 59 return ['/* pygments_style = %s */\n\n' % pg_style, |
60 fmter.get_style_defs('')] | |
6938
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
61 |
9409
57157a224037
highlight: move code from module top-level into extsetup
Martin Geisler <mg@lazybytes.net>
parents:
9262
diff
changeset
|
62 def extsetup(): |
57157a224037
highlight: move code from module top-level into extsetup
Martin Geisler <mg@lazybytes.net>
parents:
9262
diff
changeset
|
63 # monkeypatch in the new version |
16683 | 64 extensions.wrapfunction(webcommands, '_filerevision', |
65 filerevision_highlight) | |
9409
57157a224037
highlight: move code from module top-level into extsetup
Martin Geisler <mg@lazybytes.net>
parents:
9262
diff
changeset
|
66 extensions.wrapfunction(webcommands, 'annotate', annotate_highlight) |
57157a224037
highlight: move code from module top-level into extsetup
Martin Geisler <mg@lazybytes.net>
parents:
9262
diff
changeset
|
67 webcommands.highlightcss = generate_css |
57157a224037
highlight: move code from module top-level into extsetup
Martin Geisler <mg@lazybytes.net>
parents:
9262
diff
changeset
|
68 webcommands.__all__.append('highlightcss') |