Cond indentation/readabliity, continuation syntax proposal for expr

Hi! Wanted to get some feedback on an annoyance and possible fix for cond and similar forms…

I frequently encounter/write code that runs into line length/spacing issues. I think this impacts most of us, whether you prefer 80 chars line max or 120 or whatever. Example:

  ;; Typical nice case; alignment helps
  (cond
    (short1)       (short2)
    (still-short1) (still-short2)
    :else          (short3))

  ;; Problematic longer case; lines can get VERY long
  (cond
    (some-really-long-call :to "whatever")       (do-something-also-long)
    (some-other-thing :with "even" :more "args") (some-other-action)
    :else                                        (the-last-possible-thing))

  ;; Break into newlines, but hard to tell TEST from EXPR lines! (what I usually do)
  (cond
    (some-really-long-call :to "whatever")
    (do-something-also-long)
    (some-other-thing :with "even" :more "args")
    (some-other-action)
    :else
    (the-last-possible-thing))


  ;; Readable and typical, but just blew up from nice 3 lines to 9; big problem IMO
  (cond

    (some-really-long-call :to "whatever")
    (do-something-also-long)
    ;; Maybe a comment here to separate, or just another wasteful blank line
    (some-other-thing :with "even" :more "args")
    (some-other-action)

    :else
    (the-last-possible-thing))

  ;; How about this??
  (cond
    (some-really-long-call :to "whatever")
    #_> (do-something-also-long)
    (some-other-thing :with "even" :more "args")
    #_> (some-other-action)
    :else
    #_> (the-last-possible-thing))

Thoughts on the #_> comment/indicator? Any big problems you could see it causing? Any alternative you like better? It works well with Emacs’ default clojure formatting, and also cljfmt (should try with zprint and other editors). It also looks pretty good with a ligature/unicode substitution (though I don’t think these arrows are the ideal substitution), like:

Screen Shot 2021-07-06 at 11.12.39 AM

We could come up with some other macro like #> but maybe not worth it since #_ works for cases I can think of, and is still short.

This should also probably apply to case, condp, cond->, and maybe others. It’s even almost nicely congruent with condp's :>>.

Here’s the Emacs setup (thanks to Malabarba!) that makes the pretty arrow (I assume can be done similarly for other editors):

(global-prettify-symbols-mode)
(setq prettify-symbols-alist '(("#_>" . (?\s (Br . Bl) ?\s (Br . Bl) ?\s
					     (Bc . Br) #x21a6 (Bc . Bl) #x21a6))))

(Yes, we could change all our editors and tools to indent the EXPR line by a couple chars, but I can’t imagine getting teams to agree how to do that. This proposal alone may also be difficult to get people to agree on, but at least it seems like a harmless, optional convention that doesn’t break anything.)