From bfaaefa4ba3097f5155be7ce2162a01add392ef9 Mon Sep 17 00:00:00 2001 From: Shitikanth Kashyap Date: Thu, 27 Mar 2025 11:13:00 +0530 Subject: [PATCH 1/2] Allow selecting code style in Intellij plugin --- .../intellij/FormatterProvider.java | 16 +++++++++++-- .../javaformat/intellij/UiFormatterStyle.java | 2 ++ .../BootstrappingFormatterService.java | 23 +++++++++++++++++-- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/idea-plugin/src/main/java/com/palantir/javaformat/intellij/FormatterProvider.java b/idea-plugin/src/main/java/com/palantir/javaformat/intellij/FormatterProvider.java index bdc41815d..b27940880 100644 --- a/idea-plugin/src/main/java/com/palantir/javaformat/intellij/FormatterProvider.java +++ b/idea-plugin/src/main/java/com/palantir/javaformat/intellij/FormatterProvider.java @@ -33,6 +33,7 @@ import com.palantir.javaformat.bootstrap.BootstrappingFormatterService; import com.palantir.javaformat.bootstrap.NativeImageFormatterService; import com.palantir.javaformat.java.FormatterService; +import com.palantir.javaformat.java.JavaFormatterOptions.Style; import java.io.IOException; import java.net.MalformedURLException; import java.net.URI; @@ -69,6 +70,7 @@ Optional get(Project project, PalantirJavaFormatSettings setti return implementationCache.get(new FormatterCacheKey( project, getSdkVersion(project), + settings.getStyle(), settings.getImplementationClassPath(), settings.getNativeImageClassPath(), settings.injectedVersionIsOutdated())); @@ -93,7 +95,8 @@ private static Optional createFormatter(FormatterCacheKey cach jdkMajorVersion, ApplicationInfo.getInstance().getBuild())) { Path jdkPath = getJdkPath(cacheKey.project); log.info("Using bootstrapping formatter with jdk version {} and path: {}", jdkMajorVersion, jdkPath); - return Optional.of(new BootstrappingFormatterService(jdkPath, jdkMajorVersion, implementationClasspath)); + return Optional.of(new BootstrappingFormatterService( + jdkPath, jdkMajorVersion, implementationClasspath, cacheKey.style)); } // Use "in-process" formatter service @@ -214,6 +217,7 @@ private static List listDirAsUrlsUnchecked(Path dir) { private static final class FormatterCacheKey { private final Project project; private final OptionalInt jdkMajorVersion; + private final Style style; private final Optional> implementationClassPath; private final Optional nativeImageClassPath; private final boolean useBundledImplementation; @@ -221,11 +225,13 @@ private static final class FormatterCacheKey { FormatterCacheKey( Project project, OptionalInt jdkMajorVersion, + Style style, Optional> implementationClassPath, Optional nativeImageClassPath, boolean useBundledImplementation) { this.project = project; this.jdkMajorVersion = jdkMajorVersion; + this.style = style; this.implementationClassPath = implementationClassPath; this.nativeImageClassPath = nativeImageClassPath; this.useBundledImplementation = useBundledImplementation; @@ -243,6 +249,7 @@ public boolean equals(Object o) { return Objects.equals(jdkMajorVersion, that.jdkMajorVersion) && useBundledImplementation == that.useBundledImplementation && Objects.equals(project, that.project) + && Objects.equals(style, that.style) && Objects.equals(implementationClassPath, that.implementationClassPath) && Objects.equals(nativeImageClassPath, that.nativeImageClassPath); } @@ -250,7 +257,12 @@ public boolean equals(Object o) { @Override public int hashCode() { return Objects.hash( - project, jdkMajorVersion, implementationClassPath, nativeImageClassPath, useBundledImplementation); + project, + jdkMajorVersion, + style, + implementationClassPath, + nativeImageClassPath, + useBundledImplementation); } } } diff --git a/idea-plugin/src/main/java/com/palantir/javaformat/intellij/UiFormatterStyle.java b/idea-plugin/src/main/java/com/palantir/javaformat/intellij/UiFormatterStyle.java index 3fc1bb7c7..7c067a176 100644 --- a/idea-plugin/src/main/java/com/palantir/javaformat/intellij/UiFormatterStyle.java +++ b/idea-plugin/src/main/java/com/palantir/javaformat/intellij/UiFormatterStyle.java @@ -24,6 +24,8 @@ /** Configuration options for the formatting style. */ enum UiFormatterStyle { PALANTIR("Default Palantir Java style", Style.PALANTIR), + GOOGLE("Default Google Java Style", Style.GOOGLE), + AOSP("AOSP-compliant Style", Style.AOSP), ; private final String description; diff --git a/palantir-java-format-jdk-bootstrap/src/main/java/com/palantir/javaformat/bootstrap/BootstrappingFormatterService.java b/palantir-java-format-jdk-bootstrap/src/main/java/com/palantir/javaformat/bootstrap/BootstrappingFormatterService.java index cf5caf897..e48e0935a 100644 --- a/palantir-java-format-jdk-bootstrap/src/main/java/com/palantir/javaformat/bootstrap/BootstrappingFormatterService.java +++ b/palantir-java-format-jdk-bootstrap/src/main/java/com/palantir/javaformat/bootstrap/BootstrappingFormatterService.java @@ -25,6 +25,7 @@ import com.google.common.collect.Range; import com.palantir.javaformat.java.FormatterException; import com.palantir.javaformat.java.FormatterService; +import com.palantir.javaformat.java.JavaFormatterOptions.Style; import com.palantir.javaformat.java.Replacement; import java.io.IOException; import java.nio.file.Path; @@ -43,11 +44,18 @@ public final class BootstrappingFormatterService implements FormatterService { private final Path jdkPath; private final Integer jdkMajorVersion; private final List implementationClassPath; + private final Style style; public BootstrappingFormatterService(Path jdkPath, Integer jdkMajorVersion, List implementationClassPath) { + this(jdkPath, jdkMajorVersion, implementationClassPath, Style.PALANTIR); + } + + public BootstrappingFormatterService( + Path jdkPath, Integer jdkMajorVersion, List implementationClassPath, Style style) { this.jdkPath = jdkPath; this.jdkMajorVersion = jdkMajorVersion; this.implementationClassPath = implementationClassPath; + this.style = style; } @Override @@ -85,6 +93,7 @@ private ImmutableList getFormatReplacementsInternal(String input, C .implementationClasspath(implementationClassPath) .outputReplacements(true) .characterRanges(ranges.stream().map(RangeUtils::toStringRange).collect(Collectors.toList())) + .style(style) .build(); Optional output = FormatterCommandRunner.runWithStdin(command.toArgs(), input); @@ -100,6 +109,7 @@ private String runFormatterCommand(String input) throws IOException { .withJvmArgsForVersion(jdkMajorVersion) .implementationClasspath(implementationClassPath) .outputReplacements(false) + .style(style) .build(); return FormatterCommandRunner.runWithStdin(command.toArgs(), input).orElse(input); } @@ -116,6 +126,8 @@ interface FormatterCliArgs { List jvmArgs(); + Style style(); + default List toArgs() { ImmutableList.Builder args = ImmutableList.builder() .add(jdkPath().toAbsolutePath().toString()) @@ -134,9 +146,16 @@ default List toArgs() { args.add("--output-replacements"); } + switch (style()) { + case GOOGLE -> {} + case PALANTIR -> { + args.add("--palantir"); + } + case AOSP -> { + args.add("--aosp"); + } + } return args - // Use palantir style - .add("--palantir") // Trailing "-" enables formatting stdin -> stdout .add("-") .build(); From 586740fc7589acf0795bd301251b0011279bf0db Mon Sep 17 00:00:00 2001 From: Shitikanth Kashyap Date: Sat, 29 Mar 2025 01:29:17 +0530 Subject: [PATCH 2/2] Add changelog --- changelog/@unreleased/pr-1256.v2.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 changelog/@unreleased/pr-1256.v2.yml diff --git a/changelog/@unreleased/pr-1256.v2.yml b/changelog/@unreleased/pr-1256.v2.yml new file mode 100644 index 000000000..07bce17fa --- /dev/null +++ b/changelog/@unreleased/pr-1256.v2.yml @@ -0,0 +1,6 @@ +type: improvement +improvement: + description: Allow selecting code style in Intellij plugin + links: + - https://github.com/palantir/palantir-java-format/pull/1256 +