diff --git a/.gdbinit b/.gdbinit index 4ddc693..a40832a 100644 --- a/.gdbinit +++ b/.gdbinit @@ -223,6 +223,8 @@ def run(command): def ansi(string, style): if R.ansi: + # clean up existing style before applying the new + string = re.sub('\x1b\[[0-9;:]+m', '', str(string)) return '\x1b[{}m{}\x1b[0m'.format(style, string) else: return string @@ -2056,6 +2058,7 @@ class Expressions(Dashboard.Module): def __init__(self): self.table = set() + self.previous_values = {} def label(self): return 'Expressions' @@ -2074,6 +2077,10 @@ class Expressions(Dashboard.Module): radix, expression = match.groups() run('set output-radix {}'.format(radix)) value = format_value(gdb.parse_and_eval(expression)) + changed = self.previous_values.get(expression, '') != value + self.previous_values[expression] = value + if changed: + value = ansi(value, R.style_selected_1) except gdb.error as e: value = ansi(e, R.style_error) finally: @@ -2114,6 +2121,7 @@ class Expressions(Dashboard.Module): def watch(self, arg): if arg: self.table.add(arg) + self.previous_values[arg] = '' else: raise Exception('Specify an expression') @@ -2121,6 +2129,7 @@ class Expressions(Dashboard.Module): if arg: try: self.table.remove(arg) + self.previous_values.pop(arg, None) except: raise Exception('Expression not watched') else: @@ -2128,6 +2137,7 @@ class Expressions(Dashboard.Module): def clear(self, arg): self.table.clear() + self.previous_values.clear() @staticmethod def get_default_radix():