From 8d33b948101f65590992cd55de7d153900de93ec Mon Sep 17 00:00:00 2001 From: Hoda Amer Date: Wed, 21 Apr 2004 16:47:15 +0000 Subject: [PATCH] Content Assist fixes --- core/org.eclipse.cdt.ui/ChangeLog | 4 ++ .../icons/full/obj16/keyword_obj.gif | Bin 0 -> 853 bytes .../internal/ui/CElementImageProvider.java | 4 ++ .../cdt/internal/ui/CPluginImages.java | 6 +- .../text/contentassist/CompletionEngine.java | 58 +++++++++++------- .../text/contentassist/ResultCollector.java | 5 +- 6 files changed, 54 insertions(+), 23 deletions(-) create mode 100644 core/org.eclipse.cdt.ui/icons/full/obj16/keyword_obj.gif diff --git a/core/org.eclipse.cdt.ui/ChangeLog b/core/org.eclipse.cdt.ui/ChangeLog index d834da58dd7..863eb4d9afb 100644 --- a/core/org.eclipse.cdt.ui/ChangeLog +++ b/core/org.eclipse.cdt.ui/ChangeLog @@ -1,3 +1,7 @@ +2004-04-21 Hoda Amer + Fix for bug#58703 :[Content Assist] An extra [^SPC] is required after appending to a prefix + Fix for bug#58708 :[Content Assist] Invalid proposals on nested classes + 2004-04-06 Chris Wiebe initial placement of non-ui code into org.eclipse.cdt.core.browser diff --git a/core/org.eclipse.cdt.ui/icons/full/obj16/keyword_obj.gif b/core/org.eclipse.cdt.ui/icons/full/obj16/keyword_obj.gif new file mode 100644 index 0000000000000000000000000000000000000000..c69ea51a17c0ec552c8ab75af7aee409aee8ae80 GIT binary patch literal 853 zcmZ?wbhEHb6krfw_|Cv!AHP4oe*gUa`}g19{~rt(M!{$ZjF=Em{K>+|z`(+w1M)E_ zPdIQGF>rFocx+hU$i&R1W^-c0!o%$Xtb76+Hau+Tme6*)b7JCRw{A{-t34VG3`hHA KgY$Se7_0&Gt0VOQ literal 0 HcmV?d00001 diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CElementImageProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CElementImageProvider.java index d1c0b05efc1..142b143d790 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CElementImageProvider.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CElementImageProvider.java @@ -508,5 +508,9 @@ public class CElementImageProvider { public static ImageDescriptor getNamespaceImageDescriptor(){ return getImageDescriptor(ICElement.C_NAMESPACE); } + + public static ImageDescriptor getKeywordImageDescriptor(){ + return CPluginImages.DESC_OBJS_KEYWORD; + } } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java index 4b53a845a85..7aa0cb389e5 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java @@ -61,6 +61,8 @@ public class CPluginImages { public static final String IMG_OBJS_PUBLIC_FIELD= NAME_PREFIX + "field_public_obj.gif"; //$NON-NLS-1$ public static final String IMG_OBJS_PROTECTED_FIELD= NAME_PREFIX + "field_protected_obj.gif"; //$NON-NLS-1$ public static final String IMG_OBJS_PRIVATE_FIELD= NAME_PREFIX + "field_private_obj.gif"; //$NON-NLS-1$ + public static final String IMG_OBJS_KEYWORD= NAME_PREFIX + "keyword_obj.gif"; //$NON-NLS-1$ + public static final String IMG_OBJS_DECLARATION= NAME_PREFIX + "cdeclaration_obj.gif"; //$NON-NLS-1$ public static final String IMG_OBJS_VAR_DECLARATION= NAME_PREFIX + "var_declaration_obj.gif"; //$NON-NLS-1$ public static final String IMG_OBJS_INCLUDE= NAME_PREFIX + "include_obj.gif"; //$NON-NLS-1$ @@ -110,7 +112,9 @@ public class CPluginImages { public static final ImageDescriptor DESC_OBJS_PRIVATE_METHOD= createManaged(T_OBJ, IMG_OBJS_PRIVATE_METHOD); public static final ImageDescriptor DESC_OBJS_PUBLIC_FIELD= createManaged(T_OBJ, IMG_OBJS_PUBLIC_FIELD); public static final ImageDescriptor DESC_OBJS_PROTECTED_FIELD= createManaged(T_OBJ, IMG_OBJS_PROTECTED_FIELD); - public static final ImageDescriptor DESC_OBJS_PRIVATE_FIELD= createManaged(T_OBJ, IMG_OBJS_PRIVATE_FIELD); + public static final ImageDescriptor DESC_OBJS_PRIVATE_FIELD= createManaged(T_OBJ, IMG_OBJS_PRIVATE_FIELD); + public static final ImageDescriptor DESC_OBJS_KEYWORD= createManaged(T_OBJ, IMG_OBJS_KEYWORD); + public static final ImageDescriptor DESC_OBJS_DECLARARION= createManaged(T_OBJ, IMG_OBJS_DECLARATION); public static final ImageDescriptor DESC_OBJS_VAR_DECLARARION= createManaged(T_OBJ, IMG_OBJS_VAR_DECLARATION); public static final ImageDescriptor DESC_OBJS_INCLUDE= createManaged(T_OBJ, IMG_OBJS_INCLUDE); diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CompletionEngine.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CompletionEngine.java index 53d3e29243e..775347e83ca 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CompletionEngine.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/CompletionEngine.java @@ -283,16 +283,20 @@ public class CompletionEngine implements RelevanceConstants { completionStart, completionLength, relevance); } if(classkind == ASTClassKind.STRUCT){ - int relevance = computeRelevance(ICElement.C_STRUCT, prefix, classSpecifier.getName()); - - requestor.acceptStruct(classSpecifier.getName(), - completionStart, completionLength, relevance); + if (classSpecifier.getName().length() > 0){ + int relevance = computeRelevance(ICElement.C_STRUCT, prefix, classSpecifier.getName()); + + requestor.acceptStruct(classSpecifier.getName(), + completionStart, completionLength, relevance); + } } if(classkind == ASTClassKind.UNION){ - int relevance = computeRelevance(ICElement.C_UNION, prefix, classSpecifier.getName()); - - requestor.acceptUnion(classSpecifier.getName(), - completionStart, completionLength, relevance); + if(classSpecifier.getName().length() > 0){ + int relevance = computeRelevance(ICElement.C_UNION, prefix, classSpecifier.getName()); + + requestor.acceptUnion(classSpecifier.getName(), + completionStart, completionLength, relevance); + } } } else if(node instanceof IASTNamespaceDefinition){ @@ -303,9 +307,11 @@ public class CompletionEngine implements RelevanceConstants { } else if(node instanceof IASTEnumerationSpecifier){ IASTEnumerationSpecifier enumeration = (IASTEnumerationSpecifier)node; - int relevance = computeRelevance(ICElement.C_ENUMERATION, prefix, enumeration.getName()); - - requestor.acceptEnumeration(enumeration.getName(), completionStart, completionLength, relevance); + if(enumeration.getName().length() > 0){ + int relevance = computeRelevance(ICElement.C_ENUMERATION, prefix, enumeration.getName()); + + requestor.acceptEnumeration(enumeration.getName(), completionStart, completionLength, relevance); + } } else if(node instanceof IASTEnumerator){ IASTEnumerator enumerator = (IASTEnumerator)node; @@ -466,7 +472,7 @@ public class CompletionEngine implements RelevanceConstants { IASTScope searchNode = completionNode.getCompletionScope(); // here we have to look for anything that could be referenced within this scope // 1. lookup local variables, global variables, functions, methods, structures, enums, and namespaces - IASTNode.LookupKind[] kinds = new IASTNode.LookupKind[8]; + IASTNode.LookupKind[] kinds = new IASTNode.LookupKind[9]; kinds[0] = IASTNode.LookupKind.VARIABLES; kinds[1] = IASTNode.LookupKind.STRUCTURES; kinds[2] = IASTNode.LookupKind.ENUMERATIONS; @@ -475,6 +481,7 @@ public class CompletionEngine implements RelevanceConstants { kinds[5] = IASTNode.LookupKind.FIELDS; kinds[6] = IASTNode.LookupKind.METHODS; kinds[7] = IASTNode.LookupKind.FUNCTIONS; + kinds[8] = IASTNode.LookupKind.ENUMERATORS; ILookupResult result = lookup(searchNode, completionNode.getCompletionPrefix(), kinds, completionNode.getCompletionContext()); // lookup static members (field / methods) in types @@ -552,15 +559,24 @@ public class CompletionEngine implements RelevanceConstants { else // prefix is empty { if(searchNode instanceof IASTCodeScope){ - IASTNode.LookupKind[] kinds = new IASTNode.LookupKind[1]; - kinds[0] = IASTNode.LookupKind.THIS; - result = lookup(searchNode, completionNode.getCompletionPrefix(), kinds, completionNode.getCompletionContext()); - addToCompletions(result); - - kinds = new IASTNode.LookupKind[1]; - kinds[0] = IASTNode.LookupKind.LOCAL_VARIABLES; - result = lookup(searchNode, completionNode.getCompletionPrefix(), kinds, completionNode.getCompletionContext()); - addToCompletions(result); + if (((IASTCodeScope)searchNode).getContainingFunction() instanceof IASTMethod){ + // we are inside of a method + IASTNode.LookupKind[] kinds = new IASTNode.LookupKind[1]; + kinds[0] = IASTNode.LookupKind.THIS; + result = lookup(searchNode, completionNode.getCompletionPrefix(), kinds, completionNode.getCompletionContext()); + addToCompletions(result); + + kinds = new IASTNode.LookupKind[1]; + kinds[0] = IASTNode.LookupKind.LOCAL_VARIABLES; + result = lookup(searchNode, completionNode.getCompletionPrefix(), kinds, completionNode.getCompletionContext()); + addToCompletions(result); + } else { + // we are inside of a function + IASTNode.LookupKind[] kinds = new IASTNode.LookupKind[1]; + kinds[0] = IASTNode.LookupKind.LOCAL_VARIABLES; + result = lookup(searchNode, completionNode.getCompletionPrefix(), kinds, completionNode.getCompletionContext()); + addToCompletions(result); + } } else { IASTNode.LookupKind[] kinds = new IASTNode.LookupKind[1]; kinds[0] = IASTNode.LookupKind.ALL; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ResultCollector.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ResultCollector.java index 74b5fe2349d..0e8765b19f8 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ResultCollector.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ResultCollector.java @@ -564,7 +564,10 @@ public class ResultCollector extends CompletionRequestorAdaptor { // fill the replace, display and info strings replaceString = name; displayString = name; - + + ImageDescriptor imageDescriptor = CElementImageProvider.getKeywordImageDescriptor(); + image = registry.get( imageDescriptor ); + // no image for keywords // create proposal and add it to completions list CCompletionProposal proposal = createProposal(replaceString, displayString, infoString.toString(),