Bug 82031 - Project attributes not able to be code completed
diff --git a/ant/org.eclipse.ant.tests.ui/Ant Editor Tests/org/eclipse/ant/tests/ui/editor/CodeCompletionTest.java b/ant/org.eclipse.ant.tests.ui/Ant Editor Tests/org/eclipse/ant/tests/ui/editor/CodeCompletionTest.java
index 7b35805..6a4065f 100644
--- a/ant/org.eclipse.ant.tests.ui/Ant Editor Tests/org/eclipse/ant/tests/ui/editor/CodeCompletionTest.java
+++ b/ant/org.eclipse.ant.tests.ui/Ant Editor Tests/org/eclipse/ant/tests/ui/editor/CodeCompletionTest.java
@@ -931,4 +931,33 @@
assertContains("main", proposals);
assertContains("testUnless", proposals);
}
+
+ /**
+ * Tests the code completion for project attributes (bug 82031)
+ */
+ public void testProjectAttributeProposals() throws BadLocationException {
+ TestTextCompletionProcessor processor = new TestTextCompletionProcessor(getAntModel("buildtest1.xml"));
+
+ int lineNumber= 1;
+ int columnNumber= 9;
+ int lineOffset= getCurrentDocument().getLineOffset(lineNumber);
+ processor.setLineNumber(lineNumber);
+ processor.setColumnNumber(columnNumber);
+ processor.setCursorPosition(lineOffset + columnNumber);
+ ICompletionProposal[] proposals = processor.getProposalsFromDocument(getCurrentDocument(), "");
+ //includes all the project attributes
+ assertTrue(proposals.length == 3);
+ assertContains("name", proposals);
+ assertContains("default", proposals);
+ assertContains("basedir", proposals);
+
+ columnNumber= 10;
+ lineOffset= getCurrentDocument().getLineOffset(lineNumber);
+ processor.setLineNumber(lineNumber);
+ processor.setColumnNumber(columnNumber);
+ processor.setCursorPosition(lineOffset + columnNumber);
+ proposals = processor.getProposalsFromDocument(getCurrentDocument(), "n");
+ assertTrue(proposals.length == 1);
+ assertContains("name", proposals);
+ }
}
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/AntEditorCompletionProcessor.java b/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/AntEditorCompletionProcessor.java
index 53bc1a0..c1a68b3 100644
--- a/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/AntEditorCompletionProcessor.java
+++ b/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/AntEditorCompletionProcessor.java
@@ -1204,22 +1204,26 @@
if (currentProposalMode != -1) {
return currentProposalMode;
}
- if (antModel != null && antModel.getProjectNode() == null) {
- return PROPOSAL_MODE_BUILDFILE;
- }
if (document.getLength() == 0 || (document.getLength() == 1 && document.get().equals("<"))) { //$NON-NLS-1$
return PROPOSAL_MODE_BUILDFILE;
}
- // String from beginning of document to the beginning of the prefix
+ //String from beginning of document to the beginning of the prefix
String text= document.get();
String stringToPrefix = text.substring(0, aCursorPosition - aPrefix.length());
if (stringToPrefix.length() == 0) {
return PROPOSAL_MODE_BUILDFILE;
}
-
- // Is trimmable from behind
+ //Is trimmable from behind
String trimmedString = stringToPrefix.trim();
+ if (antModel != null && antModel.getProjectNode() == null) {
+ currentTaskString= getTaskStringFromDocumentStringToPrefix(trimmedString);
+ if ("project".equals(currentTaskString)) { //$NON-NLS-1$
+ return PROPOSAL_MODE_ATTRIBUTE_PROPOSAL;
+ }
+ return PROPOSAL_MODE_BUILDFILE;
+ }
+
char lastChar = 0;
if(trimmedString.length() > 0) {
lastChar = trimmedString.charAt(trimmedString.length()-1);