<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="55724" data-post-id="55724">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mischov" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mischov/120/2489_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mischov
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It’s probably my time with Clojure showing- collapsed delimiters saves a lot of space and reduces noise when all you’re doing is writing nested data. It’s not as good for reorganizing, though.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="55724" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/running-the-new-elixir-formatter/9344/103">Post #102</a>
	                </div>
	            </div>
              <div id="likers-container-55724" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="55724"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #102"></div>
  </section>
</div>
    <div class="postbit" id="55725" data-post-id="55725">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="mischov" data-post="103" data-topic="9344" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mischov/48/2489_2.png" class="avatar"> mischov:</div>
<blockquote>
<p>It’s probably my time with Clojure showing- collapsed delimiters saves a lot of space and reduces noise when all you’re doing is writing nested data. It’s not as good for reorganizing, though.</p>
</blockquote>
</aside>
<p>Yeah I do end-line closing tags in lisp as well, but that is because the ‘code’ is that way, for formatting data it is often good to see the bounds.  ^.^</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="55725" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/running-the-new-elixir-formatter/9344/104">Post #103</a>
	                </div>
	            </div>
              <div id="likers-container-55725" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="55725"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #103"></div>
  </section>
</div>
    <div class="postbit" id="55735" data-post-id="55735">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="josevalim" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/120/1787_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  josevalim
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Elixir</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="mischov" data-post="101" data-topic="9344">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mischov/48/2489_2.png" class="avatar"> mischov:</div>
<blockquote>
<p>Okay, “bad” is probably an overstatement, but I was a bit surprised about this one (because it has a newline after ( and before )).</p>
</blockquote>
</aside>
<p>Yeah, we only respect the user’s choice for data structures. We could also do it for function calls but function calls usually give us more liberty to handle those issues, for example by breaking into variables. And there is also the issue with function calls with no parens which have no way of respecting the user’s choice because there are no delimiters…</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="55735" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/running-the-new-elixir-formatter/9344/105">Post #104</a>
	                </div>
	            </div>
              <div id="likers-container-55735" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="55735"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #104"></div>
  </section>
</div>
    <div class="postbit" id="55736" data-post-id="55736">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-livebook_core_team" data-username="josevalim" data-post="105" data-topic="9344">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/48/1787_2.png" class="avatar"> josevalim:</div>
<blockquote>
<p>for example by breaking into variables.</p>
</blockquote>
</aside>
<p>Not really.  The times I often use the multi-line function call syntax like that is when it is a macro and the AST is important.  Look at ExSpirit for example (hmm, I need to test how elixir would format some grammars…).  ^.^</p>
<p>EDIT1:  Not very well, the grammar’s got a lot more right-heavy and the trailing comma’s all vanished, which is really important in grammars considering how much they are shuffled around while testing parsing…  &gt;.&lt;</p>
<p>EDIT2:  Also what on earth is it doing making <em>this</em> format?!  o.O</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">    pipe_result_into: List.to_tuple()
    |&gt; case do
         {:started, datetime_string} -&gt;
           {:started, parse(datetime_string, parse_weirddatetimeformat()).result}

         result -&gt;
           result
       end
</code></pre>
<p>EDIT3:  It turned this:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">  defrule parse_entry(seq([
    parse_type(),
    parse_body(),
  ])), pipe_result_into: List.to_tuple() |&gt; (case do
    {:started, datetime_string} -&gt; {:started, parse(datetime_string, parse_weirddatetimeformat()).result}
    result -&gt; result
  end)
</code></pre>
<p>Into this:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">  defrule(
    parse_entry(
      seq([
        parse_type(),
        parse_body()
      ])
    ),
    pipe_result_into: List.to_tuple()
    |&gt; case do
         {:started, datetime_string} -&gt;
           {:started, parse(datetime_string, parse_weirddatetimeformat()).result}

         result -&gt;
           result
       end
  )
</code></pre>
<p>First of all, the function definition is all wrapped up in parenthesis, which is just <em>wrong</em> (that is like formatting <code>def blah(x)</code> to be <code>def(blah(x))</code>), and it formatted the <code>pipe_result_into:</code> option with the pipe into a ‘what the heck is this’, as well as a few other oddities (more minor ones like the <code>seq</code> call not being on the primary line and such).</p>
<p>The thing that bugs me most is how it is doing that piping in the <code>pipe_result_into</code> option, it makes me confused as to if it is piping the output of the <code>List.to_tuple()</code> call or if it is piping the output of the <code>parse_entry</code> call.  I’m still having issues mentally parsing that even though I know it is fairly obvious…  &gt;.&lt;</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="55736" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/running-the-new-elixir-formatter/9344/106">Post #105</a>
	                </div>
	            </div>
              <div id="likers-container-55736" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="55736"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #105"></div>
  </section>
