Bug 365903 - [Compatibility] Programmatic Contribution Factories not
supported

correct handler not set on newly defined commands.
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java
index 937c233..6aad95c 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/Workbench.java
@@ -31,6 +31,8 @@
 import java.util.Set;
 import org.eclipse.core.commands.Command;
 import org.eclipse.core.commands.CommandManager;
+import org.eclipse.core.commands.CommandManagerEvent;
+import org.eclipse.core.commands.ICommandManagerListener;
 import org.eclipse.core.commands.common.EventManager;
 import org.eclipse.core.commands.contexts.ContextManager;
 import org.eclipse.core.commands.contexts.ContextManagerEvent;
@@ -1828,6 +1830,15 @@
 			cmd.setHandler(new MakeHandlersGo(this, cmd.getId()));
 		}
 
+		commandManager.addCommandManagerListener(new ICommandManagerListener() {
+			public void commandManagerChanged(CommandManagerEvent commandManagerEvent) {
+				if (commandManagerEvent.isCommandDefined()) {
+					Command cmd = commandManagerEvent.getCommandManager().getCommand(
+							commandManagerEvent.getCommandId());
+					cmd.setHandler(new MakeHandlersGo(Workbench.this, cmd.getId()));
+				}
+			}
+		});
 		return service;
 	}