From 9144ef12669f3390e33da18d33078f7a406ae32e Mon Sep 17 00:00:00 2001 From: Sebastiano Poggi Date: Wed, 7 Aug 2024 18:53:31 +0200 Subject: [PATCH 1/6] Upgrade IJ plugin to IJP plugin 2.0 --- ktfmt_idea_plugin/build.gradle.kts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ktfmt_idea_plugin/build.gradle.kts b/ktfmt_idea_plugin/build.gradle.kts index dfc122b3..c5457fd4 100644 --- a/ktfmt_idea_plugin/build.gradle.kts +++ b/ktfmt_idea_plugin/build.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType.* + /* * Copyright (c) Meta Platforms, Inc. and affiliates. * From 52c8d2d17af1d8db63572c301f30c3a08296f60a Mon Sep 17 00:00:00 2001 From: Sebastiano Poggi Date: Wed, 7 Aug 2024 19:08:28 +0200 Subject: [PATCH 2/6] Fix crash in IJ 242 Notification groups should not be stored in fields. It causes a crash when starting the IDE in IJ 242. --- .../ktfmt/intellij/InitialConfigurationStartupActivity.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/ktfmt_idea_plugin/src/main/java/com/facebook/ktfmt/intellij/InitialConfigurationStartupActivity.java b/ktfmt_idea_plugin/src/main/java/com/facebook/ktfmt/intellij/InitialConfigurationStartupActivity.java index 9b9387a2..0bfc7282 100644 --- a/ktfmt_idea_plugin/src/main/java/com/facebook/ktfmt/intellij/InitialConfigurationStartupActivity.java +++ b/ktfmt_idea_plugin/src/main/java/com/facebook/ktfmt/intellij/InitialConfigurationStartupActivity.java @@ -17,7 +17,6 @@ package com.facebook.ktfmt.intellij; import com.intellij.notification.Notification; -import com.intellij.notification.NotificationGroup; import com.intellij.notification.NotificationGroupManager; import com.intellij.notification.NotificationType; import com.intellij.openapi.project.Project; @@ -27,12 +26,9 @@ final class InitialConfigurationStartupActivity implements StartupActivity.Background { private static final String NOTIFICATION_TITLE = "Enable ktfmt"; - private static final NotificationGroup NOTIFICATION_GROUP = - NotificationGroupManager.getInstance().getNotificationGroup(NOTIFICATION_TITLE); @Override public void runActivity(@NotNull Project project) { - KtfmtSettings settings = KtfmtSettings.getInstance(project); if (settings.isUninitialized()) { @@ -43,7 +39,7 @@ public void runActivity(@NotNull Project project) { private void displayNewUserNotification(Project project, KtfmtSettings settings) { new Notification( - NOTIFICATION_GROUP.getDisplayId(), + NotificationGroupManager.getInstance().getNotificationGroup(NOTIFICATION_TITLE).getDisplayId(), NOTIFICATION_TITLE, "The ktfmt plugin is disabled by default. " + "Enable for this project.", From bcc068c2f1c267032bab02900bdb7789e0e79989 Mon Sep 17 00:00:00 2001 From: Sebastiano Poggi Date: Wed, 7 Aug 2024 17:37:32 +0200 Subject: [PATCH 3/6] Remove deprecated API usage --- .../InitialConfigurationStartupActivity.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/ktfmt_idea_plugin/src/main/java/com/facebook/ktfmt/intellij/InitialConfigurationStartupActivity.java b/ktfmt_idea_plugin/src/main/java/com/facebook/ktfmt/intellij/InitialConfigurationStartupActivity.java index 0bfc7282..9a66dcef 100644 --- a/ktfmt_idea_plugin/src/main/java/com/facebook/ktfmt/intellij/InitialConfigurationStartupActivity.java +++ b/ktfmt_idea_plugin/src/main/java/com/facebook/ktfmt/intellij/InitialConfigurationStartupActivity.java @@ -19,6 +19,8 @@ import com.intellij.notification.Notification; import com.intellij.notification.NotificationGroupManager; import com.intellij.notification.NotificationType; +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.project.Project; import com.intellij.openapi.startup.StartupActivity; import org.jetbrains.annotations.NotNull; @@ -39,15 +41,18 @@ public void runActivity(@NotNull Project project) { private void displayNewUserNotification(Project project, KtfmtSettings settings) { new Notification( - NotificationGroupManager.getInstance().getNotificationGroup(NOTIFICATION_TITLE).getDisplayId(), + NotificationGroupManager.getInstance() + .getNotificationGroup(NOTIFICATION_TITLE) + .getDisplayId(), NOTIFICATION_TITLE, - "The ktfmt plugin is disabled by default. " - + "Enable for this project.", + "The ktfmt plugin is disabled by default.", NotificationType.INFORMATION) - .setListener( - (n, e) -> { - settings.setEnabled(true); - n.expire(); + .addAction( + new AnAction("Enable for This Project") { + @Override + public void actionPerformed(@NotNull AnActionEvent e) { + settings.setEnabled(true); + } }) .notify(project); } From 6d0ac52e8f5b749597f3c70604cffb446533b998 Mon Sep 17 00:00:00 2001 From: Sebastiano Poggi Date: Wed, 7 Aug 2024 19:14:10 +0200 Subject: [PATCH 4/6] Add task to run plugin on IJ 242 --- ktfmt_idea_plugin/build.gradle.kts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ktfmt_idea_plugin/build.gradle.kts b/ktfmt_idea_plugin/build.gradle.kts index c5457fd4..c5907fe0 100644 --- a/ktfmt_idea_plugin/build.gradle.kts +++ b/ktfmt_idea_plugin/build.gradle.kts @@ -68,3 +68,8 @@ intellijPlatform { } spotless { java { googleJavaFormat(libs.versions.googleJavaFormat.get()) } } + +val runIntellij242 by intellijPlatformTesting.runIde.registering { + type = IntellijIdeaCommunity + version = "2024.2" +} From 31f6639c8ff5882d94e8c7ef976a9a39460bb0bc Mon Sep 17 00:00:00 2001 From: Sebastiano Poggi Date: Wed, 7 Aug 2024 20:38:27 +0200 Subject: [PATCH 5/6] Dismiss notification when action is clicked --- .../intellij/InitialConfigurationStartupActivity.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ktfmt_idea_plugin/src/main/java/com/facebook/ktfmt/intellij/InitialConfigurationStartupActivity.java b/ktfmt_idea_plugin/src/main/java/com/facebook/ktfmt/intellij/InitialConfigurationStartupActivity.java index 9a66dcef..00fe09ae 100644 --- a/ktfmt_idea_plugin/src/main/java/com/facebook/ktfmt/intellij/InitialConfigurationStartupActivity.java +++ b/ktfmt_idea_plugin/src/main/java/com/facebook/ktfmt/intellij/InitialConfigurationStartupActivity.java @@ -40,18 +40,22 @@ public void runActivity(@NotNull Project project) { } private void displayNewUserNotification(Project project, KtfmtSettings settings) { - new Notification( + Notification notification = + new Notification( NotificationGroupManager.getInstance() .getNotificationGroup(NOTIFICATION_TITLE) .getDisplayId(), NOTIFICATION_TITLE, "The ktfmt plugin is disabled by default.", - NotificationType.INFORMATION) + NotificationType.INFORMATION); + + notification .addAction( new AnAction("Enable for This Project") { @Override public void actionPerformed(@NotNull AnActionEvent e) { settings.setEnabled(true); + notification.expire(); } }) .notify(project); From 03b319d3058ce9e43ecc549e4fef2db2c1b335de Mon Sep 17 00:00:00 2001 From: Sebastiano Poggi Date: Thu, 8 Aug 2024 12:43:56 +0200 Subject: [PATCH 6/6] Avoid using daemon in Gradle builds It's slower on CI since it's a one-off build --- .github/workflows/build_and_test.yml | 4 ++-- .github/workflows/publish_artifacts_on_release.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index c3fae71c..7abcbf30 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -30,10 +30,10 @@ jobs: - name: Build ktfmt_idea_plugin run: | pushd ktfmt_idea_plugin - ./gradlew build + ./gradlew build --no-daemon popd - name: Build the Online Formatter run: | pushd online_formatter - ./gradlew build + ./gradlew build --no-daemon popd diff --git a/.github/workflows/publish_artifacts_on_release.yaml b/.github/workflows/publish_artifacts_on_release.yaml index 371d3344..596b47c3 100644 --- a/.github/workflows/publish_artifacts_on_release.yaml +++ b/.github/workflows/publish_artifacts_on_release.yaml @@ -50,7 +50,7 @@ jobs: - name: Publish IntelliJ plugin to JetBrains Marketplace run: | pushd ktfmt_idea_plugin - ./gradlew publishPlugin --stacktrace + ./gradlew publishPlugin --stacktrace --no-daemon popd env: JETBRAINS_MARKETPLACE_TOKEN: ${{ secrets.JETBRAINS_MARKETPLACE_TOKEN }}