</div>
    <div class="postbit" id="55738" data-post-id="55738">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mischov" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mischov/120/2489_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mischov
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-livebook_core_team" data-username="josevalim" data-post="105" data-topic="9344" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/48/1787_2.png" class="avatar"> josevalim:</div>
<blockquote>
<p>Yeah, we only respect the user’s choice for data structures. We could also do it for function calls but</p>
</blockquote>
</aside>
<p>Part of why it was so striking to me was a couple lines later another multi-line <code>compare</code> call with literally 2 more characters was not collapsed, and so now I have two visual representations of something that should stand out visually as (no pun intended) comparable.</p>
<p>This is how the formatter leaves <a href="https://github.com/mischov/meeseeks/blob/master/lib/meeseeks/selector/xpath/expr/comparative.ex#L20-L38" rel="noopener nofollow ugc">this</a>.</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">def eval(%Expr.Comparative{op: :!=} = expr, node, document, context) do
  v1 = Expr.eval(expr.e1, node, document, context)
  v2 = Expr.eval(expr.e2, node, document, context)
  compare(expr.op, Expr.Helpers.eq_fmt(v1, v2, document), Expr.Helpers.eq_fmt(v2, v1, document))
end

def eval(expr, node, document, context) do
  v1 = Expr.eval(expr.e1, node, document, context)
  v2 = Expr.eval(expr.e2, node, document, context)

  compare(
    expr.op,
    Expr.Helpers.cmp_fmt(v1, v2, document),
    Expr.Helpers.cmp_fmt(v2, v1, document)
  )
end
</code></pre>
<p>I guess one could argue there is a difference between the two versions of the function that it now better highlighted, but it seems off to me.</p>
<aside class="quote group-livebook_core_team" data-username="josevalim" data-post="105" data-topic="9344" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/48/1787_2.png" class="avatar"> josevalim:</div>
<blockquote>
<p>function calls usually give us more liberty to handle those issues, for example by breaking into variables.</p>
</blockquote>
</aside>
<p>That’s true, but in this case I purposefully chose to use a multi-line function call rather than adding two more variables because I felt it produced the clearer code.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="55738" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/running-the-new-elixir-formatter/9344/107">Post #106</a>
	                </div>
	            </div>
              <div id="likers-container-55738" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="55738"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #106"></div>
  </section>
</div>
    <div class="postbit" id="55739" data-post-id="55739">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="josevalim" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/120/1787_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  josevalim
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Elixir</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="106" data-topic="9344">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>First of all, the function definition is all wrapped up in parenthesis, which is just wrong</p>
</blockquote>
</aside>
<p>There is an option for declaring locals_without_parens, it is in the docs.</p>
<p>For the keyword, we need to do something but I am not sure what. Probably treat it in the same way we would treat <code>=</code>. In this case it would mean breaking into the next line and indenting with two spaces. Please open up an issue.</p>
<aside class="quote no-group" data-username="mischov" data-post="107" data-topic="9344">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mischov/48/2489_2.png" class="avatar"> mischov:</div>
<blockquote>
<p>That’s true, but in this case I purposefully chose to use a multi-line function call rather than adding two more variables because I felt it produced the clearer code.</p>
</blockquote>
</aside>
<p>Good point, please open up an issue too!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="55739" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/running-the-new-elixir-formatter/9344/108">Post #107</a>
	                </div>
	            </div>
              <div id="likers-container-55739" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="55739"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #107"></div>
  </section>
</div>
    <div class="postbit" id="55743" data-post-id="55743">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-livebook_core_team" data-username="josevalim" data-post="108" data-topic="9344">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/48/1787_2.png" class="avatar"> josevalim:</div>
<blockquote>
<p>There is an option for declaring locals_without_parens, it is in the docs.</p>
</blockquote>
</aside>
<p>I could define that in ex_spirit sure, but how would the users use it without each-and-every-single-one-of-them adding it to their options as well?  It should be some in-file definition, like a module attribute or something to state ‘all uses of this is without parenthesis’ or so.</p>
<aside class="quote group-livebook_core_team" data-username="josevalim" data-post="108" data-topic="9344">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/48/1787_2.png" class="avatar"> josevalim:</div>
<blockquote>
<p>For the keyword, we need to do something but I am not sure what. Probably treat it in the same way we would treat =. In this case it would mean breaking into the next line and indenting with two spaces.</p>
</blockquote>
</aside>
<p>That would work but is more wordy in this case (more so in other cases as they tend to be really short, this example is longer than most).</p>
<aside class="quote group-livebook_core_team" data-username="josevalim" data-post="108" data-topic="9344">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/48/1787_2.png" class="avatar"> josevalim:</div>
<blockquote>
<p>Please open up an issue.</p>
</blockquote>
</aside>
<p><a href="https://github.com/elixir-lang/elixir/issues/6976" rel="noopener nofollow ugc">Done.  ^.^</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="55743" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/running-the-new-elixir-formatter/9344/109">Post #108</a>
	                </div>
	            </div>
              <div id="likers-container-55743" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="55743"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #108"></div>
  </section>
