|
From: <caw...@us...> - 2007-08-22 13:43:06
|
Revision: 3040
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=3040&view=rev
Author: cawilliams
Date: 2007-08-22 06:42:53 -0700 (Wed, 22 Aug 2007)
Log Message:
-----------
streamline code a little. Hack removes our grabbing the IRubyScript and parsing out a RootNode, since our only existing hover provider doesn't use it...
Modified Paths:
--------------
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/hyperlinks/RubyElementsHyperlinkProvider.java
trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/hyperlinks/RubyHyperLinkDetector.java
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/hyperlinks/RubyElementsHyperlinkProvider.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/hyperlinks/RubyElementsHyperlinkProvider.java 2007-08-21 20:51:59 UTC (rev 3039)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/hyperlinks/RubyElementsHyperlinkProvider.java 2007-08-22 13:42:53 UTC (rev 3040)
@@ -62,7 +62,7 @@
IRegion newRegion = RubyWordFinder.findWord(textViewer.getDocument(), region.getOffset());
try {
IWorkingCopyManager manager = RubyPlugin.getDefault().getWorkingCopyManager();
- IRubyScript script = manager.getWorkingCopy(input);
+ IRubyScript script = manager.getWorkingCopy(input);
IRubyElement[] elements = SelectionConverter.codeResolve(script, newRegion.getOffset(), newRegion.getLength());
if (elements == null || elements.length == 0) {
return null;
Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/hyperlinks/RubyHyperLinkDetector.java
===================================================================
--- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/hyperlinks/RubyHyperLinkDetector.java 2007-08-21 20:51:59 UTC (rev 3039)
+++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/text/hyperlinks/RubyHyperLinkDetector.java 2007-08-22 13:42:53 UTC (rev 3040)
@@ -1,10 +1,8 @@
package org.rubypeople.rdt.internal.ui.text.hyperlinks;
-import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
-import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionPoint;
@@ -15,13 +13,7 @@
import org.eclipse.jface.text.hyperlink.IHyperlink;
import org.eclipse.jface.text.hyperlink.IHyperlinkDetector;
import org.eclipse.ui.IEditorInput;
-import org.jruby.ast.Node;
-import org.jruby.lexer.yacc.SyntaxException;
-import org.rubypeople.rdt.core.IRubyScript;
-import org.rubypeople.rdt.core.RubyModelException;
-import org.rubypeople.rdt.internal.core.parser.RubyParser;
import org.rubypeople.rdt.internal.ui.RubyPlugin;
-import org.rubypeople.rdt.ui.IWorkingCopyManager;
import org.rubypeople.rdt.ui.text.hyperlinks.IHyperlinkProvider;
public class RubyHyperLinkDetector implements IHyperlinkDetector {
@@ -79,29 +71,16 @@
}
public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) {
- IRegion newRegion = region;
List extensions = initExtensions();
- // first ask the extensions
- if (extensions.size() > 0) {
- IWorkingCopyManager manager = RubyPlugin.getDefault().getWorkingCopyManager();
- IRubyScript script = manager.getWorkingCopy(fEditorInput);
- if (script == null) return null;
- RubyParser parser = new RubyParser();
- try {
- Node root = parser.parse((IFile) script.getResource(), new StringReader(script.getSource()));
- for (int i = 0; i < extensions.size(); i++) {
- IHyperlinkProvider currentProvider = (IHyperlinkProvider) extensions.get(i);
- IHyperlink link = currentProvider.getHyperlink(fEditorInput, textViewer, root, newRegion, true);
- // TODO: either do that or query all HyperlinkProviders and
- // return a list of hyperlinks?
- if (link != null) {
- return new IHyperlink[] { link };
- }
- }
- } catch (SyntaxException se) {
- // ignore
- } catch (RubyModelException e) {
- //ignore
+ if (extensions.isEmpty()) return null;
+ // FIXME We cheat and pass a null Node down to providers, because so far we only have one, and it doesn't use it. So this allows us to speed things up by not parsing the file...
+ for (int i = 0; i < extensions.size(); i++) {
+ IHyperlinkProvider currentProvider = (IHyperlinkProvider) extensions.get(i);
+ IHyperlink link = currentProvider.getHyperlink(fEditorInput, textViewer, null, region, canShowMultipleHyperlinks);
+ // TODO: either do that or query all HyperlinkProviders and
+ // return a list of hyperlinks?
+ if (link != null) {
+ return new IHyperlink[] { link };
}
}
return null;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|