mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
New Content Assist framework
This commit is contained in:
parent
e2724066ac
commit
32fc5c80ab
15 changed files with 1049 additions and 223 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
2003-11-27 Hoda Amer
|
||||||
|
Content Assist work : Added an ICompletionRequestor interface
|
||||||
|
and a CompletionRequestorAdaptor classe.
|
||||||
|
|
||||||
2003-11-20 Alain Magloire
|
2003-11-20 Alain Magloire
|
||||||
|
|
||||||
The profiler need to get the line number of the offset within
|
The profiler need to get the line number of the offset within
|
||||||
|
|
|
@ -24,11 +24,15 @@ public interface IASTNode {
|
||||||
|
|
||||||
public static final LookupKind ALL = new LookupKind( 0 );
|
public static final LookupKind ALL = new LookupKind( 0 );
|
||||||
public static final LookupKind STRUCTURES = new LookupKind( 1 );
|
public static final LookupKind STRUCTURES = new LookupKind( 1 );
|
||||||
public static final LookupKind FUNCTIONS = new LookupKind( 2 );
|
public static final LookupKind STRUCS = new LookupKind( 2 );
|
||||||
public static final LookupKind LOCAL_VARIABLES = new LookupKind( 3 );
|
public static final LookupKind UNIONS = new LookupKind( 3 );
|
||||||
public static final LookupKind METHODS = new LookupKind( 4 );
|
public static final LookupKind CLASSES = new LookupKind( 4 );
|
||||||
public static final LookupKind FIELDS = new LookupKind( 5 );
|
public static final LookupKind FUNCTIONS = new LookupKind( 5 );
|
||||||
public static final LookupKind NAMESPACES = new LookupKind( 6 );
|
public static final LookupKind VARIABLES = new LookupKind( 6 );
|
||||||
|
public static final LookupKind LOCAL_VARIABLES = new LookupKind( 7 );
|
||||||
|
public static final LookupKind METHODS = new LookupKind( 8 );
|
||||||
|
public static final LookupKind FIELDS = new LookupKind( 9 );
|
||||||
|
public static final LookupKind NAMESPACES = new LookupKind( 10 );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param enumValue
|
* @param enumValue
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
/**********************************************************************
|
||||||
|
* Copyright (c) 2002,2003 Rational Software Corporation and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Common Public License v0.5
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/cpl-v05.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Rational Software - Initial API and implementation
|
||||||
|
***********************************************************************/
|
||||||
|
package org.eclipse.cdt.core;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hamer
|
||||||
|
*
|
||||||
|
* To change the template for this generated type comment go to
|
||||||
|
* Window>Preferences>Java>Code Generation>Code and Comments
|
||||||
|
*/
|
||||||
|
public interface ICompletionRequestor {
|
||||||
|
void acceptField(String name, String returnType, ASTAccessVisibility visibility, int completionStart, int completionLength, int relevance);
|
||||||
|
void acceptVariable(String name, String returnType, int completionStart, int completionLength, int relevance);
|
||||||
|
void acceptLocalVariable(String name, String returnType, int completionStart, int completionLength, int relevance);
|
||||||
|
void acceptMethod(String name, String parameterString, String returnType, ASTAccessVisibility visibility, int completionStart, int completionLength, int relevance);
|
||||||
|
void acceptFunction(String name, String parameterString, String returnType, int completionStart, int completionLength, int relevance);
|
||||||
|
void acceptClass(String name, int completionStart, int completionLength, int relevance);
|
||||||
|
void acceptStruct(String name, int completionStart, int completionLength, int relevance);
|
||||||
|
void acceptUnion(String name, int completionStart, int completionLength, int relevance);
|
||||||
|
void acceptNamespace(String name, int completionStart, int completionLength, int relevance);
|
||||||
|
void acceptMacro(String name, int completionStart, int completionLength, int relevance);
|
||||||
|
void acceptEnumeration(String name, int completionStart, int completionLength, int relevance);
|
||||||
|
void acceptEnumerator(String name, int completionStart, int completionLength, int relevance);
|
||||||
|
}
|
|
@ -1,18 +1,25 @@
|
||||||
/*
|
/**********************************************************************
|
||||||
* Created on Nov 19, 2003
|
* Copyright (c) 2002,2003 Rational Software Corporation and others.
|
||||||
*
|
* All rights reserved. This program and the accompanying materials
|
||||||
* To change the template for this generated file go to
|
* are made available under the terms of the Common Public License v0.5
|
||||||
* Window>Preferences>Java>Code Generation>Code and Comments
|
* which accompanies this distribution, and is available at
|
||||||
*/
|
* http://www.eclipse.org/legal/cpl-v05.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Rational Software - Initial API and implementation
|
||||||
|
***********************************************************************/
|
||||||
package org.eclipse.cdt.internal.core.contentassist;
|
package org.eclipse.cdt.internal.core.contentassist;
|
||||||
|
|
||||||
import java.io.CharArrayReader;
|
import java.io.CharArrayReader;
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.CCorePlugin;
|
import org.eclipse.cdt.core.CCorePlugin;
|
||||||
|
import org.eclipse.cdt.core.ICompletionRequestor;
|
||||||
import org.eclipse.cdt.core.model.CoreModel;
|
import org.eclipse.cdt.core.model.CoreModel;
|
||||||
|
import org.eclipse.cdt.core.model.ICElement;
|
||||||
import org.eclipse.cdt.core.parser.IParser;
|
import org.eclipse.cdt.core.parser.IParser;
|
||||||
import org.eclipse.cdt.core.parser.IScanner;
|
import org.eclipse.cdt.core.parser.IScanner;
|
||||||
import org.eclipse.cdt.core.parser.IScannerInfo;
|
import org.eclipse.cdt.core.parser.IScannerInfo;
|
||||||
|
@ -24,7 +31,11 @@ import org.eclipse.cdt.core.parser.ParserMode;
|
||||||
import org.eclipse.cdt.core.parser.ParserUtil;
|
import org.eclipse.cdt.core.parser.ParserUtil;
|
||||||
import org.eclipse.cdt.core.parser.ScannerInfo;
|
import org.eclipse.cdt.core.parser.ScannerInfo;
|
||||||
import org.eclipse.cdt.core.parser.ast.IASTCompletionNode;
|
import org.eclipse.cdt.core.parser.ast.IASTCompletionNode;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTField;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTNode;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.IASTNode.LookupResult;
|
||||||
import org.eclipse.cdt.internal.core.model.IWorkingCopy;
|
import org.eclipse.cdt.internal.core.model.IWorkingCopy;
|
||||||
|
import org.eclipse.cdt.internal.core.parser.util.ASTUtil;
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
import org.eclipse.core.resources.IResource;
|
import org.eclipse.core.resources.IResource;
|
||||||
import org.eclipse.core.runtime.IPath;
|
import org.eclipse.core.runtime.IPath;
|
||||||
|
@ -38,109 +49,197 @@ import org.eclipse.core.runtime.IPath;
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class CompletionEngine {
|
public class CompletionEngine {
|
||||||
|
List completions = new ArrayList();
|
||||||
|
ICompletionRequestor requestor;
|
||||||
|
int completionStart = 0;
|
||||||
|
int completionLength = 0;
|
||||||
|
public static final int LOCAL_VARIABLE_TYPE_RELEVANCE = 12;
|
||||||
|
public static final int FIELD_TYPE_RELEVANCE = 11;
|
||||||
|
public static final int VARIABLE_TYPE_RELEVANCE = 10;
|
||||||
|
public static final int METHOD_TYPE_RELEVANCE = 9;
|
||||||
|
public static final int FUNCTION_TYPE_RELEVANCE = 8;
|
||||||
|
public static final int CLASS_TYPE_RELEVANCE = 7;
|
||||||
|
public static final int STRUCT_TYPE_RELEVANCE = 6;
|
||||||
|
public static final int UNION_TYPE_RELEVANCE = 5;
|
||||||
|
public static final int NAMESPACE_TYPE_RELEVANCE = 4;
|
||||||
|
public static final int MACRO_TYPE_RELEVANCE = 3;
|
||||||
|
public static final int ENUMERATION_TYPE_RELEVANCE = 2;
|
||||||
|
public static final int ENUMERATOR_TYPE_RELEVANCE = 1;
|
||||||
|
public static final int DEFAULT_TYPE_RELEVANCE = 0;
|
||||||
|
|
||||||
protected IASTCompletionNode parse(IWorkingCopy sourceUnit, int completionOffset){
|
|
||||||
ContentAssistElementRequestor requestor = new ContentAssistElementRequestor();
|
|
||||||
// Get resource info
|
|
||||||
IResource currentResource = sourceUnit.getResource();
|
|
||||||
IPath realPath = currentResource.getLocation();
|
|
||||||
IProject project = currentResource.getProject();
|
|
||||||
Reader reader = new CharArrayReader( sourceUnit.getContents() );
|
|
||||||
|
|
||||||
//Get the scanner info
|
public CompletionEngine(ICompletionRequestor completionRequestor){
|
||||||
IScannerInfo scanInfo = new ScannerInfo();
|
completions.clear();
|
||||||
IScannerInfoProvider provider = CCorePlugin.getDefault().getScannerInfoProvider(project);
|
requestor = completionRequestor;
|
||||||
if (provider != null){
|
|
||||||
IScannerInfo buildScanInfo = provider.getScannerInformation(project);
|
|
||||||
if( buildScanInfo != null )
|
|
||||||
scanInfo = new ScannerInfo(buildScanInfo.getDefinedSymbols(), buildScanInfo.getIncludePaths());
|
|
||||||
}
|
}
|
||||||
|
public int computeTypeRelevance(int type){
|
||||||
//C or CPP?
|
switch (type){
|
||||||
ParserLanguage language = CoreModel.getDefault().hasCCNature(project) ? ParserLanguage.CPP : ParserLanguage.C;
|
case ICElement.C_FIELD:
|
||||||
|
return FIELD_TYPE_RELEVANCE;
|
||||||
IParser parser = null;
|
case ICElement.C_VARIABLE:
|
||||||
try
|
case ICElement.C_VARIABLE_DECLARATION:
|
||||||
{
|
return VARIABLE_TYPE_RELEVANCE;
|
||||||
IScanner scanner = ParserFactory.createScanner( reader, realPath.toOSString(), scanInfo, ParserMode.COMPLETE_PARSE, language, requestor, ParserUtil.getParserLogService() );
|
case ICElement.C_METHOD:
|
||||||
parser = ParserFactory.createParser( scanner, requestor, ParserMode.COMPLETE_PARSE, language, ParserUtil.getParserLogService() );
|
case ICElement.C_METHOD_DECLARATION:
|
||||||
|
return METHOD_TYPE_RELEVANCE;
|
||||||
|
case ICElement.C_FUNCTION:
|
||||||
|
case ICElement.C_FUNCTION_DECLARATION:
|
||||||
|
return FUNCTION_TYPE_RELEVANCE;
|
||||||
|
case ICElement.C_CLASS:
|
||||||
|
return CLASS_TYPE_RELEVANCE;
|
||||||
|
case ICElement.C_STRUCT:
|
||||||
|
return STRUCT_TYPE_RELEVANCE;
|
||||||
|
case ICElement.C_UNION:
|
||||||
|
return UNION_TYPE_RELEVANCE;
|
||||||
|
case ICElement.C_NAMESPACE:
|
||||||
|
return NAMESPACE_TYPE_RELEVANCE;
|
||||||
|
case ICElement.C_MACRO:
|
||||||
|
return MACRO_TYPE_RELEVANCE;
|
||||||
|
case ICElement.C_ENUMERATION:
|
||||||
|
return ENUMERATION_TYPE_RELEVANCE;
|
||||||
|
case ICElement.C_ENUMERATOR:
|
||||||
|
return ENUMERATOR_TYPE_RELEVANCE;
|
||||||
|
default :
|
||||||
|
return DEFAULT_TYPE_RELEVANCE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch( ParserFactoryException pfe )
|
|
||||||
{
|
private IASTCompletionNode parse(IWorkingCopy sourceUnit, int completionOffset){
|
||||||
|
ContentAssistElementRequestor requestor = new ContentAssistElementRequestor();
|
||||||
}
|
// Get resource info
|
||||||
if(parser != null){
|
IResource currentResource = sourceUnit.getResource();
|
||||||
IASTCompletionNode result = parser.parse(completionOffset);
|
IPath realPath = currentResource.getLocation();
|
||||||
return result;
|
IProject project = currentResource.getProject();
|
||||||
} else {
|
Reader reader = new CharArrayReader( sourceUnit.getContents() );
|
||||||
return null;
|
|
||||||
}
|
//Get the scanner info
|
||||||
}
|
IScannerInfo scanInfo = new ScannerInfo();
|
||||||
|
IScannerInfoProvider provider = CCorePlugin.getDefault().getScannerInfoProvider(project);
|
||||||
public List complete(IWorkingCopy sourceUnit, int completionOffset) {
|
if (provider != null){
|
||||||
|
IScannerInfo buildScanInfo = provider.getScannerInformation(project);
|
||||||
|
if( buildScanInfo != null )
|
||||||
|
scanInfo = new ScannerInfo(buildScanInfo.getDefinedSymbols(), buildScanInfo.getIncludePaths());
|
||||||
|
}
|
||||||
|
|
||||||
// 1- Parse the translation unit
|
//C or CPP?
|
||||||
IASTCompletionNode completionNode = parse(sourceUnit, completionOffset);
|
ParserLanguage language = CoreModel.getDefault().hasCCNature(project) ? ParserLanguage.CPP : ParserLanguage.C;
|
||||||
|
|
||||||
if (completionNode == null)
|
IParser parser = null;
|
||||||
return null;
|
try
|
||||||
|
{
|
||||||
List completions = new ArrayList();
|
IScanner scanner = ParserFactory.createScanner( reader, realPath.toOSString(), scanInfo, ParserMode.COMPLETE_PARSE, language, requestor, ParserUtil.getParserLogService() );
|
||||||
// 2- Check the return value
|
parser = ParserFactory.createParser( scanner, requestor, ParserMode.COMPLETE_PARSE, language, ParserUtil.getParserLogService() );
|
||||||
if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.DOT_MEMBER){
|
}
|
||||||
// CompletionOnDotMember
|
catch( ParserFactoryException pfe )
|
||||||
}
|
{
|
||||||
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.ARROW_MEMBER){
|
|
||||||
// CompletionOnArrowMember
|
}
|
||||||
}
|
if(parser != null){
|
||||||
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.QUALIFIEDNAME_MEMBER){
|
IASTCompletionNode result = parser.parse(completionOffset);
|
||||||
// CompletionOnQualifiedNameMember
|
return result;
|
||||||
}
|
} else {
|
||||||
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.FIELD_TYPE){
|
return null;
|
||||||
// CompletionOnFieldType
|
}
|
||||||
}
|
|
||||||
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.VARIABLE_TYPE){
|
|
||||||
// CompletionOnVariableType
|
|
||||||
}
|
|
||||||
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.ARGUMENT_TYPE){
|
|
||||||
// CompletionOnArgumentType
|
|
||||||
}
|
|
||||||
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.METHOD_RETURN_TYPE){
|
|
||||||
// CompletionOnMethodReturnType
|
|
||||||
}
|
|
||||||
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.FUNCTIOND_RETURN_TYPE){
|
|
||||||
// CompletionOnFunctionReturnType
|
|
||||||
}
|
|
||||||
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.SINGLE_NAME_REFERENCE){
|
|
||||||
// CompletionOnSingleNameReference
|
|
||||||
}
|
|
||||||
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.QUALIFIED_NAME_REFERENCE){
|
|
||||||
// CompletionOnQualifiedNameReference
|
|
||||||
}
|
|
||||||
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.STRUCTURE_REFERENCE){
|
|
||||||
// CompletionOnStructureReference
|
|
||||||
}
|
|
||||||
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.CLASS_REFERENCE){
|
|
||||||
// CompletionOnClassReference
|
|
||||||
}
|
|
||||||
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.EXCEPTION_REFERENCE){
|
|
||||||
// CompletionOnExceptionReference
|
|
||||||
}
|
|
||||||
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.MACRO_REFERENCE){
|
|
||||||
// CompletionOnMacroReference
|
|
||||||
}
|
|
||||||
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.MESSAGE_SEND){
|
|
||||||
// CompletionOnMessageSend
|
|
||||||
}
|
|
||||||
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.QUALIFIED_ALLOCATION_EXPRESSION){
|
|
||||||
// CompletionOnQualifiedAllocationExpression
|
|
||||||
}
|
|
||||||
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.KEYWORD){
|
|
||||||
// CompletionOnKeyword
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return completions;
|
private void addToCompletions (LookupResult result){
|
||||||
|
Iterator nodes = result.getNodes();
|
||||||
|
while (nodes.hasNext()){
|
||||||
|
IASTNode node = (IASTNode) nodes.next();
|
||||||
|
if(node instanceof IASTField){
|
||||||
|
int relevance = computeTypeRelevance(ICElement.C_FIELD);
|
||||||
|
IASTField field = (IASTField)node;
|
||||||
|
requestor.acceptField(field.getName(),
|
||||||
|
ASTUtil.getType(field.getAbstractDeclaration()),
|
||||||
|
field.getVisiblity(), completionStart, completionLength, relevance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void completionOnDotMember(IASTCompletionNode completionNode){
|
||||||
|
// Completing after a dot
|
||||||
|
// 1. Get the search scope node
|
||||||
|
IASTNode searchNode = completionNode.getCompletionContext();
|
||||||
|
// 2. lookup fields & add to completion proposals
|
||||||
|
LookupResult result = searchNode.lookup (completionNode.getCompletionPrefix(), IASTNode.LookupKind.FIELDS);
|
||||||
|
addToCompletions (result);
|
||||||
|
// 3. looup methods & add to completion proposals
|
||||||
|
result = searchNode.lookup (completionNode.getCompletionPrefix(), IASTNode.LookupKind.METHODS);
|
||||||
|
addToCompletions (result);
|
||||||
|
// 4. lookup nested structures & add to completion proposals
|
||||||
|
result = searchNode.lookup (completionNode.getCompletionPrefix(), IASTNode.LookupKind.METHODS);
|
||||||
|
addToCompletions (result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void complete(IWorkingCopy sourceUnit, int completionOffset, List completionList) {
|
||||||
|
|
||||||
|
// 1- Parse the translation unit
|
||||||
|
IASTCompletionNode completionNode = parse(sourceUnit, completionOffset);
|
||||||
|
|
||||||
|
if (completionNode == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// set the completionStart and the completionLength
|
||||||
|
completionStart = completionOffset;
|
||||||
|
completionLength = completionNode.getCompletionPrefix().length();
|
||||||
|
|
||||||
|
// 2- Check the return value
|
||||||
|
if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.DOT_MEMBER){
|
||||||
|
completionOnDotMember(completionNode);
|
||||||
|
}
|
||||||
|
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.ARROW_MEMBER){
|
||||||
|
// CompletionOnArrowMember
|
||||||
|
}
|
||||||
|
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.QUALIFIEDNAME_MEMBER){
|
||||||
|
// CompletionOnQualifiedNameMember
|
||||||
|
}
|
||||||
|
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.FIELD_TYPE){
|
||||||
|
// CompletionOnFieldType
|
||||||
|
}
|
||||||
|
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.VARIABLE_TYPE){
|
||||||
|
// CompletionOnVariableType
|
||||||
|
}
|
||||||
|
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.ARGUMENT_TYPE){
|
||||||
|
// CompletionOnArgumentType
|
||||||
|
}
|
||||||
|
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.METHOD_RETURN_TYPE){
|
||||||
|
// CompletionOnMethodReturnType
|
||||||
|
}
|
||||||
|
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.FUNCTIOND_RETURN_TYPE){
|
||||||
|
// CompletionOnFunctionReturnType
|
||||||
|
}
|
||||||
|
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.SINGLE_NAME_REFERENCE){
|
||||||
|
// CompletionOnSingleNameReference
|
||||||
|
}
|
||||||
|
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.QUALIFIED_NAME_REFERENCE){
|
||||||
|
// CompletionOnQualifiedNameReference
|
||||||
|
}
|
||||||
|
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.STRUCTURE_REFERENCE){
|
||||||
|
// CompletionOnStructureReference
|
||||||
|
}
|
||||||
|
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.CLASS_REFERENCE){
|
||||||
|
// CompletionOnClassReference
|
||||||
|
}
|
||||||
|
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.EXCEPTION_REFERENCE){
|
||||||
|
// CompletionOnExceptionReference
|
||||||
|
}
|
||||||
|
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.MACRO_REFERENCE){
|
||||||
|
// CompletionOnMacroReference
|
||||||
|
}
|
||||||
|
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.MESSAGE_SEND){
|
||||||
|
// CompletionOnMessageSend
|
||||||
|
}
|
||||||
|
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.QUALIFIED_ALLOCATION_EXPRESSION){
|
||||||
|
// CompletionOnQualifiedAllocationExpression
|
||||||
|
}
|
||||||
|
else if(completionNode.getCompletionKind() == IASTCompletionNode.CompletionKind.KEYWORD){
|
||||||
|
// CompletionOnKeyword
|
||||||
|
}
|
||||||
|
|
||||||
|
completionList.addAll(completions);
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -0,0 +1,128 @@
|
||||||
|
/**********************************************************************
|
||||||
|
* Copyright (c) 2002,2003 Rational Software Corporation and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Common Public License v0.5
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/cpl-v05.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Rational Software - Initial API and implementation
|
||||||
|
***********************************************************************/
|
||||||
|
package org.eclipse.cdt.internal.core.contentassist;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.ICompletionRequestor;
|
||||||
|
import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hamer
|
||||||
|
*
|
||||||
|
* To change the template for this generated type comment go to
|
||||||
|
* Window>Preferences>Java>Code Generation>Code and Comments
|
||||||
|
*/
|
||||||
|
public class CompletionRequestorAdaptor implements ICompletionRequestor {
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptField(java.lang.String, java.lang.String)
|
||||||
|
*/
|
||||||
|
public void acceptField(String name, String returnType, ASTAccessVisibility visibility, int completionStart, int completionLength, int relevance) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptClass(java.lang.String)
|
||||||
|
*/
|
||||||
|
public void acceptClass(String name, int completionStart, int completionLength, int relevance) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptEnumeration(java.lang.String)
|
||||||
|
*/
|
||||||
|
public void acceptEnumeration(String name, int completionStart, int completionLength, int relevance) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptFunction(java.lang.String, java.lang.String, java.lang.String)
|
||||||
|
*/
|
||||||
|
public void acceptFunction(
|
||||||
|
String name,
|
||||||
|
String parameterString,
|
||||||
|
String returnType, int completionStart, int completionLength, int relevance) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptMacro(java.lang.String)
|
||||||
|
*/
|
||||||
|
public void acceptMacro(String name, int completionStart, int completionLength, int relevance) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptMethod(java.lang.String, java.lang.String, java.lang.String)
|
||||||
|
*/
|
||||||
|
public void acceptMethod(
|
||||||
|
String name,
|
||||||
|
String parameterString,
|
||||||
|
String returnType, ASTAccessVisibility visibility, int completionStart, int completionLength, int relevance) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptStruct(java.lang.String)
|
||||||
|
*/
|
||||||
|
public void acceptStruct(String name, int completionStart, int completionLength, int relevance) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptUnion(java.lang.String)
|
||||||
|
*/
|
||||||
|
public void acceptUnion(String name, int completionStart, int completionLength, int relevance) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptVariable(java.lang.String, java.lang.String)
|
||||||
|
*/
|
||||||
|
public void acceptVariable(String name, String returnType, int completionStart, int completionLength, int relevance) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptLocalVariable(java.lang.String, java.lang.String)
|
||||||
|
*/
|
||||||
|
public void acceptLocalVariable(String name, String returnType, int completionStart, int completionLength, int relevance) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptNamespace(java.lang.String)
|
||||||
|
*/
|
||||||
|
public void acceptNamespace(String name, int completionStart, int completionLength, int relevance) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptEnumerator(java.lang.String, int, int, int)
|
||||||
|
*/
|
||||||
|
public void acceptEnumerator(
|
||||||
|
String name,
|
||||||
|
int completionStart,
|
||||||
|
int completionLength,
|
||||||
|
int relevance) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -4,6 +4,19 @@
|
||||||
<comment></comment>
|
<comment></comment>
|
||||||
<projects>
|
<projects>
|
||||||
<project>org.eclipse.cdt.core</project>
|
<project>org.eclipse.cdt.core</project>
|
||||||
|
<project>org.eclipse.compare</project>
|
||||||
|
<project>org.eclipse.core.boot</project>
|
||||||
|
<project>org.eclipse.core.resources</project>
|
||||||
|
<project>org.eclipse.core.runtime</project>
|
||||||
|
<project>org.eclipse.debug.core</project>
|
||||||
|
<project>org.eclipse.debug.ui</project>
|
||||||
|
<project>org.eclipse.jface.text</project>
|
||||||
|
<project>org.eclipse.search</project>
|
||||||
|
<project>org.eclipse.ui</project>
|
||||||
|
<project>org.eclipse.ui.editors</project>
|
||||||
|
<project>org.eclipse.ui.ide</project>
|
||||||
|
<project>org.eclipse.ui.views</project>
|
||||||
|
<project>org.eclipse.ui.workbench.texteditor</project>
|
||||||
</projects>
|
</projects>
|
||||||
<buildSpec>
|
<buildSpec>
|
||||||
<buildCommand>
|
<buildCommand>
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2003-11-27 Hoda Amer
|
||||||
|
Content Assist work : Added a ResultCollector class
|
||||||
|
and moved the ICCompletionProposal from an internal package
|
||||||
|
to an external one.
|
||||||
|
|
||||||
2003-11-14 David Inglis
|
2003-11-14 David Inglis
|
||||||
Fixed bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=46685
|
Fixed bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=46685
|
||||||
|
|
||||||
|
|
|
@ -285,74 +285,63 @@ public class CElementImageProvider {
|
||||||
|
|
||||||
case ICElement.C_STRUCT:
|
case ICElement.C_STRUCT:
|
||||||
case ICElement.C_TEMPLATE_STRUCT:
|
case ICElement.C_TEMPLATE_STRUCT:
|
||||||
return CPluginImages.DESC_OBJS_STRUCT;
|
return getStructImageDescriptor();
|
||||||
|
|
||||||
case ICElement.C_CLASS:
|
case ICElement.C_CLASS:
|
||||||
case ICElement.C_TEMPLATE_CLASS:
|
case ICElement.C_TEMPLATE_CLASS:
|
||||||
return CPluginImages.DESC_OBJS_CLASS;
|
return getClassImageDescriptor();
|
||||||
|
|
||||||
case ICElement.C_UNION:
|
case ICElement.C_UNION:
|
||||||
case ICElement.C_TEMPLATE_UNION:
|
case ICElement.C_TEMPLATE_UNION:
|
||||||
return CPluginImages.DESC_OBJS_UNION;
|
return getUnionImageDescriptor();
|
||||||
|
|
||||||
case ICElement.C_TYPEDEF:
|
case ICElement.C_TYPEDEF:
|
||||||
return CPluginImages.DESC_OBJS_TYPEDEF;
|
return getTypedefImageDescriptor();
|
||||||
|
|
||||||
case ICElement.C_ENUMERATION:
|
case ICElement.C_ENUMERATION:
|
||||||
return CPluginImages.DESC_OBJS_ENUMERATION;
|
return getEnumerationImageDescriptor();
|
||||||
|
|
||||||
case ICElement.C_ENUMERATOR:
|
case ICElement.C_ENUMERATOR:
|
||||||
return CPluginImages.DESC_OBJS_ENUMERATOR;
|
return getEnumeratorImageDescriptor();
|
||||||
|
|
||||||
case ICElement.C_FIELD:
|
case ICElement.C_FIELD:
|
||||||
{
|
{
|
||||||
IField field = (IField)celement;
|
IField field = (IField)celement;
|
||||||
ASTAccessVisibility visibility = field.getVisibility();
|
ASTAccessVisibility visibility = field.getVisibility();
|
||||||
|
return getFieldImageDescriptor(visibility);
|
||||||
if (visibility == ASTAccessVisibility.PUBLIC)
|
|
||||||
return CPluginImages.DESC_OBJS_PUBLIC_FIELD;
|
|
||||||
if( visibility == ASTAccessVisibility.PROTECTED)
|
|
||||||
return CPluginImages.DESC_OBJS_PROTECTED_FIELD;
|
|
||||||
if( visibility == ASTAccessVisibility.PRIVATE)
|
|
||||||
return CPluginImages.DESC_OBJS_PRIVATE_FIELD;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
case ICElement.C_VARIABLE:
|
|
||||||
case ICElement.C_TEMPLATE_VARIABLE:
|
|
||||||
return CPluginImages.DESC_OBJS_FIELD;
|
|
||||||
|
|
||||||
case ICElement.C_METHOD:
|
case ICElement.C_METHOD:
|
||||||
case ICElement.C_METHOD_DECLARATION:
|
case ICElement.C_METHOD_DECLARATION:
|
||||||
case ICElement.C_TEMPLATE_METHOD:
|
case ICElement.C_TEMPLATE_METHOD:
|
||||||
{
|
{
|
||||||
IMethodDeclaration md= (IMethodDeclaration)celement;
|
IMethodDeclaration md= (IMethodDeclaration)celement;
|
||||||
ASTAccessVisibility visibility =md.getVisibility();
|
ASTAccessVisibility visibility =md.getVisibility();
|
||||||
if( visibility == ASTAccessVisibility.PUBLIC)
|
return getMethodImageDescriptor(visibility);
|
||||||
return CPluginImages.DESC_OBJS_PUBLIC_METHOD;
|
}
|
||||||
if( visibility == ASTAccessVisibility.PROTECTED)
|
|
||||||
return CPluginImages.DESC_OBJS_PROTECTED_METHOD;
|
case ICElement.C_VARIABLE:
|
||||||
if( visibility == ASTAccessVisibility.PRIVATE)
|
case ICElement.C_TEMPLATE_VARIABLE:
|
||||||
return CPluginImages.DESC_OBJS_PRIVATE_METHOD;
|
return getVariableImageDescriptor();
|
||||||
}
|
|
||||||
|
|
||||||
case ICElement.C_FUNCTION:
|
case ICElement.C_FUNCTION:
|
||||||
return CPluginImages.DESC_OBJS_FUNCTION;
|
return getFunctionImageDescriptor();
|
||||||
|
|
||||||
case ICElement.C_VARIABLE_DECLARATION:
|
case ICElement.C_VARIABLE_DECLARATION:
|
||||||
return CPluginImages.DESC_OBJS_VAR_DECLARARION;
|
return getVariableDeclarationImageDescriptor();
|
||||||
|
|
||||||
case ICElement.C_FUNCTION_DECLARATION:
|
case ICElement.C_FUNCTION_DECLARATION:
|
||||||
case ICElement.C_TEMPLATE_FUNCTION:
|
case ICElement.C_TEMPLATE_FUNCTION:
|
||||||
return CPluginImages.DESC_OBJS_DECLARARION;
|
return getFunctionDeclarationImageDescriptor();
|
||||||
|
|
||||||
case ICElement.C_INCLUDE:
|
case ICElement.C_INCLUDE:
|
||||||
return CPluginImages.DESC_OBJS_INCLUDE;
|
return getIncludeImageDescriptor();
|
||||||
|
|
||||||
case ICElement.C_MACRO:
|
case ICElement.C_MACRO:
|
||||||
return CPluginImages.DESC_OBJS_MACRO;
|
return getMacroImageDescriptor();
|
||||||
|
|
||||||
case ICElement.C_NAMESPACE:
|
case ICElement.C_NAMESPACE:
|
||||||
return CPluginImages.DESC_OBJS_CONTAINER;
|
return getNamespaceImageDescriptor();
|
||||||
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
@ -403,4 +392,75 @@ public class CElementImageProvider {
|
||||||
public void dispose() {
|
public void dispose() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ImageDescriptor getStructImageDescriptor(){
|
||||||
|
return CPluginImages.DESC_OBJS_STRUCT;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ImageDescriptor getClassImageDescriptor(){
|
||||||
|
return CPluginImages.DESC_OBJS_CLASS;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ImageDescriptor getUnionImageDescriptor(){
|
||||||
|
return CPluginImages.DESC_OBJS_UNION;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ImageDescriptor getTypedefImageDescriptor(){
|
||||||
|
return CPluginImages.DESC_OBJS_TYPEDEF;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ImageDescriptor getEnumerationImageDescriptor(){
|
||||||
|
return CPluginImages.DESC_OBJS_ENUMERATION;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ImageDescriptor getEnumeratorImageDescriptor(){
|
||||||
|
return CPluginImages.DESC_OBJS_ENUMERATOR;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ImageDescriptor getFieldImageDescriptor(ASTAccessVisibility visibility) {
|
||||||
|
if (visibility == ASTAccessVisibility.PUBLIC)
|
||||||
|
return CPluginImages.DESC_OBJS_PUBLIC_FIELD;
|
||||||
|
if( visibility == ASTAccessVisibility.PROTECTED)
|
||||||
|
return CPluginImages.DESC_OBJS_PROTECTED_FIELD;
|
||||||
|
|
||||||
|
return CPluginImages.DESC_OBJS_PRIVATE_FIELD;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ImageDescriptor getMethodImageDescriptor(ASTAccessVisibility visibility) {
|
||||||
|
if( visibility == ASTAccessVisibility.PUBLIC)
|
||||||
|
return CPluginImages.DESC_OBJS_PUBLIC_METHOD;
|
||||||
|
if( visibility == ASTAccessVisibility.PROTECTED)
|
||||||
|
return CPluginImages.DESC_OBJS_PROTECTED_METHOD;
|
||||||
|
|
||||||
|
return CPluginImages.DESC_OBJS_PRIVATE_METHOD;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ImageDescriptor getVariableImageDescriptor(){
|
||||||
|
return CPluginImages.DESC_OBJS_FIELD;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ImageDescriptor getFunctionImageDescriptor(){
|
||||||
|
return CPluginImages.DESC_OBJS_FUNCTION;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ImageDescriptor getVariableDeclarationImageDescriptor(){
|
||||||
|
return CPluginImages.DESC_OBJS_VAR_DECLARARION;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ImageDescriptor getFunctionDeclarationImageDescriptor(){
|
||||||
|
return CPluginImages.DESC_OBJS_DECLARARION;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ImageDescriptor getIncludeImageDescriptor(){
|
||||||
|
return CPluginImages.DESC_OBJS_INCLUDE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ImageDescriptor getMacroImageDescriptor(){
|
||||||
|
return CPluginImages.DESC_OBJS_MACRO;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ImageDescriptor getNamespaceImageDescriptor(){
|
||||||
|
return CPluginImages.DESC_OBJS_CONTAINER;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@ import org.eclipse.cdt.core.search.BasicSearchResultCollector;
|
||||||
import org.eclipse.cdt.core.search.ICSearchConstants;
|
import org.eclipse.cdt.core.search.ICSearchConstants;
|
||||||
import org.eclipse.cdt.core.search.ICSearchScope;
|
import org.eclipse.cdt.core.search.ICSearchScope;
|
||||||
import org.eclipse.cdt.core.search.SearchEngine;
|
import org.eclipse.cdt.core.search.SearchEngine;
|
||||||
|
import org.eclipse.cdt.internal.core.contentassist.CompletionEngine;
|
||||||
import org.eclipse.cdt.internal.core.model.CElement;
|
import org.eclipse.cdt.internal.core.model.CElement;
|
||||||
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
|
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
|
||||||
import org.eclipse.cdt.internal.core.search.matching.OrPattern;
|
import org.eclipse.cdt.internal.core.search.matching.OrPattern;
|
||||||
|
@ -41,6 +42,7 @@ import org.eclipse.cdt.ui.CUIPlugin;
|
||||||
import org.eclipse.cdt.ui.FunctionPrototypeSummary;
|
import org.eclipse.cdt.ui.FunctionPrototypeSummary;
|
||||||
import org.eclipse.cdt.ui.IFunctionSummary;
|
import org.eclipse.cdt.ui.IFunctionSummary;
|
||||||
import org.eclipse.cdt.ui.IWorkingCopyManager;
|
import org.eclipse.cdt.ui.IWorkingCopyManager;
|
||||||
|
import org.eclipse.cdt.ui.text.*;
|
||||||
import org.eclipse.core.resources.IFile;
|
import org.eclipse.core.resources.IFile;
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
import org.eclipse.core.resources.IResource;
|
import org.eclipse.core.resources.IResource;
|
||||||
|
@ -73,7 +75,10 @@ public class CCompletionProcessor implements IContentAssistProcessor {
|
||||||
private boolean fRestrictToMatchingCase;
|
private boolean fRestrictToMatchingCase;
|
||||||
private boolean fAllowAddIncludes;
|
private boolean fAllowAddIncludes;
|
||||||
|
|
||||||
BasicSearchResultCollector resultCollector = null;
|
BasicSearchResultCollector searchResultCollector = null;
|
||||||
|
ResultCollector resultCollector = null;
|
||||||
|
CompletionEngine completionEngine = null;
|
||||||
|
|
||||||
SearchEngine searchEngine = null;
|
SearchEngine searchEngine = null;
|
||||||
CSearchResultLabelProvider labelProvider = null;
|
CSearchResultLabelProvider labelProvider = null;
|
||||||
|
|
||||||
|
@ -82,7 +87,9 @@ public class CCompletionProcessor implements IContentAssistProcessor {
|
||||||
|
|
||||||
// Needed for search
|
// Needed for search
|
||||||
labelProvider = new CSearchResultLabelProvider();
|
labelProvider = new CSearchResultLabelProvider();
|
||||||
resultCollector = new BasicSearchResultCollector ();
|
searchResultCollector = new BasicSearchResultCollector ();
|
||||||
|
resultCollector = new ResultCollector();
|
||||||
|
completionEngine = new CompletionEngine(resultCollector);
|
||||||
searchEngine = new SearchEngine();
|
searchEngine = new SearchEngine();
|
||||||
|
|
||||||
//Determine if this is a C or a C++ file for the context completion + //This is _totally_ ugly and likely belongs in the main editor class.
|
//Determine if this is a C or a C++ file for the context completion + //This is _totally_ ugly and likely belongs in the main editor class.
|
||||||
|
@ -457,36 +464,7 @@ public class CCompletionProcessor implements IContentAssistProcessor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int calculateRelevance (BasicSearchMatch element){
|
|
||||||
|
|
||||||
int type = element.getElementType();
|
|
||||||
|
|
||||||
switch (type){
|
|
||||||
case ICElement.C_FIELD:
|
|
||||||
return 9;
|
|
||||||
case ICElement.C_VARIABLE:
|
|
||||||
case ICElement.C_VARIABLE_DECLARATION:
|
|
||||||
return 8;
|
|
||||||
case ICElement.C_METHOD:
|
|
||||||
case ICElement.C_METHOD_DECLARATION:
|
|
||||||
return 7;
|
|
||||||
case ICElement.C_FUNCTION:
|
|
||||||
case ICElement.C_FUNCTION_DECLARATION:
|
|
||||||
return 6;
|
|
||||||
case ICElement.C_CLASS:
|
|
||||||
return 5;
|
|
||||||
case ICElement.C_STRUCT:
|
|
||||||
return 4;
|
|
||||||
case ICElement.C_UNION:
|
|
||||||
return 3;
|
|
||||||
case ICElement.C_MACRO:
|
|
||||||
return 2;
|
|
||||||
case ICElement.C_ENUMERATION:
|
|
||||||
return 1;
|
|
||||||
default :
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void addProposalsFromModel (IRegion region, String frag, ICElement currentScope, ArrayList completions) {
|
private void addProposalsFromModel (IRegion region, String frag, ICElement currentScope, ArrayList completions) {
|
||||||
List elementsFound = new LinkedList();
|
List elementsFound = new LinkedList();
|
||||||
String prefix = frag + "*";
|
String prefix = frag + "*";
|
||||||
|
@ -529,8 +507,8 @@ public class CCompletionProcessor implements IContentAssistProcessor {
|
||||||
orPattern.addPattern(SearchEngine.createSearchPattern( prefix, ICSearchConstants.TYPE, ICSearchConstants.DECLARATIONS, false ));
|
orPattern.addPattern(SearchEngine.createSearchPattern( prefix, ICSearchConstants.TYPE, ICSearchConstants.DECLARATIONS, false ));
|
||||||
orPattern.addPattern(SearchEngine.createSearchPattern( prefix, ICSearchConstants.ENUM, ICSearchConstants.DECLARATIONS, false ));
|
orPattern.addPattern(SearchEngine.createSearchPattern( prefix, ICSearchConstants.ENUM, ICSearchConstants.DECLARATIONS, false ));
|
||||||
orPattern.addPattern(SearchEngine.createSearchPattern( prefix, ICSearchConstants.MACRO, ICSearchConstants.DECLARATIONS, false ));
|
orPattern.addPattern(SearchEngine.createSearchPattern( prefix, ICSearchConstants.MACRO, ICSearchConstants.DECLARATIONS, false ));
|
||||||
searchEngine.search(CUIPlugin.getWorkspace(), orPattern, scope, resultCollector, true);
|
searchEngine.search(CUIPlugin.getWorkspace(), orPattern, scope, searchResultCollector, true);
|
||||||
elementsFound.addAll(resultCollector.getSearchResults());
|
elementsFound.addAll(searchResultCollector.getSearchResults());
|
||||||
|
|
||||||
if((currentScope instanceof IMethod) || (currentScope instanceof IMethodDeclaration) ){
|
if((currentScope instanceof IMethod) || (currentScope instanceof IMethodDeclaration) ){
|
||||||
// add the methods and fields of the parent class
|
// add the methods and fields of the parent class
|
||||||
|
@ -571,57 +549,131 @@ public class CCompletionProcessor implements IContentAssistProcessor {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int completionStart = region.getOffset();
|
||||||
|
int completionLength = region.getLength();
|
||||||
Iterator i = elementsFound.iterator();
|
Iterator i = elementsFound.iterator();
|
||||||
while (i.hasNext()){
|
while (i.hasNext()){
|
||||||
CCompletionProposal proposal;
|
ASTAccessVisibility visibility;
|
||||||
String replaceString = "";
|
|
||||||
String displayString = "";
|
|
||||||
Image image = null;
|
|
||||||
StringBuffer infoString = new StringBuffer();
|
|
||||||
|
|
||||||
BasicSearchMatch match = (BasicSearchMatch)i.next();
|
BasicSearchMatch match = (BasicSearchMatch)i.next();
|
||||||
|
int type = match.getElementType();
|
||||||
//Make sure we replace with the appropriate string for functions and methods
|
switch (type){
|
||||||
FunctionPrototypeSummary fproto = getPrototype(match);
|
case ICElement.C_FIELD:
|
||||||
if(fproto != null) {
|
switch (match.getVisibility()){
|
||||||
replaceString = fproto.getName() + "()";
|
case ICElement.CPP_PUBLIC:
|
||||||
displayString = fproto.getPrototypeString(true);
|
visibility = ASTAccessVisibility.PUBLIC;
|
||||||
} else {
|
break;
|
||||||
replaceString =
|
case ICElement.CPP_PROTECTED:
|
||||||
displayString = match.getName();;
|
visibility = ASTAccessVisibility.PROTECTED;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
visibility = ASTAccessVisibility.PRIVATE;
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
resultCollector.acceptField(
|
||||||
|
match.getName(),
|
||||||
|
null,
|
||||||
|
visibility,
|
||||||
|
completionStart,
|
||||||
|
completionLength,
|
||||||
|
completionEngine.computeTypeRelevance(type));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ICElement.C_VARIABLE:
|
||||||
|
case ICElement.C_VARIABLE_DECLARATION:
|
||||||
|
resultCollector.acceptVariable(
|
||||||
|
match.getName(),
|
||||||
|
null,
|
||||||
|
completionStart,
|
||||||
|
completionLength,
|
||||||
|
completionEngine.computeTypeRelevance(type));
|
||||||
|
break;
|
||||||
|
case ICElement.C_METHOD:
|
||||||
|
case ICElement.C_METHOD_DECLARATION:
|
||||||
|
switch (match.getVisibility()){
|
||||||
|
case ICElement.CPP_PUBLIC:
|
||||||
|
visibility = ASTAccessVisibility.PUBLIC;
|
||||||
|
break;
|
||||||
|
case ICElement.CPP_PROTECTED:
|
||||||
|
visibility = ASTAccessVisibility.PROTECTED;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
visibility = ASTAccessVisibility.PRIVATE;
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
resultCollector.acceptMethod(
|
||||||
|
match.getName(),
|
||||||
|
null,
|
||||||
|
match.getReturnType(),
|
||||||
|
visibility,
|
||||||
|
completionStart,
|
||||||
|
completionLength,
|
||||||
|
completionEngine.computeTypeRelevance(type));
|
||||||
|
break;
|
||||||
|
case ICElement.C_FUNCTION:
|
||||||
|
case ICElement.C_FUNCTION_DECLARATION:
|
||||||
|
resultCollector.acceptFunction(
|
||||||
|
match.getName(),
|
||||||
|
null,
|
||||||
|
match.getReturnType(),
|
||||||
|
completionStart,
|
||||||
|
completionLength,
|
||||||
|
completionEngine.computeTypeRelevance(type));
|
||||||
|
break;
|
||||||
|
case ICElement.C_CLASS:
|
||||||
|
resultCollector.acceptClass(
|
||||||
|
match.getName(),
|
||||||
|
completionStart,
|
||||||
|
completionLength,
|
||||||
|
completionEngine.computeTypeRelevance(type));
|
||||||
|
break;
|
||||||
|
case ICElement.C_STRUCT:
|
||||||
|
resultCollector.acceptStruct(
|
||||||
|
match.getName(),
|
||||||
|
completionStart,
|
||||||
|
completionLength,
|
||||||
|
completionEngine.computeTypeRelevance(type));
|
||||||
|
break;
|
||||||
|
case ICElement.C_UNION:
|
||||||
|
resultCollector.acceptUnion(
|
||||||
|
match.getName(),
|
||||||
|
completionStart,
|
||||||
|
completionLength,
|
||||||
|
completionEngine.computeTypeRelevance(type));
|
||||||
|
break;
|
||||||
|
case ICElement.C_NAMESPACE:
|
||||||
|
resultCollector.acceptNamespace(
|
||||||
|
match.getName(),
|
||||||
|
completionStart,
|
||||||
|
completionLength,
|
||||||
|
completionEngine.computeTypeRelevance(type));
|
||||||
|
break;
|
||||||
|
case ICElement.C_MACRO:
|
||||||
|
resultCollector.acceptMacro(
|
||||||
|
match.getName(),
|
||||||
|
completionStart,
|
||||||
|
completionLength,
|
||||||
|
completionEngine.computeTypeRelevance(type));
|
||||||
|
break;
|
||||||
|
case ICElement.C_ENUMERATION:
|
||||||
|
resultCollector.acceptEnumeration(
|
||||||
|
match.getName(),
|
||||||
|
completionStart,
|
||||||
|
completionLength,
|
||||||
|
completionEngine.computeTypeRelevance(type));
|
||||||
|
break;
|
||||||
|
case ICElement.C_ENUMERATOR:
|
||||||
|
resultCollector.acceptEnumerator(
|
||||||
|
match.getName(),
|
||||||
|
completionStart,
|
||||||
|
completionLength,
|
||||||
|
completionEngine.computeTypeRelevance(type));
|
||||||
|
break;
|
||||||
|
default :
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
image = labelProvider.getImage(match);
|
|
||||||
infoString.append(displayString);
|
|
||||||
if(match.getParentName().length() > 0) {
|
|
||||||
infoString.append(" - Parent: ");
|
|
||||||
infoString.append(match.getParentName());
|
|
||||||
}
|
|
||||||
|
|
||||||
proposal = new CCompletionProposal(
|
|
||||||
replaceString, // Replacement string
|
|
||||||
region.getOffset(),
|
|
||||||
region.getLength(),
|
|
||||||
image,
|
|
||||||
displayString, // Display string
|
|
||||||
calculateRelevance(match)
|
|
||||||
);
|
|
||||||
completions.add(proposal);
|
|
||||||
|
|
||||||
// No summary information available yet
|
|
||||||
// context information is available for methods only
|
|
||||||
if(fproto != null){
|
|
||||||
String fargs = fproto.getArguments();
|
|
||||||
if(fargs != null && fargs.length() > 0) {
|
|
||||||
proposal.setContextInformation(new ContextInformation(replaceString, fargs));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// The info string could be populated with documentation info.
|
|
||||||
// For now, it has the name and the parent's name if available.
|
|
||||||
if(!displayString.equals(infoString.toString()))
|
|
||||||
proposal.setAdditionalProposalInfo(infoString.toString());
|
|
||||||
}
|
}
|
||||||
|
completions.addAll(resultCollector.getCompletions());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ package org.eclipse.cdt.internal.ui.text;
|
||||||
* All Rights Reserved.
|
* All Rights Reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import org.eclipse.cdt.ui.text.*;
|
||||||
import org.eclipse.jface.text.BadLocationException;
|
import org.eclipse.jface.text.BadLocationException;
|
||||||
import org.eclipse.jface.text.IDocument;
|
import org.eclipse.jface.text.IDocument;
|
||||||
import org.eclipse.jface.text.contentassist.ICompletionProposalExtension;
|
import org.eclipse.jface.text.contentassist.ICompletionProposalExtension;
|
||||||
|
|
|
@ -7,6 +7,8 @@ package org.eclipse.cdt.internal.ui.text;
|
||||||
|
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.ui.text.*;
|
||||||
|
|
||||||
public class CCompletionProposalComparator implements Comparator {
|
public class CCompletionProposalComparator implements Comparator {
|
||||||
|
|
||||||
private boolean fOrderAlphabetically;
|
private boolean fOrderAlphabetically;
|
||||||
|
|
|
@ -0,0 +1,423 @@
|
||||||
|
/**********************************************************************
|
||||||
|
* Copyright (c) 2002,2003 Rational Software Corporation and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Common Public License v0.5
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/cpl-v05.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Rational Software - Initial API and implementation
|
||||||
|
***********************************************************************/
|
||||||
|
package org.eclipse.cdt.internal.ui.text;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
|
||||||
|
import org.eclipse.cdt.internal.core.contentassist.CompletionRequestorAdaptor;
|
||||||
|
import org.eclipse.cdt.internal.ui.CElementImageProvider;
|
||||||
|
import org.eclipse.cdt.internal.ui.util.ImageDescriptorRegistry;
|
||||||
|
import org.eclipse.cdt.ui.CUIPlugin;
|
||||||
|
import org.eclipse.cdt.ui.FunctionPrototypeSummary;
|
||||||
|
import org.eclipse.jface.resource.ImageDescriptor;
|
||||||
|
import org.eclipse.jface.text.contentassist.ContextInformation;
|
||||||
|
import org.eclipse.jface.text.contentassist.ICompletionProposal;
|
||||||
|
import org.eclipse.swt.graphics.Image;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hamer
|
||||||
|
*
|
||||||
|
* The Result Collector class receives information from the completion engine
|
||||||
|
* as a completion requestor. It might also receive information from others
|
||||||
|
* such as the results of a search operation to generate completion proposals.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class ResultCollector extends CompletionRequestorAdaptor {
|
||||||
|
private List completions = new ArrayList();
|
||||||
|
private ImageDescriptorRegistry registry = CUIPlugin.getImageDescriptorRegistry();
|
||||||
|
|
||||||
|
public ResultCollector(){
|
||||||
|
completions.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the completion list
|
||||||
|
*/
|
||||||
|
public List getCompletions() {
|
||||||
|
return completions;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* Create a proposal
|
||||||
|
*/
|
||||||
|
public ICompletionProposal createProposal(String replaceString, String displayString, String infoString, String arguments, Image image, int offset, int length, int relevance){
|
||||||
|
CCompletionProposal proposal;
|
||||||
|
|
||||||
|
proposal = new CCompletionProposal(
|
||||||
|
replaceString, // Replacement string
|
||||||
|
offset,
|
||||||
|
length,
|
||||||
|
image,
|
||||||
|
displayString, // Display string
|
||||||
|
relevance
|
||||||
|
);
|
||||||
|
|
||||||
|
if(arguments != null && arguments.length() > 0) {
|
||||||
|
proposal.setContextInformation(new ContextInformation(replaceString, arguments));
|
||||||
|
}
|
||||||
|
|
||||||
|
// The info string could be populated with documentation info.
|
||||||
|
// For now, it has the name and the parent's name if available.
|
||||||
|
if((infoString != null)&& (!displayString.equals(infoString)))
|
||||||
|
proposal.setAdditionalProposalInfo(infoString);
|
||||||
|
|
||||||
|
return proposal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptField(java.lang.String, java.lang.String, org.eclipse.cdt.core.parser.ast.ASTAccessVisibility, int, int, int)
|
||||||
|
*/
|
||||||
|
public void acceptField(String name, String returnType, ASTAccessVisibility visibility,
|
||||||
|
int completionStart, int completionLength, int relevance) {
|
||||||
|
String replaceString = "";
|
||||||
|
String displayString = "";
|
||||||
|
Image image = null;
|
||||||
|
StringBuffer infoString = new StringBuffer();
|
||||||
|
|
||||||
|
// fill the replace, display and info strings
|
||||||
|
replaceString = name;
|
||||||
|
displayString = name;
|
||||||
|
if(returnType != null)
|
||||||
|
displayString+= " : " + returnType;
|
||||||
|
|
||||||
|
// get the image
|
||||||
|
ImageDescriptor imageDescriptor = CElementImageProvider.getFieldImageDescriptor(visibility);
|
||||||
|
image = registry.get( imageDescriptor );
|
||||||
|
|
||||||
|
// create proposal and add it to completions list
|
||||||
|
ICompletionProposal proposal = createProposal(replaceString, displayString, infoString.toString(),
|
||||||
|
null, image, completionStart, completionLength, relevance);
|
||||||
|
completions.add(proposal);
|
||||||
|
}
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptClass(java.lang.String, int, int, int)
|
||||||
|
*/
|
||||||
|
public void acceptClass(
|
||||||
|
String name,
|
||||||
|
int completionStart,
|
||||||
|
int completionLength,
|
||||||
|
int relevance) {
|
||||||
|
String replaceString = "";
|
||||||
|
String displayString = "";
|
||||||
|
Image image = null;
|
||||||
|
StringBuffer infoString = new StringBuffer();
|
||||||
|
|
||||||
|
// fill the replace, display and info strings
|
||||||
|
replaceString = name;
|
||||||
|
displayString = name;
|
||||||
|
|
||||||
|
// get the image
|
||||||
|
ImageDescriptor imageDescriptor = CElementImageProvider.getClassImageDescriptor();
|
||||||
|
image = registry.get( imageDescriptor );
|
||||||
|
|
||||||
|
// create proposal and add it to completions list
|
||||||
|
ICompletionProposal proposal = createProposal(replaceString, displayString, infoString.toString(),
|
||||||
|
null, image, completionStart, completionLength, relevance);
|
||||||
|
completions.add(proposal);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptFunction(java.lang.String, java.lang.String, java.lang.String, int, int, int)
|
||||||
|
*/
|
||||||
|
public void acceptFunction(
|
||||||
|
String name,
|
||||||
|
String parameterString,
|
||||||
|
String returnType,
|
||||||
|
int completionStart,
|
||||||
|
int completionLength,
|
||||||
|
int relevance) {
|
||||||
|
String replaceString = "";
|
||||||
|
String displayString = "";
|
||||||
|
String arguments = "";
|
||||||
|
|
||||||
|
Image image = null;
|
||||||
|
StringBuffer infoString = new StringBuffer();
|
||||||
|
|
||||||
|
// fill the replace, display and info strings
|
||||||
|
replaceString = name;
|
||||||
|
displayString = name;
|
||||||
|
String functionPrototype = returnType + " " + name;
|
||||||
|
if(parameterString != null)
|
||||||
|
functionPrototype += "(" + parameterString + ")";
|
||||||
|
|
||||||
|
FunctionPrototypeSummary fproto = new FunctionPrototypeSummary(functionPrototype);
|
||||||
|
if(fproto != null) {
|
||||||
|
replaceString = fproto.getName() + "()";
|
||||||
|
displayString = fproto.getPrototypeString(true);
|
||||||
|
infoString.append(displayString);
|
||||||
|
arguments = fproto.getArguments();
|
||||||
|
}
|
||||||
|
|
||||||
|
// get the image
|
||||||
|
ImageDescriptor imageDescriptor = CElementImageProvider.getFunctionImageDescriptor();
|
||||||
|
image = registry.get( imageDescriptor );
|
||||||
|
|
||||||
|
// create proposal and add it to completions list
|
||||||
|
ICompletionProposal proposal = createProposal(replaceString, displayString, infoString.toString(),
|
||||||
|
arguments, image, completionStart, completionLength, relevance);
|
||||||
|
completions.add(proposal);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptLocalVariable(java.lang.String, java.lang.String, int, int, int)
|
||||||
|
*/
|
||||||
|
public void acceptLocalVariable(
|
||||||
|
String name,
|
||||||
|
String returnType,
|
||||||
|
int completionStart,
|
||||||
|
int completionLength,
|
||||||
|
int relevance) {
|
||||||
|
|
||||||
|
super.acceptLocalVariable(
|
||||||
|
name,
|
||||||
|
returnType,
|
||||||
|
completionStart,
|
||||||
|
completionLength,
|
||||||
|
relevance);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptMacro(java.lang.String, int, int, int)
|
||||||
|
*/
|
||||||
|
public void acceptMacro(
|
||||||
|
String name,
|
||||||
|
int completionStart,
|
||||||
|
int completionLength,
|
||||||
|
int relevance) {
|
||||||
|
|
||||||
|
String replaceString = "";
|
||||||
|
String displayString = "";
|
||||||
|
Image image = null;
|
||||||
|
StringBuffer infoString = new StringBuffer();
|
||||||
|
|
||||||
|
// fill the replace, display and info strings
|
||||||
|
replaceString = name;
|
||||||
|
displayString = name;
|
||||||
|
|
||||||
|
// get the image
|
||||||
|
ImageDescriptor imageDescriptor = CElementImageProvider.getMacroImageDescriptor();
|
||||||
|
image = registry.get( imageDescriptor );
|
||||||
|
|
||||||
|
// create proposal and add it to completions list
|
||||||
|
ICompletionProposal proposal = createProposal(replaceString, displayString, infoString.toString(),
|
||||||
|
null, image, completionStart, completionLength, relevance);
|
||||||
|
completions.add(proposal);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptMethod(java.lang.String, java.lang.String, java.lang.String, org.eclipse.cdt.core.parser.ast.ASTAccessVisibility, int, int, int)
|
||||||
|
*/
|
||||||
|
public void acceptMethod(
|
||||||
|
String name,
|
||||||
|
String parameterString,
|
||||||
|
String returnType,
|
||||||
|
ASTAccessVisibility visibility,
|
||||||
|
int completionStart,
|
||||||
|
int completionLength,
|
||||||
|
int relevance) {
|
||||||
|
|
||||||
|
String replaceString = "";
|
||||||
|
String displayString = "";
|
||||||
|
String arguments = "";
|
||||||
|
Image image = null;
|
||||||
|
StringBuffer infoString = new StringBuffer();
|
||||||
|
|
||||||
|
// fill the replace, display and info strings
|
||||||
|
replaceString = name;
|
||||||
|
displayString = name;
|
||||||
|
String functionPrototype = returnType + " " + name;
|
||||||
|
if(parameterString != null)
|
||||||
|
functionPrototype += "(" + parameterString + ")";
|
||||||
|
|
||||||
|
FunctionPrototypeSummary fproto = new FunctionPrototypeSummary(functionPrototype);
|
||||||
|
if(fproto != null) {
|
||||||
|
replaceString = fproto.getName() + "()";
|
||||||
|
displayString = fproto.getPrototypeString(true);
|
||||||
|
infoString.append(displayString);
|
||||||
|
arguments = fproto.getArguments();
|
||||||
|
}
|
||||||
|
|
||||||
|
// get the image
|
||||||
|
ImageDescriptor imageDescriptor = CElementImageProvider.getMethodImageDescriptor(visibility);
|
||||||
|
image = registry.get( imageDescriptor );
|
||||||
|
|
||||||
|
// create proposal and add it to completions list
|
||||||
|
ICompletionProposal proposal = createProposal(replaceString, displayString, infoString.toString(),
|
||||||
|
arguments, image, completionStart, completionLength, relevance);
|
||||||
|
completions.add(proposal);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptNamespace(java.lang.String, int, int, int)
|
||||||
|
*/
|
||||||
|
public void acceptNamespace(
|
||||||
|
String name,
|
||||||
|
int completionStart,
|
||||||
|
int completionLength,
|
||||||
|
int relevance) {
|
||||||
|
String replaceString = "";
|
||||||
|
String displayString = "";
|
||||||
|
Image image = null;
|
||||||
|
StringBuffer infoString = new StringBuffer();
|
||||||
|
|
||||||
|
// fill the replace, display and info strings
|
||||||
|
replaceString = name;
|
||||||
|
displayString = name;
|
||||||
|
|
||||||
|
// get the image
|
||||||
|
ImageDescriptor imageDescriptor = CElementImageProvider.getNamespaceImageDescriptor();
|
||||||
|
image = registry.get( imageDescriptor );
|
||||||
|
|
||||||
|
// create proposal and add it to completions list
|
||||||
|
ICompletionProposal proposal = createProposal(replaceString, displayString, infoString.toString(),
|
||||||
|
null, image, completionStart, completionLength, relevance);
|
||||||
|
completions.add(proposal);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptStruct(java.lang.String, int, int, int)
|
||||||
|
*/
|
||||||
|
public void acceptStruct(
|
||||||
|
String name,
|
||||||
|
int completionStart,
|
||||||
|
int completionLength,
|
||||||
|
int relevance) {
|
||||||
|
String replaceString = "";
|
||||||
|
String displayString = "";
|
||||||
|
Image image = null;
|
||||||
|
StringBuffer infoString = new StringBuffer();
|
||||||
|
|
||||||
|
// fill the replace, display and info strings
|
||||||
|
replaceString = name;
|
||||||
|
displayString = name;
|
||||||
|
|
||||||
|
// get the image
|
||||||
|
ImageDescriptor imageDescriptor = CElementImageProvider.getStructImageDescriptor();
|
||||||
|
image = registry.get( imageDescriptor );
|
||||||
|
|
||||||
|
// create proposal and add it to completions list
|
||||||
|
ICompletionProposal proposal = createProposal(replaceString, displayString, infoString.toString(), null, image, completionStart, completionLength, relevance);
|
||||||
|
completions.add(proposal);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptUnion(java.lang.String, int, int, int)
|
||||||
|
*/
|
||||||
|
public void acceptUnion(
|
||||||
|
String name,
|
||||||
|
int completionStart,
|
||||||
|
int completionLength,
|
||||||
|
int relevance) {
|
||||||
|
String replaceString = "";
|
||||||
|
String displayString = "";
|
||||||
|
Image image = null;
|
||||||
|
StringBuffer infoString = new StringBuffer();
|
||||||
|
|
||||||
|
// fill the replace, display and info strings
|
||||||
|
replaceString = name;
|
||||||
|
displayString = name;
|
||||||
|
|
||||||
|
// get the image
|
||||||
|
ImageDescriptor imageDescriptor = CElementImageProvider.getUnionImageDescriptor();
|
||||||
|
image = registry.get( imageDescriptor );
|
||||||
|
|
||||||
|
// create proposal and add it to completions list
|
||||||
|
ICompletionProposal proposal = createProposal(replaceString, displayString, infoString.toString(), null, image, completionStart, completionLength, relevance);
|
||||||
|
completions.add(proposal);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptVariable(java.lang.String, java.lang.String, int, int, int)
|
||||||
|
*/
|
||||||
|
public void acceptVariable(
|
||||||
|
String name,
|
||||||
|
String returnType,
|
||||||
|
int completionStart,
|
||||||
|
int completionLength,
|
||||||
|
int relevance) {
|
||||||
|
String replaceString = "";
|
||||||
|
String displayString = "";
|
||||||
|
Image image = null;
|
||||||
|
StringBuffer infoString = new StringBuffer();
|
||||||
|
|
||||||
|
// fill the replace, display and info strings
|
||||||
|
replaceString = name;
|
||||||
|
displayString = name;
|
||||||
|
if(returnType != null)
|
||||||
|
displayString+= " : " + returnType;
|
||||||
|
|
||||||
|
// get the image
|
||||||
|
ImageDescriptor imageDescriptor = CElementImageProvider.getVariableImageDescriptor();
|
||||||
|
image = registry.get( imageDescriptor );
|
||||||
|
|
||||||
|
// create proposal and add it to completions list
|
||||||
|
ICompletionProposal proposal = createProposal(replaceString, displayString, infoString.toString(), null, image, completionStart, completionLength, relevance);
|
||||||
|
completions.add(proposal);
|
||||||
|
}
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptEnumeration(java.lang.String, int, int, int)
|
||||||
|
*/
|
||||||
|
public void acceptEnumeration(
|
||||||
|
String name,
|
||||||
|
int completionStart,
|
||||||
|
int completionLength,
|
||||||
|
int relevance) {
|
||||||
|
String replaceString = "";
|
||||||
|
String displayString = "";
|
||||||
|
Image image = null;
|
||||||
|
StringBuffer infoString = new StringBuffer();
|
||||||
|
|
||||||
|
// fill the replace, display and info strings
|
||||||
|
replaceString = name;
|
||||||
|
displayString = name;
|
||||||
|
|
||||||
|
// get the image
|
||||||
|
ImageDescriptor imageDescriptor = CElementImageProvider.getEnumerationImageDescriptor();
|
||||||
|
image = registry.get( imageDescriptor );
|
||||||
|
|
||||||
|
// create proposal and add it to completions list
|
||||||
|
ICompletionProposal proposal = createProposal(replaceString, displayString, infoString.toString(),
|
||||||
|
null, image, completionStart, completionLength, relevance);
|
||||||
|
completions.add(proposal);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.core.ICompletionRequestor#acceptEnumerator(java.lang.String, int, int, int)
|
||||||
|
*/
|
||||||
|
public void acceptEnumerator(
|
||||||
|
String name,
|
||||||
|
int completionStart,
|
||||||
|
int completionLength,
|
||||||
|
int relevance) {
|
||||||
|
String replaceString = "";
|
||||||
|
String displayString = "";
|
||||||
|
Image image = null;
|
||||||
|
StringBuffer infoString = new StringBuffer();
|
||||||
|
|
||||||
|
// fill the replace, display and info strings
|
||||||
|
replaceString = name;
|
||||||
|
displayString = name;
|
||||||
|
|
||||||
|
// get the image
|
||||||
|
ImageDescriptor imageDescriptor = CElementImageProvider.getEnumeratorImageDescriptor();
|
||||||
|
image = registry.get( imageDescriptor );
|
||||||
|
|
||||||
|
// create proposal and add it to completions list
|
||||||
|
ICompletionProposal proposal = createProposal(replaceString, displayString, infoString.toString(),
|
||||||
|
null, image, completionStart, completionLength, relevance);
|
||||||
|
completions.add(proposal);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -12,8 +12,9 @@ import org.eclipse.cdt.internal.corext.template.Templates;
|
||||||
import org.eclipse.cdt.internal.corext.template.c.CompilationUnitContext;
|
import org.eclipse.cdt.internal.corext.template.c.CompilationUnitContext;
|
||||||
import org.eclipse.cdt.internal.corext.template.c.CompilationUnitContextType;
|
import org.eclipse.cdt.internal.corext.template.c.CompilationUnitContextType;
|
||||||
import org.eclipse.cdt.internal.corext.template.c.ICompilationUnit;
|
import org.eclipse.cdt.internal.corext.template.c.ICompilationUnit;
|
||||||
import org.eclipse.cdt.internal.ui.text.ICCompletionProposal;
|
|
||||||
import org.eclipse.cdt.internal.ui.text.link.LinkedPositionManager;
|
import org.eclipse.cdt.internal.ui.text.link.LinkedPositionManager;
|
||||||
|
import org.eclipse.cdt.ui.text.ICCompletionProposal;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import org.eclipse.jface.text.IDocument;
|
import org.eclipse.jface.text.IDocument;
|
||||||
|
|
|
@ -10,10 +10,10 @@ import org.eclipse.cdt.internal.corext.template.TemplateBuffer;
|
||||||
import org.eclipse.cdt.internal.corext.template.TemplateContext;
|
import org.eclipse.cdt.internal.corext.template.TemplateContext;
|
||||||
import org.eclipse.cdt.internal.corext.template.TemplateMessages;
|
import org.eclipse.cdt.internal.corext.template.TemplateMessages;
|
||||||
import org.eclipse.cdt.internal.corext.template.TemplatePosition;
|
import org.eclipse.cdt.internal.corext.template.TemplatePosition;
|
||||||
import org.eclipse.cdt.internal.ui.text.ICCompletionProposal;
|
|
||||||
import org.eclipse.cdt.internal.ui.text.link.LinkedPositionManager;
|
import org.eclipse.cdt.internal.ui.text.link.LinkedPositionManager;
|
||||||
import org.eclipse.cdt.internal.ui.text.link.LinkedPositionUI;
|
import org.eclipse.cdt.internal.ui.text.link.LinkedPositionUI;
|
||||||
import org.eclipse.cdt.ui.CUIPlugin;
|
import org.eclipse.cdt.ui.CUIPlugin;
|
||||||
|
import org.eclipse.cdt.ui.text.ICCompletionProposal;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
|
|
||||||
import org.eclipse.swt.graphics.Image;
|
import org.eclipse.swt.graphics.Image;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package org.eclipse.cdt.internal.ui.text;
|
package org.eclipse.cdt.ui.text;
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2000, 2002 International Business Machines Corp. and others.
|
* Copyright (c) 2000, 2002 International Business Machines Corp. and others.
|
||||||
|
@ -14,7 +14,7 @@ package org.eclipse.cdt.internal.ui.text;
|
||||||
|
|
||||||
import org.eclipse.jface.text.contentassist.ICompletionProposal;
|
import org.eclipse.jface.text.contentassist.ICompletionProposal;
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* CompletionProposal with a relevance value.
|
* CompletionProposal with a relevance value.
|
||||||
* The relevance value is used to sort the completion proposals. Proposals with higher relevance
|
* The relevance value is used to sort the completion proposals. Proposals with higher relevance
|
||||||
* should be listed before proposals with lower relevance.
|
* should be listed before proposals with lower relevance.
|
Loading…
Add table
Reference in a new issue