- fire events on IInterpreterInstall extension changes
- rebuild projects if IInterpreterInstall global variables are changed
diff --git a/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/AbstractInterpreterInstall.java b/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/AbstractInterpreterInstall.java
index 0c2789f..68e469e 100644
--- a/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/AbstractInterpreterInstall.java
+++ b/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/AbstractInterpreterInstall.java
@@ -357,11 +357,18 @@
 				} else {
 					i.remove();
 				}
+				firePropertyChangeEvent(new PropertyChangeEvent(this,
+						IInterpreterInstallChangedListener.PROPERTY_EXTENSIONS,
+						Collections.singletonList(object),
+						value != null ? Collections.singletonList(value) : null));
 				return object;
 			}
 		}
 		if (value != null) {
 			resource.getContents().add(value);
+			firePropertyChangeEvent(new PropertyChangeEvent(this,
+					IInterpreterInstallChangedListener.PROPERTY_EXTENSIONS,
+					null, Collections.singletonList(value)));
 		}
 		return null;
 	}
@@ -389,12 +396,18 @@
 	}
 
 	public void setExtensions(List<EObject> value) {
+		final List<EObject> oldValue;
 		if (resource == null) {
 			resource = createResource();
+			oldValue = null;
 		} else {
+			oldValue = new ArrayList<EObject>(resource.getContents());
 			resource.getContents().clear();
 		}
 		resource.getContents().addAll(value);
+		firePropertyChangeEvent(new PropertyChangeEvent(this,
+				IInterpreterInstallChangedListener.PROPERTY_EXTENSIONS,
+				oldValue, value));
 	}
 
 	public String saveExtensions() {
diff --git a/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/IInterpreterInstallChangedListener.java b/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/IInterpreterInstallChangedListener.java
index e7dbedb..f63e12a 100644
--- a/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/IInterpreterInstallChangedListener.java
+++ b/core/plugins/org.eclipse.dltk.launching/src/org/eclipse/dltk/launching/IInterpreterInstallChangedListener.java
@@ -61,6 +61,14 @@
 			+ ".PROPERTY_Interpreter_ARGUMENTS"; //$NON-NLS-1$
 
 	/**
+	 * Property constant indicating the install location of a Interpreter
+	 * install has changed.
+	 */
+	public static final String PROPERTY_EXTENSIONS = DLTKLaunchingPlugin
+			.getUniqueIdentifier()
+			+ ".PROPERTY_EXTENSIONS"; //$NON-NLS-1$
+
+	/**
 	 * Notification that the default interpreter install has changed.
 	 * 
 	 * @param previous