mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-24 01:15:29 +02:00
Bug 574317 - Per-project Doxygen options are ignored
Pass along ICProject to edit strategies so that they can retrieve per-project settings. Change-Id: I87699917114a10439a820f9d6ec9d53f350ea50f Signed-off-by: Marc-Andre Laperle <malaperle@gmail.com>
This commit is contained in:
parent
9f1241f3ef
commit
383211b9c7
7 changed files with 69 additions and 9 deletions
|
@ -1,5 +1,13 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<component id="org.eclipse.cdt.ui" version="2">
|
||||
<resource path="src/org/eclipse/cdt/ui/text/doctools/IDocCommentViewerConfiguration.java" type="org.eclipse.cdt.ui.text.doctools.IDocCommentViewerConfiguration">
|
||||
<filter comment="new default method to handle edit strategy with project-specific options. Unlikely to clash with any implementers." id="404000815">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.cdt.ui.text.doctools.IDocCommentViewerConfiguration"/>
|
||||
<message_argument value="createAutoEditStrategy(ICProject)"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
</resource>
|
||||
<resource path="src/org/eclipse/cdt/ui/wizards/CDTCommonProjectWizard.java" type="org.eclipse.cdt.ui.wizards.CDTCommonProjectWizard">
|
||||
<filter comment="Squash over zealous warning from PDE. See Bug 558477" id="576725006">
|
||||
<message_arguments>
|
||||
|
|
|
@ -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) };
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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<IProject> project = getProject();
|
||||
DoxygenOptions options = project.isPresent() ? doxygenConfiguration.projectOptions(project.get())
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Reference in a new issue