X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.ui%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fui%2Feditor2%2FOpenDeclaration.java;h=378840397759e1fbdbdc3714b2c3c930c01fa32b;hp=cd59c874d61c93ab6c27825170882a34a249d704;hb=84b211a0aa05c956d33e038a1106bb0464ce373a;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07 diff --git a/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor2/OpenDeclaration.java b/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor2/OpenDeclaration.java index cd59c874d..378840397 100644 --- a/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor2/OpenDeclaration.java +++ b/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor2/OpenDeclaration.java @@ -9,6 +9,11 @@ import org.eclipse.swt.widgets.Control; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.PlatformUI; import org.simantics.scl.compiler.elaboration.modules.SCLValue; +import org.simantics.scl.compiler.errors.Locations; +import org.simantics.scl.compiler.module.InvalidModulePathException; +import org.simantics.scl.compiler.module.ModuleUtils; +import org.simantics.scl.compiler.source.ModuleSource; +import org.simantics.scl.osgi.SCLOsgi; import org.simantics.scl.ui.editor.completion.SCLTextEditorEnvironment; public class OpenDeclaration extends AbstractHandler { @@ -83,8 +88,16 @@ public class OpenDeclaration extends AbstractHandler { if(lineAtCaret.startsWith("import ") || lineAtCaret.startsWith("include ")) { int p1 = lineAtCaret.indexOf('"', 6); int p2 = lineAtCaret.indexOf('"', p1+1); - String moduleName = lineAtCaret.substring(p1+1, p2); - OpenSCLModule.openModule(moduleName); + SCLModuleEditorInput input = (SCLModuleEditorInput)moduleEditor.getEditorInput(); + try { + String moduleName = ModuleUtils.resolveAbsolutePath(input.getModuleName(), lineAtCaret.substring(p1+1, p2)); + ModuleSource source = SCLOsgi.SOURCE_REPOSITORY.getModuleSource(moduleName, null); + if (source != null) { + OpenSCLModule.openModule(moduleName); + } + } catch (InvalidModulePathException e) { + // Nothing to do + } } else { // Try to find an identifier at caret @@ -94,6 +107,7 @@ public class OpenDeclaration extends AbstractHandler { SCLTextEditorEnvironment editorEnvironment = moduleEditor.getSCLTextEditorEnvironment(); editorEnvironment.updateEnvironment(moduleEditor.getDocument()); SCLValue value = editorEnvironment.getValue(identifierAtCaret); + System.out.println("identifierAtCaret = " + identifierAtCaret + " [" + Locations.beginOf(value.definitionLocation) + ", " + Locations.endOf(value.definitionLocation) + "]"); if(value != null) OpenSCLDefinition.openDefinition(value); }