##// END OF EJS Templates
gendoc: add support for loading extensions from config settings...
gendoc: add support for loading extensions from config settings We manage our installation and ship some extensions, enabled by default for our users, that are in hgext3rd or other directories not scanned by this tool by default. We want to generate docs during the build process, and having those docs include the extensions that users don't have to manually enable is desirable. This is *not* desirable for the normal build process, however, and should never be enabled by default. Differential Revision: https://phab.mercurial-scm.org/D9989

File last commit:

r46821:36c05ab0 default
r47267:eb36f7a7 default
Show More
beautifygraph.py
109 lines | 3.1 KiB | text/x-python | PythonLexer
John Stiles
graph: improve graph output by using Unicode characters...
r38359 # -*- coding: UTF-8 -*-
# beautifygraph.py - improve graph output by using Unicode characters
#
# Copyright 2018 John Stiles <johnstiles@gmail.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
'''beautify log -G output by using Unicode characters (EXPERIMENTAL)
A terminal with UTF-8 support and monospace narrow text are required.
'''
from __future__ import absolute_import
from mercurial.i18n import _
from mercurial import (
encoding,
extensions,
graphmod,
Gregory Szorc
global: use pycompat.xrange()...
r38806 pycompat,
John Stiles
graph: improve graph output by using Unicode characters...
r38359 templatekw,
)
# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
# extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
# be specifying the version(s) of Mercurial they are tested with, or
# leave the attribute unspecified.
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 testedwith = b'ships-with-hg-core'
John Stiles
graph: improve graph output by using Unicode characters...
r38359
Augie Fackler
formatting: blacken the codebase...
r43346
John Stiles
graph: improve graph output by using Unicode characters...
r38359 def prettyedge(before, edge, after):
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 if edge == b'~':
return b'\xE2\x95\xA7' # U+2567 ╧
if edge == b'/':
return b'\xE2\x95\xB1' # U+2571 ╱
if edge == b'-':
return b'\xE2\x94\x80' # U+2500 ─
if edge == b'|':
return b'\xE2\x94\x82' # U+2502 │
if edge == b':':
return b'\xE2\x94\x86' # U+2506 ┆
if edge == b'\\':
return b'\xE2\x95\xB2' # U+2572 ╲
if edge == b'+':
if before == b' ' and not after == b' ':
return b'\xE2\x94\x9C' # U+251C ├
if after == b' ' and not before == b' ':
return b'\xE2\x94\xA4' # U+2524 ┤
return b'\xE2\x94\xBC' # U+253C ┼
John Stiles
graph: improve graph output by using Unicode characters...
r38359 return edge
Augie Fackler
formatting: blacken the codebase...
r43346
John Stiles
graph: improve graph output by using Unicode characters...
r38359 def convertedges(line):
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 line = b' %s ' % line
John Stiles
graph: improve graph output by using Unicode characters...
r38359 pretty = []
Gregory Szorc
global: use pycompat.xrange()...
r38806 for idx in pycompat.xrange(len(line) - 2):
Augie Fackler
formatting: blacken the codebase...
r43346 pretty.append(
prettyedge(
line[idx : idx + 1],
line[idx + 1 : idx + 2],
line[idx + 2 : idx + 3],
)
)
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 return b''.join(pretty)
John Stiles
graph: improve graph output by using Unicode characters...
r38359
Augie Fackler
formatting: blacken the codebase...
r43346
John Stiles
graph: improve graph output by using Unicode characters...
r38359 def getprettygraphnode(orig, *args, **kwargs):
node = orig(*args, **kwargs)
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 if node == b'o':
return b'\xE2\x97\x8B' # U+25CB â—‹
if node == b'@':
msuozzo@google.com
beautifygraph: change the current commit symbol...
r46821 return b'\xE2\x97\x89' # U+25C9 â—‰
Martin von Zweigbergk
graphlog: use '%' for other context in merge conflict...
r44819 if node == b'%':
return b'\xE2\x97\x8D' # U+25CE â—Ž
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 if node == b'*':
return b'\xE2\x88\x97' # U+2217 ∗
if node == b'x':
return b'\xE2\x97\x8C' # U+25CC ◌
if node == b'_':
return b'\xE2\x95\xA4' # U+2564 ╤
John Stiles
graph: improve graph output by using Unicode characters...
r38359 return node
Augie Fackler
formatting: blacken the codebase...
r43346
John Stiles
graph: improve graph output by using Unicode characters...
r38359 def outputprettygraph(orig, ui, graph, *args, **kwargs):
(edges, text) = zip(*graph)
graph = zip([convertedges(e) for e in edges], text)
return orig(ui, graph, *args, **kwargs)
Augie Fackler
formatting: blacken the codebase...
r43346
John Stiles
graph: improve graph output by using Unicode characters...
r38359 def extsetup(ui):
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 if ui.plain(b'graph'):
Augie Fackler
beautifygraph: don't warn about busted terminal if HGPLAIN is set...
r39249 return
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 if encoding.encoding != b'UTF-8':
ui.warn(_(b'beautifygraph: unsupported encoding, UTF-8 required\n'))
John Stiles
graph: improve graph output by using Unicode characters...
r38359 return
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 if 'A' in encoding._wide:
Augie Fackler
formatting: blacken the codebase...
r43346 ui.warn(
_(
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 b'beautifygraph: unsupported terminal settings, '
b'monospace narrow text required\n'
Augie Fackler
formatting: blacken the codebase...
r43346 )
)
John Stiles
graph: improve graph output by using Unicode characters...
r38359 return
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 extensions.wrapfunction(graphmod, b'outputgraph', outputprettygraph)
extensions.wrapfunction(templatekw, b'getgraphnode', getprettygraphnode)