summaryrefslogtreecommitdiff
path: root/platform/projectModel-impl/src/com/intellij/openapi/components/impl/ProjectPathMacroManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/projectModel-impl/src/com/intellij/openapi/components/impl/ProjectPathMacroManager.java')
-rw-r--r--platform/projectModel-impl/src/com/intellij/openapi/components/impl/ProjectPathMacroManager.java32
1 files changed, 21 insertions, 11 deletions
diff --git a/platform/projectModel-impl/src/com/intellij/openapi/components/impl/ProjectPathMacroManager.java b/platform/projectModel-impl/src/com/intellij/openapi/components/impl/ProjectPathMacroManager.java
index bd97349ca0bb..ba0db4a9df1c 100644
--- a/platform/projectModel-impl/src/com/intellij/openapi/components/impl/ProjectPathMacroManager.java
+++ b/platform/projectModel-impl/src/com/intellij/openapi/components/impl/ProjectPathMacroManager.java
@@ -12,47 +12,57 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.SystemIndependent;
import org.jetbrains.jps.model.serialization.PathMacroUtil;
+import java.util.Map;
import java.util.function.Supplier;
public class ProjectPathMacroManager extends PathMacroManager {
- private final Supplier<@SystemIndependent String> myBasePathPointer;
- private final @Nullable Supplier<@SystemIndependent String> myNamePointer;
+ private final @NotNull Supplier<@Nullable @SystemIndependent String> myProjectFilePathPointer;
+ private final @NotNull Supplier<@Nullable @SystemIndependent String> myBasePathPointer;
+ private final @Nullable Supplier<@NotNull @SystemIndependent String> myNamePointer;
public ProjectPathMacroManager(@NotNull Project project) {
super(PathMacros.getInstance());
+ myProjectFilePathPointer = project::getProjectFilePath;
myBasePathPointer = project::getBasePath;
myNamePointer = !project.isDefault() ? project::getName : null;
}
@NonInjectable
- private ProjectPathMacroManager(Supplier<@SystemIndependent String> basePathPointer,
- @Nullable Supplier<@SystemIndependent String> namePointer) {
+ private ProjectPathMacroManager(@NotNull Supplier<@Nullable @SystemIndependent String> projectFilePathPointer,
+ @NotNull Supplier<@Nullable @SystemIndependent String> basePathPointer,
+ @Nullable Supplier<@NotNull @SystemIndependent String> namePointer) {
super(PathMacros.getInstance());
+ myProjectFilePathPointer = projectFilePathPointer;
myBasePathPointer = basePathPointer;
myNamePointer = namePointer;
}
- @NotNull
@Override
- public ExpandMacroToPathMap getExpandMacroMap() {
+ public @NotNull ExpandMacroToPathMap getExpandMacroMap() {
ExpandMacroToPathMap result = super.getExpandMacroMap();
addFileHierarchyReplacements(result, PathMacroUtil.PROJECT_DIR_MACRO_NAME, myBasePathPointer.get());
if (myNamePointer != null) {
result.addMacroExpand(PathMacroUtil.PROJECT_NAME_MACRO_NAME, myNamePointer.get());
}
+ String projectFile = myProjectFilePathPointer.get();
+ if (projectFile != null) {
+ for (Map.Entry<String, String> entry : ProjectWidePathMacroContributor.getAllMacros(projectFile).entrySet()) {
+ result.addMacroExpand(entry.getKey(), entry.getValue());
+ }
+ }
return result;
}
- @NotNull
@Override
- protected ReplacePathToMacroMap computeReplacePathMap() {
+ protected @NotNull ReplacePathToMacroMap computeReplacePathMap() {
ReplacePathToMacroMap result = super.computeReplacePathMap();
addFileHierarchyReplacements(result, PathMacroUtil.PROJECT_DIR_MACRO_NAME, myBasePathPointer.get(), null);
return result;
}
- public static ProjectPathMacroManager createInstance(Supplier<@SystemIndependent String> basePathPointer,
- @Nullable Supplier<@SystemIndependent String> namePointer) {
- return new ProjectPathMacroManager(basePathPointer, namePointer);
+ public static ProjectPathMacroManager createInstance(@NotNull Supplier<@Nullable @SystemIndependent String> projectFilePathPointer,
+ @NotNull Supplier<@SystemIndependent @Nullable String> basePathPointer,
+ @Nullable Supplier<@SystemIndependent @NotNull String> namePointer) {
+ return new ProjectPathMacroManager(projectFilePathPointer, basePathPointer, namePointer);
}
}