求助emacs clojure格式化代码的问题

我用的是doom-emacs的配置, 例如,我有下面的代码

(defn test
  ""
  []
  (do

;; 这个是注释
    (println "log")
    (+ 1 2
       3
       4)))
  1. 无论我调用lsp-format-region还是+format-region,这个注释都是不能被格式化的,我想知道怎么才可以让这个注释也自动缩进,就是跟(println “log”) 这段代码对齐;后来我起了一个cider session,调用cider-format-region发现同样也是不能缩进这行注释

  2. 自动换行缩进,也就是newline-and-indent

    上面的代码,在do后面我按回车的时候光标是移动到下一行行首的,并没有缩进的对应的位置,但是有些表达式又能够自动缩进,比如+表达式,后面的参数我按回车的时候都是能够自动缩进到对应的位置,后来我发现在do之后调用newline-and-indent的时候提示

    clojure-indent-function: Wrong type argument: number-or-marker-p, nil

    这个估计是这个函数的问题,有人遇到类似的情况吗?

我用 gg=G 可以正确缩进那个注释。

感觉像是开启的东西太多互相冲突的原因。

我一开始怀疑后面我自己的配置是不是有什么影响,我就拉了最新的doom的配置,然后就只开启一个clojure配置,结果也还是这样,记得以前是没问题的,不知道从啥时候开始变成这样我也没注意

第二个问题貌似是clojure-mode版本的问题了 clojure-indent-function: (wrong-type-argument number-or-marker-p nil) · Issue #584 · clojure-emacs/clojure-mode · GitHub 我换成了最新的clojure-mode这个问题就不存在了

我用

lein cljfmt fix

也是不能格式化注释,你们格式化clojure的时候用的啥办法?

我就用 cider 的 format,直接 format 整个文件。 一小部分的选中然后 C-M-反斜线

我用cider-format-region也试过也是不能格式化注释,我记得以前好像也没这个问题的,最近才出现的,我怀疑是我的gccemacs更新到了最新的版本后才出现的,最近我就是重新编译了一下gccemacs

我的好像也不会格式化注释,不过一直没有写成过这个样子,所以没发现。

一般如果newline-and-indent没问题的话另起一行注释是不会遇到这个问题的,我最近发现这个问题是由于我写代码的时候有些地方newline-and-indent不能自动缩进,然后我就按照以前的方式选中一块区域然后格式化的时候发现了这个问题