diff --git a/meld/dirdiff.py b/meld/dirdiff.py
index 3db55a5..bfc67d3 100644
--- a/meld/dirdiff.py
+++ b/meld/dirdiff.py
@@ -906,7 +906,7 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component):
         if not rows[pane]:
             return
         if os.path.isfile(rows[pane]):
-            self.emit("create-diff", [r for r in rows if os.path.isfile(r)])
+            self.emit("create-diff", [r for r in rows if os.path.isfile(r)], {})
         elif os.path.isdir(rows[pane]):
             if view.row_expanded(path):
                 view.collapse_row(path)
@@ -948,7 +948,7 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component):
         for row in selected:
             row_paths = self.model.value_paths(self.model.get_iter(row))
             paths = [p for p in row_paths if os.path.exists(p)]
-            self.emit("create-diff", paths)
+            self.emit("create-diff", paths, {})
 
     def on_button_copy_left_clicked(self, button):
         self.copy_selected(-1)
diff --git a/meld/melddoc.py b/meld/melddoc.py
index 7414e6a..76391a3 100644
--- a/meld/melddoc.py
+++ b/meld/melddoc.py
@@ -40,7 +40,8 @@ class MeldDoc(gobject.GObject):
         'file-changed':         (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
                                  (gobject.TYPE_STRING,)),
         'create-diff':          (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
-                                 (gobject.TYPE_PYOBJECT,)),
+                                 (gobject.TYPE_PYOBJECT, 
+                                  gobject.TYPE_PYOBJECT,), ),
         'status-changed':       (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
                                  (gobject.TYPE_PYOBJECT,)),
         'current-diff-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
diff --git a/meld/meldwindow.py b/meld/meldwindow.py
index 9c27207..5d25877 100644
--- a/meld/meldwindow.py
+++ b/meld/meldwindow.py
@@ -628,7 +628,8 @@ class MeldWindow(gnomeglade.Component):
         self.scheduler.add_scheduler(page.scheduler)
         page.connect("label-changed", self.on_notebook_label_changed)
         page.connect("file-changed", self.on_file_changed)
-        page.connect("create-diff", lambda obj,arg: self.append_diff(arg) )
+        page.connect("create-diff", lambda obj, arg, kwargs: 
+                     self.append_diff(arg, **kwargs))
 
         # Allow reordering of tabs
         self.notebook.set_tab_reorderable(page.widget, True);
@@ -650,14 +651,17 @@ class MeldWindow(gnomeglade.Component):
         doc.set_files(files)
         return doc
 
-    def append_filemerge(self, files):
+    def append_filemerge(self, files, merge_output=None):
         assert len(files) == 3
         doc = filemerge.FileMerge(app.prefs, len(files))
         self._append_page(doc, "text-x-generic")
         doc.set_files(files)
+        if merge_output is not None:
+            doc.set_merge_output_file(merge_output)
         return doc
 
-    def append_diff(self, paths, auto_compare=False, auto_merge=False):
+    def append_diff(self, paths, auto_compare=False, auto_merge=False, 
+                    merge_output=None):
         dirslist = [p for p in paths if os.path.isdir(p)]
         fileslist = [p for p in paths if os.path.isfile(p)]
         if dirslist and fileslist:
@@ -682,7 +686,7 @@ class MeldWindow(gnomeglade.Component):
         elif dirslist:
             return self.append_dirdiff(paths, auto_compare)
         elif auto_merge:
-            return self.append_filemerge(paths)
+            return self.append_filemerge(paths, merge_output=merge_output)
         else:
             return self.append_filediff(paths)
 
@@ -717,7 +721,8 @@ class MeldWindow(gnomeglade.Component):
         self.scheduler.add_scheduler(doc.scheduler)
         path = os.path.abspath(path)
         doc.set_location(path)
-        doc.connect("create-diff", lambda obj,arg: self.append_diff(arg))
+        doc.connect("create-diff", lambda obj, arg, kwargs: 
+                    self.append_diff(arg,**kwargs))
         doc.run_diff([path])
 
     def open_paths(self, paths, auto_compare=False, auto_merge=False):
diff --git a/meld/vcview.py b/meld/vcview.py
index 019cd39..d7de283 100644
--- a/meld/vcview.py
+++ b/meld/vcview.py
@@ -460,15 +460,39 @@ class VcView(melddoc.MeldDoc, gnomeglade.Component):
                     retry_diff = True
             else:
                 for path in path_list:
-                    self.emit("create-diff", [path])
+                    self.emit("create-diff", [path], {})
 
     def run_diff(self, path_list):
         try:
             for path in path_list:
                 comp_path = self.vc.get_path_for_repo_file(path)
                 os.chmod(comp_path, 0o444)
                 _temp_files.append(comp_path)
-                self.emit("create-diff", [comp_path, path])
+                self.emit("create-diff", [comp_path, path], {})
         except NotImplementedError:
             for path in path_list:
                 self.scheduler.add_task(self.run_diff_iter([path]), atfront=1)
@@ -648,7 +672,7 @@ class VcView(melddoc.MeldDoc, gnomeglade.Component):
         if result == 0:
             for d in diffs:
                 os.chmod(d[0], 0o444)
-                self.emit("create-diff", d)
+                self.emit("create-diff", d, {})
             return True
         elif not silent:
             primary = _("Error fetching original comparison file")
-- 
1.8.0.2

