[meld] Use BufferLines shims in merging to avoid Unicode linebreak issues



commit 3c9529c2e39af90ea3f5e4fea58ea13f5ac942bc
Author: Kai Willadsen <kai willadsen gmail com>
Date:   Tue Sep 25 05:50:45 2012 +1000

    Use BufferLines shims in merging to avoid Unicode linebreak issues

 meld/filemerge.py |   14 +++-----------
 meld/merge.py     |    4 ++++
 2 files changed, 7 insertions(+), 11 deletions(-)
---
diff --git a/meld/filemerge.py b/meld/filemerge.py
index 4f2a3aa..c83888c 100644
--- a/meld/filemerge.py
+++ b/meld/filemerge.py
@@ -45,23 +45,15 @@ class FileMerge(filediff.FileDiff):
 
     def _merge_files(self):
         yield _("[%s] Computing differences") % self.label_text
-        panetext = []
-        for b in self.textbuffer[:self.num_panes]:
-            start, end = b.get_bounds()
-            text = unicode(b.get_text(start, end, False), 'utf8')
-            panetext.append(text)
-        lines = [x.split("\n") for x in panetext]
-        filteredpanetext = [self._filter_text(p) for p in panetext]
-        filteredlines = [x.split("\n") for x in filteredpanetext]
         merger = merge.Merger()
-        step = merger.initialize(filteredlines, lines)
+        step = merger.initialize(self.buffer_filtered, self.buffer_texts)
         while step.next() is None:
             yield 1
         yield _("[%s] Merging files") % self.label_text
-        for panetext[1] in merger.merge_3_files():
+        for merged_text in merger.merge_3_files():
             yield 1
         self.linediffer.unresolved = merger.unresolved
-        self.textbuffer[1].set_text(panetext[1])
+        self.textbuffer[1].set_text(merged_text)
         self.textbuffer[1].data.modified = True
         self.recompute_label()
         yield 1
diff --git a/meld/merge.py b/meld/merge.py
index 9e47f10..d68bb97 100644
--- a/meld/merge.py
+++ b/meld/merge.py
@@ -231,6 +231,8 @@ class Merger(diffutil.Differ):
         for i in range(lastline, baselen, 1):
             mergedtext.append(self.texts[1][i])
 
+        # FIXME: We need to obtain the original line endings from the lines
+        # that were merged and use those here instead of assuming '\n'.
         yield "\n".join(mergedtext)
 
     def merge_2_files(self, fromindex, toindex):
@@ -253,4 +255,6 @@ class Merger(diffutil.Differ):
         for i in range(lastline, baselen):
             mergedtext.append(self.texts[toindex][i])
 
+        # FIXME: We need to obtain the original line endings from the lines
+        # that were merged and use those here instead of assuming '\n'.
         yield "\n".join(mergedtext)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]