<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://blog.kerembozdas.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://blog.kerembozdas.com/" rel="alternate" type="text/html" /><updated>2025-11-23T11:00:18+03:00</updated><id>https://blog.kerembozdas.com/feed.xml</id><title type="html">Kerem Bozdas</title><subtitle>Personal blog</subtitle><entry><title type="html">How to continue using master branch in Git</title><link href="https://blog.kerembozdas.com/2025/11/22/how-to-continue-using-master-branch-in-git.html" rel="alternate" type="text/html" title="How to continue using master branch in Git" /><published>2025-11-22T10:19:00+03:00</published><updated>2025-11-22T10:19:00+03:00</updated><id>https://blog.kerembozdas.com/2025/11/22/how-to-continue-using-master-branch-in-git</id><content type="html" xml:base="https://blog.kerembozdas.com/2025/11/22/how-to-continue-using-master-branch-in-git.html"><![CDATA[<div class="paragraph">
<p>Git <a href="https://lore.kernel.org/lkml/xmqqv9ildh46.fsf@gitster.c.googlers.com">v2.28.0</a> adds configuration options to allow users to define their preferred default branch name for new repositories. Also, in this version the default branch was changed from <code>master</code> to <code>main</code>.</p>
</div>
<div class="sect1">
<h2 id="_configuring-local-repositories">Configuring Local Repositories</h2>
<div class="sectionbody">
<div class="paragraph">
<p>If you prefer to stick with <code>master</code>, you can set a global configuration that <code>git init</code> will respect:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="console"><span></span><span class="tok-gp">$ </span>git<span class="tok-w"> </span>config<span class="tok-w"> </span>--global<span class="tok-w"> </span>init.defaultBranch<span class="tok-w"> </span><span class="tok-s2">&quot;master&quot;</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Now, every time you run <code>git init</code>, your repository will start with <code>master</code> instead of <code>main</code>.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_the-problem-with-cloning">The Problem with Cloning</h2>
<div class="sectionbody">
<div class="paragraph">
<p>While <code>init.defaultBranch</code> enforces your preference for <strong>new</strong> local repositories, forks inherit the upstream repository&#8217;s default branch. If you have muscle memory for <code>git push origin master</code> or simply prefer the consistency of <code>master</code> across all your personal projects, this is annoying. You have to manually rename the branch, push the new branch, update the default branch on the remote, and delete the old one.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_automating-the-fix">Automating the Fix</h2>
<div class="sectionbody">
<div class="paragraph">
<p>To solve this, I wrote a small Ruby script that wraps <code>git clone</code>. It checks if the repository belongs to <code>github.username</code>, clones the repository, renames default branch to <code>master</code>, pushes the <code>master</code> branch, uses <code>gh</code> to change default branch to <code>master</code>, and deletes the old branch.</p>
</div>
<div class="paragraph">
<p>First, make sure you have your GitHub username configured:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="console"><span></span><span class="tok-gp">$ </span>git<span class="tok-w"> </span>config<span class="tok-w"> </span>--global<span class="tok-w"> </span>github.username<span class="tok-w"> </span><span class="tok-s2">&quot;krmbzds&quot;</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Here is the script, which I&#8217;ve named <code>git-clone</code>:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="ruby"><span></span><span class="tok-ch">#!/usr/bin/env ruby</span>

