First, customize c-hanging-braces-alist to use the style settings: I think that's the default, but since you've been mucking around with customizing it, go back and make sure it is set to the default.
Then try the different built-in styles: Type C-c . and choose a style (there is TAB completion). Enter a brace and see if it does what you want: if it does not,...
This is what I do:
(function-put '-> 'lisp-indent-function nil)
(function-put '->> 'lisp-indent-function nil))
Dash maintainers refused to keep ->/->> indentation in sync with other Lisps. See https://github.com/magnars/dash.el/pull/375#issuecomment-817947545
See (info "(elisp) Indenting Macros") ...
I received help from the devs at github.
Basically, at its default, dtrt-indent-mode does nothing if SMIE also is active. Even if dtrt-indent-mode is active. Activating it (even buffer-locally) always defers to SMIE if active, which it is in many programming language modes.
This deferring can be overridden with dtrt-indent-run-after-smie.
Here is the ...
dtrt-indent is a minor mode that will guess the indentation offset of a file and adjusts those local settings accordingly. It hooks in to several major modes, and works reasonably well.
@Gauthier is wondering why dtrt-indent is inserting a TAB character to perform indentation after guessing, with 100% confidence, that the indentation offset is 4 SPACE ...
This issue has been fixed in commit 857ae366b3 of the Org repo.
You can use that bugfix in Org version 9.4.3 (that comes with Emacs 27.1.90) by the following lines in your init files:
(when (version-list-= (version-to-list org-version) '(9 4 3))
(defun org-return-fix (fun &rest args)