diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c8006ff5..43a8788a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,9 +27,9 @@ jobs: strategy: fail-fast: false matrix: - jdk: [ 11 ] + jdk: [ 17 ] include: - - jdk: 11 + - jdk: 17 primary: true steps: diff --git a/build.gradle.kts b/build.gradle.kts index a4ef4cc2..390b3433 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,12 +2,13 @@ import org.jetbrains.changelog.Changelog import org.jetbrains.changelog.markdownToHTML import org.jetbrains.grammarkit.tasks.GenerateLexerTask import org.jetbrains.grammarkit.tasks.GenerateParserTask +import java.util.EnumSet plugins { // Java support id("java") // gradle-intellij-plugin - read more: https://github.com/JetBrains/gradle-intellij-plugin - id("org.jetbrains.intellij") version "1.13.3" + id("org.jetbrains.intellij") version "1.15.0" // gradle-changelog-plugin - read more: https://github.com/JetBrains/gradle-changelog-plugin id("org.jetbrains.changelog") version "2.1.0" // grammarkit - read more: https://github.com/JetBrains/gradle-grammar-kit-plugin @@ -198,7 +199,7 @@ tasks { } runPluginVerifier { - failureLevel.set(org.jetbrains.intellij.tasks.RunPluginVerifierTask.FailureLevel.ALL) + failureLevel.set(EnumSet.complementOf(EnumSet.of(org.jetbrains.intellij.tasks.RunPluginVerifierTask.FailureLevel.EXPERIMENTAL_API_USAGES))) } publishPlugin { diff --git a/gradle.properties b/gradle.properties index 62362767..d5f6bf6b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,8 +4,8 @@ pluginGroup = org.nixos.idea pluginName = NixIDEA pluginVersion = 0.4.0.11 -pluginSinceBuild = 222 +pluginSinceBuild = 232 pluginUntilBuild = 232.* -platformType = IC -platformVersion = 2022.2.5 +platformType = IU +platformVersion = 2023.2.1 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ae04661e..98debb84 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/java/org/nixos/idea/lsp/NixLspServerSupportProvider.java b/src/main/java/org/nixos/idea/lsp/NixLspServerSupportProvider.java new file mode 100644 index 00000000..4648566c --- /dev/null +++ b/src/main/java/org/nixos/idea/lsp/NixLspServerSupportProvider.java @@ -0,0 +1,36 @@ +package org.nixos.idea.lsp; + +import com.intellij.execution.ExecutionException; +import com.intellij.execution.configurations.GeneralCommandLine; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.platform.lsp.api.LspServerSupportProvider; +import com.intellij.platform.lsp.api.ProjectWideLspServerDescriptor; +import org.jetbrains.annotations.NotNull; +import org.nixos.idea.file.NixFileType; + +@SuppressWarnings("UnstableApiUsage") +public class NixLspServerSupportProvider implements LspServerSupportProvider { + @Override + public void fileOpened(@NotNull Project project, @NotNull VirtualFile virtualFile, @NotNull LspServerStarter lspServerStarter) { + if (virtualFile.getFileType() == NixFileType.INSTANCE) { + lspServerStarter.ensureServerStarted(new NixLspServerDescriptor(project)); + } + } + + private static final class NixLspServerDescriptor extends ProjectWideLspServerDescriptor { + public NixLspServerDescriptor(@NotNull Project project) { + super(project, "nix --extra-experimental-features nix-command --extra-experimental-features flakes run nixpkgs#nixd"); + } + + @Override + public @NotNull GeneralCommandLine createCommandLine() throws ExecutionException { + return new GeneralCommandLine(); + } + + @Override + public boolean isSupportedFile(@NotNull VirtualFile virtualFile) { + return virtualFile.getFileType() == NixFileType.INSTANCE; + } + } +} diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 1fd59e5b..e7b4fb1a 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -5,6 +5,7 @@ NixOS com.intellij.modules.lang + com.intellij.modules.platform @@ -46,6 +47,9 @@ + +