Add suport for clojure-align-forms-automatically
jasonjckn opened this issue ยท 10 comments
(setq clojure-align-forms-automatically t) in clojure-mode.el
'indents'
{:a 1
:bbbb 2}
to
{:a 1
:bbbb 2}
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 clojure-emacs/clojure-mode#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-automaticallyand I don't have any of thesetq-localyou 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.