Mercurial > hg
annotate hgext/highlight/__init__.py @ 24353:3f6bf9f29e7b
bookmarks: prevent divergent bookmark from being updated unexpectedly
Before this patch, "@99" suffixed bookmark may be updated unexpectedly
by the bookmark value on the remote side at "hg pull", if all of "@1"
to "@99" suffixed bookmarks exist in the local repository, because
variable "n" still refers "@99" suffixed bookmark after the loop to
examine "@num" suffixes, even though it already exists in the local
repository.
This patch prevents divergent bookmark from being updated
unexpectedly, and shows warning message in such situation.
This patch uses original python script "seq.py" instead of "seq"
command to create sequence numbers in the test, because "seq" command
may not be available: it isn't defined in recent POSIX specification
(POSIX.1-2001 2013 Edition or XPG7)
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Tue, 17 Mar 2015 18:20:24 +0900 |
parents | 681f7b9213a4 |
children | 80c5b2666a96 |
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 |
16743
38caf405d010
hgext: mark all first-party extensions as such
Augie Fackler <raf@durin42.com>
parents:
16683
diff
changeset
|
27 testedwith = 'internal' |
6938
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
28 |
7216
292fb2ad2846
extensions: use new wrapper functions
Matt Mackall <mpm@selenic.com>
parents:
7127
diff
changeset
|
29 def filerevision_highlight(orig, web, tmpl, fctx): |
8874
74baf78202e8
highlight: was broken since 580a79dde2a3 (encoding)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8866
diff
changeset
|
30 mt = ''.join(tmpl('mimetype', encoding=encoding.encoding)) |
6987
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
31 # 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
|
32 # '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
|
33 # 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
|
34 # 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
|
35 # 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
|
36 # 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
|
37 # pygmentize a html file |
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
38 if 'html' in mt: |
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
39 style = web.config('web', 'pygments_style', 'colorful') |
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
40 highlight.pygmentize('fileline', fctx, style, tmpl) |
7216
292fb2ad2846
extensions: use new wrapper functions
Matt Mackall <mpm@selenic.com>
parents:
7127
diff
changeset
|
41 return orig(web, tmpl, fctx) |
6938
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
42 |
7216
292fb2ad2846
extensions: use new wrapper functions
Matt Mackall <mpm@selenic.com>
parents:
7127
diff
changeset
|
43 def annotate_highlight(orig, web, req, tmpl): |
8874
74baf78202e8
highlight: was broken since 580a79dde2a3 (encoding)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8866
diff
changeset
|
44 mt = ''.join(tmpl('mimetype', encoding=encoding.encoding)) |
6987
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
45 if 'html' in mt: |
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
46 fctx = webutil.filectx(web.repo, req) |
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
47 style = web.config('web', 'pygments_style', 'colorful') |
d09e813b21e3
highlight: only pygmentize for HTML mimetypes
Rocco Rutte <pdmef@gmx.net>
parents:
6938
diff
changeset
|
48 highlight.pygmentize('annotateline', fctx, style, tmpl) |
7216
292fb2ad2846
extensions: use new wrapper functions
Matt Mackall <mpm@selenic.com>
parents:
7127
diff
changeset
|
49 return orig(web, req, tmpl) |
6938
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
50 |
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
51 def generate_css(web, req, tmpl): |
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
52 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
|
53 fmter = highlight.HtmlFormatter(style=pg_style) |
6938
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
54 req.respond(common.HTTP_OK, 'text/css') |
16683 | 55 return ['/* pygments_style = %s */\n\n' % pg_style, |
56 fmter.get_style_defs('')] | |
6938
ce94b3236ea4
highlight: split code to improve startup times
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
57 |
9409
57157a224037
highlight: move code from module top-level into extsetup
Martin Geisler <mg@lazybytes.net>
parents:
9262
diff
changeset
|
58 def extsetup(): |
57157a224037
highlight: move code from module top-level into extsetup
Martin Geisler <mg@lazybytes.net>
parents:
9262
diff
changeset
|
59 # monkeypatch in the new version |
16683 | 60 extensions.wrapfunction(webcommands, '_filerevision', |
61 filerevision_highlight) | |
9409
57157a224037
highlight: move code from module top-level into extsetup
Martin Geisler <mg@lazybytes.net>
parents:
9262
diff
changeset
|
62 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
|
63 webcommands.highlightcss = generate_css |
57157a224037
highlight: move code from module top-level into extsetup
Martin Geisler <mg@lazybytes.net>
parents:
9262
diff
changeset
|
64 webcommands.__all__.append('highlightcss') |