[532817] Use a single per-language marker
diff --git a/plugins/org.eclipse.qvtd.umlx.ui/plugin.properties b/plugins/org.eclipse.qvtd.umlx.ui/plugin.properties
index b27c9c5..b919ef0 100644
--- a/plugins/org.eclipse.qvtd.umlx.ui/plugin.properties
+++ b/plugins/org.eclipse.qvtd.umlx.ui/plugin.properties
@@ -12,6 +12,8 @@
 pluginName = QVT Declarative UMLX User Interface (Incubation)
 providerName = Eclipse QVTd
 
+MF_Problem = UMLX Problem
+
 MF_Save_UMLX = Graphical (UMLX) Syntax
 MF_Save_UMLX_Command = Save UMLX Syntax
 MF_Save_UMLX_Description = Save the UMLX Syntax representation to an XMI file 
diff --git a/plugins/org.eclipse.qvtd.umlx.ui/plugin.xml b/plugins/org.eclipse.qvtd.umlx.ui/plugin.xml
index 1534efe..e994057 100644
--- a/plugins/org.eclipse.qvtd.umlx.ui/plugin.xml
+++ b/plugins/org.eclipse.qvtd.umlx.ui/plugin.xml
@@ -2,6 +2,12 @@
 <?eclipse version="3.0"?>
 
 <plugin>
+    <extension point="org.eclipse.core.resources.markers"
+      id="Marker" name="%MF_Problem">
+        <super type="org.eclipse.xtext.ui.check.fast"/>
+        <persistent value="true"/>
+    </extension>
+
 	<extension point="org.eclipse.ui.commands">
 	  <command id="org.eclipse.qvtd.umlx.ui.SaveUMLXCommand"
 	    name="%MF_Save_UMLX_Command" description="%MF_Save_UMLX_Description"/>
diff --git a/plugins/org.eclipse.qvtd.xtext.qvtbase.ui/src/org/eclipse/qvtd/xtext/qvtbase/ui/builder/QVTdBuilder.java b/plugins/org.eclipse.qvtd.xtext.qvtbase.ui/src/org/eclipse/qvtd/xtext/qvtbase/ui/builder/QVTdBuilder.java
index db710d6..ab0e164 100644
--- a/plugins/org.eclipse.qvtd.xtext.qvtbase.ui/src/org/eclipse/qvtd/xtext/qvtbase/ui/builder/QVTdBuilder.java
+++ b/plugins/org.eclipse.qvtd.xtext.qvtbase.ui/src/org/eclipse/qvtd/xtext/qvtbase/ui/builder/QVTdBuilder.java
@@ -13,6 +13,7 @@
 import java.util.Map;
 
 import org.apache.log4j.Logger;
+import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -42,6 +43,24 @@
 		protected @NonNull String getBuilderName() {
 			return "QVTd";
 		}
+
+		@Override
+		protected @NonNull String getMarkerId(@NonNull IFile iFile) {
+			String fileExtension = iFile.getFileExtension();
+			if ("qvtc".equals(fileExtension)) {
+				return "org.eclipse.qvtd.xtext.qvtcore.ui.Marker"; //QVTcoreUiModule.MARKER_ID;
+			}
+			else if ("qvti".equals(fileExtension)) {
+				return "org.eclipse.qvtd.xtext.qvtimperative.ui.Marker"; //QVTimperativeUiModule.MARKER_ID;
+			}
+			else if ("qvtr".equals(fileExtension)) {
+				return "org.eclipse.qvtd.xtext.qvtrelation.ui.Marker"; //QVTrelationUiModule.MARKER_ID;
+			}
+			else if ("umlx".equals(fileExtension)) {
+				return "org.eclipse.qvtd.umlx.ui.Marker"; //...UMLX....MARKER_ID;
+			}
+			return super.getMarkerId(iFile);
+		}
 	}
 
 	private static final Logger log = Logger.getLogger(QVTdBuilder.class);
