20250131jupyter自动操作IDEA

背景

20230429 IaC之IDE,也许是下一个ChatIDE?

在2023年4月的时候从phodal的项目中知道了jupyter core是可以embedded之后,我就尝试将它embedd进了IDEA自身以获取全量IDE的自动化能力

源码:https://github.com/dev-assistant/skykoma-plugin-idea

示例:https://github.com/dev-assistant/skykoma-plugin-idea/blob/main/demo/demo.ipynb

因部分java项目的sdk总是没法正确识别,IDEA多年以来的bug都需要手动选下无法完成全量的自动化,所以在官方处理之前想尝试解决下。部分kotlin简写本次一并更新,同时替换掉了基于命令行的git信息获取,改成git4idea接口和官方保持一致

20250201更新:

今天发现官方有了mcp-server的实现,以及已经有了基于MCP的客户端来集成但功能有限,我的插件甚至比MCP的出现(2024年11月25日)和IDEA官方MCP实现(2024年12月9日)要早得多(2023年4月)

自动设置SDK

注意到源码com.intellij.openapi.roots.ui.configuration.ProjectConfigurableUi就是project structure的实现

myProjectJdkConfigurable内容修改时候会触发


而当myLanguageLevelCombo变动时会触发


所以最终实际修改的是LanguageLevelProjectExtensionImpl.getInstanceImpl(myProject).currentLevel

也不难发现是SDK选择后生效的代码

而从ProjectJdkTable.getInstance().findJdk()等一系列方法可以快速获取想要的Sdk对象

官方初始化过程可参考

自动操作GIT

相关操作都在GitRepositoryManager里,UI操作参考GitLogBranchOperationsActionGroup即可

分支UI的操作见plugins/git4idea/resources/META-INF/plugin.xml

可以看到右键菜单是固定的一个分组+两个固定操作,分组操作里会根据选中项是否有分支和tag决定是否显示相关操作

git4idea.ui.branch.GitBranchPopupActions.RemoteBranchActions.CheckoutRemoteBranchAction

TODO

git4idea.ui.branch.GitBranchPopupActions.CheckoutAsNewBranch

TODO

com.intellij.vcs.log.ui.actions.RefreshLogAction

git4idea.actions.GitFetch

com.intellij.openapi.vcs.changes.actions.RefreshAction

 

其他自动化

可以参考官方MCP实现

https://github.com/JetBrains/mcp-server-plugin/tree/master/src/main/kotlin/org/jetbrains/mcpserverplugin

或直接翻官方的IDEA源码https://github.com/JetBrains/intellij-community照抄即可

END

0 Comments
Leave a Reply