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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>You probably don’t need to read the entire <code>.beam</code> - it should be enough to read <code>Atom</code> chunk (with atom table) and the <code>ExtT</code> chunk with table that lists all exports (public functions in Erlang speak) in a module. Both seem relatively simple. <a href="http://beam-wisdoms.clau.se/en/latest/indepth-beam-file.html" rel="noopener nofollow ugc">http://beam-wisdoms.clau.se/en/latest/indepth-beam-file.html</a> is a great reference.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="16098" 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/intellij-elixir-elixir-plugin-for-jetbrains-intellij-platform/1697/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-16098" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="16098"
                     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 #12"></div>
  </section>
</div>
    <div class="postbit" id="16099" data-post-id="16099">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-post-not-found" data-username="KronicDeth" data-post="7" data-topic="2341">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kronicdeth/48/33300_2.png" class="avatar"></div>
<blockquote>
<p>You really should try to get used to 2 space indent in Elixir.  It’s the idiomatic indentation for Elixir and part of the community style guide (<a href="https://github.com/levionessa/elixir_style_guide#source-code-layout" class="inline-onebox" rel="noopener nofollow ugc">GitHub - christopheradams/elixir_style_guide: A community driven style guide for Elixir · GitHub</a>).</p>
</blockquote>
</aside>
<p>Sorry I must have written it ambigously.  When writing elixir code I 100% do write it using 2 space indent in VS Code, even though I think it’s bad form that this is enforced by language mechanics (personal opinions and all that).</p>
<p>However, since I use Intellij for non-Elixir languages I do not want to set global settings for elixir specific styling and thus would rather be able to tell Intellij to only use 2 space indent for elixir code files only (just like I can do if I wanted to for rust or go).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="16099" 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/intellij-elixir-elixir-plugin-for-jetbrains-intellij-platform/1697/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-16099" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="16099"
                     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 #13"></div>
  </section>
</div>
    <div class="postbit" id="16100" data-post-id="16100">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-post-not-found" data-username="KallDrexx" data-post="10" data-topic="2341">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kalldrexx/48/10646_2.png" class="avatar"></div>
<blockquote>
<p>even though I think it’s bad form that this is enforced by language mechanics</p>
</blockquote>
</aside>
<p>I don’t think there is anything that forces any indentation on you. If I’m not mistaken you can get away with out any indentation. But since it’s community style guide, almost everyone use this two space indentation. And I’m yet to see any sane reason against two space indentation. But again, no one is forcing you to use it, and no one will condemn you for using any indentation you want. It’s no one’s business how you indent code… well until it is <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="16100" 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/intellij-elixir-elixir-plugin-for-jetbrains-intellij-platform/1697/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-16100" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="16100"
                     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 #14"></div>
  </section>
</div>
    <div class="postbit" id="16104" data-post-id="16104">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Wow! Thanks a lot! <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="16104" 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/intellij-elixir-elixir-plugin-for-jetbrains-intellij-platform/1697/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-16104" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="16104"
                     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 #15"></div>
  </section>
</div>
    <div class="postbit" id="16106" data-post-id="16106">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-post-not-found" data-username="sztosz" data-post="11" data-topic="2341">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sztosz/48/1251_2.png" class="avatar"></div>
<blockquote>
<p>I don’t think there is anything that forces any indentation on you. If I’m not mistaken you can get away with out any indentation. But since it’s community style guide, almost everyone use this two space indentation. And I’m yet to see any sane reason against two space indentation. But again, no one is forcing you to use it, and no one will condemn you for using any indentation you want. It’s no one’s business how you indent code… well until it is <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>I have valid reasons for not liking 2 space indentation but this isn’t the thread for it.  There are several language/ecosystem issues which prevent doing 4 space indentation (such as doctests).  There is definitely more ramifications for not following the community style guidelines in Elixir than there is if I wwere doing C# or Rust.</p>
<p>My main point was that I could not find an easy way to say that only for elixir code files do 2 space indentation, so I can do 4 space indentation for all my other non-elixir code files (especially since different language communities have different indentation style preferences) and thus I can’t use the intellij plugin for Elixir until I find a good way to make the indentation (at a minimum) for Elixir projects only.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="16106" 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/intellij-elixir-elixir-plugin-for-jetbrains-intellij-platform/1697/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-16106" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="16106"
                     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 #16"></div>
  </section>
</div>
    <div class="postbit" id="16110" data-post-id="16110">
  <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>I use 2-spaces in elixir, but almost everywhere else I am a fan of tabs for indentation (of which I usually have set to 2-space width anyway), such as for example:</p>
