diff --git a/meld/filediff.py b/meld/filediff.py index 0aabdba..66e9bed 100644 --- a/meld/filediff.py +++ b/meld/filediff.py @@ -762,16 +762,29 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component): None, True) self.queue_draw() - def _filter_text(self, txt): + def _filter_text(self, txt, buf, start_offset, end_offset): + dimmed_tag = buf.get_tag_table().lookup("dimmed") + buf.remove_tag(dimmed_tag, buf.get_iter_at_offset(start_offset), buf.get_iter_at_offset(end_offset)) def killit(m): assert m.group().count("\n") == 0 if len(m.groups()): s = m.group() + s2 = s for g in m.groups(): if g: + i = 0 + while s2.find(g, i) is not -1: + start_iter = buf.get_iter_at_offset(m.start()+s2.find(g, i) +start_offset) + end_iter = buf.get_iter_at_offset(m.start()+s2.find(g, i)+len(g)+start_offset) + buf.apply_tag(dimmed_tag, start_iter, end_iter) + i = s2.find(g, i)+len(g) s = s.replace(g,"") + return s else: + start_iter = buf.get_iter_at_offset(m.start()+start_offset) + end_iter = buf.get_iter_at_offset(m.end() +start_offset) + buf.apply_tag(dimmed_tag, start_iter, end_iter) return "" try: for filt in self.text_filters: diff --git a/meld/meldbuffer.py b/meld/meldbuffer.py index 9c89999..a718182 100644 --- a/meld/meldbuffer.py +++ b/meld/meldbuffer.py @@ -223,7 +223,7 @@ class BufferLines(object): end = self.buf.get_iter_at_line_or_eof(hi) txt = text_type(self.buf.get_text(start, end, False), 'utf8') - filter_txt = self.textfilter(txt) + filter_txt = self.textfilter(txt, self.buf, start.get_offset(), end.get_offset()) lines = filter_txt.splitlines() ends = filter_txt.splitlines(True) @@ -269,7 +269,7 @@ class BufferLines(object): if not line_end.ends_line(): line_end.forward_to_line_end() txt = self.buf.get_text(line_start, line_end, False) - return text_type(self.textfilter(txt), 'utf8') + return text_type(self.textfilter(txt, self.buf, line_start.get_offset(), line_end.get_offset()), 'utf8') def __len__(self): return self.buf.get_line_count() diff --git a/meld/sourceview.py b/meld/sourceview.py index 0d142f3..f0c01a1 100644 --- a/meld/sourceview.py +++ b/meld/sourceview.py @@ -124,6 +124,10 @@ class MeldSourceView(GtkSource.View): buf = meldbuffer.MeldBuffer() buf.create_tag("inline") + buf.create_tag("dimmed") + dimmed_tag = buf.get_tag_table().lookup("dimmed") + dimmed_tag.set_property("foreground", "#999999") + dimmed_tag.set_property("foreground-set", True) self.set_buffer(buf) meldsettings.connect('changed', self.on_setting_changed)