|
From: <caw...@us...> - 2007-01-29 14:50:34
|
Revision: 1892
http://svn.sourceforge.net/rubyeclipse/?rev=1892&view=rev
Author: cawilliams
Date: 2007-01-29 06:50:30 -0800 (Mon, 29 Jan 2007)
Log Message:
-----------
handle an empty copmpletion prefix (suggest type names, constants and elements in the current document). Also add some task markers to remind that we should probably do some cleanup of the compeltion proposals - they shouldn't have duplicates, and they should be sorted by relevance and name.
Modified Paths:
--------------
trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/codeassist/CompletionEngine.java
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyCompletionProcessor.java
Modified: trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/codeassist/CompletionEngine.java
===================================================================
--- trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/codeassist/CompletionEngine.java 2007-01-29 14:49:11 UTC (rev 1891)
+++ trunk/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/codeassist/CompletionEngine.java 2007-01-29 14:50:30 UTC (rev 1892)
@@ -90,9 +90,14 @@
if (this.prefix != null)
replaceStart -= this.prefix.length();
- if (isConstant()) { // type or constant
+ // TODO Refactor out common code here...
+ if (this.prefix != null && this.prefix.length() == 0) { // empty prefix
suggestTypeNames(replaceStart);
suggestConstantNames(replaceStart);
+ getDocumentsRubyElementsInScope(script, source.toString(), offset, replaceStart);
+ } else if (isConstant()) { // type or constant
+ suggestTypeNames(replaceStart);
+ suggestConstantNames(replaceStart);
} else { // method or variable
ITypeInferrer inferrer = new DefaultTypeInferrer();
List<ITypeGuess> guesses = inferrer.infer(source.toString(), offset);
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyCompletionProcessor.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyCompletionProcessor.java 2007-01-29 14:49:11 UTC (rev 1891)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/ruby/RubyCompletionProcessor.java 2007-01-29 14:50:30 UTC (rev 1892)
@@ -24,6 +24,7 @@
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.IEditorPart;
import org.rubypeople.rdt.core.IRubyScript;
+import org.rubypeople.rdt.core.RubyCore;
import org.rubypeople.rdt.core.RubyModelException;
import org.rubypeople.rdt.internal.corext.template.ruby.RubyContextType;
import org.rubypeople.rdt.internal.ui.RubyPlugin;
@@ -110,20 +111,12 @@
cursorPosition = selection.getOffset() + selection.getLength();
List templates = determineTemplateProposals(viewer, documentOffset);
- ICompletionProposal[] templateArray = new ICompletionProposal[templates
- .size()];
- int i = 0;
- for (Iterator iter = templates.iterator(); iter.hasNext(); i++) {
- templateArray[i] = (ICompletionProposal) iter.next();
- }
- ICompletionProposal[] merged = templateArray;
-
- ICompletionProposal[] keywords = determineKeywordProposals(viewer,
- documentOffset);
- ICompletionProposal[] mergedTwo = merge(merged, keywords);
-
- ICompletionProposal[] completions = codeComplete(documentOffset);
- return merge(mergedTwo, completions);
+ ICompletionProposal[] templateArray = (ICompletionProposal[]) templates.toArray(new ICompletionProposal[templates
+ .size()]);
+ ICompletionProposal[] keyWordsAndTemplates = merge(templateArray, determineKeywordProposals(viewer,
+ documentOffset));
+// FIXME Sort and remove duplicates?
+ return merge(keyWordsAndTemplates, codeComplete(documentOffset));
}
private ICompletionProposal[] codeComplete(int offset) {
@@ -135,7 +128,7 @@
requestor.endReporting();
return requestor.getRubyCompletionProposals();
} catch (RubyModelException e) {
- // TODO Do something
+ RubyPlugin.log(e);
return new ICompletionProposal[0];
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|