330 start = ''.join(_effect_str(effect) |
330 start = ''.join(_effect_str(effect) |
331 for effect in ['none'] + effects.split()) |
331 for effect in ['none'] + effects.split()) |
332 stop = _effect_str('none') |
332 stop = _effect_str('none') |
333 return ''.join([start, text, stop]) |
333 return ''.join([start, text, stop]) |
334 |
334 |
335 def configstyles(ui): |
|
336 for status, cfgeffects in ui.configitems('color'): |
|
337 if '.' not in status or status.startswith(('color.', 'terminfo.')): |
|
338 continue |
|
339 cfgeffects = ui.configlist('color', status) |
|
340 if cfgeffects: |
|
341 good = [] |
|
342 for e in cfgeffects: |
|
343 if color.valideffect(e): |
|
344 good.append(e) |
|
345 else: |
|
346 ui.warn(_("ignoring unknown color/effect %r " |
|
347 "(configured in color.%s)\n") |
|
348 % (e, status)) |
|
349 color._styles[status] = ' '.join(good) |
|
350 |
|
351 class colorui(uimod.ui): |
335 class colorui(uimod.ui): |
352 _colormode = 'ansi' |
336 _colormode = 'ansi' |
353 def write(self, *args, **opts): |
337 def write(self, *args, **opts): |
354 if self._colormode is None: |
338 if self._colormode is None: |
355 return super(colorui, self).write(*args, **opts) |
339 return super(colorui, self).write(*args, **opts) |
418 ui.__class__ = colorui |
402 ui.__class__ = colorui |
419 def colorcmd(orig, ui_, opts, cmd, cmdfunc): |
403 def colorcmd(orig, ui_, opts, cmd, cmdfunc): |
420 mode = _modesetup(ui_, opts['color']) |
404 mode = _modesetup(ui_, opts['color']) |
421 colorui._colormode = mode |
405 colorui._colormode = mode |
422 if mode and mode != 'debug': |
406 if mode and mode != 'debug': |
423 configstyles(ui_) |
407 color.configstyles(ui_) |
424 return orig(ui_, opts, cmd, cmdfunc) |
408 return orig(ui_, opts, cmd, cmdfunc) |
425 def colorgit(orig, gitsub, commands, env=None, stream=False, cwd=None): |
409 def colorgit(orig, gitsub, commands, env=None, stream=False, cwd=None): |
426 if gitsub.ui._colormode and len(commands) and commands[0] == "diff": |
410 if gitsub.ui._colormode and len(commands) and commands[0] == "diff": |
427 # insert the argument in the front, |
411 # insert the argument in the front, |
428 # the end of git diff arguments is used for paths |
412 # the end of git diff arguments is used for paths |