def difftools(ui): global _difftools if _difftools: return _difftools def fixup_extdiff(diffopts): if '$child' not in diffopts: diffopts.append('$parent1') diffopts.append('$child') if '$parent2' in diffopts: mergeopts = diffopts[:] diffopts.remove('$parent2') else: mergeopts = [] return diffopts, mergeopts tools = {} for cmd, path in ui.configitems('extdiff'): if cmd.startswith('cmd.'): cmd = cmd[4:] if not path: path = cmd diffopts = ui.config('extdiff', 'opts.' + cmd, '') diffopts = shlex.split(diffopts) diffopts, mergeopts = fixup_extdiff(diffopts) tools[cmd] = [path, diffopts, mergeopts] elif cmd.startswith('opts.'): continue else: # command = path opts if path: diffopts = shlex.split(path) path = diffopts.pop(0) else: path, diffopts = cmd, [] diffopts, mergeopts = fixup_extdiff(diffopts) tools[cmd] = [path, diffopts, mergeopts] mt = [] mergetools(ui, mt) for t in mt: if t.startswith('internal:'): continue dopts = ui.config('merge-tools', t + '.diffargs', '') mopts = ui.config('merge-tools', t + '.diff3args', '') dopts, mopts = shlex.split(dopts), shlex.split(mopts) tools[t] = [filemerge._findtool(ui, t), dopts, mopts] _difftools = tools return tools
def difftools(ui): global _difftools if _difftools: return _difftools def fixup_extdiff(diffopts): if "$child" not in diffopts: diffopts.append("$parent1") diffopts.append("$child") if "$parent2" in diffopts: mergeopts = diffopts[:] diffopts.remove("$parent2") else: mergeopts = [] return diffopts, mergeopts tools = {} for cmd, path in ui.configitems("extdiff"): if cmd.startswith("cmd."): cmd = cmd[4:] if not path: path = cmd diffopts = ui.config("extdiff", "opts." + cmd, "") diffopts = shlex.split(diffopts) diffopts, mergeopts = fixup_extdiff(diffopts) tools[cmd] = [path, diffopts, mergeopts] elif cmd.startswith("opts."): continue else: # command = path opts if path: diffopts = shlex.split(path) path = diffopts.pop(0) else: path, diffopts = cmd, [] diffopts, mergeopts = fixup_extdiff(diffopts) tools[cmd] = [path, diffopts, mergeopts] mt = [] mergetools(ui, mt) for t in mt: if t.startswith("internal:"): continue dopts = ui.config("merge-tools", t + ".diffargs", "") mopts = ui.config("merge-tools", t + ".diff3args", "") dopts, mopts = shlex.split(dopts), shlex.split(mopts) tools[t] = [filemerge._findtool(ui, t), dopts, mopts] _difftools = tools return tools
def mergetools(ui, values=None): 'returns the configured merge tools and the internal ones' if values == None: values = [] seen = values[:] for key, value in ui.configitems('merge-tools'): t = key.split('.')[0] if t not in seen: seen.append(t) # Ensure the tool is installed if filemerge._findtool(ui, t): values.append(t) values.append('internal:merge') values.append('internal:prompt') values.append('internal:dump') values.append('internal:local') values.append('internal:other') values.append('internal:fail') return values
def mergetools(ui, values=None): "returns the configured merge tools and the internal ones" if values == None: values = [] seen = values[:] for key, value in ui.configitems("merge-tools"): t = key.split(".")[0] if t not in seen: seen.append(t) # Ensure the tool is installed if filemerge._findtool(ui, t): values.append(t) values.append("internal:merge") values.append("internal:prompt") values.append("internal:dump") values.append("internal:local") values.append("internal:other") values.append("internal:fail") return values
def _findterminal(ui): '''returns tuple of terminal name and terminal path. tools matched by pattern are returned as (name, toolpath) tools detected by search are returned as (name, toolpath) tortoisehg.shell is returned as (None, tortoisehg.shell) So first return value is an [terminal-tool] name or None and second return value is a toolpath or user configured command line ''' # first check for tool specified in terminal-tools tools = {} for k, v in ui.configitems("terminal-tools"): t = k.split('.')[0] if t not in tools: try: priority = int(_toolstr(ui, t, "priority", "0")) except ValueError, e: priority = -100 tools[t] = priority
def add_schemes(ui): schemes = ui.configitems('kiln_scheme') for scheme, prefix in schemes: hg.schemes[scheme] = KilnRepo(scheme, prefix)
def findterminals(ui): seen = set() for key, value in ui.configitems('terminal-tools'): t = key.split('.')[0] seen.add(t) return [t for t in seen if _findtool(ui, t)]