<span class="tok-n">repo_url</span><span class="tok-w"> </span><span class="tok-o">=</span><span class="tok-w"> </span><span class="tok-no">ARGV</span><span class="tok-o">[</span><span class="tok-mi">0</span><span class="tok-o">]</span><span class="tok-w"> </span><span class="tok-o">||</span><span class="tok-w"> </span><span class="tok-nb">abort</span><span class="tok-p">(</span><span class="tok-s2">&quot;Usage: </span><span class="tok-si">#{</span><span class="tok-vg">$PROGRAM_NAME</span><span class="tok-si">}</span><span class="tok-s2"> &lt;repo_url&gt;&quot;</span><span class="tok-p">)</span>
<span class="tok-n">user</span><span class="tok-w"> </span><span class="tok-o">=</span><span class="tok-w"> </span><span class="tok-sb">`git config github.username 2&gt;/dev/null`</span><span class="tok-o">.</span><span class="tok-n">strip</span>
<span class="tok-nb">exec</span><span class="tok-p">(</span><span class="tok-s2">&quot;git&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;clone&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-n">repo_url</span><span class="tok-p">)</span><span class="tok-w"> </span><span class="tok-k">if</span><span class="tok-w"> </span><span class="tok-n">user</span><span class="tok-o">.</span><span class="tok-n">empty?</span><span class="tok-w"> </span><span class="tok-o">||</span><span class="tok-w"> </span><span class="tok-o">!</span><span class="tok-n">repo_url</span><span class="tok-o">.</span><span class="tok-n">match?</span><span class="tok-p">(</span><span class="tok-sr">%r{[:/](</span><span class="tok-si">#{</span><span class="tok-no">Regexp</span><span class="tok-o">.</span><span class="tok-n">escape</span><span class="tok-p">(</span><span class="tok-n">user</span><span class="tok-p">)</span><span class="tok-si">}</span><span class="tok-sr">)/}</span><span class="tok-p">)</span>

<span class="tok-k">if</span><span class="tok-w"> </span><span class="tok-nb">system</span><span class="tok-p">(</span><span class="tok-s2">&quot;git&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;clone&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-n">repo_url</span><span class="tok-p">)</span>
<span class="tok-w">  </span><span class="tok-n">dir</span><span class="tok-w"> </span><span class="tok-o">=</span><span class="tok-w"> </span><span class="tok-no">File</span><span class="tok-o">.</span><span class="tok-n">basename</span><span class="tok-p">(</span><span class="tok-n">repo_url</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;.git&quot;</span><span class="tok-p">)</span>

<span class="tok-w">  </span><span class="tok-nb">system</span><span class="tok-p">(</span><span class="tok-s2">&quot;which&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;gh&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-ss">out</span><span class="tok-p">:</span><span class="tok-w"> </span><span class="tok-no">File</span><span class="tok-o">::</span><span class="tok-no">NULL</span><span class="tok-p">)</span><span class="tok-w"> </span><span class="tok-o">&amp;&amp;</span>
<span class="tok-w">    </span><span class="tok-p">(</span><span class="tok-n">owner</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-n">repo_name</span><span class="tok-w"> </span><span class="tok-o">=</span><span class="tok-w"> </span><span class="tok-n">repo_url</span><span class="tok-o">.</span><span class="tok-n">match</span><span class="tok-p">(</span><span class="tok-sr">%r{github\.com[:/](.+?)/(.+?)(?:\.git)?$}</span><span class="tok-p">)</span><span class="tok-o">.</span><span class="tok-n">captures</span><span class="tok-p">)</span><span class="tok-w"> </span><span class="tok-o">&amp;&amp;</span>
<span class="tok-w">    </span><span class="tok-nb">system</span><span class="tok-p">(</span><span class="tok-s2">&quot;git&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;-C&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-n">dir</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;checkout&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;-b&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;master&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;origin/main&quot;</span><span class="tok-p">)</span><span class="tok-w"> </span><span class="tok-o">&amp;&amp;</span>
<span class="tok-w">    </span><span class="tok-nb">system</span><span class="tok-p">(</span><span class="tok-s2">&quot;git&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;-C&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-n">dir</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;push&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;-u&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;origin&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;master&quot;</span><span class="tok-p">)</span><span class="tok-w"> </span><span class="tok-o">&amp;&amp;</span>
<span class="tok-w">    </span><span class="tok-nb">system</span><span class="tok-p">(</span><span class="tok-s2">&quot;gh&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;api&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;--silent&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;repos/</span><span class="tok-si">#{</span><span class="tok-n">owner</span><span class="tok-si">}</span><span class="tok-s2">/</span><span class="tok-si">#{</span><span class="tok-n">repo_name</span><span class="tok-si">}</span><span class="tok-s2">&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;-X&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;PATCH&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;-f&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;default_branch=master&quot;</span><span class="tok-p">)</span><span class="tok-w"> </span><span class="tok-o">&amp;&amp;</span>
<span class="tok-w">    </span><span class="tok-nb">system</span><span class="tok-p">(</span><span class="tok-s2">&quot;git&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;-C&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-n">dir</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;branch&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;-D&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;main&quot;</span><span class="tok-p">)</span><span class="tok-w"> </span><span class="tok-o">&amp;&amp;</span>
<span class="tok-w">    </span><span class="tok-nb">system</span><span class="tok-p">(</span><span class="tok-s2">&quot;git&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;-C&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-n">dir</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;push&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;origin&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;--delete&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;main&quot;</span><span class="tok-p">)</span>
<span class="tok-k">end</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Currently the script only works for GitHub repositories. However, you can easily adapt or extend it.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_usage">Usage</h2>
<div class="sectionbody">
<div class="paragraph">
<p>To use this script without replacing your system <code>git</code> binary, you can define a shell function in your <code>.zshrc</code> or <code>.bashrc</code>. This function will intercept <code>git clone</code> commands and route them to our script, while passing all other commands to the standard git binary.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="bash"><span></span>git<span class="tok-o">()</span><span class="tok-w"> </span><span class="tok-o">{</span>
<span class="tok-w">  </span><span class="tok-k">if</span><span class="tok-w"> </span><span class="tok-o">[</span><span class="tok-w"> </span><span class="tok-s2">&quot;</span><span class="tok-nv">$1</span><span class="tok-s2">&quot;</span><span class="tok-w"> </span><span class="tok-o">=</span><span class="tok-w"> </span><span class="tok-s2">&quot;clone&quot;</span><span class="tok-w"> </span><span class="tok-o">]</span><span class="tok-p">;</span><span class="tok-w"> </span><span class="tok-k">then</span>
<span class="tok-w">    </span><span class="tok-nb">shift</span>
<span class="tok-w">    </span>~/bin/git-clone<span class="tok-w"> </span><span class="tok-s2">&quot;</span><span class="tok-nv">$@</span><span class="tok-s2">&quot;</span>
<span class="tok-w">  </span><span class="tok-k">else</span>
<span class="tok-w">    </span><span class="tok-nb">command</span><span class="tok-w"> </span>git<span class="tok-w"> </span><span class="tok-s2">&quot;</span><span class="tok-nv">$@</span><span class="tok-s2">&quot;</span>
<span class="tok-w">  </span><span class="tok-k">fi</span>
<span class="tok-o">}</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>For the script to work you need to install <a href="https://github.com/cli/cli?tab=readme-ov-file#installation">gh</a> and login with:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="console"><span></span><span class="tok-gp">$ </span>gh<span class="tok-w"> </span>auth<span class="tok-w"> </span>login</code></pre>
</div>
</div>
<div class="paragraph">
<p>Now you can clone any repository like usual:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="console"><span></span><span class="tok-gp">$ </span>git<span class="tok-w"> </span>clone<span class="tok-w"> </span>https://github.com/krmbzds/rails
<span class="tok-go">Cloning into &#39;rails&#39;...</span>
<span class="tok-go">remote: Enumerating objects: 763230, done.</span>
<span class="tok-go">remote: Counting objects: 100% (124/124), done.</span>
<span class="tok-go">remote: Compressing objects: 100% (77/77), done.</span>
<span class="tok-go">remote: Total 763230 (delta 75), reused 47 (delta 47), pack-reused 763106 (from 3)</span>
<span class="tok-go">Receiving objects: 100% (763230/763230), 216.12 MiB | 6.72 MiB/s, done.</span>
<span class="tok-go">Resolving deltas: 100% (570644/570644), done.</span>
<span class="tok-go">branch &#39;master&#39; set up to track &#39;origin/main&#39;.</span>
<span class="tok-go">Switched to a new branch &#39;master&#39;</span>
<span class="tok-go">Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)</span>
<span class="tok-go">remote:</span>
<span class="tok-go">remote: Create a pull request for &#39;master&#39; on GitHub by visiting:</span>
<span class="tok-go">remote:      https://github.com/krmbzds/rails/pull/new/master</span>
<span class="tok-go">remote:</span>
<span class="tok-go">To https://github.com/krmbzds/rails</span>
<span class="tok-go"> * [new branch]            master -&gt; master</span>
<span class="tok-go">branch &#39;master&#39; set up to track &#39;origin/master&#39;.</span>
<span class="tok-go">Deleted branch main (was 8aebd0b507).</span>
<span class="tok-go">To https://github.com/krmbzds/rails</span>
<span class="tok-go"> - [deleted]               main</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Now all your forks will use master.</p>
</div>
<div class="paragraph">
<p>Happy hacking!</p>
</div>
</div>
</div>]]></content><author><name></name></author><category term="git" /><summary type="html"><![CDATA[Old habits die hard]]></summary></entry><entry><title type="html">New release: turkish_id v1.7.0</title><link href="https://blog.kerembozdas.com/2024/11/10/new-release-turkish-id-v1-7-0.html" rel="alternate" type="text/html" title="New release: turkish_id v1.7.0" /><published>2024-11-10T16:15:00+03:00</published><updated>2024-11-10T16:15:00+03:00</updated><id>https://blog.kerembozdas.com/2024/11/10/new-release-turkish-id-v1-7-0</id><content type="html" xml:base="https://blog.kerembozdas.com/2024/11/10/new-release-turkish-id-v1-7-0.html"><![CDATA[<div class="paragraph">
<p>I&#8217;ve released a new version of <code>turkish_id</code> gem.</p>
</div>
<div class="paragraph">
<p>Now, it supports querying ID numbers for people that are not a Turkish citizen but are registered in the <a href="https://en.wikipedia.org/wiki/Blue_Card_(Turkey)">blue card</a> registry. The numerical validation works the same way, so no differences there. There is a separate endpoint for querying ID numbers that are in the blue card registry; hence the new <code>foreigner_registered?</code> method.</p>
</div>
<div class="paragraph">
<p>Here&#8217;s how you can use it. First, create a new instance:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="rb"><span></span><span class="tok-n">identity_number</span><span class="tok-w"> </span><span class="tok-o">=</span><span class="tok-w"> </span><span class="tok-no">TurkishId</span><span class="tok-o">.</span><span class="tok-n">new</span><span class="tok-p">(</span><span class="tok-s2">&quot;99911494534&quot;</span><span class="tok-p">)</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Use <code>valid?</code> method to check numerical validity:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="rb"><span></span><span class="tok-n">identity_number</span><span class="tok-o">.</span><span class="tok-n">valid?</span><span class="tok-w">  </span><span class="tok-c1">#=&gt; true</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Use <code>foreigner_registered?</code> method to query the foreigner registry:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="rb"><span></span><span class="tok-n">identity_number</span><span class="tok-o">.</span><span class="tok-n">foreigner_registered?</span><span class="tok-p">(</span><span class="tok-s2">&quot;Yukihiro&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;Matsumoto&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-mi">14</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-mi">4</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-mi">1965</span><span class="tok-p">)</span><span class="tok-w">  </span><span class="tok-c1">#=&gt; false</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>And that&#8217;s how you can query a person with a <a href="https://en.wikipedia.org/wiki/Blue_Card_(Turkey)">blue card</a>. Hope you find it helpful.</p>
</div>
<div class="paragraph">
<p>Happy hacking!</p>
</div>]]></content><author><name></name></author><category term="rubygems" /><summary type="html"><![CDATA[Now you can query foreigner registry]]></summary></entry><entry><title type="html">My newfound appreciation for LuaSnip</title><link href="https://blog.kerembozdas.com/2023/04/19/my-newfound-appreciation-for-luasnip.html" rel="alternate" type="text/html" title="My newfound appreciation for LuaSnip" /><published>2023-04-19T10:49:00+03:00</published><updated>2023-04-19T10:49:00+03:00</updated><id>https://blog.kerembozdas.com/2023/04/19/my-newfound-appreciation-for-luasnip</id><content type="html" xml:base="https://blog.kerembozdas.com/2023/04/19/my-newfound-appreciation-for-luasnip.html"><![CDATA[<div class="paragraph">
<p>Are you familiar with Neovim, the popular text editor? If so, you may have heard of <a href="https://github.com/L3MON4D3/LuaSnip">LuaSnip</a>, a snippet engine written entirely in Lua.</p>
</div>
<div class="paragraph">
<p>I recently wanted to add my own snippet to create Sidekiq workers. During my search, I came across a YouTube playlist called <a href="https://www.youtube.com/watch?v=Vr7A90_tSns&amp;list=PL0EgBggsoPCnZ3a6c0pZuQRMgS_Z8-Fnr">LuaSnip Zero to Hero</a>. s1n7ax does a great job explaining how to write snippets in Lua. I recommend anyone interested in writing their own Lua snippets to watch it.</p>
</div>
<div class="paragraph">
<p>Whether it&#8217;s XML or JSON-based, most snippet engines come with their own syntax definitions which are often encumbered with constraints. I have dealt with them in the past. After playing around with Lua snippets, I was amazed how flexible they are. You have to see it to believe it. So check it out.</p>
</div>
<div class="paragraph">
<p>Here&#8217;s the snippet I wrote for creating an ActiveRecord Job:</p>
</div>
<div class="listingblock">
<div class="title">.config/nvim/snippets/rails.lua</div>
<div class="content">
<pre class="pygments highlight"><code data-lang="lua"><span></span><span class="tok-kd">local</span><span class="tok-w"> </span><span class="tok-nv">luasnip</span><span class="tok-w"> </span><span class="tok-o">=</span><span class="tok-w"> </span><span class="tok-nb">require</span><span class="tok-p">(</span><span class="tok-s2">&quot;luasnip&quot;</span><span class="tok-p">)</span>
<span class="tok-kd">local</span><span class="tok-w"> </span><span class="tok-nv">fmt</span><span class="tok-w"> </span><span class="tok-o">=</span><span class="tok-w"> </span><span class="tok-nb">require</span><span class="tok-p">(</span><span class="tok-s2">&quot;luasnip.extras.fmt&quot;</span><span class="tok-p">).</span><span class="tok-nv">fmt</span>

<span class="tok-kd">local</span><span class="tok-w"> </span><span class="tok-nv">s</span><span class="tok-w"> </span><span class="tok-o">=</span><span class="tok-w"> </span><span class="tok-nv">luasnip</span><span class="tok-p">.</span><span class="tok-py">snippet</span>
<span class="tok-kd">local</span><span class="tok-w"> </span><span class="tok-nv">t</span><span class="tok-w"> </span><span class="tok-o">=</span><span class="tok-w"> </span><span class="tok-nv">luasnip</span><span class="tok-p">.</span><span class="tok-py">text_node</span>
<span class="tok-kd">local</span><span class="tok-w"> </span><span class="tok-nv">c</span><span class="tok-w"> </span><span class="tok-o">=</span><span class="tok-w"> </span><span class="tok-nv">luasnip</span><span class="tok-p">.</span><span class="tok-py">choice_node</span>
<span class="tok-kd">local</span><span class="tok-w"> </span><span class="tok-nv">i</span><span class="tok-w"> </span><span class="tok-o">=</span><span class="tok-w"> </span><span class="tok-nv">luasnip</span><span class="tok-p">.</span><span class="tok-py">insert_node</span>

<span class="tok-nv">luasnip</span><span class="tok-p">.</span><span class="tok-nf">add_snippets</span><span class="tok-p">(</span><span class="tok-s2">&quot;rails&quot;</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-p">{</span>
<span class="tok-w">  </span><span class="tok-nf">s</span><span class="tok-p">(</span>
<span class="tok-w">    </span><span class="tok-s2">&quot;job&quot;</span><span class="tok-p">,</span>
<span class="tok-w">    </span><span class="tok-nf">fmt</span><span class="tok-p">(</span>
<span class="tok-w">      </span><span class="tok-s">[[</span>
<span class="tok-s">      class {}Job &lt; ActiveJob::Base</span>
<span class="tok-s">        queue_as :{}</span>
<span class="tok-s">        sidekiq_options retry: {}, backtrace: {}</span>

<span class="tok-s">        def perform({})</span>
<span class="tok-s">          {}</span>
<span class="tok-s">        end</span>
<span class="tok-s">      end</span>
<span class="tok-s">      ]]</span><span class="tok-p">,</span>
<span class="tok-w">      </span><span class="tok-p">{</span>
<span class="tok-w">        </span><span class="tok-nf">i</span><span class="tok-p">(</span><span class="tok-mi">1</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;Example&quot;</span><span class="tok-p">),</span>
<span class="tok-w">        </span><span class="tok-nf">c</span><span class="tok-p">(</span><span class="tok-mi">2</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-p">{</span><span class="tok-w"> </span><span class="tok-nf">t</span><span class="tok-p">(</span><span class="tok-s2">&quot;default&quot;</span><span class="tok-p">),</span><span class="tok-w"> </span><span class="tok-nf">t</span><span class="tok-p">(</span><span class="tok-s2">&quot;low&quot;</span><span class="tok-p">),</span><span class="tok-w"> </span><span class="tok-nf">t</span><span class="tok-p">(</span><span class="tok-s2">&quot;high&quot;</span><span class="tok-p">),</span><span class="tok-w"> </span><span class="tok-nf">t</span><span class="tok-p">(</span><span class="tok-s2">&quot;critical&quot;</span><span class="tok-p">)</span><span class="tok-w"> </span><span class="tok-p">}),</span>
<span class="tok-w">        </span><span class="tok-nf">i</span><span class="tok-p">(</span><span class="tok-mi">3</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;25&quot;</span><span class="tok-p">),</span>
<span class="tok-w">        </span><span class="tok-nf">i</span><span class="tok-p">(</span><span class="tok-mi">4</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;false&quot;</span><span class="tok-p">),</span>
<span class="tok-w">        </span><span class="tok-nf">i</span><span class="tok-p">(</span><span class="tok-mi">5</span><span class="tok-p">,</span><span class="tok-w"> </span><span class="tok-s2">&quot;*args&quot;</span><span class="tok-p">),</span>
<span class="tok-w">        </span><span class="tok-nf">i</span><span class="tok-p">(</span><span class="tok-mi">6</span><span class="tok-p">),</span>
<span class="tok-w">      </span><span class="tok-p">}</span>
<span class="tok-w">    </span><span class="tok-p">)</span>
<span class="tok-w">  </span><span class="tok-p">),</span>
<span class="tok-p">})</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>I had to add <a href="https://github.com/krmbzds/nvim/commit/af8ec80d8ea6552275d58718e0276d9c8dfd72a6">this line</a> to load my custom snippets in my <code>lsp-zero</code> config:</p>
</div>
<div class="listingblock">
<div class="title">lua/config/plugins/lsp-zero.lua</div>
<div class="content">
<pre class="pygments highlight"><code data-lang="lua"><span></span><span class="tok-nb">require</span><span class="tok-p">(</span><span class="tok-s2">&quot;luasnip.loaders.from_lua&quot;</span><span class="tok-p">).</span><span class="tok-nb">load</span><span class="tok-p">({</span><span class="tok-w"> </span><span class="tok-nv">paths</span><span class="tok-w"> </span><span class="tok-o">=</span><span class="tok-w"> </span><span class="tok-nv">vim</span><span class="tok-p">.</span><span class="tok-py">fn</span><span class="tok-p">.</span><span class="tok-nf">stdpath</span><span class="tok-p">(</span><span class="tok-s2">&quot;config&quot;</span><span class="tok-p">)</span><span class="tok-w"> </span><span class="tok-o">..</span><span class="tok-w"> </span><span class="tok-s2">&quot;/snippets/&quot;</span><span class="tok-w"> </span><span class="tok-p">})</span>
<span class="tok-nb">require</span><span class="tok-p">(</span><span class="tok-s2">&quot;luasnip.loaders.from_vscode&quot;</span><span class="tok-p">).</span><span class="tok-nf">lazy_load</span><span class="tok-p">()</span><span class="tok-w"> </span><span class="tok-c1">-- friendly-snippets</span></code></pre>
</div>
</div>
<div class="paragraph">
<p>Go wild!</p>
</div>]]></content><author><name></name></author><category term="neovim" /><summary type="html"><![CDATA[I learned how to write Lua snippets]]></summary></entry></feed>