backport: 17.3.1 dev 1

This commit is contained in:
FalsePattern 2024-10-03 14:53:49 +02:00
parent f415cd8ea8
commit 5bfda2f67a
Signed by: falsepattern
GPG key ID: E930CDEC50C50E23
8 changed files with 23 additions and 121 deletions

View file

@ -17,6 +17,11 @@ Changelog structure reference:
## [Unreleased] ## [Unreleased]
### Changed
- LSP
- Updated to LSP4IJ 0.6.1-20241003-152535
## [17.3.0] ## [17.3.0]
### Added ### Added

View file

@ -40,7 +40,7 @@ val clionVersion = properties("clionVersion").get()
val clionPlugins = listOf("com.intellij.cidr.base", "com.intellij.clion") val clionPlugins = listOf("com.intellij.cidr.base", "com.intellij.clion")
val lsp4jVersion = "0.21.1" val lsp4jVersion = "0.21.1"
val lsp4ijVersion = "0.6.0" val lsp4ijVersion = "0.6.1-20241003-152535"
val lsp4ijNightly = lsp4ijVersion.contains("-") val lsp4ijNightly = lsp4ijVersion.contains("-")
val lsp4ijDepString = "${if (lsp4ijNightly) "nightly." else ""}com.jetbrains.plugins:com.redhat.devtools.lsp4ij:$lsp4ijVersion" val lsp4ijDepString = "${if (lsp4ijNightly) "nightly." else ""}com.jetbrains.plugins:com.redhat.devtools.lsp4ij:$lsp4ijVersion"
@ -185,6 +185,7 @@ allprojects {
} }
intellijPlatform { intellijPlatform {
instrumentCode = false instrumentCode = false
buildSearchableOptions = false
} }
} }

View file

@ -11,7 +11,7 @@ baseIDE=clion
ideaVersion=2023.2.8 ideaVersion=2023.2.8
clionVersion=2023.2.5 clionVersion=2023.2.5
pluginVersion=17.3.0 pluginVersion=17.3.1-dev001
# Gradle Releases -> https://github.com/gradle/gradle/releases # Gradle Releases -> https://github.com/gradle/gradle/releases
gradleVersion=8.10.2 gradleVersion=8.10.2

View file

@ -32,13 +32,6 @@
<lang.formatter language="Zig" implementationClass="com.falsepattern.zigbrains.zig.formatter.ZigFormattingModelBuilder"/> <lang.formatter language="Zig" implementationClass="com.falsepattern.zigbrains.zig.formatter.ZigFormattingModelBuilder"/>
<!--
TODO remove these two once https://github.com/redhat-developer/lsp4ij/issues/424 is resolved
-->
<formattingService id = "ZigLSPFormattingOnlyServiceProxy" implementation="com.falsepattern.zigbrains.zig.formatter.ZigLSPFormattingOnlyServiceProxy"/>
<formattingService id = "ZigLSPFormattingAndRangeBothServiceProxy" implementation="com.falsepattern.zigbrains.zig.formatter.ZigLSPFormattingAndRangeBothServiceProxy"/>
<postStartupActivity implementation="com.falsepattern.zigbrains.zig.lsp.ZLSStartupActivity"/> <postStartupActivity implementation="com.falsepattern.zigbrains.zig.lsp.ZLSStartupActivity"/>
<!-- LSP textDocument/signatureHelp --> <!-- LSP textDocument/signatureHelp -->

View file

@ -1,66 +0,0 @@
package com.falsepattern.zigbrains.zig.formatter;
import com.falsepattern.zigbrains.zig.ZigLanguage;
import com.intellij.formatting.FormattingRangesInfo;
import com.intellij.formatting.service.FormattingService;
import com.intellij.lang.ImportOptimizer;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.redhat.devtools.lsp4ij.LanguageServersRegistry;
import com.redhat.devtools.lsp4ij.LanguageServiceAccessor;
import com.redhat.devtools.lsp4ij.features.formatting.AbstractLSPFormattingService;
import lombok.val;
import org.eclipse.lsp4j.ServerCapabilities;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Set;
/*
TODO remove once https://github.com/redhat-developer/lsp4ij/issues/424 is resolved
*/
public abstract class ZigAbstractLSPFormattingServiceProxy implements FormattingService {
protected abstract AbstractLSPFormattingService getProxiedService();
protected abstract boolean canSupportFormatting(@Nullable ServerCapabilities var1);
@Override
public @NotNull Set<Feature> getFeatures() {
return getProxiedService().getFeatures();
}
@Override
public boolean canFormat(@NotNull PsiFile file) {
val language = file.getLanguage();
if (language != ZigLanguage.INSTANCE)
return false;
if (!LanguageServersRegistry.getInstance().isFileSupported(file)) {
return false;
} else {
Project project = file.getProject();
return LanguageServiceAccessor.getInstance(project).hasAny(file.getVirtualFile(), (ls) -> this.canSupportFormatting(ls.getServerCapabilitiesSync()));
}
}
@Override
public @NotNull PsiElement formatElement(@NotNull PsiElement psiElement, boolean b) {
return getProxiedService().formatElement(psiElement, b);
}
@Override
public @NotNull PsiElement formatElement(@NotNull PsiElement psiElement, @NotNull TextRange textRange, boolean b) {
return getProxiedService().formatElement(psiElement, textRange, b);
}
@Override
public void formatRanges(@NotNull PsiFile psiFile, FormattingRangesInfo formattingRangesInfo, boolean b, boolean b1) {
getProxiedService().formatRanges(psiFile, formattingRangesInfo, b, b1);
}
@Override
public @NotNull Set<ImportOptimizer> getImportOptimizers(@NotNull PsiFile psiFile) {
return getProxiedService().getImportOptimizers(psiFile);
}
}

