emacs中写java项目体验如何?

请教下现在emacs中开发java项目体验如何,像jdtls这种lsp server相较于IDEA这种ide的体验相差如何呢?

我用的是 eglot + eglot-java + dape 作为工具写 Java 的。说说体验。

  1. 补全。IDEA 的补全提示肯定比 Emacs 要快的,以及现在 IDEA 可以 AI 补全,类似 copilot,但也有人不喜欢这种。(哪怕 lsp-bridge 比不上 IDEA 自带的补全)
  2. debug。 体验也不如 IDEA,尤其是低版本的 JDK + spring 的话还是在 IDEA 当中更加舒服。springboot 的话用 dape 的话,可以相对舒服一些,但体验还是不如 IDEA。
  3. 编辑。 这个肯定是 Emacs 更加高效一些,全键盘操作不管你是用的 evil 还是 meow都会更加高效一些。(非模式编辑我没试过)
  4. 版本管理。 git 操作的话习惯了 magit 也可以更加高效一些,但是 IDEA 的 git 工具也挺好用的其实。

总得来说,可以用。(再次申明,低版本 JDK + spring 还是用 IDEA 吧)

2 个赞

windows下 eglot + jdtls + (手工 mvn gradle)

只用作最基础的代码编辑

优点:

  1. 补全/跳转 速度快(快捷键)
  2. 搜文本/文件非常快 (global rg等其他工具)

缺点:

  1. 需要独立开启终端
  2. 绝大部分需要人工参与(熟练了也就无所谓了)

说起来跳转,mapper.java 跳 mapper.xml 需要自己写个函数跳转。(很简单)

另外,xref 可以设置 (setq xref-auto-jump-to-first-xref 'move) 配合 popper,写个关闭 xref buffer 的函数,可以增加体验。不用 popper 的可以参考我以前自己写的一个函数。 .emacs.d/lisp/init-prog.el at main · LuciusChen/.emacs.d · GitHub

最后,用 eglot 的话默认的是 flymake 作为检查工具,如果不习惯一直弹出错误提示(idea 用户应该不会不习惯),可以设置 (setq flymake-no-changes-timeout nil) ,但是这样会有个问题,参见 https://github.com/joaotavora/eglot/issues/1296, hack 的方法也在这个 issue 里面。

1 个赞