在 Emacs 内使用 eglot + eglot-java + dape 开发 Java

给你点赞,应该和容器没关系,这个可以单独做成一个包吗?

先用用看吧,现在几乎都是 HCR 了,我原来的内容反而是少数代码。

之前也尝试过,后来发现生态割裂太严重,而且周边所有同事都是idea。。。后来就把idea的操作改成了emacs方式,打开idea,然后习惯性去按快捷键,发现不生效,就按emacs的设置,现在感觉也还可以。。。另外jdtls很多时候太慢了,多jdk版本的环境下,支持感觉也不好

jdk 多版本就只能开sub process去处理了,不用系统环境的 JAVA_HOME。目前开发我感觉不如 IDEA 的确实还是补全,不够快速。

为支持hot code replace 而写的代码应该很少吧,主要是我自己有一套简单的配置,就想用个包简单的enable hot code replace 。

可能是因为我没有用过idea, 感觉eglot补全 的速度够用了,跳转源代码偶尔会卡一下

hcr的代码确实不多,但是调试过程中我发现很多情况不生效,所以现在很多代码都是在处理为什么不生效的外围问题(当然这个是和AI讨论出来的)

唉,开始一下没反应过来你这个HCR! 没想到实现起来也会比较麻烦, 原以为几句代码

对的,昨天搞不定,我直接让AI进入 loop 模式,绿为止。现在的方案是直接记住顶层类名,触发 HCR的时候只去找这个类对应的class,送进 jvm 做 redefine。效果就是非常快。还不知道有没有其他问题,先用一阵子看看。

1 个赞

试试懒猫的 lsp-bridge ?

我很排斥这个,不用。

刚尝试使用,打开 class (jar) 出现 Opening output file: Is a directory, /xxxx 这个是不支持还是需要另外配置呢?

不支持这个

编辑器只是个工具,找合适的螺丝刀拧合适的螺丝,没必要强行适配,我现在就是vscode,idea,全都改成了emacs方式的快捷键,java用idea,c/org-mode用emacs,python,js用vscode,省心,反正快捷键都一样,无缝切换

不是强行配置,IDEA 那边也只是这个流程做了封装而已,Emacs 这边Java用户少,封装就少,并不是不能。其他的编辑器我也都用过,你的做法也是追求的另一个方面的统一。

1 个赞

这个说法有贬低那些喜欢折腾,追求个性化的人,不对。事实上,就是这样一些人让emacs 变得越来越好。

和贬低没啥关系,只是说下自己折腾的过往,给别人参考,他们自己评估

纯萌新,之前也用过lspbridge,能弱弱问一句为啥排斥吗

你用lsp-bridge 时,怎么调试代码?

因为我觉得本身架构复杂,Python本身也不是每个人都很熟悉,我只能算是新手,出了问题定位困难。

而其他的包都是完成配置的设定几乎就可用了,不需要再管额外的东西。(Java 这类在 eglot 中也并不是配置了就可以用,需要考虑一些其他的东西,但是配置完成后不同的环境不会出现什么问题的,lsp-bridge 和环境的关联性更强,更容易出现环境问题。)