<pre data-code-wrap="c++"><code class="lang-c++">int function(int with,
             int a,
             int lot,
             int of,
             int parameters) {
	return with + a + lot + of + parameters;
}
</code></pre>
<p>Where <code>·</code> is a space and <code>→</code> is a tab (also wow those characters break discourse’s formatting o.O).:</p>
<pre data-code-wrap="c++"><code class="lang-c++">int function(int with,
·············int a,
·············int lot,
·············int of,
·············int parameters) {
→return with + a + lot + of + parameters;
}
</code></pre>
<p>So spaces are used for alignment (sometimes after tabs if necessary), and tabs are used for indentation.</p>
<p>This method allows alignment to work properly and indention width to be whatever the viewer wants it to be.</p>
<p>Sadly I’m in a minority though.  <img src="https://forum.elixirforum.com/uploads/default/original/2X/2/21f211d8077d436032f525f99fdc6afc2c0736e2.gif?v=15" title=":icon_sad:" class="emoji emoji-custom" alt=":icon_sad:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="16110" 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/intellij-elixir-elixir-plugin-for-jetbrains-intellij-platform/1697/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-16110" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="16110"
                     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 #17"></div>
  </section>
</div>
    <div class="postbit" id="16113" data-post-id="16113">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-post-not-found" data-username="KallDrexx" data-post="13" data-topic="2341">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kalldrexx/48/10646_2.png" class="avatar"></div>
<blockquote>
<p>which prevent doing 4 space indentation (such as doctests)</p>
</blockquote>
</aside>
<p>I just want to clarify one thing. Doctests in Elixir will run regardless of of indentation level, as long as the test does not mix tabs and spaces. But you can mix tabs and spaces (and indentation) between the actual test in doctest and rest of the doctest. Elixir does not care. The two space limitation for creating nice readable documentation is something completely different because it’s Markdown limitation.</p>
<p>But I understand that not being able to customize Elixir plugin is troublesome.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="16113" 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/intellij-elixir-elixir-plugin-for-jetbrains-intellij-platform/1697/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-16113" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="16113"
                     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 #18"></div>
  </section>
</div>
    <div class="postbit" id="16137" data-post-id="16137">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="KronicDeth" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/KronicDeth/120/33300_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  KronicDeth
                      <span class="op-star" title="Thread Starter">
                        <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                      </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>The plugin currently doesn’t do any automatic code formatter and no real code generation except for the file templates, so I’m confused why you’d need to set the indentation level.  I have Java project (the plugin itself) that uses the Java default of 4 spaces and Elixir projects where I do 2 spaces and there are no issues.</p>
<p>Where are you seeing it insert 4 spaces currently or warn that you’re using 2 spaces instead of 4??  Screenshots would be helpful.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="16137" 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/intellij-elixir-elixir-plugin-for-jetbrains-intellij-platform/1697/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-16137" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="16137"
                     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 #19"></div>
  </section>
</div>
    <div class="postbit" id="16155" data-post-id="16155">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Nevermind, I see now.</p>
<p>Intellij’s default settings have been fine for me and I never delved deep into the the settings since I use Visual Studio in my day job and Intellij only for hobby non-C# projects.  So when I went into Settings → Code style and didn’t see Elixir I had no idea how to proceed from there, but I missed the “other languages” option at the bottom of the language list, and I now see the project profile part of the settings.</p>
<p>So I’m good now, sorry!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="16155" 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/intellij-elixir-elixir-plugin-for-jetbrains-intellij-platform/1697/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-16155" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="16155"
                     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 #20"></div>
  </section>
</div>
    <div class="postbit" id="45822" data-post-id="45822">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="KronicDeth" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/KronicDeth/120/33300_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  KronicDeth
                      <span class="op-star" title="Thread Starter">
                        <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                      </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>With both the contribution of ExUnit Mix Tasks in <code>4.7.0</code> and the conversion of the build to Gradle for <code>5.0.0</code>, I’ve added Jake Becker (<a href="https://github.com/JakeBecker" rel="noopener nofollow ugc">@JakeBecker</a>) as a Collaborator to the repo.</p>
