Open jasonjckn opened 1 year ago
This will depend on semantic indentation being done (at least the first pass). Once that is in place I plan to look into this.
Dev Note: check out builtin align.el
and see if that can be used to implement this.
Related: Since https://github.com/clojure-emacs/clojure-mode/pull/673 clojure-align
works from clojure-ts-mode
buffers, which is implemented based on the builtin align.el
@kommen I've been using clojure-ts-mode with clojure-align-forms-automatically like this
(setq-local indent-line-function #'clojure-indent-line)
(setq-local indent-region-function #'clojure-indent-region)
(setq-local aggressive-indent-region-function #'clojure-indent-region)
(setq-local lisp-indent-function #'clojure-indent-function)
never hit that bug you fixed, are you just keybinding clojure-align, or how do you use this with clojure-ts-mode
@jasonjckn I'm not using clojure-align-forms-automatically
and I don't have any of the setq-local
you use. I was calling it wit hM-x clojure-align
, as I only use it occasionally.
Also, because I ran into performance problems with aggressive-indent-mode and clojure-mode's indent functions, I do want to use the treesit-indent-* functions come as default for clojure-ts-mode , as they don't have these performance problems.
@jasonjckn I'm not using
clojure-align-forms-automatically
and I don't have any of thesetq-local
you use. I was calling it wit hM-x clojure-align
, as I only use it occasionally.Also, because I ran into performance problems with aggressive-indent-mode and clojure-mode's indent functions, I do want to use the treesit-indent-* functions come as default for clojure-ts-mode , as they don't have these performance problems.
i'm also a big aggressive indent user, one cool way to get aligned forms without ever relying on clojure-mode in-process, is have https://github.com/radian-software/apheleia invoke a separate process every time you save the buffer, and run clojure-mode across your whole buffer, it works great. https://gist.github.com/jasonjckn/750e01086b24bcaacef3946c698943c2
I liked the concept of aggressive-indent-mode
, but for me the simple electric-indent-mode (enabled by default in recent Emacsen) and indent-buffer
yield almost the same result with much less overhead on the recalculating indentation.
(setq clojure-align-forms-automatically t)
in clojure-mode.el'indents'
to