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;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class OpenDeclaration extends AbstractHandler {
+ private static final Logger LOGGER = LoggerFactory.getLogger(OpenDeclaration.class);
+
private static boolean isIdentifierPart(char c) {
return Character.isJavaIdentifierPart(c) || c=='.';
}
return text.substring(startPos, endPos);
}
- private static final String SYMBOL_CHARS = "!$%&*+/<=>?@\\^|-:~.";
+ private static final String SYMBOL_CHARS = "!$%&*+/<=>?@\\^|-:~."; //$NON-NLS-1$
private static boolean isSymbolPart(char c) {
for(int i=0;i<SYMBOL_CHARS.length();++i)
// Find the line where the caret is
String lineAtCaret = extractLineAt(text, caretOffset);
- if(lineAtCaret.startsWith("import ") || lineAtCaret.startsWith("include ")) {
+ if(lineAtCaret.startsWith("import ") || lineAtCaret.startsWith("include ")) { //$NON-NLS-1$ //$NON-NLS-2$
int p1 = lineAtCaret.indexOf('"', 6);
int p2 = lineAtCaret.indexOf('"', p1+1);
SCLModuleEditorInput input = (SCLModuleEditorInput)moduleEditor.getEditorInput();
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);
+ OpenSCLModule.scheduleOpenModule(moduleName);
}
} catch (InvalidModulePathException e) {
- // Nothing to do
+ LOGGER.error("Could not open declaration {} {}", input.getModuleName(), lineAtCaret, e); //$NON-NLS-1$
}
}
else {
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) + "]");
+ //System.out.println("identifierAtCaret = " + identifierAtCaret + " [" + Locations.beginOf(value.definitionLocation) + ", " + Locations.endOf(value.definitionLocation) + "]");
if(value != null)
- OpenSCLDefinition.openDefinition(value);
+ OpenSCLDefinition.scheduleOpenDefinition(value.getName().module, value.definitionLocation);
}
return null;
}