Skip to content

Commit 7c169a5

Browse files
committed
add bundle controller path to resource completion whitelist #307
1 parent fb72e4b commit 7c169a5

File tree

2 files changed

+28
-19
lines changed

2 files changed

+28
-19
lines changed

src/fr/adrienbrault/idea/symfony2plugin/config/yaml/YamlCompletionContributor.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ public void addCompletions(@NotNull CompletionParameters parameters,
112112
extend(CompletionType.BASIC, YamlElementPatternHelper.getOrmSingleLineScalarKey("referencedColumnName"), new ReferencedColumnCompletionProvider());
113113

114114
extend(CompletionType.BASIC, YamlElementPatternHelper.getSingleLineScalarKey("_controller"), new ControllerCompletionProvider());
115-
extend(CompletionType.BASIC, YamlElementPatternHelper.getSingleLineScalarKey("resource"), new SymfonyBundleFileCompletionProvider("Resources/config"));
115+
extend(CompletionType.BASIC, YamlElementPatternHelper.getSingleLineScalarKey("resource"), new SymfonyBundleFileCompletionProvider("Resources/config", "Controller"));
116116

117117
extend(CompletionType.BASIC, YamlElementPatternHelper.getSuperParentArrayKey("services"), new YamlCompletionProvider(new String[] {"class", "public", "tags", "calls", "arguments", "scope"}));
118118

src/fr/adrienbrault/idea/symfony2plugin/util/SymfonyBundleFileCompletionProvider.java

+27-18
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,14 @@
1919
import org.jetbrains.annotations.NotNull;
2020

2121
import java.util.ArrayList;
22+
import java.util.List;
2223

2324
public class SymfonyBundleFileCompletionProvider extends CompletionProvider<CompletionParameters> {
2425

25-
private String path;
26+
private String[] paths;
2627

27-
public SymfonyBundleFileCompletionProvider(String path) {
28-
this.path = path;
28+
public SymfonyBundleFileCompletionProvider(String... paths) {
29+
this.paths = paths;
2930
}
3031

3132
@Override
@@ -38,22 +39,12 @@ protected void addCompletions(@NotNull CompletionParameters completionParameters
3839
PhpIndex phpIndex = PhpIndex.getInstance(completionParameters.getPosition().getProject());
3940

4041
SymfonyBundleUtil symfonyBundleUtil = new SymfonyBundleUtil(phpIndex);
41-
ArrayList<BundleFile> bundleFiles = new ArrayList<BundleFile>();
42+
List<BundleFile> bundleFiles = new ArrayList<BundleFile>();
4243

4344
for(SymfonyBundle symfonyBundle : symfonyBundleUtil.getBundles()) {
44-
45-
VirtualFile virtualFile = symfonyBundle.getRelative(this.path);
46-
if(virtualFile != null) {
47-
final BundleContentIterator bundleContentIterator = new BundleContentIterator(symfonyBundle, bundleFiles, completionParameters.getPosition().getProject());
48-
VfsUtil.visitChildrenRecursively(virtualFile, new VirtualFileVisitor() {
49-
@Override
50-
public boolean visitFile(@NotNull VirtualFile virtualFile) {
51-
bundleContentIterator.processFile(virtualFile);
52-
return super.visitFile(virtualFile);
53-
}
54-
});
45+
for(String path: this.paths) {
46+
visitPath(completionParameters, bundleFiles, symfonyBundle, path);
5547
}
56-
5748
}
5849

5950
for(BundleFile bundleFile : bundleFiles) {
@@ -62,13 +53,31 @@ public boolean visitFile(@NotNull VirtualFile virtualFile) {
6253

6354
}
6455

56+
private void visitPath(CompletionParameters completionParameters, List<BundleFile> bundleFiles, SymfonyBundle symfonyBundle, String path) {
57+
58+
VirtualFile virtualFile = symfonyBundle.getRelative(path);
59+
if(virtualFile == null) {
60+
return;
61+
}
62+
63+
final BundleContentIterator bundleContentIterator = new BundleContentIterator(symfonyBundle, bundleFiles, completionParameters.getPosition().getProject());
64+
VfsUtil.visitChildrenRecursively(virtualFile, new VirtualFileVisitor() {
65+
@Override
66+
public boolean visitFile(@NotNull VirtualFile virtualFile) {
67+
bundleContentIterator.processFile(virtualFile);
68+
return super.visitFile(virtualFile);
69+
}
70+
});
71+
72+
}
73+
6574
private class BundleContentIterator implements ContentIterator{
6675

6776
private SymfonyBundle symfonyBundle;
68-
private ArrayList<BundleFile> bundleFiles;
77+
private List<BundleFile> bundleFiles;
6978
private Project project;
7079

71-
public BundleContentIterator(SymfonyBundle symfonyBundle, ArrayList<BundleFile> bundleFiles, Project project) {
80+
public BundleContentIterator(SymfonyBundle symfonyBundle, List<BundleFile> bundleFiles, Project project) {
7281
this.symfonyBundle = symfonyBundle;
7382
this.bundleFiles = bundleFiles;
7483
this.project = project;

0 commit comments

Comments
 (0)