View file

@ -1,23 +0,0 @@
package com.falsepattern.zigbrains.zig.formatter;
import com.intellij.formatting.service.FormattingService;
import com.redhat.devtools.lsp4ij.LanguageServerItem;
import com.redhat.devtools.lsp4ij.features.formatting.AbstractLSPFormattingService;
import com.redhat.devtools.lsp4ij.features.formatting.LSPFormattingAndRangeBothService;
import org.eclipse.lsp4j.ServerCapabilities;
import org.jetbrains.annotations.Nullable;
/*
TODO remove once https://github.com/redhat-developer/lsp4ij/issues/424 is resolved
*/
public class ZigLSPFormattingAndRangeBothServiceProxy extends ZigAbstractLSPFormattingServiceProxy {
@Override
protected AbstractLSPFormattingService getProxiedService() {
return FormattingService.EP_NAME.findExtension(LSPFormattingAndRangeBothService.class);
}
@Override
protected boolean canSupportFormatting(@Nullable ServerCapabilities serverCapabilities) {
return LanguageServerItem.isDocumentRangeFormattingSupported(serverCapabilities);
}
}

View file

@ -1,23 +0,0 @@
package com.falsepattern.zigbrains.zig.formatter;
import com.intellij.formatting.service.FormattingService;
import com.redhat.devtools.lsp4ij.LanguageServerItem;
import com.redhat.devtools.lsp4ij.features.formatting.AbstractLSPFormattingService;
import com.redhat.devtools.lsp4ij.features.formatting.LSPFormattingOnlyService;
import org.eclipse.lsp4j.ServerCapabilities;
import org.jetbrains.annotations.Nullable;
/*
TODO remove once https://github.com/redhat-developer/lsp4ij/issues/424 is resolved
*/
public class ZigLSPFormattingOnlyServiceProxy extends ZigAbstractLSPFormattingServiceProxy {
@Override
protected AbstractLSPFormattingService getProxiedService() {
return FormattingService.EP_NAME.findExtension(LSPFormattingOnlyService.class);
}
@Override
protected boolean canSupportFormatting(@Nullable ServerCapabilities serverCapabilities) {
return LanguageServerItem.isDocumentFormattingSupported(serverCapabilities) && !LanguageServerItem.isDocumentRangeFormattingSupported(serverCapabilities);
}
}

View file

@ -1,9 +1,12 @@
package com.falsepattern.zigbrains.zig.lsp; package com.falsepattern.zigbrains.zig.lsp;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiFile;
import com.redhat.devtools.lsp4ij.LanguageServerEnablementSupport; import com.redhat.devtools.lsp4ij.LanguageServerEnablementSupport;
import com.redhat.devtools.lsp4ij.LanguageServerFactory; import com.redhat.devtools.lsp4ij.LanguageServerFactory;
import com.redhat.devtools.lsp4ij.client.LanguageClientImpl; import com.redhat.devtools.lsp4ij.client.LanguageClientImpl;
import com.redhat.devtools.lsp4ij.client.features.LSPClientFeatures;
import com.redhat.devtools.lsp4ij.client.features.LSPFormattingFeature;
import com.redhat.devtools.lsp4ij.server.StreamConnectionProvider; import com.redhat.devtools.lsp4ij.server.StreamConnectionProvider;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -14,6 +17,18 @@ public class ZLSLanguageServerFactory implements LanguageServerFactory, Language
return new ZLSStreamConnectionProvider(project); return new ZLSStreamConnectionProvider(project);
} }
@SuppressWarnings("UnstableApiUsage")
@Override
public @NotNull LSPClientFeatures createClientFeatures() {
return new LSPClientFeatures()
.setFormattingFeature(new LSPFormattingFeature() {
@Override
protected boolean isExistingFormatterOverrideable(@NotNull PsiFile file) {
return true;
}
});
}
@Override @Override
public @NotNull LanguageClientImpl createLanguageClient(@NotNull Project project) { public @NotNull LanguageClientImpl createLanguageClient(@NotNull Project project) {
return new ZLSLanguageClient(project); return new ZLSLanguageClient(project);