compare viewer
diff --git a/plugins/org.eclipse.dltk.ruby.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.dltk.ruby.ui/META-INF/MANIFEST.MF
index dd3ce8c..4ae7a45 100644
--- a/plugins/org.eclipse.dltk.ruby.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.dltk.ruby.ui/META-INF/MANIFEST.MF
@@ -11,6 +11,7 @@
  org.eclipse.ui.editors,
  org.eclipse.jface.text,
  org.eclipse.search,
+ org.eclipse.compare,
  org.eclipse.ui.ide,
  org.eclipse.ui.console,
  org.eclipse.ui.workbench.texteditor,
diff --git a/plugins/org.eclipse.dltk.ruby.ui/plugin.properties b/plugins/org.eclipse.dltk.ruby.ui/plugin.properties
index 219cfb7..9820a8b 100644
--- a/plugins/org.eclipse.dltk.ruby.ui/plugin.properties
+++ b/plugins/org.eclipse.dltk.ruby.ui/plugin.properties
@@ -92,4 +92,8 @@
 RubyBrowsingPerspective.name = Ruby Browsing
 RubyProjects.name = Ruby Projects
 RubyExtendedClasses.name = Ruby Classes/Modules
-RubyMembers.name = Ruby Members
\ No newline at end of file
+RubyMembers.name = Ruby Members
+
+# Compare
+RubyCompareFontDefiniton.label=Ruby compare text font
+RubyCompareFontDefiniton.description=The Ruby compare text font is used by Ruby compare/merge tools.
diff --git a/plugins/org.eclipse.dltk.ruby.ui/plugin.xml b/plugins/org.eclipse.dltk.ruby.ui/plugin.xml
index d6214b4..ddf6c40 100644
--- a/plugins/org.eclipse.dltk.ruby.ui/plugin.xml
+++ b/plugins/org.eclipse.dltk.ruby.ui/plugin.xml
@@ -391,6 +391,7 @@
          <part id="org.eclipse.dltk.ruby.ui.editor.RubyEditor"/>
       </actionSetPartAssociation>
  </extension>
+<!--Action Sets -->
 
  <extension
    	point="org.eclipse.ui.workbench.texteditor.hyperlinkDetectors">
@@ -409,5 +410,32 @@
    	</target>
  </extension>
 
-<!--Action Sets -->
+<!-- =========================================================================== -->
+<!-- Ruby Compare                                                                -->
+<!-- =========================================================================== -->
+   <extension
+         point="org.eclipse.ui.themes">
+      <fontDefinition
+            label="%RubyCompareFontDefiniton.label"
+            defaultsTo="org.eclipse.jface.textfont"
+            categoryId="org.eclipse.compare.contentmergeviewer.TextMergeViewer"
+            id="org.eclipse.dltk.ruby.internal.ui.compare.RubyMergeViewer">
+         <description>
+            %RubyCompareFontDefiniton.description
+         </description>
+      </fontDefinition>
+   </extension>
+
+   <extension point="org.eclipse.compare.contentMergeViewers">
+      <viewer
+            extensions="rb"
+            class="org.eclipse.dltk.ruby.internal.ui.compare.RubyMergeViewerCreator"
+            id="org.eclipse.dltk.ruby.internal.ui.compare.RubyMergeViewer">
+      </viewer>
+      <contentTypeBinding
+			contentTypeId="org.eclipse.dltk.rubyContentType"
+            contentMergeViewerId="org.eclipse.dltk.ruby.internal.ui.compare.RubyMergeViewer">
+	  </contentTypeBinding>
+   </extension>
+
  </plugin>
diff --git a/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/Messages.java b/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/Messages.java
index 07b4229..93c713f 100644
--- a/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/Messages.java
+++ b/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/Messages.java
@@ -6,6 +6,7 @@
 	private static final String BUNDLE_NAME = "org.eclipse.dltk.ruby.internal.ui.messages"; //$NON-NLS-1$
 	public static String InitializeAfterLoadJob_initializingDltkRuby;
 	public static String InitializeAfterLoadJob_startingDltkRubyInitialization;
+	public static String CompareTitle;
 	static {
 		// initialize resource bundle
 		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
diff --git a/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/compare/RubyMergeViewer.java b/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/compare/RubyMergeViewer.java
new file mode 100644
index 0000000..1b21d0c
--- /dev/null
+++ b/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/compare/RubyMergeViewer.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2008 xored software, Inc.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     xored software, Inc. - initial API and Implementation (Alex Panchenko)
+ *******************************************************************************/
+package org.eclipse.dltk.ruby.internal.ui.compare;
+
+import org.eclipse.compare.CompareConfiguration;
+import org.eclipse.dltk.ruby.internal.ui.Messages;
+import org.eclipse.dltk.ruby.internal.ui.RubyUI;
+import org.eclipse.dltk.ui.compare.ScriptMergeViewer;
+import org.eclipse.dltk.ui.text.ScriptTextTools;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.swt.widgets.Composite;
+
+public class RubyMergeViewer extends ScriptMergeViewer {
+
+	public RubyMergeViewer(Composite parent, CompareConfiguration configuration) {
+		super(parent, configuration);
+	}
+
+	protected ScriptTextTools getTextTools() {
+		return RubyUI.getDefault().getTextTools();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @seeorg.eclipse.dltk.ruby.internal.ui.compare.ScriptMergeViewer#
+	 * getPreferenceStore()
+	 */
+	protected IPreferenceStore getPreferenceStore() {
+		return RubyUI.getDefault().getPreferenceStore();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.dltk.ui.compare.ScriptMergeViewer#getTitle()
+	 */
+	public String getTitle() {
+		return Messages.CompareTitle;
+	}
+
+}
diff --git a/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/compare/RubyMergeViewerCreator.java b/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/compare/RubyMergeViewerCreator.java
new file mode 100644
index 0000000..f362de4
--- /dev/null
+++ b/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/compare/RubyMergeViewerCreator.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2008 xored software, Inc.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     xored software, Inc. - initial API and Implementation (Alex Panchenko)
+ *******************************************************************************/
+package org.eclipse.dltk.ruby.internal.ui.compare;
+
+import org.eclipse.compare.CompareConfiguration;
+import org.eclipse.compare.IViewerCreator;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.widgets.Composite;
+
+public class RubyMergeViewerCreator implements IViewerCreator {
+
+	public Viewer createViewer(Composite parent, CompareConfiguration cfg) {
+		return new RubyMergeViewer(parent, cfg);
+	}
+
+}
diff --git a/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/messages.properties b/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/messages.properties
index 30630aa..04370b1 100644
--- a/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/messages.properties
+++ b/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/messages.properties
@@ -1,2 +1,3 @@
 InitializeAfterLoadJob_startingDltkRubyInitialization=Starting DLTK Ruby initialization
 InitializeAfterLoadJob_initializingDltkRuby=Initializing DLTK Ruby
+CompareTitle=Ruby Compare