<h1><a name="p-45822-thanks-1" class="anchor" href="#p-45822-thanks-1" aria-label="Heading link" rel="nofollow"></a>Thanks</h1>
<ul>
<li>Reporting the <code>AssertionError</code> in <code>org.elixir_lang.code_insight.lookup.element_renderer.CallDefinitionClause.renderElement</code>
<ul>
<li><a href="https://github.com/bdarla" rel="noopener nofollow ugc">@bdarla</a></li>
<li>Josué Henrique Ferreira da Silva (<a href="https://github.com/josuehenrique" rel="noopener nofollow ugc">@josuehenrique</a>)</li>
<li>Arjan Molenaar (<a href="https://github.com/amolenaar" rel="noopener nofollow ugc">@amolenaar</a>)</li>
<li>Chris Desch (<a href="https://github.com/cdesch" rel="noopener nofollow ugc">@ cdesch</a>)</li>
<li>Steve (<a href="https://github.com/stevepm" rel="noopener nofollow ugc">@stevepm</a>)</li>
<li>Laura Stone (<a href="https://github.com/tyrostone" rel="noopener nofollow ugc">@tyrostone</a>)</li>
<li><a href="https://github.com/wee911" rel="noopener nofollow ugc">@wee911</a></li>
<li>Oleg Samorai (<a href="https://github.com/Samorai" rel="noopener nofollow ugc">@Samorai</a>)</li>
<li>Jadenn (<a href="https://github.com/dabaer" rel="noopener nofollow ugc">@dabaer</a>)</li>
<li>Jan Stevens (<a href="https://github.com/JanStevens" rel="noopener nofollow ugc">@JanStevens</a>)</li>
<li>Szymon Jeż (<a href="https://github.com/szymon-jez" rel="noopener nofollow ugc">@szymon-jez</a>)</li>
</ul>
</li>
<li>Reporting examples where <code>ElixirVariable</code> could not be determined if it was a variable.
<ul>
<li>Steve Wagner (<a href="https://github.com/ciroque" rel="noopener nofollow ugc">@ciroque</a>)</li>
<li>Marcin Jakubowski (<a href="https://github.com/mjakubowski84" rel="noopener nofollow ugc">@mjakubowski84</a>)</li>
<li>Ryan Cammer (<a href="https://github.com/ryancammer" rel="noopener nofollow ugc">@ryancammer</a>)</li>
<li>Josué Henrique Ferreira da Silva (<a href="https://github.com/josuehenrique" rel="noopener nofollow ugc">@josuehenrique</a>) (multiple examples!)</li>
<li>Matt Briggs (<a href="https://github.com/mbriggs" rel="noopener nofollow ugc">@mbriggs</a>)</li>
</ul>
</li>
<li>Reporting examples where <code>ElixirMultipleAliases</code> could not resolve variable in match.
<ul>
<li>Дмитрий Дубина (<a href="https://github.com/dmitrydprog" rel="noopener nofollow ugc">@dmitrydprog</a></li>
<li>Nitin Gupta (<a href="https://github.com/nitingupta910" rel="noopener nofollow ugc">@nitingupta910</a>) for</li>
</ul>
</li>
<li>Reporting examples of the annotator highlighting in the wrong file due to the call definition offset always being assumed to be in the same file.
<ul>
<li>Wojciech Bednarski (<a href="https://github.com/wbednarski" rel="noopener nofollow ugc">@wbednarski</a>)</li>
<li>Artem Gordinsky (<a href="https://github.com/ArtemGordinsky" rel="noopener nofollow ugc">@ArtemGordinsky</a>)</li>
<li>Sam Brotherton (<a href="https://github.com/sbrother" rel="noopener nofollow ugc">@sbrother</a>)</li>
<li>Alexander Merkulov (<a href="https://github.com/merqlove" rel="noopener nofollow ugc">@merqlove</a>)</li>
</ul>
</li>
<li>Reporting Parameter variable style being incorrectly applied
<ul>
<li>Matt Briggs (<a href="https://github.com/mbriggs" rel="noopener nofollow ugc">@mbriggs</a>)</li>
</ul>
</li>
<li>Working with me to figure out that the template tags in the color preview were messed up
<ul>
<li>Dmitry Maltsev (<a href="https://github.com/judgedim" rel="noopener nofollow ugc">@judgedim</a>)</li>
</ul>
</li>
<li>Reporting mismatch between inspection resource and class due to a copy-and-paste error
<ul>
<li>Markus Fischer (<a href="https://github.com/mfn" rel="noopener nofollow ugc">@mfn</a>)</li>
</ul>
</li>
<li>Reporting incorrect highlighting of functions with guards
<ul>
<li>Dmitry Maltsev (<a href="https://github.com/judgedim" rel="noopener nofollow ugc">@judgedim</a>)</li>
</ul>
</li>
<li>Requesting configurable code-folding for module attributes
<ul>
<li>Artem Rizhov (<a href="https://github.com/artemrizhov" rel="noopener nofollow ugc">@artemrizhov</a>)</li>
</ul>
</li>
<li>Pointing out it makes no sense for context menus for ExUnit to appear in non-Elixir projects
<ul>
<li>Alexander Merkulov (<a href="https://github.com/merqlove" rel="noopener nofollow ugc">@merqlove</a>)</li>
</ul>
</li>
<li>Reporting an example where <code>MatchedUnqualifiedParenthesesCall</code> could not be type highlighted
<ul>
<li>Ryan Scheel (<a href="https://github.com/Havvy" rel="noopener nofollow ugc">@Havvy</a>)</li>
</ul>
</li>
<li>Reporting that function complete didn’t take into account the already typed prefix
<ul>
<li>Saeed Zarinfam (<a href="https://github.com/zarinfam" rel="noopener nofollow ugc">@zarinfam</a>)</li>
</ul>
</li>
<li>Requesting completion of Aliases to <code>.beam</code>-only Module, which is what inspired me to attempt decompilation
<ul>
<li>Matt Briggs (<a href="https://github.com/mbriggs" rel="noopener nofollow ugc">@mbriggs</a>)</li>
</ul>
</li>
</ul>
<h1><a name="p-45822-changelog-2" class="anchor" href="#p-45822-changelog-2" aria-label="Heading link" rel="nofollow"></a>Changelog</h1>
<h2><a name="p-45822-v500-3" class="anchor" href="#p-45822-v500-3" aria-label="Heading link" rel="nofollow"></a>v5.0.0</h2>
<h3><a name="p-45822-enhancements-4" class="anchor" href="#p-45822-enhancements-4" aria-label="Heading link" rel="nofollow"></a>Enhancements</h3>
<ul>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/574" rel="noopener nofollow ugc">#574</a> - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a>
<ul>
<li>Decompile <code>.beam</code> files
<ul>
<li>Structure view for decompiled <code>.beam</code> files</li>
<li>Index modules, functions, and macros exported by <code>.beam</code> files</li>
<li>Go To Symbol for Modules defined in <code>.beam</code> files (both SDK and deps)
<ul>
<li>Erlang using atoms (like <code>:idna</code>)</li>
<li>Elixir using Alias (like <code>Enum</code>)</li>
</ul>
</li>
<li>Completion for Modules defined in <code>.beam</code> files (both SDK and deps)
<ul>
<li>Elixir using Alias (like <code>Enum</code>)</li>
</ul>
</li>
<li>Completion for functions and macros exported by <code>.beam</code> files</li>
<li>Syntax highlighting</li>
</ul>
</li>
</ul>
</li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/579" rel="noopener nofollow ugc">#579</a> - Regression test for <a href="https://github.com/KronicDeth/intellij-elixir/pull/575" rel="noopener nofollow ugc">#575</a> - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a></li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/583" rel="noopener nofollow ugc">#583</a> - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a>
<ul>
<li>Macros appear before functions in decompiled <code>.beam</code> files
<ul>
<li>Header for macro and function sections</li>
</ul>
</li>
</ul>
</li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/585" rel="noopener nofollow ugc">#585</a> - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a>
<ul>
<li>Update <code>ELIXIR_VERSION</code> for <code>1.2.*</code> from <code>1.2.3</code> to <code>1.2.6</code></li>
<li>Add <code>ELIXIR_VERSION</code> <code>1.3.4</code></li>
<li>Add <code>ELIXIR_VERSION</code> <code>1.4.0</code></li>
<li>Update <code>IDEA</code> for <code>2016.*</code> to <code>2016.3.1</code></li>
<li>Show <code>OtpErlangBitStr</code> (and therefore <code>OtpErlangBinary</code> contents when tests fail</li>
<li>Quote binaries as <code>to_charlist</code> instead of <code>to_char_list</code> for Elixir <code>&gt;= 1.3</code>.  Depends on Elixir version of project SDK.</li>
<li>Use <code>elixir</code> instead of <code>java</code> VM, so now Erlang and Elixir don’t need to be built on travis-ci, but <code>ant</code> and the <code>jdk</code> need to be installed, but unlike Erlang and Elixir, there are tarballs for that, so this way is faster than the old method without depending on travis-ci cache.</li>
</ul>
</li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/609" rel="noopener nofollow ugc">#609</a> - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a>
<ul>
<li>If <code>multiResolve</code> causes a <code>StackOverflow</code> for <code>org.elixir_lang.annotator.Callable.visitCall</code>, then <code>catch</code> it and use <code>errorreport</code> logger to log the element.</li>
<li>Include file path in <code>errorreport</code> excerpt</li>
<li>Log element for <code>StackOverflow</code> related to <code>import</code>s</li>
<li>Regression test for <a href="https://github.com/KronicDeth/intellij-elixir/issues/605" rel="noopener nofollow ugc">#605</a>.</li>
<li>Log <code>LookupElement#getObject</code> when <code>LookupElement#getPsiElement</code> is <code>null</code> to track down how it was <code>null</code> in <a href="https://github.com/KronicDeth/intellij-elixir/issues/563" rel="noopener nofollow ugc">#563</a>.</li>
</ul>
</li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/614" rel="noopener nofollow ugc">#614</a> - Regression test for <a href="https://github.com/KronicDeth/intellij-elixir/issues/559" rel="noopener nofollow ugc">#559</a> - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a></li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/504" rel="noopener nofollow ugc">#504</a> - <a href="https://github.com/JakeBecker" rel="noopener nofollow ugc">@JakeBecker</a>
<ul>
<li>Switch to Gradle for builds.
<ul>
<li><code>./gradlew runIde</code> (or the <code>runIde (VERSION)</code> Run Configurations) will run IDEA in a sandbox with the development version of the plugin.</li>
<li><code>./gradlew test</code> (or the <code>test (VERSION)</code> Run Configurations) will run the main plugin and jps-builder tests.</li>
<li>The plugin can now be published with <code>./gradlew publishPlugin</code>, <em>BUT</em> you’ll need to fill in <code>publish*</code> properties in <code>gradle.properties</code>.  This will <em>eventually</em> allow for automated “nightlies” from successful Travis-CI builds on <code>master</code>.</li>
</ul>
</li>
</ul>
</li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/638" rel="noopener nofollow ugc">#638</a> - The <code>Callable</code> annotator is meant for variables, parameters, and macro and function calls and declarations.  The <code>ModuleAttribute</code> annotator handles module attribute declaration and usage, so we can save reference resolution time by skipping module attributes in <code>Callable</code>. - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a></li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/640" rel="noopener nofollow ugc">#640</a> - Allow module attribute folding to be configured. - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a></li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/662" rel="noopener nofollow ugc">#662</a> - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a>
<ul>
<li>Allow call definition heads to resolves to themselves for consistency with Aliases of <code>defmodule</code>.</li>
<li>Generalize <code>Callable.callDefinitionClauseDefiner(Call)</code>: in addition to the current <code>CallDefinitionClause</code>, make it work for <code>Implementation</code>, <code>Module</code>, and <code>Protocol</code>.</li>
</ul>
</li>
</ul>
<h3><a name="p-45822-bug-fixes-5" class="anchor" href="#p-45822-bug-fixes-5" aria-label="Heading link" rel="nofollow"></a>Bug Fixes</h3>
<ul>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/574" rel="noopener nofollow ugc">#574</a> - Fix copy-paste errors in <code>MatchOperatorInsteadOfTypeOperator</code> - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a></li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/579" rel="noopener nofollow ugc">#579</a> - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a>
<ul>
<li>Subtract 1 from arity in <code>.beam</code> file when decompiling to <code>defmacro</code> calls because the Erlang function for Elixir macros has one addition argument: the first argument is the <code>Caller</code> of the macro.</li>
<li>If the name of the decompiled macro/function is an infix operator, then decompile the head as a binary operation instead of a normal prefix name as infix operators aren’t valid prefix names and led to parsing errors, which was the root cause of <a href="https://github.com/KronicDeth/intellij-elixir/pull/575" rel="noopener nofollow ugc">#575</a>.</li>
<li>Fix IntelliJ warnings in <code>BeamFileImpl</code></li>
<li>Remove unused <code>VirtualFile</code> argument to <code>BeamFileImpl#buildFileStub</code>.</li>
</ul>
</li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/583" rel="noopener nofollow ugc">#583</a> - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a>
<ul>
<li>Add <code>++</code>, <code>=~</code>, and <code>in</code> to <code>INFIX_OPERATOR_SET</code>.</li>
<li>Only render infix operators if arity is <code>2</code>.</li>
<li>Prefix operator decompilation: <code>+</code> and <code>-</code> are both binary and unary operators.  When a unary operator they need to be wrapped in parentheses, so that the call definition clause is parsed correctly.</li>
</ul>
</li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/585" rel="noopener nofollow ugc">#585</a> - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a>
<ul>
<li>Ignore <code>JFLex</code> jar</li>
<li>Don’t check for <code>elixir-lang/elixr</code> files remove in <code>1.3</code></li>
<li>Allow <code>nil</code> as a keyword key.  <code>nil</code> was being lexed as a potential keyword key, but NIL was missing from the token list in the keywordKey grammar rule.</li>
</ul>
</li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/599" rel="noopener nofollow ugc">#599</a> - Some SpecialForms don’t work as literals as they would be interpreted as metaprogramming, so their name needs to be wrapped as an atom to <code>unquote</code>. -  <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a></li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/600" rel="noopener nofollow ugc">#600</a> - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a>
<ul>
<li>Check children of <code>MultipleAliases</code> for variable declarations.</li>
<li>Treat any variable declared in a <code>MultipleAliases</code> as invalid.</li>
</ul>
</li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/609" rel="noopener nofollow ugc">#609</a> - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a>
<ul>
<li>Skip <code>import Kernel</code> in <code>kernel.ex</code> to prevent stack overflow due to recursive <code>import</code></li>
<li>Strip all outer parentheses for left type operand, so that <code>(+value)</code> can be see as <code>+</code> operator type spec.</li>
<li>Use advice from <code>IndexNotReadyException</code> documentation and check <code>DumbService.isDumb(Project)</code> before calling <code>StubIndex.getElements</code> in <code>Module</code> and <code>module.MultiResolve.indexNameElements</code>.</li>
<li>Don’t <code>assert</code> that <code>LookupElement#getPsiElement</code> is not <code>null</code> in <code>CallDefinitionCluase.renderElement</code></li>
<li>Update to <code>ant</code> <code>1.10.1</code> because <code>1.10.0</code> is no longer hosted.</li>
</ul>
</li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/612" rel="noopener nofollow ugc">#612</a> - Yeah, it sounds weird, but an <code>ElixirVariable</code> isn’t necessarily a variable if it doesn’t occur in a declaration context.  It could just be a no-parentheses function call in the wrong spot, so check the parent <code>PsiElement</code> to determine if <code>ElixirVariable</code> is a variable. - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a></li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/614" rel="noopener nofollow ugc">#614</a> - Highlight parameterized type head (<code>maybe(t)</code> in <code>@type maybe(t)</code>) the same as a full type definition (<code>maybe(t)</code> in <code>@type maybe(t) :: t | nil</code>) - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a></li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/616" rel="noopener nofollow ugc">#616</a> - Only show Mix ExUnit Run in context when the module, or when the module is not a available, the project SDK is Elixir.  If there is no SDK configured, show “Mix ExUnit Run” in the menu. - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a></li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/617" rel="noopener nofollow ugc">#617</a> - Mark <code>do:</code> as atom in demo text - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a></li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/627" rel="noopener nofollow ugc">#627</a> - Annotations can only be applied to the single, active file, which belongs to the <code>referrer</code> <code>Callable</code>.  The <code>resolved</code> may be outside the file if it is a cross-file function or macro usage, in which case it’s <code>TextRange</code> should not be highlighted because it is referring to offsets in a different file. - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a></li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/634" rel="noopener nofollow ugc">#634</a> - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a>
<ul>
<li><code>Variable</code> scope for <code>QualifiedMultipleAliases</code>, which occurs when qualified call occurs over a line with assignment to a tuple, such as <code>Qualifier.\n{:ok, value} = call()</code></li>
<li>Remove call definition clauses (function or macro) completion for bare words as it had a detrimental impact on typing feedback (the editor still took input, but it wasn’t rendered until the completion returned OR <code>ESC</code> was hit to cancel the completion, which became excessive once the index of call definition clauses was expanded by the decompilation of the Elixir standard library <code>.beam</code>s, so disable it.  If bare-words completion is restored.  It will either (1) need to not use the <code>Reference#getVariants()</code> API because it generates too many objects that need to be thrown away or (2) need to only complete call definition clauses that are provably in-scope from imports or other macros.</li>
</ul>
</li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/636" rel="noopener nofollow ugc">#636</a> - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a>
<ul>
<li>Both intellij-erlang and intellij-community are Apache 2.0 licensed and its the default license for Elixir projects, so seems like a good choice for <code>LICENSE.md</code></li>
<li>Add <code>CODE_OF_CONDUCT.md</code></li>
</ul>
</li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/638" rel="noopener nofollow ugc">#638</a> - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a>
<ul>
<li>The run configurations I put together in <a href="https://github.com/KronicDeth/intellij-elixir/pull/504" rel="noopener nofollow ugc">#504</a> didn’t allow for the debugger to work properly: neither pause nor breakpoints had any effect, so regenerate them from the Gradle pane.</li>
<li>Check parent of <code>when</code> operation in case it’s a guarded function head in <code>org.elixir_lang.annonator.Parameter.putParameterized(Parameter, PsiElement)</code></li>
<li>Instead of highlighting call definition clauses when they are referred to, which only works if it is in the same file, highlight all function and macro declarations when the <code>def*</code> call is encountered.</li>
<li>Only increment arity for right pipe operand instead of all operands, so that left operands resolve to correct arity or as variable/parameter.</li>
</ul>
</li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/662" rel="noopener nofollow ugc">#662</a> - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a>
<ul>
<li>Override <code>ModuleImpl#getProject()</code> to prevent <code>StackOverflowError</code>.  Without overriding <code>#getProject()</code>, <code>IdentifierHighlighterPass</code> gets stuck in a loop between <code>getManager</code> and <code>getProject</code> on the target (the <code>ModuleImpl</code>) when clicking on the space between <code>def</code>s or <code>defmacro</code>s in the decompiled <code>.beam</code> files.</li>
<li>Fix source formatting</li>
<li>Skip looking for variables unless 0-arity AND no arguments</li>
<li>Highlight unresolved macros as macro calls. Anything with a do keyword or a do block will be treated like a macro call even if it can’t be resolved.  No resolved is either no resolve results or an empty list</li>
<li>Implicit imports at top of file in addition to top of Module.</li>
</ul>
</li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/663" rel="noopener nofollow ugc">#663</a> - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a>
<ul>
<li><code>CallDefinitionClause</code> completion provider is unexpectedly invoked both when <code>.</code> is typed, but continues to be invoked after a letter is typed after the <code>.</code>; however, once the letter is typed, the letter becomes the default prefix instead, so the prefix should only be reset to <code>""</code> when it ends in <code>.</code>.</li>
<li>Disable <code>Callable#getVariants</code> unless <code>Unqualified</code> to  prevents local functions and macros being shown as completions for qualified names.</li>
</ul>
</li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/651" rel="noopener nofollow ugc">#651</a> - <a href="https://github.com/StabbyMcDuck" rel="noopener nofollow ugc">@StabbyMcDuck</a>
<ul>
<li>Among many other tweaks, the String color is now green, so that Atom and String are no longer close to one another, which was the original issue in <span class="hashtag-raw">#569</span><br>
<div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/2X/e/e0c2537d2c1d709c8f519a9153ff90e083b06c58.png" data-download-href="https://forum.elixirforum.com/uploads/default/e0c2537d2c1d709c8f519a9153ff90e083b06c58" title="screen shot 2017-04-09 at 9 44 06 pm" rel="nofollow"><img width="690" alt="screen shot 2017-04-09 at 9 44 06 pm" src="https://forum.elixirforum.com/uploads/default/optimized/2X/e/e0c2537d2c1d709c8f519a9153ff90e083b06c58_2_690x63.png" height="63" srcset="https://forum.elixirforum.com/uploads/default/optimized/2X/e/e0c2537d2c1d709c8f519a9153ff90e083b06c58_2_690x63.png, https://forum.elixirforum.com/uploads/default/optimized/2X/e/e0c2537d2c1d709c8f519a9153ff90e083b06c58_2_1035x94.png 1.5x, https://forum.elixirforum.com/uploads/default/optimized/2X/e/e0c2537d2c1d709c8f519a9153ff90e083b06c58_2_1380x126.png 2x" data-dominant-color="F0F2EC"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">screen shot 2017-04-09 at 9 44 06 pm</span><span class="informations">1520×140 27.9 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div>
<ul>
<li><code>Alias</code> now has <code>underscored</code> effect</li>
<li><code>Brackets</code> are now greenish instead of brownish</li>
<li><code>Callbacks</code> are now a lighter blue and has <code>underscored</code> effect</li>
<li><code>CharList</code> is little lighter</li>
<li><code>CharToken</code> is dark yellow now instead of dark purple</li>
<li><code>Dot</code> is now purple instead of dark red</li>
<li><code>Expression Substitution Mark</code> is a little lighter</li>
<li><code>Interpolation</code> is now lime green</li>
<li><code>Kernel Macros</code> are a burnt orange</li>
<li><code>Map</code> is now a dark blue instead of a dark yellow</li>
<li><code>Operation Sign</code> is a little lighter</li>
<li><code>Parameters</code> are a little darker</li>
<li><code>Parentheses</code> are redder</li>
<li><code>Predefined</code> is orange instead of blue</li>
<li><code>Specification</code> is now red instead of purple</li>
<li><code>Struct</code> is now purple instead of yellow</li>
<li><code>Type</code> is now green instead of dark purple</li>
<li><code>Variable</code> is more tealish</li>
</ul>
</li>
</ul>
</li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/650" rel="noopener nofollow ugc">#650</a> - <a href="https://github.com/StabbyMcDuck" rel="noopener nofollow ugc">@StabbyMcDuck</a>
<ul>
<li>Fix indentation to fix sub-lists in <code>CONTRIBUTING.md</code></li>
<li>Fix pluralization in <code>CONTRIBUTING.md</code></li>
</ul>
</li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/664" rel="noopener nofollow ugc">#664</a> - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a>
<ul>
<li>Check if resolve results are <code>null</code> for <code>For.resolveResultList</code></li>
<li>Check if <code>Protocol.resolveResultList</code> is <code>null</code></li>
</ul>
</li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/665" rel="noopener nofollow ugc">#665</a> - Check <code>match</code> <code>Call</code> is an <code>UnqualifiedNoArgumentCall</code>, in addition to being 0 resolved final arity, before checking if the name matches. - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a></li>
</ul>
<h3><a name="p-45822-incompatible-changes-6" class="anchor" href="#p-45822-incompatible-changes-6" aria-label="Heading link" rel="nofollow"></a>Incompatible Changes</h3>
<ul>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/585" rel="noopener nofollow ugc">#585</a> - Move <code>^^^</code> to its own three-operator precedence level to match <code>1.2</code>.  This does mean the parsing will be wrong for Elixir <code>1.1</code>, but is simpler than maintaining two grammars for those that are still using Elixir <code>1.1</code> - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a></li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/504" rel="noopener nofollow ugc">#504</a> - The <code>ant</code> build files have been removed.  To build the build plugin (for Install From Disk), use the <code>./gradlew buildPlugin</code>. - <a href="https://github.com/JakeBecker" rel="noopener nofollow ugc">@JakeBecker</a></li>
<li><a href="https://github.com/KronicDeth/intellij-elixir/pull/640" rel="noopener nofollow ugc">#640</a> - Change to module attribute folding to off by default. - <a href="https://github.com/KronicDeth" rel="noopener nofollow ugc">@KronicDeth</a></li>
</ul>
<h1><a name="p-45822-readme-updates-7" class="anchor" href="#p-45822-readme-updates-7" aria-label="Heading link" rel="nofollow"></a>README Updates</h1>
<h3><a name="p-45822-decompilation-8" class="anchor" href="#p-45822-decompilation-8" aria-label="Heading link" rel="nofollow"></a>Decompilation</h3>
<p><code>.beam</code> files, such as those in the Elixir SDK and in your project’s <code>build</code> directory will be decompiled to equivalent <code>def</code> and <code>defmacro</code> calls.  The bodies will not be decompiled, only the call definition head and placeholder parameters.  These decompiled call definition heads are enough to allow Go To Declaration, the Structure pane, and Completion to work with the decompiled <code>.beam</code> files.</p>
<h2><a name="p-45822-installation-9" class="anchor" href="#p-45822-installation-9" aria-label="Heading link" rel="nofollow"></a>Installation</h2>
<h3><a name="p-45822-inside-ide-using-jetbrains-repository-10" class="anchor" href="#p-45822-inside-ide-using-jetbrains-repository-10" aria-label="Heading link" rel="nofollow"></a>Inside IDE using JetBrains repository</h3>
<ol>
<li>Preferences</li>
<li>Plugins</li>
<li>Browse Repositories</li>
<li>Select Elixir</li>
<li>Install plugin</li>
<li>Apply</li>
<li>Restart the IDE</li>
</ol>
<h3><a name="p-45822-inside-ide-using-github-releases-11" class="anchor" href="#p-45822-inside-ide-using-github-releases-11" aria-label="Heading link" rel="nofollow"></a>Inside IDE using Github releases</h3>
<h4><a name="p-45822-in-browser-12" class="anchor" href="#p-45822-in-browser-12" aria-label="Heading link" rel="nofollow"></a>In browser</h4>
<ol>
<li>Go to <a href="https://github.com/KronicDeth/intellij-elixir/releases" rel="noopener nofollow ugc">releases</a>.</li>
<li>Download the lastest zip.</li>
</ol>
<h4><a name="p-45822-in-ide-13" class="anchor" href="#p-45822-in-ide-13" aria-label="Heading link" rel="nofollow"></a>In IDE</h4>
<ol>
<li>Preferences</li>
<li>Plugins</li>
<li>Install plugin from disk…</li>
<li>Select the downloaded zip.</li>
<li>Apply</li>
<li>Restart the IDE.</li>
</ol> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="45822" data-batch-url="/posts/batch_likers">
                        12
                      </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/intellij-elixir-elixir-plugin-for-jetbrains-intellij-platform/1697/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-45822" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="45822"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-most-liked cat-most-liked" title="One of the top 3 liked posts in this thread!"></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/1697/load_more?page=3">Load more posts</a>
</div></template></turbo-stream>