annotate mercurial/ui.py @ 1907:7718885070b1

let commands that show changesets use templates. mechanism is same as hgweb templates. old show_changeset code is still used for now if no template given, because it is faster than template code when verbose or debug. simple template can be given on command line using -t, --template. example: hg log -t '{author|person}\n' complex template can be put in template map file, given on command line using --map-file. we give two example map files: map-log.compact prints 3 lines of output for every change. map-log.verbose prints exact same output as default "hg log -v". map files are searched where user says, then in template path as backup. example: hg log --map-file map-log.compact defaults can be set in hgrc with ui.logtemplate and ui.logmap.
author Vadim Gelfer <vadim.gelfer@gmail.com>
date Mon, 27 Feb 2006 13:18:57 -0800
parents e4abeafd6eb1
children b7cc0f323a4c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
207
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
1 # ui.py - user interface bits for mercurial
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
2 #
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
3 # Copyright 2005 Matt Mackall <mpm@selenic.com>
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
4 #
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
5 # This software may be used and distributed according to the terms
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
6 # of the GNU General Public License, incorporated herein by reference.
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
7
613
5374955ec5b1 Demand-load most modules in the commands and ui modules.
Bryan O'Sullivan <bos@serpentine.com>
parents: 608
diff changeset
8 import os, ConfigParser
1400
cf9a1233738a i18n first part: make '_' available for files who need it
Benoit Boissinot <benoit.boissinot@ens-lyon.org
parents: 1292
diff changeset
9 from i18n import gettext as _
613
5374955ec5b1 Demand-load most modules in the commands and ui modules.
Bryan O'Sullivan <bos@serpentine.com>
parents: 608
diff changeset
10 from demandload import *
5374955ec5b1 Demand-load most modules in the commands and ui modules.
Bryan O'Sullivan <bos@serpentine.com>
parents: 608
diff changeset
11 demandload(globals(), "re socket sys util")
207
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
12
1559
59b3639df0a9 Convert all classes to new-style classes by deriving them from object.
Eric Hopper <hopper@omnifarious.org>
parents: 1483
diff changeset
13 class ui(object):
207
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
14 def __init__(self, verbose=False, debug=False, quiet=False,
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
15 interactive=True):
960
abfb5cc97fcd Add ui.setconfig overlay
mpm@selenic.com
parents: 953
diff changeset
16 self.overlay = {}
285
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
17 self.cdata = ConfigParser.SafeConfigParser()
1473
7d66ce9895fa make readconfig take a filename instead of a file pointer as argument
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1440
diff changeset
18 self.readconfig(util.rcpath)
285
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
19
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
20 self.quiet = self.configbool("ui", "quiet")
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
21 self.verbose = self.configbool("ui", "verbose")
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
22 self.debugflag = self.configbool("ui", "debug")
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
23 self.interactive = self.configbool("ui", "interactive", True)
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
24
1071
8f0ac653f85e Add support for extension modules
mason@suse.com
parents: 1062
diff changeset
25 self.updateopts(verbose, debug, quiet, interactive)
1637
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1609
diff changeset
26 self.diffcache = None
1071
8f0ac653f85e Add support for extension modules
mason@suse.com
parents: 1062
diff changeset
27
8f0ac653f85e Add support for extension modules
mason@suse.com
parents: 1062
diff changeset
28 def updateopts(self, verbose=False, debug=False, quiet=False,
8f0ac653f85e Add support for extension modules
mason@suse.com
parents: 1062
diff changeset
29 interactive=True):
285
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
30 self.quiet = (self.quiet or quiet) and not verbose and not debug
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
31 self.verbose = (self.verbose or verbose) or debug
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
32 self.debugflag = (self.debugflag or debug)
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
33 self.interactive = (self.interactive and interactive)
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
34
1473
7d66ce9895fa make readconfig take a filename instead of a file pointer as argument
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1440
diff changeset
35 def readconfig(self, fn):
1483
a4ba63e04134 Fix traceback on bad system hgrc files
Soh Tk-r28629 <tksoh@freescale.com>
parents: 1473
diff changeset
36 if isinstance(fn, basestring):
a4ba63e04134 Fix traceback on bad system hgrc files
Soh Tk-r28629 <tksoh@freescale.com>
parents: 1473
diff changeset
37 fn = [fn]
a4ba63e04134 Fix traceback on bad system hgrc files
Soh Tk-r28629 <tksoh@freescale.com>
parents: 1473
diff changeset
38 for f in fn:
a4ba63e04134 Fix traceback on bad system hgrc files
Soh Tk-r28629 <tksoh@freescale.com>
parents: 1473
diff changeset
39 try:
a4ba63e04134 Fix traceback on bad system hgrc files
Soh Tk-r28629 <tksoh@freescale.com>
parents: 1473
diff changeset
40 self.cdata.read(f)
a4ba63e04134 Fix traceback on bad system hgrc files
Soh Tk-r28629 <tksoh@freescale.com>
parents: 1473
diff changeset
41 except ConfigParser.ParsingError, inst:
a4ba63e04134 Fix traceback on bad system hgrc files
Soh Tk-r28629 <tksoh@freescale.com>
parents: 1473
diff changeset
42 raise util.Abort(_("Failed to parse %s\n%s") % (f, inst))
337
c3d873ef4b31 Add support for .hg/hgrc file
mpm@selenic.com
parents: 285
diff changeset
43
960
abfb5cc97fcd Add ui.setconfig overlay
mpm@selenic.com
parents: 953
diff changeset
44 def setconfig(self, section, name, val):
abfb5cc97fcd Add ui.setconfig overlay
mpm@selenic.com
parents: 953
diff changeset
45 self.overlay[(section, name)] = val
abfb5cc97fcd Add ui.setconfig overlay
mpm@selenic.com
parents: 953
diff changeset
46
abfb5cc97fcd Add ui.setconfig overlay
mpm@selenic.com
parents: 953
diff changeset
47 def config(self, section, name, default=None):
abfb5cc97fcd Add ui.setconfig overlay
mpm@selenic.com
parents: 953
diff changeset
48 if self.overlay.has_key((section, name)):
abfb5cc97fcd Add ui.setconfig overlay
mpm@selenic.com
parents: 953
diff changeset
49 return self.overlay[(section, name)]
abfb5cc97fcd Add ui.setconfig overlay
mpm@selenic.com
parents: 953
diff changeset
50 if self.cdata.has_option(section, name):
abfb5cc97fcd Add ui.setconfig overlay
mpm@selenic.com
parents: 953
diff changeset
51 return self.cdata.get(section, name)
285
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
52 return default
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
53
960
abfb5cc97fcd Add ui.setconfig overlay
mpm@selenic.com
parents: 953
diff changeset
54 def configbool(self, section, name, default=False):
abfb5cc97fcd Add ui.setconfig overlay
mpm@selenic.com
parents: 953
diff changeset
55 if self.overlay.has_key((section, name)):
abfb5cc97fcd Add ui.setconfig overlay
mpm@selenic.com
parents: 953
diff changeset
56 return self.overlay[(section, name)]
abfb5cc97fcd Add ui.setconfig overlay
mpm@selenic.com
parents: 953
diff changeset
57 if self.cdata.has_option(section, name):
abfb5cc97fcd Add ui.setconfig overlay
mpm@selenic.com
parents: 953
diff changeset
58 return self.cdata.getboolean(section, name)
285
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
59 return default
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
60
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
61 def configitems(self, section):
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
62 if self.cdata.has_section(section):
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
63 return self.cdata.items(section)
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
64 return []
5a1e6d27f399 ui: add configuration file support
mpm@selenic.com
parents: 249
diff changeset
65
1028
25e7ea0f2cff Add commands.debugconfig.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
66 def walkconfig(self):
25e7ea0f2cff Add commands.debugconfig.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
67 seen = {}
25e7ea0f2cff Add commands.debugconfig.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
68 for (section, name), value in self.overlay.iteritems():
25e7ea0f2cff Add commands.debugconfig.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
69 yield section, name, value
25e7ea0f2cff Add commands.debugconfig.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
70 seen[section, name] = 1
25e7ea0f2cff Add commands.debugconfig.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
71 for section in self.cdata.sections():
25e7ea0f2cff Add commands.debugconfig.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
72 for name, value in self.cdata.items(section):
25e7ea0f2cff Add commands.debugconfig.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
73 if (section, name) in seen: continue
25e7ea0f2cff Add commands.debugconfig.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
74 yield section, name, value.replace('\n', '\\n')
25e7ea0f2cff Add commands.debugconfig.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
75 seen[section, name] = 1
25e7ea0f2cff Add commands.debugconfig.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
76
1071
8f0ac653f85e Add support for extension modules
mason@suse.com
parents: 1062
diff changeset
77 def extensions(self):
8f0ac653f85e Add support for extension modules
mason@suse.com
parents: 1062
diff changeset
78 return self.configitems("extensions")
8f0ac653f85e Add support for extension modules
mason@suse.com
parents: 1062
diff changeset
79
1637
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1609
diff changeset
80 def diffopts(self):
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1609
diff changeset
81 if self.diffcache:
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1609
diff changeset
82 return self.diffcache
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1609
diff changeset
83 ret = { 'showfunc' : True, 'ignorews' : False}
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1609
diff changeset
84 for x in self.configitems("diff"):
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1609
diff changeset
85 k = x[0].lower()
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1609
diff changeset
86 v = x[1]
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1609
diff changeset
87 if v:
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1609
diff changeset
88 v = v.lower()
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1609
diff changeset
89 if v == 'true':
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1609
diff changeset
90 value = True
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1609
diff changeset
91 else:
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1609
diff changeset
92 value = False
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1609
diff changeset
93 ret[k] = value
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1609
diff changeset
94 self.diffcache = ret
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1609
diff changeset
95 return ret
3b1b44b917f4 Add new bdiff based unidiff generation.
mason@suse.com
parents: 1609
diff changeset
96
608
d2994b5298fb Add username/merge/editor to .hgrc
Matt Mackall <mpm@selenic.com>
parents: 565
diff changeset
97 def username(self):
691
61c6b4178b9e HG environment variables take precedence over hgrc
mpm@selenic.com
parents: 662
diff changeset
98 return (os.environ.get("HGUSER") or
61c6b4178b9e HG environment variables take precedence over hgrc
mpm@selenic.com
parents: 662
diff changeset
99 self.config("ui", "username") or
608
d2994b5298fb Add username/merge/editor to .hgrc
Matt Mackall <mpm@selenic.com>
parents: 565
diff changeset
100 os.environ.get("EMAIL") or
d2994b5298fb Add username/merge/editor to .hgrc
Matt Mackall <mpm@selenic.com>
parents: 565
diff changeset
101 (os.environ.get("LOGNAME",
d2994b5298fb Add username/merge/editor to .hgrc
Matt Mackall <mpm@selenic.com>
parents: 565
diff changeset
102 os.environ.get("USERNAME", "unknown"))
d2994b5298fb Add username/merge/editor to .hgrc
Matt Mackall <mpm@selenic.com>
parents: 565
diff changeset
103 + '@' + socket.getfqdn()))
d2994b5298fb Add username/merge/editor to .hgrc
Matt Mackall <mpm@selenic.com>
parents: 565
diff changeset
104
1129
ee4f60abad93 Move generating short username to display in hg/hgweb annotate to ui module.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1071
diff changeset
105 def shortuser(self, user):
ee4f60abad93 Move generating short username to display in hg/hgweb annotate to ui module.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1071
diff changeset
106 """Return a short representation of a user name or email address."""
1903
e4abeafd6eb1 move shortuser into util module.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1637
diff changeset
107 if not self.verbose: user = util.shortuser(user)
1129
ee4f60abad93 Move generating short username to display in hg/hgweb annotate to ui module.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1071
diff changeset
108 return user
ee4f60abad93 Move generating short username to display in hg/hgweb annotate to ui module.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1071
diff changeset
109
1440
bf109779f48b Fix relative pull in a subdir
tonfa@arakou.lan
parents: 1402
diff changeset
110 def expandpath(self, loc, root=""):
506
1f81ebff98c9 [PATCH] Add ui.expandpath command
mpm@selenic.com
parents: 350
diff changeset
111 paths = {}
1f81ebff98c9 [PATCH] Add ui.expandpath command
mpm@selenic.com
parents: 350
diff changeset
112 for name, path in self.configitems("paths"):
1440
bf109779f48b Fix relative pull in a subdir
tonfa@arakou.lan
parents: 1402
diff changeset
113 m = path.find("://")
bf109779f48b Fix relative pull in a subdir
tonfa@arakou.lan
parents: 1402
diff changeset
114 if m == -1:
bf109779f48b Fix relative pull in a subdir
tonfa@arakou.lan
parents: 1402
diff changeset
115 path = os.path.join(root, path)
506
1f81ebff98c9 [PATCH] Add ui.expandpath command
mpm@selenic.com
parents: 350
diff changeset
116 paths[name] = path
1f81ebff98c9 [PATCH] Add ui.expandpath command
mpm@selenic.com
parents: 350
diff changeset
117
1f81ebff98c9 [PATCH] Add ui.expandpath command
mpm@selenic.com
parents: 350
diff changeset
118 return paths.get(loc, loc)
1f81ebff98c9 [PATCH] Add ui.expandpath command
mpm@selenic.com
parents: 350
diff changeset
119
207
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
120 def write(self, *args):
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
121 for a in args:
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
122 sys.stdout.write(str(a))
565
9a80418646dd [PATCH] Make ui.warn write to stderr
mpm@selenic.com
parents: 515
diff changeset
123
9a80418646dd [PATCH] Make ui.warn write to stderr
mpm@selenic.com
parents: 515
diff changeset
124 def write_err(self, *args):
1609
c50bddfbc812 eliminate backtrace when piping output on windows.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1569
diff changeset
125 if not sys.stdout.closed: sys.stdout.flush()
565
9a80418646dd [PATCH] Make ui.warn write to stderr
mpm@selenic.com
parents: 515
diff changeset
126 for a in args:
9a80418646dd [PATCH] Make ui.warn write to stderr
mpm@selenic.com
parents: 515
diff changeset
127 sys.stderr.write(str(a))
9a80418646dd [PATCH] Make ui.warn write to stderr
mpm@selenic.com
parents: 515
diff changeset
128
207
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
129 def readline(self):
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
130 return sys.stdin.readline()[:-1]
1062
6d5a62a549fa pep-0008 cleanup
benoit.boissinot@ens-lyon.fr
parents: 1028
diff changeset
131 def prompt(self, msg, pat, default="y"):
207
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
132 if not self.interactive: return default
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
133 while 1:
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
134 self.write(msg, " ")
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
135 r = self.readline()
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
136 if re.match(pat, r):
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
137 return r
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
138 else:
1402
9d2c2e6b32b5 i18n part2: use '_' for all strings who are part of the user interface
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1400
diff changeset
139 self.write(_("unrecognized response\n"))
207
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
140 def status(self, *msg):
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
141 if not self.quiet: self.write(*msg)
234
3427806d5ab9 ui.warn can use more than one argument like the other ui methods.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 207
diff changeset
142 def warn(self, *msg):
565
9a80418646dd [PATCH] Make ui.warn write to stderr
mpm@selenic.com
parents: 515
diff changeset
143 self.write_err(*msg)
207
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
144 def note(self, *msg):
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
145 if self.verbose: self.write(*msg)
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
146 def debug(self, *msg):
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
147 if self.debugflag: self.write(*msg)
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
148 def edit(self, text):
249
619e775aa7f9 import and startup cleanups
mpm@selenic.com
parents: 241
diff changeset
149 import tempfile
207
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
150 (fd, name) = tempfile.mkstemp("hg")
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
151 f = os.fdopen(fd, "w")
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
152 f.write(text)
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
153 f.close()
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
154
691
61c6b4178b9e HG environment variables take precedence over hgrc
mpm@selenic.com
parents: 662
diff changeset
155 editor = (os.environ.get("HGEDITOR") or
61c6b4178b9e HG environment variables take precedence over hgrc
mpm@selenic.com
parents: 662
diff changeset
156 self.config("ui", "editor") or
608
d2994b5298fb Add username/merge/editor to .hgrc
Matt Mackall <mpm@selenic.com>
parents: 565
diff changeset
157 os.environ.get("EDITOR", "vi"))
d2994b5298fb Add username/merge/editor to .hgrc
Matt Mackall <mpm@selenic.com>
parents: 565
diff changeset
158
662
b55a78595ef6 Pass username to hgeditor, remove temporary file
Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 613
diff changeset
159 os.environ["HGUSER"] = self.username()
1569
dd186cb70a64 quote the filename when calling HGEDITOR
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents: 1559
diff changeset
160 util.system("%s \"%s\"" % (editor, name), errprefix=_("edit failed"))
207
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
161
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
162 t = open(name).read()
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
163 t = re.sub("(?m)^HG:.*\n", "", t)
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
164
662
b55a78595ef6 Pass username to hgeditor, remove temporary file
Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 613
diff changeset
165 os.unlink(name)
b55a78595ef6 Pass username to hgeditor, remove temporary file
Radoslaw "AstralStorm" Szkodzinski <astralstorm@gorzow.mm.pl>
parents: 613
diff changeset
166
207
ec327cf0d3a9 Move ui class to its own module
mpm@selenic.com
parents:
diff changeset
167 return t