diff --git a/plugins/org.eclipse.qvtd.xtext.qvtcore.ui/plugin.xml b/plugins/org.eclipse.qvtd.xtext.qvtcore.ui/plugin.xml
index e407afd..81dad1c 100644
--- a/plugins/org.eclipse.qvtd.xtext.qvtcore.ui/plugin.xml
+++ b/plugins/org.eclipse.qvtd.xtext.qvtcore.ui/plugin.xml
@@ -150,27 +150,11 @@
 
 
     <!-- marker definitions for org.eclipse.qvtd.xtext.qvtcore.QVTcore -->
-    <extension
-            id="qvtcore.check.fast"
-            name="%MF_Problem"
-            point="org.eclipse.core.resources.markers">
+    <extension point="org.eclipse.core.resources.markers"
+      id="Marker" name="%MF_Problem">
         <super type="org.eclipse.xtext.ui.check.fast"/>
         <persistent value="true"/>
     </extension>
-    <extension
-            id="qvtcore.check.normal"
-            name="%MF_Problem"
-            point="org.eclipse.core.resources.markers">
-        <super type="org.eclipse.xtext.ui.check.normal"/>
-        <persistent value="true"/>
-    </extension>
-    <extension
-            id="qvtcore.check.expensive"
-            name="%MF_Problem"
-            point="org.eclipse.core.resources.markers">
-        <super type="org.eclipse.xtext.ui.check.expensive"/>
-        <persistent value="true"/>
-    </extension>
 
 	<!-- Quick Outline -->
 	<extension
@@ -210,28 +194,12 @@
          point="org.eclipse.ui.ide.markerResolution">
       <markerResolutionGenerator
             class="org.eclipse.qvtd.xtext.qvtcore.ui.QVTcoreExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.qvtd.xtext.qvtcore.ui.qvtcore.check.fast">
+            markerType="org.eclipse.qvtd.xtext.qvtcore.ui.Marker">
             <attribute
                 name="FIXABLE_KEY"
                 value="true">
             </attribute>
         </markerResolutionGenerator>
-        <markerResolutionGenerator
-            class="org.eclipse.qvtd.xtext.qvtcore.ui.QVTcoreExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.qvtd.xtext.qvtcore.ui.qvtcore.check.normal">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-        </markerResolutionGenerator>
-        <markerResolutionGenerator
-            class="org.eclipse.qvtd.xtext.qvtcore.ui.QVTcoreExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.qvtd.xtext.qvtcore.ui.qvtcore.check.expensive">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-      </markerResolutionGenerator>
    </extension>
 
 	<extension point="org.eclipse.ui.menus">
