diff --git a/core/org.eclipse.cdt.ui/.settings/.api_filters b/core/org.eclipse.cdt.ui/.settings/.api_filters index a4dd20fd5bf..6186936bada 100644 --- a/core/org.eclipse.cdt.ui/.settings/.api_filters +++ b/core/org.eclipse.cdt.ui/.settings/.api_filters @@ -1,5 +1,13 @@ + + + + + + + + diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/CSourceViewerConfiguration.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/CSourceViewerConfiguration.java index 92bcd24665b..d9ca015a9a4 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/CSourceViewerConfiguration.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/CSourceViewerConfiguration.java @@ -497,14 +497,18 @@ public class CSourceViewerConfiguration extends TextSourceViewerConfiguration { public IAutoEditStrategy[] getAutoEditStrategies(ISourceViewer sourceViewer, String contentType) { String partitioning = getConfiguredDocumentPartitioning(sourceViewer); - IDocCommentOwner owner = DocCommentOwnerManager.getInstance().getCommentOwner(getProject()); - IAutoEditStrategy single = owner.getSinglelineConfiguration().createAutoEditStrategy(); - IAutoEditStrategy multi = owner.getMultilineConfiguration().createAutoEditStrategy(); + IProject project = getProject(); + ICProject cProject = getCProject(); + IDocCommentOwner owner = DocCommentOwnerManager.getInstance().getCommentOwner(project); + ICProject projectDefiningOwnership = project != null + && DocCommentOwnerManager.getInstance().projectDefinesOwnership(project) ? cProject : null; + IAutoEditStrategy single = owner.getSinglelineConfiguration().createAutoEditStrategy(projectDefiningOwnership); + IAutoEditStrategy multi = owner.getMultilineConfiguration().createAutoEditStrategy(projectDefiningOwnership); IAutoEditStrategy[] NONE = new IAutoEditStrategy[0]; if (ICPartitions.C_MULTI_LINE_COMMENT.equals(contentType)) - return new IAutoEditStrategy[] { new DefaultMultilineCommentAutoEditStrategy(getCProject()) }; + return new IAutoEditStrategy[] { new DefaultMultilineCommentAutoEditStrategy(cProject) }; if (ICPartitions.C_SINGLE_LINE_DOC_COMMENT.equals(contentType)) return single != null ? new IAutoEditStrategy[] { single } : NONE; else if (ICPartitions.C_MULTI_LINE_DOC_COMMENT.equals(contentType)) @@ -512,9 +516,9 @@ public class CSourceViewerConfiguration extends TextSourceViewerConfiguration { else if (ICPartitions.C_STRING.equals(contentType)) return new IAutoEditStrategy[] { /*new SmartSemicolonAutoEditStrategy(partitioning),*/ new CStringAutoIndentStrategy(partitioning, - getCProject()) }; + cProject) }; else - return new IAutoEditStrategy[] { new CAutoIndentStrategy(partitioning, getCProject()) }; + return new IAutoEditStrategy[] { new CAutoIndentStrategy(partitioning, cProject) }; } /** diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/IDocCommentViewerConfiguration.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/IDocCommentViewerConfiguration.java index 4573777d129..b7a61ffd27d 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/IDocCommentViewerConfiguration.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/IDocCommentViewerConfiguration.java @@ -13,6 +13,7 @@ *******************************************************************************/ package org.eclipse.cdt.ui.text.doctools; +import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.ui.text.ICPartitions; import org.eclipse.cdt.ui.text.ICTokenScanner; import org.eclipse.cdt.ui.text.ITokenStoreFactory; @@ -49,6 +50,17 @@ public interface IDocCommentViewerConfiguration { */ IAutoEditStrategy createAutoEditStrategy(); + /** + * @return an auto edit strategy suitable for the appropriate comment region. This auto edit + * strategy is project-aware and might be affected by project-specific options. May return null + * in the case where no auto-edit-strategy is required. + * + * @since 7.3 + */ + default IAutoEditStrategy createAutoEditStrategy(ICProject project) { + return createAutoEditStrategy(); + } + /** * @return a double click strategy suitable for the associated comment-region. May return null in * the case where no double-click-strategy is required. diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenMultilineAutoEditStrategy.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenMultilineAutoEditStrategy.java index 40329ff19f9..ffded8a48d4 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenMultilineAutoEditStrategy.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenMultilineAutoEditStrategy.java @@ -48,6 +48,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTypeId; +import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.core.parser.IToken; import org.eclipse.cdt.doxygen.DoxygenOptions; import org.eclipse.cdt.doxygen.core.DoxygenConfiguration; @@ -110,12 +111,20 @@ public class DoxygenMultilineAutoEditStrategy extends DefaultMultilineCommentAut private final DoxygenConfiguration doxygenConfiguration; - public DoxygenMultilineAutoEditStrategy() { + /** + * @since 7.3 + */ + public DoxygenMultilineAutoEditStrategy(ICProject project) { + super(project); doxygenConfiguration = EclipseContextFactory .getServiceContext(FrameworkUtil.getBundle(getClass()).getBundleContext()) .get(DoxygenConfiguration.class); } + public DoxygenMultilineAutoEditStrategy() { + this(null); + } + private void refreshPreferences() { Optional project = getProject(); DoxygenOptions options = project.isPresent() ? doxygenConfiguration.projectOptions(project.get()) diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenMultilineConfiguration.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenMultilineConfiguration.java index 77e107b52d3..11de9055565 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenMultilineConfiguration.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenMultilineConfiguration.java @@ -13,6 +13,7 @@ *******************************************************************************/ package org.eclipse.cdt.ui.text.doctools.doxygen; +import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.PreferenceConstants; import org.eclipse.cdt.ui.text.doctools.IDocCommentViewerConfiguration; @@ -54,7 +55,15 @@ public class DoxygenMultilineConfiguration extends AbstractGenericTagDocCommentV */ @Override public IAutoEditStrategy createAutoEditStrategy() { - return new DoxygenMultilineAutoEditStrategy(); + return createAutoEditStrategy(null); + } + + /** + * @since 7.3 + */ + @Override + public IAutoEditStrategy createAutoEditStrategy(ICProject project) { + return new DoxygenMultilineAutoEditStrategy(project); } /* diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenSingleAutoEditStrategy.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenSingleAutoEditStrategy.java index 35f2e521c37..facb5c42482 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenSingleAutoEditStrategy.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenSingleAutoEditStrategy.java @@ -18,6 +18,7 @@ import org.eclipse.cdt.core.dom.ast.IASTDeclaration; import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IASTNodeSelector; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; +import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.ui.text.ICPartitions; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.DocumentCommand; @@ -42,7 +43,15 @@ public class DoxygenSingleAutoEditStrategy extends DoxygenMultilineAutoEditStrat private static final String EXCL_COMMENT = "//!"; //$NON-NLS-1$ private static String fgDefaultLineDelim = "\n"; //$NON-NLS-1$ + /** + * @since 7.3 + */ + public DoxygenSingleAutoEditStrategy(ICProject project) { + super(project); + } + public DoxygenSingleAutoEditStrategy() { + this(null); } /** diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenSingleConfiguration.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenSingleConfiguration.java index d1c647067ee..be825afb9c0 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenSingleConfiguration.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/text/doctools/doxygen/DoxygenSingleConfiguration.java @@ -13,6 +13,7 @@ *******************************************************************************/ package org.eclipse.cdt.ui.text.doctools.doxygen; +import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.PreferenceConstants; import org.eclipse.cdt.ui.text.doctools.IDocCommentViewerConfiguration; @@ -53,7 +54,15 @@ public class DoxygenSingleConfiguration extends AbstractGenericTagDocCommentView */ @Override public IAutoEditStrategy createAutoEditStrategy() { - return new DoxygenSingleAutoEditStrategy(); + return createAutoEditStrategy(null); + } + + /** + * @since 7.3 + */ + @Override + public IAutoEditStrategy createAutoEditStrategy(ICProject project) { + return new DoxygenSingleAutoEditStrategy(project); } /*