From fc6b681d6140fdcd22d4e3f01a33b090d4e01c9e Mon Sep 17 00:00:00 2001 From: Hoda Amer Date: Wed, 21 Apr 2004 17:12:17 +0000 Subject: [PATCH] Content Assist fixes --- core/org.eclipse.cdt.ui/ChangeLog | 1 + .../text/contentassist/CompletionEngine.java | 46 +++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/core/org.eclipse.cdt.ui/ChangeLog b/core/org.eclipse.cdt.ui/ChangeLog index 863eb4d9afb..93be9a52c1f 100644 --- a/core/org.eclipse.cdt.ui/ChangeLog +++ b/core/org.eclipse.cdt.ui/ChangeLog @@ -1,6 +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 + Fix for bug#58858 :[Content Assist] No completion when declaring a struct variable 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/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 775347e83ca..b14bf363777 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 @@ -595,6 +595,34 @@ public class CompletionEngine implements RelevanceConstants { ILookupResult result = lookup(searchNode, completionNode.getCompletionPrefix(), kinds, completionNode.getCompletionContext()); addToCompletions(result); } + + private void completionOnStructReference(IASTCompletionNode completionNode){ + // 1. Get the search scope node + IASTScope searchNode = completionNode.getCompletionScope(); + // only look for classes + IASTNode.LookupKind[] kinds = new IASTNode.LookupKind[1]; + kinds[0] = IASTNode.LookupKind.STRUCTS; + ILookupResult result = lookup(searchNode, completionNode.getCompletionPrefix(), kinds, completionNode.getCompletionContext()); + addToCompletions(result); + } + private void completionOnUnionReference(IASTCompletionNode completionNode){ + // 1. Get the search scope node + IASTScope searchNode = completionNode.getCompletionScope(); + // only look for classes + IASTNode.LookupKind[] kinds = new IASTNode.LookupKind[1]; + kinds[0] = IASTNode.LookupKind.UNIONS; + ILookupResult result = lookup(searchNode, completionNode.getCompletionPrefix(), kinds, completionNode.getCompletionContext()); + addToCompletions(result); + } + private void completionOnEnumReference(IASTCompletionNode completionNode){ + // 1. Get the search scope node + IASTScope searchNode = completionNode.getCompletionScope(); + // only look for classes + IASTNode.LookupKind[] kinds = new IASTNode.LookupKind[1]; + kinds[0] = IASTNode.LookupKind.ENUMERATIONS; + ILookupResult result = lookup(searchNode, completionNode.getCompletionPrefix(), kinds, completionNode.getCompletionContext()); + addToCompletions(result); + } private void completionOnNamespaceReference(IASTCompletionNode completionNode){ // 1. Get the search scope node @@ -749,6 +777,18 @@ public class CompletionEngine implements RelevanceConstants { // completionOnConstructorReference completionOnConstructorReference(completionNode); } + else if(kind == CompletionKind.STRUCT_REFERENCE){ + // CompletionOnClassReference + completionOnStructReference(completionNode); + } + else if(kind == CompletionKind.UNION_REFERENCE){ + // CompletionOnClassReference + completionOnUnionReference(completionNode); + } + else if(kind == CompletionKind.ENUM_REFERENCE){ + // CompletionOnClassReference + completionOnEnumReference(completionNode); + } // add keywords in all cases except for member and scoped reference cases. if(kind != CompletionKind.MEMBER_REFERENCE){ @@ -792,6 +832,12 @@ public class CompletionEngine implements RelevanceConstants { kindStr = "PREPROCESSOR_DIRECTIVE"; //$NON-NLS-1$ else if(kind == IASTCompletionNode.CompletionKind.USER_SPECIFIED_NAME) kindStr = "USER_SPECIFIED_NAME"; //$NON-NLS-1$ + else if(kind == IASTCompletionNode.CompletionKind.STRUCT_REFERENCE) + kindStr = "STRUCT_REFERENCE"; //$NON-NLS-1$ + else if(kind == IASTCompletionNode.CompletionKind.UNION_REFERENCE) + kindStr = "UNION_REFERENCE"; //$NON-NLS-1$ + else if(kind == IASTCompletionNode.CompletionKind.ENUM_REFERENCE) + kindStr = "ENUM_REFERENCE"; //$NON-NLS-1$ else if(kind == IASTCompletionNode.CompletionKind.NO_SUCH_KIND) kindStr = "NO_SUCH_KIND"; //$NON-NLS-1$