@@ -2142,7 +2142,7 @@ class Expressions(Dashboard.Module):
2142
2142
'''Watch user expressions.'''
2143
2143
2144
2144
def __init__ (self ):
2145
- self .table = set ()
2145
+ self .table = []
2146
2146
2147
2147
def label (self ):
2148
2148
return 'Expressions'
@@ -2153,7 +2153,7 @@ class Expressions(Dashboard.Module):
2153
2153
if self .align :
2154
2154
label_width = max (len (expression ) for expression in self .table ) if self .table else 0
2155
2155
default_radix = Expressions .get_default_radix ()
2156
- for expression in self .table :
2156
+ for number , expression in enumerate ( self .table , start = 1 ) :
2157
2157
label = expression
2158
2158
match = re .match ('^/(\d+) +(.+)$' , expression )
2159
2159
try :
@@ -2166,9 +2166,10 @@ class Expressions(Dashboard.Module):
2166
2166
finally :
2167
2167
if match :
2168
2168
run ('set output-radix {}' .format (default_radix ))
2169
+ number = ansi (str (number ), R .style_selected_2 )
2169
2170
label = ansi (expression , R .style_high ) + ' ' * (label_width - len (expression ))
2170
2171
equal = ansi ('=' , R .style_low )
2171
- out .append ('{} {} {}' .format (label , equal , value ))
2172
+ out .append ('[{}] {} {} {} ' .format (number , label , equal , value ))
2172
2173
return out
2173
2174
2174
2175
def commands (self ):
@@ -2180,8 +2181,7 @@ class Expressions(Dashboard.Module):
2180
2181
},
2181
2182
'unwatch' : {
2182
2183
'action' : self .unwatch ,
2183
- 'doc' : 'Stop watching an expression.' ,
2184
- 'complete' : gdb .COMPLETE_EXPRESSION
2184
+ 'doc' : 'Stop watching an expression by index.'
2185
2185
},
2186
2186
'clear' : {
2187
2187
'action' : self .clear ,
@@ -2200,15 +2200,22 @@ class Expressions(Dashboard.Module):
2200
2200
2201
2201
def watch (self , arg ):
2202
2202
if arg :
2203
- self .table .add (arg )
2203
+ if arg not in self .table :
2204
+ self .table .append (arg )
2205
+ else :
2206
+ raise Exception ('Expression already watched' )
2204
2207
else :
2205
2208
raise Exception ('Specify an expression' )
2206
2209
2207
2210
def unwatch (self , arg ):
2208
2211
if arg :
2209
2212
try :
2210
- self . table . remove (arg )
2213
+ number = int (arg ) - 1
2211
2214
except :
2215
+ number = - 1
2216
+ if 0 <= number < len (self .table ):
2217
+ self .table .pop (number )
2218
+ else :
2212
2219
raise Exception ('Expression not watched' )
2213
2220
else :
2214
2221
raise Exception ('Specify an expression' )
0 commit comments