def update_values(self):
if not self.should_update():
return
dirtylist = []
if self.values is None:
names = self.get_names()
vals = self.get_values()
self.values = []
for i in range(len(vals)):
idx = int(vals[i]["number"])
self.values.append(GDBRegister(names[idx], idx, vals[i]["value"]))
else:
dirtylist = regs = parse_result_line(run_cmd("-data-list-changed-registers", True))["changed-registers"]
regvals = parse_result_line(run_cmd("-data-list-register-values x %s" % " ".join(regs), True))["register-values"]
for i in range(len(regs)):
reg = int(regvals[i]["number"])
if reg < len(self.values):
self.values[reg].set_value(regvals[i]["value"])
pos = self.get_view().viewport_position()
self.clear()
line = 0
for item in self.values:
output, line = item.format(line)
self.add_line(output)
self.set_viewport_position(pos)
self.update()
regions = []
v = self.get_view()
for dirty in dirtylist:
i = int(dirty)
if i >= len(self.values):
continue
region = v.full_line(v.text_point(self.values[i].line, 0))
if self.values[i].lines > 1:
region = region.cover(v.full_line(v.text_point(self.values[i].line + self.values[i].lines - 1, 0)))
regions.append(region)
v.add_regions("sublimegdb.dirtyregisters", regions,
get_setting("changed_variable_scope", "entity.name.class"),
get_setting("changed_variable_icon", ""),
sublime.DRAW_OUTLINED)
评论列表
文章目录