From 1dc2a4b6dcf672a094ff66d8208635b6224898ca Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 30 Aug 2012 13:54:48 +0200 Subject: [PATCH] add ModuleSdkPath macro (PY-7358) --- .../com/intellij/ide/macro/JdkPathMacro.java | 8 ++- .../com/intellij/ide/macro/MacroManager.java | 1 + .../ide/macro/ModuleSdkPathMacro.java | 50 +++++++++++++++++++ .../application/options/PathMacrosImpl.java | 1 + 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 platform/lang-impl/src/com/intellij/ide/macro/ModuleSdkPathMacro.java diff --git a/platform/lang-impl/src/com/intellij/ide/macro/JdkPathMacro.java b/platform/lang-impl/src/com/intellij/ide/macro/JdkPathMacro.java index dbf50f5ca2d6..c3ff7a8375a5 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/JdkPathMacro.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/JdkPathMacro.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.projectRoots.ex.PathUtilEx; import com.intellij.util.PathUtil; +import org.jetbrains.annotations.Nullable; import java.io.File; @@ -41,6 +42,11 @@ public final class JdkPathMacro extends Macro { return null; } final Sdk anyJdk = PathUtilEx.getAnyJdk(project); + return sdkPath(anyJdk); + } + + @Nullable + static String sdkPath(@Nullable Sdk anyJdk) { if (anyJdk == null) { return null; } diff --git a/platform/lang-impl/src/com/intellij/ide/macro/MacroManager.java b/platform/lang-impl/src/com/intellij/ide/macro/MacroManager.java index 567f9728e1ad..d9ac7f5f9bba 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/MacroManager.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/MacroManager.java @@ -67,6 +67,7 @@ public final class MacroManager { registerMacro(new ModuleFileDirMacro()); registerMacro(new ModuleNameMacro()); registerMacro(new ModulePathMacro()); + registerMacro(new ModuleSdkPathMacro()); registerMacro(new FileRelativePathMacro()); registerMacro(new FileRelativeDirMacro()); diff --git a/platform/lang-impl/src/com/intellij/ide/macro/ModuleSdkPathMacro.java b/platform/lang-impl/src/com/intellij/ide/macro/ModuleSdkPathMacro.java new file mode 100644 index 000000000000..6aa74931ec27 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/ide/macro/ModuleSdkPathMacro.java @@ -0,0 +1,50 @@ +/* + * Copyright 2000-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.ide.macro; + +import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.roots.ModuleRootManager; +import com.intellij.util.PlatformUtils; +import org.jetbrains.annotations.Nullable; + +/** + * @author yole + */ +public class ModuleSdkPathMacro extends Macro { + @Override + public String getName() { + return "ModuleSdkPath"; + } + + @Override + public String getDescription() { + return PlatformUtils.isPyCharm() + ? "Project interpreter path" + : "Module SDK path"; + } + + @Nullable + @Override + public String expand(DataContext dataContext) throws ExecutionCancelledException { + final Module module = LangDataKeys.MODULE.getData(dataContext); + if (module == null) { + return null; + } + return JdkPathMacro.sdkPath(ModuleRootManager.getInstance(module).getSdk()); + } +} diff --git a/platform/projectModel-impl/src/com/intellij/application/options/PathMacrosImpl.java b/platform/projectModel-impl/src/com/intellij/application/options/PathMacrosImpl.java index 5bcd24c9a6e9..759b72f101e1 100644 --- a/platform/projectModel-impl/src/com/intellij/application/options/PathMacrosImpl.java +++ b/platform/projectModel-impl/src/com/intellij/application/options/PathMacrosImpl.java @@ -112,6 +112,7 @@ public class PathMacrosImpl extends PathMacros implements ApplicationComponent, "ModuleFilePath", "ModuleName", "ModuleSourcePath", + "ModuleSdkPath", "OutputPath", "PhpExecutable", "ProjectFileDir",