diff --git a/core/org.eclipse.cdt.ui/plugin.xml b/core/org.eclipse.cdt.ui/plugin.xml index d49a25c3de3..ebd36e5cc75 100644 --- a/core/org.eclipse.cdt.ui/plugin.xml +++ b/core/org.eclipse.cdt.ui/plugin.xml @@ -1354,6 +1354,10 @@ class="org.eclipse.cdt.internal.ui.text.contentassist.DOMCompletionContributor" id="DOM" priority="1"/> + diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CCompletionProcessor2.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CCompletionProcessor2.java index 7999de28402..635c06613e0 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CCompletionProcessor2.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CCompletionProcessor2.java @@ -78,7 +78,7 @@ public class CCompletionProcessor2 implements IContentAssistProcessor { if (!(contribObject instanceof ICompletionContributor)) continue; ICompletionContributor contributor = (ICompletionContributor)contribObject; - contributor.contributeCompletionProposals(viewer, offset, completionNode, proposals); + contributor.contributeCompletionProposals(viewer, offset, workingCopy, completionNode, proposals); } } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionContributor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionContributor.java index 8847ddbbe52..bf2b75712c0 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionContributor.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionContributor.java @@ -24,6 +24,7 @@ import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.core.dom.ast.IVariable; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPField; +import org.eclipse.cdt.core.model.IWorkingCopy; import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider; import org.eclipse.cdt.ui.CUIPlugin; @@ -36,6 +37,7 @@ public class DOMCompletionContributor implements ICompletionContributor { public void contributeCompletionProposals(ITextViewer viewer, int offset, + IWorkingCopy workingCopy, ASTCompletionNode completionNode, List proposals) { if (completionNode != null) { diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/template/TemplateEngine.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/template/TemplateEngine.java index f6d7ac5ae5e..4fcc066be1b 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/template/TemplateEngine.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/template/TemplateEngine.java @@ -9,13 +9,17 @@ package org.eclipse.cdt.internal.ui.text.template; import java.util.ArrayList; import java.util.List; +import org.eclipse.cdt.core.dom.ast.ASTCompletionNode; import org.eclipse.cdt.core.model.ITranslationUnit; +import org.eclipse.cdt.core.model.IWorkingCopy; +import org.eclipse.cdt.internal.corext.template.c.CContextType; import org.eclipse.cdt.internal.corext.template.c.TranslationUnitContext; import org.eclipse.cdt.internal.corext.template.c.TranslationUnitContextType; import org.eclipse.cdt.internal.ui.CPluginImages; import org.eclipse.cdt.internal.ui.text.c.hover.SourceViewerInformationControl; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.text.ICCompletionProposal; +import org.eclipse.cdt.ui.text.contentassist.ICompletionContributor; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IInformationControl; @@ -33,7 +37,7 @@ import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Shell; -public class TemplateEngine { +public class TemplateEngine implements ICompletionContributor { private TemplateContextType fContextType; private ArrayList fProposals= new ArrayList(); @@ -78,6 +82,17 @@ public class TemplateEngine { fContextType= contextType; } + /** + * This is the default constructor used by the new content assist extension point + */ + public TemplateEngine() { + fContextType = CUIPlugin.getDefault().getTemplateContextRegistry().getContextType(CContextType.CCONTEXT_TYPE); + if (fContextType == null) { + fContextType= new CContextType(); + CUIPlugin.getDefault().getTemplateContextRegistry().addContextType(fContextType); + } + } + /** * Empties the collector. * @@ -132,5 +147,16 @@ public class TemplateEngine { fProposals.add(new CTemplateProposal(templates[i], context, region, CPluginImages.get(CPluginImages.IMG_OBJS_TEMPLATE))); } + public void contributeCompletionProposals(ITextViewer viewer, + int offset, + IWorkingCopy workingCopy, + ASTCompletionNode completionNode, + List proposals) + { + // TODO We should use the completion node to determine the proper context for the templates + // For now we just keep the current behavior + complete(viewer, offset, workingCopy); + proposals.addAll(fProposals); + } } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/contentassist/ICompletionContributor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/contentassist/ICompletionContributor.java index 4af6ba9e73b..0a3369cdf14 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/contentassist/ICompletionContributor.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/contentassist/ICompletionContributor.java @@ -10,6 +10,7 @@ package org.eclipse.cdt.ui.text.contentassist; import java.util.List; import org.eclipse.cdt.core.dom.ast.ASTCompletionNode; +import org.eclipse.cdt.core.model.IWorkingCopy; import org.eclipse.jface.text.ITextViewer; public interface ICompletionContributor { @@ -25,6 +26,7 @@ public interface ICompletionContributor { */ void contributeCompletionProposals(ITextViewer viewer, int offset, + IWorkingCopy workingCopy, ASTCompletionNode completionNode, List proposals);