##// END OF EJS Templates
Allow specifying revisions in 'hg log' like with 'hg diff'....
Allow specifying revisions in 'hg log' like with 'hg diff'. -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Allow specifying revisions in 'hg log' like with 'hg diff'. manifest hash: 62d48dbaa0213b36f08dc15bc3b1a1f35ecd89f0 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (GNU/Linux) iD8DBQFCxPbeW7P1GVgWeRoRApOgAJsFYCQ8EEpYDQz8t53bRXfrP/MXwwCfWDV5 dLv6zwG6/I++SyChFkTPfAY= =cg0V -----END PGP SIGNATURE-----

File last commit:

r515:03f27b13 default
r552:22043116 default
Show More
ui.py
86 lines | 2.8 KiB | text/x-python | PythonLexer
mpm@selenic.com
Move ui class to its own module...
r207 # ui.py - user interface bits for mercurial
#
# Copyright 2005 Matt Mackall <mpm@selenic.com>
#
# This software may be used and distributed according to the terms
# of the GNU General Public License, incorporated herein by reference.
mpm@selenic.com
[PATCH] Harden os.system...
r508 import os, sys, re, ConfigParser, util
mpm@selenic.com
Move ui class to its own module...
r207
class ui:
def __init__(self, verbose=False, debug=False, quiet=False,
interactive=True):
mpm@selenic.com
ui: add configuration file support...
r285 self.cdata = ConfigParser.SafeConfigParser()
self.cdata.read(os.path.expanduser("~/.hgrc"))
self.quiet = self.configbool("ui", "quiet")
self.verbose = self.configbool("ui", "verbose")
self.debugflag = self.configbool("ui", "debug")
self.interactive = self.configbool("ui", "interactive", True)
self.quiet = (self.quiet or quiet) and not verbose and not debug
self.verbose = (self.verbose or verbose) or debug
self.debugflag = (self.debugflag or debug)
self.interactive = (self.interactive and interactive)
mpm@selenic.com
Add support for .hg/hgrc file...
r337 def readconfig(self, fp):
self.cdata.readfp(fp)
mpm@selenic.com
ui: add configuration file support...
r285 def config(self, section, val, default=None):
if self.cdata.has_option(section, val):
return self.cdata.get(section, val)
return default
def configbool(self, section, val, default=False):
if self.cdata.has_option(section, val):
return self.cdata.getboolean(section, val)
return default
def configitems(self, section):
if self.cdata.has_section(section):
return self.cdata.items(section)
return []
mpm@selenic.com
[PATCH] Add ui.expandpath command...
r506 def expandpath(self, loc):
paths = {}
for name, path in self.configitems("paths"):
paths[name] = path
return paths.get(loc, loc)
mpm@selenic.com
Move ui class to its own module...
r207 def write(self, *args):
for a in args:
sys.stdout.write(str(a))
def readline(self):
return sys.stdin.readline()[:-1]
def prompt(self, msg, pat, default = "y"):
if not self.interactive: return default
while 1:
self.write(msg, " ")
r = self.readline()
if re.match(pat, r):
return r
else:
self.write("unrecognized response\n")
def status(self, *msg):
if not self.quiet: self.write(*msg)
Thomas Arendsen Hein
ui.warn can use more than one argument like the other ui methods.
r234 def warn(self, *msg):
mpm@selenic.com
Move ui class to its own module...
r207 self.write(*msg)
def note(self, *msg):
if self.verbose: self.write(*msg)
def debug(self, *msg):
if self.debugflag: self.write(*msg)
def edit(self, text):
mpm@selenic.com
import and startup cleanups...
r249 import tempfile
mpm@selenic.com
Move ui class to its own module...
r207 (fd, name) = tempfile.mkstemp("hg")
f = os.fdopen(fd, "w")
f.write(text)
f.close()
editor = os.environ.get("HGEDITOR") or os.environ.get("EDITOR", "vi")
mpm@selenic.com
[PATCH] Harden os.system...
r508 util.system("%s %s" % (editor, name), errprefix = "edit failed")
mpm@selenic.com
Move ui class to its own module...
r207
t = open(name).read()
t = re.sub("(?m)^HG:.*\n", "", t)
return t