diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ReopenEditorMenu.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ReopenEditorMenu.java
index 94220f0..7cf9734 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ReopenEditorMenu.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/ReopenEditorMenu.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
+ * Copyright (c) 2000, 2018 IBM Corporation and others.
  * 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
@@ -12,6 +12,7 @@
 
 import static org.eclipse.swt.events.SelectionListener.widgetSelectedAdapter;
 
+import java.util.Arrays;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.SafeRunner;
@@ -209,6 +210,7 @@
 
         int n = Math.min(itemsToShow, historyItems.length);
         if (n <= 0) {
+			addClearHistory(menu, n);
             return;
         }
 
@@ -240,6 +242,18 @@
                 }
             });
         }
+
+		addClearHistory(menu, n);
+	}
+
+	private void addClearHistory(Menu menu, int nItems) {
+		new MenuItem(menu, SWT.SEPARATOR);
+		MenuItem miClear = new MenuItem(menu, SWT.PUSH);
+		miClear.setText(WorkbenchMessages.OpenRecentDocumentsClear_text);
+		miClear.addSelectionListener(widgetSelectedAdapter(e -> Arrays.stream(history.getItems()).forEach(item -> {
+			history.remove(item);
+		})));
+		miClear.setEnabled(nItems > 0);
     }
 
     /**
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java
index c638a69..017be7b 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchMessages.java
@@ -114,6 +114,7 @@
 	public static String ImportResourcesAction_toolTip;
 
 	public static String OpenRecentDocuments_text;
+	public static String OpenRecentDocumentsClear_text;
 	public static String OpenRecent_errorTitle;
 	public static String OpenRecent_unableToOpen;
 	public static String Exit_text;
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties
index 1550668..71cda71 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties
@@ -70,6 +70,7 @@
 ExportResourcesAction_toolTip = Export
 ImportResourcesAction_text = &Import...
 ImportResourcesAction_toolTip = Import
+OpenRecentDocumentsClear_text = Clear History
 OpenRecentDocuments_text = Recent Files
 OpenRecent_errorTitle = Problems opening editor
 OpenRecent_unableToOpen = Unable to open ''{0}''.