</div>
    <div class="postbit" id="55744" data-post-id="55744">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>The above formatted to this without the parenthesis:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">  defrule parse_entry(
            seq([
              parse_type(),
              parse_body()
            ])
          ),
          pipe_result_into: List.to_tuple()
          |&gt; (case do
                {:started, datetime_string} -&gt;
                  {:started, parse(datetime_string, parse_weirddatetimeformat()).result}

                result -&gt;
                  result
              end)
</code></pre>
<p>However, <em>why</em> is it indenting it *so*far*to*the*right*?  o.O?!<br>
That action is making some of the deeper grammars very unreadable (especially as it is making the lines longer due to some other changes as well).  Inside a <code>(</code>/<code>)</code> should be indentation, not alignment (absolutely should <em>not</em> be alignment).</p>
<p>So I can either get parenthesis around the rule function definition, or I get everything pushed waaaaaay over to the right.  Neither of these options are right, not right at all…  O.o!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="55744" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/running-the-new-elixir-formatter/9344/110">Post #109</a>
	                </div>
	            </div>
              <div id="likers-container-55744" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="55744"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #109"></div>
  </section>
</div>
    <div class="postbit" id="55745" data-post-id="55745">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="tmbb" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  tmbb
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-livebook_core_team" data-username="josevalim" data-post="108" data-topic="9344">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/48/1787_2.png" class="avatar"> josevalim:</div>
<blockquote>
<p>For the keyword, we need to do something but I am not sure what. Probably treat it in the same way we would treat =. In this case it would mean breaking into the next line and indenting with two spaces. Please open up an issue.</p>
</blockquote>
</aside>
<p>I’ve been playing with ExSpirit <em>a lot</em>. It’s a great library but it’s fundamentally <em>weird</em>. It does unconventional things to the AST. It’s a great DSL but it doesn’t mesh exactly well with the wider Elixir code. I dont’ think any effort should be expended in improving the output of the formatter on ExSpirit.<br>
EDIT: ExSpirit is great for reasons other than the DSL, I don’t want to imply that the DSL is the only (or even major) reason you should pick ExSpirit!</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="106" data-topic="9344">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>(more minor ones like the seq call not being on the primary line and such).</p>
</blockquote>
</aside>
<p>Most of the time I actually put the <code>seq</code> in its own line, but as I’ve said above, I don’t think normal formatting rules apply to ExSpirit. Maybe ExSpirit need its own style guide? xD I don’t think you should ever expect good results out of running the formatter on ExSpirit.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="106" data-topic="9344">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>The thing that bugs me most is how it is doing that piping in the pipe_result_into option, it makes me confused as to if it is piping the output of the List.to_tuple() call or if it is piping the output of the parse_entry call.  I’m still having issues mentally parsing that even though I know it is fairly obvious…  &gt;.&lt;</p>
</blockquote>
</aside>
<p>I agree, this is weird. But again, see my point above.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="55745" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/running-the-new-elixir-formatter/9344/111">Post #110</a>
	                </div>
	            </div>
              <div id="likers-container-55745" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="55745"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #110"></div>
  </section>
</div>
    <div class="postbit" id="55747" data-post-id="55747">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="seanc" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/seanc/120/3315_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  seanc
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>In the Javascript ecosystem (where I spend my professional life) we have a formatter called <a href="https://prettier.io/" rel="noopener nofollow ugc">prettier</a>. It’s used in quite a few popular codebases, albeit completely opinionated except for a few tiny options:</p>
<ul>
<li>Print Width</li>
<li>Tab Width</li>
<li>Tabs or Spaces</li>
<li>Semicolons or no Semicolons</li>
<li>Single or Double Quotes</li>
<li>Trailing commas or no trailing commas</li>
<li>Bracket spacing <code>{thing: true}</code> vs <code>{ thing: true }</code></li>
</ul>
<p>We make do with these options (I just converted several repos to prettier at my work) and no one really complains because we auto-format inside our CI pipelines.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="55747" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/running-the-new-elixir-formatter/9344/112">Post #111</a>
	                </div>
	            </div>
              <div id="likers-container-55747" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="55747"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #111"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/9344/load_more?page=12">Load more posts (40 remaining)</a>
</div></template></turbo-stream>