X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=bundles%2Forg.simantics.scl.ui%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fui%2Feditor%2Fcompletion%2FSCLTextEditorEnvironment.java;h=92133fd5a1b240a5bcc29dca765d6630bb78f7c2;hb=HEAD;hp=98b51917744aaa43d7f179a0712e72b23bfdb29a;hpb=bb8e054f744ea6a627ac9f2e3cc49c08719bed90;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 98b519177..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));