Skip to content

Commit 5176dfd

Browse files
committed
Some refactorings
1 parent 5968d59 commit 5176dfd

8 files changed

Lines changed: 104 additions & 71 deletions

File tree

resources/META-INF/plugin.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@
169169
<!--<applicationService serviceInterface="de.halirutan.mathematica.MathematicaSettings" serviceImplementation="de.halirutan.mathematica.MathematicaSettings"/>-->
170170
<!--<applicationConfigurable groupId="language" displayName="Mathematica" id="preferences.Mathematica"-->
171171
<!--instance="de.halirutan.mathematica.MathematicaSettingsConfigurable"/>-->
172-
<fileBasedIndex implementation="de.halirutan.mathematica.index.export.MathematicaPackageExportIndex"/>
172+
<fileBasedIndex implementation="de.halirutan.mathematica.index.packageexport.MathematicaPackageExportIndex"/>
173173

174174

175175
</extensions>

src/de/halirutan/mathematica/actions/PackageExportChecker.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@
2929
import com.intellij.psi.search.GlobalSearchScope;
3030
import com.intellij.util.indexing.FileBasedIndex;
3131
import com.intellij.util.indexing.ID;
32-
import de.halirutan.mathematica.index.export.MathematicaPackageExportIndex;
33-
import de.halirutan.mathematica.index.export.MathematicaPackageExportIndex.FileKey;
34-
import de.halirutan.mathematica.index.export.MathematicaPackageExportIndex.Key;
35-
import de.halirutan.mathematica.index.export.PackageExportSymbol;
32+
import de.halirutan.mathematica.index.packageexport.MathematicaPackageExportIndex;
33+
import de.halirutan.mathematica.index.packageexport.MathematicaPackageExportIndex.FileKey;
34+
import de.halirutan.mathematica.index.packageexport.MathematicaPackageExportIndex.Key;
35+
import de.halirutan.mathematica.index.packageexport.PackageExportSymbol;
3636

3737
import java.util.Collection;
3838
import java.util.List;
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
/*
2+
* Copyright (c) 2016 Patrick Scheibe
3+
* Permission is hereby granted, free of charge, to any person obtaining a copy
4+
* of this software and associated documentation files (the "Software"), to deal
5+
* in the Software without restriction, including without limitation the rights
6+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7+
* copies of the Software, and to permit persons to whom the Software is
8+
* furnished to do so, subject to the following conditions:
9+
*
10+
* The above copyright notice and this permission notice shall be included in
11+
* all copies or substantial portions of the Software.
12+
*
13+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19+
* THE SOFTWARE.
20+
*/
21+
22+
package de.halirutan.mathematica.codeinsight.completion;
23+
24+
import com.intellij.psi.PsiElement;
25+
import com.intellij.psi.PsiFile;
26+
import de.halirutan.mathematica.parsing.psi.MathematicaVisitor;
27+
import de.halirutan.mathematica.parsing.psi.api.CompoundExpression;
28+
import de.halirutan.mathematica.parsing.psi.api.FunctionCall;
29+
import de.halirutan.mathematica.parsing.psi.api.string.MString;
30+
31+
import java.util.HashSet;
32+
33+
/**
34+
* @author patrick (19.12.16).
35+
*/
36+
public class ImportedContextVisitor extends MathematicaVisitor {
37+
38+
private final HashSet<String > myImportedContexts;
39+
40+
public ImportedContextVisitor() {
41+
myImportedContexts = new HashSet<String>();
42+
}
43+
44+
public HashSet<String> getImportedContexts() {
45+
return myImportedContexts;
46+
}
47+
48+
@Override
49+
public void visitFile(PsiFile file) {
50+
file.acceptChildren(this);
51+
}
52+
53+
@Override
54+
public void visitCompoundExpression(CompoundExpression compoundExpression) {
55+
compoundExpression.acceptChildren(this);
56+
}
57+
58+
@Override
59+
public void visitFunctionCall(FunctionCall functionCall) {
60+
if (functionCall.matchesHead("Needs")) {
61+
final PsiElement context = functionCall.getArgument(1);
62+
if (context instanceof MString) {
63+
final String text = context.getText();
64+
myImportedContexts.add(text.substring(1, text.length() - 1));
65+
}
66+
}
67+
}
68+
}

