X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.ui%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fui%2Feditor%2Fcompletion%2FSCLTextEditorEnvironment.java;h=92133fd5a1b240a5bcc29dca765d6630bb78f7c2;hb=16830d186382540fb6cd8e46239e9215651071f8;hp=de335f0f944c3ba7135b5ba6900398f6cd91b4c5;hpb=53072c542bfdb7646792fc338264f260f66b4bdf;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor/completion/SCLTextEditorEnvironment.java b/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor/completion/SCLTextEditorEnvironment.java index de335f0f9..92133fd5a 100644 --- a/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor/completion/SCLTextEditorEnvironment.java +++ b/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor/completion/SCLTextEditorEnvironment.java @@ -45,12 +45,17 @@ public class SCLTextEditorEnvironment { public void updateEnvironment(IDocument document) { String contents = document.get(); - String[] lines = contents.split("\\R+"); + // Strip triple quoted strings from the contents since they may contain lines that look exactly like normal imports / includes + contents = contents.replaceAll("(?s)\"\"\".*?\"\"\"", "\"\""); + // Strip multiline comments since they may contain lines that look exactly like normal imports / includes + contents = contents.replaceAll("(?s)/\\*.*?\\*/", ""); + + String[] lines = contents.split("\\R+"); //$NON-NLS-1$ List imports = new ArrayList<>(); - imports.add(new ImportDeclaration("StandardLibrary", "")); + imports.add(new ImportDeclaration("StandardLibrary", "")); //$NON-NLS-1$ //$NON-NLS-2$ for (String line : lines) { line = line.trim(); - if (line.startsWith("import") || line.startsWith("include")) { + if (line.startsWith("import ") || line.startsWith("include ")) { //$NON-NLS-1$ //$NON-NLS-2$ SCLParserImpl parser = new SCLParserImpl(new StringReader(line)); try { ImportDeclaration importDecl = (ImportDeclaration)parser.parseImport(); @@ -82,14 +87,14 @@ public class SCLTextEditorEnvironment { List proposals = new ArrayList<>(); for(SCLValue value : Environments.findValuesForPrefix(env, prefix)) { Name name = value.getName(); - if((name.module.equals(moduleName) || !value.isPrivate()) && !(name.name.contains("$") && Character.isLetter(name.name.charAt(0)))) + if((name.module.equals(moduleName) || !value.isPrivate()) && !(name.name.contains("$") && Character.isLetter(name.name.charAt(0)))) //$NON-NLS-1$ proposals.add(new SCLCompletionProposal(value, offset - lastPart.length(), lastPart)); } for(TCon type : Environments.findTypesForPrefix(env, prefix)) { proposals.add(new SCLCompletionProposal(type.name, type.module, SCLCompletionType.TYPE, offset - lastPart.length(), lastPart)); } - if(!prefix.contains(".")) { + if(!prefix.contains(".")) { //$NON-NLS-1$ for (ImportDeclaration decl : cachedImports) { if (decl.localName != null && !decl.localName.isEmpty() && decl.localName.toLowerCase().startsWith(prefix.toLowerCase())) { proposals.add(new SCLCompletionProposal(decl.localName, decl.moduleName, SCLCompletionType.CONST, offset - prefix.length(), prefix)); @@ -108,6 +113,7 @@ public class SCLTextEditorEnvironment { try { String absoluteModuleName = ModuleUtils.resolveAbsolutePath(moduleName, relativeImport.moduleName); absoluteImports.add(new ImportDeclaration( + relativeImport.location, absoluteModuleName, relativeImport.localName, relativeImport.reexport, relativeImport.spec)); } catch (InvalidModulePathException e) {