diff --git a/plugins/org.eclipse.qvtd.xtext.qvtcore.ui/src/org/eclipse/qvtd/xtext/qvtcore/ui/QVTcoreUiModule.java b/plugins/org.eclipse.qvtd.xtext.qvtcore.ui/src/org/eclipse/qvtd/xtext/qvtcore/ui/QVTcoreUiModule.java
index 11c22ed..21ffb0c 100644
--- a/plugins/org.eclipse.qvtd.xtext.qvtcore.ui/src/org/eclipse/qvtd/xtext/qvtcore/ui/QVTcoreUiModule.java
+++ b/plugins/org.eclipse.qvtd.xtext.qvtcore.ui/src/org/eclipse/qvtd/xtext/qvtcore/ui/QVTcoreUiModule.java
@@ -26,6 +26,7 @@
 {
 	public static final String PLUGIN_ID = "org.eclipse.qvtd.xtext.qvtcore.ui";
 	public static final String EDITOR_ID = QVTcoreActivator.ORG_ECLIPSE_QVTD_XTEXT_QVTCORE_QVTCORE;
+	public static final String MARKER_ID = "org.eclipse.qvtd.xtext.qvtcore.ui.Marker";
 
 	public QVTcoreUiModule(AbstractUIPlugin plugin) {
 		super(plugin);
diff --git a/plugins/org.eclipse.qvtd.xtext.qvtimperative.ui/plugin.xml b/plugins/org.eclipse.qvtd.xtext.qvtimperative.ui/plugin.xml
index 16934c5..d3ea5af 100644
--- a/plugins/org.eclipse.qvtd.xtext.qvtimperative.ui/plugin.xml
+++ b/plugins/org.eclipse.qvtd.xtext.qvtimperative.ui/plugin.xml
@@ -150,27 +150,11 @@
 
 
     <!-- marker definitions for org.eclipse.qvtd.xtext.qvtimperative.QVTimperative -->
-    <extension
-            id="qvtimperative.check.fast"
-            name="%MF_Problem"
-            point="org.eclipse.core.resources.markers">
+    <extension point="org.eclipse.core.resources.markers"
+      id="Marker" name="%MF_Problem">
         <super type="org.eclipse.xtext.ui.check.fast"/>
         <persistent value="true"/>
     </extension>
-    <extension
-            id="qvtimperative.check.normal"
-            name="%MF_Problem"
-            point="org.eclipse.core.resources.markers">
-        <super type="org.eclipse.xtext.ui.check.normal"/>
-        <persistent value="true"/>
-    </extension>
-    <extension
-            id="qvtimperative.check.expensive"
-            name="%MF_Problem"
-            point="org.eclipse.core.resources.markers">
-        <super type="org.eclipse.xtext.ui.check.expensive"/>
-        <persistent value="true"/>
-    </extension>
 
 	<!-- Quick Outline -->
 	<extension
@@ -210,28 +194,12 @@
          point="org.eclipse.ui.ide.markerResolution">
       <markerResolutionGenerator
             class="org.eclipse.qvtd.xtext.qvtimperative.ui.QVTimperativeExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.qvtd.xtext.qvtimperative.ui.qvtimperative.check.fast">
+            markerType="org.eclipse.qvtd.xtext.qvtimperative.ui.Marker">
             <attribute
                 name="FIXABLE_KEY"
                 value="true">
             </attribute>
         </markerResolutionGenerator>
-        <markerResolutionGenerator
-            class="org.eclipse.qvtd.xtext.qvtimperative.ui.QVTimperativeExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.qvtd.xtext.qvtimperative.ui.qvtimperative.check.normal">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-        </markerResolutionGenerator>
-        <markerResolutionGenerator
-            class="org.eclipse.qvtd.xtext.qvtimperative.ui.QVTimperativeExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.qvtd.xtext.qvtimperative.ui.qvtimperative.check.expensive">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-      </markerResolutionGenerator>
    </extension>
 
 	<extension point="org.eclipse.ui.menus">
diff --git a/plugins/org.eclipse.qvtd.xtext.qvtimperative.ui/src/org/eclipse/qvtd/xtext/qvtimperative/ui/QVTimperativeUiModule.java b/plugins/org.eclipse.qvtd.xtext.qvtimperative.ui/src/org/eclipse/qvtd/xtext/qvtimperative/ui/QVTimperativeUiModule.java
index 4e5ddde..f2126dd 100644
--- a/plugins/org.eclipse.qvtd.xtext.qvtimperative.ui/src/org/eclipse/qvtd/xtext/qvtimperative/ui/QVTimperativeUiModule.java
+++ b/plugins/org.eclipse.qvtd.xtext.qvtimperative.ui/src/org/eclipse/qvtd/xtext/qvtimperative/ui/QVTimperativeUiModule.java
@@ -26,6 +26,7 @@
 {
 	public static final String PLUGIN_ID = "org.eclipse.qvtd.xtext.qvtimperative.ui";
 	public static final String EDITOR_ID = QVTimperativeActivator.ORG_ECLIPSE_QVTD_XTEXT_QVTIMPERATIVE_QVTIMPERATIVE;
+	public static final String MARKER_ID = "org.eclipse.qvtd.xtext.qvtimperative.ui.Marker";
 
 	public QVTimperativeUiModule(AbstractUIPlugin plugin) {
 		super(plugin);
diff --git a/plugins/org.eclipse.qvtd.xtext.qvtrelation.ui/plugin.xml b/plugins/org.eclipse.qvtd.xtext.qvtrelation.ui/plugin.xml
index efcaa45..29cafc9 100644
--- a/plugins/org.eclipse.qvtd.xtext.qvtrelation.ui/plugin.xml
+++ b/plugins/org.eclipse.qvtd.xtext.qvtrelation.ui/plugin.xml
@@ -153,27 +153,12 @@
 
 
     <!-- marker definitions for org.eclipse.qvtd.xtext.qvtrelation.QVTrelation -->
-    <extension
-            id="qvtrelation.check.fast"
-            name="%MF_Problem"
-            point="org.eclipse.core.resources.markers">
+    <extension point="org.eclipse.core.resources.markers"
+      id="Marker" name="%MF_Problem">
         <super type="org.eclipse.xtext.ui.check.fast"/>
         <persistent value="true"/>
     </extension>
-    <extension
-            id="qvtrelation.check.normal"
-            name="%MF_Problem"
-            point="org.eclipse.core.resources.markers">
-        <super type="org.eclipse.xtext.ui.check.normal"/>
-        <persistent value="true"/>
-    </extension>
-    <extension
-            id="qvtrelation.check.expensive"
-            name="%MF_Problem"
-            point="org.eclipse.core.resources.markers">
-        <super type="org.eclipse.xtext.ui.check.expensive"/>
-        <persistent value="true"/>
-    </extension>
+
 
 	<!-- Quick Outline -->
 	<extension
@@ -213,23 +198,7 @@
             point="org.eclipse.ui.ide.markerResolution">
         <markerResolutionGenerator
             class="org.eclipse.qvtd.xtext.qvtrelation.ui.QVTrelationExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.qvtd.xtext.qvtrelation.ui.qvtrelation.check.fast">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-        </markerResolutionGenerator>
-        <markerResolutionGenerator
-            class="org.eclipse.qvtd.xtext.qvtrelation.ui.QVTrelationExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.qvtd.xtext.qvtrelation.ui.qvtrelation.check.normal">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-        </markerResolutionGenerator>
-        <markerResolutionGenerator
-            class="org.eclipse.qvtd.xtext.qvtrelation.ui.QVTrelationExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.qvtd.xtext.qvtrelation.ui.qvtrelation.check.expensive">
+            markerType="org.eclipse.qvtd.xtext.qvtrelation.ui.Marker">
             <attribute
                 name="FIXABLE_KEY"
                 value="true">
diff --git a/plugins/org.eclipse.qvtd.xtext.qvtrelation.ui/src/org/eclipse/qvtd/xtext/qvtrelation/ui/QVTrelationUiModule.java b/plugins/org.eclipse.qvtd.xtext.qvtrelation.ui/src/org/eclipse/qvtd/xtext/qvtrelation/ui/QVTrelationUiModule.java
index 4160910..788055a 100644
--- a/plugins/org.eclipse.qvtd.xtext.qvtrelation.ui/src/org/eclipse/qvtd/xtext/qvtrelation/ui/QVTrelationUiModule.java
+++ b/plugins/org.eclipse.qvtd.xtext.qvtrelation.ui/src/org/eclipse/qvtd/xtext/qvtrelation/ui/QVTrelationUiModule.java
@@ -26,6 +26,7 @@
 {
 	public static final String PLUGIN_ID = "org.eclipse.qvtd.xtext.qvtrelation.ui";
 	public static final String EDITOR_ID = QVTrelationActivator.ORG_ECLIPSE_QVTD_XTEXT_QVTRELATION_QVTRELATION;
+	public static final String MARKER_ID = "org.eclipse.qvtd.xtext.qvtrelation.ui.Marker";
 
 	public QVTrelationUiModule(AbstractUIPlugin plugin) {
 		super(plugin);