Repository navigation
feat(settings): 接入插件函数协议 4 的设置中转,Maven/Gradle 新建项目内容移交对应插件 - #5
Merged
Merged
Conversation
- 后端升级 Rust SDK 0.3.0,JDT LS running 后收集 languageImport.settings 并推送 didChangeConfiguration - 导出 languageImport.settingsChanged,按调用方分槽替换,可选 projects 触发 java.project.updateSettings - 打包加入 Rust 后端 bin/lithe-java-backend,verify-package 校验架构 - Maven/Gradle 新建项目入口、模板与 Maven 图标移到 lithe-plugin-maven、lithe-plugin-gradle
This was referenced Nov 5, 2026
Merged
xiaoyumuxi
marked this pull request as ready for review
November 5, 2026 11:38
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
做了什么
Java 拆分的一部分:Maven/Gradle 的导入设置改由对应插件提供,Java 插件通过 API-35 跨插件函数中转拿到并交给 JDT LS;Maven/Gradle 的新建项目内容移出本插件。
设置中转(API-35,插件函数协议 4)
sdk.lock.json同步)。languageImport.settings的插件,逐个调用(每个 10 秒超时)。只接受 JDT 导入设置命名空间里的键,按提供方分槽合并,再用languageServer/notify发workspace/didChangeConfiguration。代码里不出现任何 Maven/Gradle 插件 ID。languageImport.settingsChanged(context: "workspace")。调用方插件 ID 取自 Core 写入的caller,用它整份替换该插件的槽。可选的projects: [{projectUri, selectedProfiles}]让后端对每个工程发java.project.updateSettings(Maven profiles)。relay.*、session.*降级类别,settingsChanged进关键操作,见 README“日志”。清单与打包
plugin.json:requires加backend: 2、pluginFunctions: 1,languageServers升到 3。backend.launch、languageServer.request、workspace.metadata,激活事件加onWorkspaceOpen。requestMethods: ["workspace/executeCommand"]、commands: ["java.project.updateSettings"]。backend,launch.kind为packaged,路径bin/lithe-java-backend。launch和hostIntegration不变。assemble-package.sh按目标架构编译 Rust 后端,放进bin/。verify-package.sh检查bin/里只有后端、后端可执行、架构与包一致。新建项目
文档
合入顺序
要和 Lithe-IDEA/lithe-plugin-maven#12 、Lithe-IDEA/lithe-plugin-gradle#6 一起合入、一起发版。只合这个 PR,新建项目窗口里会少掉 Maven 和 Gradle 入口。
已知限制(后续 PR)
toolchains.list,代码里留了 TODO,JDT LS 的 VM 登记保持现状。settingsChanged推送、不导出languageImport.settings的插件,在下一次重新收集时会丢掉自己的槽。Pending状态。languageImport.settings在 lithe-plugin-maven 单独做(Rust 后端),在那之前本 PR 在真实宿主上没有提供方,走过渡规则。验证
cargo fmt --check、cargo clippy -D warnings:通过。cargo test:344 个测试通过(领域 281 个,后端单元 54 个、repository_pins6 个、session3 个)。scripts/verify-sdk-lock.sh --download:SDK 0.3.0 的 crate 哈希与锁一致。scripts/build-package.sh --arch arm64(本机 Rust 1.99.0):通过,包里有 Rust 后端,verify-package.sh的bin/、可执行和架构检查通过。x86_64 和 universal 包交给 CI。