<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>IntelliJ on Jamie Craane personal blog</title>
    <link>https://jamiecraane.dev/tags/intellij/</link>
    <description>Recent content in IntelliJ on Jamie Craane personal blog</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 16 Dec 2020 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://jamiecraane.dev/tags/intellij/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>IntelliJ find and replace using regular expressions</title>
      <link>https://jamiecraane.dev/2020/12/16/intellij_replace_regex/</link>
      <pubDate>Wed, 16 Dec 2020 00:00:00 +0000</pubDate>
      <guid>https://jamiecraane.dev/2020/12/16/intellij_replace_regex/</guid>
      <description>&lt;p&gt;IntelliJ (and all JetBrains ideas) support the ability to find and replace text using regular expressions. Regular expressions in this context can be very powerful. When you do not use regular expressions enough, it may take some time to come up with a correct regex, often looking at the &lt;a href=&#34;https://www.jetbrains.com/help/idea/tutorial-finding-and-replacing-text-using-regular-expressions.html&#34;&gt;docs&lt;/a&gt; or examples to find out how they work.&lt;/p&gt;&#xA;&lt;p&gt;find/replace regex (and also regular find/replace) works particularly well when lots of replacements need to be made.&lt;/p&gt;</description>
    </item>
    <item>
      <title>IntelliJ structural search and replace</title>
      <link>https://jamiecraane.dev/2014/02/08/intellij_structural/</link>
      <pubDate>Sat, 08 Feb 2014 00:00:00 +0000</pubDate>
      <guid>https://jamiecraane.dev/2014/02/08/intellij_structural/</guid>
      <description>&lt;p&gt;Sometimes you run into a situation where you want to refactor some code but cannot use the regular refactorings. For example, take the following code:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;jQuery(&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;body&amp;#34;&lt;/span&gt;).on(&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;change&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;#fontSelector&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;change&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;function&lt;/span&gt; () {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;var&lt;/span&gt; selectedFont &lt;span style=&#34;color:#ff79c6&#34;&gt;=&lt;/span&gt; jQuery(&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;#fontSelector&amp;#34;&lt;/span&gt;).val();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    layoutDesigner.selectFont(selectedFont);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;});&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I wanted to replace the above code with the following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;jQuery(&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;#fontSelector&amp;#34;&lt;/span&gt;).off(&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;change&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;jQuery(&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;#fontSelector&amp;#34;&lt;/span&gt;).on(&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;change&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;function&lt;/span&gt; () {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#8be9fd;font-style:italic&#34;&gt;var&lt;/span&gt; selectedFont &lt;span style=&#34;color:#ff79c6&#34;&gt;=&lt;/span&gt; jQuery(&lt;span style=&#34;color:#f1fa8c&#34;&gt;&amp;#34;#fontSelector&amp;#34;&lt;/span&gt;).val();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    layoutDesigner.selectFont(selectedFont);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;});&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sure, I could rewrite this manually. But this takes a long time with dozens of such event handling constructs, all with different selectors, events and functions. Structural search and replace to the rescue.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
