diff --git a/backend/src/langs.ts b/backend/src/langs.ts index 5d04a6c..dc16b32 100644 --- a/backend/src/langs.ts +++ b/backend/src/langs.ts @@ -1118,12 +1118,151 @@ PLEASE GIVE UP } `, }, + lsp: { + setup: "rm -rf jdt && cp -RT /opt/jdt/config_linux jdt", + start: `java -Declipse.application=org.eclipse.jdt.ls.core.id1 -Dosgi.bundles.defaultStartLevel=4 -Declipse.product=org.eclipse.jdt.ls.core.product -Dlog.level=ALL -noverify -Xmx1G -jar /opt/jdt/plugins/org.eclipse.equinox.launcher_*.jar -configuration "$PWD/jdt" -data "$PWD" --add-modules=ALL-SYSTEM --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED`, + init: { + settings: { + java: { + codeGeneration: { + toString: { + limitElements: 0, + listArrayContents: true, + skipNullValues: false, + codeStyle: "STRING_CONCATENATION", + template: + "${object.className} [${member.name()}=${member.value}, ${otherMembers}]", + }, + generateComments: false, + useBlocks: false, + hashCodeEquals: { + useInstanceof: false, + useJava7Objects: false, + }, + }, + format: { + onType: { + enabled: true, + }, + comments: { + enabled: true, + }, + enabled: true, + }, + progressReports: { + enabled: true, + }, + foldingRange: { + enabled: true, + }, + completion: { + importOrder: ["java", "javax", "com", "org"], + favoriteStaticMembers: [ + "org.junit.Assert.*", + "org.junit.Assume.*", + "org.junit.jupiter.api.Assertions.*", + "org.junit.jupiter.api.Assumptions.*", + "org.junit.jupiter.api.DynamicContainer.*", + "org.junit.jupiter.api.DynamicTest.*", + "org.mockito.Mockito.*", + "org.mockito.ArgumentMatchers.*", + "org.mockito.Answers.*", + ], + guessMethodArguments: true, + overwrite: true, + enabled: true, + filteredTypes: ["java.awt.*", "com.sun.*"], + }, + maxConcurrentBuilds: 1, + autobuild: { + enabled: true, + }, + selection: { + enabled: true, + }, + import: { + exclusions: [ + "**/node_modules/**", + "**/.metadata/**", + "**/archetype-resources/**", + "**/META-INF/maven/**", + ], + maven: { + enabled: true, + }, + gradle: { + enabled: true, + wrapper: { + enabled: true, + }, + }, + }, + saveActions: { + organizeImports: false, + }, + implementationsCodeLens: { + enabled: false, + }, + signatureHelp: { + enabled: true, + }, + referencesCodeLens: { + enabled: false, + }, + maven: { + downloadSources: false, + }, + trace: { + server: "off", + }, + configuration: { + updateBuildConfiguration: "automatic", + checkProjectSettingsExclusions: true, + }, + errors: { + incompleteClasspath: { + severity: "warning", + }, + }, + dependency: { + packagePresentation: "flat", + }, + }, + }, + extendedClientCapabilities: { + progressReportProvider: true, + classFileContentsSupport: true, + overrideMethodsPromptSupport: true, + hashCodeEqualsPromptSupport: true, + advancedOrganizeImportsSupport: true, + generateConstructorsPromptSupport: true, + generateToStringPromptSupport: true, + advancedGenerateAccessorsSupport: true, + advancedExtractRefactoringSupport: true, + moveRefactoringSupport: true, + }, + bundles: [ + "/opt/jdt/bundles/com.microsoft.java.test.plugin-0.19.0.jar", + "/opt/jdt/bundles/com.microsoft.jdtls.ext.core-0.5.1.jar", + "/opt/jdt/bundles/dg.jdt.ls.decompiler.cfr-0.0.2-201802221740.jar", + "/opt/jdt/bundles/dg.jdt.ls.decompiler.common-0.0.2-201802221740.jar", + "/opt/jdt/bundles/dg.jdt.ls.decompiler.fernflower-0.0.2-201802221740.jar", + "/opt/jdt/bundles/dg.jdt.ls.decompiler.procyon-0.0.2-201802221740.jar", + "/opt/jdt/bundles/io.projectreactor.reactor-core.jar", + "/opt/jdt/bundles/java.debug.plugin.jar", + "/opt/jdt/bundles/jdt-ls-commons.jar", + "/opt/jdt/bundles/jdt-ls-extension.jar", + "/opt/jdt/bundles/org.reactivestreams.reactive-streams.jar", + ], + }, + }, template: `public class Main { public static void main(String[] args) { System.out.println("Hello, world!"); } } `, + skip: ["lsp"], }, javascript: { aliases: ["node", "js", "web", "jsx", "v8", "closure", "nodejs"], diff --git a/scripts/docker-install-phase4.bash b/scripts/docker-install-phase4.bash index 7c50313..bfed8f2 100755 --- a/scripts/docker-install-phase4.bash +++ b/scripts/docker-install-phase4.bash @@ -154,6 +154,12 @@ tar -xf ioke-ikj-*.tar.gz -C /opt rm ioke-ikj-*.tar.gz ln -s /opt/ioke/bin/ioke /usr/local/bin/ioke +# Java +wget -nv https://download.eclipse.org/jdtls/snapshots/jdt-language-server-latest.tar.gz +mkdir /opt/jdt +tar -C /opt/jdt -xf jdt-language-server-latest.tar.gz +rm jdt-language-server-latest.tar.gz + # Kitten wget -nv https://github.com/raxod502/riju-cdn/releases/download/kitten-0.1-bcaffa109c7f93959b3c2e9e7ae74462f840088d.ktn/kitten -O /usr/local/bin/kitten wget -nv https://github.com/raxod502/riju-cdn/releases/download/kitten-0.1-bcaffa109c7f93959b3c2e9e7ae74462f840088d.ktn/common.ktn -O /usr/local/bin/common.ktn