src/de/halirutan/mathematica/codeinsight/completion/VariableNameCompletion.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,18 @@
3030
import com.intellij.psi.PsiFile;
3131
import com.intellij.psi.PsiRecursiveElementVisitor;
3232
import com.intellij.psi.ResolveState;
33+
import com.intellij.psi.search.GlobalSearchScope;
3334
import com.intellij.psi.util.PsiTreeUtil;
3435
import com.intellij.util.ProcessingContext;
3536
import com.intellij.util.containers.hash.HashSet;
37+
import com.intellij.util.indexing.FileBasedIndex;
38+
import de.halirutan.mathematica.index.packageexport.MathematicaPackageExportIndex;
39+
import de.halirutan.mathematica.index.packageexport.MathematicaPackageExportIndex.Key;
40+
import de.halirutan.mathematica.index.packageexport.PackageExportSymbol;
3641
import de.halirutan.mathematica.parsing.psi.api.Symbol;
3742
import org.jetbrains.annotations.NotNull;
3843

44+
import java.util.Collection;
3945
import java.util.List;
4046
import java.util.Set;
4147

@@ -72,6 +78,21 @@ protected void addCompletions(@NotNull CompletionParameters parameters, Processi
7278
}
7379
}
7480

81+
ImportedContextVisitor importVisitor = new ImportedContextVisitor();
82+
callingSymbol.getContainingFile().accept(importVisitor);
83+
final java.util.HashSet<String> importedContexts = importVisitor.getImportedContexts();
84+
final FileBasedIndex index = FileBasedIndex.getInstance();
85+
final Collection<Key> allKeys = index.getAllKeys(MathematicaPackageExportIndex.INDEX_ID, callingSymbol.getProject());
86+
for (Key key : allKeys) {
87+
final List<List<PackageExportSymbol>> values = index.getValues(MathematicaPackageExportIndex.INDEX_ID, key, GlobalSearchScope.allScope(callingSymbol.getProject()));
88+
for (List<PackageExportSymbol> value : values) {
89+
for (PackageExportSymbol packageExportSymbol : value) {
90+
//TODO: Implement adding completions
91+
// if(packageExportSymbol.nameSpace.equals())
92+
}
93+
}
94+
}
95+
7596

7697
final LocalDefinitionCompletionProvider processor = new LocalDefinitionCompletionProvider(callingSymbol);
7798
PsiTreeUtil.treeWalkUp(processor, callingSymbol, containingFile, ResolveState.initial());

src/de/halirutan/mathematica/index/export/ExportSymbolVisitor.java

Lines changed: 0 additions & 61 deletions
This file was deleted.

src/de/halirutan/mathematica/index/export/MathematicaPackageExportIndex.java renamed to src/de/halirutan/mathematica/index/packageexport/MathematicaPackageExportIndex.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
* THE SOFTWARE.
2020
*/
2121

22-
package de.halirutan.mathematica.index.export;
22+
package de.halirutan.mathematica.index.packageexport;
2323

2424
import com.intellij.openapi.vfs.VirtualFile;
2525
import com.intellij.psi.PsiFile;
@@ -29,7 +29,7 @@
2929
import com.intellij.util.io.DataExternalizer;
3030
import com.intellij.util.io.IOUtil;
3131
import com.intellij.util.io.KeyDescriptor;
32-
import de.halirutan.mathematica.index.export.MathematicaPackageExportIndex.Key;
32+
import de.halirutan.mathematica.index.packageexport.MathematicaPackageExportIndex.Key;
3333
import org.jetbrains.annotations.NotNull;
3434

3535
import java.io.DataInput;
@@ -45,7 +45,7 @@
4545
public class MathematicaPackageExportIndex extends FileBasedIndexExtension<Key, List<PackageExportSymbol>> {
4646

4747
public static final ID<Key,List<PackageExportSymbol>> INDEX_ID = ID.create("Mathematica.fileExports");
48-
private static final int BASE_VERSION = 2;
48+
private static final int BASE_VERSION = 4;
4949

5050
@NotNull
5151
@Override
@@ -58,6 +58,11 @@ public boolean acceptInput(@NotNull VirtualFile file) {
5858
};
5959
}
6060

61+
@Override
62+
public boolean indexDirectories() {
63+
return false;
64+
}
65+
6166
@Override
6267
public boolean dependsOnFileContent() {
6368
return true;

src/de/halirutan/mathematica/index/export/PackageClassifier.java renamed to src/de/halirutan/mathematica/index/packageexport/PackageClassifier.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
* THE SOFTWARE.
2020
*/
2121

22-
package de.halirutan.mathematica.index.export;
22+
package de.halirutan.mathematica.index.packageexport;
2323

2424
import com.intellij.psi.PsiElement;
2525
import com.intellij.psi.PsiFile;

src/de/halirutan/mathematica/index/export/PackageExportSymbol.java renamed to src/de/halirutan/mathematica/index/packageexport/PackageExportSymbol.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
* THE SOFTWARE.
2020
*/
2121

22-
package de.halirutan.mathematica.index.export;
22+
package de.halirutan.mathematica.index.packageexport;
2323

2424
/**
2525
* @author patrick (01.11.16).

0 commit comments

Comments
 (0)