Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/ITrackedNodePosition.java41
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/TrackedNodePosition.java60
-rw-r--r--core/org.eclipse.cdt.ui.tests/resources/quickFix/RenameInFile.cpp131
-rw-r--r--core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/testplugin/util/StringAsserts.java192
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AutomatedSuite.java6
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java11
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/quickfix/AssistQuickFixTest.java295
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/MarkOccurrenceTest.java20
-rw-r--r--core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF2
-rw-r--r--core/org.eclipse.cdt.ui/icons/obj16/correction_linked_rename.gifbin0 -> 905 bytes
-rw-r--r--core/org.eclipse.cdt.ui/plugin.properties2
-rw-r--r--core/org.eclipse.cdt.ui/plugin.xml11
-rw-r--r--core/org.eclipse.cdt.ui/schema/quickAssistProcessors.exsd164
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/fix/LinkedProposalModel.java81
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/fix/LinkedProposalPositionGroup.java144
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java2
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CCorrectionProcessor.java33
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CorrectionCommandHandler.java56
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CorrectionMessages.java8
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CorrectionMessages.properties12
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/ICommandAccess.java3
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/QuickAssistLightBulbUpdater.java6
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/QuickAssistProcessor.java116
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/ASTRewriteCorrectionProposal.java101
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/ChangeCorrectionProposal.java311
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/LinkedCorrectionProposal.java84
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/LinkedNamesAssistProposal.java336
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/TUCorrectionProposal.java436
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/ColoredViewersManager.java94
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/ColoringLabelProvider.java97
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/LinkedProposalModelPresenter.java239
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/refactoring/CTextFileChange.java32
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/IQuickAssistProcessor.java44
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CBuildConsole.html42
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CConfigurationDataProvider.html48
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CIndex.html143
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CIndexer.html41
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CProject.html40
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CodeFormatter.html43
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_PathEntryContainerInitializer.html42
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_ProcessList.html39
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_externalSettingsProvider.html43
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_language.html78
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_projectConverter.html43
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templateAssociations.html73
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templateProcessTypes.html173
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templates.html93
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_debug_core_BreakpointActionType.html49
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_debug_core_BreakpointExtension.html63
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_debug_core_CDebugger.html60
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_core_MakeTargetBuilder.html42
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_core_ScannerConfigurationDiscoveryProfile.html101
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_ui_DiscoveryProfilePage.html49
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_ManagedBuildInfo.html247
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_buildDefinitions.html630
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_buildProperties.html57
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_projectConverter.html68
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_tcModificationInfo.html81
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_ui_newWizardPages.html136
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_CDTWizard.html43
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_CHelpProvider.html42
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_ConfigManager.html54
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_DocCommentOwner.html67
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_HelpInfo.html54
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_IndexerPage.html44
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_PathContainerPage.html44
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_ProposalFilter.html60
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_cPropertyTab.html117
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_completionProposalComputer.html91
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_foldingStructureProviders.html51
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_newCfgDialog.html64
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_quickAssistProcessors.html269
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_quickFixProcessors.html288
-rw-r--r--doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_textHovers.html58
74 files changed, 6983 insertions, 57 deletions
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/ITrackedNodePosition.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/ITrackedNodePosition.java
new file mode 100644
index 00000000000..4c53a365d7a
--- /dev/null
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/ITrackedNodePosition.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2008 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+package org.eclipse.cdt.core.dom.rewrite;
+
+/**
+ * A tracked node position is returned when a rewrite change is
+ * requested to be tracked.
+ * <p>
+ * This interface is not intended to be implemented by clients.
+ * </p>
+ *
+ * @since 5.1
+ * @noimplement This interface is not intended to be implemented by clients.
+ */
+public interface ITrackedNodePosition {
+
+ /**
+ * Returns the original or modified start position of the tracked node depending if called before
+ * or after the rewrite is applied. <code>-1</code> is returned for removed nodes.
+ *
+ * @return the original or modified start position of the tracked node
+ */
+ public int getStartPosition();
+
+ /**
+ * Returns the original or modified length of the tracked node depending if called before
+ * or after the rewrite is applied. <code>-1</code> is returned for removed nodes.
+ *
+ * @return the original or modified length of the tracked node
+ */
+ public int getLength();
+}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/TrackedNodePosition.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/TrackedNodePosition.java
new file mode 100644
index 00000000000..d31331325c4
--- /dev/null
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/TrackedNodePosition.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+package org.eclipse.cdt.internal.core.dom.rewrite;
+
+import org.eclipse.text.edits.TextEdit;
+import org.eclipse.text.edits.TextEditGroup;
+
+import org.eclipse.cdt.core.dom.rewrite.ITrackedNodePosition;
+import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
+import org.eclipse.jface.text.IRegion;
+
+/**
+ * @see org.eclipse.cdt.core.dom.rewrite.ITrackedNodePosition
+ */
+public class TrackedNodePosition implements ITrackedNodePosition {
+ private final TextEditGroup group;
+ private final ASTNode node;
+
+ public TrackedNodePosition(TextEditGroup group, ASTNode node) {
+ this.group= group;
+ this.node= node;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.corext.dom.ITrackedNodePosition#getStartPosition()
+ */
+ public int getStartPosition() {
+ if (this.group.isEmpty()) {
+ return this.node.getOffset();
+ }
+ IRegion coverage= TextEdit.getCoverage(this.group.getTextEdits());
+ if (coverage == null) {
+ return this.node.getOffset();
+ }
+ return coverage.getOffset();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.corext.dom.ITrackedNodePosition#getLength()
+ */
+ public int getLength() {
+ if (this.group.isEmpty()) {
+ return this.node.getLength();
+ }
+ IRegion coverage= TextEdit.getCoverage(this.group.getTextEdits());
+ if (coverage == null) {
+ return this.node.getLength();
+ }
+ return coverage.getLength();
+ }
+}
diff --git a/core/org.eclipse.cdt.ui.tests/resources/quickFix/RenameInFile.cpp b/core/org.eclipse.cdt.ui.tests/resources/quickFix/RenameInFile.cpp
new file mode 100644
index 00000000000..0c54f2730a1
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/resources/quickFix/RenameInFile.cpp
@@ -0,0 +1,131 @@
+class Base2 {
+ Base2();
+ void foo();
+};
+
+typedef int size_t;
+#define INT int
+#define FUNCTION_MACRO(arg) globalFunc(arg)
+#define EMPTY_MACRO(arg)
+
+enum Enumeration {
+ ONE, TWO, THREE
+};
+
+const int globalConstant = 0;
+int globalVariable = 0;
+static int globalStaticVariable = 0;
+
+void globalFunc(int a);
+static void globalStaticFunc() {
+ EMPTY_MACRO(n);
+ globalVariable = 1;
+ EMPTY_MACRO(1);
+ return 0;
+}
+
+class Base1 {
+ Base1();
+ ~Base1();
+};
+
+Base1::~Base1() {}
+Base1::Base1() {}
+
+Base2::Base2() {}
+void Base2::foo() {}
+
+class ClassContainer : Base1, Base2 {
+public:
+ static int staticPubField;
+ const int constPubField;
+ const static int constStaticPubField;
+ size_t pubField;
+
+ static INT staticPubMethod(int arg) {
+ FUNCTION_MACRO(arg);
+ globalFunc(arg);
+ return globalStaticVariable;
+ }
+ int pubMethod();
+
+ typedef float pubTypedef;
+ pubTypedef tdField;
+private:
+ static INT staticPrivMethod();
+};
+
+template<class T1, class T2> class TemplateClass {
+ T1 tArg1;
+ T2 tArg2;
+ TemplateClass(T1 arg1, T2 arg2) {
+ tArg1 = arg1;
+ tArg2 = arg2;
+ }
+ void m(TemplateClass&);
+};
+
+template<class T1> class PartialInstantiatedClass : TemplateClass<T1, Base1> {
+};
+
+struct CppStruct {
+ CppStruct() {}
+ int structField;
+};
+
+union CppUnion {
+ int unionField;
+};
+
+typedef CppUnion TUnion;
+
+namespace ns {
+int namespaceVar = 0;
+int namespaceFunc() {
+ globalStaticFunc();
+ TUnion tu;
+ Enumeration e= TWO;
+ switch (e) {
+ case ONE: case THREE:
+ return 1;
+ }
+ size_t size;
+ return namespaceVar;
+}
+}
+
+INT ClassContainer::pubMethod() {
+ int localVar = 0;
+ ns::namespaceVar= 1;
+ return pubField + localVar;
+}
+
+using namespace ns;
+//using ns::namespaceVar;
+
+INT ClassContainer::staticPrivMethod() {
+ CppStruct* st= new CppStruct();
+ st->structField= namespaceVar;
+ CppUnion un;
+ un.unionField= 2;
+ staticPubMethod(staticPubField);
+label:
+ FUNCTION_MACRO(0);
+ if (un.unionField < st->structField)
+ goto label;
+ return globalConstant;
+}
+
+template<int X>
+class ConstantTemplate {
+public:
+ size_t getNumber(size_t y) {
+ return X;
+ }
+};
+
+ConstantTemplate<5> c5;
+ConstantTemplate<5> c52;
+ConstantTemplate<4> c4;
+
+const int c= c5.getNumber(0);
diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/testplugin/util/StringAsserts.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/testplugin/util/StringAsserts.java
new file mode 100644
index 00000000000..22bbbc3faea
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/testplugin/util/StringAsserts.java
@@ -0,0 +1,192 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.ui.testplugin.util;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.Arrays;
+
+import junit.framework.Assert;
+
+/**
+ *
+ */
+abstract public class StringAsserts {
+ private StringAsserts() {
+ super();
+ }
+
+ private static int getDiffPos(String str1, String str2) {
+ int len1= Math.min(str1.length(), str2.length());
+
+ int diffPos= -1;
+ for (int i= 0; i < len1; i++) {
+ if (str1.charAt(i) != str2.charAt(i)) {
+ diffPos= i;
+ break;
+ }
+ }
+ if (diffPos == -1 && str1.length() != str2.length()) {
+ diffPos= len1;
+ }
+ return diffPos;
+ }
+
+ private static final int printRange= 6;
+
+ public static void assertEqualString(String actual, String expected) {
+ if (actual == null || expected == null) {
+ if (actual == expected) {
+ return;
+ }
+ if (actual == null) {
+ Assert.assertTrue("Content not as expected: is 'null' expected: " + expected, false);
+ } else {
+ Assert.assertTrue("Content not as expected: expected 'null' is: " + actual, false);
+ }
+ }
+
+ int diffPos= getDiffPos(actual, expected);
+ if (diffPos != -1) {
+ int diffAhead= Math.max(0, diffPos - printRange);
+ int diffAfter= Math.min(actual.length(), diffPos + printRange);
+
+ String diffStr= actual.substring(diffAhead, diffPos) + '^' + actual.substring(diffPos, diffAfter);
+
+ // use detailed message
+ String message= "Content not as expected: is\n" + actual + "\nDiffers at pos " + diffPos + ": " + diffStr + "\nexpected:\n" + expected; //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+
+ Assert.assertEquals(message, expected, actual);
+ }
+ }
+
+ public static void assertEqualStringIgnoreDelim(String actual, String expected) throws IOException {
+ if (actual == null || expected == null) {
+ if (actual == expected) {
+ return;
+ }
+ if (actual == null) {
+ Assert.assertTrue("Content not as expected: is 'null' expected: " + expected, false);
+ } else {
+ Assert.assertTrue("Content not as expected: expected 'null' is: " + actual, false);
+ }
+ }
+
+ BufferedReader read1= new BufferedReader(new StringReader(actual));
+ BufferedReader read2= new BufferedReader(new StringReader(expected));
+
+ int line= 1;
+ do {
+ String s1= read1.readLine();
+ String s2= read2.readLine();
+
+ if (s1 == null || !s1.equals(s2)) {
+ if (s1 == null && s2 == null) {
+ return;
+ }
+ String diffStr= (s1 == null) ? s2 : s1;
+
+ String message= "Content not as expected: Content is: \n" + actual + "\nDiffers at line " + line + ": " + diffStr + "\nExpected contents: \n" + expected;
+ Assert.assertEquals(message, expected, actual);
+ }
+ line++;
+ } while (true);
+ }
+
+ public static void assertEqualStringsIgnoreOrder(String[] actuals, String[] expecteds) {
+ ArrayList<String> list1= new ArrayList<String>(Arrays.asList(actuals));
+ ArrayList<String> list2= new ArrayList<String>(Arrays.asList(expecteds));
+
+ for (int i= list1.size() - 1; i >= 0; i--) {
+ if (list2.remove(list1.get(i))) {
+ list1.remove(i);
+ }
+ }
+
+ int n1= list1.size();
+ int n2= list2.size();
+
+ if (n1 + n2 > 0) {
+ if (n1 == 1 && n2 == 1) {
+ assertEqualString((String) list1.get(0), (String) list2.get(0));
+ }
+
+ StringBuffer buf= new StringBuffer();
+ for (int i= 0; i < n1; i++) {
+ String s1= (String) list1.get(i);
+ if (s1 != null) {
+ buf.append(s1);
+ buf.append("\n");
+ }
+ }
+ String actual= buf.toString();
+
+ buf= new StringBuffer();
+ for (int i= 0; i < n2; i++) {
+ String s2= (String) list2.get(i);
+ if (s2 != null) {
+ buf.append(s2);
+ buf.append("\n");
+ }
+ }
+ String expected= buf.toString();
+
+ String message= "Content not as expected: Content is: \n" + actual + "\nExpected contents: \n" + expected;
+ Assert.assertEquals(message, expected, actual);
+ }
+ }
+
+ public static void assertExpectedExistInProposals(String[] actuals, String[] expecteds) {
+ ArrayList<String> list1= new ArrayList<String>(Arrays.asList(actuals));
+ ArrayList<String> list2= new ArrayList<String>(Arrays.asList(expecteds));
+
+ for (int i= list1.size() - 1; i >= 0; i--) {
+ if (list2.remove(list1.get(i))) {
+ list1.remove(i);
+ }
+ }
+
+ int n1= list1.size();
+ int n2= list2.size();
+
+ if (n2 > 0) {
+ if (n1 == 1 && n2 == 1) {
+ assertEqualString((String) list1.get(0), (String) list2.get(0));
+ }
+
+ StringBuffer buf= new StringBuffer();
+ for (int i= 0; i < n1; i++) {
+ String s1= (String) list1.get(i);
+ if (s1 != null) {
+ buf.append(s1);
+ buf.append("\n");
+ }
+ }
+ String actual= buf.toString();
+
+ buf= new StringBuffer();
+ for (int i= 0; i < n2; i++) {
+ String s2= (String) list2.get(i);
+ if (s2 != null) {
+ buf.append(s2);
+ buf.append("\n");
+ }
+ }
+ String expected= buf.toString();
+
+ String message= "Content not as expected: Content is: \n" + actual + "\nExpected contents: \n" + expected;
+ Assert.assertEquals(message, expected, actual);
+ }
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AutomatedSuite.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AutomatedSuite.java
index 464ae4c68f7..b52bf682b44 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AutomatedSuite.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AutomatedSuite.java
@@ -19,6 +19,7 @@ import org.eclipse.cdt.ui.tests.buildconsole.BuildConsoleTests;
import org.eclipse.cdt.ui.tests.callhierarchy.CallHierarchyTestSuite;
import org.eclipse.cdt.ui.tests.chelp.CHelpTest;
import org.eclipse.cdt.ui.tests.includebrowser.IncludeBrowserTestSuite;
+import org.eclipse.cdt.ui.tests.quickfix.AssistQuickFixTest;
import org.eclipse.cdt.ui.tests.refactoring.RefactoringTestSuite;
import org.eclipse.cdt.ui.tests.search.SearchTestSuite;
import org.eclipse.cdt.ui.tests.text.TextTestSuite;
@@ -70,12 +71,15 @@ public class AutomatedSuite extends TestSuite {
// tests from package org.eclipse.cdt.ui.tests.text.selection
addTest(SelectionTestSuite.suite());
+ // tests from package org.eclipse.cdt.ui.tests.quickfix
+ addTest(AssistQuickFixTest.suite());
+
// tests from package org.eclipse.cdt.ui.tests.buildconsole
addTest(BuildConsoleTests.suite());
// tests from package org.eclipse.cdt.ui.tests.search
addTest(SearchTestSuite.suite());
-
+
// tests from package org.eclipse.cdt.ui.tests.refactoring
addTest(RefactoringTestSuite.suite());
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java
index a8d7afa1816..01d3578d8d6 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/BaseUITestCase.java
@@ -53,6 +53,7 @@ import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.testplugin.util.BaseTestCase;
import org.eclipse.cdt.core.testplugin.util.TestSourceReader;
import org.eclipse.cdt.ui.testplugin.CTestPlugin;
+import org.eclipse.cdt.ui.testplugin.util.StringAsserts;
public class BaseUITestCase extends BaseTestCase {
@@ -347,18 +348,20 @@ public class BaseUITestCase extends BaseTestCase {
return item;
}
}
- }
- catch (IllegalArgumentException e) {
+ } catch (IllegalArgumentException e) {
if (label != null) {
fail("Tree node " + label + "{" + i0 + "," + i1 + "} does not exist!");
}
return null;
- }
- catch (SWTException e) {
+ } catch (SWTException e) {
// widget was disposed, try again.
}
}
assertEquals("Timeout expired waiting for tree node {" + i0 + "," + i1 + "}", label, itemText);
return null;
}
+
+ public static void assertEqualString(String actual, String expected) {
+ StringAsserts.assertEqualString(actual, expected);
+ }
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/quickfix/AssistQuickFixTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/quickfix/AssistQuickFixTest.java
new file mode 100644
index 00000000000..02e415e03d0
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/quickfix/AssistQuickFixTest.java
@@ -0,0 +1,295 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Sebastian Davids <sdavids@gmx.de> - testInvertEquals1-23
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+package org.eclipse.cdt.ui.tests.quickfix;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import junit.extensions.TestSetup;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.FindReplaceDocumentAdapter;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.source.IAnnotationModel;
+import org.eclipse.jface.text.source.SourceViewer;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.ui.PartInitException;
+
+import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.core.model.ITranslationUnit;
+import org.eclipse.cdt.core.parser.IProblem;
+import org.eclipse.cdt.core.testplugin.CProjectHelper;
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.cdt.ui.tests.BaseUITestCase;
+import org.eclipse.cdt.ui.tests.text.EditorTestHelper;
+import org.eclipse.cdt.ui.text.ICCompletionProposal;
+import org.eclipse.cdt.ui.text.IInvocationContext;
+import org.eclipse.cdt.ui.text.IProblemLocation;
+
+import org.eclipse.cdt.internal.ui.editor.CEditor;
+import org.eclipse.cdt.internal.ui.text.correction.CCorrectionProcessor;
+import org.eclipse.cdt.internal.ui.text.correction.CorrectionContext;
+import org.eclipse.cdt.internal.ui.text.correction.ProblemLocation;
+import org.eclipse.cdt.internal.ui.text.correction.proposals.LinkedNamesAssistProposal;
+import org.eclipse.cdt.internal.ui.text.correction.proposals.TUCorrectionProposal;
+
+public class AssistQuickFixTest extends BaseUITestCase {
+ private static final Class<AssistQuickFixTest> THIS = AssistQuickFixTest.class;
+ private static final String PROJECT = "AssistQuickFixTest";
+
+ private ICProject fCProject;
+ private CEditor fEditor;
+ private IDocument fDocument;
+ private FindReplaceDocumentAdapter fFindReplaceDocumentAdapter;
+ private final IProblem[] fProblems;
+ private IAnnotationModel fAnnotationModel;
+ private IRegion fMatch;
+ private StyledText fTextWidget;
+
+ private ProjectTestSetup fProjectSetup;
+
+ protected static class ProjectTestSetup extends TestSetup {
+ private ICProject fCProject;
+
+ public ProjectTestSetup(Test test) {
+ super(test);
+ }
+ protected void setUp() throws Exception {
+ super.setUp();
+ fCProject= EditorTestHelper.createCProject(PROJECT, "resources/quickFix", false, true);
+ }
+ protected void tearDown() throws Exception {
+ if (fCProject != null)
+ CProjectHelper.delete(fCProject);
+
+ super.tearDown();
+ }
+ }
+
+ public AssistQuickFixTest(String name) {
+ super(name);
+ fProblems = new IProblem[0];
+ }
+
+ public static Test setUpTest(Test someTest) {
+ return new ProjectTestSetup(someTest);
+ }
+
+ public static Test suite() {
+ return setUpTest(new TestSuite(THIS));
+ }
+
+ protected void setUp() throws Exception {
+ if (!ResourcesPlugin.getWorkspace().getRoot().exists(new Path(PROJECT))) {
+ fProjectSetup= new ProjectTestSetup(this);
+ fProjectSetup.setUp();
+ }
+ fEditor= openCEditor(new Path("/" + PROJECT + "/src/RenameInFile.cpp"));
+ assertNotNull(fEditor);
+ fTextWidget= fEditor.getViewer().getTextWidget();
+ assertNotNull(fTextWidget);
+ EditorTestHelper.joinReconciler((SourceViewer) fEditor.getViewer(), 10, 200, 20);
+ fDocument= fEditor.getDocumentProvider().getDocument(fEditor.getEditorInput());
+ assertNotNull(fDocument);
+ fFindReplaceDocumentAdapter= new FindReplaceDocumentAdapter(fDocument);
+ fAnnotationModel= fEditor.getDocumentProvider().getAnnotationModel(fEditor.getEditorInput());
+
+ fMatch= null;
+ }
+
+ /*
+ * @see junit.framework.TestCase#tearDown()
+ */
+ protected void tearDown() throws Exception {
+ EditorTestHelper.closeAllEditors();
+ if (fProjectSetup != null) {
+ fProjectSetup.tearDown();
+ }
+ }
+
+ private CEditor openCEditor(IPath path) {
+ IFile file= ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+ assertTrue(file != null && file.exists());
+ try {
+ return (CEditor) EditorTestHelper.openInEditor(file, true);
+ } catch (PartInitException e) {
+ fail();
+ return null;
+ }
+ }
+
+ private static final List<ICCompletionProposal> collectCorrections(CorrectionContext context, Class<?>[] filteredTypes) throws CoreException {
+ List<ICCompletionProposal> proposals= new ArrayList<ICCompletionProposal>();
+ IStatus status= CCorrectionProcessor.collectCorrections(context, new IProblemLocation[0], proposals);
+ assertStatusOk(status);
+
+ if (!proposals.isEmpty()) {
+ assertTrue("should be marked as 'has assist'", CCorrectionProcessor.hasAssists(context));
+ }
+
+ if (filteredTypes != null && filteredTypes.length > 0) {
+ for (Iterator<ICCompletionProposal> iter= proposals.iterator(); iter.hasNext(); ) {
+ if (isFiltered(iter.next(), filteredTypes)) {
+ iter.remove();
+ }
+ }
+ }
+ return proposals;
+ }
+
+ private static boolean isFiltered(Object curr, Class<?>[] filteredTypes) {
+ for (int k = 0; k < filteredTypes.length; k++) {
+ if (filteredTypes[k].isInstance(curr)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private CorrectionContext getCorrectionContext(int offset, int length) {
+ ITranslationUnit tu= CUIPlugin.getDefault().getWorkingCopyManager().getWorkingCopy(fEditor.getEditorInput());
+ return new CorrectionContext(tu, offset, length);
+ }
+
+ private static final ArrayList<ICCompletionProposal> collectAssists(CorrectionContext context, Class<?>[] filteredTypes) throws CoreException {
+ ArrayList<ICCompletionProposal> proposals= new ArrayList<ICCompletionProposal>();
+ IStatus status= CCorrectionProcessor.collectAssists(context, new IProblemLocation[0], proposals);
+ assertStatusOk(status);
+
+ if (!proposals.isEmpty()) {
+ assertTrue("should be marked as 'has assist'", CCorrectionProcessor.hasAssists(context));
+ }
+
+ if (filteredTypes != null && filteredTypes.length > 0) {
+ for (Iterator<ICCompletionProposal> iter= proposals.iterator(); iter.hasNext(); ) {
+ if (isFiltered(iter.next(), filteredTypes)) {
+ iter.remove();
+ }
+ }
+ }
+ return proposals;
+ }
+
+ private static void assertStatusOk(IStatus status) throws CoreException {
+ if (!status.isOK() && status.getException() == null) {
+ // Find a status with an exception
+ for (IStatus child : status.getChildren()) {
+ if (child.getException() != null) {
+ throw new CoreException(child);
+ }
+ }
+ }
+ }
+
+ private static void assertCorrectContext(IInvocationContext context, ProblemLocation problem) {
+ if (problem.getProblemId() != 0) {
+ if (!CCorrectionProcessor.hasCorrections(context.getTranslationUnit(), problem.getProblemId(), problem.getMarkerType())) {
+ assertTrue("Problem type not marked with light bulb: " + problem, false);
+ }
+ }
+ }
+
+ private static void assertNumberOfProposals(List<ICCompletionProposal> proposals, int expectedProposals) {
+ if (proposals.size() != expectedProposals) {
+ StringBuilder buf= new StringBuilder();
+ buf.append("Wrong number of proposals, is: ").append(proposals.size()). append(", expected: ").append(expectedProposals).append('\n');
+ for (ICCompletionProposal proposal : proposals) {
+ buf.append(" - ").append(proposal.getDisplayString()).append('\n');
+ if (proposal instanceof TUCorrectionProposal) {
+ try {
+ buf.append(((TUCorrectionProposal) proposal).getPreviewContent());
+ } catch (CoreException e) {
+ // ignore
+ }
+ }
+ }
+ assertTrue(buf.toString(), false);
+ }
+ }
+
+ private static void assertCorrectLabels(List<ICCompletionProposal> proposals) {
+ for (ICCompletionProposal proposal : proposals) {
+ String name= proposal.getDisplayString();
+ if (name == null || name.length() == 0 || name.charAt(0) == '!' || name.indexOf("{0}") != -1 || name.indexOf("{1}") != -1) {
+ assertTrue("wrong proposal label: " + name, false);
+ }
+ if (proposal.getImage() == null) {
+ assertTrue("wrong proposal image", false);
+ }
+ }
+ }
+
+ private static void assertCorrectContext(CorrectionContext context, ProblemLocation problem) {
+ if (problem.getProblemId() != 0) {
+ if (!CCorrectionProcessor.hasCorrections(context.getTranslationUnit(), problem.getProblemId(), problem.getMarkerType())) {
+ assertTrue("Problem type not marked with light bulb: " + problem, false);
+ }
+ }
+ }
+
+ public void testLocalRenameClass() throws Exception {
+ final String name = "Base2";
+ try {
+ fMatch= fFindReplaceDocumentAdapter.find(0, name, true, true, true, false);
+ } catch (BadLocationException e) {
+ fail();
+ }
+ assertNotNull(fMatch);
+ CorrectionContext context= getCorrectionContext(fMatch.getOffset(), 0);
+ List<ICCompletionProposal> proposals= collectAssists(context, null);
+
+ assertNumberOfProposals(proposals, 1);
+ assertCorrectLabels(proposals);
+ assertTrue(proposals.get(0) instanceof LinkedNamesAssistProposal);
+ }
+
+ public void testLocalRenameMacro() throws Exception {
+ final String name = "INT";
+ try {
+ fMatch= fFindReplaceDocumentAdapter.find(0, name, true, true, true, false);
+ } catch (BadLocationException e) {
+ fail();
+ }
+ assertNotNull(fMatch);
+ CorrectionContext context= getCorrectionContext(fMatch.getOffset(), 0);
+ List<ICCompletionProposal> proposals= collectAssists(context, null);
+
+ assertNumberOfProposals(proposals, 1);
+ assertCorrectLabels(proposals);
+ assertTrue(proposals.get(0) instanceof LinkedNamesAssistProposal);
+ }
+
+ public void testLocalRenameLanguageKeyword() throws Exception {
+ final String name = "int";
+ try {
+ fMatch= fFindReplaceDocumentAdapter.find(0, name, true, true, true, false);
+ } catch (BadLocationException e) {
+ fail();
+ }
+ assertNotNull(fMatch);
+ CorrectionContext context= getCorrectionContext(fMatch.getOffset(), 0);
+ List<ICCompletionProposal> proposals= collectAssists(context, null);
+
+ assertNumberOfProposals(proposals, 0);
+ }
+}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/MarkOccurrenceTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/MarkOccurrenceTest.java
index c3da7593e47..403fd4d60dd 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/MarkOccurrenceTest.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/MarkOccurrenceTest.java
@@ -89,7 +89,7 @@ public class MarkOccurrenceTest extends BaseUITestCase {
super.setUp();
fCProject= EditorTestHelper.createCProject(PROJECT, "resources/ceditor", false, true);
}
- protected void tearDown () throws Exception {
+ protected void tearDown() throws Exception {
if (fCProject != null)
CProjectHelper.delete(fCProject);
@@ -132,9 +132,9 @@ public class MarkOccurrenceTest extends BaseUITestCase {
private synchronized void countOccurrences() {
fOccurrences= 0;
- Iterator iter= fAnnotationModel.getAnnotationIterator();
+ Iterator<Annotation> iter= fAnnotationModel.getAnnotationIterator();
while (iter.hasNext()) {
- Annotation annotation= (Annotation)iter.next();
+ Annotation annotation= iter.next();
if (OCCURRENCE_ANNOTATION.equals(annotation.getType()))
fOccurrences++;
}
@@ -158,7 +158,7 @@ public class MarkOccurrenceTest extends BaseUITestCase {
IFile file= ResourcesPlugin.getWorkspace().getRoot().getFile(path);
assertTrue(file != null && file.exists());
try {
- return (CEditor)EditorTestHelper.openInEditor(file, true);
+ return (CEditor) EditorTestHelper.openInEditor(file, true);
} catch (PartInitException e) {
fail();
return null;
@@ -308,6 +308,7 @@ public class MarkOccurrenceTest extends BaseUITestCase {
assertOccurrences(2);
assertOccurrencesInWidget();
}
+
public void testMarkMethodOccurrences2() {
try {
fMatch= fFindReplaceDocumentAdapter.find(0, "getNumber", true, true, true, false);
@@ -321,6 +322,7 @@ public class MarkOccurrenceTest extends BaseUITestCase {
assertOccurrences(2);
assertOccurrencesInWidget();
}
+
public void testMarkFieldOccurrences() {
try {
fMatch= fFindReplaceDocumentAdapter.find(0, "pubField", true, true, true, false);
@@ -334,6 +336,7 @@ public class MarkOccurrenceTest extends BaseUITestCase {
assertOccurrences(2);
assertOccurrencesInWidget();
}
+
public void testMarkFieldOccurrences2() {
try {
fMatch= fFindReplaceDocumentAdapter.find(0, "tArg1", true, true, true, false);
@@ -362,7 +365,6 @@ public class MarkOccurrenceTest extends BaseUITestCase {
assertOccurrences(2);
assertOccurrencesInWidget();
}
-
public void testMarkDestructorOccurrences() {
try {
@@ -496,9 +498,9 @@ public class MarkOccurrenceTest extends BaseUITestCase {
private void assertOccurrencesInWidget() {
EditorTestHelper.runEventQueue(500);
- Iterator iter= fAnnotationModel.getAnnotationIterator();
+ Iterator<Annotation> iter= fAnnotationModel.getAnnotationIterator();
while (iter.hasNext()) {
- Annotation annotation= (Annotation)iter.next();
+ Annotation annotation= iter.next();
if (OCCURRENCE_ANNOTATION.equals(annotation.getType()))
assertOccurrenceInWidget(fAnnotationModel.getPosition(annotation));
}
@@ -514,8 +516,8 @@ public class MarkOccurrenceTest extends BaseUITestCase {
}
}
fail();
-
}
+
/**
* Returns the occurrence annotation color.
*
@@ -529,7 +531,6 @@ public class MarkOccurrenceTest extends BaseUITestCase {
return null;
}
-
private void assertOccurrences(final int expected) {
DisplayHelper helper= new DisplayHelper() {
@@ -541,5 +542,4 @@ public class MarkOccurrenceTest extends BaseUITestCase {
assertEquals(expected, fOccurrences);
}
}
-
}
diff --git a/core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF b/core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF
index 310952d8945..853e3b077f3 100644
--- a/core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.cdt.ui/META-INF/MANIFEST.MF
@@ -43,6 +43,8 @@ Export-Package: org.eclipse.cdt.internal.corext;x-internal:=true,
org.eclipse.cdt.internal.ui.text.asm;x-internal:=true,
org.eclipse.cdt.internal.ui.text.c.hover;x-internal:=true,
org.eclipse.cdt.internal.ui.text.contentassist;x-internal:=true,
+ org.eclipse.cdt.internal.ui.text.correction;x-friends:="org.eclipse.cdt.ui.tests",
+ org.eclipse.cdt.internal.ui.text.correction.proposals;x-friends:="org.eclipse.cdt.ui.tests",
org.eclipse.cdt.internal.ui.text.doctools;x-internal:=true,
org.eclipse.cdt.internal.ui.text.folding;x-internal:=true,
org.eclipse.cdt.internal.ui.text.template;x-internal:=true,
diff --git a/core/org.eclipse.cdt.ui/icons/obj16/correction_linked_rename.gif b/core/org.eclipse.cdt.ui/icons/obj16/correction_linked_rename.gif
new file mode 100644
index 00000000000..d68e54ec1db
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/icons/obj16/correction_linked_rename.gif
Binary files differ
diff --git a/core/org.eclipse.cdt.ui/plugin.properties b/core/org.eclipse.cdt.ui/plugin.properties
index adc448cf06f..1c2e70abdae 100644
--- a/core/org.eclipse.cdt.ui/plugin.properties
+++ b/core/org.eclipse.cdt.ui/plugin.properties
@@ -399,7 +399,9 @@ completionProposalComputer=Completion Proposal Computer
# Quick fix
quickFixProcessorExtensionPoint=Quick Fix Processor
+quickAssistProcessorExtensionPoint=Quick Assist Processor
spellingQuickFixProcessor=Spelling Quick Fix Processor
+defaultQuickAssistProcessor=Standard Quick Assist Processor
# Spelling
cSpellingEngine.label=C/C++ spelling engine
diff --git a/core/org.eclipse.cdt.ui/plugin.xml b/core/org.eclipse.cdt.ui/plugin.xml
index aef20b4e206..d13db6815f9 100644
--- a/core/org.eclipse.cdt.ui/plugin.xml
+++ b/core/org.eclipse.cdt.ui/plugin.xml
@@ -23,6 +23,7 @@
<extension-point id="ConfigManager" name="%ConfigManager" schema="schema/ConfigManager.exsd"/>
<extension-point id="HelpInfo" name="%HelpInfo" schema="schema/HelpInfo.exsd"/>
<extension-point id="quickFixProcessors" name="%quickFixProcessorExtensionPoint" schema="schema/quickFixProcessors.exsd"/>
+ <extension-point id="quickAssistProcessors" name="%quickAssistProcessorExtensionPoint" schema="schema/quickAssistProcessors.exsd"/>
<extension-point id="DocCommentOwner" name="%DocCommentOwner.name" schema="schema/DocCommentOwner.exsd"/>
<extension
@@ -2510,12 +2511,20 @@
<quickFixProcessor
name="%spellingQuickFixProcessor"
class="org.eclipse.cdt.internal.ui.text.spelling.WordQuickFixProcessor"
- id= "org.eclipse.cdt.ui.text.correction.spelling.QuickFixProcessor">
+ id="org.eclipse.cdt.ui.text.correction.spelling.QuickFixProcessor">
<handledMarkerTypes>
<markerType id="org.eclipse.cdt.internal.spelling"/>
</handledMarkerTypes>
</quickFixProcessor>
</extension>
+ <extension
+ point="org.eclipse.cdt.ui.quickAssistProcessors">
+ <quickAssistProcessor
+ name="%defaultQuickAssistProcessor"
+ class="org.eclipse.cdt.internal.ui.text.correction.QuickAssistProcessor"
+ id="org.eclipse.cdt.ui.text.correction.QuickAssistProcessor">
+ </quickAssistProcessor>
+ </extension>
<!--- Common Navigator extensions -->
<extension
diff --git a/core/org.eclipse.cdt.ui/schema/quickAssistProcessors.exsd b/core/org.eclipse.cdt.ui/schema/quickAssistProcessors.exsd
new file mode 100644
index 00000000000..d524350c6d9
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/schema/quickAssistProcessors.exsd
@@ -0,0 +1,164 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.cdt.ui">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.cdt.ui" id="quickAssistProcessors" name="Quick Assist Processor"/>
+ </appInfo>
+ <documentation>
+ This extension point allows to add a Quick Assist processor to offer new Quick Assists in the C/C++ editor.
+This extension point supports the &lt;code&gt;enablement&lt;/code&gt; tag. Properties to test on are:
+&lt;dl&gt;
+&lt;li&gt;translationUnit: type ITranslationUnit; the translation unit the quick assist is applied on&lt;/li&gt;
+
+&lt;li&gt;projectNatures: type Collection; all project natures of the current project&lt;/li&gt;
+&lt;/dl&gt;
+ </documentation>
+ </annotation>
+
+ <include schemaLocation="schema://org.eclipse.core.expressions/schema/expressionLanguage.exsd"/>
+
+ <element name="extension">
+ <complexType>
+ <sequence>
+ <element ref="quickAssistProcessor" minOccurs="1" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+ a fully qualified identifier of the target extension point
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+ an optional identifier of the extension instance
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+ an optional name of the extension instance
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="quickAssistProcessor">
+ <complexType>
+ <sequence>
+ <element ref="enablement" minOccurs="0" maxOccurs="1"/>
+ </sequence>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+ a unique identifier for the Quick Assist processor
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+ a localized name of the Quick Assist processor
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string">
+ <annotation>
+ <documentation>
+ the name of the class that implements this Quick Assist processor. The
+class must be public and implement
+&lt;samp&gt;org.eclipse.cdt.ui.text.IQuickAssistProcessor&lt;/samp&gt;
+with a public 0-argument constructor.
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn="org.eclipse.cdt.ui.text.IQuickAssistProcessor"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="requiredSourceLevel" type="string">
+ <annotation>
+ <documentation>
+ an optional attribute to specify the minimal source compliance this processor requires
+ </documentation>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ The following is an example of a Quick Assist processor contribution:
+
+&lt;p&gt;
+&lt;pre&gt;
+ &lt;extension point=&quot;org.eclipse.cdt.ui.quickAssistProcessors&quot;&gt;
+ &lt;quickAssistProcessor
+ id=&quot;AdvancedQuickAssistProcessor&quot;
+ name=&quot;Advanced Quick Assist Processor&quot;
+ class=&quot;com.example.AdvancedQuickAssistProcessor&quot;&gt;
+ &lt;/quickAssistProcessor&gt;
+ &lt;enablement&gt;
+ &lt;with variable=&quot;projectNatures&quot;&gt;
+ &lt;iterate operator=&quot;or&quot;&gt;
+ &lt;equals value=&quot;org.eclipse.cdt.core.cnature&quot;/&gt;
+ &lt;equals value=&quot;org.eclipse.cdt.core.ccnature&quot;/&gt;
+ &lt;/iterate&gt;
+ &lt;/with&gt;
+ &lt;/enablement&gt;
+ &lt;/extension&gt;
+&lt;/pre&gt;
+&lt;/p&gt;
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ 5.1
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiInfo"/>
+ </appInfo>
+ <documentation>
+ The contributed class must implement &lt;code&gt;org.eclipse.cdt.ui.text.IQuickAssistProcessor&lt;/code&gt;
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="copyright"/>
+ </appInfo>
+ <documentation>
+ Copyright (c) 2001, 2008 IBM Corporation and others.&lt;br&gt;
+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 &lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/fix/LinkedProposalModel.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/fix/LinkedProposalModel.java
new file mode 100644
index 00000000000..e888f1d9d35
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/fix/LinkedProposalModel.java
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+package org.eclipse.cdt.internal.corext.fix;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.eclipse.cdt.core.dom.rewrite.ITrackedNodePosition;
+
+import org.eclipse.cdt.internal.corext.fix.LinkedProposalPositionGroup.PositionInformation;
+
+public class LinkedProposalModel {
+ private Map<String, LinkedProposalPositionGroup> fPositionGroups;
+ private LinkedProposalPositionGroup.PositionInformation fEndPosition;
+
+ public void addPositionGroup(LinkedProposalPositionGroup positionGroup) {
+ if (positionGroup == null) {
+ throw new IllegalArgumentException("positionGroup must not be null"); //$NON-NLS-1$
+ }
+
+ if (fPositionGroups == null) {
+ fPositionGroups= new HashMap<String, LinkedProposalPositionGroup>();
+ }
+ fPositionGroups.put(positionGroup.getGroupId(), positionGroup);
+ }
+
+ public LinkedProposalPositionGroup getPositionGroup(String groupId, boolean createIfNotExisting) {
+ LinkedProposalPositionGroup group= fPositionGroups != null ? (LinkedProposalPositionGroup) fPositionGroups.get(groupId) : null;
+ if (createIfNotExisting && group == null) {
+ group= new LinkedProposalPositionGroup(groupId);
+ addPositionGroup(group);
+ }
+ return group;
+ }
+
+ public Iterator<LinkedProposalPositionGroup> getPositionGroupIterator() {
+ if (fPositionGroups == null) {
+ return new Iterator<LinkedProposalPositionGroup>() {
+ public boolean hasNext() {return false;}
+ public LinkedProposalPositionGroup next() {return null;}
+ public void remove() {}
+ };
+ }
+ return fPositionGroups.values().iterator();
+ }
+
+ /**
+ * Sets the end position of the linked mode to the end of the passed range.
+ * @param position The position that describes the end position of the linked mode.
+ */
+ public void setEndPosition(PositionInformation position) {
+ fEndPosition= position;
+ }
+
+ public void setEndPosition(ITrackedNodePosition position) {
+ setEndPosition(LinkedProposalPositionGroup.createPositionInformation(position, false));
+ }
+
+ public PositionInformation getEndPosition() {
+ return fEndPosition;
+ }
+
+ public boolean hasLinkedPositions() {
+ return fPositionGroups != null && !fPositionGroups.isEmpty();
+ }
+
+ public void clear() {
+ fPositionGroups= null;
+ fEndPosition= null;
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/fix/LinkedProposalPositionGroup.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/fix/LinkedProposalPositionGroup.java
new file mode 100644
index 00000000000..04987b1efb7
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/corext/fix/LinkedProposalPositionGroup.java
@@ -0,0 +1,144 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+package org.eclipse.cdt.internal.corext.fix;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.text.link.LinkedModeModel;
+import org.eclipse.jface.text.link.LinkedPosition;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.text.edits.ReplaceEdit;
+import org.eclipse.text.edits.TextEdit;
+
+import org.eclipse.cdt.core.dom.rewrite.ITrackedNodePosition;
+
+
+public class LinkedProposalPositionGroup {
+ /**
+ * {@link LinkedProposalPositionGroup.PositionInformation} describes a position
+ * inside a position group. The information provided must be accurate
+ * after the document change to the proposal has been performed, but doesn't
+ * need to reflect the changed done by the linking mode.
+ */
+ public static abstract class PositionInformation {
+ public abstract int getOffset();
+ public abstract int getLength();
+ public abstract int getSequenceRank();
+ }
+
+ public static class Proposal {
+
+ private String fDisplayString;
+ private Image fImage;
+ private int fRelevance;
+
+ public Proposal(String displayString, Image image, int relevance) {
+ fDisplayString= displayString;
+ fImage= image;
+ fRelevance= relevance;
+ }
+
+ public String getDisplayString() {
+ return fDisplayString;
+ }
+
+ public Image getImage() {
+ return fImage;
+ }
+
+ public int getRelevance() {
+ return fRelevance;
+ }
+
+ public void setImage(Image image) {
+ fImage= image;
+ }
+
+ public String getAdditionalProposalInfo() {
+ return null;
+ }
+
+ public TextEdit computeEdits(int offset, LinkedPosition position, char trigger, int stateMask, LinkedModeModel model) throws CoreException {
+ return new ReplaceEdit(position.getOffset(), position.getLength(), fDisplayString);
+ }
+ }
+
+ public static PositionInformation createPositionInformation(ITrackedNodePosition pos, boolean isFirst) {
+ return new TrackedNodePosition(pos, isFirst);
+ }
+
+ private static class TrackedNodePosition extends PositionInformation {
+ private final ITrackedNodePosition fPos;
+ private final boolean fIsFirst;
+
+ public TrackedNodePosition(ITrackedNodePosition pos, boolean isFirst) {
+ fPos= pos;
+ fIsFirst= isFirst;
+ }
+
+ @Override
+ public int getOffset() {
+ return fPos.getStartPosition();
+ }
+
+ @Override
+ public int getLength() {
+ return fPos.getLength();
+ }
+
+ @Override
+ public int getSequenceRank() {
+ return fIsFirst ? 0 : 1;
+ }
+ }
+
+ private final String fGroupId;
+ private final List<PositionInformation> fPositions;
+ private final List<Proposal> fProposals;
+
+
+ public LinkedProposalPositionGroup(String groupID) {
+ fGroupId= groupID;
+ fPositions= new ArrayList<PositionInformation>();
+ fProposals= new ArrayList<Proposal>();
+ }
+
+ public void addPosition(PositionInformation position) {
+ fPositions.add(position);
+ }
+
+ public void addProposal(Proposal proposal) {
+ fProposals.add(proposal);
+ }
+
+ public void addPosition(ITrackedNodePosition position, boolean isFirst) {
+ addPosition(createPositionInformation(position, isFirst));
+ }
+
+ public void addProposal(String displayString, Image image, int relevance) {
+ addProposal(new Proposal(displayString, image, relevance));
+ }
+
+ public String getGroupId() {
+ return fGroupId;
+ }
+
+ public PositionInformation[] getPositions() {
+ return fPositions.toArray(new PositionInformation[fPositions.size()]);
+ }
+
+ public Proposal[] getProposals() {
+ return fProposals.toArray(new Proposal[fProposals.size()]);
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java
index 73c48b9a04b..079e45408be 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java
@@ -352,6 +352,8 @@ public class CPluginImages {
public static final ImageDescriptor DESC_CORRECTION_CHANGE = createManaged(T_OBJ, IMG_CORRECTION_CHANGE);
public static final String IMG_CORRECTION_RENAME= NAME_PREFIX + "correction_rename.gif"; //$NON-NLS-1$
public static final ImageDescriptor DESC_CORRECTION_RENAME = createManaged(T_OBJ, IMG_CORRECTION_RENAME);
+ public static final String IMG_CORRECTION_LINKED_RENAME= NAME_PREFIX + "correction_linked_rename.gif"; //$NON-NLS-1$
+ public static final ImageDescriptor DESC_CORRECTION_LINKED_RENAME = createManaged(T_OBJ, IMG_CORRECTION_LINKED_RENAME);
public static final String IMG_OBJS_NLS_NEVER_TRANSLATE= NAME_PREFIX + "never_translate.gif"; //$NON-NLS-1$
public static final ImageDescriptor DESC_OBJS_NLS_NEVER_TRANSLATE = createManaged(T_OBJ, IMG_OBJS_NLS_NEVER_TRANSLATE);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CCorrectionProcessor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CCorrectionProcessor.java
index 82ffab00e03..e55ac4bd722 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CCorrectionProcessor.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CCorrectionProcessor.java
@@ -30,7 +30,6 @@ import org.eclipse.jface.text.contentassist.ContentAssistEvent;
import org.eclipse.jface.text.contentassist.ICompletionListener;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.jface.text.quickassist.IQuickAssistInvocationContext;
-import org.eclipse.jface.text.quickassist.IQuickAssistProcessor;
import org.eclipse.jface.text.source.Annotation;
import org.eclipse.jface.text.source.IAnnotationModel;
import org.eclipse.jface.text.source.ISourceViewer;
@@ -43,14 +42,16 @@ import org.eclipse.ui.texteditor.SimpleMarkerAnnotation;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.text.ICCompletionProposal;
+import org.eclipse.cdt.ui.text.IInvocationContext;
import org.eclipse.cdt.ui.text.IProblemLocation;
+import org.eclipse.cdt.ui.text.IQuickAssistProcessor;
import org.eclipse.cdt.ui.text.IQuickFixProcessor;
import org.eclipse.cdt.internal.ui.editor.ICAnnotation;
import org.eclipse.cdt.internal.ui.text.contentassist.CCompletionProposal;
import org.eclipse.cdt.internal.ui.text.contentassist.CCompletionProposalComparator;
-public class CCorrectionProcessor implements IQuickAssistProcessor {
+public class CCorrectionProcessor implements org.eclipse.jface.text.quickassist.IQuickAssistProcessor {
private static final String QUICKFIX_PROCESSOR_CONTRIBUTION_ID= "quickFixProcessors"; //$NON-NLS-1$
private static final String QUICKASSIST_PROCESSOR_CONTRIBUTION_ID= "quickAssistProcessors"; //$NON-NLS-1$
@@ -87,9 +88,9 @@ public class CCorrectionProcessor implements IQuickAssistProcessor {
return fgContributedAssistProcessors;
}
- public static boolean hasCorrections(ITranslationUnit cu, int problemId, String markerType) {
+ public static boolean hasCorrections(ITranslationUnit tu, int problemId, String markerType) {
ContributedProcessorDescriptor[] processors= getCorrectionProcessors();
- SafeHasCorrections collector= new SafeHasCorrections(cu, problemId);
+ SafeHasCorrections collector= new SafeHasCorrections(tu, problemId);
for (int i= 0; i < processors.length; i++) {
if (processors[i].canHandleMarkerType(markerType)) {
collector.process(processors[i]);
@@ -110,9 +111,9 @@ public class CCorrectionProcessor implements IQuickAssistProcessor {
ICAnnotation cAnnotation= (ICAnnotation) annotation;
int problemId= cAnnotation.getId();
if (problemId != -1) {
- ITranslationUnit cu= cAnnotation.getTranslationUnit();
- if (cu != null) {
- return hasCorrections(cu, problemId, cAnnotation.getMarkerType());
+ ITranslationUnit tu= cAnnotation.getTranslationUnit();
+ if (tu != null) {
+ return hasCorrections(tu, problemId, cAnnotation.getMarkerType());
}
}
}
@@ -186,11 +187,11 @@ public class CCorrectionProcessor implements IQuickAssistProcessor {
IEditorPart part= fAssistant.getEditor();
- ITranslationUnit cu= CUIPlugin.getDefault().getWorkingCopyManager().getWorkingCopy(part.getEditorInput());
+ ITranslationUnit tu= CUIPlugin.getDefault().getWorkingCopyManager().getWorkingCopy(part.getEditorInput());
IAnnotationModel model= CUIPlugin.getDefault().getDocumentProvider().getAnnotationModel(part.getEditorInput());
int length= viewer != null ? viewer.getSelectedRange().y : 0;
- CorrectionContext context= new CorrectionContext(cu, viewer, documentOffset, length);
+ CorrectionContext context= new CorrectionContext(tu, viewer, documentOffset, length);
Annotation[] annotations= fAssistant.getAnnotationsAtOffset();
@@ -346,11 +347,11 @@ public class CCorrectionProcessor implements IQuickAssistProcessor {
}
private static class SafeAssistCollector extends SafeCorrectionProcessorAccess {
- private final CorrectionContext fContext;
+ private final IInvocationContext fContext;
private final IProblemLocation[] fLocations;
private final Collection<ICCompletionProposal> fProposals;
- public SafeAssistCollector(CorrectionContext context, IProblemLocation[] locations, Collection<ICCompletionProposal> proposals) {
+ public SafeAssistCollector(IInvocationContext context, IProblemLocation[] locations, Collection<ICCompletionProposal> proposals) {
fContext= context;
fLocations= locations;
fProposals= proposals;
@@ -358,9 +359,9 @@ public class CCorrectionProcessor implements IQuickAssistProcessor {
@Override
public void safeRun(ContributedProcessorDescriptor desc) throws Exception {
- IQuickFixProcessor curr= (IQuickFixProcessor) desc.getProcessor(fContext.getTranslationUnit());
+ IQuickAssistProcessor curr= (IQuickAssistProcessor) desc.getProcessor(fContext.getTranslationUnit());
if (curr != null) {
- ICCompletionProposal[] res= curr.getCorrections(fContext, fLocations);
+ ICCompletionProposal[] res= curr.getAssists(fContext, fLocations);
if (res != null) {
for (int k= 0; k < res.length; k++) {
fProposals.add(res[k]);
@@ -386,7 +387,7 @@ public class CCorrectionProcessor implements IQuickAssistProcessor {
@Override
public void safeRun(ContributedProcessorDescriptor desc) throws Exception {
IQuickAssistProcessor processor= (IQuickAssistProcessor) desc.getProcessor(fContext.getTranslationUnit());
- if (processor != null && processor.canAssist(fContext)) {
+ if (processor != null && processor.hasAssists(fContext)) {
fHasAssists= true;
}
}
@@ -397,8 +398,8 @@ public class CCorrectionProcessor implements IQuickAssistProcessor {
private final int fProblemId;
private boolean fHasCorrections;
- public SafeHasCorrections(ITranslationUnit cu, int problemId) {
- fCu= cu;
+ public SafeHasCorrections(ITranslationUnit tu, int problemId) {
+ fCu= tu;
fProblemId= problemId;
fHasCorrections= false;
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CorrectionCommandHandler.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CorrectionCommandHandler.java
index 83463b187ef..97acfd03173 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CorrectionCommandHandler.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CorrectionCommandHandler.java
@@ -19,10 +19,11 @@ import java.util.Iterator;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
-
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
import org.eclipse.jface.bindings.TriggerSequence;
-import org.eclipse.jface.viewers.ISelection;
-
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextSelection;
@@ -32,15 +33,25 @@ import org.eclipse.jface.text.contentassist.ICompletionProposalExtension;
import org.eclipse.jface.text.contentassist.ICompletionProposalExtension2;
import org.eclipse.jface.text.source.Annotation;
import org.eclipse.jface.text.source.IAnnotationModel;
-
+import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.keys.IBindingService;
+import org.eclipse.cdt.core.dom.ast.IASTName;
+import org.eclipse.cdt.core.dom.ast.IASTNodeSelector;
+import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+import org.eclipse.cdt.core.dom.ast.IBinding;
+import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.text.ICCompletionProposal;
+import org.eclipse.cdt.ui.text.IInvocationContext;
+
+import org.eclipse.cdt.internal.core.model.ASTCache.ASTRunnable;
+import org.eclipse.cdt.internal.ui.editor.ASTProvider;
import org.eclipse.cdt.internal.ui.editor.CEditor;
+import org.eclipse.cdt.internal.ui.text.correction.proposals.LinkedNamesAssistProposal;
/**
* Handler to be used to run a quick fix or assist by keyboard shortcut
@@ -61,10 +72,10 @@ public class CorrectionCommandHandler extends AbstractHandler {
*/
public Object execute(ExecutionEvent event) throws ExecutionException {
ISelection selection= fEditor.getSelectionProvider().getSelection();
- ITranslationUnit cu= CUIPlugin.getDefault().getWorkingCopyManager().getWorkingCopy(fEditor.getEditorInput());
+ ITranslationUnit tu= CUIPlugin.getDefault().getWorkingCopyManager().getWorkingCopy(fEditor.getEditorInput());
IAnnotationModel model= CUIPlugin.getDefault().getDocumentProvider().getAnnotationModel(fEditor.getEditorInput());
- if (selection instanceof ITextSelection && cu != null && model != null) {
- ICompletionProposal proposal= findCorrection(fId, fIsAssist, (ITextSelection) selection, cu, model);
+ if (selection instanceof ITextSelection && tu != null && model != null) {
+ ICompletionProposal proposal= findCorrection(fId, fIsAssist, (ITextSelection) selection, tu, model);
if (proposal != null) {
invokeProposal(proposal, ((ITextSelection) selection).getOffset());
}
@@ -72,10 +83,13 @@ public class CorrectionCommandHandler extends AbstractHandler {
return null;
}
- private ICompletionProposal findCorrection(String id, boolean isAssist, ITextSelection selection, ITranslationUnit cu, IAnnotationModel model) {
- CorrectionContext context= new CorrectionContext(cu, selection.getOffset(), selection.getLength());
+ private ICompletionProposal findCorrection(String id, boolean isAssist, ITextSelection selection, ITranslationUnit tu, IAnnotationModel model) {
+ CorrectionContext context= new CorrectionContext(tu, selection.getOffset(), selection.getLength());
Collection<ICCompletionProposal> proposals= new ArrayList<ICCompletionProposal>(10);
if (isAssist) {
+ if (id.equals(LinkedNamesAssistProposal.ASSIST_ID)) {
+ return getLocalRenameProposal(context); // shortcut for local rename
+ }
CCorrectionProcessor.collectAssists(context, new ProblemLocation[0], proposals);
} else {
try {
@@ -103,6 +117,29 @@ public class CorrectionCommandHandler extends AbstractHandler {
return resultingAnnotations.toArray(new Annotation[resultingAnnotations.size()]);
}
+ private ICompletionProposal getLocalRenameProposal(final IInvocationContext context) {
+ final ICCompletionProposal[] proposals= new ICCompletionProposal[1];
+
+ ASTProvider.getASTProvider().runOnAST(context.getTranslationUnit(), ASTProvider.WAIT_YES,
+ new NullProgressMonitor(), new ASTRunnable() {
+
+ public IStatus runOnAST(ILanguage lang, IASTTranslationUnit astRoot) throws CoreException {
+ IASTNodeSelector selector= astRoot.getNodeSelector(null);
+ IASTName name= selector.findEnclosingName(context.getSelectionOffset(), context.getSelectionLength());
+
+ // Activate the proposal only if a simple name is selected.
+ if (name != null && name == name.getLastName()) {
+ IBinding binding= name.resolveBinding();
+ if (binding != null) {
+ proposals[0]= new LinkedNamesAssistProposal(context.getTranslationUnit());
+ }
+ }
+ return Status.OK_STATUS;
+ }
+ });
+ return proposals[0];
+ }
+
private IDocument getDocument() {
return CUIPlugin.getDefault().getDocumentProvider().getDocument(fEditor.getEditorInput());
}
@@ -139,5 +176,4 @@ public class CorrectionCommandHandler extends AbstractHandler {
}
return null;
}
-
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CorrectionMessages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CorrectionMessages.java
index 1649393d4d0..a83be6cb704 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CorrectionMessages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CorrectionMessages.java
@@ -32,4 +32,12 @@ public final class CorrectionMessages extends NLS {
public static String CCorrectionProcessor_error_status;
public static String MarkerResolutionProposal_additionaldesc;
public static String NoCorrectionProposal_description;
+
+ public static String ChangeCorrectionProposal_error_title;
+ public static String ChangeCorrectionProposal_error_message;
+ public static String ChangeCorrectionProposal_name_with_shortcut;
+ public static String TUCorrectionProposal_error_title;
+ public static String TUCorrectionProposal_error_message;
+ public static String LinkedNamesAssistProposal_proposalinfo;
+ public static String LinkedNamesAssistProposal_description;
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CorrectionMessages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CorrectionMessages.properties
index 2fbf63639cf..8aefd210f70 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CorrectionMessages.properties
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/CorrectionMessages.properties
@@ -16,3 +16,15 @@ CCorrectionProcessor_error_status=Exception while processing quick fixes or quic
MarkerResolutionProposal_additionaldesc=Problem description: {0}
NoCorrectionProposal_description=No suggestions available
+
+# ------ CCorrectionProcessor
+
+ChangeCorrectionProposal_error_title=Quick Fix
+ChangeCorrectionProposal_error_message=An exception occurred while applying the quick fix.
+ChangeCorrectionProposal_name_with_shortcut={0} ({1} direct access)
+
+TUCorrectionProposal_error_title=Quick Fix
+TUCorrectionProposal_error_message=An exception occurred while applying the quick fix.
+
+LinkedNamesAssistProposal_proposalinfo=Link all references for a local rename (does not change references in other files)
+LinkedNamesAssistProposal_description=Rename in file
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/ICommandAccess.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/ICommandAccess.java
index 4a24761c107..40e0a2ff0c8 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/ICommandAccess.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/ICommandAccess.java
@@ -20,8 +20,7 @@ public interface ICommandAccess {
/**
* Returns the id of the command that should invoke this correction proposal
* @return the id of the command. This id must start with {@link CorrectionCommandInstaller#COMMAND_PREFIX}
- * to be recognixes as correction command.
+ * to be recognizes as correction command.
*/
String getCommandId();
-
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/QuickAssistLightBulbUpdater.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/QuickAssistLightBulbUpdater.java
index 7774b9c01a5..512e1422554 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/QuickAssistLightBulbUpdater.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/QuickAssistLightBulbUpdater.java
@@ -203,12 +203,12 @@ public class QuickAssistLightBulbUpdater {
private void doSelectionChanged(int offset, int length, IASTTranslationUnit astRoot) {
final IAnnotationModel model= getAnnotationModel();
- final ITranslationUnit cu= getTranslationUnit();
- if (model == null || cu == null) {
+ final ITranslationUnit tu= getTranslationUnit();
+ if (model == null || tu == null) {
return;
}
- final CorrectionContext context= new CorrectionContext(cu, offset, length);
+ final CorrectionContext context= new CorrectionContext(tu, offset, length);
boolean hasQuickFix= hasQuickFixLightBulb(model, context.getSelectionOffset());
if (hasQuickFix) {
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/QuickAssistProcessor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/QuickAssistProcessor.java
new file mode 100644
index 00000000000..fa33b9890dd
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/QuickAssistProcessor.java
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Sebastian Davids <sdavids@gmx.de> - Bug 37432 getInvertEqualsProposal
+ * Benjamin Muskalla <b.muskalla@gmx.net> - Bug 36350 convertToStringBufferPropsal
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.text.correction;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
+
+import org.eclipse.cdt.core.dom.ast.IASTName;
+import org.eclipse.cdt.core.dom.ast.IASTNodeSelector;
+import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+import org.eclipse.cdt.core.dom.ast.IBinding;
+import org.eclipse.cdt.core.model.ILanguage;
+import org.eclipse.cdt.ui.text.ICCompletionProposal;
+import org.eclipse.cdt.ui.text.IInvocationContext;
+import org.eclipse.cdt.ui.text.IProblemLocation;
+import org.eclipse.cdt.ui.text.IQuickAssistProcessor;
+
+import org.eclipse.cdt.internal.core.model.ASTCache.ASTRunnable;
+
+import org.eclipse.cdt.internal.ui.editor.ASTProvider;
+import org.eclipse.cdt.internal.ui.text.correction.proposals.LinkedNamesAssistProposal;
+
+/**
+ * see org.eclipse.cdt.ui.text.IQuickAssistProcessor
+ */
+public class QuickAssistProcessor implements IQuickAssistProcessor {
+
+ public QuickAssistProcessor() {
+ super();
+ }
+
+ public boolean hasAssists(final IInvocationContext context) throws CoreException {
+ IStatus status = ASTProvider.getASTProvider().runOnAST(context.getTranslationUnit(),
+ ASTProvider.WAIT_ACTIVE_ONLY, new NullProgressMonitor(), new ASTRunnable() {
+
+ public IStatus runOnAST(ILanguage lang, IASTTranslationUnit astRoot) throws CoreException {
+ IASTNodeSelector selector= astRoot.getNodeSelector(null);
+ IASTName name= selector.findEnclosingName(context.getSelectionOffset(), context.getSelectionLength());
+
+ // Activate the proposal only if a simple name is selected.
+ if (name != null && name == name.getLastName()) {
+ IBinding binding= name.resolveBinding();
+ if (binding != null) {
+ return Status.OK_STATUS;
+ }
+ }
+ return Status.CANCEL_STATUS;
+ }
+ });
+ return status.isOK();
+ }
+
+ public ICCompletionProposal[] getAssists(final IInvocationContext context, final IProblemLocation[] problemLocations) throws CoreException {
+ final ArrayList<ICCompletionProposal> proposals= new ArrayList<ICCompletionProposal>();
+
+ ASTProvider.getASTProvider().runOnAST(context.getTranslationUnit(), ASTProvider.WAIT_ACTIVE_ONLY,
+ new NullProgressMonitor(), new ASTRunnable() {
+
+ public IStatus runOnAST(ILanguage lang, IASTTranslationUnit astRoot) throws CoreException {
+ IASTNodeSelector selector= astRoot.getNodeSelector(null);
+ IASTName name= selector.findEnclosingName(context.getSelectionOffset(), context.getSelectionLength());
+
+ // Activate the proposal only if a simple name is selected.
+ if (name != null && name == name.getLastName()) {
+ IBinding binding= name.resolveBinding();
+ if (binding != null) {
+ boolean noErrorsAtLocation= noErrorsAtLocation(problemLocations);
+
+ // Quick assists that show up also if there is an error/warning
+ getRenameLocalProposals(context, problemLocations, noErrorsAtLocation, proposals);
+ }
+ }
+ return Status.OK_STATUS;
+ }
+ });
+
+ return proposals.isEmpty() ? null : proposals.toArray(new ICCompletionProposal[proposals.size()]);
+ }
+
+ private boolean noErrorsAtLocation(IProblemLocation[] locations) {
+ if (locations != null) {
+ for (int i= 0; i < locations.length; i++) {
+ if (locations[i].isError()) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ private static void getRenameLocalProposals(IInvocationContext context, IProblemLocation[] locations,
+ boolean noErrorsAtLocation, Collection<ICCompletionProposal> proposals) {
+ LinkedNamesAssistProposal proposal= new LinkedNamesAssistProposal(context.getTranslationUnit());
+ if (!noErrorsAtLocation) {
+ proposal.setRelevance(1);
+ }
+
+ proposals.add(proposal);
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/ASTRewriteCorrectionProposal.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/ASTRewriteCorrectionProposal.java
new file mode 100644
index 00000000000..7a655a1ddf8
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/ASTRewriteCorrectionProposal.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2007 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.text.correction.proposals;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.ltk.core.refactoring.Change;
+import org.eclipse.ltk.core.refactoring.CompositeChange;
+import org.eclipse.ltk.core.refactoring.TextChange;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.text.edits.TextEdit;
+
+import org.eclipse.cdt.core.dom.rewrite.ASTRewrite;
+import org.eclipse.cdt.core.model.ITranslationUnit;
+
+import org.eclipse.cdt.internal.ui.CUIStatus;
+
+/**
+ * A proposal for quick fixes and quick assists that works on a AST rewriter.
+ * Either a rewriter is directly passed in the constructor or method {@link #getRewrite()}
+ * is overridden to provide the AST rewriter that is evaluated to the document when the
+ * proposal is applied.
+ *
+ * @since 5.1
+ */
+public class ASTRewriteCorrectionProposal extends TUCorrectionProposal {
+ private ASTRewrite fRewrite;
+
+ /**
+ * Constructs a AST rewrite correction proposal.
+ *
+ * @param name the display name of the proposal.
+ * @param tu the translation unit that is modified.
+ * @param rewrite the AST rewrite that is invoked when the proposal is applied or
+ * <code>null</code> if {@link #getRewrite()} is overridden.
+ * @param relevance The relevance of this proposal.
+ * @param image The image that is displayed for this proposal or <code>null</code> if no
+ * image is desired.
+ */
+ public ASTRewriteCorrectionProposal(String name, ITranslationUnit tu, ASTRewrite rewrite, int relevance, Image image) {
+ super(name, tu, relevance, image);
+ fRewrite= rewrite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.ui.text.correction.TUCorrectionProposal#addEdits(org.eclipse.jface.text.IDocument)
+ */
+ @Override
+ protected void addEdits(IDocument document, TextEdit editRoot) throws CoreException {
+ super.addEdits(document, editRoot);
+ ASTRewrite rewrite= getRewrite();
+ if (rewrite != null) {
+ try {
+ Change change = rewrite.rewriteAST();
+ addTextEdits(change, editRoot);
+ } catch (IllegalArgumentException e) {
+ throw new CoreException(CUIStatus.createError(IStatus.ERROR, e));
+ }
+ }
+ }
+
+ /**
+ * Adds all text edits from {@code change} to {@code editRoot}.
+ * @param change
+ * @param editRoot
+ */
+ private void addTextEdits(Change change, TextEdit editRoot) {
+ if (change instanceof TextChange) {
+ editRoot.addChild(((TextChange) change).getEdit());
+ } else if (change instanceof CompositeChange) {
+ for (Change c : ((CompositeChange) change).getChildren()) {
+ addTextEdits(c, editRoot);
+ }
+ }
+ }
+
+ /**
+ * Returns the rewriter that has been passed in the constructor. Implementors can override this
+ * method to create the rewriter lazy. This method will only be called once.
+ *
+ * @return returns the rewriter to be used.
+ * @throws CoreException an exception is thrown when the rewriter could not be created.
+ */
+ protected ASTRewrite getRewrite() throws CoreException {
+ if (fRewrite == null) {
+ IStatus status= CUIStatus.createError(IStatus.ERROR, "Rewriter not initialized", null); //$NON-NLS-1$
+ throw new CoreException(status);
+ }
+ return fRewrite;
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/ChangeCorrectionProposal.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/ChangeCorrectionProposal.java
new file mode 100644
index 00000000000..7d15051efb3
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/ChangeCorrectionProposal.java
@@ -0,0 +1,311 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+
+package org.eclipse.cdt.internal.ui.text.correction.proposals;
+
+import java.text.MessageFormat;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
+
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+
+import org.eclipse.jface.viewers.StyledString;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRewriteTarget;
+import org.eclipse.jface.text.contentassist.ICompletionProposalExtension6;
+import org.eclipse.jface.text.contentassist.IContextInformation;
+import org.eclipse.jface.text.link.LinkedModeModel;
+
+import org.eclipse.ui.IEditorPart;
+
+import org.eclipse.ltk.core.refactoring.Change;
+import org.eclipse.ltk.core.refactoring.IUndoManager;
+import org.eclipse.ltk.core.refactoring.NullChange;
+import org.eclipse.ltk.core.refactoring.RefactoringCore;
+import org.eclipse.ltk.core.refactoring.RefactoringStatus;
+
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.cdt.ui.text.ICCompletionProposal;
+
+import org.eclipse.cdt.internal.ui.text.correction.CorrectionCommandHandler;
+import org.eclipse.cdt.internal.ui.text.correction.CorrectionMessages;
+import org.eclipse.cdt.internal.ui.text.correction.ICommandAccess;
+import org.eclipse.cdt.internal.ui.util.ExceptionHandler;
+import org.eclipse.cdt.internal.ui.viewsupport.ColoringLabelProvider;
+
+/**
+ * Implementation of a C completion proposal to be used for quick fix and quick assist
+ * proposals that invoke a {@link Change}. The proposal offers a proposal information but no context
+ * information.
+ *
+ * @since 5.1
+ */
+public class ChangeCorrectionProposal implements ICCompletionProposal, ICommandAccess, ICompletionProposalExtension6 {
+ private Change fChange;
+ private String fName;
+ private int fRelevance;
+ private Image fImage;
+ private String fCommandId;
+
+ /**
+ * Constructs a change correction proposal.
+ *
+ * @param name The name that is displayed in the proposal selection dialog.
+ * @param change The change that is executed when the proposal is applied or <code>null</code>
+ * if the change will be created by implementors of {@link #createChange()}.
+ * @param relevance The relevance of this proposal.
+ * @param image The image that is displayed for this proposal or <code>null</code> if no
+ * image is desired.
+ */
+ public ChangeCorrectionProposal(String name, Change change, int relevance, Image image) {
+ if (name == null) {
+ throw new IllegalArgumentException("Name must not be null"); //$NON-NLS-1$
+ }
+ fName= name;
+ fChange= change;
+ fRelevance= relevance;
+ fImage= image;
+ fCommandId= null;
+ }
+
+ /*
+ * @see ICompletionProposal#apply(IDocument)
+ */
+ public void apply(IDocument document) {
+ try {
+ performChange(CUIPlugin.getActivePage().getActiveEditor(), document);
+ } catch (CoreException e) {
+ ExceptionHandler.handle(e, CorrectionMessages.ChangeCorrectionProposal_error_title, CorrectionMessages.ChangeCorrectionProposal_error_message);
+ }
+ }
+
+ /**
+ * Performs the change associated with this proposal.
+ *
+ * @param activeEditor The editor currently active or <code>null</code> if no
+ * editor is active.
+ * @param document The document of the editor currently active or <code>null</code> if
+ * no editor is visible.
+ * @throws CoreException Thrown when the invocation of the change failed.
+ */
+ protected void performChange(IEditorPart activeEditor, IDocument document) throws CoreException {
+ Change change= null;
+ IRewriteTarget rewriteTarget= null;
+ try {
+ change= getChange();
+ if (change != null) {
+ if (document != null) {
+ LinkedModeModel.closeAllModels(document);
+ }
+ if (activeEditor != null) {
+ rewriteTarget= (IRewriteTarget) activeEditor.getAdapter(IRewriteTarget.class);
+ if (rewriteTarget != null) {
+ rewriteTarget.beginCompoundChange();
+ }
+ }
+
+ change.initializeValidationData(new NullProgressMonitor());
+ RefactoringStatus valid= change.isValid(new NullProgressMonitor());
+ if (valid.hasFatalError()) {
+ IStatus status= new Status(IStatus.ERROR, CUIPlugin.getPluginId(), IStatus.ERROR,
+ valid.getMessageMatchingSeverity(RefactoringStatus.FATAL), null);
+ throw new CoreException(status);
+ } else {
+ IUndoManager manager= RefactoringCore.getUndoManager();
+ manager.aboutToPerformChange(change);
+ Change undoChange= change.perform(new NullProgressMonitor());
+ manager.changePerformed(change, true);
+ if (undoChange != null) {
+ undoChange.initializeValidationData(new NullProgressMonitor());
+ manager.addUndo(getName(), undoChange);
+ }
+ }
+ }
+ } finally {
+ if (rewriteTarget != null) {
+ rewriteTarget.endCompoundChange();
+ }
+
+ if (change != null) {
+ change.dispose();
+ }
+ }
+ }
+
+ /*
+ * @see ICompletionProposal#getAdditionalProposalInfo()
+ */
+ public String getAdditionalProposalInfo() {
+ StringBuffer buf= new StringBuffer();
+ buf.append("<p>"); //$NON-NLS-1$
+ try {
+ Change change= getChange();
+ if (change != null) {
+ String name= change.getName();
+ if (name.length() == 0) {
+ return null;
+ }
+ buf.append(name);
+ } else {
+ return null;
+ }
+ } catch (CoreException e) {
+ buf.append("Unexpected error when accessing this proposal:<p><pre>"); //$NON-NLS-1$
+ buf.append(e.getLocalizedMessage());
+ buf.append("</pre>"); //$NON-NLS-1$
+ }
+ buf.append("</p>"); //$NON-NLS-1$
+ return buf.toString();
+ }
+
+ /*
+ * @see ICompletionProposal#getContextInformation()
+ */
+ public IContextInformation getContextInformation() {
+ return null;
+ }
+
+ /*
+ * @see ICompletionProposal#getDisplayString()
+ */
+ public String getDisplayString() {
+ String shortCutString= CorrectionCommandHandler.getShortCutString(getCommandId());
+ if (shortCutString != null) {
+ return MessageFormat.format(CorrectionMessages.ChangeCorrectionProposal_name_with_shortcut, getName(), shortCutString);
+ }
+ return getName();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.text.contentassist.ICompletionProposalExtension6#getStyledDisplayString()
+ */
+ public StyledString getStyledDisplayString() {
+ StyledString str= new StyledString(getName());
+
+ String shortCutString= CorrectionCommandHandler.getShortCutString(getCommandId());
+ if (shortCutString != null) {
+ String decorated= MessageFormat.format(CorrectionMessages.ChangeCorrectionProposal_name_with_shortcut, getName(), shortCutString);
+ return ColoringLabelProvider.decorateStyledString(str, decorated, StyledString.QUALIFIER_STYLER);
+ }
+ return str;
+ }
+
+ /**
+ * Returns the name of the proposal.
+ *
+ * @return return the name of the proposal
+ */
+ public String getName() {
+ return fName;
+ }
+
+ /*
+ * @see ICompletionProposal#getImage()
+ */
+ public Image getImage() {
+ return fImage;
+ }
+
+ /*
+ * @see ICompletionProposal#getSelection(IDocument)
+ */
+ public Point getSelection(IDocument document) {
+ return null;
+ }
+
+ /**
+ * Sets the proposal's image or <code>null</code> if no image is desired.
+ *
+ * @param image the desired image.
+ */
+ public void setImage(Image image) {
+ fImage= image;
+ }
+
+ /**
+ * Returns the change that will be executed when the proposal is applied.
+ *
+ * @return returns the change for this proposal.
+ * @throws CoreException thrown when the change could not be created
+ */
+ public final Change getChange() throws CoreException {
+ if (fChange == null) {
+ fChange= createChange();
+ }
+ return fChange;
+ }
+
+ /**
+ * Creates the text change for this proposal.
+ * This method is only called once and only when no text change has been passed in
+ * {@link #ChangeCorrectionProposal(String, Change, int, Image)}.
+ *
+ * @return returns the created change.
+ * @throws CoreException thrown if the creation of the change failed.
+ */
+ protected Change createChange() throws CoreException {
+ return new NullChange();
+ }
+
+ /**
+ * Sets the display name.
+ *
+ * @param name the name to set
+ */
+ public void setDisplayName(String name) {
+ if (name == null) {
+ throw new IllegalArgumentException("Name must not be null"); //$NON-NLS-1$
+ }
+ fName= name;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.ui.text.c.ICCompletionProposal#getRelevance()
+ */
+ public int getRelevance() {
+ return fRelevance;
+ }
+
+ /**
+ * Sets the relevance.
+ * @param relevance the relevance to set
+ */
+ public void setRelevance(int relevance) {
+ fRelevance= relevance;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.ui.text.correction.IShortcutProposal#getProposalId()
+ */
+ public String getCommandId() {
+ return fCommandId;
+ }
+
+ /**
+ * Set the proposal id to allow assigning a shortcut to the correction proposal.
+ *
+ * @param commandId The proposal id for this proposal or <code>null</code> if no command
+ * should be assigned to this proposal.
+ */
+ public void setCommandId(String commandId) {
+ fCommandId= commandId;
+ }
+
+ public String getIdString() {
+ return fCommandId;
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/LinkedCorrectionProposal.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/LinkedCorrectionProposal.java
new file mode 100644
index 00000000000..50c35d2f900
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/LinkedCorrectionProposal.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2007 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.text.correction.proposals;
+
+import org.eclipse.swt.graphics.Image;
+
+import org.eclipse.cdt.core.dom.rewrite.ASTRewrite;
+import org.eclipse.cdt.core.dom.rewrite.ITrackedNodePosition;
+import org.eclipse.cdt.core.model.ITranslationUnit;
+
+
+/**
+ * A proposal for quick fixes and quick assists that works on a AST rewriter and enters the
+ * linked mode when the proposal is set up.
+ * Either a rewriter is directly passed in the constructor or method {@link #getRewrite()} is overridden
+ * to provide the AST rewriter that is evaluated to the document when the proposal is
+ * applied.
+ * @since 5.1
+ */
+public class LinkedCorrectionProposal extends ASTRewriteCorrectionProposal {
+
+ /**
+ * Constructs a linked correction proposal.
+ * @param name The display name of the proposal.
+ * @param tu The translation unit that is modified.
+ * @param rewrite The AST rewrite that is invoked when the proposal is applied
+ * <code>null</code> can be passed if {@link #getRewrite()} is overridden.
+ * @param relevance The relevance of this proposal.
+ * @param image The image that is displayed for this proposal or <code>null</code> if no
+ * image is desired.
+ */
+ public LinkedCorrectionProposal(String name, ITranslationUnit tu, ASTRewrite rewrite, int relevance, Image image) {
+ super(name, tu, rewrite, relevance, image);
+ }
+
+ /**
+ * Adds a linked position to be shown when the proposal is applied. All position with the
+ * same group id are linked.
+ * @param position The position to add.
+ * @param isFirst If set, the proposal is jumped to first.
+ * @param groupID The id of the group the proposal belongs to. All proposals in the same group
+ * are linked.
+ */
+ public void addLinkedPosition(ITrackedNodePosition position, boolean isFirst, String groupID) {
+ getLinkedProposalModel().getPositionGroup(groupID, true).addPosition(position, isFirst);
+ }
+
+ /**
+ * Sets the end position of the linked mode to the end of the passed range.
+ * @param position The position that describes the end position of the linked mode.
+ */
+ public void setEndPosition(ITrackedNodePosition position) {
+ getLinkedProposalModel().setEndPosition(position);
+ }
+
+ /**
+ * Adds a linked position proposal to the group with the given id.
+ * @param groupID The id of the group that should present the proposal
+ * @param proposal The string to propose.
+ * @param image The image to show for the position proposal or <code>null</code> if
+ * no image is desired.
+ */
+ public void addLinkedPositionProposal(String groupID, String proposal, Image image) {
+ getLinkedProposalModel().getPositionGroup(groupID, true).addProposal(proposal, image, 10);
+ }
+
+ // TODO(sprigogin): Cleanup
+ /**
+ * Adds a linked position proposal to the group with the given id.
+ * @param groupID The id of the group that should present the proposal
+ * @param type The binding to use as type name proposal.
+ */
+// public void addLinkedPositionProposal(String groupID, ITypeBinding type) {
+// getLinkedProposalModel().getPositionGroup(groupID, true).addProposal(type, getTranslationUnit(), 10);
+// }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/LinkedNamesAssistProposal.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/LinkedNamesAssistProposal.java
new file mode 100644
index 00000000000..1444d67d1c4
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/LinkedNamesAssistProposal.java
@@ -0,0 +1,336 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2007 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.text.correction.proposals;
+
+import java.util.Arrays;
+import java.util.Comparator;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.VerifyEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.viewers.StyledString;
+
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.DocumentEvent;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.jface.text.contentassist.ICompletionProposalExtension2;
+import org.eclipse.jface.text.contentassist.ICompletionProposalExtension6;
+import org.eclipse.jface.text.contentassist.IContextInformation;
+import org.eclipse.jface.text.link.LinkedModeModel;
+import org.eclipse.jface.text.link.LinkedModeUI;
+import org.eclipse.jface.text.link.LinkedPosition;
+import org.eclipse.jface.text.link.LinkedPositionGroup;
+import org.eclipse.jface.text.link.LinkedModeUI.ExitFlags;
+import org.eclipse.jface.text.link.LinkedModeUI.IExitPolicy;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.texteditor.link.EditorLinkedModeUI;
+
+import org.eclipse.cdt.core.dom.ast.IASTName;
+import org.eclipse.cdt.core.dom.ast.IASTNodeSelector;
+import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+import org.eclipse.cdt.core.dom.ast.IBinding;
+import org.eclipse.cdt.core.model.ILanguage;
+import org.eclipse.cdt.core.model.ITranslationUnit;
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.cdt.ui.text.ICCompletionProposal;
+
+import org.eclipse.cdt.internal.core.model.ASTCache.ASTRunnable;
+
+import org.eclipse.cdt.internal.ui.CPluginImages;
+import org.eclipse.cdt.internal.ui.editor.ASTProvider;
+import org.eclipse.cdt.internal.ui.editor.CEditor;
+import org.eclipse.cdt.internal.ui.editor.EditorHighlightingSynchronizer;
+import org.eclipse.cdt.internal.ui.search.OccurrencesFinder;
+import org.eclipse.cdt.internal.ui.search.IOccurrencesFinder.OccurrenceLocation;
+import org.eclipse.cdt.internal.ui.text.correction.CorrectionCommandHandler;
+import org.eclipse.cdt.internal.ui.text.correction.CorrectionMessages;
+import org.eclipse.cdt.internal.ui.text.correction.ICommandAccess;
+import org.eclipse.cdt.internal.ui.viewsupport.ColoringLabelProvider;
+
+/**
+ * A proposal.allowing user to edit in place all occurrences of a name.
+ */
+public class LinkedNamesAssistProposal implements ICCompletionProposal, ICompletionProposalExtension2,
+ ICompletionProposalExtension6, ICommandAccess {
+
+ /**
+ * An exit policy that skips Backspace and Delete at the beginning and at the end
+ * of a linked position, respectively.
+ *
+ * See https://bugs.eclipse.org/bugs/show_bug.cgi?id=183925 .
+ */
+ public static class DeleteBlockingExitPolicy implements IExitPolicy {
+ private IDocument fDocument;
+
+ public DeleteBlockingExitPolicy(IDocument document) {
+ fDocument= document;
+ }
+
+ public ExitFlags doExit(LinkedModeModel model, VerifyEvent event, int offset, int length) {
+ if (length == 0 && (event.character == SWT.BS || event.character == SWT.DEL)) {
+ LinkedPosition position= model.findPosition(new LinkedPosition(fDocument, offset, 0, LinkedPositionGroup.NO_STOP));
+ if (position != null) {
+ if (event.character == SWT.BS) {
+ if (offset - 1 < position.getOffset()) {
+ //skip backspace at beginning of linked position
+ event.doit= false;
+ }
+ } else /* event.character == SWT.DEL */ {
+ if (offset + 1 > position.getOffset() + position.getLength()) {
+ //skip delete at end of linked position
+ event.doit= false;
+ }
+ }
+ }
+ }
+
+ return null; // don't change behavior
+ }
+ }
+
+
+ public static final String ASSIST_ID= "org.eclipse.cdt.ui.correction.renameInFile.assist"; //$NON-NLS-1$
+
+ private ITranslationUnit fTranslationUnit;
+ private String fLabel;
+ private String fValueSuggestion;
+ private int fRelevance;
+ private OccurrenceLocation[] fLocations;
+
+ public LinkedNamesAssistProposal(ITranslationUnit tu) {
+ this(CorrectionMessages.LinkedNamesAssistProposal_description, tu, null);
+ fTranslationUnit= tu;
+ fRelevance= 8;
+ }
+
+ public LinkedNamesAssistProposal(String label, ITranslationUnit tu, String valueSuggestion) {
+ fLabel= label;
+ fTranslationUnit= tu;
+ fValueSuggestion= valueSuggestion;
+ fRelevance= 8;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.text.contentassist.ICompletionProposalExtension2#apply(org.eclipse.jface.text.ITextViewer, char, int, int)
+ */
+ public void apply(final ITextViewer viewer, char trigger, int stateMask, final int offset) {
+ try {
+ fLocations = null;
+ Point selection= viewer.getSelectedRange();
+ final int secectionOffset = selection.x;
+ final int selectionLength = selection.y;
+
+ ASTProvider.getASTProvider().runOnAST(fTranslationUnit, ASTProvider.WAIT_YES,
+ new NullProgressMonitor(), new ASTRunnable() {
+
+ public IStatus runOnAST(ILanguage lang, IASTTranslationUnit astRoot) throws CoreException {
+ IASTNodeSelector selector= astRoot.getNodeSelector(null);
+ IASTName name= selector.findEnclosingName(secectionOffset, selectionLength);
+
+ if (name != null) {
+ IBinding binding= name.resolveBinding();
+ if (binding != null) {
+ OccurrencesFinder occurrencesFinder= new OccurrencesFinder();
+ if (occurrencesFinder.initialize(astRoot, name) == null) {
+ fLocations= occurrencesFinder.getOccurrences();
+ }
+ }
+ }
+ return Status.OK_STATUS;
+ }
+ });
+
+ if (fLocations == null || fLocations.length == 0) {
+ return;
+ }
+
+ // Sort the locations starting with the one @ offset.
+ Arrays.sort(fLocations, new Comparator<OccurrenceLocation>() {
+
+ public int compare(OccurrenceLocation n1, OccurrenceLocation n2) {
+ return rank(n1) - rank(n2);
+ }
+
+ /**
+ * Returns the absolute rank of a location. Location preceding <code>offset</code>
+ * are ranked last.
+ *
+ * @param location the location to compute the rank for
+ * @return the rank of the location with respect to the invocation offset
+ */
+ private int rank(OccurrenceLocation location) {
+ int relativeRank= location.getOffset() + location.getLength() - offset;
+ if (relativeRank < 0)
+ return Integer.MAX_VALUE + relativeRank;
+ else
+ return relativeRank;
+ }
+ });
+
+ IDocument document= viewer.getDocument();
+ LinkedPositionGroup group= new LinkedPositionGroup();
+ for (int i= 0; i < fLocations.length; i++) {
+ OccurrenceLocation item= fLocations[i];
+ group.addPosition(new LinkedPosition(document, item.getOffset(), item.getLength(), i));
+ }
+
+ LinkedModeModel model= new LinkedModeModel();
+ model.addGroup(group);
+ model.forceInstall();
+ CEditor editor= getCEditor();
+ if (editor != null) {
+ model.addLinkingListener(new EditorHighlightingSynchronizer(editor));
+ }
+
+ LinkedModeUI ui= new EditorLinkedModeUI(model, viewer);
+ ui.setExitPolicy(new DeleteBlockingExitPolicy(document));
+ ui.setExitPosition(viewer, offset, 0, LinkedPositionGroup.NO_STOP);
+ ui.enter();
+
+ if (fValueSuggestion != null) {
+ document.replace(fLocations[0].getOffset(), fLocations[0].getLength(), fValueSuggestion);
+ IRegion selectedRegion= ui.getSelectedRegion();
+ selection= new Point(selectedRegion.getOffset(), fValueSuggestion.length());
+ }
+
+ viewer.setSelectedRange(selection.x, selection.y); // By default full word is selected, restore original selection
+ } catch (BadLocationException e) {
+ CUIPlugin.log(e);
+ }
+ }
+
+ /**
+ * Returns the currently active C editor, or <code>null</code> if it
+ * cannot be determined.
+ *
+ * @return the currently active C editor, or <code>null</code>
+ */
+ private CEditor getCEditor() {
+ IEditorPart part= CUIPlugin.getActivePage().getActiveEditor();
+ if (part instanceof CEditor)
+ return (CEditor) part;
+ else
+ return null;
+ }
+
+ /*
+ * @see ICompletionProposal#apply(IDocument)
+ */
+ public void apply(IDocument document) {
+ // can't do anything
+ }
+
+ /*
+ * @see ICompletionProposal#getSelection(IDocument)
+ */
+ public Point getSelection(IDocument document) {
+ return null;
+ }
+
+ /*
+ * @see ICompletionProposal#getAdditionalProposalInfo()
+ */
+ public String getAdditionalProposalInfo() {
+ return CorrectionMessages.LinkedNamesAssistProposal_proposalinfo;
+ }
+
+ /*
+ * @see ICompletionProposal#getDisplayString()
+ */
+ public String getDisplayString() {
+ String shortCutString= CorrectionCommandHandler.getShortCutString(getCommandId());
+ if (shortCutString != null) {
+ return CorrectionMessages.bind(CorrectionMessages.ChangeCorrectionProposal_name_with_shortcut,
+ fLabel, shortCutString);
+ }
+ return fLabel;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.text.contentassist.ICompletionProposalExtension6#getStyledDisplayString()
+ */
+ public StyledString getStyledDisplayString() {
+ StyledString str= new StyledString(fLabel);
+
+ String shortCutString= CorrectionCommandHandler.getShortCutString(getCommandId());
+ if (shortCutString != null) {
+ String decorated= CorrectionMessages.bind(CorrectionMessages.ChangeCorrectionProposal_name_with_shortcut,
+ fLabel, shortCutString);
+ return ColoringLabelProvider.decorateStyledString(str, decorated, StyledString.QUALIFIER_STYLER);
+ }
+ return str;
+ }
+
+ /*
+ * @see ICompletionProposal#getImage()
+ */
+ public Image getImage() {
+ return CPluginImages.get(CPluginImages.IMG_CORRECTION_LINKED_RENAME);
+ }
+
+ /*
+ * @see ICompletionProposal#getContextInformation()
+ */
+ public IContextInformation getContextInformation() {
+ return null;
+ }
+
+ /*
+ * @see ICCompletionProposal#getRelevance()
+ */
+ public int getRelevance() {
+ return fRelevance;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.text.contentassist.ICompletionProposalExtension2#selected(org.eclipse.jface.text.ITextViewer, boolean)
+ */
+ public void selected(ITextViewer textViewer, boolean smartToggle) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.text.contentassist.ICompletionProposalExtension2#unselected(org.eclipse.jface.text.ITextViewer)
+ */
+ public void unselected(ITextViewer textViewer) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.text.contentassist.ICompletionProposalExtension2#validate(org.eclipse.jface.text.IDocument, int, org.eclipse.jface.text.DocumentEvent)
+ */
+ public boolean validate(IDocument document, int offset, DocumentEvent event) {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.ui.text.correction.ICommandAccess#getCommandId()
+ */
+ public String getCommandId() {
+ return ASSIST_ID;
+ }
+
+ public void setRelevance(int relevance) {
+ fRelevance= relevance;
+ }
+
+ public String getIdString() {
+ return ASSIST_ID;
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/TUCorrectionProposal.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/TUCorrectionProposal.java
new file mode 100644
index 00000000000..9ee54cefd6b
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/TUCorrectionProposal.java
@@ -0,0 +1,436 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+
+package org.eclipse.cdt.internal.ui.text.correction.proposals;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.Document;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.ltk.core.refactoring.Change;
+import org.eclipse.ltk.core.refactoring.DocumentChange;
+import org.eclipse.ltk.core.refactoring.TextChange;
+import org.eclipse.ltk.core.refactoring.TextFileChange;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.text.edits.CopyTargetEdit;
+import org.eclipse.text.edits.DeleteEdit;
+import org.eclipse.text.edits.InsertEdit;
+import org.eclipse.text.edits.MoveSourceEdit;
+import org.eclipse.text.edits.MoveTargetEdit;
+import org.eclipse.text.edits.MultiTextEdit;
+import org.eclipse.text.edits.ReplaceEdit;
+import org.eclipse.text.edits.TextEdit;
+import org.eclipse.text.edits.TextEditVisitor;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.texteditor.ITextEditor;
+
+import org.eclipse.cdt.core.model.CModelException;
+import org.eclipse.cdt.core.model.ITranslationUnit;
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.cdt.ui.refactoring.CTextFileChange;
+
+import org.eclipse.cdt.internal.corext.codemanipulation.StubUtility;
+import org.eclipse.cdt.internal.corext.fix.LinkedProposalModel;
+import org.eclipse.cdt.internal.corext.fix.LinkedProposalPositionGroup;
+import org.eclipse.cdt.internal.corext.util.Strings;
+
+import org.eclipse.cdt.internal.ui.CUIStatus;
+import org.eclipse.cdt.internal.ui.editor.CEditor;
+import org.eclipse.cdt.internal.ui.text.correction.CorrectionMessages;
+import org.eclipse.cdt.internal.ui.util.EditorUtility;
+import org.eclipse.cdt.internal.ui.util.ExceptionHandler;
+import org.eclipse.cdt.internal.ui.util.Resources;
+import org.eclipse.cdt.internal.ui.viewsupport.LinkedProposalModelPresenter;
+
+/**
+ * A proposal for quick fixes and quick assist that work on a single compilation unit.
+ * Either a {@link TextChange text change} is directly passed in the constructor or method
+ * {@link #addEdits(IDocument, TextEdit)} is overridden to provide the text edits that are
+ * applied to the document when the proposal is evaluated.
+ * <p>
+ * The proposal takes care of the preview of the changes as proposal information.
+ * </p>
+ * @since 5.1
+ */
+public class TUCorrectionProposal extends ChangeCorrectionProposal {
+ private ITranslationUnit fTranslationUnit;
+ private LinkedProposalModel fLinkedProposalModel;
+
+ /**
+ * Constructs a correction proposal working on a compilation unit with a given text change
+ *
+ * @param name the name that is displayed in the proposal selection dialog.
+ * @param tu the compilation unit on that the change works.
+ * @param change the change that is executed when the proposal is applied or <code>null</code>
+ * if implementors override {@link #addEdits(IDocument, TextEdit)} to provide
+ * the text edits or {@link #createTextChange()} to provide a text change.
+ * @param relevance the relevance of this proposal.
+ * @param image the image that is displayed for this proposal or <code>null</code> if no
+ * image is desired.
+ */
+ public TUCorrectionProposal(String name, ITranslationUnit tu, TextChange change, int relevance, Image image) {
+ super(name, change, relevance, image);
+ if (tu == null) {
+ throw new IllegalArgumentException("Translation unit must not be null"); //$NON-NLS-1$
+ }
+ fTranslationUnit= tu;
+ fLinkedProposalModel= null;
+ }
+
+ /**
+ * Constructs a correction proposal working on a compilation unit.
+ * <p>Users have to override {@link #addEdits(IDocument, TextEdit)} to provide
+ * the text edits or {@link #createTextChange()} to provide a text change.
+ * </p>
+ *
+ * @param name The name that is displayed in the proposal selection dialog.
+ * @param tu The compilation unit on that the change works.
+ * @param relevance The relevance of this proposal.
+ * @param image The image that is displayed for this proposal or <code>null</code> if no
+ * image is desired.
+ */
+ protected TUCorrectionProposal(String name, ITranslationUnit tu, int relevance, Image image) {
+ this(name, tu, null, relevance, image);
+ }
+
+ /**
+ * Called when the {@link CTextFileChange} is initialized. Subclasses can override to
+ * add text edits to the root edit of the change. Implementors must not access the proposal,
+ * e.g getting the change.
+ * <p>The default implementation does not add any edits</p>
+ *
+ * @param document content of the underlying compilation unit. To be accessed read only.
+ * @param editRoot The root edit to add all edits to
+ * @throws CoreException can be thrown if adding the edits is failing.
+ */
+ protected void addEdits(IDocument document, TextEdit editRoot) throws CoreException {
+ if (false) {
+ throw new CoreException(CUIStatus.createError(IStatus.ERROR, "Implementors can throw an exception", null)); //$NON-NLS-1$
+ }
+ }
+
+ protected LinkedProposalModel getLinkedProposalModel() {
+ if (fLinkedProposalModel == null) {
+ fLinkedProposalModel= new LinkedProposalModel();
+ }
+ return fLinkedProposalModel;
+ }
+
+ public void setLinkedProposalModel(LinkedProposalModel model) {
+ fLinkedProposalModel= model;
+ }
+
+ /*
+ * @see ICompletionProposal#getAdditionalProposalInfo()
+ */
+ @Override
+ public String getAdditionalProposalInfo() {
+ final StringBuffer buf= new StringBuffer();
+
+ try {
+ final TextChange change= getTextChange();
+
+ change.setKeepPreviewEdits(true);
+ final IDocument previewContent= change.getPreviewDocument(new NullProgressMonitor());
+ final TextEdit rootEdit= change.getPreviewEdit(change.getEdit());
+
+ class EditAnnotator extends TextEditVisitor {
+ private int fWrittenToPos = 0;
+
+ public void unchangedUntil(int pos) {
+ if (pos > fWrittenToPos) {
+ appendContent(previewContent, fWrittenToPos, pos, buf, true);
+ fWrittenToPos = pos;
+ }
+ }
+
+ @Override
+ public boolean visit(MoveTargetEdit edit) {
+ return true; //rangeAdded(edit);
+ }
+
+ @Override
+ public boolean visit(CopyTargetEdit edit) {
+ return true; //return rangeAdded(edit);
+ }
+
+ @Override
+ public boolean visit(InsertEdit edit) {
+ return rangeAdded(edit);
+ }
+
+ @Override
+ public boolean visit(ReplaceEdit edit) {
+ if (edit.getLength() > 0)
+ return rangeAdded(edit);
+ return rangeRemoved(edit);
+ }
+
+ @Override
+ public boolean visit(MoveSourceEdit edit) {
+ return rangeRemoved(edit);
+ }
+
+ @Override
+ public boolean visit(DeleteEdit edit) {
+ return rangeRemoved(edit);
+ }
+
+ private boolean rangeRemoved(TextEdit edit) {
+ unchangedUntil(edit.getOffset());
+ return false;
+ }
+
+ private boolean rangeAdded(TextEdit edit) {
+ unchangedUntil(edit.getOffset());
+ buf.append("<b>"); //$NON-NLS-1$
+ appendContent(previewContent, edit.getOffset(), edit.getExclusiveEnd(), buf, false);
+ buf.append("</b>"); //$NON-NLS-1$
+ fWrittenToPos = edit.getExclusiveEnd();
+ return false;
+ }
+ }
+ EditAnnotator ea = new EditAnnotator();
+ rootEdit.accept(ea);
+
+ // Final pre-existing region
+ ea.unchangedUntil(previewContent.getLength());
+ } catch (CoreException e) {
+ CUIPlugin.log(e);
+ }
+ return buf.toString();
+ }
+
+ private final int surroundLines= 1;
+
+ private void appendContent(IDocument text, int startOffset, int endOffset, StringBuffer buf, boolean surroundLinesOnly) {
+ try {
+ int startLine= text.getLineOfOffset(startOffset);
+ int endLine= text.getLineOfOffset(endOffset);
+
+ boolean dotsAdded= false;
+ if (surroundLinesOnly && startOffset == 0) { // no surround lines for the top no-change range
+ startLine= Math.max(endLine - surroundLines, 0);
+ buf.append("...<br>"); //$NON-NLS-1$
+ dotsAdded= true;
+ }
+
+ for (int i= startLine; i <= endLine; i++) {
+ if (surroundLinesOnly) {
+ if ((i - startLine > surroundLines) && (endLine - i > surroundLines)) {
+ if (!dotsAdded) {
+ buf.append("...<br>"); //$NON-NLS-1$
+ dotsAdded= true;
+ } else if (endOffset == text.getLength()) {
+ return; // no surround lines for the bottom no-change range
+ }
+ continue;
+ }
+ }
+
+ IRegion lineInfo= text.getLineInformation(i);
+ int start= lineInfo.getOffset();
+ int end= start + lineInfo.getLength();
+
+ int from= Math.max(start, startOffset);
+ int to= Math.min(end, endOffset);
+ String content= text.get(from, to - from);
+ if (surroundLinesOnly && (from == start) && Strings.containsOnlyWhitespaces(content)) {
+ continue; // ignore empty lines except when range started in the middle of a line
+ }
+ for (int k= 0; k < content.length(); k++) {
+ char ch= content.charAt(k);
+ if (ch == '<') {
+ buf.append("&lt;"); //$NON-NLS-1$
+ } else if (ch == '>') {
+ buf.append("&gt;"); //$NON-NLS-1$
+ } else {
+ buf.append(ch);
+ }
+ }
+ if (to == end && to != endOffset) { // new line when at the end of the line, and not end of range
+ buf.append("<br>"); //$NON-NLS-1$
+ }
+ }
+ } catch (BadLocationException e) {
+ // ignore
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.text.contentassist.ICompletionProposal#apply(org.eclipse.jface.text.IDocument)
+ */
+ @Override
+ public void apply(IDocument document) {
+ try {
+ ITranslationUnit unit= getTranslationUnit();
+ IEditorPart part= null;
+ if (unit.getResource().exists()) {
+ boolean canEdit= performValidateEdit(unit);
+ if (!canEdit) {
+ return;
+ }
+ part= EditorUtility.isOpenInEditor(unit);
+ if (part == null) {
+ part= EditorUtility.openInEditor(unit);
+ if (part != null) {
+ document= CUIPlugin.getDefault().getDocumentProvider().getDocument(part.getEditorInput());
+ }
+ }
+ IWorkbenchPage page= CUIPlugin.getActivePage();
+ if (page != null && part != null) {
+ page.bringToTop(part);
+ }
+ if (part != null) {
+ part.setFocus();
+ }
+ }
+ performChange(part, document);
+ } catch (CoreException e) {
+ ExceptionHandler.handle(e, CorrectionMessages.TUCorrectionProposal_error_title,
+ CorrectionMessages.TUCorrectionProposal_error_message);
+ }
+ }
+
+ private boolean performValidateEdit(ITranslationUnit unit) {
+ IStatus status= Resources.makeCommittable(unit.getResource(), CUIPlugin.getActiveWorkbenchShell());
+ if (!status.isOK()) {
+ String label= CorrectionMessages.TUCorrectionProposal_error_title;
+ String message= CorrectionMessages.TUCorrectionProposal_error_message;
+ ErrorDialog.openError(CUIPlugin.getActiveWorkbenchShell(), label, message, status);
+ return false;
+ }
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.ui.text.correction.ChangeCorrectionProposal#performChange(org.eclipse.jface.text.IDocument, org.eclipse.ui.IEditorPart)
+ */
+ @Override
+ protected void performChange(IEditorPart part, IDocument document) throws CoreException {
+ try {
+ super.performChange(part, document);
+ if (part == null) {
+ return;
+ }
+
+ if (fLinkedProposalModel != null) {
+ if (fLinkedProposalModel.hasLinkedPositions() && part instanceof CEditor) {
+ // enter linked mode
+ ITextViewer viewer= ((CEditor) part).getViewer();
+ new LinkedProposalModelPresenter().enterLinkedMode(viewer, part, fLinkedProposalModel);
+ } else if (part instanceof ITextEditor) {
+ LinkedProposalPositionGroup.PositionInformation endPosition= fLinkedProposalModel.getEndPosition();
+ if (endPosition != null) {
+ // select a result
+ int pos= endPosition.getOffset() + endPosition.getLength();
+ ((ITextEditor) part).selectAndReveal(pos, 0);
+ }
+ }
+ }
+ } catch (BadLocationException e) {
+ throw new CoreException(CUIStatus.createError(IStatus.ERROR, e));
+ }
+ }
+
+ /**
+ * Creates the text change for this proposal.
+ * This method is only called once and only when no text change has been passed in
+ * {@link #TUCorrectionProposal(String, ITranslationUnit, TextChange, int, Image)}.
+ *
+ * @return returns the created text change.
+ * @throws CoreException thrown if the creation of the text change failed.
+ */
+ protected TextChange createTextChange() throws CoreException {
+ ITranslationUnit tu= getTranslationUnit();
+ String name= getName();
+ TextChange change;
+ if (!tu.getResource().exists()) {
+ String source;
+ try {
+ source= tu.getSource();
+ } catch (CModelException e) {
+ CUIPlugin.log(e);
+ source= new String(); // empty
+ }
+ Document document= new Document(source);
+ document.setInitialLineDelimiter(StubUtility.getLineDelimiterUsed(tu));
+ change= new DocumentChange(name, document);
+ } else {
+ CTextFileChange tuChange = new CTextFileChange(name, tu);
+ tuChange.setSaveMode(TextFileChange.LEAVE_DIRTY);
+ change= tuChange;
+ }
+ TextEdit rootEdit= new MultiTextEdit();
+ change.setEdit(rootEdit);
+
+ // initialize text change
+ IDocument document= change.getCurrentDocument(new NullProgressMonitor());
+ addEdits(document, rootEdit);
+ return change;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.ui.text.correction.ChangeCorrectionProposal#createChange()
+ */
+ @Override
+ protected final Change createChange() throws CoreException {
+ return createTextChange(); // make sure that only text changes are allowed here
+ }
+
+ /**
+ * Gets the text change that is invoked when the change is applied.
+ *
+ * @return returns the text change that is invoked when the change is applied.
+ * @throws CoreException throws an exception if accessing the change failed
+ */
+ public final TextChange getTextChange() throws CoreException {
+ return (TextChange) getChange();
+ }
+
+ /**
+ * The compilation unit on that the change works.
+ *
+ * @return the compilation unit on that the change works.
+ */
+ public final ITranslationUnit getTranslationUnit() {
+ return fTranslationUnit;
+ }
+
+ /**
+ * Creates a preview of the content of the compilation unit after applying the change.
+ *
+ * @return returns the preview of the changed compilation unit.
+ * @throws CoreException thrown if the creation of the change failed.
+ */
+ public String getPreviewContent() throws CoreException {
+ return getTextChange().getPreviewContent(new NullProgressMonitor());
+ }
+
+ /* (non-Javadoc)
+ * @see java.lang.Object#toString()
+ */
+ @Override
+ public String toString() {
+ try {
+ return getPreviewContent();
+ } catch (CoreException e) {
+ }
+ return super.toString();
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/ColoredViewersManager.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/ColoredViewersManager.java
new file mode 100644
index 00000000000..b1d5207ea15
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/ColoredViewersManager.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.viewsupport;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.swt.widgets.Display;
+
+import org.eclipse.jface.preference.JFacePreferences;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+
+import org.eclipse.ui.IWorkbenchPreferenceConstants;
+import org.eclipse.ui.PlatformUI;
+
+
+public class ColoredViewersManager implements IPropertyChangeListener {
+ public static final String INHERITED_COLOR_NAME= "org.eclipse.cdt.ui.ColoredLabels.inherited"; //$NON-NLS-1$
+
+ public static final String HIGHLIGHT_BG_COLOR_NAME= "org.eclipse.cdt.ui.ColoredLabels.match_highlight"; //$NON-NLS-1$
+ public static final String HIGHLIGHT_WRITE_BG_COLOR_NAME= "org.eclipse.cdt.ui.ColoredLabels.writeaccess_highlight"; //$NON-NLS-1$
+
+ private static ColoredViewersManager fgInstance= new ColoredViewersManager();
+
+ private Set<ColoringLabelProvider> fManagedLabelProviders;
+
+ public ColoredViewersManager() {
+ fManagedLabelProviders= new HashSet<ColoringLabelProvider>();
+ }
+
+ public void installColoredLabels(ColoringLabelProvider labelProvider) {
+ if (fManagedLabelProviders.contains(labelProvider))
+ return;
+
+ if (fManagedLabelProviders.isEmpty()) {
+ // first lp installed
+ PlatformUI.getPreferenceStore().addPropertyChangeListener(this);
+ JFaceResources.getColorRegistry().addListener(this);
+ }
+ fManagedLabelProviders.add(labelProvider);
+ }
+
+ public void uninstallColoredLabels(ColoringLabelProvider labelProvider) {
+ if (!fManagedLabelProviders.remove(labelProvider))
+ return; // not installed
+
+ if (fManagedLabelProviders.isEmpty()) {
+ PlatformUI.getPreferenceStore().removePropertyChangeListener(this);
+ JFaceResources.getColorRegistry().removeListener(this);
+ // last viewer uninstalled
+ }
+ }
+
+ public void propertyChange(PropertyChangeEvent event) {
+ String property= event.getProperty();
+ if (property.equals(JFacePreferences.QUALIFIER_COLOR) || property.equals(JFacePreferences.COUNTER_COLOR) || property.equals(JFacePreferences.DECORATIONS_COLOR)
+ || property.equals(HIGHLIGHT_BG_COLOR_NAME) || property.equals(IWorkbenchPreferenceConstants.USE_COLORED_LABELS) || property.equals(HIGHLIGHT_WRITE_BG_COLOR_NAME)) {
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ refreshAllViewers();
+ }
+ });
+ }
+ }
+
+ protected final void refreshAllViewers() {
+ for (ColoringLabelProvider provider : fManagedLabelProviders) {
+ provider.refresh();
+ }
+ }
+
+ public static boolean showColoredLabels() {
+ return PlatformUI.getPreferenceStore().getBoolean(IWorkbenchPreferenceConstants.USE_COLORED_LABELS);
+ }
+
+ public static void install(ColoringLabelProvider labelProvider) {
+ fgInstance.installColoredLabels(labelProvider);
+ }
+
+ public static void uninstall(ColoringLabelProvider labelProvider) {
+ fgInstance.uninstallColoredLabels(labelProvider);
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/ColoringLabelProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/ColoringLabelProvider.java
new file mode 100644
index 00000000000..aa59113af35
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/ColoringLabelProvider.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.viewsupport;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StyleRange;
+
+import org.eclipse.jface.viewers.ColumnViewer;
+import org.eclipse.jface.viewers.DecoratingStyledCellLabelProvider;
+import org.eclipse.jface.viewers.IDecorationContext;
+import org.eclipse.jface.viewers.ILabelDecorator;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.StyledString;
+import org.eclipse.jface.viewers.ViewerColumn;
+import org.eclipse.jface.viewers.StyledString.Styler;
+
+public class ColoringLabelProvider extends DecoratingStyledCellLabelProvider implements ILabelProvider {
+ public static final Styler HIGHLIGHT_STYLE= StyledString.createColorRegistryStyler(null, ColoredViewersManager.HIGHLIGHT_BG_COLOR_NAME);
+ public static final Styler HIGHLIGHT_WRITE_STYLE= StyledString.createColorRegistryStyler(null, ColoredViewersManager.HIGHLIGHT_WRITE_BG_COLOR_NAME);
+
+ public ColoringLabelProvider(IStyledLabelProvider labelProvider) {
+ this(labelProvider, null, null);
+ }
+
+ public ColoringLabelProvider(IStyledLabelProvider labelProvider, ILabelDecorator decorator, IDecorationContext decorationContext) {
+ super(labelProvider, decorator, decorationContext);
+ }
+
+ @Override
+ public void initialize(ColumnViewer viewer, ViewerColumn column) {
+ ColoredViewersManager.install(this);
+ setOwnerDrawEnabled(ColoredViewersManager.showColoredLabels());
+
+ super.initialize(viewer, column);
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ ColoredViewersManager.uninstall(this);
+ }
+
+ public void refresh() {
+ ColumnViewer viewer= getViewer();
+
+ if (viewer == null) {
+ return;
+ }
+ boolean showColoredLabels= ColoredViewersManager.showColoredLabels();
+ if (showColoredLabels != isOwnerDrawEnabled()) {
+ setOwnerDrawEnabled(showColoredLabels);
+ viewer.refresh();
+ } else if (showColoredLabels) {
+ viewer.refresh();
+ }
+ }
+
+ @Override
+ protected StyleRange prepareStyleRange(StyleRange styleRange, boolean applyColors) {
+ if (!applyColors && styleRange.background != null) {
+ styleRange= super.prepareStyleRange(styleRange, applyColors);
+ styleRange.borderStyle= SWT.BORDER_DOT;
+ return styleRange;
+ }
+ return super.prepareStyleRange(styleRange, applyColors);
+ }
+
+ public String getText(Object element) {
+ return getStyledText(element).getString();
+ }
+
+ public static StyledString decorateStyledString(StyledString string, String decorated, Styler color) {
+ String label= string.getString();
+ int originalStart= decorated.indexOf(label);
+ if (originalStart == -1) {
+ return new StyledString(decorated); // the decorator did something wild
+ }
+ if (originalStart > 0) {
+ StyledString newString= new StyledString(decorated.substring(0, originalStart), color);
+ newString.append(string);
+ string= newString;
+ }
+ if (decorated.length() > originalStart + label.length()) { // decorator appended something
+ return string.append(decorated.substring(originalStart + label.length()), color);
+ }
+ return string; // no change
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/LinkedProposalModelPresenter.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/LinkedProposalModelPresenter.java
new file mode 100644
index 00000000000..5aed7f907bc
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/LinkedProposalModelPresenter.java
@@ -0,0 +1,239 @@
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.viewsupport;
+
+import java.util.Iterator;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.DocumentEvent;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.jface.text.contentassist.ICompletionProposalExtension2;
+import org.eclipse.jface.text.contentassist.IContextInformation;
+import org.eclipse.jface.text.link.ILinkedModeListener;
+import org.eclipse.jface.text.link.LinkedModeModel;
+import org.eclipse.jface.text.link.LinkedModeUI;
+import org.eclipse.jface.text.link.LinkedPosition;
+import org.eclipse.jface.text.link.LinkedPositionGroup;
+import org.eclipse.jface.text.link.ProposalPosition;
+import org.eclipse.jface.text.link.LinkedModeUI.ExitFlags;
+import org.eclipse.swt.events.VerifyEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.text.edits.MalformedTreeException;
+import org.eclipse.text.edits.TextEdit;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.texteditor.link.EditorLinkedModeUI;
+
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.cdt.ui.text.ICCompletionProposal;
+
+import org.eclipse.cdt.internal.corext.fix.LinkedProposalModel;
+import org.eclipse.cdt.internal.corext.fix.LinkedProposalPositionGroup;
+
+import org.eclipse.cdt.internal.ui.editor.CEditor;
+import org.eclipse.cdt.internal.ui.editor.EditorHighlightingSynchronizer;
+
+/**
+ * Does the setup of the linked mode from a {@link LinkedProposalModel}
+ */
+public class LinkedProposalModelPresenter {
+
+ public LinkedProposalModelPresenter() {
+ }
+
+ public void enterLinkedMode(ITextViewer viewer, IEditorPart editor, LinkedProposalModel linkedProposalModel) throws BadLocationException {
+ IDocument document= viewer.getDocument();
+
+ LinkedModeModel model= new LinkedModeModel();
+ boolean added= false;
+
+ Iterator<LinkedProposalPositionGroup> iterator= linkedProposalModel.getPositionGroupIterator();
+ while (iterator.hasNext()) {
+ LinkedProposalPositionGroup curr= iterator.next();
+
+ LinkedPositionGroup group= new LinkedPositionGroup();
+
+ LinkedProposalPositionGroup.PositionInformation[] positions= curr.getPositions();
+ if (positions.length > 0) {
+ LinkedProposalPositionGroup.Proposal[] linkedModeProposals= curr.getProposals();
+ if (linkedModeProposals.length <= 1) {
+ for (int i= 0; i < positions.length; i++) {
+ LinkedProposalPositionGroup.PositionInformation pos= positions[i];
+ if (pos.getOffset() != -1) {
+ group.addPosition(new LinkedPosition(document, pos.getOffset(), pos.getLength(), pos.getSequenceRank()));
+ }
+ }
+ } else {
+ LinkedPositionProposalImpl[] proposalImpls= new LinkedPositionProposalImpl[linkedModeProposals.length];
+ for (int i= 0; i < linkedModeProposals.length; i++) {
+ proposalImpls[i]= new LinkedPositionProposalImpl(linkedModeProposals[i], model);
+ }
+
+ for (int i= 0; i < positions.length; i++) {
+ LinkedProposalPositionGroup.PositionInformation pos= positions[i];
+ if (pos.getOffset() != -1) {
+ group.addPosition(new ProposalPosition(document, pos.getOffset(), pos.getLength(), pos.getSequenceRank(), proposalImpls));
+ }
+ }
+ }
+ model.addGroup(group);
+ added= true;
+ }
+ }
+
+ model.forceInstall();
+
+ if (editor instanceof CEditor) {
+ model.addLinkingListener(new EditorHighlightingSynchronizer((CEditor) editor));
+ }
+
+ if (added) { // only set up UI if there are any positions set
+ LinkedModeUI ui= new EditorLinkedModeUI(model, viewer);
+ LinkedProposalPositionGroup.PositionInformation endPosition= linkedProposalModel.getEndPosition();
+ if (endPosition != null && endPosition.getOffset() != -1) {
+ ui.setExitPosition(viewer, endPosition.getOffset() + endPosition.getLength(), 0, Integer.MAX_VALUE);
+ } else {
+ int cursorPosition= viewer.getSelectedRange().x;
+ if (cursorPosition != 0) {
+ ui.setExitPosition(viewer, cursorPosition, 0, Integer.MAX_VALUE);
+ }
+ }
+ ui.setExitPolicy(new LinkedModeExitPolicy());
+ ui.enter();
+
+ IRegion region= ui.getSelectedRegion();
+ viewer.setSelectedRange(region.getOffset(), region.getLength());
+ viewer.revealRange(region.getOffset(), region.getLength());
+ }
+ }
+
+ private static class LinkedPositionProposalImpl implements ICompletionProposalExtension2, ICCompletionProposal {
+ private final LinkedProposalPositionGroup.Proposal fProposal;
+ private final LinkedModeModel fLinkedPositionModel;
+
+ public LinkedPositionProposalImpl(LinkedProposalPositionGroup.Proposal proposal, LinkedModeModel model) {
+ fProposal= proposal;
+ fLinkedPositionModel= model;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.text.contentassist.ICompletionProposalExtension2#apply(org.eclipse.jface.text.ITextViewer, char, int, int)
+ */
+ public void apply(ITextViewer viewer, char trigger, int stateMask, int offset) {
+ IDocument doc= viewer.getDocument();
+ LinkedPosition position= fLinkedPositionModel.findPosition(new LinkedPosition(doc, offset, 0));
+ if (position != null) {
+ try {
+ try {
+ TextEdit edit= fProposal.computeEdits(offset, position, trigger, stateMask, fLinkedPositionModel);
+ if (edit != null) {
+ edit.apply(position.getDocument(), 0);
+ }
+ } catch (MalformedTreeException e) {
+ throw new CoreException(new Status(IStatus.ERROR, CUIPlugin.PLUGIN_ID, IStatus.ERROR, "Unexpected exception applying edit", e)); //$NON-NLS-1$
+ } catch (BadLocationException e) {
+ throw new CoreException(new Status(IStatus.ERROR, CUIPlugin.PLUGIN_ID, IStatus.ERROR, "Unexpected exception applying edit", e)); //$NON-NLS-1$
+ }
+ } catch (CoreException e) {
+ CUIPlugin.log(e);
+ }
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.text.contentassist.ICompletionProposal#getDisplayString()
+ */
+ public String getDisplayString() {
+ return fProposal.getDisplayString();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.text.contentassist.ICompletionProposal#getImage()
+ */
+ public Image getImage() {
+ return fProposal.getImage();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.ui.text.ICCompletionProposal#getRelevance()
+ */
+ public int getRelevance() {
+ return fProposal.getRelevance();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.text.contentassist.ICompletionProposal#apply(org.eclipse.jface.text.IDocument)
+ */
+ public void apply(IDocument document) {
+ // not called
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.text.contentassist.ICompletionProposal#getAdditionalProposalInfo()
+ */
+ public String getAdditionalProposalInfo() {
+ return fProposal.getAdditionalProposalInfo();
+ }
+
+ public Point getSelection(IDocument document) { return null; }
+ public IContextInformation getContextInformation() { return null; }
+ public void selected(ITextViewer viewer, boolean smartToggle) {}
+ public void unselected(ITextViewer viewer) {}
+
+ /*
+ * @see org.eclipse.jface.text.contentassist.ICompletionProposalExtension2#validate(org.eclipse.jface.text.IDocument, int, org.eclipse.jface.text.DocumentEvent)
+ */
+ public boolean validate(IDocument document, int offset, DocumentEvent event) {
+ // ignore event
+ String insert= getDisplayString();
+
+ int off;
+ LinkedPosition pos= fLinkedPositionModel.findPosition(new LinkedPosition(document, offset, 0));
+ if (pos != null) {
+ off= pos.getOffset();
+ } else {
+ off= Math.max(0, offset - insert.length());
+ }
+ int length= offset - off;
+
+ if (offset <= document.getLength()) {
+ try {
+ String content= document.get(off, length);
+ if (insert.startsWith(content))
+ return true;
+ } catch (BadLocationException e) {
+ CUIPlugin.log(e);
+ // and ignore and return false
+ }
+ }
+ return false;
+ }
+
+ public String getIdString() {
+ return getDisplayString();
+ }
+ }
+
+ private static class LinkedModeExitPolicy implements LinkedModeUI.IExitPolicy {
+ public ExitFlags doExit(LinkedModeModel model, VerifyEvent event, int offset, int length) {
+ if (event.character == '=') {
+ return new ExitFlags(ILinkedModeListener.EXIT_ALL, true);
+ }
+ return null;
+ }
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/refactoring/CTextFileChange.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/refactoring/CTextFileChange.java
index e877878c23e..8df6f81029e 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/refactoring/CTextFileChange.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/refactoring/CTextFileChange.java
@@ -1,13 +1,14 @@
/*******************************************************************************
- * Copyright (c) 2006, 2007 Wind River Systems and others.
+ * Copyright (c) 2006, 2008 Wind River Systems 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
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
- * Markus Schorn (Wind River Systems) - Initial API and implementation
- * Anton Leherbauer (Wind River Systems)
+ * Markus Schorn (Wind River Systems) - Initial API and implementation
+ * Anton Leherbauer (Wind River Systems)
+ * Sergey Prigogin (Google)
*******************************************************************************/
package org.eclipse.cdt.ui.refactoring;
@@ -33,21 +34,28 @@ import org.eclipse.cdt.internal.ui.refactoring.UndoCTextFileChange;
* A TextFileChange that uses a working copy in order to generate CModel events.
*/
public class CTextFileChange extends TextFileChange {
- private ITranslationUnit fTranslationUnit = null;
+ // "c2" is the extension which the CContentViewerCreator is registered
+ // with the extension point "org.eclipse.compare.contentMergeViewers"
+ private static final String TEXT_TYPE = "c2"; //$NON-NLS-1$
+ private ITranslationUnit fTranslationUnit;
private IWorkingCopy fWorkingCopy;
- private int fAquireCount= 0;
+ private int fAquireCount;
public CTextFileChange(String name, IFile file) {
super(name, file);
ICElement element = CoreModel.getDefault().create(file);
- if(element instanceof ITranslationUnit) {
- fTranslationUnit = (ITranslationUnit)element;
- // "c2" is the extension which the CContentViewerCreator is registered
- // with the extension point "org.eclipse.compare.contentMergeViewers"
- setTextType("c2"); //$NON-NLS-1$
+ if (element instanceof ITranslationUnit) {
+ fTranslationUnit = (ITranslationUnit) element;
+ setTextType(TEXT_TYPE);
}
}
+ public CTextFileChange(String name, ITranslationUnit tu) {
+ super(name, getFile(tu));
+ fTranslationUnit = tu;
+ setTextType(TEXT_TYPE);
+ }
+
/*
* (non-Javadoc)
* @see org.eclipse.ltk.core.refactoring.TextFileChange#acquireDocument(org.eclipse.core.runtime.IProgressMonitor)
@@ -99,4 +107,8 @@ public class CTextFileChange extends TextFileChange {
protected Change createUndoChange(UndoEdit edit, ContentStamp stampToRestore) {
return new UndoCTextFileChange(getName(), getFile(), edit, stampToRestore, getSaveMode());
}
+
+ private static IFile getFile(ITranslationUnit tu) {
+ return (IFile) tu.getResource();
+ }
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/IQuickAssistProcessor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/IQuickAssistProcessor.java
new file mode 100644
index 00000000000..c9debe1f905
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/IQuickAssistProcessor.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2005 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+package org.eclipse.cdt.ui.text;
+
+import org.eclipse.core.runtime.CoreException;
+
+/**
+ * Interface to be implemented by contributors to the extension point
+ * <code>org.eclipse.cdt.ui.quickAssistProcessors</code>.
+ *
+ * @since 5.1
+ */
+public interface IQuickAssistProcessor {
+
+ /**
+ * Evaluates if quick assists can be created for the given context. This evaluation must be precise.
+ *
+ * @param context The invocation context
+ * @return Returns <code>true</code> if quick assists can be created
+ * @throws CoreException CoreException can be thrown if the operation fails
+ */
+ boolean hasAssists(IInvocationContext context) throws CoreException;
+
+ /**
+ * Collects quick assists for the given context.
+ *
+ * @param context Defines current translation unit, position and a shared AST
+ * @param locations The locations of problems at the invocation offset. The processor can decide to only
+ * add assists when there are no errors at the selection offset.
+ * @return Returns the assists applicable at the location or <code>null</code> if no proposals
+ * can be offered.
+ * @throws CoreException CoreException can be thrown if the operation fails
+ */
+ ICCompletionProposal[] getAssists(IInvocationContext context, IProblemLocation[] locations) throws CoreException;
+}
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CBuildConsole.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CBuildConsole.html
new file mode 100644
index 00000000000..60100b672b2
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CBuildConsole.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>C/C++ Build Console</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">C/C++ Build Console</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.core.CBuildConsole<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>[Enter the first release in which this extension point appears.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>[Enter description of this extension point.]<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.CBuildConsole">CBuildConsole</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.CBuildConsole">CBuildConsole</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST CBuildConsole</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">class&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - id of the build console, if not present then its the default console, (org.eclipse.cdt.ui provides the default console, so should never be specified). Builders can request a specific console via org.eclipse.cdt.core.CCorePlugin.getDefault().getConsole(String id);</li>
+<li><b>class</b> - Class which implents org.eclipse.cdt.core.resources.IConsole</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter extension point usage example here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CConfigurationDataProvider.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CConfigurationDataProvider.html
new file mode 100644
index 00000000000..248d8594b01
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CConfigurationDataProvider.html
@@ -0,0 +1,48 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>CConfigurationData provider</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">CConfigurationData provider</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.core.CConfigurationDataProvider<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>[Enter the first release in which this extension point appears.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>[Enter description of this extension point.]<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.provider">provider</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.provider">provider</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST provider</p>
+<p class="code SchemaDtdAttlist">natures&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">conflictingNatures&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>natures</b> - project nature ids associated with this provider. IDs are separated by the semicolon.
+Each time the Build Active configuration gets changed, the project natures set gets adjusted by removing natures associated with the previously active configuration and adding natures associated with the new actove configuration.
+This allows to adjust, e.g. the builders to be used with the project, etc.</li>
+<li><b>class</b> - class implementing the org.eclipse.cdt.core.settings.model.extension.CConfigurationDataProvider</li>
+<li><b>conflictingNatures</b> - project nature ids to be unset for this provider. IDs are separated by the semicolon.
+Each time the Build Active configuration gets changed, the project natures set gets adjusted by removing natures associated with the previously active configuration and natures conflicting for the new active configuration and adding natures associated with the new active configuration.
+
+This allows to adjust, e.g. the builders to be used with the project, etc.</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter extension point usage example here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CIndex.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CIndex.html
new file mode 100644
index 00000000000..7261240097f
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CIndex.html
@@ -0,0 +1,143 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>CIndex</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">CIndex</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.core.CIndex<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>4.0
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>This extension point groups extensions to the index functionality in CDT<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.ExportProjectProvider">ExportProjectProvider</a> | <a href="#e.ReadOnlyPDOMProvider">ReadOnlyPDOMProvider</a>)+&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.ExportProjectProvider">ExportProjectProvider</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST ExportProjectProvider</p>
+<p class="code SchemaDtdAttlist">class&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<div class="ConfigMarkupElementDesc">
+<h2>ExportProjectProvider</h2>
+<p>
+This subelement of CIndex allows contribution of alternate IExportProjectProvider implementations. These can then be referenced by fully qualified class name in the command line tool (see option -pprovider).
+<p>
+<b>Invoking the application as a headless application</b>
+
+This example ant file shows how to invoke the tool headlessly, the same approach would work from a shell or batch file.
+
+<pre class="Example"><span class="code SchemaTag">
+&lt;project name=</span><span class="code SchemaCstring">&quot;Generate PDOM&quot;</span><span class="code SchemaTag"> default=</span><span class="code SchemaCstring">&quot;generate&quot;</span><span class="code SchemaTag">&gt;
+ &lt;target name=</span><span class="code SchemaCstring">&quot;generate&quot;</span><span class="code SchemaTag">&gt;
+ &lt;!-- This script shows how to invoke the default project provider (ExternalExportProjectProvider) --&gt;
+ &lt;property name=</span><span class="code SchemaCstring">&quot;pprovider&quot;</span><span class="code SchemaTag"> value=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.core.index.export.ExternalExportProjectProvider&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;property name=</span><span class="code SchemaCstring">&quot;target&quot;</span><span class="code SchemaTag"> value=</span><span class="code SchemaCstring">&quot;C:\ExportedPDOMs\acmeSDK_2_5.pdom&quot;</span><span class="code SchemaTag">/&gt; &lt;!-- Where the output pdom is to go --&gt;
+ &lt;property name=</span><span class="code SchemaCstring">&quot;source&quot;</span><span class="code SchemaTag"> value=</span><span class="code SchemaCstring">&quot;E:\AcmeSDK\v2.5\inc&quot;</span><span class="code SchemaTag">/&gt; &lt;!-- e.g. the directory to source content from --&gt;
+ &lt;property name=</span><span class="code SchemaCstring">&quot;id&quot;</span><span class="code SchemaTag"> value=</span><span class="code SchemaCstring">&quot;com.acme.mysdk.v2.5&quot;</span><span class="code SchemaTag">/&gt; &lt;!-- the id to store in the generate pdom --&gt;
+
+ &lt;property name=</span><span class="code SchemaCstring">&quot;eclipse.home&quot;</span><span class="code SchemaTag"> value=</span><span class="code SchemaCstring">&quot;C:\eclipse&quot;</span><span class="code SchemaTag">/&gt; &lt;!-- e.g. The eclipse installation to use. This installation must contain CDT 4.0+ plugins --&gt;
+
+ &lt;java classname=</span><span class="code SchemaCstring">&quot;org.eclipse.equinox.launcher.Main&quot;</span><span class="code SchemaTag">&gt;
+ &lt;classpath&gt;
+ &lt;fileset dir=</span><span class="code SchemaCstring">&quot;${eclipse.home}/plugins&quot;</span><span class="code SchemaTag">&gt;
+ &lt;include name=</span><span class="code SchemaCstring">&quot;*equinox.launcher*.jar&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;/fileset&gt;
+ &lt;/classpath&gt;
+ &lt;arg value=</span><span class="code SchemaCstring">&quot;-nosplash&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;arg value=</span><span class="code SchemaCstring">&quot;-exitdata&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;arg value=</span><span class="code SchemaCstring">&quot;-application&quot;</span><span class="code SchemaTag">/&gt;&lt;arg value=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.core.GeneratePDOM&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;arg value=</span><span class="code SchemaCstring">&quot;-pprovider&quot;</span><span class="code SchemaTag">/&gt;&lt;arg value=</span><span class="code SchemaCstring">&quot;${pprovider}&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;arg value=</span><span class="code SchemaCstring">&quot;-source&quot;</span><span class="code SchemaTag">/&gt;&lt;arg value=</span><span class="code SchemaCstring">&quot;${source}&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;arg value=</span><span class="code SchemaCstring">&quot;-target&quot;</span><span class="code SchemaTag">/&gt;&lt;arg value=</span><span class="code SchemaCstring">&quot;${target}&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;arg value=</span><span class="code SchemaCstring">&quot;-id&quot;</span><span class="code SchemaTag">/&gt;&lt;arg value=</span><span class="code SchemaCstring">&quot;${id}&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;/java&gt;
+ &lt;/target&gt;
+&lt;/project&gt;
+</span></pre>
+<p>
+<b>Invoking the tool via an Eclipse Launch Configuration</b>
+<p>
+Specify "org.eclipse.cdt.core.GeneratePDOM" as the application to launch
+<p>
+In the Argument tabs provide (for example)
+ -target C:\ExportedPDOMs\acmeSDK_2_5.pdom -source E:\AcmeSDK\v2.5\inc -include E:\this.h -id com.acme.mysdk.v2.5
+<p></div>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>class</b> - the fully qualified name of the IExportProjectProvider implementation to register</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.ReadOnlyPDOMProvider">ReadOnlyPDOMProvider</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST ReadOnlyPDOMProvider</p>
+<p class="code SchemaDtdAttlist">class&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<div class="ConfigMarkupElementDesc">
+<h2>ReadOnlyPDOMProvider</h2>
+<p>
+This subelement of CIndex allows ISVs to contribute read-only prebuilt PDOM files to the CDT Index. The only information needed is the fully qualified class name of an implementatin of org.eclipse.cdt.core.index.IOfflinePDOMProvider. This implementation will be consulted during the eclipse session for the appropriate read-only content to make add to the logical index. The logical index is accessible via the org.eclipse.core.index.IIndex API.
+
+ An example of contributing a prebuilt read-only pdom:
+<pre class="Example"><span class="code SchemaTag">
+&lt;CIndex&gt;
+ &lt;ReadOnlyPDOMProvider class=</span><span class="code SchemaCstring">&quot;com.acme.ide.index.AcmeSDKProvider&quot;</span><span class="code SchemaTag">/&gt;
+&lt;/CIndex&gt;
+</span></pre>
+
+and the corresponding implementation
+
+<pre class="Example"><span class="code SchemaTag">
+package com.acme.ide.index.sdk;
+
+import org.eclipse.core.index.provider.IReadOnlyPDOMProvider;
+import org.eclipse.core.index.provider.IPDOMDescriptor;
+import org.eclipse.core.index.IIndexLocationConverter;
+import org.eclipse.core.index.URIRelativeLocationConverter;
+
+public class AcmeSDKProvider implements IReadOnlyPDOMProvider {
+ public boolean providesFor(ICProject project) {
+ // e.g. decide by looking for acme project nature
+ return AcmeNature.isAcmeProject(project);
+ }
+
+ public IPDOMDescriptor[] getDescriptors(ICConfigurationDescription config) {
+ final IPath sdkBase = AcmeSDKAPI.getSDKBase(config);
+ return new IPDOMDescriptor[] { new IPDOMDescriptor() {
+ public IIndexLocationConverter getIndexLocationConverter() {
+ return new URIRelativeLocationConverter(URIUtil.toURI(sdkBase));
+ }
+ public IPath getLocation() {
+ IPath path = sdkBase.append(AcmeSDKAPI.getPrebuiltPDOMFilename(config));
+ return path;
+ }
+ }};
+ }
+}
+</span></pre></div>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>class</b> - the fully qualified name of the IReadOnlyPDOMProvider implementation to register</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>See subelement documentation
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+Copyright (c) 2007 Symbian Software Systems 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
+http://www.eclipse.org/legal/epl-v10.html
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CIndexer.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CIndexer.html
new file mode 100644
index 00000000000..cd5a7903f4c
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CIndexer.html
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>CDT Indexer</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">CDT Indexer</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.core.CDTIndexer<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>CDT 3.0
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>This extension point is used to contribute a new Indexer to the CDT. This indexer can choose to receive event notification from the index manager.<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.run">run</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.run">run</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST run</p>
+<p class="code SchemaDtdAttlist">class&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>class</b> - </li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter extension point usage example here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CProject.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CProject.html
new file mode 100644
index 00000000000..ae38f95cf6b
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CProject.html
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>C/C++ Project Description</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">C/C++ Project Description</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.core.CProject<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>[Enter description of this extension point]<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.cproject">cproject</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.cproject">cproject</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST cproject</p>
+<p class="code SchemaDtdAttlist">class&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">natureID&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">platform&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>class</b> - Class which implements org.eclipse.cdt.core.ICOwner</li>
+<li><b>natureID</b> - This is a nature ID which the owner has. This is used to restore a ICDescriptor which has been deleted. If this is not provided the descriptor will be restore with no owner. A project with multiple natures will use the first matching nature searched in the reverse order in the Project Description.</li>
+<li><b>platform</b> - </li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter extension point usage example here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CodeFormatter.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CodeFormatter.html
new file mode 100644
index 00000000000..52f445c53e7
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CodeFormatter.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Code Formatter</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Code Formatter</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.core.CodeFormatter<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>[Enter the first release in which this extension point appears.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>[Enter description of this extension point.]<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.codeFormatter">codeFormatter</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.codeFormatter">codeFormatter</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST codeFormatter</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">class&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - A unique name that will be used to reference this code formatter</li>
+<li><b>name</b> - A translatable name that will be used for presenting this formatter in the UI.</li>
+<li><b>class</b> - a fully qualified name of the Java class that implements <samp>org.eclipse.cdt.core.formatter.CodeFormatter</samp> abstract class.</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter extension point usage example here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_PathEntryContainerInitializer.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_PathEntryContainerInitializer.html
new file mode 100644
index 00000000000..08d6ed5dde7
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_PathEntryContainerInitializer.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Path Entry Container Initializers</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Path Entry Container Initializers</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.core.pathEntryContainerInitializer<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>[Enter the first release in which this extension point appears.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>[Enter description of this extension point.]<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.pathEntryContainerInitializer">pathEntryContainerInitializer</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.pathEntryContainerInitializer">pathEntryContainerInitializer</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST pathEntryContainerInitializer</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">class&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - </li>
+<li><b>class</b> - </li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter extension point usage example here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_ProcessList.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_ProcessList.html
new file mode 100644
index 00000000000..3a7d34850ed
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_ProcessList.html
@@ -0,0 +1,39 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Process List Query Exentsion</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Process List Query Exentsion</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.core.ProcessList<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>[Enter description of this extension point]<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.processList">processList</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.processList">processList</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST processList</p>
+<p class="code SchemaDtdAttlist">class&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">platform&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>class</b> - </li>
+<li><b>platform</b> - </li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter extension point usage example here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_externalSettingsProvider.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_externalSettingsProvider.html
new file mode 100644
index 00000000000..34efa67e81e
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_externalSettingsProvider.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>External Settings provider</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">External Settings provider</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.core.externalSettingsProvider<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>4.0
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>The external settings provider would be used to specify provider of include/macro/libraryan settings to be used/applied for the build configuration associated with this provider.
+Any number of setting providers can be associated with the build configurations.
+This functionality might be used, e.g. by the External SDKs to allow automatic andjustment of the project settings for the projects using thes SDKs, e.g. adding include paths, symbols, etc.<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.provider">provider</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.provider">provider</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST provider</p>
+<p class="code SchemaDtdAttlist">class&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>class</b> - Class implementing org.eclipse.cdt.core.settings.model.extension.CExternalSettingProvider</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter extension point usage example here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_language.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_language.html
new file mode 100644
index 00000000000..87f9c7ed650
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_language.html
@@ -0,0 +1,78 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>CDT Language</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">CDT Language</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.core.language<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>CDT 3.1
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>This extension point is used to declare a language or language variant. Languages define how the C model of a file is created (e.g. to populate the outline view). It also provides hooks to override the low level parsing of translation units into an abstract syntax tree. Practically this is limited to C/C++ language variants only. Completely different languages cannot be modelled reasonably using this extension point.<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> ((<a href="#e.language">language</a> | <a href="#e.pdomLinkageFactory">pdomLinkageFactory</a>))+&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.language">language</a> (<a href="#e.contentType">contentType</a>)*&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST language</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">class&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - A unique identifier of the language. Note that the identifier is prefixed with the ID of the contributing plug-in.</li>
+<li><b>name</b> - A human readable and translatable name of the language.</li>
+<li><b>class</b> - A class extending <code>org.eclipse.core.model.AbstractLanguage</code>.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.contentType">contentType</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST contentType</p>
+<p class="code SchemaDtdAttlist">id&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - </li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.pdomLinkageFactory">pdomLinkageFactory</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST pdomLinkageFactory</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">class&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - </li>
+<li><b>class</b> - The factory that creates linkage objects.</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6><pre class="Example"><span class="code SchemaTag">
+&lt;language
+ class=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.core.dom.ast.gnu.c.GCCLanguage&quot;</span><span class="code SchemaTag">
+ id=</span><span class="code SchemaCstring">&quot;gcc&quot;</span><span class="code SchemaTag">
+ name=</span><span class="code SchemaCstring">&quot;GNU C&quot;</span><span class="code SchemaTag">&gt;
+ &lt;contentType id=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.core.cSource&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;contentType id=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.core.cHeader&quot;</span><span class="code SchemaTag">/&gt;
+&lt;/language&gt;
+</span></pre>
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>CDT comes with following built-in languages:
+<code>org.eclipse.cdt.core.language.gcc</code> (GNU C) and
+<code>org.eclipse.cdt.core.language.g++</code> (GNU C++).
+<p>The respective language implementations are
+<code>org.eclipse.cdt.core.dom.ast.gnu.c.GCCLanguage</code> and
+<code>org.eclipse.cdt.core.dom.ast.gnu.cpp.GPPLanguage</code>
+</p>
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+Copyright (c) 2005, 2007 QNX Software Systems 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
+http://www.eclipse.org/legal/epl-v10.html
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_projectConverter.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_projectConverter.html
new file mode 100644
index 00000000000..c3eff9dc7f6
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_projectConverter.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>project converter</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">project converter</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.core.projectConverter<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>[Enter the first release in which this extension point appears.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>[Enter description of this extension point.]<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.converter">converter</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.converter">converter</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST converter</p>
+<p class="code SchemaDtdAttlist">owners&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">natures&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">class&nbsp;&nbsp;&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>owners</b> - </li>
+<li><b>natures</b> - </li>
+<li><b>class</b> - </li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter extension point usage example here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templateAssociations.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templateAssociations.html
new file mode 100644
index 00000000000..0e730c4a910
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templateAssociations.html
@@ -0,0 +1,73 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Template Associations</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Template Associations</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.core.templateAssociations<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>This extension point was added in CDT 4.0
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>This extension-point allows developers to specify toolchains that should be enabled for selection for use with a pre-existing template. This solves the problem over how ISV's can have templates defined and shipped with CDT support their own toolchains, without having to modify CDT itself.<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.template">template</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Each extension consists of a sequence of template elements, each of which define child elements for the new toolchains that should be enabled for selection during new project creation.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - The unique identifier for this extension</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.toolChain">toolChain</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST toolChain</p>
+<p class="code SchemaDtdAttlist">id&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element is used to reference an existing toolchain by its unique identifier.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - The unique identifier of a toolchain contributed to the org.eclipse.cdt.managedbuilder.core.buildDefinitions extension point.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.template">template</a> (<a href="#e.toolChain">toolChain</a>*)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST template</p>
+<p class="code SchemaDtdAttlist">id&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element references an existing template contribution's unique identifier in order that toolchains contributed separately to the template can be made selectable on project creation.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - The unique identifier of the template-contribution (the id in plugin.xml rather than the template.xml) that should have the specified additional toolchains enabled for selection during new project creation.</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>If you developed toolchain's with ids "com.foobar.toolchain1.base" and "com.foobar.toolchain2.base", which you wanted enabled for the empty project type built into the cdt core, you could use the following to achieve this:
+
+<pre class="Example"><span class="code SchemaTag">
+&lt;extension point=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.core.templateAssociations&quot;</span><span class="code SchemaTag">&gt;
+ &lt;template id=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.build.core.templates.EmptyProject&quot;</span><span class="code SchemaTag">&gt;
+ &lt;toolChain id=</span><span class="code SchemaCstring">&quot;com.foobar.toolchain1.base&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;toolChain id=</span><span class="code SchemaCstring">&quot;com.foobar.toolchain2.base&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;/template&gt;
+&lt;/extension&gt;
+</span></pre>
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+Copyright (c) 2007 Symbian Software Limited 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
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+Symbian - Initial API and implementation
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templateProcessTypes.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templateProcessTypes.html
new file mode 100644
index 00000000000..aab51ff9bf6
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templateProcessTypes.html
@@ -0,0 +1,173 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Processes Extension point</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Processes Extension point</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.core.templateProcessTypes<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>This extension point was added in CDT 4.0
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>This extension point is to be extended to define new processes to be used in template descriptors by template writers.<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.processType">processType</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+One or more elements of processType should be added as children to this element.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.processType">processType</a> ((<a href="#e.simple">simple</a> | <a href="#e.simpleArray">simpleArray</a> | <a href="#e.complex">complex</a> | <a href="#e.complexArray">complexArray</a>)*)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST processType</p>
+<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">processRunner&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element defines a single process. A process is analogous to a procedure with a set of parameters. In similar terms, one can say that this element defines the prototype of this process procedure. One needs to specify all the parameters expected by this process. In the eventual template xml, one needs to specify arguments for the process matching the types and order of these parameters.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>name</b> - The value of this attribute is used (fully qualified with the namespace in which the extension is declared), to uniquely identify this processType. e.g. a value such as AddFiles will mean that the usage in the template.xml should be something like &lt;process type="&lt;plugin_id&gt;.AddFiles&gt;</li>
+<li><b>processRunner</b> - A class that extends org.eclipse.cdt.core.templateengine.process.ProcessRunner abstract class and implements all its abstract methods. This is the code that actually processes.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.simple">simple</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST simple</p>
+<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">external&nbsp;(true | false) <p class="code SchemaDtdAttlist">nullable&nbsp;(true | false) &gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+A simple string parameter. In the eventual template xml, one needs to specify the same name as the value of the name attribute of a simple argument alongwith the corresponding value attribute.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>name</b> - Name of the parameter. This should be used exactly as is in the name attribute of a simple argument in the template xml.</li>
+<li><b>external</b> - This is an optional attribute. If specified with a true value, it implies that the template xml need not mention this argument for this param. The attribute does not have any meaning in the context of a child of a complex param or of a child of a complexArray param.
+
+Another thing to note is that arguments corresponding to external=true type params, if not mentioned in the template xml, should be supplied directly through the ValueStore with the key as the param's name.
+
+If not mentioned, this attribute's is treated as false.</li>
+<li><b>nullable</b> - This is an optional attribute. If specified with a true value, it implies that the template xml need not mention the value attribute of the argument for this param. The attribute does not have any meaning in the context of a child of a complex param or of a child of a complexArray param.
+
+If not mentioned, this attribute's is treated as false.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.simpleArray">simpleArray</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST simpleArray</p>
+<p class="code SchemaDtdAttlist">name&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+A simple string array parameter. In the eventual template xml, one needs to specify the same name as the value of the name attribute of a simple-array argument alongwith the corresponding element children, one child per array element with the corresponding value attribute.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>name</b> - Name of the parameter. This should be used exactly as is in the name attribute of a simple-array argument in the template xml.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.complex">complex</a> ((<a href="#e.simple">simple</a> | <a href="#e.simpleArray">simpleArray</a> | <a href="#e.complex">complex</a> | <a href="#e.complexArray">complexArray</a>))+&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST complex</p>
+<p class="code SchemaDtdAttlist">name&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+A complex parameter that groups together any number of simple, simpleArray, complex, complexArray parameters. This is equivalent of an object parameter. In the eventual template xml, one needs to specify the same name as the value of the name attribute of a simple argument alongwith the corresponding children, each child matching the type of the corresponding child of this element.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>name</b> - Name of the parameter. This should be used exactly as is in the name attribute of a complex argument in the template xml.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.complexArray">complexArray</a> (<a href="#e.baseType">baseType</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST complexArray</p>
+<p class="code SchemaDtdAttlist">name&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+A complex array parameter. Each element of this parameter is of the same base complex type as specified by the baseType child of this element. In the eventual template xml, one needs to specify the same name as the value of the name attribute of a complex-array argument alongwith the corresponding element children, one child per array element with the corresponding complex type arguments (based on baseType definition).</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>name</b> - Name of the parameter. This should be used exactly as is in the name attribute of a complex-array argument in the template xml.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.baseType">baseType</a> ((<a href="#e.simple">simple</a> | <a href="#e.simpleArray">simpleArray</a> | <a href="#e.complex">complex</a> | <a href="#e.complexArray">complexArray</a>))+&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This is not a direct parameter of a process. This simply acts as a complex grouping of parameters to be used as the base type of complexArray parameters.</p>
+<br><br>
+<h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>The following is an example of the extension point usage:
+<p>
+<pre class="Example"><span class="code SchemaTag">
+ &lt;extension
+ id=</span><span class="code SchemaCstring">&quot;processExample&quot;</span><span class="code SchemaTag">
+ name=</span><span class="code SchemaCstring">&quot;Process Example&quot;</span><span class="code SchemaTag">
+ point=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.core.templateengine.processTypes&quot;</span><span class="code SchemaTag">&gt;
+
+ &lt;processType
+ name=</span><span class="code SchemaCstring">&quot;NewManagedProject&quot;</span><span class="code SchemaTag">
+ processRunner=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.core.templateengine.process.processes.NewManagedProject&quot;</span><span class="code SchemaTag">&gt;
+ &lt;simple name=</span><span class="code SchemaCstring">&quot;name&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;simple
+ external=</span><span class="code SchemaCstring">&quot;true&quot;</span><span class="code SchemaTag">
+ name=</span><span class="code SchemaCstring">&quot;projectType&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;simple
+ external=</span><span class="code SchemaCstring">&quot;true&quot;</span><span class="code SchemaTag">
+ name=</span><span class="code SchemaCstring">&quot;location&quot;</span><span class="code SchemaTag">
+ nullable=</span><span class="code SchemaCstring">&quot;true&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;simple name=</span><span class="code SchemaCstring">&quot;targetType&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;/processType&gt;
+
+ &lt;processType
+ name=</span><span class="code SchemaCstring">&quot;SetMBSBooleanOptionValue&quot;</span><span class="code SchemaTag">
+ processRunner=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.core.templateengine.process.processes.SetMBSBooleanOptionValue&quot;</span><span class="code SchemaTag">&gt;
+ &lt;simple name=</span><span class="code SchemaCstring">&quot;projectName&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;complexArray name=</span><span class="code SchemaCstring">&quot;resourcePaths&quot;</span><span class="code SchemaTag">&gt;
+ &lt;baseType&gt;
+ &lt;simple name=</span><span class="code SchemaCstring">&quot;id&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;simple name=</span><span class="code SchemaCstring">&quot;value&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;simple name=</span><span class="code SchemaCstring">&quot;path&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;/baseType&gt;
+ &lt;/complexArray&gt;
+ &lt;/processType&gt;
+
+ &lt;processType
+ name=</span><span class="code SchemaCstring">&quot;AddFile&quot;</span><span class="code SchemaTag">
+ processRunner=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.core.templateengine.process.processes.AddFile&quot;</span><span class="code SchemaTag">&gt;
+ &lt;simple name=</span><span class="code SchemaCstring">&quot;projectName&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;complex name=</span><span class="code SchemaCstring">&quot;file&quot;</span><span class="code SchemaTag">&gt;
+ &lt;simple name=</span><span class="code SchemaCstring">&quot;source&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;simple name=</span><span class="code SchemaCstring">&quot;target&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;simple name=</span><span class="code SchemaCstring">&quot;replaceable&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;/complex&gt;
+ &lt;/processType&gt;
+
+ &lt;processType
+ name=</span><span class="code SchemaCstring">&quot;AppendToMBSStringListOptionValues&quot;</span><span class="code SchemaTag">
+ processRunner=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.core.templateengine.process.processes.AppendToMBSStringListOptionValues&quot;</span><span class="code SchemaTag">&gt;
+ &lt;simple name=</span><span class="code SchemaCstring">&quot;projectName&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;complexArray name=</span><span class="code SchemaCstring">&quot;resourcePaths&quot;</span><span class="code SchemaTag">&gt;
+ &lt;baseType&gt;
+ &lt;simple name=</span><span class="code SchemaCstring">&quot;id&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;simpleArray name=</span><span class="code SchemaCstring">&quot;values&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;simple name=</span><span class="code SchemaCstring">&quot;path&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;/baseType&gt;
+ &lt;/complexArray&gt;
+ &lt;/processType&gt;
+
+ &lt;/extension&gt;
+</span></pre>
+
+For more details on how to define your own templates, please check examples provided under
+<samp>org.eclipse.cdt.gnu.templates</samp>
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>An implementation of this extension point is supplied in <samp>org.eclipse.cdt.core.templateengine</samp>
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+Copyright (c) 2007 Symbian Software Limited 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
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+Bala Torati (Symbian) - Initial API and implementation
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templates.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templates.html
new file mode 100644
index 00000000000..ae02c7c66f2
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templates.html
@@ -0,0 +1,93 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Template Extension point</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Template Extension point</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.core.templates<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>This extension point was added in CDT 4.0
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>This templates extension point facilitates the users to contribute their Template XMLs to the Template Engine plug-in.<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.template">template</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Extension point added to Template Engine plugin. Any plugin, which intends to contribute XML templates to the Template Engine must extend this extension point, and add the template element.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - Id for the extension in the extender plugin.</li>
+<li><b>name</b> - Optional name attribute.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.template">template</a> (<a href="#e.toolChain">toolChain</a>*)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST template</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">location&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">projectType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">isCategory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) <p class="code SchemaDtdAttlist">filterPattern&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">pagesAfterTemplateSelectionProvider&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+By adding the templates extension point the users can contribute their Template XMLs to the Template Engine plugin.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - A unique identifier for this template contribution. This does not need to be the same as the id of the template (as defined in template.xml) it is contributing. This allows contributing the same template.xml more than once (for example for multiple project types, or with alternate page sequences).</li>
+<li><b>location</b> - The path of template.xml (relative to the base of the containing plug-in). For example "templates/TemplateOne/template.xml". This attribute is mandatory.</li>
+<li><b>projectType</b> - This attribute is a project type id referring to the cdt project type that the template will be associated with. Project types are contributed to the org.eclipse.cdt.managedbuilder.core.buildDefinitions extension-point.
+This attribute is mandatory. CDT pre-defines the following values of the build artifact type property:
+<ul>
+<li>"org.eclipse.cdt.build.core.buildArtefactType.exe" - to represent executable
+<li>"org.eclipse.cdt.build.core.buildArtefactType.staticLib" - to represent static library
+<li>"org.eclipse.cdt.build.core.buildArtefactType.sharedLib" - to represent shared library
+<li>ISVs can define their own custom build artifact values by contributing to the org.eclipse.cdt.managedbuilder.core.buildProperties extension point.
+</ul></li>
+<li><b>isCategory</b> - If true this template contribution should appear as a folder. Defaults to false.</li>
+<li><b>filterPattern</b> - filterPattern is a java.util.regex.Pattern format string which is used to match against build configuration ids. This is an optional attribute, if absent will all configurations will match.</li>
+<li><b>pagesAfterTemplateSelectionProvider</b> - A class that implements org.eclipse.cdt.templateengine.IPagesAfterTemplateSelectionProvider interface to create pages that will be appended to the pages returned from TemplatesChoiceWizard.getPagesAfterTemplateSelection().</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.toolChain">toolChain</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST toolChain</p>
+<p class="code SchemaDtdAttlist">id&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element is used to reference an existing toolchain by its unique identifier.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - The unique identifier of a toolchain contributed to the org.eclipse.cdt.managedbuilder.core.buildDefinitions extension point.</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>The following is an example of the extension point usage:
+<p>
+<pre class="Example"><span class="code SchemaTag">
+ &lt;extension point=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.core.templates&quot;</span><span class="code SchemaTag">&gt;
+ &lt;template
+ id=</span><span class="code SchemaCstring">&quot;org.foobar.templates.MyExampleTemplate&quot;</span><span class="code SchemaTag">
+ location=</span><span class="code SchemaCstring">&quot;templates/MyExampleTemplate/template.xml&quot;</span><span class="code SchemaTag">
+ projectType=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.build.core.buildArtefactType.exe&quot;</span><span class="code SchemaTag">
+ filterPattern=</span><span class="code SchemaCstring">&quot;.*&quot;</span><span class="code SchemaTag">&gt;
+ &lt;/template&gt;
+ &lt;/extension&gt;
+</span></pre>
+
+For more details on how to define your own templates, please check examples provided under <samp>org.eclipse.cdt.ui.templateengine</samp>
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>An implementation of this extension point is supplied in <samp>org.eclipse.cdt.templateengine</samp>
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+Copyright (c) 2007 Symbian Software Limited 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
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+Symbian - Initial API and implementation
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_debug_core_BreakpointActionType.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_debug_core_BreakpointActionType.html
new file mode 100644
index 00000000000..2f97cdba9e3
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_debug_core_BreakpointActionType.html
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>BreakpointActionType</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">BreakpointActionType</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.debug.core.BreakpointActionType<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>[Enter the first release in which this extension point appears.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>Extension to provide additional actions to execute when a breakpoint is hit.<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.actionType">actionType</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.actionType">actionType</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST actionType</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">class&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - </li>
+<li><b>name</b> - </li>
+<li><b>class</b> - </li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter extension point usage example here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+Copyright (c) 2007 Nokia 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
+http://www.eclipse.org/legal/epl-v10.html
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_debug_core_BreakpointExtension.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_debug_core_BreakpointExtension.html
new file mode 100644
index 00000000000..2b677768dee
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_debug_core_BreakpointExtension.html
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>BreakpointExtension</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">BreakpointExtension</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.debug.core.BreakpointExtension<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>This extension point defines a mechanism for defining a debug model specific extension to C breakpoints.<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.breakpointExtension">breakpointExtension</a>*)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>point</b> - a fully qualified identifier of the target extension point</li>
+<li><b>id</b> - an optional identifier of the extension instance</li>
+<li><b>name</b> - an optional name of the extension instance</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.breakpointExtension">breakpointExtension</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST breakpointExtension</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">markerType&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">debugModelId&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - specifies a unique identifier for this breakpoint extension type.</li>
+<li><b>markerType</b> - specifies the fully qualified identifier (id) of the corresponding marker definition for breakpoints that this extension applies to</li>
+<li><b>class</b> - specifies the fully qualified name of the Java class that implements <code>ICBreakpointExtension</code>.</li>
+<li><b>debugModelId</b> - specifies the fully qualified identifer (id) of the debug model that this extension applies to</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>The following is an example of a breakpoint extension extension point.
+
+<p>
+<pre class="Example"><span class="code SchemaTag">
+ &lt;extension point=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.debug.BreakpointExtension&quot;</span><span class="code SchemaTag">&gt;
+ &lt;breakpointExtension
+ id=</span><span class="code SchemaCstring">&quot;com.example.ExampleBreakpointExtension&quot;</span><span class="code SchemaTag">
+ markerType=</span><span class="code SchemaCstring">&quot;com.example.ExampleBreakpointMarker&quot;</span><span class="code SchemaTag">
+ debugModeId=</span><span class="code SchemaCstring">&quot;com.example.debug&quot;</span><span class="code SchemaTag">
+ class=</span><span class="code SchemaCstring">&quot;com.example.BreakpointExtensionImpl&quot;</span><span class="code SchemaTag">&gt;
+ &lt;/breakpointExtension&gt;
+ &lt;/extension&gt;
+</span></pre>
+</p>
+
+In the example above, the specified type of breakpoint extension is implemented by the class "com.example.BreakpointExtensionImpl".
+This extension is going to apply to breakpoints with markers extending "com.example.ExampleBreakpointMarker", and to debug model with ID of "com.example.debug".
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+Copyright (c) 2007 Wind River Systems and others.<br>
+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
+<a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_debug_core_CDebugger.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_debug_core_CDebugger.html
new file mode 100644
index 00000000000..642e00400c1
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_debug_core_CDebugger.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>CDebugger</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">CDebugger</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.debug.core.CDebugger<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>[Enter description of this extension point]<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.debugger">debugger</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>point</b> - a fully qualified identifier of the target extension point</li>
+<li><b>id</b> - an optional identifier of the extension instance</li>
+<li><b>name</b> - an optional name of the extension instance</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.debugger">debugger</a> (<a href="#e.buildIdPattern">buildIdPattern</a>*)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST debugger</p>
+<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">modes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">platform&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">cpu&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">coreFileFilter&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>name</b> - specifies the debugger's name</li>
+<li><b>modes</b> - specifies the comma separated list of debugging modes (run,core,attach).</li>
+<li><b>class</b> - specifies a fully qualified name of a Java class that implements &lt;code&gt;ICDIDebugger2&lt;/code&gt;</li>
+<li><b>id</b> - specifies a unique identifier for this debugger.</li>
+<li><b>platform</b> - specifies a comma separated list of supported platforms.</li>
+<li><b>cpu</b> - specifies a comma separated list of supported architectures.</li>
+<li><b>coreFileFilter</b> - </li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.buildIdPattern">buildIdPattern</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST buildIdPattern</p>
+<p class="code SchemaDtdAttlist">pattern&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>pattern</b> - </li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter extension point usage example here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+Copyright (c) 2004, 2005 QNX Software Systems 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
+http://www.eclipse.org/legal/epl-v10.html
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_core_MakeTargetBuilder.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_core_MakeTargetBuilder.html
new file mode 100644
index 00000000000..bbe22c8d2a0
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_core_MakeTargetBuilder.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Make Target Builder</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Make Target Builder</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.make.core.MakeTargetBuilder<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>[Enter the first release in which this extension point appears.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>This extension point is used to identify builders that support IMakeBuidlerInfo an arguments.<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.builder">builder</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.builder">builder</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST builder</p>
+<p class="code SchemaDtdAttlist">builderID&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>builderID</b> - Eclipse builder ID of the builder that supports target builds. (Must support IMakeInfo as argument).</li>
+<li><b>id</b> - id used to identify this target builder</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter extension point usage example here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_core_ScannerConfigurationDiscoveryProfile.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_core_ScannerConfigurationDiscoveryProfile.html
new file mode 100644
index 00000000000..773b87aa85c
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_core_ScannerConfigurationDiscoveryProfile.html
@@ -0,0 +1,101 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Scanner Configuration Discovery Profile</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Scanner Configuration Discovery Profile</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.make.core.ScannerConfigurationDiscoveryProfile<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>3.0
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>A unified definition of a scanner configuration profile. Usually consists of <p>
+- A make build output parser <p>
+- A scanner info collector <p>
+- An external scanner info generator <p>
+ - An external scanner info generator output parser <p><p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.scannerInfoCollector">scannerInfoCollector</a> , <a href="#e.buildOutputProvider">buildOutputProvider</a>? , <a href="#e.scannerInfoProvider">scannerInfoProvider</a>*)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Definition of a profile:
+- A scanner info collector
+- A make build output parser
+- A number of external scanner info providers</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - Profile id.</li>
+<li><b>name</b> - The name of the profile will be presented to the user.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.scannerInfoCollector">scannerInfoCollector</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST scannerInfoCollector</p>
+<p class="code SchemaDtdAttlist">class&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">scope&nbsp;(project|file) &gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>class</b> - Java class that implements IScannerInfoCollector interface.</li>
+<li><b>scope</b> - </li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.scannerInfoConsoleParser">scannerInfoConsoleParser</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST scannerInfoConsoleParser</p>
+<p class="code SchemaDtdAttlist">class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">compilerCommands&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Make build output or external scanner info provider output parser.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>class</b> - Java class that implements IScannerInfoConsoleParser interface.</li>
+<li><b>compilerCommands</b> - Comma separated list of compiler commands to use for detecting lines with preprocessor options.
+
+Example: "gcc, g++, cc, c++"</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.buildOutputProvider">buildOutputProvider</a> (<a href="#e.open">open</a>? , <a href="#e.scannerInfoConsoleParser">scannerInfoConsoleParser</a>)&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Build output provider is make build or/and build output file.</p>
+<br><br>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.scannerInfoProvider">scannerInfoProvider</a> ((<a href="#e.run">run</a> | <a href="#e.open">open</a>) , <a href="#e.scannerInfoConsoleParser">scannerInfoConsoleParser</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST scannerInfoProvider</p>
+<p class="code SchemaDtdAttlist">providerId&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Either a command with arguments whose output will provide scanner information or a file that contains the scanner info.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>providerId</b> - An id of the specific provider.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.run">run</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST run</p>
+<p class="code SchemaDtdAttlist">class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">command&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">arguments&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>class</b> - A fully qualified name of the Java class that implements <samp>org.eclipse.cdt.make.core.scannerconfig.IExternalScannerInfoProvider2</samp> interface.
+If not specified then <samp>org.eclipse.cdt.make.internal.core.scannerconfig.DefaultExternalScannerInfoProvider</samp> is the default one used.</li>
+<li><b>command</b> - A command to run. Example: <samp>gcc</samp>.</li>
+<li><b>arguments</b> - Arguments for the command. Example: <samp>-E -P -v -dD</samp>.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.open">open</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST open</p>
+<p class="code SchemaDtdAttlist">class&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">file&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>class</b> - A fully qualified name of the Java class that implements <samp>org.eclipse.cdt.make.core.scannerconfig.IExternalScannerInfoReader</samp> interface.
+If not specified then <samp>org.eclipse.cdt.make.internal.core.scannerconfig.DefaultExternalScannerInfoReader</samp> is the default one used.</li>
+<li><b>file</b> - A file containing a make build output or scanner information in some other form.</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter extension point usage example here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6><samp>org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile</samp>
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_ui_DiscoveryProfilePage.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_ui_DiscoveryProfilePage.html
new file mode 100644
index 00000000000..d6dbcd5b26d
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_ui_DiscoveryProfilePage.html
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Scanner configuration discovery profile options page</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Scanner configuration discovery profile options page</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.make.ui.DiscoveryProfilePage<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>[Enter the first release in which this extension point appears.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>A<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.profilePage">profilePage</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+An extension to define implementation of a SCD profile options page.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.profilePage">profilePage</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST profilePage</p>
+<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">profileId&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Element defines a class that implements SCD profile options page for a profile with specified id.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>name</b> - Page name.</li>
+<li><b>profileId</b> - Associated profile id.</li>
+<li><b>class</b> - A class that extends <samp>AbstractDiscoveryPage</samp> abstract class.</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter extension point usage example here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_ManagedBuildInfo.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_ManagedBuildInfo.html
new file mode 100644
index 00000000000..065e2ef8b9f
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_ManagedBuildInfo.html
@@ -0,0 +1,247 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Managed Build Tools 2.0 (deprecated)</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Managed Build Tools 2.0 (deprecated)</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.core.ManagedBuildTools<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>1.2
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>The managed build information model describes targets, configurations, and toolchains for the build system.<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.target">target</a> , <a href="#e.tool">tool</a> , <a href="#e.configuration">configuration</a> , <a href="#e.dynamicElementProvider">dynamicElementProvider</a> , <a href="#e.managedBuildRevision">managedBuildRevision</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.tool">tool</a> (<a href="#e.option">option</a> , <a href="#e.optionCategory">optionCategory</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST tool</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">sources&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">outputs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">command&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">outputFlag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">outputPrefix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">dependencyCalculator&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">headerExtensions&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">natureFilter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cnature|ccnature|both) &gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Defines a tool used in the build process.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - A unique identifier for the tool that will be used by the build model.</li>
+<li><b>name</b> - Human-readable name for the tool to be used in the UI.</li>
+<li><b>sources</b> - A comma-separated list of file extensions that the tool will produce output for.</li>
+<li><b>outputs</b> - The extension that the tool will produce from a given input.</li>
+<li><b>command</b> - The command that invokes the tool. For example, gcc for the Gnu C compiler, or g++ for the Gnu C++ compiler.</li>
+<li><b>outputFlag</b> - An optional flag for tools that allow users to specify a name for the artifact of the tool. For example, the GCC compiler and linker tools typically allow the user to specify the name of the output with the '-o' flag, whereas the archiver that creates libraries does not.</li>
+<li><b>outputPrefix</b> - Some tools produce files with a special prefix that must be specified. For example, a librarian on POSIX systems expects the output to be lib<target>.a, so 'lib' would be the prefix.</li>
+<li><b>dependencyCalculator</b> - This is an optional field that specifies the class that provides the source file dependency calculation for a given tool. You can replace the default calculator with a class that implements the <code>IManagedDependencyGenerator</code> interface.</li>
+<li><b>headerExtensions</b> - A comma-separated list of file extensions that are used for header files. Since many other files depend on the interfaces defined in header files, the build system needs to be able to determine that a header file has changed to properly rebuild its dependents.</li>
+<li><b>natureFilter</b> - Filter the display (and use) of the tool by the nature of the project. Selecting a value of 'cnature' insures that the tool will be displayed IFF there is a cnature associated with the project. A ccnature will filter this tool out. If 'ccnature' is selected, the tool will only be available for C++ projects. If 'both' is selected, the tool will be displayed when either nature is present.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.option">option</a> (<a href="#e.enumeratedOptionValue">enumeratedOptionValue</a> , <a href="#e.listOptionValue">listOptionValue</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST option</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">valueType&nbsp;&nbsp;&nbsp;&nbsp;(string|stringList|boolean|enumerated|includePath|definedSymbols|libs|userObjs) "string"<p class="code SchemaDtdAttlist">category&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">defaultValue&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">command&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">commandFalse&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">browseType&nbsp;&nbsp;&nbsp;(none|file|directory) <p class="code SchemaDtdAttlist">helpSupplier&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">tip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+An option is associated with a tool. Options can contain boolean values, a simple text string, a selection from an enumerated list, or a list of values. Options also map the value they contain to a command-line flag, such as '-g' in the case of debugging symbol information for compilers.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - A unique identifier for the option.</li>
+<li><b>name</b> - A descriptive name for the option.</li>
+<li><b>valueType</b> - General options can be one of the following types; 'string' for catch-all entries for options that cannot be easily defined any other way, 'string list' for entries that consist of a list of values such as defined symbols or paths, 'boolean' for options that have two values, and 'enumerated' for options that are one-of a list of values.
+
+Additional special types exist to flag options of special relevance to the build model; 'include', 'libs', 'userObjs' and 'definedSymbols'. You can pre-populate with optionValues, and they will display in the UI the same way the 'stringList' options do. The build model will look specifically for these value types when clients query for include paths and preprocessor defines. The makefile generator will treat the libs and userObjs entries differently than other stringLists.</li>
+<li><b>category</b> - This is the id of the option category for this option. The id can be the id of the tool which is also a category.</li>
+<li><b>defaultValue</b> - Specifies the default value for the option if the 'value' field is blank. For enumerated options the optionEnums will be searched for the default. For string list options, all defined optionValues will be treated as defaults. For boolean values, specify truth using the string 'true'. All other strings will be treated as false.</li>
+<li><b>command</b> - An optional value that specifies the actual command that will be passed to the tool on the command line.</li>
+<li><b>commandFalse</b> - An optional value, used only with options of type Boolean, that specifies the actual command that will be passed to the tool on the command line when the value of the Boolean option is False.</li>
+<li><b>browseType</b> - This value is used for list (and related) options only. If you need a list option to prompt the user to browse for a file or directory when adding a new value, set the value of the attribute accordingly. By default the value is treated as no browsing needed.</li>
+<li><b>helpSupplier</b> - This field is unused in 2.0</li>
+<li><b>tip</b> - Specifies a "tip" that can be displayed in hover help or on the property page. Not implemented in 2.0.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.enumeratedOptionValue">enumeratedOptionValue</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST enumeratedOptionValue</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">isDefault&nbsp;(true | false) <p class="code SchemaDtdAttlist">command&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Defines a single value of an enumerated option.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - Unique identifier for the option enumeration.</li>
+<li><b>name</b> - A descriptive name for the enumeration.</li>
+<li><b>isDefault</b> - Flags this enumerated value as the default to apply to the option if the user has not changed the setting.</li>
+<li><b>command</b> - The command that the enumerated value translates to on the command line.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.configuration">configuration</a> (<a href="#e.toolReference">toolReference</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST configuration</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+A configuration is used to gather together certain default tools and options to build target a certain way. For example, a "Debug" configuration might supply tools with the options set to build with debugging symbols, whereas a "Release" configuration would supply tools with options set to create the best performance.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - Unique identifier for the configuration.</li>
+<li><b>name</b> - A descriptive name for the configuration to be used in the UI.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.toolReference">toolReference</a> (<a href="#e.optionReference">optionReference</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST toolReference</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">command&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">outputs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">outputPrefix&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">outputFlag&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This is reserved for future use. It currently gets instantiated for saving tool settings.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - The unique ID of the tool that the reference is for.</li>
+<li><b>command</b> - The overridden command for the tool the reference is for.</li>
+<li><b>outputs</b> - A comma-separated list of extensions that this tool reference will create. This completely overrides the the output extension in the tool the reference is for.</li>
+<li><b>outputPrefix</b> - The prefix that will be applied to the output of the tool. This completely overrides the output defined in the referenced tool.</li>
+<li><b>outputFlag</b> - Overrides the output flag of the referenced tool.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.optionReference">optionReference</a> (<a href="#e.listOptionValue">listOptionValue</a> , <a href="#e.enumeratedOptionValue">enumeratedOptionValue</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST optionReference</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">defaultValue&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">command&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Option references hold onto information the user has changed through the UI. Not all fields will be populated, depending on the option type the reference overrides. For example, the 'name' field is used by enumerated options only.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - The unique ID of the option the reference is for.</li>
+<li><b>defaultValue</b> - This field is used to record the value of the option that the user has set in the build settings file. For example, if the user has set the verbose flag to true, the project's build settings file will contain an option reference for the verbose option, with the defaultvalue set to true.
+<p>The attribute is also used to override the default option setting for a configuration in a toolchain. For example, a 'Debug' configuration may setthe value of a debug flag differently than the default value defined in the tool.</li>
+<li><b>command</b> - This field is unused in 2.0</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.target">target</a> (<a href="#e.tool">tool</a> , <a href="#e.configuration">configuration</a> , <a href="#e.toolReference">toolReference</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST target</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">isAbstract&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) "false"<p class="code SchemaDtdAttlist">parent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">artifactName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">defaultExtension&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">isTest&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) <p class="code SchemaDtdAttlist">cleanCommand&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">makeCommand&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">makeArguments&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">binaryParser&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">osList&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">archList&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">errorParsers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">scannerInfoCollector&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">makefileGenerator&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Represents a type of resource that is the target of the build process, for example, a Linux static library. A target contains a sequence of tool definitions and configurations. Targets are arranged in an inheritance hierarchy where a target inherits the list of tools from it's parent and can add to or override tools in this list.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - Used by the build model to uniquely identify the target.</li>
+<li><b>name</b> - A human-readable target name, such as 'Executable'. This will be the name the user sees displayed in the UI.</li>
+<li><b>isAbstract</b> - This is a UI property. If set to true, users should not be able to create project configurations targeted at this target.</li>
+<li><b>parent</b> - The id of a target that this tool inherits from.</li>
+<li><b>artifactName</b> - This is the name of the final build artifact associated with the target. The user will specify this is the UI, so there is no need to supply a default value.</li>
+<li><b>defaultExtension</b> - This is the extensionthat will be applied to any build artifact created by the target.</li>
+<li><b>isTest</b> - A an optional field that flags a target as a test-only target. If true, the target will not appear in the UI.</li>
+<li><b>cleanCommand</b> - This attribute maintains the command that removes files for a particular target. For example, on POSIX targets like Linuc, Solaris, or Cygwin, the command would be <code>rm -rf</code> whereas on Win32 platforms it would be <code>del /F /S /Q</code></li>
+<li><b>makeCommand</b> - Specifies the default command to start the build utility for your toolchain. If the user changes this through the UI, the overriden value will be stored in the project build file. The build model will default to this value if the user ever resets a change.</li>
+<li><b>makeArguments</b> - Specifies the additional, default arguments that will be passed to the build utility when it is called by the builder. If the user changes the flags through the UI, the overriden value will be stored in the project build settings file. The build model will default to this value if the user ever resets a change.</li>
+<li><b>binaryParser</b> - Set this to the ID of the binary parser for the output format of your target. Currently there are only 2 choices: org.eclipse.cdt.core.ELF for *nix targets, and "org.eclipse.cdt.core.PE" for targets that build for Windows, like Cygwin.</li>
+<li><b>osList</b> - This field is used by the managed build system to decide when to show the user the target. The value should be a comma-separated list. Current values are "win32", "linux", "solaris", "hpux", "aix" or "any".</li>
+<li><b>archList</b> - This field is used by the managed build system to decide when to show the user the target. The value should be a comma-separated list. Current values include "x86", "sparc", "ppc"; or "all".</li>
+<li><b>errorParsers</b> - Specifies the default list of error parsers to be used by projects created from this target. It is an ordered, semi-colon separated list of parser IDs. The order specifies the order in which the error parsers are invoked during a build.</li>
+<li><b>scannerInfoCollector</b> - Specifies a class that implements the <code>IManagedScannerInfoCollector</code> for gathering the built-in compiler settings for a toolchain.</li>
+<li><b>makefileGenerator</b> - Allows you to supply a custom makefile generator that conforms to the <code>IManagedBuilderMakefileGenerator</code> interface.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.optionCategory">optionCategory</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST optionCategory</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">owner&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+An optional, but useful, mechanism for grouping options together.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - Used by the build model to uniquely identify the option category.</li>
+<li><b>name</b> - A human-readable category name, such as 'Preprocessor Options'. This will be the name the user sees displayed in the UI.</li>
+<li><b>owner</b> - Option categories can belong to a tool or be nested inside other option categories. This is the ID of the owner of the category.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.listOptionValue">listOptionValue</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST listOptionValue</p>
+<p class="code SchemaDtdAttlist">value&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">builtIn&nbsp;(true | false) &gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+A value for defining individual elements of a list option.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>value</b> - The contents of the list item.</li>
+<li><b>builtIn</b> - This attribute flags the list value as a built-in value as opposed to something the user has entered. Built-ins will not be passed to clients that generate command lines (like the makefile generator). However, clients that need to take these settings into account (like the indexing service), will receive these settings. These values will appear grey in the UI.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.dynamicElementProvider">dynamicElementProvider</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST dynamicElementProvider</p>
+<p class="code SchemaDtdAttlist">class&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+An optional element that allows a tool implementor to supply a class that creates one or more dynamic toolchain elements. For example, the class might create a new tool reference based on the contents of a special file, and a new target that uses that reference.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>class</b> - The class that implements the <code>IManagedConfigElementProvider</code> interface. The logic of determining the elements is left to the implementer, but they must be correctly formed or the build model will have trouble loading.</li>
+<li><b>name</b> - A meaningful name for the type of element being provided.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.managedBuildRevision">managedBuildRevision</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST managedBuildRevision</p>
+<p class="code SchemaDtdAttlist">fileVersion&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<div class="ConfigMarkupElementDesc">
+<p>
+Version identifier for the managed build extension point. It is a string representation, consisting of three (3) tokens separated by a decimal point. The 3 tokens are positive integer numbers. For example, the following are valid version identifiers:
+ <ul>
+ <li><code>0.0.0</code></li>
+ <li><code>1.0.1234</code></li>
+ <li><code>1.9</code> (interpreted as <code>1.9.0</code>)</li>
+ <li><code>3</code> (interpreted as <code>3.0.0</code>)</li>
+ </ul>
+</p></div>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>fileVersion</b> - The actual string containing the three version tokens.</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>The following is an example of the extension point usage:
+<p>
+<pre class="Example"><span class="code SchemaTag">
+ &lt;extension
+ id=</span><span class="code SchemaCstring">&quot;buildExample&quot;</span><span class="code SchemaTag">
+ name=</span><span class="code SchemaCstring">&quot;Tools for Build Example&quot;</span><span class="code SchemaTag">
+ point=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.core.ManagedBuildInfo&quot;</span><span class="code SchemaTag">&gt;
+ &lt;target
+ makeFlags=</span><span class="code SchemaCstring">&quot;-k&quot;</span><span class="code SchemaTag">
+ isTest=</span><span class="code SchemaCstring">&quot;false&quot;</span><span class="code SchemaTag">
+ cleanCommand=</span><span class="code SchemaCstring">&quot;rm -rf&quot;</span><span class="code SchemaTag">
+ name=</span><span class="code SchemaCstring">&quot;Executable&quot;</span><span class="code SchemaTag">
+ defaultExtension=</span><span class="code SchemaCstring">&quot;.exe&quot;</span><span class="code SchemaTag">
+ isAbstract=</span><span class="code SchemaCstring">&quot;false&quot;</span><span class="code SchemaTag">
+ makeCommand=</span><span class="code SchemaCstring">&quot;make&quot;</span><span class="code SchemaTag">
+ id=</span><span class="code SchemaCstring">&quot;example.target.executable&quot;</span><span class="code SchemaTag">&gt;
+ &lt;tool
+ sources=</span><span class="code SchemaCstring">&quot;C&quot;</span><span class="code SchemaTag">
+ name=</span><span class="code SchemaCstring">&quot;Compiler&quot;</span><span class="code SchemaTag">
+ outputFlag=</span><span class="code SchemaCstring">&quot;-o&quot;</span><span class="code SchemaTag">
+ outputs=</span><span class="code SchemaCstring">&quot;exe&quot;</span><span class="code SchemaTag">
+ command=</span><span class="code SchemaCstring">&quot;g++&quot;</span><span class="code SchemaTag">
+ id=</span><span class="code SchemaCstring">&quot;executable.compiler&quot;</span><span class="code SchemaTag">&gt;
+ &lt;optionCategory
+ owner=</span><span class="code SchemaCstring">&quot;executable.compiler&quot;</span><span class="code SchemaTag">
+ name=</span><span class="code SchemaCstring">&quot;Flags&quot;</span><span class="code SchemaTag">
+ id=</span><span class="code SchemaCstring">&quot;compiler.category.flags&quot;</span><span class="code SchemaTag">&gt;
+ &lt;/optionCategory&gt;
+ &lt;option
+ defaultValue=</span><span class="code SchemaCstring">&quot;-c&quot;</span><span class="code SchemaTag">
+ name=</span><span class="code SchemaCstring">&quot;Compiler Flags&quot;</span><span class="code SchemaTag">
+ category=</span><span class="code SchemaCstring">&quot;compiler.category.flags&quot;</span><span class="code SchemaTag">
+ valueType=</span><span class="code SchemaCstring">&quot;string&quot;</span><span class="code SchemaTag">
+ id=</span><span class="code SchemaCstring">&quot;category.flags.comp_flags&quot;</span><span class="code SchemaTag">&gt;
+ &lt;/option&gt;
+ &lt;/tool&gt;
+ &lt;configuration
+ name=</span><span class="code SchemaCstring">&quot;Default&quot;</span><span class="code SchemaTag">
+ id=</span><span class="code SchemaCstring">&quot;example.config.default&quot;</span><span class="code SchemaTag">&gt;
+ &lt;/configuration&gt;
+ &lt;/target&gt;
+ &lt;/extension&gt;
+</span></pre>
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>An implementation of this extension point is supplied in <samp>org.eclipse.cdt.ui</samp>
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+Copyright (c) 2003, 2004 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 on the <a href="http://www.eclipse.org/legal/epl-v10.html"> Eclipse</a> website.
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_buildDefinitions.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_buildDefinitions.html
new file mode 100644
index 00000000000..87e8a7171ba
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_buildDefinitions.html
@@ -0,0 +1,630 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Managed Build Definitions</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Managed Build Definitions</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.managedbuilder.core.buildDefinitions<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>This extension point was added in CDT 2.1
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>The managed build object model describes project-types, configurations, tool-chains, etc. for the managed build system.<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.projectType">projectType</a>* , <a href="#e.configuration">configuration</a>* , <a href="#e.toolChain">toolChain</a>* , <a href="#e.tool">tool</a>* , <a href="#e.targetPlatform">targetPlatform</a>* , <a href="#e.builder">builder</a>* , <a href="#e.dynamicElementProvider">dynamicElementProvider</a>* , <a href="#e.managedBuildRevision">managedBuildRevision</a>? , <a href="#e.buildDefinitionStartup">buildDefinitionStartup</a>*)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.projectType">projectType</a> (<a href="#e.configuration">configuration</a>*)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST projectType</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">superClass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">isAbstract&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) "false"<p class="code SchemaDtdAttlist">unusedChildren&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">isTest&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) <p class="code SchemaDtdAttlist">projectEnvironmentSupplier&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">projectMacroSupplier&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">configurationNameProvider&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">convertToId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">buildProperties&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">buildArtefactType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Represents a class of project which acts as a template for the projects that the user will create, for example, a Linux static library. A project type contains a sequence of configurations. Project types are arranged in an inheritance hierarchy where a project type inherits the list of configurations from it's parent and can add to or override configurations in this list.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - Used by the build model to uniquely identify the project type.</li>
+<li><b>name</b> - A human-readable project type name, such as 'Executable'. This will be the name the user sees displayed in the UI.</li>
+<li><b>superClass</b> - The id of a projectType that this projectType is derived from.</li>
+<li><b>isAbstract</b> - An optional field that flags a project type as abstract. If true, the project type will not appear in the UI. The project type is used by other project types as their "superclass". The default value is false.</li>
+<li><b>unusedChildren</b> - A semi-colon separated list of child IDs of the superclass' children that should not be automatically inherited by this element. Note: This attribute is not yet implemented.</li>
+<li><b>isTest</b> - An optional field that flags a project type as test-only. If true, the project type will not appear in the UI. The project type can be manipulated programmatically in JUnit tests, for example. The default value is false.</li>
+<li><b>projectEnvironmentSupplier</b> - Specifies the name of the class that implements IProjectEnvironmentVariableSupplier in order to provide project level environment variables.</li>
+<li><b>projectMacroSupplier</b> - Specifies the name of the class that implements IProjectBuildMacroSupplier in order to provide project level build macros.</li>
+<li><b>configurationNameProvider</b> - Contains the name of a class that implements an interface with a method for returning a default name for a configuration. The configuration names in a user's project must be unique. A projectType can contain configuration children with the same name. In this case, a configurationNameProvider must be specified to make the names unique before they are displayed to the user in the New Project and New Configuration dialog boxes.</li>
+<li><b>convertToId</b> - The identifier of a projectType, that project types loaded using this definition should be converted to. MBS will invoke a proper converter.</li>
+<li><b>buildProperties</b> - Specifies the comma-separated list of build property type - value pairs to be applied for all configurations of this project type.
+property type-value pairs are specified in the type_id=value_id format.</li>
+<li><b>buildArtefactType</b> - the attribute specified the Build Artefact Type. can contain the value id of the "org.eclipse.cdt.build.core.buildArtefactType" build property. Default values contributed with the build system are
+"org.eclipse.cdt.build.core.buildArtefactType.exe" - represents executable,
+"org.eclipse.cdt.build.core.buildArtefactType.staticLib" - represents static library,
+"org.eclipse.cdt.build.core.buildArtefactType.sharedLib" - represents dynamic library
+Custom values can be contributed via the "org.eclipse.cdt.managedbuilder.core.buildProperties" extension point. See the description of that extension point for more detail.
+
+Specifying this attribute is fully equivalent to specifying the "org.eclipse.cdt.build.core.buildArtefactType" via tne buildProperties attribute. The buildArtefactType attribute, the "buildArtefactType" attribute value takes precedence over the artefact type specified via the "buildProperties" attribute</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.project">project</a> (<a href="#e.configuration">configuration</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST project</p>
+<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">projectType&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+The project element is an instance of a projectType element. It appears in the .cdtbuild file, not in an extension definition.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>name</b> - The name of the project that the user sees displayed in the UI. This is the name that the user entered in the New Project wizard.</li>
+<li><b>projectType</b> - The id of the projectType that this project is an instance of.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.configuration">configuration</a> (<a href="#e.toolChain">toolChain</a>? , <a href="#e.resourceConfiguration">resourceConfiguration</a>* , <a href="#e.enablement">enablement</a>* , <a href="#e.folderInfo">folderInfo</a>* , <a href="#e.fileInfo">fileInfo</a>*)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST configuration</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">parent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">artifactName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">artifactExtension&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">cleanCommand&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">errorParsers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">prebuildStep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">postbuildStep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">preannouncebuildStep&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">postannouncebuildStep&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">buildProperties&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">buildArtefactType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+A configuration is used to gather together certain default tools and options to build project a certain way. For example, a "Debug" configuration might supply tools with the options set to build with debugging symbols, whereas a "Release" configuration would supply tools with options set to create the best performance.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - Unique identifier for the configuration.</li>
+<li><b>name</b> - A descriptive name for the configuration to be used in the UI.</li>
+<li><b>parent</b> - The configuration that this configuration was cloned from.</li>
+<li><b>artifactName</b> - This is the name of the final build artifact associated with the configuration. The user will specify this is the UI, so there is no need to supply a default value.</li>
+<li><b>artifactExtension</b> - This is the extension that will be applied (if necessary) to any build artifact created by the configuration.</li>
+<li><b>cleanCommand</b> - This attribute maintains the command that removes the intermediate and output files for a particular configuration. For example, on POSIX platforms like Linuc, Solaris, or Cygwin, the command would be <code>rm -rf</code> whereas on Win32 platforms it would be <code>del /F /S /Q</code></li>
+<li><b>errorParsers</b> - The semi-colon separated list of the default error parsers to be used with this configuration. The list is ordered with the first error parser on the list invoked first, the second error parser second, and so on. The list may contain the error parsers defined by CDT and/or other installed error parser extensions. The list of error parsers to be used may be changed by the user on a per-configuration basis. When specified, this overrides the tool-chain errorParsers attribute.</li>
+<li><b>prebuildStep</b> - Specifies the pre-build command, which runs prior to the standard MBS build.</li>
+<li><b>postbuildStep</b> - Specifies the post-build command, which runs after the standard MBS build.</li>
+<li><b>preannouncebuildStep</b> - Specifies the string to be displayed when the pre-build command step is run.</li>
+<li><b>postannouncebuildStep</b> - Specifies the string to be displayed when the post-build command step is run.</li>
+<li><b>description</b> - Specifies the description of the configuration that will be displayed to the user while creating a project and managing configurations. The description is only displayed in the UI - it is not considered to be part of the configuration name.</li>
+<li><b>buildProperties</b> - Specifies the comma-separated list of build property type - value pairs defined for this configuration.
+property type-value pairs are specified in the type_id=value_id format.</li>
+<li><b>buildArtefactType</b> - the attribute specified the Build Artefact Type. can contain the value id of the "org.eclipse.cdt.build.core.buildArtefactType" build property. Default values contributed with the build system are
+"org.eclipse.cdt.build.core.buildArtefactType.exe" - represents executable,
+"org.eclipse.cdt.build.core.buildArtefactType.staticLib" - represents static library,
+"org.eclipse.cdt.build.core.buildArtefactType.sharedLib" - represents dynamic library
+Custom values can be contributed via the "org.eclipse.cdt.managedbuilder.core.buildProperties" extension point. See the description of that extension point for more detail.
+
+Specifying this attribute is fully equivalent to specifying the "org.eclipse.cdt.build.core.buildArtefactType" via tne buildProperties attribute. The buildArtefactType attribute, the "buildArtefactType" attribute value takes precedence over the artefact type specified via the "buildProperties" attribute</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.toolChain">toolChain</a> (<a href="#e.tool">tool</a>* , <a href="#e.targetPlatform">targetPlatform</a>? , <a href="#e.builder">builder</a>? , <a href="#e.optionCategory">optionCategory</a>* , <a href="#e.option">option</a>* , <a href="#e.supportedProperties">supportedProperties</a>?)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST toolChain</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">superClass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">isAbstract&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) "false"<p class="code SchemaDtdAttlist">unusedChildren&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">osList&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">archList&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">errorParsers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">scannerConfigDiscoveryProfileId&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">targetTool&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">secondaryOutputs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">isToolChainSupported&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">configurationEnvironmentSupplier&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">configurationMacroSupplier&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">versionsSupported&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">convertToId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">optionPathConverter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">supportsManagedBuild&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) <p class="code SchemaDtdAttlist">isSystem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) &gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+A tool-integrator-defined, ordered set of tools that tranform the project's resources into the project's outputs. A tool-chain can be defined as part of a configuration, or as an independent specification that is referenced from a separate configuration via the tool-chain superClass attribute.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - Unique identifier for the tool-chain.</li>
+<li><b>name</b> - A descriptive name for the tool-chain to be used in the UI.</li>
+<li><b>superClass</b> - The id of a toolChain that this toolChain is derived from.</li>
+<li><b>isAbstract</b> - An optional field that flags a tool-chain as abstract. An abstract tool-chain must be defined as a top level object in the model definition and cannot be selected by the user in the UI, but tool-chains derived from this tool-chain will inherit its attributes and children. The default is false.</li>
+<li><b>unusedChildren</b> - A semi-colon separated list of child IDs of the superclass' children that should not be automatically inherited by this element. Note: This attribute is not yet implemented.</li>
+<li><b>osList</b> - This field lists the host operating systems on which the tool-chain runs and is used by the managed build system to decide when the tool-chain is applicable. The value should be a comma-separated list. Valid values are the strings returned by the Eclipse API Platform.getOS() and include strings like "win32", "linux", "solaris", "hpux", "aix". Do not specify this attribute or specify "all" to allow all host operating systems.</li>
+<li><b>archList</b> - This field lists the host architectures on which the tool-chain runs and is used by the managed build system to decide when the tool-chain is applicable. The value should be a comma-separated list. Valid values are the strings returned by the Eclipse API Platform.getOSArch() and include strings like "ia32". Do not specify this attribute or specify "all" to allow all host architectures.</li>
+<li><b>errorParsers</b> - The semi-colon separated list of the default error parsers to be used with this tool-chain. The list is ordered with the first error parser on the list invoked first, the second error parser second, and so on. The list may contain the error parsers defined by CDT and/or other installed error parser extensions. When specified, this overrides the tool errorParsers attributes of the tool children of the tool-chain and the builder child of the tool-chain.</li>
+<li><b>scannerConfigDiscoveryProfileId</b> - Specifies an id of scanner configuration discovery profile for gathering the built-in compiler settings for a toolchain.</li>
+<li><b>targetTool</b> - Specifies a semi-colon separated list of the Tool(s) that can create the final build artifact (the end target of the build). The first tool found in the configuration is used. A list is needed, for example, when a tool-chain has different tools for different project natures.</li>
+<li><b>secondaryOutputs</b> - A semi-colon separated list of IDs of other outputTypes, besides the primary outputType of the targetTool, that are also considered to be build artifacts. The build file generator will ensure that the outputs get built.</li>
+<li><b>isToolChainSupported</b> - Specifies the name of the class that implements IManagedIsToolChainSupported. This provides a method to be called to determine if support for the tool-chain is currently installed on the system. MBS uses this information in order to filter the choices presented to the CDT user and to inform the user when support needed by their project is not installed. If the isToolChainSupported callback is not provided by the tool-chain definition, the tool-chain is treated as supported. If all configurations defined for the given project type are not supported the project type is treated as unsupported.</li>
+<li><b>configurationEnvironmentSupplier</b> - Specifies the name of the class that implements IConfigurationEnvironmentVariableSupplier in order to provide configuration level environment variables.</li>
+<li><b>configurationMacroSupplier</b> - Specifies the name of the class that implements IConfigurationBuildMacroSupplier in order to provide configuration level build macros.</li>
+<li><b>versionsSupported</b> - Specifies a comma delimited list of versions of this tool-chain that can be loaded without invoking a converter.</li>
+<li><b>convertToId</b> - The identifier of a tool-chain, that tool-chains loaded using this definition should be converted to. MBS will invoke a proper converter.</li>
+<li><b>optionPathConverter</b> - Toolchains like Cygwin based Gnu tools can accept paths which are not valid for the OS platform. E.g. "/usr/include" is well difined for a Cygwin gcc compiler while it is not a meaningful path for a java.io.File. Therefore toolchains can specify a pathConverter which will be applied to include and library paths configured in the Managed Build System.
+
+The pathConverter of a toolchain applies for all tools of the toolchain except if a tool defines it's own pathConverter. In this case the pathConverter supplied by the toolchain is ignored.</li>
+<li><b>supportsManagedBuild</b> - Specifies whether or not the tool-chain supports managed build. Default value is true.</li>
+<li><b>isSystem</b> - the system elements are used by the system for specific needs and are not displayed in UI</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.resourceConfiguration">resourceConfiguration</a> (<a href="#e.tool">tool</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST resourceConfiguration</p>
+<p class="code SchemaDtdAttlist">resourcePath&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">exclude&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) <p class="code SchemaDtdAttlist">rcbsApplicability&nbsp;(before|after|override|disable) <p class="code SchemaDtdAttlist">toolsToInvoke&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+A place to store build attributes of individual resources that are different from the configuration as a whole.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>resourcePath</b> - The path of the project resource to which this element applies.</li>
+<li><b>exclude</b> - Specifies whether the resource is excluded from building in the parent configuration. The default is false. The resourceConfiguration element retains its tool children, if any exist, even when excluded from the build.</li>
+<li><b>rcbsApplicability</b> - Identifies how the user desires to apply a resource custom build step:
+ 1. Apply rcbs tool before any other tools defined for the resource.
+ 2. Apply rcbs tool after any other tools defined for the resource.
+ 3. Apply rcbs tool overriding any other tools defined for the resource.
+ 4. Disable (don't apply) the rcbs tool.</li>
+<li><b>toolsToInvoke</b> - Identifies which tools to invoke by a semicolon separated list of child tool ids. Applies as follows:
+ 1. Defaults to all tools in the order found
+ 2. Use specified ordered list of children to invoke
+ 3. If empty string, treat as if no resource configuration existed, i.e., use project level tool.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.tool">tool</a> (<a href="#e.option">option</a>* , <a href="#e.optionCategory">optionCategory</a>* , <a href="#e.inputType">inputType</a>* , <a href="#e.outputType">outputType</a>* , <a href="#e.envVarBuildPath">envVarBuildPath</a>* , <a href="#e.enablement">enablement</a>* , <a href="#e.supportedProperties">supportedProperties</a>?)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST tool</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">superClass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">isAbstract&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) "false"<p class="code SchemaDtdAttlist">unusedChildren&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">sources&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">headerExtensions&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">outputs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">outputFlag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">outputPrefix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">natureFilter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cnature|ccnature|both) <p class="code SchemaDtdAttlist">command&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">commandLinePattern&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">commandLineGenerator&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">dependencyCalculator&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">errorParsers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">advancedInputCategory&nbsp;(true | false) <p class="code SchemaDtdAttlist">customBuildStep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) <p class="code SchemaDtdAttlist">announcement&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">icon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">versionsSupported&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">convertToId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">optionPathConverter&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">supportsManagedBuild&nbsp;&nbsp;(true | false) <p class="code SchemaDtdAttlist">isSystem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) &gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Defines a tool used in the build process.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - A unique identifier for the tool that will be used by the build model.</li>
+<li><b>name</b> - Human-readable name for the tool to be used in the UI.</li>
+<li><b>superClass</b> - The id of a tool that this tool is derived from.</li>
+<li><b>isAbstract</b> - An optional field that flags a tool as abstract. An abstract tool must be defined as a top level object in the model definition and cannot be selected by the user in the UI, but tools derived from this tool will inherit its attributes and children. The default is false.</li>
+<li><b>unusedChildren</b> - A semi-colon separated list of child IDs of the superclass' children that should not be automatically inherited by this element. Note: This attribute is not yet implemented.</li>
+<li><i style="color: red;">Deprecated</i> <b>sources</b> - Deprecated - use the InputType element.</li>
+<li><i style="color: red;">Deprecated</i> <b>headerExtensions</b> - Deprecated - use the InputType element.</li>
+<li><i style="color: red;">Deprecated</i> <b>outputs</b> - Deprecated - use the OutputType element.</li>
+<li><b>outputFlag</b> - An optional flag for tools that allow users to specify a name for the artifact of the tool. For example, the GCC compiler and linker tools typically allow the user to specify the name of the output with the '-o' flag, whereas the archiver that creates libraries does not.</li>
+<li><i style="color: red;">Deprecated</i> <b>outputPrefix</b> - Deprecated - use the OutputType element.</li>
+<li><b>natureFilter</b> - Filters the display (and use) of the tool by the nature of the project. Selecting a value of 'cnature' insures that the tool will be displayed IFF there is a cnature associated with the project. A ccnature will filter this tool out. If 'ccnature' is selected, the tool will only be available for C++ projects. If 'both' is selected, the tool will be displayed when either nature is present. This attribute is required if it is not inherited from its superClass. The default value is "both".</li>
+<li><b>command</b> - The command that invokes the tool. For example, gcc for the Gnu C compiler, or g++ for the Gnu C++ compiler. This attribute supports MBS file context macros.</li>
+<li><b>commandLinePattern</b> - Specifies the command "pattern" that indicates how the parts of the command line are used to create the entire command line. The pattern consists of the replaceable variables COMMAND, FLAGS, OUTPUT_FLAG, OUTPUT_PREFIX, OUTPUT and INPUTS. The default command line pattern is ${COMMAND} ${FLAGS} ${OUTPUT_FLAG}${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}, except when customBuildStep is true, where the default is $(COMMAND). White space and other characters are significant and are copied to the generated command. This attribute supports MBS file context macros.</li>
+<li><b>commandLineGenerator</b> - Specifies the name of the class that implements IManagedCommandLineGenerator in order to provide custom command line generation logic.</li>
+<li><i style="color: red;">Deprecated</i> <b>dependencyCalculator</b> - Deprecated - use the InputType element.</li>
+<li><b>errorParsers</b> - Specifies the default list of error parsers used by the tool. Error parsers specified by the tool are added to this list specified by the tool-chain when a project resource is defined to use the tool. It is automatically removed when there are no more project resources using the tool. It is an ordered, semi-colon separated list of parser IDs. The order specifies the order in which the error parsers are invoked during a build.</li>
+<li><b>advancedInputCategory</b> - Specifies whether the Tool wants the MBS to display the Advanced Input category with the Tool's property categories. This allows the user to specify input order and additional inputs. The default is false. Note: This attribute is not yet implemented</li>
+<li><b>customBuildStep</b> - Specifies whether this Tool represents a user-define custom build step. The default is false. When True, the default value of the commandLinePattern attribute changes to “$(command)”.</li>
+<li><b>announcement</b> - Specifies a string that is written to the build output prior to each invocation of the tool. The default value is “Invoking tool-name (tool-id)…”</li>
+<li><b>icon</b> - Path to a 16x16 pixel big icon that is to be displayed instead of the default icon. The path is relative to the plug-in directory which defines .buildDefinitions.</li>
+<li><b>versionsSupported</b> - Specifies a comma delimited list of versions of this tool that can be loaded without invoking a converter.</li>
+<li><b>convertToId</b> - The identifier of a tool, that tools loaded using this definition should be converted to. MBS will invoke a proper converter.</li>
+<li><b>optionPathConverter</b> - Tools like Cygwin based Gnu tools can accept paths which are not valid for the OS platform. E.g. "/usr/include" is well difined for a Cygwin gcc compiler while it is not a meaningful path for a java.io.File. Therefore tools can specify a pathConverter which will be applied to include and library paths configured in the Managed Build System.</li>
+<li><b>supportsManagedBuild</b> - Specifies whether or not the tool supports managed build. Default value is true.</li>
+<li><b>isSystem</b> - the system elements are used by the system for specific needs and are not displayed in UI</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.inputType">inputType</a> (<a href="#e.inputOrder">inputOrder</a>* , <a href="#e.additionalInput">additionalInput</a>* , <a href="#e.enablement">enablement</a>*)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST inputType</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">superClass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">sourceContentType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">sources&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">dependencyContentType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">dependencyExtensions&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">option&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">assignToOption&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">multipleOfType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) <p class="code SchemaDtdAttlist">primaryInput&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) <p class="code SchemaDtdAttlist">dependencyCalculator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">buildVariable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">scannerConfigDiscoveryProfileId&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">languageId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">languageInfoCalculator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Defines a type of input for the tool. Note that the calculated dependencies of an input type are not described by a separate input type, but are described by attributes of this element.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - A unique identifier for the input-type that will be used by the build model.</li>
+<li><b>name</b> - The name of the input type that is displayed to the user in the UI.</li>
+<li><b>superClass</b> - The id of an input-type that this input-type is derived from.</li>
+<li><b>sourceContentType</b> - The id of an Eclipse content type that describes this type of input. Either this attribute or the sources attribute must be specified by this element or a superclass. If both are specified, and the content type specified here is defined by Eclipse, the sources attribute is not used.</li>
+<li><b>sources</b> - A comma-separated list of file extensions that identify files of this input type. Note that the user will not be able to modify the set of file extensions as they can when sourceContentType is specified.</li>
+<li><b>dependencyContentType</b> - The id of an Eclipse content type that describes the calculated dependencies for this type of input. If dependencyExtensions is also specified, and the content type specified here is defined by Eclipse, the dependencyExtensions attribute is not used.</li>
+<li><b>dependencyExtensions</b> - A comma-separated list of file extensions that are used for calculated dependencies of this input-type. Note that the user will not be able to modify the set of file extensions as they can when dependencyContentType is specified.</li>
+<li><b>option</b> - The id of an Option element that is used on the command line to identify inputs of this type. If specified, the name(s) of the input files for this input type are taken from the value specified for the option.</li>
+<li><b>assignToOption</b> - The id of an Option element whose value is to be assigned to the file(s) calculated for this input type. The default is not to assign the input file(s) to a command line option but to assign the files to the ${Inputs} part of the command line. Note that the option value is only updated during build file generation and therefore could be out of sync with the project until build file generation occurs.</li>
+<li><b>multipleOfType</b> - Specifies whether all inputs of this type are used in one invocation of the tool. The inputs can be project resources, and the outputs of other Tools in the Tool-chain. The default is false.</li>
+<li><b>primaryInput</b> - Specifies whether this is considered the primary input of the tool. The default is false.</li>
+<li><b>dependencyCalculator</b> - Specifies the class that provides the source file dependency calculation for this input-type. You can replace the default calculator with a class that implements the <code>IManagedDependencyGenerator</code> interface.</li>
+<li><b>buildVariable</b> - A variable used in the build file to represent the input files. The same variable name can be used in an outputType element to identify a set of output files that contribute to this tool's input. This attribute is ignored when multipleOfType is false and this is the primary input of the tool. The default name is chosen by MBS.</li>
+<li><b>scannerConfigDiscoveryProfileId</b> - Specifies an id of scanner configuration discovery profile for gathering the built-in compiler settings for resource type presented with this input type.</li>
+<li><b>languageId</b> - Represents the language id, i.e. the id of language defined via the org.eclipse.cdt.core.language extension point
+
+The value of this attribute is used only in case languageInfoCalculator is not specified</li>
+<li><b>languageInfoCalculator</b> - Specifies the name of the class that implements org.eclipse.cdt.managedbuilder.core.ILanguageInfoCalculator for dinamic providing the language id info.
+Overrides language id specified with the languageId attribute.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.inputOrder">inputOrder</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST inputOrder</p>
+<p class="code SchemaDtdAttlist">path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">order&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">excluded&nbsp;(true | false) &gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Describes optional, ordering, information regarding the inputs of an inputType. Note: This element is not yet implemented</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>path</b> - Defines the relative or absolute path of the resource to which this element applies. The resource must be a member of the project, or the output from another tool in the tool-chain.</li>
+<li><b>order</b> - A comma-separated list of integer values that specify the input order of this resource. In most cases, a single value is used. A list is used if the same input resource appears multiple times in the input list. The order number begins at 1. All unordered input resources fill the first gap in the specified order values.</li>
+<li><b>excluded</b> - If True, this input resource is not used as an input to the tool.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.additionalInput">additionalInput</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST additionalInput</p>
+<p class="code SchemaDtdAttlist">paths&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">kind&nbsp;&nbsp;(additionalinput|additionalinputdependency|additionaldependency) &gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Describes optional information regarding additional inputs and/or dependencies.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>paths</b> - Defines a semi-colon delimited list of relative or absolute paths of the resource to which this element applies. The resources must be a member of the project, the output from another tool in the tool-chain, or an external file. The file name of the path can use GNU Make pattern rule syntax in order to generate the name from the filename of the input file.</li>
+<li><b>kind</b> - Defines the type of additional input, whether the resource is added to the dependency list, the inputs on the command line, or both. The default is to add the inputs to both.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.outputType">outputType</a> (<a href="#e.enablement">enablement</a>*)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST outputType</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">superClass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">outputContentType&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">outputs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">option&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">multipleOfType&nbsp;&nbsp;&nbsp;&nbsp;(true | false) <p class="code SchemaDtdAttlist">primaryInputType&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">primaryOutput&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) <p class="code SchemaDtdAttlist">outputPrefix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">outputNames&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">namePattern&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">nameProvider&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">buildVariable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Defines a type of output for the tool.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - A unique identifier for the output-type that will be used by the build model.</li>
+<li><b>name</b> - The name of the output type that is displayed to the user in the UI.</li>
+<li><b>superClass</b> - The id of an output-type that this output-type is derived from.</li>
+<li><b>outputContentType</b> - The id of an Eclipse content type that describes this type of output. Either this attribute or the outputs attribute must be specified by this element or a superclass. If both are specified, and the content type specified here is defined by Eclipse, the outputs attribute is not used.</li>
+<li><b>outputs</b> - A comma-separated list of file extensions that identify files of this output type. Note that the user will not be able to modify the set of file extensions as they can when outputContentType is specified.</li>
+<li><b>option</b> - The id of an Option element that is used on the command line to specify this output. The default is to use the Tool outputFlag attribute if primaryOutput is True. If option is not specified, and primaryOutput is False, then the output file(s) of this outputType are not added to the command line. If specified, the nameProvider, namePattern and outputNames are ignored.</li>
+<li><b>multipleOfType</b> - Specifies whether multiple outputs of this type are created by one invocation of the tool. The default is False. If True, the nameProvider attribute or outputNames attribute must be specified.</li>
+<li><b>primaryInputType</b> - The id of the input type that is used in determining the build “rules” for the output type and for the default name of the output file. The default is the input type with primaryInput == true.</li>
+<li><b>primaryOutput</b> - Specifies whether this is the primary output of the tool. The default is False.</li>
+<li><b>outputPrefix</b> - Some tools produce files with a special prefix that must be specified. For example, a librarian on POSIX systems expects the output to be libtarget.a, so 'lib' would be the prefix. The default is to use the Tool “outputPrefix” attribute if primaryOutput is True, otherwise the default is an empty string. This attribute supports MBS configuration context macros.</li>
+<li><b>outputNames</b> - A semi-colon delimited list of the complete set of output file names generated for this outputType. If specified, the namePattern is ignored. This attribute supports MBS file context macros.</li>
+<li><b>namePattern</b> - Specifies a pattern, using the Gnu Make pattern rule syntax, for deriving the output resource name from the input resource name. The default, "%" is to use the input resource base name with the first output extension.</li>
+<li><b>nameProvider</b> - The name of the class that implements the <code>IManagedOutputNameProvider</code> interface. If specified, the outputNames and namePattern are ignored. When multipleOfType is true, this attribute, or the outputNames attribute, is required in order for MBS to know the names of the output files.</li>
+<li><b>buildVariable</b> - A variable used in the build file to represent the output file(s). The same variable name can be used in an inputType element to identify a set of output files that contribute to a tool's input. The default name is chosen by MBS.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.optionCategory">optionCategory</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST optionCategory</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">owner&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">icon&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+An optional, but useful, mechanism for grouping options together.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - Used by the build model to uniquely identify the option category.</li>
+<li><b>name</b> - A human-readable category name, such as 'Preprocessor Options'. This will be the name the user sees displayed in the UI.</li>
+<li><b>owner</b> - Option categories can belong to a tool, a toolChain or be nested inside other option categories. This is the ID of the owner of the category. The default owner if the parent tool or tool-chain.</li>
+<li><b>icon</b> - Path to a 16x16 pixel big icon that is to be displayed instead of the default icon.
+The path is relative to the plug-in directory which defines .buildDefinitions.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.option">option</a> ((<a href="#e.listOptionValue">listOptionValue</a>* | <a href="#e.enumeratedOptionValue">enumeratedOptionValue</a>*) , <a href="#e.enablement">enablement</a>*)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST option</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">superClass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">isAbstract&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) "false"<p class="code SchemaDtdAttlist">unusedChildren&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">category&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">resourceFilter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(project|file|all) "all"<p class="code SchemaDtdAttlist">valueType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(string|stringList|boolean|enumerated|includePath|definedSymbols|libs|userObjs|symbolFiles|includeFiles|libPaths|libFiles|undefIncludePath|undefDefinedSymbols|undefLibPaths|undefLibFiles|undefIncludeFiles|undefSymbolFiles) "string"<p class="code SchemaDtdAttlist">browseType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(none|file|directory) <p class="code SchemaDtdAttlist">value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">defaultValue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">command&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">commandFalse&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">helpSupplier&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">tip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">contextId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">valueHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">valueHandlerExtraArgument&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">applicabilityCalculator&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">contextId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+An option is associated with a tool. Options can contain boolean values, a simple text string, a selection from an enumerated list, or a list of values. Options also map the value they contain to a command-line flag, such as '-g' in the case of debugging symbol information for compilers.
+Options can also be associated with a toolchain. However in such a case the option must be contained in a optionCategory.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - A unique identifier for the option.</li>
+<li><b>name</b> - A descriptive name for the option.</li>
+<li><b>superClass</b> - The id of an option that this option is derived from.</li>
+<li><b>isAbstract</b> - An optional field that flags an option as abstract. An abstract option must be defined as a top level object in the model definition and cannot be selected by the user in the UI, but options derived from this option will inherit its attributes and children. The default is false.</li>
+<li><b>unusedChildren</b> - A semi-colon separated list of child IDs of the superclass' children that should not be automatically inherited by this element. Note: This attribute is not yet implemented.</li>
+<li><b>category</b> - The id of the option category for this option. The id can be the id of the tool which is also a category. The default category is the parent tool. Note that an optionCategory id must be supplied as the value for an option that is a child of a toolChain.</li>
+<li><b>resourceFilter</b> - Filters the display (and use) of the option by the type of the resource (currently Project or File). The value 'project' causes the option to be used when applied to a project. The value 'file' causes the option to be used when applied to a file. If 'all' is selected, the option applies to all types of resources. The default is "all".</li>
+<li><b>valueType</b> - General options can be one of the following types; 'string' for catch-all entries for options that cannot be easily defined any other way, 'string list' for entries that consist of a list of values such as defined symbols or paths, 'boolean' for options that have two values, and 'enumerated' for options that are one-of a list of values.
+
+Additional special types exist to flag options of special relevance to the build model; 'include', 'libs', 'userObjs' and 'definedSymbols'. You can pre-populate with optionValues, and they will display in the UI the same way the 'stringList' options do. The build model will look specifically for these value types when clients query for include paths and preprocessor defines. The makefile generator treats the libs and userObjs entries differently than other stringLists.</li>
+<li><b>browseType</b> - This value is used for string and stringlist (and related) options only. If you need a list option to prompt the user to browse for a file or directory when adding a new value, set the value of the attribute accordingly. By default the value is treated as no browsing needed.</li>
+<li><b>value</b> - Specifies the value assigned to the option by the end user or in a default configuration. For boolean values, specify truth using the string 'true'. All other strings will be treated as false.</li>
+<li><b>defaultValue</b> - Specifies the default value for the option if the 'value' attribute is blank. For enumerated options the optionEnums will be searched for the default. For string list options, all defined optionValues will be treated as defaults. For boolean values, specify truth using the string 'true'. All other strings will be treated as false.</li>
+<li><b>command</b> - An optional value that specifies the actual command that will be passed to the tool on the command line. The attribute value provides a "pattern" for specifying where the option "value" should be placed for options of type string and stringlist. If no ${value} is specified in the command, the option value is appended to the end of the specified command.</li>
+<li><b>commandFalse</b> - An optional value, used only with options of type Boolean, that specifies the actual command that will be passed to the tool on the command line when the value of the Boolean option is False.</li>
+<li><b>helpSupplier</b> - This field is unused in 2.0</li>
+<li><b>tip</b> - Specifies a "tip" that can be displayed in hover help or on the property page.</li>
+<li><b>contextId</b> - specify a fully qualified context id for supplying context sensitive help for an option.</li>
+<li><b>valueHandler</b> - The id of a class that implements the IManagedOptionValueHandler interface. This interface is used to dynamically manage the value of an option.</li>
+<li><b>valueHandlerExtraArgument</b> - An optional extra text string that is passed into the valueHandler.</li>
+<li><b>applicabilityCalculator</b> - Optional class which is used to determine dynamically at runtime whether the option is visible, enabled, and used in command line generation. This class must impelment the IOptionApplicability interface. If no calculator is specified then the option is always visible, enabled, and used in command line generation.</li>
+<li><b>contextId</b> - specify a fully qualified context id for supplying context sensitive help for an option.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.enumeratedOptionValue">enumeratedOptionValue</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST enumeratedOptionValue</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">isDefault&nbsp;(true | false) <p class="code SchemaDtdAttlist">command&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Defines a single value of an enumerated option.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - Unique identifier for the option enumeration.</li>
+<li><b>name</b> - A descriptive name for the enumeration.</li>
+<li><b>isDefault</b> - Flags this enumerated value as the default to apply to the option if the user has not changed the setting.</li>
+<li><b>command</b> - The command that the enumerated value translates to on the command line.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.listOptionValue">listOptionValue</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST listOptionValue</p>
+<p class="code SchemaDtdAttlist">value&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">builtIn&nbsp;(true | false) &gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+A value for defining individual elements of a list option.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>value</b> - The contents of the list item. The build model will apply the command defined in the option to each value in the list.</li>
+<li><b>builtIn</b> - This attribute flags the list value as a built-in value as opposed to something the user has entered. Built-ins will not be passed to clients that generate command lines (like the makefile generator). However, clients that need to take these settings into account (like the indexing service), will receive these settings. These values will appear grey in the UI.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.builder">builder</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST builder</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">superClass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">isAbstract&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) "false"<p class="code SchemaDtdAttlist">unusedChildren&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">command&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">arguments&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">buildfileGenerator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">errorParsers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">variableFormat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">isVariableCaseSensitive&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) "false"<p class="code SchemaDtdAttlist">reservedMacroNames&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">reservedMacroNameSupplier&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">macroInputFileNameValue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">macroInputFileExtValue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">macroInputFileBaseNameValue&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">macroInputFileRelPathValue&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">macroInputDirRelPathValue&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">macroOutputFileNameValue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">macroOutputFileExtValue&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">macroOutputFileBaseNameValue&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">macroOutputFileRelPathValue&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">macroOutputDirRelPathValue&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">versionsSupported&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">convertToId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">supportsManagedBuild&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) <p class="code SchemaDtdAttlist">autoBuildTarget&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">incrementalBuildTarget&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">cleanBuildTarget&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">ignoreErrCmd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">parallelBuildCmd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">isSystem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) &gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Represents the utility that drives the build process (typically, but not necessarily, a variant of "make").</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - A unique identifier for the builder that will be used by the build model.</li>
+<li><b>name</b> - Human-readable name for the builder to be used in the UI.</li>
+<li><b>superClass</b> - The id of a builder that this builder is derived from.</li>
+<li><b>isAbstract</b> - An optional field that flags a builder as abstract. An abstract builder must be defined as a top level object in the model definition and cannot be selected by the user in the UI, but builders derived from this builder will inherit its attributes and children. The default is false.</li>
+<li><b>unusedChildren</b> - A semi-colon separated list of child IDs of the superclass' children that should not be automatically inherited by this element. Note: This attribute is not yet implemented.</li>
+<li><b>command</b> - Specifies the default command to start the build utility for your toolchain. If the user changes this through the UI, the overriden value will be stored in the project build file. The build model will default to this value if the user ever resets a change. The default is 'make'.</li>
+<li><b>arguments</b> - Specifies the additional, default arguments that will be passed to the build utility when it is called by the builder. If the user changes the flags through the UI, the overriden value will be stored in the project build settings file. The build model will default to this value if the user ever resets a change. The default is '-k'.</li>
+<li><b>buildfileGenerator</b> - Allows you to supply a custom build file generator that conforms to the <code>IManagedBuilderMakefileGenerator</code> interface.</li>
+<li><b>errorParsers</b> - Specifies the default list of error parsers used by the builder. These error parsers are added to this list specified by the parent tool-chain. It is an ordered, semi-colon separated list of parser IDs. The order specifies the order in which the error parsers are invoked during a build.</li>
+<li><b>variableFormat</b> - The value of this attribute should be set to the expression representing the builder variable format. For example, to generate macros with the ${macro} format, the attribute would contain ${=}. To generate macros with the @macro format, the attribute would contain @=.
+This information would be used wile buildfile generation to keep the environment build macros unresolved in the makefile.
+If the attribute is not specified or contains the empty string, this would mean that the builder can not treat environment variables as its own variables. In this case, the build macros that contain environment variables are resolved by MBS to their actual value.</li>
+<li><b>isVariableCaseSensitive</b> - Specifies whether the builder variables are case sensitive or not. Can be set to either "true" or "false". The default is "true". If the builder does not support case-sensitive variables and there are some build environment variables that differ only in case (Environment variables on Unix-like operating systems are case sensitive), then those macros will always get resolved in the buildfile.</li>
+<li><b>reservedMacroNames</b> - Comma-separated list of reserved macro names. The macro name could contain either the exact name or the java regular expression. The latter could be used to supply the pattern of variable names that are generated by MBS in case the "buildVariable" attribute of the "InputType" element is not specified, etc.
+If this attribute is specified and the reservedMacroNameSupplier is not specified, the following macro names will be treated as reserved:
+1. a macro name that is equal to one of the names specified in the reservedMacroNames value
+2. a macro name that matches one of the regexp patterns specified in the reservedMacroNames value
+3. a macro name that is equal to one of the build variable names specified InputType elements of the tools used in the tool-chain
+If this attribute is not specified, MBS will assume that there are no reserved macro names that could conflict with the build environment variable macros, except names specified in the "buildVariable" attribute of the "InputType" elements: these names will always be treated as reserved</li>
+<li><b>reservedMacroNameSupplier</b> - Should be set to the name of the class that implements the IReservedMacroNameSupplier interface. If this attribute is specified the reservedMacroNames attribute is ignored, and the following macro names will be treated as reserved:
+1. macro names that the IReservedMacroNamesSupplier specifies as reserved
+2. a macro name that is equal to one of the build variable names specified int the InputType elements of the tools used in the tool-chain</li>
+<li><b>macroInputFileNameValue</b> - Represents the InputFileName macro value. The macro specifies the input file name. The input file has the following meaning:
+1. If a tool does not accept building multiple files of the primary input type with one tool invocation, the input file is the file of the primary input type being built.
+2. If a tool accepts building multiple files of the primary input type with one tool invocation the input file is undefined and the macros representing the input file contain information about one of the inputs of the primary input type being built.</li>
+<li><b>macroInputFileExtValue</b> - Represents the InputFileExt macro value. The macro specifies the extension of the input file.</li>
+<li><b>macroInputFileBaseNameValue</b> - Represents the InputFileBaseName macro value. The macro specifies the base name of the input file. That is the file name with an extension stripped.</li>
+<li><b>macroInputFileRelPathValue</b> - Represents the InputFileRelPath macro value. The macro specifies the input file path relative to the builder current directory.</li>
+<li><b>macroInputDirRelPathValue</b> - Represents the InputDirRelPath macro value. The macro specifies the input file directory path relative to the builder current directory.</li>
+<li><b>macroOutputFileNameValue</b> - Represents the OutputFileName macro value. The macro specifies the output file name. The output file has the following meaning:
+1. If a tool is not capable of producing multiple files of the primary output type with one tool invocation the output file is the file of the primary output type that is built with a given tool invocation.
+2. If a tool is capable of producing multiple files of the primary output type with one tool invocation the output file is undefined and the macros representing the output file contain information about one of the files of the primary output type that are built with a given tool invocation.</li>
+<li><b>macroOutputFileExtValue</b> - Represents the OutputFileExt macro value. The macro specifies the output file extension.</li>
+<li><b>macroOutputFileBaseNameValue</b> - Represents the OutputFileBaseName macro value. The macro specifies the output file base name. That is the output file name with an extension stripped.</li>
+<li><b>macroOutputFileRelPathValue</b> - Represents the OutputFileRelPath macro value. The macro specifies the output file path relative to the current builder directory.</li>
+<li><b>macroOutputDirRelPathValue</b> - Represents the OutputDirRelPath macro value. The macro specifies the output file directory path relative to the current builder directory.</li>
+<li><b>versionsSupported</b> - Specifies a comma delimited list of versions of this builder that can be loaded without invoking a converter.</li>
+<li><b>convertToId</b> - The identifier of a builder, that builders loaded using this definition should be converted to. MBS will invoke a proper converter.</li>
+<li><b>supportsManagedBuild</b> - Specifies whether the duilder supports managed build. Default value is true.</li>
+<li><b>autoBuildTarget</b> - represents the build target to be used for auto build</li>
+<li><b>incrementalBuildTarget</b> - represents the build target to be used for incremental build</li>
+<li><b>cleanBuildTarget</b> - represents the build target to be used for clean build</li>
+<li><b>ignoreErrCmd</b> - specifies the "ignore error" builder option.</li>
+<li><b>parallelBuildCmd</b> - specifies the "parallel build" builder option.
+If the builder supports specifying custom number of parallel jobs, the option definition may contain "*" the Build System sill substitute the "*" with the number of parallel threads to be used.</li>
+<li><b>isSystem</b> - the system elements are used by the system for specific needs and are not displayed in UI</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.targetPlatform">targetPlatform</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST targetPlatform</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">superClass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">isAbstract&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) "false"<p class="code SchemaDtdAttlist">unusedChildren&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">osList&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">archList&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">binaryParser&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Represents the os/architecture combination(s) upon which the outputs of a tool-chain can be deployed.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - A unique identifier for the target platform that will be used by the build model.</li>
+<li><b>name</b> - Human-readable name for the target platform to be used in the UI.</li>
+<li><b>superClass</b> - The id of a target platform that this target platform is derived from.</li>
+<li><b>isAbstract</b> - An optional field that flags a target platform as abstract. An abstract target platform must be defined as a top level object in the model definition and cannot be selected by the user in the UI, but target platforms derived from this targetPlatform will inherit its attributes and children. The default is false.</li>
+<li><b>unusedChildren</b> - A semi-colon separated list of child IDs of the superclass' children that should not be automatically inherited by this element. Note: This attribute is not yet implemented.</li>
+<li><b>osList</b> - This field lists the target operating systems on which the outputs of a tool-chain runs. The value should be a comma-separated list. Valid values are the strings returned by the Eclipse API Platform.getOS() and include strings like "win32", "linux", "solaris", "hpux", "aix". Do not specify this attribute or specify "all" to allow all target operating systems.</li>
+<li><b>archList</b> - This field lists the target architectures on which the outputs of a tool-chain runs. The value should be a comma-separated list. Valid values are the strings returned by the Eclipse API Platform.getOSArch() and include strings like "ia32". Do not specify this attribute or specify "all" to allow all target architectures.</li>
+<li><b>binaryParser</b> - Set this to the ID of the binary parser for the output format of your configuration.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.dynamicElementProvider">dynamicElementProvider</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST dynamicElementProvider</p>
+<p class="code SchemaDtdAttlist">class&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+An optional element that allows a tool implementor to supply a class that creates one or more dynamic toolchain elements. For example, the class might create a new tool reference based on the contents of a special file, and a new target that uses that reference.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>class</b> - The class that implements the <code>IManagedConfigElementProvider</code> interface. The logic of determining the elements is left to the implementer, but they must be correctly formed or the build model will have trouble loading.</li>
+<li><b>name</b> - A meaningful name for the type of element being provided.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.buildDefinitionStartup">buildDefinitionStartup</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST buildDefinitionStartup</p>
+<p class="code SchemaDtdAttlist">class&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+An optional element that allows a tool implementor to supply a class that insures a plugin that modifies any build configruation attributes (e.g. the build config id) will get loaded before initial project information is created.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>class</b> - The class that implements the <code>IManagedBuildDefinitionsStartup</code> interface. This class may not actually do anything, but additional initialization can be done here is desired.</li>
+<li><b>name</b> - A meaningful name for the type of element being provided.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.managedBuildRevision">managedBuildRevision</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST managedBuildRevision</p>
+<p class="code SchemaDtdAttlist">fileVersion&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<div class="ConfigMarkupElementDesc">
+<p>
+Version identifier for the managed build extension point. It is a string representation, consisting of three (3) tokens separated by a decimal point. The 3 tokens are positive integer numbers. For example, the following are valid version identifiers:
+ <ul>
+ <li><code>0.0.0</code></li>
+ <li><code>1.0.1234</code></li>
+ <li><code>1.9</code> (interpreted as <code>1.9.0</code>)</li>
+ <li><code>3</code> (interpreted as <code>3.0.0</code>)</li>
+ </ul>
+</p></div>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>fileVersion</b> - The actual string containing the three version tokens.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.envVarBuildPath">envVarBuildPath</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST envVarBuildPath</p>
+<p class="code SchemaDtdAttlist">pathType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(buildpathInclude|buildpathLibrary) <p class="code SchemaDtdAttlist">variableList&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">pathDelimiter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">buildPathResolver&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Defines a set of environment variables used by a tool to represent the build paths (include paths or library paths).</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>pathType</b> - The build path type. Can be one of the following: "buildpathInclude", "buildpathLibrary"</li>
+<li><b>variableList</b> - comma-separated list of the environment variable names used to store the include paths</li>
+<li><b>pathDelimiter</b> - Represent the delimiter used to separate the paths. If omitted the default system delimiter will be used. That is the ":" for Unix-like systems and the ";" for Win32 systems.
+If the "buildPathResolver" attribute is specified, the "pathDelimiter" is ignored</li>
+<li><b>buildPathResolver</b> - Should be set to the IBuildPathResolver interface that the tool-integrator can supply in order to provide his/her own logic of resolving the variable values to the build paths</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.enablement">enablement</a> (<a href="#e.and">and</a>* | <a href="#e.or">or</a>* | <a href="#e.not">not</a>* | <a href="#e.checkOption">checkOption</a>* | <a href="#e.checkString">checkString</a>* | <a href="#e.false">false</a>* | <a href="#e.checkHolder">checkHolder</a>* | <a href="#e.checkBuildProperty">checkBuildProperty</a>* | <a href="#e.hasNature">hasNature</a>*)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST enablement</p>
+<p class="code SchemaDtdAttlist">type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA "ALL"<p class="code SchemaDtdAttlist">attribute&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(command|commandFalse|defaultValue|value|artifactExtension) <p class="code SchemaDtdAttlist">value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">extensionAdjustment&nbsp;(true | false) &gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Contains boolean expression that specifies option applicability</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>type</b> - Represents the applicability type for this enablement.
+Can contain the following values:
+UI_VISIBILITY – the given enablement expression specifies whether the option is to be visible in UI,
+UI_ENABLEMENT – the given enablement expression specifies the enable state of the controls that represent the option in UI,
+CMD_USAGE – the given enablement expression specifies whether the option is to be used in command line
+CONTAINER_ATTRIBUTE - the given enablement expressions specifies thecontainer attribute value
+ALL – this value means the combination of all the above values.
+
+Several types could be specified simultaneously using the "|" as a delimiter, e.g.:
+type="UI_VISIBILITY|CMD_USAGE"</li>
+<li><b>attribute</b> - This attribute should be used only for the CONTAINER_ATTRIBUTE enablement to specify the name of the attribute for which this enablement applies. Currently the following option attributes are supported:
+"command"
+"commandFalse"
+"defaultValue"
+"value"
+"artifactExtension"</li>
+<li><b>value</b> - This attribute should be used only for the CONTAINER_ATTRIBUTE enablement to specify the value of the attribute specified in the "attribute" for which this enablement applies</li>
+<li><b>extensionAdjustment</b> - The attribute is valid for the CONTAINER_ATTRIBUTE enablement type.
+true specifies that the enablement is defined for adjusting extension elements (extension elements are adjusted on tool-chain definition load)
+false specifies that the enablement is defined for non-extension elements adjustment. This adjustment is performed, e.g. when the Build properties set is chenged for configuration
+Default value is true.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.and">and</a> (<a href="#e.and">and</a>* , <a href="#e.or">or</a>* , <a href="#e.not">not</a>* , <a href="#e.checkOption">checkOption</a>* , <a href="#e.checkString">checkString</a>* , <a href="#e.checkHolder">checkHolder</a>* , <a href="#e.checkBuildProperty">checkBuildProperty</a>*)&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Represents boolean "and" operation</p>
+<br><br>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.or">or</a> (<a href="#e.and">and</a>* , <a href="#e.or">or</a>* , <a href="#e.not">not</a>* , <a href="#e.checkOption">checkOption</a>* , <a href="#e.checkString">checkString</a>* , <a href="#e.checkHolder">checkHolder</a>* , <a href="#e.checkBuildProperty">checkBuildProperty</a>*)&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Represents boolean "or" operation</p>
+<br><br>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.not">not</a> (<a href="#e.and">and</a>* | <a href="#e.or">or</a>* | <a href="#e.not">not</a>* | <a href="#e.checkOption">checkOption</a>* | <a href="#e.checkString">checkString</a>* | <a href="#e.checkHolder">checkHolder</a>* | <a href="#e.checkBuildProperty">checkBuildProperty</a>*)&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Represents boolean "not" operation</p>
+<br><br>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.checkOption">checkOption</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST checkOption</p>
+<p class="code SchemaDtdAttlist">optionId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">holderId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">isRegex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA "false"<p class="code SchemaDtdAttlist">otherOptionId&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">otherHolderId&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Performs an option value check. The option value can be checked either agains some pre-defined value or against the value of another option</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>optionId</b> - The option id. The default is the id of the option that holds this expression. When searching for the option to be checked, MBS will examine all the options the holder contains along with all superclasses of each option to find the option with the specified id.</li>
+<li><b>holderId</b> - The option holder id that holds the option. The default is the id of the holder that holds the container of this expression. When searching for the needed holder, MBS will examine all the holders the current configuration contains along with all superclasses of each holder in order to find the holder with the specified id.</li>
+<li><b>value</b> - Specifies the expected value. If the current option value matches the value specified in this attribute, the checkOption element is treated as true, otherwise – as false.
+The expected value could be specified either as a string that may contain build macros or as a regular expression. During the comparison, the build macros are resolved and the option value is checked to match the resulting string or regular expression. The way the expected value is specified and treated depends on the value of the isRegex attribute</li>
+<li><b>isRegex</b> - Specifies whether the string specified in the "value" attribute should be treated as a regular eexpression. The default is false</li>
+<li><b>otherOptionId</b> - The id of the option which is to be compared with the option specified with the “optionId” attribute. The default is the id of the option that holds this expression. If the “value” attribute is specified, both the “otherOptionId” and the “otherHolderId” attributes are ignored. When searching for the option to be checked, MBS will examine all the options the holder contains along with all superclasses of each option to find the option with the specified id.</li>
+<li><b>otherHolderId</b> - The option holder id that holds the option specified with the “otherOptionId” attribute. The default is the id of the holder that holds the container of this expression. If the “value” attribute is specified, both the “otherOptionId” and the “otherHolderId” attributes are ingnored. When searching for the needed holder, MBS will examine all the holders the current configuration contains along with all superclasses of each holder in order to find the holder with the specified id.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.checkString">checkString</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST checkString</p>
+<p class="code SchemaDtdAttlist">string&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">value&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">isRegex&nbsp;CDATA "false"&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Performs a string check.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>string</b> - Represents the string to be checked. The string will typically contain the build macros.</li>
+<li><b>value</b> - Specifies the expected value. If the current string specified in the “string” attribute matches the value specified in this attribute, the checkString element is treated as true, otherwise – as false.
+The expected value could be specified either as a string that might contain the build macros or as a regular expression.
+The way the value is specified and treated depends on the value of the isRegex attribute.</li>
+<li><b>isRegex</b> - Specifies whether the string specified in the "value" attribute should be treated as a regular eexpression. The default is false</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.false">false</a> (#PCDATA)&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Represents the "false" value. This element can be used as a direct child of the "enablement" element to represent that the given option applicability is disabled. E.g. to specify that the option is never displayed in UI or never used in the command line.</p>
+<br><br>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.checkHolder">checkHolder</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST checkHolder</p>
+<p class="code SchemaDtdAttlist">holderId&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Performs the holder check.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>holderId</b> - Specifies the holder id to be checked. The checkHolder is treated as true if the id specified in this attribute matches with the option's holder id or the id of some holder's super-class. Otherwise the checkHolder is treated as false.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.checkBuildProperty">checkBuildProperty</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST checkBuildProperty</p>
+<p class="code SchemaDtdAttlist">property&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">value&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Performs the Build Property check</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>property</b> - specifies the id of the Build Property to be checked</li>
+<li><b>value</b> - Specifies the Build Property Value id to be checked</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.supportedProperties">supportedProperties</a> (<a href="#e.property">property</a>)&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+contains the list of supported properties</p>
+<br><br>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.property">property</a> (<a href="#e.value">value</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST property</p>
+<p class="code SchemaDtdAttlist">id&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+contains the supported values for the property</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - the property type id</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.value">value</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST value</p>
+<p class="code SchemaDtdAttlist">id&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+represents the property value</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - represents the property value id</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.folderInfo">folderInfo</a> (<a href="#e.toolChain">toolChain</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST folderInfo</p>
+<p class="code SchemaDtdAttlist">resourcePath&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">exclude&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) &gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Represents per-folder settings.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>resourcePath</b> - Project-relative resource path</li>
+<li><b>exclude</b> - Specifies whether the resource is excluded from building in the parent configuration. The default is false. The resourceConfiguration element retains its tool children, if any exist, even when excluded from the build.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.fileInfo">fileInfo</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST fileInfo</p>
+<p class="code SchemaDtdAttlist">resourcePath&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">exclude&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(true | false) <p class="code SchemaDtdAttlist">rcbsApplicability&nbsp;(before|after|override|disable) <p class="code SchemaDtdAttlist">toolsToInvoke&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Represents per-file settings.
+This element has the same meaning as resourceConfiguration.
+It is added for consistency with the folderInfo element.
+The only difference between this element and the resourceConfiguration is that resourceConfiguration specifies the resource full path, while the fileInfo specifies project-relative resource path in the same way as the folderInfo does.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>resourcePath</b> - Project-relative resource path</li>
+<li><b>exclude</b> - Specifies whether the resource is excluded from building in the parent configuration. The default is false. The resourceConfiguration element retains its tool children, if any exist, even when excluded from the build.</li>
+<li><b>rcbsApplicability</b> - Identifies how the user desires to apply a resource custom build step:
+ 1. Apply rcbs tool before any other tools defined for the resource.
+ 2. Apply rcbs tool after any other tools defined for the resource.
+ 3. Apply rcbs tool overriding any other tools defined for the resource.
+ 4. Disable (don't apply) the rcbs tool.</li>
+<li><b>toolsToInvoke</b> - Identifies which tools to invoke by a semicolon separated list of child tool ids. Applies as follows:
+ 1. Defaults to all tools in the order found
+ 2. Use specified ordered list of children to invoke
+ 3. If empty string, treat as if no resource configuration existed, i.e., use project level tool.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.hasNature">hasNature</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST hasNature</p>
+<p class="code SchemaDtdAttlist">natureId&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Checks whether the project containing the resource has a given nature</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>natureId</b> - The id of the nature</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter examples here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>An implementation of this extension point is supplied in <samp>org.eclipse.cdt.ui</samp>
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+Copyright (c) 2003, 2006 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 on the <a href="http://www.eclipse.org/legal/epl-v10.html"> Eclipse</a> website.
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_buildProperties.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_buildProperties.html
new file mode 100644
index 00000000000..4a70deb8edc
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_buildProperties.html
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Build Properties</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Build Properties</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.managedbuilder.core.buildProperties<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>[Enter the first release in which this extension point appears.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>[Enter description of this extension point.]<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.propertyType">propertyType</a>* , <a href="#e.propertyValue">propertyValue</a>*)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+The build properties extension point is used to specify the property types and their values to be used with the tool definitions. The primary use if the build properties for now is option anablement/adjustment expressions.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.propertyType">propertyType</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST propertyType</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+specifies the property type</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - the property type id</li>
+<li><b>name</b> - translatable property type name</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.propertyValue">propertyValue</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST propertyValue</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">property&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - property value id</li>
+<li><b>name</b> - translatable property value name</li>
+<li><b>property</b> - the property type id this value belongs to</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter extension point usage example here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_projectConverter.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_projectConverter.html
new file mode 100644
index 00000000000..62e5866be7f
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_projectConverter.html
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Converter</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Converter</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.managedbuilder.core.Converter<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>CDT version 3.0
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>This extension point allows a tool integrator to contribute a project-type/tool-chain/tool/builder converter to MBS.<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.converter">converter</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.converter">converter</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST converter</p>
+<p class="code SchemaDtdAttlist">fromId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">toId&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">mbsVersion&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This extension point allows a tool integrator to contribute a project-type/tool-chain/tool/builder converter to MBS. Converters can be used to upgrade to newer versions, change the project-type, or to perform conversions between different tool chains/tools/buiders.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>fromId</b> - The 'fromId' is project-type/tool-chain/tool/builder id - a regular expression.</li>
+<li><b>toId</b> - The 'toId' is project-type/tool-chain/tool/builder id - a regular expression.</li>
+<li><b>mbsVersion</b> - The MBS version the converter was written for.</li>
+<li><b>class</b> - The class that implements the IConvertManagedBuildObject interface</li>
+<li><b>id</b> - The id of the converter</li>
+<li><b>name</b> - The name of the converter that is used in User Interface to display to the user</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6><p>
+ <pre class="Example"><span class="code SchemaTag">
+ &lt;extension point=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.managedbuilder.core.converter&quot;</span><span class="code SchemaTag">&gt;
+ &lt;converter
+ fromId=</span><span class="code SchemaCstring">&quot;project-type/tool-chain/tool/builder id&quot;</span><span class="code SchemaTag">
+ toId=</span><span class="code SchemaCstring">&quot;project-type/tool-chain/tool/builder id&quot;</span><span class="code SchemaTag">
+ mbsVersion=</span><span class="code SchemaCstring">&quot;The MBS version the converter was written for&quot;</span><span class="code SchemaTag">
+ class=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.managedbuilder.core.GccConverter&quot;</span><span class="code SchemaTag">&gt;
+ &lt;/converter&gt;
+ &lt;/extension&gt;
+ </span></pre>
+ </p>
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>"Example plugin" has default implementation of the converter
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+Copyright (c) 2005 Intel 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 http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+Intel Corporation - Initial API and implementation
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_tcModificationInfo.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_tcModificationInfo.html
new file mode 100644
index 00000000000..15fab392509
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_tcModificationInfo.html
@@ -0,0 +1,81 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ToolChain Modification Info</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">ToolChain Modification Info</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.managedbuilder.core.tcModificationInfo<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6><p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.conflictDefinition">conflictDefinition</a>*)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.matchObject">matchObject</a> (<a href="#e.pattern">pattern</a>*)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST matchObject</p>
+<p class="code SchemaDtdAttlist">objectIds&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">objectType&nbsp;&nbsp;&nbsp;&nbsp;(toolChain|tool|builder|configuration) <p class="code SchemaDtdAttlist">searchScope&nbsp;&nbsp;&nbsp;(ALL_EXTENSION_SUPERCLASSES|EXTENSION_OBJECT) "EXTENSION_SUPERCLASSES"<p class="code SchemaDtdAttlist">objectIdsType&nbsp;(REGEXP|EXACT_MATCH) "EXACT_MATCH"&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+specifies the buildObject pattern to be matched.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>objectIds</b> - Required if no "pattern" objects are specified.
+<br>represents one or more buils object ID [patterns] separated with ";"
+<br>Note that specifying several IDs with one matchObject has exactly the same meaning as specifying those IDs in separate matchObjects combined with the "select" element.
+<br>When both "pattern" objects and "objectIds" are defined, patterns defined in both of them are treated as valid patterns.</li>
+<li><b>objectType</b> - Specifies the type of build objects presented with this element.
+<br>Can have one of the following values:
+<br>TOOL - to represent a tool
+<br>TOOLCHAIN - to represent a tool-chain
+<br>BUILDER - to represent a builder</li>
+<li><b>searchScope</b> - specifies how the object is to be searched.
+Can contain one of the following values:
+<br>1. EXTENSION_OBJECT - the direct extension superclass is to be checked
+<br>2. ALL_EXTENSION_SUPERCLASSES - object's extension supet-classes are to be checked.
+<br>The default value is "EXTENSION_OBJECT"</li>
+<li><b>objectIdsType</b> - </li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.conflictDefinition">conflictDefinition</a> (<a href="#e.matchObject">matchObject</a>)&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+represents templates for objects conflicting with each other.
+<br> See the "Calculating Tool-chain modification info from the “objects-set” info" section for more information
+<br>the "status" object for this element represents the status information to be applied in case the given conflictingSet information is not fulfilled.</p>
+<br><br>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.pattern">pattern</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST pattern</p>
+<p class="code SchemaDtdAttlist">objectIds&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(EXACT_MATCH|REGEXP) "EXACT_MATCH"<p class="code SchemaDtdAttlist">searchScope&nbsp;&nbsp;&nbsp;(ALL_EXTENSION_SUPERCLASSES|EXTENSION_OBJECT) "EXTENSION_SUPERCLASSES"<p class="code SchemaDtdAttlist">objectIdsType&nbsp;(REGEXP|EXACT_MATCH) &gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+specifies a string pattern</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>objectIds</b> - pattern value</li>
+<li><b>type</b> - specifies the value type.
+<br>May contain the following values:
+<br> EXACT_MATCH - value is exact string representation
+<br> REGEXP - value is a regular expressions
+<br>The default is "EXACT_MATCH".</li>
+<li><b>searchScope</b> - specifies how the object is to be searched.
+Can contain one of the following values:
+<br>1. EXTENSION_OBJECT - the direct extension superclass is to be checked
+<br>2. ALL_EXTENSION_SUPERCLASSES - object's extension supet-classes are to be checked.
+
+<br>If undefined, the parent search scope will be used, i.e. when used with the matchObject, search scope defined for that matchObject will be used</li>
+<li><b>objectIdsType</b> - </li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_ui_newWizardPages.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_ui_newWizardPages.html
new file mode 100644
index 00000000000..d650931fcc1
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_ui_newWizardPages.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Custom Wizard Pages for MBS New Project Wizards</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Custom Wizard Pages for MBS New Project Wizards</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.managedbuilder.ui.newWizardPages<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>3.0
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>This extension point allows for the specification of pages to the New Managed C/C++ wizards. Via this extension point, the developer may specify one or more wizard pages to add to the wizard, and optionally only add these pages if certain conditions on the project type, project toolchain, and project nature are met. The developer may also specify a Java class which performs any operations pursuant to the state of the wizard when the user clicks Finish.<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.wizardPage">wizardPage</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Extensions to this extension point must contain at least one wizardPage child element.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.wizardPage">wizardPage</a> (<a href="#e.nature">nature</a>* , <a href="#e.toolchain">toolchain</a>* , <a href="#e.projectType">projectType</a>*)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST wizardPage</p>
+<p class="code SchemaDtdAttlist">ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">pageClass&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">operationClass&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Each instance of this element defines an additional page which is added to the New Project wizard. Pages are added after the default pages provided by MBS. Pages are added in the order they are discovered.
+
+Note that the IWizardPage interface allows a page to specify programmatically and dynamically at runtime what its previous and next pages are. This element does not trump that behaviour, but rather just specifies the order in which the pages are added to the wizard (and hence the order in which the pages appear if they do not override the previous and next page methods).
+
+Wizard pages as GUI elements by themselves are really not all that useful. More than likely if someone is defining their own wizard pages it’s because they need some additional operations to happen upon project creation in addition to the stock behaviour of creating a basic project, and they want to use their new wizard pages to provide a front end to these operations.
+
+As such, along with a specification of the GUI wizard page, ISVs may specify a runnable operation that will be executed in the wizard’s doRunEpilogue() method. These contributions will all be executed in the order that the wizard pages were added to the wizard. Not all pages need have such a contribution however, as ISVs may need to perform all the operations associated with their pages as a group. In cases such as this the ISV can define an operation for one of the pages and it can pull data from any of the other pages as required.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>ID</b> - A unique identifier for the page which will be used to reference the page.</li>
+<li><b>pageClass</b> - Specifies the Java class which implements the added page. This class must implement the org.eclipse.jface.wizard.IWizardPage interface.
+
+For convenience, there is an org.eclipse.cdt.managedbuilder.ui.wizards.MBSCustomPage abstract class which provides a default implementation of the getNextPage() and getPreviousPage() members that orders pages in the order they are discovered by the wizard.</li>
+<li><b>operationClass</b> - Specifies the Java class which implements the operations associated with this page. The class must implement either the java.lang.Runnable interface, or the org.eclipse.jface.operation.IRunnableWithProgress interface if progress reporting is desired.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.nature">nature</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST nature</p>
+<p class="code SchemaDtdAttlist">natureID&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This optional child element of wizardPage specifies the project nature(s) for which the additional pages should apply. One instance of this element is provided per nature supported.
+
+ This would for example allow one to add pages to the New Managed C Project wizard but not the New Managed C++ project wizard, or other hypothetical natures that might be supported by MBS in the future (e.g. someday there might be a Fortran nature).
+If no natureID elements are specified, then it is assumed that the page potentially applies to all project natures, although it may still be excluded based on project type or toolchain.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>natureID</b> - The unique ID of a nature (org.eclipse.core.resources.natures) for which this page should appear.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.toolchain">toolchain</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST toolchain</p>
+<p class="code SchemaDtdAttlist">toolchainID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">versionsSupported&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This is an optional child element of wizardPage which specifies a toolchain for which the additional pages should apply. One instance of this element is provided per toolchain supported by the page.
+
+If no toolchain elements are specified, then it is assumed that the page potentially applies to all toolchains, although it may still be excluded based on project type or project nature.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>toolchainID</b> - The unique ID of a toolchain for which this page should appear.</li>
+<li><b>versionsSupported</b> - A comma separated list of specific versions of the toolchain that are supported by the page. If not specified, it is assumed that this page supports the toolchain regardless of version.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.projectType">projectType</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST projectType</p>
+<p class="code SchemaDtdAttlist">projectTypeID&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This is an optional child element of wizardPage which specifies a projectType for which the additional pages should apply. One instance of this element is provided per toolchain supported by the page.
+
+If no projectType elements are specified, then it is assumed that the page potentially applies to all projectTypes, although it may still be excluded based on toolchain or nature.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>projectTypeID</b> - The unique ID of a projectType for which this page should appear.</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6><extension
+ point="org.eclipse.cdt.managedbuilder.ui.newWizardPages">
+ <wizardPage
+ ID="org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.AlwaysPresentWizardPage"
+ pageClass="org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.AlwaysPresentWizardPage"/>
+ <wizardPage
+ ID="org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.NatureAWizardPage"
+ pageClass="org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.NatureAWizardPage">
+ <nature natureID="A"/>
+ </wizardPage>
+ <wizardPage
+ ID="org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.NatureBWizardPage"
+ pageClass="org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.NatureBWizardPage">
+ <nature natureID="B"/>
+ </wizardPage>
+ <wizardPage
+ ID="org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.ToolchainCWizardPage"
+ pageClass="org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.ToolchainCWizardPage">
+ <toolchain toolchainID="C"/>
+ </wizardPage>
+ <wizardPage
+ ID="org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.ProjectTypeDWizardPage"
+ pageClass="org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.ProjectTypeDWizardPage">
+ <projectType projectTypeID="D"/>
+ </wizardPage>
+ <wizardPage
+ ID="org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.ProjectTypeEWizardPage"
+ pageClass="org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.ProjectTypeEWizardPage">
+ <projectType projectTypeID="E"/>
+ </wizardPage>
+ <wizardPage
+ ID="org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.ToolchainFWizardPage"
+ pageClass="org.eclipse.cdt.managedbuilder.ui.tests.wizardPages.ToolchainFWizardPage">
+ <toolchain toolchainID="F"/>
+ </wizardPage>
+ </extension>
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>None.
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+Copyright (c) 2005 Texas Instruments Incorporated 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
+http://www.eclipse.org/legal/epl-v10.html
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_CDTWizard.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_CDTWizard.html
new file mode 100644
index 00000000000..35d54d04c41
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_CDTWizard.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>CDTWizard</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">CDTWizard</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.ui.CDTWizard<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>[Enter the first release in which this extension point appears.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>[Enter description of this extension point.]<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.wizard">wizard</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.wizard">wizard</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST wizard</p>
+<p class="code SchemaDtdAttlist">class&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">parent&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>class</b> - </li>
+<li><b>parent</b> - </li>
+<li><b>name</b> - </li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter extension point usage example here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_CHelpProvider.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_CHelpProvider.html
new file mode 100644
index 00000000000..00fc9d5bc86
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_CHelpProvider.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>C Help Provider</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">C Help Provider</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.ui.CHelpProvider<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>[Enter the first release in which this extension point appears.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>[Enter description of this extension point.]<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.provider">provider</a>)+&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.provider">provider</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST provider</p>
+<p class="code SchemaDtdAttlist">class&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>class</b> - </li>
+<li><b>id</b> - </li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter extension point usage example here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_ConfigManager.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_ConfigManager.html
new file mode 100644
index 00000000000..99074fe1e5f
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_ConfigManager.html
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ConfigManager</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">ConfigManager</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.ui.ConfigManager<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>CDT 4.0
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>In the new CDT 4.0 project model, you should be able to override the dialog
+that gets displayed when clicking the manage button on any of the C/C++
+project property pages,<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.manager">manager</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.manager">manager</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST manager</p>
+<p class="code SchemaDtdAttlist">class&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>class</b> - Class which implements IConfigManager interface</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter extension point usage example here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+/**********************************************************************
+ * Copyright (c) 2007 Intel 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Intel Corporation - initial API and implementation
+ **********************************************************************/
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_DocCommentOwner.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_DocCommentOwner.html
new file mode 100644
index 00000000000..70307a69f74
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_DocCommentOwner.html
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>DocCommentOwner</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">DocCommentOwner</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.ui.DocCommentOwner<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>5.0
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>This extension point allows contribution of document comment detection, presentation and editing behaviours to the CDT editor.<p>
+
+Where C and C++ define single and multiline comments, there is no corresponding language level definition of distinguished comments recognized by documentation tools. A list of these is available here: <a href="http://en.wikipedia.org/wiki/Comparison_of_documentation_generators">Wikipedia Comparison of Documentation Generators</a><p>
+
+The customization for single and multi-line comments is handled by two contributed implementations of the same interface <ul><li><code>org.eclipse.cdt.ui.text.doctools.IDocCommentViewerConfiguration</code></ul>
+The javadoc for this interface describes the individual editor features that can be contributed.<p>
+
+A level of understanding of the eclipse and CDT editor infrastructure is needed in order to contribute to this extension point. A good starting point is to look at the GenericDocTag classes in the package - see the API Information section below.<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.owner">owner</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.owner">owner</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST owner</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">multiline&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">singleline&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - a globally unique ID representing this owner.</li>
+<li><b>name</b> - a human readable name for the CDT UI</li>
+<li><b>multiline</b> - The comment viewer configuration that should be used for detection, presentation and editing of C/C++ multiline comments</li>
+<li><b>singleline</b> - The comment viewer configuration that should be used for detection, presentation and editing of C/C++ singleline comments</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6><pre class="Example"><span class="code SchemaTag">
+&lt;extension
+ point=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.ui.DocCommentOwner&quot;</span><span class="code SchemaTag">&gt;
+ &lt;owner
+ id=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.ui.doxygen&quot;</span><span class="code SchemaTag">
+ name=</span><span class="code SchemaCstring">&quot;Doxygen&quot;</span><span class="code SchemaTag">
+ multiline=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.ui.text.doctools.doxygen.DoxygenMultilineConfiguration&quot;</span><span class="code SchemaTag">
+ singleline=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.ui.text.doctools.doxygen.DoxygenSingleConfiguration&quot;</span><span class="code SchemaTag">&gt;
+ &lt;/owner&gt;
+&lt;/extension&gt;
+</span></pre>
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>An abstract implementation of some key interfaces is given in the package <code>org.eclipse.cdt.ui.text.doctools.generic</code>
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+Copyright (c) 2008 Symbian Software Systems 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
+<a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_HelpInfo.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_HelpInfo.html
new file mode 100644
index 00000000000..a262c59c79d
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_HelpInfo.html
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Allows contributing the map files to the map-file-based CDT CHelpProvider.</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Allows contributing the map files to the map-file-based CDT CHelpProvider.</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.ui.HelpInfo<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>CDT 4.0.2
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>Allows contributing the map files to
+the map-file-based CDT CHelpProvider.<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.helpInfo">helpInfo</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.helpInfo">helpInfo</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST helpInfo</p>
+<p class="code SchemaDtdAttlist">file&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">format&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Allows defining map-file path relative to the plugin directory.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>file</b> - Contains map-file path relative to the plugin directory.</li>
+<li><b>format</b> - May contain ID of map file format.
+For now, there's only one (default) help map format.</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6><extension
+ point="org.eclipse.cdt.ui.HelpInfo"
+ id="org.eclipse.cdt.ui.help.cpp"
+ name="C++ Help">
+ <helpInfo file="data1.xml"/>
+ <helpInfo file="data2.xml"/>
+ <helpInfo file="data3.xml"/>
+</extension>
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_IndexerPage.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_IndexerPage.html
new file mode 100644
index 00000000000..c869b7b00be
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_IndexerPage.html
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Indexer Page</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Indexer Page</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.ui.IndexerPage<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>[Enter the first release in which this extension point appears.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>[Enter description of this extension point.]<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.indexerUI">indexerUI</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.indexerUI">indexerUI</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST indexerUI</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">indexerID&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - a unique id for this indexer page</li>
+<li><b>name</b> - a UI name for this page to be used in the UI</li>
+<li><b>indexerID</b> - the unique id of the indexer that this UI is associated with</li>
+<li><b>class</b> - the class that implements <code>org.eclipse.cdt.ui.index2.AbstractIndexerPage</code></li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter extension point usage example here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_PathContainerPage.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_PathContainerPage.html
new file mode 100644
index 00000000000..6f29c1a4e11
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_PathContainerPage.html
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Path Container Page</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Path Container Page</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.ui.PathContainerPage<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>[Enter the first release in which this extension point appears.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>[Enter description of this extension point.]<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.PathContainerPage">PathContainerPage</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.PathContainerPage">PathContainerPage</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST PathContainerPage</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">class&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">icon&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - </li>
+<li><b>class</b> - </li>
+<li><b>name</b> - </li>
+<li><b>icon</b> - </li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>[Enter extension point usage example here.]
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>[Enter information about supplied implementation of this extension point.]
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_ProposalFilter.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_ProposalFilter.html
new file mode 100644
index 00000000000..ab0c6224b36
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_ProposalFilter.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Completion Proposal Filter</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Completion Proposal Filter</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.ui.ProposalFilter<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>CDT 3.1
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>When the user requests code completion for an identifier prefix then proposals are gathered from a variety of sources. It is quite common that several proposals for the same completion are gathered. After gathering it is therefore necessary to filter proposals and present them in an optimal ordering to the user.
+
+The notion of what is "optimal" may vary from one application to another. This extension point allows the contribution of completion filters which best suit the needs of the user in any given situation.
+
+The decision about which filter will actually be used remains with the user who can select his preference from a list of all contributed filters (menu Window - Preferences - C/C++ - Editor - Content Assist).<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.ProposalFilter">ProposalFilter</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.ProposalFilter">ProposalFilter</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST ProposalFilter</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">class&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - The required unique id of the ProposalFilter</li>
+<li><b>name</b> - The required name of the ProposalFilter. This name will appear in the preferences combo and should therefore be informative for the user.</li>
+<li><b>class</b> - The required fully qualified name of the implementing class which must implement org.eclipse.cdt.ui.text.contentassist.IProposalFilter</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>See the default implementation in org.eclipse.cdt.internal.ui.text.contentassist.DefaultProposalFilter as an example.
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">API Information: </h6>ProposalFilters must implement interface <code>org.eclipse.cdt.ui.text.contentassist.IProposalFilter<code>.
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>The default implementation in org.eclipse.cdt.internal.ui.text.contentassist.DefaultProposalFilter is the default filtering method which is used as long as the user preference is not changed.
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+Copyright (c) 2006 Norbert Ploett 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
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+Norbert Ploett (Siemens) - Initial Contribution
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_cPropertyTab.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_cPropertyTab.html
new file mode 100644
index 00000000000..fe859cd0011
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_cPropertyTab.html
@@ -0,0 +1,117 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>cPropertyTab</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">cPropertyTab</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.managedbuilder.ui.cPropertyTab<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>4.0
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>Implementation of property/preference UI element.
+
+There're 2 ways to display property/preference data:
+either on pages with tabs, or on simple pages.
+
+In first case, each cPropertyTab extending class
+represents single tab in tabfolder.
+In second case, cPropertyTab extending class
+represents whole page contents (except header
+elements which are common for all pages).
+
+Note that cPropertyTab extending class ("tabs" below) do not
+distinguish these 2 cases, moreover, they may be shown both
+in multi-tab and single-tab mode. It's up to page to select
+displaying mode.
+
+In multi-tab page, tabs are displayed in order defined by
+their weights.<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.tab">tab</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.tab">tab</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST tab</p>
+<p class="code SchemaDtdAttlist">icon&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">class&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">parent&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">tooltip&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">weight&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">helpId&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>icon</b> - Icon to be displayed for corresponding tab in tabfolder.
+Ignored for single-tab pages</li>
+<li><b>class</b> - Class implementing org.eclipse.cdt.managedbuilder.ui.newproperties.ICPropertyTab</li>
+<li><b>name</b> - Name of tab in tabfolder.
+Ignored for single-tab pages.</li>
+<li><b>parent</b> - Class name for container page.
+Usually pages are to be derived from
+org.eclipse.cdt.ui.newui.AbstractPage,
+but it is not obligatory.</li>
+<li><b>tooltip</b> - Text of tooltip shown over the tab.</li>
+<li><b>weight</b> - Abstract value to be used for sorting tabs inside of tab folder.
+Ignored for single-tab page.</li>
+<li><b>helpId</b> - Help context Id for given tab.</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6><extension
+ point="org.eclipse.cdt.ui.cPropertyTab">
+ <tab
+ class="org.eclipse.cdt.managedbuilder.ui.newui.DiscoveryTab"
+ icon="icons/elcl16/discovery.gif"
+ name="Discovery options"
+ weight="100"
+ parent="org.eclipse.cdt.ui.newui.Page_PathAndSymb"/>
+ </extension>
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>Implementors in org.eclipse.cdt.ui.newui:
+BinaryParsTab
+CLocationOutputTab
+CLocationSourceTab
+CLocationTab
+EnvironmentTab
+ErrorParsTab
+ExpIncludeTab
+ExpLibraryPathTab
+ExpLibraryTab
+ExpSymbolTab
+ICPropertyTab
+IncludeTab
+LanguagesTab
+LibraryPathTab
+LibraryTab
+RefsTab
+SDKsTab
+SymbolTab
+
+Implementors in org.eclipse.cdt.managedbuilder.ui.newui:
+ArtifactTab
+BuilderSettingsTab
+BuildStepsTab
+CBuildLocationOutputTab
+CPropertyVarsTab
+DiscoveryTab
+ToolChainEditTab
+ToolSettingsTab
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+/*******************************************************************************
+ * Copyright (c) 2007 Intel 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Intel Corporation - initial API and implementation
+ *******************************************************************************/
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_completionProposalComputer.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_completionProposalComputer.html
new file mode 100644
index 00000000000..199c9fc50af
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_completionProposalComputer.html
@@ -0,0 +1,91 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Completion Proposal Computer</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Completion Proposal Computer</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.ui.completionProposalComputer<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>4.0
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>This extension point allows to contribute completion proposal computers to participate in the content assist process of the C/C++ editor.<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.completionProposalComputer">completionProposalComputer</a> | <a href="#e.proposalCategory">proposalCategory</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>point</b> - The fully qualified identifier of the target extension point</li>
+<li><b>id</b> - The identifier of the extension instance, unique within the declaring plug-in (the plug-in's identifier will be prepended to form a platform-wide unique id)</li>
+<li><b>name</b> - The optional name of the extension instance</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.completionProposalComputer">completionProposalComputer</a> (<a href="#e.partition">partition</a>)*&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST completionProposalComputer</p>
+<p class="code SchemaDtdAttlist">class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">activate&nbsp;&nbsp;&nbsp;(true | false) "false"<p class="code SchemaDtdAttlist">categoryId&nbsp;CDATA "org.eclipse.cdt.ui.defaultProposalCategory"&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+A proposal computer contribution. If no partition types are specified, the computer is added to all partition types.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>class</b> - The name of the class that implements the contributed computer. The
+class must be public and implement
+<samp>org.eclipse.cdt.ui.text.contentassist.ICompletionProposalComputer</samp>
+and must have a public 0-argument constructor.</li>
+<li><b>activate</b> - If the attribute is set to "true" it will force this plug-in to be loaded on content assist invocation.</li>
+<li><b>categoryId</b> - The id of a <tt>proposalCategory</tt></li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.partition">partition</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST partition</p>
+<p class="code SchemaDtdAttlist">type&nbsp;(__dftl_partition_content_type|__c_multiline_comment|__c_singleline_comment|__c_string|__c_character|__c_preprocessor|__c_multiline_doc_comment|__c_singleline_doc_comment) &gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>type</b> - A C/C++ partition type for which the specified computer can provide completion proposals. See <code>IDocument.DEFAULT_CONTENT_TYPE</code> and <code>ICPartitions</code> for valid values.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.proposalCategory">proposalCategory</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST proposalCategory</p>
+<p class="code SchemaDtdAttlist">icon&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+A proposal category contribution defines categories of proposals used to group them in the UI.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>icon</b> - The optional icon of the category, which can be displayed in the user preferences.</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>The following is an example of a completion proposal computer contribution:
+
+<p>
+<pre class="Example"><span class="code SchemaTag">
+ &lt;extension point=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.ui.completionProposalComputer&quot;</span><span class="code SchemaTag">
+ id=</span><span class="code SchemaCstring">&quot;textual_proposals&quot;</span><span class="code SchemaTag">
+ name=</span><span class="code SchemaCstring">&quot;Text Proposals&quot;</span><span class="code SchemaTag">&gt;
+ &lt;proposalCategory icon=</span><span class="code SchemaCstring">&quot;icons/wordcompletions.png&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;/extension&gt;
+ &lt;extension point=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.ui.completionProposalComputer&quot;</span><span class="code SchemaTag">
+ id=</span><span class="code SchemaCstring">&quot;WordCompletionProposalComputer&quot;</span><span class="code SchemaTag">
+ name=</span><span class="code SchemaCstring">&quot;Word Completion Proposal Computer&quot;</span><span class="code SchemaTag">&gt;
+ &lt;completionProposalComputer
+ class=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.internal.ui.text.contentassist.HippieProposalComputer&quot;</span><span class="code SchemaTag">
+ categoryId=</span><span class="code SchemaCstring">&quot;org.eclipse.ui.texteditor.textual_proposals&quot;</span><span class="code SchemaTag">&gt;
+ &lt;partition type=</span><span class="code SchemaCstring">&quot;__c_multiline_comment&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;/completionProposalComputer&gt;
+ &lt;/extension&gt;
+</span></pre>
+</p>
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>see <code>org.eclipse.cdt.internal.ui.text.contentassist.HippieProposalComputer</code> for an example.
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+Copyright (c) 2006, 2007 IBM Corporation and others.<br>
+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 <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_foldingStructureProviders.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_foldingStructureProviders.html
new file mode 100644
index 00000000000..6baa9ff35df
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_foldingStructureProviders.html
@@ -0,0 +1,51 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>C/C++ Folding Structure Provider</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">C/C++ Folding Structure Provider</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.ui.foldingStructureProviders<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>3.0
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>Contributions to this extension point define folding structures for the C/C++ editor. That is, they define the regions of a C/C++ source file that can be folded away. See <code>org.eclipse.jface.text.source.ProjectionViewer</code> for reference.
+<p>
+Extensions may optionally contribute a preference block which will appear on the C/C++ editor preference page.
+</p><p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.provider">provider</a>)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.provider">provider</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST provider</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">preferencesClass&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - The unique identifier of this provider.</li>
+<li><b>name</b> - The name of this provider. If none is given, the id is used instead.</li>
+<li><b>class</b> - An implementation of org.eclipse.cdt.ui.text.folding.ICFoldingStructureProvider</li>
+<li><b>preferencesClass</b> - An implementation of org.eclipse.cdt.ui.text.folding.ICFoldingPreferenceBlock</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>See <code>org.eclipse.cdt.ui.text.folding.DefaultCFoldingStructureProvider</code> for an example.
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6><code>org.eclipse.cdt.ui.text.folding.DefaultCFoldingStructureProvider</code> provides the default folding structure for the C/C++ editor.
+ <code>org.eclipse.cdt.internal.ui.text.folding.DefaultCFoldingPreferenceBlock</code> provides the preference block for the default structure provider.
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+Copyright (c) 2001, 2006 IBM Corporation and others.<br>
+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 <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_newCfgDialog.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_newCfgDialog.html
new file mode 100644
index 00000000000..8eb6bb33421
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_newCfgDialog.html
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>newCfgDialog</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">newCfgDialog</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.ui.newCfgDialog<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>4.0
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>Contributions to this extension point define specific dialog for new configuration creation. This dialog will be called from "Manage configurations" screen instead of standard (independent of managed build system) dialog. <br>
+Contributed extension is usually provided with whole managed build system (MBS), so new dialog may be able to handle some MBS-specific features.<br>
+To disinguish numerous dialogs for separate MBSs, mbs_id element should be the same as corresponding MBS Id.<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.dialog">dialog</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.dialog">dialog</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST dialog</p>
+<p class="code SchemaDtdAttlist">class&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">title&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">mbs_id&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>class</b> - class - New configuration dialog class.<br>
+Should implement org.eclipse.cdt.ui.newui.INewCfgDialog interface</li>
+<li><b>title</b> - title - initial title of New configuration dialog.</li>
+<li><b>mbs_id</b> - This element should contain ID of corresponding managed buld system (MBS).<br>
+Dialog will be displayed only if MBS Id for current project equals to mbs_id.</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6><extension
+ point="org.eclipse.cdt.ui.newCfgDialog">
+ <dialog
+ class="org.eclipse.cdt.managedbuilder.ui.newui.NewCfgDialog"
+ mbs_id="org.eclipse.cdt.managedbuilder.core.configurationDataProvider"
+ title="MBS: create configuration"/>
+ </extension>
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Supplied Implementation: </h6>org.eclipse.cdt.managedbuilder.ui.newui.NewCfgDialog
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+/*******************************************************************************
+ * Copyright (c) 2007 Intel 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Intel Corporation - initial API and implementation
+ *******************************************************************************/
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_quickAssistProcessors.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_quickAssistProcessors.html
new file mode 100644
index 00000000000..bb4936560bb
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_quickAssistProcessors.html
@@ -0,0 +1,269 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Quick Assist Processor</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Quick Assist Processor</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.ui.quickAssistProcessors<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>5.1
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>This extension point allows to add a Quick Assist processor to offer new Quick Assists in the C/C++ editor.
+This extension point supports the <code>enablement</code> tag. Properties to test on are:
+<dl>
+<li>translationUnit: type ITranslationUnit; the translation unit the quick assist is applied on</li>
+
+<li>projectNatures: type Collection; all project natures of the current project</li>
+</dl><p>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.quickAssistProcessor">quickAssistProcessor</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>point</b> - a fully qualified identifier of the target extension point</li>
+<li><b>id</b> - an optional identifier of the extension instance</li>
+<li><b>name</b> - an optional name of the extension instance</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.quickAssistProcessor">quickAssistProcessor</a> (<a href="#e.enablement">enablement</a>?)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST quickAssistProcessor</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">requiredSourceLevel&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - a unique identifier for the Quick Assist processor</li>
+<li><b>name</b> - a localized name of the Quick Assist processor</li>
+<li><b>class</b> - the name of the class that implements this Quick Assist processor. The
+class must be public and implement
+<samp>org.eclipse.cdt.ui.text.IQuickAssistProcessor</samp>
+with a public 0-argument constructor.</li>
+<li><b>requiredSourceLevel</b> - an optional attribute to specify the minimal source compliance this processor requires</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.enablement">enablement</a> (<a href="#e.not">not</a> , <a href="#e.and">and</a> , <a href="#e.or">or</a> , <a href="#e.instanceof">instanceof</a> , <a href="#e.test">test</a> , <a href="#e.systemTest">systemTest</a> , <a href="#e.equals">equals</a> , <a href="#e.count">count</a> , <a href="#e.with">with</a> , <a href="#e.resolve">resolve</a> , <a href="#e.adapt">adapt</a> , <a href="#e.iterate">iterate</a> , <a href="#e.reference">reference</a>)*&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+A generic root element. The element can be used inside an extension point to define its enablement expression.
+ The children of an enablement expression are combined using the and operator.</p>
+<br><br>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.not">not</a> (<a href="#e.not">not</a> | <a href="#e.and">and</a> | <a href="#e.or">or</a> | <a href="#e.instanceof">instanceof</a> | <a href="#e.test">test</a> | <a href="#e.systemTest">systemTest</a> | <a href="#e.equals">equals</a> | <a href="#e.count">count</a> | <a href="#e.with">with</a> | <a href="#e.resolve">resolve</a> | <a href="#e.adapt">adapt</a> | <a href="#e.iterate">iterate</a> | <a href="#e.reference">reference</a>)&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element represent a NOT operation on the result of evaluating it's sub-element expression.</p>
+<br><br>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.and">and</a> (<a href="#e.not">not</a> , <a href="#e.and">and</a> , <a href="#e.or">or</a> , <a href="#e.instanceof">instanceof</a> , <a href="#e.test">test</a> , <a href="#e.systemTest">systemTest</a> , <a href="#e.equals">equals</a> , <a href="#e.count">count</a> , <a href="#e.with">with</a> , <a href="#e.resolve">resolve</a> , <a href="#e.adapt">adapt</a> , <a href="#e.iterate">iterate</a> , <a href="#e.reference">reference</a>)*&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element represent an AND operation on the result of evaluating all it's sub-elements expressions.</p>
+<br><br>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.or">or</a> (<a href="#e.not">not</a> , <a href="#e.and">and</a> , <a href="#e.or">or</a> , <a href="#e.instanceof">instanceof</a> , <a href="#e.test">test</a> , <a href="#e.systemTest">systemTest</a> , <a href="#e.equals">equals</a> , <a href="#e.count">count</a> , <a href="#e.with">with</a> , <a href="#e.resolve">resolve</a> , <a href="#e.adapt">adapt</a> , <a href="#e.iterate">iterate</a> , <a href="#e.reference">reference</a>)*&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element represent an OR operation on the result of evaluating all it's sub-element expressions.</p>
+<br><br>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.instanceof">instanceof</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST instanceof</p>
+<p class="code SchemaDtdAttlist">value&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element is used to perform an instanceof check of the object in focus. The expression returns
+ EvaluationResult.TRUE if the object's type is a sub type of the type specified by the attribute value.
+ Otherwise EvaluationResult.FALSE is returned.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>value</b> - a fully qualified name of a class or interface.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.test">test</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST test</p>
+<p class="code SchemaDtdAttlist">property&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">args&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">forcePluginActivation&nbsp;(true | false) &gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element is used to evaluate the property state of the object in focus. The set of
+ testable properties can be extended using the propery tester extension point. The test
+ expression returns EvaluationResult.NOT_LOADED if the property tester doing the actual
+ testing isn't loaded yet and the attribute forcePluginActivation is set to false.
+ If forcePluginActivation is set to true and the evaluation context used to evaluate
+ this expression support plug-in activation then evaluating the property will result in
+ activating the plug-in defining the tester.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>property</b> - the name of an object's property to test.</li>
+<li><b>args</b> - additional arguments passed to the property tester. Multiple arguments are seperated
+ by commas. Each individual argument is converted into a Java base type using the same
+ rules as defined for the value attribute of the test expression.</li>
+<li><b>value</b> - the expected value of the property. Can be omitted if the property
+ is a boolean property. The test expression is supposed to return
+EvaluationResult.TRUE if the property matches the value and EvaluationResult.FALSE
+otherwise. The value attribute is converted into a Java base type using the following
+rules:
+<ul>
+ <li>the string &quot;true&quot; is converted into Boolean.TRUE</li>
+ <li>the string &quot;false&quot; is converted into Boolean.FALSE</li>
+ <li>if the string contains a dot then the interpreter tries to convert
+ the value into a Float object. If this fails the string is treated as a
+ java.lang.String</li>
+ <li>if the string only consists of numbers then the interpreter
+ converts the value in an Integer object.</li>
+ <li>in all other cases the string is treated as a java.lang.String</li>
+ <li>the conversion of the string into a Boolean, Float, or Integer can
+ be suppressed by surrounding the string with single quotes. For
+ example, the attribute value=&quot;'true'&quot; is converted into the
+ string &quot;true&quot;</li>
+</ul></li>
+<li><b>forcePluginActivation</b> - a flag indicating whether the plug-in contributing the property tester
+ should be loaded if necessary. As such, this flag should be used judiciously,
+ in order to avoid unnecessary plug-in activations. Most clients should avoid
+ setting this flag to true. This flag is only honored if the evaluation context
+ used to evaluate this expression allows plug-in activation. Otherwise the flag
+ is ignored and no plug-in loading takes place.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.systemTest">systemTest</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST systemTest</p>
+<p class="code SchemaDtdAttlist">property&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">value&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Tests a system property by calling the System.getProperty method and compares the result
+ with the value specified through the value attribute.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>property</b> - the name of an system property to test.</li>
+<li><b>value</b> - the expected value of the property. The value is interpreted as a string value.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.equals">equals</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST equals</p>
+<p class="code SchemaDtdAttlist">value&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element is used to perform an equals check of the object in focus. The expression returns
+ EvaluationResult.TRUE if the object is equal to the value provided by the attribute value. Otherwise
+ EvaluationResult.FALSE is returned.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>value</b> - the expected value. The value provided as a string is converted into
+ a Java base type using the same rules as for the value attribute of the test expression.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.count">count</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST count</p>
+<p class="code SchemaDtdAttlist">value&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element is used to test the number of elements in a collection.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>value</b> - an expression to specify the number of elements in a list. Following wildcard
+ characters can be used:
+ <dl>
+ <dt>*</dt> <dd>any number of elements</dd>
+ <dt>?</dt> <dd>no elements or one element</dd>
+ <dt>+</dt> <dd>one or more elements</dd>
+ <dt>!</dt> <dd>no elements</dd>
+ <dt>integer value</dt> <dd>the list must contain the exact number of elements</dd>
+ </dl></li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.with">with</a> (<a href="#e.not">not</a> , <a href="#e.and">and</a> , <a href="#e.or">or</a> , <a href="#e.instanceof">instanceof</a> , <a href="#e.test">test</a> , <a href="#e.systemTest">systemTest</a> , <a href="#e.equals">equals</a> , <a href="#e.count">count</a> , <a href="#e.with">with</a> , <a href="#e.resolve">resolve</a> , <a href="#e.adapt">adapt</a> , <a href="#e.iterate">iterate</a> , <a href="#e.reference">reference</a>)*&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST with</p>
+<p class="code SchemaDtdAttlist">variable&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element changes the object to be inspected for all its child element to the object
+ referenced by the given variable. If the variable can not be resolved then the expression
+ will throw a ExpressionException when evaluating it. The children of a with expression
+ are combined using the and operator.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>variable</b> - the name of the variable to be used for further inspection. It is up to the evaluator
+ of an extension point to provide the variable in the variable pool.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.resolve">resolve</a> (<a href="#e.not">not</a> , <a href="#e.and">and</a> , <a href="#e.or">or</a> , <a href="#e.instanceof">instanceof</a> , <a href="#e.test">test</a> , <a href="#e.systemTest">systemTest</a> , <a href="#e.equals">equals</a> , <a href="#e.count">count</a> , <a href="#e.with">with</a> , <a href="#e.resolve">resolve</a> , <a href="#e.adapt">adapt</a> , <a href="#e.iterate">iterate</a> , <a href="#e.reference">reference</a>)*&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST resolve</p>
+<p class="code SchemaDtdAttlist">variable&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">args&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element changes the object to be inspected for all its child element to the object
+ referenced by the given variable. If the variable can not be resolved then the expression
+ will throw a ExpressionException when evaluating it. The children of a with expression
+ are combined using the and operator.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>variable</b> - the name of the variable to be resolved. This variable is then used as the object in focus
+ for child element evaluation. It is up to the evaluator of an extension point to provide a
+ corresponding variable resolver (see IVariableResolver) through the evaluation context passed
+ to the root expression element when evaluating the expression.</li>
+<li><b>args</b> - additional arguments passed to the variable resolver. Multiple arguments are seperated
+ by commas. Each individual argument is converted into a Java base type using the same
+ rules as defined for the value attribute of the test expression.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.adapt">adapt</a> (<a href="#e.not">not</a> , <a href="#e.and">and</a> , <a href="#e.or">or</a> , <a href="#e.instanceof">instanceof</a> , <a href="#e.test">test</a> , <a href="#e.systemTest">systemTest</a> , <a href="#e.equals">equals</a> , <a href="#e.count">count</a> , <a href="#e.with">with</a> , <a href="#e.resolve">resolve</a> , <a href="#e.adapt">adapt</a> , <a href="#e.iterate">iterate</a> , <a href="#e.reference">reference</a>)*&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST adapt</p>
+<p class="code SchemaDtdAttlist">type&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element is used to adapt the object in focus to the type specified by the attribute
+ type. The expression returns not loaded if either the adapter or the type referenced isn't
+ loaded yet. It throws a ExpressionException during evaluation if the type name doesn't exist
+ at all. The children of an adapt expression are combined using the and operator.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>type</b> - the type to which the object in focus is to be adapted.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.iterate">iterate</a> (<a href="#e.not">not</a> , <a href="#e.and">and</a> , <a href="#e.or">or</a> , <a href="#e.instanceof">instanceof</a> , <a href="#e.test">test</a> , <a href="#e.systemTest">systemTest</a> , <a href="#e.equals">equals</a> , <a href="#e.count">count</a> , <a href="#e.with">with</a> , <a href="#e.resolve">resolve</a> , <a href="#e.adapt">adapt</a> , <a href="#e.iterate">iterate</a> , <a href="#e.reference">reference</a>)*&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST iterate</p>
+<p class="code SchemaDtdAttlist">operator&nbsp;(or|and) <p class="code SchemaDtdAttlist">ifEmpty&nbsp;&nbsp;(true | false) &gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element is used to iterate over a variable that is of type java.util.Collection. If
+ the object in focus is not of type java.util.Collection then an ExpressionException will
+ be thrown while evaluating the expression.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>operator</b> - either "and" or "or". The operator defines how the child
+ elements will be combined. If not specified, "and" will be used.</li>
+<li><b>ifEmpty</b> - the value return from the iterate expression if the collection is empty. If
+ not specified then true is returned when the operator equals "and"
+ and false is return if the operator equals "or".</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.reference">reference</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST reference</p>
+<p class="code SchemaDtdAttlist">definitionId&nbsp;IDREF #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element is used to reference an expression from the <b>org.eclipse.core.expressions.definitions</b> extension point. The expression definition will be evaluated within the current expression element using the current evaluation context.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>definitionId</b> - The unique id of an expression from <b>org.eclipse.core.expressions.definitions</b>.</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>The following is an example of a Quick Assist processor contribution:
+
+<p>
+<pre class="Example"><span class="code SchemaTag">
+ &lt;extension point=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.ui.quickAssistProcessors&quot;</span><span class="code SchemaTag">&gt;
+ &lt;quickAssistProcessor
+ id=</span><span class="code SchemaCstring">&quot;AdvancedQuickAssistProcessor&quot;</span><span class="code SchemaTag">
+ name=</span><span class="code SchemaCstring">&quot;Advanced Quick Assist Processor&quot;</span><span class="code SchemaTag">
+ class=</span><span class="code SchemaCstring">&quot;com.example.AdvancedQuickAssistProcessor&quot;</span><span class="code SchemaTag">&gt;
+ &lt;/quickAssistProcessor&gt;
+ &lt;enablement&gt;
+ &lt;with variable=</span><span class="code SchemaCstring">&quot;projectNatures&quot;</span><span class="code SchemaTag">&gt;
+ &lt;iterate operator=</span><span class="code SchemaCstring">&quot;or&quot;</span><span class="code SchemaTag">&gt;
+ &lt;equals value=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.core.cnature&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;equals value=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.core.ccnature&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;/iterate&gt;
+ &lt;/with&gt;
+ &lt;/enablement&gt;
+ &lt;/extension&gt;
+</span></pre>
+</p>
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+Copyright (c) 2001, 2008 IBM Corporation and others.<br>
+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 <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_quickFixProcessors.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_quickFixProcessors.html
new file mode 100644
index 00000000000..58f0757d4bb
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_quickFixProcessors.html
@@ -0,0 +1,288 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>Quick Fix Processor</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">Quick Fix Processor</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.ui.quickFixProcessors<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Since: </h6>4.1
+<p></p>
+
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>This extension point allows to add a Quick Fix processor to offer new Quick Fixes on C/C++ problems.
+<p>
+Extension can specify which problem marker types it can handle. It will only get problems of these types to process.
+</p>
+<p>
+This extension point supports the <code>enablement</code> tag. Properties to test on are:
+<dl>
+<li>translationUnit: type ITranslationUnit; the translation unit the quick assist is applied on</li>
+
+<li>projectNatures: type Collection; all project natures of the current project</li>
+</dl>
+</p><p>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.quickFixProcessor">quickFixProcessor</a>+)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>point</b> - a fully qualified identifier of the target extension point</li>
+<li><b>id</b> - an optional identifier of the extension instance</li>
+<li><b>name</b> - an optional name of the extension instance</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.quickFixProcessor">quickFixProcessor</a> (<a href="#e.enablement">enablement</a>? , <a href="#e.handledMarkerTypes">handledMarkerTypes</a>*)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST quickFixProcessor</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">class&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - a unique identifier for the Quick Fix processor</li>
+<li><b>name</b> - a localized name of the Quick Fix processor</li>
+<li><b>class</b> - the name of the class that implements this Quick Fix processor. The
+class must be public and implement
+<samp>org.eclipse.cdt.ui.text.IQuickFixProcessor</samp>
+with a public 0-argument constructor.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.handledMarkerTypes">handledMarkerTypes</a> (<a href="#e.markerType">markerType</a>+)&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Specifies the marker types of the problems this quick fix processor can handle.
+If no handled marker type are specified, the processor will get problems of types org.eclipse.cdt.core.problem, org.eclipse.cdt.core.buildpath_problem and org.eclipse.cdt.core.task.</p>
+<br><br>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.markerType">markerType</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST markerType</p>
+<p class="code SchemaDtdAttlist">id&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - the marker type id of the marker that can be handled by this processor</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.enablement">enablement</a> (<a href="#e.not">not</a> , <a href="#e.and">and</a> , <a href="#e.or">or</a> , <a href="#e.instanceof">instanceof</a> , <a href="#e.test">test</a> , <a href="#e.systemTest">systemTest</a> , <a href="#e.equals">equals</a> , <a href="#e.count">count</a> , <a href="#e.with">with</a> , <a href="#e.resolve">resolve</a> , <a href="#e.adapt">adapt</a> , <a href="#e.iterate">iterate</a> , <a href="#e.reference">reference</a>)*&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+A generic root element. The element can be used inside an extension point to define its enablement expression.
+ The children of an enablement expression are combined using the and operator.</p>
+<br><br>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.not">not</a> (<a href="#e.not">not</a> | <a href="#e.and">and</a> | <a href="#e.or">or</a> | <a href="#e.instanceof">instanceof</a> | <a href="#e.test">test</a> | <a href="#e.systemTest">systemTest</a> | <a href="#e.equals">equals</a> | <a href="#e.count">count</a> | <a href="#e.with">with</a> | <a href="#e.resolve">resolve</a> | <a href="#e.adapt">adapt</a> | <a href="#e.iterate">iterate</a> | <a href="#e.reference">reference</a>)&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element represent a NOT operation on the result of evaluating it's sub-element expression.</p>
+<br><br>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.and">and</a> (<a href="#e.not">not</a> , <a href="#e.and">and</a> , <a href="#e.or">or</a> , <a href="#e.instanceof">instanceof</a> , <a href="#e.test">test</a> , <a href="#e.systemTest">systemTest</a> , <a href="#e.equals">equals</a> , <a href="#e.count">count</a> , <a href="#e.with">with</a> , <a href="#e.resolve">resolve</a> , <a href="#e.adapt">adapt</a> , <a href="#e.iterate">iterate</a> , <a href="#e.reference">reference</a>)*&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element represent an AND operation on the result of evaluating all it's sub-elements expressions.</p>
+<br><br>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.or">or</a> (<a href="#e.not">not</a> , <a href="#e.and">and</a> , <a href="#e.or">or</a> , <a href="#e.instanceof">instanceof</a> , <a href="#e.test">test</a> , <a href="#e.systemTest">systemTest</a> , <a href="#e.equals">equals</a> , <a href="#e.count">count</a> , <a href="#e.with">with</a> , <a href="#e.resolve">resolve</a> , <a href="#e.adapt">adapt</a> , <a href="#e.iterate">iterate</a> , <a href="#e.reference">reference</a>)*&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element represent an OR operation on the result of evaluating all it's sub-element expressions.</p>
+<br><br>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.instanceof">instanceof</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST instanceof</p>
+<p class="code SchemaDtdAttlist">value&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element is used to perform an instanceof check of the object in focus. The expression returns
+ EvaluationResult.TRUE if the object's type is a sub type of the type specified by the attribute value.
+ Otherwise EvaluationResult.FALSE is returned.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>value</b> - a fully qualified name of a class or interface.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.test">test</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST test</p>
+<p class="code SchemaDtdAttlist">property&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">args&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">forcePluginActivation&nbsp;(true | false) &gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element is used to evaluate the property state of the object in focus. The set of
+ testable properties can be extended using the propery tester extension point. The test
+ expression returns EvaluationResult.NOT_LOADED if the property tester doing the actual
+ testing isn't loaded yet and the attribute forcePluginActivation is set to false.
+ If forcePluginActivation is set to true and the evaluation context used to evaluate
+ this expression support plug-in activation then evaluating the property will result in
+ activating the plug-in defining the tester.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>property</b> - the name of an object's property to test.</li>
+<li><b>args</b> - additional arguments passed to the property tester. Multiple arguments are seperated
+ by commas. Each individual argument is converted into a Java base type using the same
+ rules as defined for the value attribute of the test expression.</li>
+<li><b>value</b> - the expected value of the property. Can be omitted if the property
+ is a boolean property. The test expression is supposed to return
+EvaluationResult.TRUE if the property matches the value and EvaluationResult.FALSE
+otherwise. The value attribute is converted into a Java base type using the following
+rules:
+<ul>
+ <li>the string &quot;true&quot; is converted into Boolean.TRUE</li>
+ <li>the string &quot;false&quot; is converted into Boolean.FALSE</li>
+ <li>if the string contains a dot then the interpreter tries to convert
+ the value into a Float object. If this fails the string is treated as a
+ java.lang.String</li>
+ <li>if the string only consists of numbers then the interpreter
+ converts the value in an Integer object.</li>
+ <li>in all other cases the string is treated as a java.lang.String</li>
+ <li>the conversion of the string into a Boolean, Float, or Integer can
+ be suppressed by surrounding the string with single quotes. For
+ example, the attribute value=&quot;'true'&quot; is converted into the
+ string &quot;true&quot;</li>
+</ul></li>
+<li><b>forcePluginActivation</b> - a flag indicating whether the plug-in contributing the property tester
+ should be loaded if necessary. As such, this flag should be used judiciously,
+ in order to avoid unnecessary plug-in activations. Most clients should avoid
+ setting this flag to true. This flag is only honored if the evaluation context
+ used to evaluate this expression allows plug-in activation. Otherwise the flag
+ is ignored and no plug-in loading takes place.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.systemTest">systemTest</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST systemTest</p>
+<p class="code SchemaDtdAttlist">property&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">value&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+Tests a system property by calling the System.getProperty method and compares the result
+ with the value specified through the value attribute.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>property</b> - the name of an system property to test.</li>
+<li><b>value</b> - the expected value of the property. The value is interpreted as a string value.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.equals">equals</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST equals</p>
+<p class="code SchemaDtdAttlist">value&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element is used to perform an equals check of the object in focus. The expression returns
+ EvaluationResult.TRUE if the object is equal to the value provided by the attribute value. Otherwise
+ EvaluationResult.FALSE is returned.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>value</b> - the expected value. The value provided as a string is converted into
+ a Java base type using the same rules as for the value attribute of the test expression.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.count">count</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST count</p>
+<p class="code SchemaDtdAttlist">value&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element is used to test the number of elements in a collection.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>value</b> - an expression to specify the number of elements in a list. Following wildcard
+ characters can be used:
+ <dl>
+ <dt>*</dt> <dd>any number of elements</dd>
+ <dt>?</dt> <dd>no elements or one element</dd>
+ <dt>+</dt> <dd>one or more elements</dd>
+ <dt>!</dt> <dd>no elements</dd>
+ <dt>integer value</dt> <dd>the list must contain the exact number of elements</dd>
+ </dl></li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.with">with</a> (<a href="#e.not">not</a> , <a href="#e.and">and</a> , <a href="#e.or">or</a> , <a href="#e.instanceof">instanceof</a> , <a href="#e.test">test</a> , <a href="#e.systemTest">systemTest</a> , <a href="#e.equals">equals</a> , <a href="#e.count">count</a> , <a href="#e.with">with</a> , <a href="#e.resolve">resolve</a> , <a href="#e.adapt">adapt</a> , <a href="#e.iterate">iterate</a> , <a href="#e.reference">reference</a>)*&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST with</p>
+<p class="code SchemaDtdAttlist">variable&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element changes the object to be inspected for all its child element to the object
+ referenced by the given variable. If the variable can not be resolved then the expression
+ will throw a ExpressionException when evaluating it. The children of a with expression
+ are combined using the and operator.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>variable</b> - the name of the variable to be used for further inspection. It is up to the evaluator
+ of an extension point to provide the variable in the variable pool.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.resolve">resolve</a> (<a href="#e.not">not</a> , <a href="#e.and">and</a> , <a href="#e.or">or</a> , <a href="#e.instanceof">instanceof</a> , <a href="#e.test">test</a> , <a href="#e.systemTest">systemTest</a> , <a href="#e.equals">equals</a> , <a href="#e.count">count</a> , <a href="#e.with">with</a> , <a href="#e.resolve">resolve</a> , <a href="#e.adapt">adapt</a> , <a href="#e.iterate">iterate</a> , <a href="#e.reference">reference</a>)*&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST resolve</p>
+<p class="code SchemaDtdAttlist">variable&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">args&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element changes the object to be inspected for all its child element to the object
+ referenced by the given variable. If the variable can not be resolved then the expression
+ will throw a ExpressionException when evaluating it. The children of a with expression
+ are combined using the and operator.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>variable</b> - the name of the variable to be resolved. This variable is then used as the object in focus
+ for child element evaluation. It is up to the evaluator of an extension point to provide a
+ corresponding variable resolver (see IVariableResolver) through the evaluation context passed
+ to the root expression element when evaluating the expression.</li>
+<li><b>args</b> - additional arguments passed to the variable resolver. Multiple arguments are seperated
+ by commas. Each individual argument is converted into a Java base type using the same
+ rules as defined for the value attribute of the test expression.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.adapt">adapt</a> (<a href="#e.not">not</a> , <a href="#e.and">and</a> , <a href="#e.or">or</a> , <a href="#e.instanceof">instanceof</a> , <a href="#e.test">test</a> , <a href="#e.systemTest">systemTest</a> , <a href="#e.equals">equals</a> , <a href="#e.count">count</a> , <a href="#e.with">with</a> , <a href="#e.resolve">resolve</a> , <a href="#e.adapt">adapt</a> , <a href="#e.iterate">iterate</a> , <a href="#e.reference">reference</a>)*&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST adapt</p>
+<p class="code SchemaDtdAttlist">type&nbsp;CDATA #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element is used to adapt the object in focus to the type specified by the attribute
+ type. The expression returns not loaded if either the adapter or the type referenced isn't
+ loaded yet. It throws a ExpressionException during evaluation if the type name doesn't exist
+ at all. The children of an adapt expression are combined using the and operator.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>type</b> - the type to which the object in focus is to be adapted.</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.iterate">iterate</a> (<a href="#e.not">not</a> , <a href="#e.and">and</a> , <a href="#e.or">or</a> , <a href="#e.instanceof">instanceof</a> , <a href="#e.test">test</a> , <a href="#e.systemTest">systemTest</a> , <a href="#e.equals">equals</a> , <a href="#e.count">count</a> , <a href="#e.with">with</a> , <a href="#e.resolve">resolve</a> , <a href="#e.adapt">adapt</a> , <a href="#e.iterate">iterate</a> , <a href="#e.reference">reference</a>)*&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST iterate</p>
+<p class="code SchemaDtdAttlist">operator&nbsp;(or|and) <p class="code SchemaDtdAttlist">ifEmpty&nbsp;&nbsp;(true | false) &gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element is used to iterate over a variable that is of type java.util.Collection. If
+ the object in focus is not of type java.util.Collection then an ExpressionException will
+ be thrown while evaluating the expression.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>operator</b> - either "and" or "or". The operator defines how the child
+ elements will be combined. If not specified, "and" will be used.</li>
+<li><b>ifEmpty</b> - the value return from the iterate expression if the collection is empty. If
+ not specified then true is returned when the operator equals "and"
+ and false is return if the operator equals "or".</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.reference">reference</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST reference</p>
+<p class="code SchemaDtdAttlist">definitionId&nbsp;IDREF #REQUIRED&gt;</p>
+<p></p>
+<p class="ConfigMarkupElementDesc">
+This element is used to reference an expression from the <b>org.eclipse.core.expressions.definitions</b> extension point. The expression definition will be evaluated within the current expression element using the current evaluation context.</p>
+<br>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>definitionId</b> - The unique id of an expression from <b>org.eclipse.core.expressions.definitions</b>.</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>The following is an example of a Quick Fix processor contribution:
+
+<p>
+<pre class="Example"><span class="code SchemaTag">
+ &lt;extension point=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.ui.quickFixProcessors&quot;</span><span class="code SchemaTag">&gt;
+ &lt;quickFixProcessor
+ id=</span><span class="code SchemaCstring">&quot;AdvancedQuickFixProcessor&quot;</span><span class="code SchemaTag">
+ name=</span><span class="code SchemaCstring">&quot;Advanced Quick Fix Processor&quot;</span><span class="code SchemaTag">
+ class=</span><span class="code SchemaCstring">&quot;com.example.AdvancedQuickFixProcessor&quot;</span><span class="code SchemaTag">&gt;
+ &lt;handledMarkerTypes&gt;
+ &lt;markerType id=</span><span class="code SchemaCstring">&quot;org.eclipse.myplugin.audits&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;/handledMarkerTypes&gt;
+ &lt;enablement&gt;
+ &lt;with variable=</span><span class="code SchemaCstring">&quot;projectNatures&quot;</span><span class="code SchemaTag">&gt;
+ &lt;iterate operator=</span><span class="code SchemaCstring">&quot;or&quot;</span><span class="code SchemaTag">&gt;
+ &lt;equals value=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.core.cnature&quot;</span><span class="code SchemaTag">/&gt;
+ &lt;/iterate&gt;
+ &lt;/with&gt;
+ &lt;/enablement&gt;
+ &lt;/quickFixProcessor&gt;
+ &lt;/extension&gt;
+</span></pre>
+</p>
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+Copyright (c) 2001, 2007 IBM Corporation and others.<br>
+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 <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>
+
+</p>
+</BODY>
+</HTML>
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_textHovers.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_textHovers.html
new file mode 100644
index 00000000000..bb5f4d75a03
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_textHovers.html
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>C/C++ Editor Text Hovers</title>
+<style type="text/css">@import url("../../book.css");</style>
+<style type="text/css">@import url("../../schema.css");</style>
+</HEAD>
+<BODY>
+<H1 style="text-align:center">C/C++ Editor Text Hovers</H1>
+<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Identifier: </h6>org.eclipse.cdt.ui.textHovers<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Description: </h6>This extension point is used to plug-in text hovers in a C/C++ editor.<p></p>
+<h6 class="CaptionFigColumn SchemaHeader">Configuration Markup:</h6>
+<p></p>
+<p class="code SchemaDtd">&lt;!ELEMENT <a name="e.extension">extension</a> (<a href="#e.hover">hover</a>*)&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST extension</p>
+<p class="code SchemaDtdAttlist">point&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">name&nbsp;&nbsp;CDATA #IMPLIED&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>point</b> - a fully qualified identifier of the target extension point</li>
+<li><b>id</b> - an optional identifier of the extension instance</li>
+<li><b>name</b> - an optional name of the extension instance</li>
+</ul>
+<br><p class="code SchemaDtd">&lt;!ELEMENT <a name="e.hover">hover</a> EMPTY&gt;</p>
+<p class="code SchemaDtd">&lt;!ATTLIST hover</p>
+<p class="code SchemaDtdAttlist">id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #REQUIRED<p class="code SchemaDtdAttlist">label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">description&nbsp;CDATA #IMPLIED<p class="code SchemaDtdAttlist">activate&nbsp;&nbsp;&nbsp;&nbsp;(true | false) "false"&gt;</p>
+<p></p>
+<ul class="ConfigMarkupAttlistDesc">
+<li><b>id</b> - the id, typically the same as the fully qualified class name.</li>
+<li><b>class</b> - the fully qualified class name implementing the interface <code>org.eclipse.cdt.ui.text.c.hover.ICEditorTextHover</code>.</li>
+<li><b>label</b> - the translatable label for this hover.</li>
+<li><b>description</b> - the translatable description for this hover.</li>
+<li><b>activate</b> - if the attribute is set to "true" it will force this plug-in to be loaded on hover activation.</li>
+</ul>
+<br><h6 class="CaptionFigColumn SchemaHeader">Examples: </h6>The following is an example of a hover definition:
+
+<p>
+<pre class="Example"><span class="code SchemaTag">
+ &lt;extension point=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.ui.textHovers&quot;</span><span class="code SchemaTag">&gt;
+ &lt;hover
+ label=</span><span class="code SchemaCstring">&quot;Debug Text Hover&quot;</span><span class="code SchemaTag">
+ perspective=</span><span class="code SchemaCstring">&quot;org.eclipse.debug.ui.DebugPerspective&quot;</span><span class="code SchemaTag">
+ class=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.debug.internal.ui.editors.DebugTextHover&quot;</span><span class="code SchemaTag">
+ id=</span><span class="code SchemaCstring">&quot;org.eclipse.cdt.debug.internal.ui.editors.DebugTextHover&quot;</span><span class="code SchemaTag">&gt;
+ &lt;/hover&gt;
+ &lt;/extension&gt;
+</span></pre>
+</p>
+<p></p>
+
+<br>
+<p class="note SchemaCopyright">
+Copyright (c) 2001, 2006 IBM Corporation and others.<br>
+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 <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>
+
+</p>
+</BODY>
+</HTML>

Back to the top