- String identifierAtCaret = extractAt(styledText.getText(), styledText.getCaretOffset());\r
- if(identifierAtCaret.isEmpty())\r
- return null;\r
- SCLTextEditorEnvironment editorEnvironment = moduleEditor.getSCLTextEditorEnvironment();\r
- editorEnvironment.updateEnvironment(moduleEditor.getDocument());\r
- SCLValue value = editorEnvironment.getValue(identifierAtCaret);\r
- if(value != null)\r
- OpenSCLDefinition.openDefinition(value);\r
+ String text = styledText.getText();\r
+ int caretOffset = styledText.getCaretOffset();\r
+ \r
+ // Find the line where the caret is\r
+ String lineAtCaret = extractLineAt(text, caretOffset);\r
+ if(lineAtCaret.startsWith("import ") || lineAtCaret.startsWith("include ")) {\r
+ int p1 = lineAtCaret.indexOf('"', 6);\r
+ int p2 = lineAtCaret.indexOf('"', p1+1);\r
+ String moduleName = lineAtCaret.substring(p1+1, p2);\r
+ OpenSCLModule.openModule(moduleName);\r
+ }\r
+ else {\r
+ // Try to find an identifier at caret\r
+ String identifierAtCaret = extractIdentifierOrSymbolAt(text, caretOffset);\r
+ if(identifierAtCaret.isEmpty())\r
+ return null;\r
+ SCLTextEditorEnvironment editorEnvironment = moduleEditor.getSCLTextEditorEnvironment();\r
+ editorEnvironment.updateEnvironment(moduleEditor.getDocument());\r
+ SCLValue value = editorEnvironment.getValue(identifierAtCaret);\r
+ if(value != null)\r
+ OpenSCLDefinition.openDefinition(value);\r
+ }\r