From 803729074dc5d258fc54c0d5e653e2a0e53ca90c Mon Sep 17 00:00:00 2001 From: Anton Leherbauer Date: Mon, 7 Jul 2008 12:57:41 +0000 Subject: [PATCH] Fix for 238955: [Content Assist] symbol completion buggy for #if --- .../DOMCompletionProposalComputer.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionProposalComputer.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionProposalComputer.java index b46dc3d156d..31d2c4063a7 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionProposalComputer.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/DOMCompletionProposalComputer.java @@ -236,7 +236,7 @@ public class DOMCompletionProposalComputer extends ParsingBasedProposalComputer String repString = repStringBuff.toString(); String descString = descStringBuff.toString(); - CCompletionProposal proposal = createProposal(repString, descString, image, baseRelevance + RelevanceConstants.MACRO_TYPE_RELEVANCE, context); + CCompletionProposal proposal = createProposal(repString, descString, prefix.length(), image, baseRelevance + RelevanceConstants.MACRO_TYPE_RELEVANCE, context); if (!context.isContextInformationStyle()) { proposal.setCursorPosition(repString.length() - 1); } @@ -249,7 +249,7 @@ public class DOMCompletionProposalComputer extends ParsingBasedProposalComputer proposals.add(proposal); } else - proposals.add(createProposal(macroName, macroName, image, baseRelevance + RelevanceConstants.MACRO_TYPE_RELEVANCE, context)); + proposals.add(createProposal(macroName, macroName, prefix.length(), image, baseRelevance + RelevanceConstants.MACRO_TYPE_RELEVANCE, context)); } protected void handleBinding(IBinding binding, @@ -400,7 +400,7 @@ public class DOMCompletionProposalComputer extends ParsingBasedProposalComputer String repString = repStringBuff.toString(); final int relevance = function instanceof ICPPMethod ? RelevanceConstants.METHOD_TYPE_RELEVANCE : RelevanceConstants.FUNCTION_TYPE_RELEVANCE; - CCompletionProposal proposal = createProposal(repString, dispString, idString, image, baseRelevance + relevance, context); + CCompletionProposal proposal = createProposal(repString, dispString, idString, context.getCompletionNode().getLength(), image, baseRelevance + relevance, context); if (!context.isContextInformationStyle()) { proposal.setCursorPosition(repString.length() - 1); } @@ -444,7 +444,7 @@ public class DOMCompletionProposalComputer extends ParsingBasedProposalComputer : isField(variable) ? RelevanceConstants.FIELD_TYPE_RELEVANCE : RelevanceConstants.VARIABLE_TYPE_RELEVANCE; - CCompletionProposal proposal = createProposal(repString, dispString, idString, image, baseRelevance + relevance, context); + CCompletionProposal proposal = createProposal(repString, dispString, idString, context.getCompletionNode().getLength(), image, baseRelevance + relevance, context); proposals.add(proposal); } @@ -502,15 +502,19 @@ public class DOMCompletionProposalComputer extends ParsingBasedProposalComputer } private CCompletionProposal createProposal(String repString, String dispString, Image image, int relevance, CContentAssistInvocationContext context) { - return createProposal(repString, dispString, null, image, relevance, context); + return createProposal(repString, dispString, null, context.getCompletionNode().getLength(), image, relevance, context); } - private CCompletionProposal createProposal(String repString, String dispString, String idString, Image image, int relevance, CContentAssistInvocationContext context) { + private CCompletionProposal createProposal(String repString, String dispString, int prefixLength, Image image, int relevance, CContentAssistInvocationContext context) { + return createProposal(repString, dispString, null, prefixLength, image, relevance, context); + } + + private CCompletionProposal createProposal(String repString, String dispString, String idString, int prefixLength, Image image, int relevance, CContentAssistInvocationContext context) { int parseOffset = context.getParseOffset(); int invocationOffset = context.getInvocationOffset(); boolean doReplacement = !context.isContextInformationStyle(); - int repLength = doReplacement ? context.getCompletionNode().getLength() : 0; + int repLength = doReplacement ? prefixLength : 0; int repOffset = doReplacement ? parseOffset - repLength : invocationOffset; repString = doReplacement ? repString : ""; //$NON-NLS-1$