<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>zignar.net » Neovim</title>
    <link href="https://zignar.net/tags/neovim/index.xml" rel="self" />
    <link href="https://zignar.net" />
    <id>https://zignar.net/tags/neovim/index.xml</id>
    <author>
        <name>Mathias Fußenegger</name>
    </author>
    <updated>2025-09-23T00:00:00Z</updated>
    <entry>
      <title>Profiling Cheatsheet</title>
      <link href="https://zignar.net/2025/09/23/profiling-cheatsheet" />
      <id>https://zignar.net/2025/09/23/profiling-cheatsheet</id>
      <published>2025-09-23T00:00:00Z</published>
      <updated>2025-09-23T00:00:00Z</updated>
      <summary type="html"><![CDATA[<p>This is a short overview - or reference - on how I tend to do quick
application profiling.</p>
]]></summary>
    </entry>
    <entry>
      <title>The Debug Adapter Protocol is a REPL protocol in disguise</title>
      <link href="https://zignar.net/2025/06/23/debug-adapter-protocol-is-a-repl-protocol" />
      <id>https://zignar.net/2025/06/23/debug-adapter-protocol-is-a-repl-protocol</id>
      <published>2025-06-23T00:00:00Z</published>
      <updated>2025-06-23T00:00:00Z</updated>
      <summary type="html"><![CDATA[<p>A couple months back I created <a
href="https://codeberg.org/mfussenegger/nluarepl">nluarepl</a>. It’s a
REPL for the Neovim Lua interpreter with a little twist: It’s using the
Debug Adapter Protocol. And before that, I worked on <a
href="https://codeberg.org/mfussenegger/hprofdap">hprofdap</a>. Also a
kind of a REPL using DAP that lets you inspect Java heap dumps
(<code>.hprof</code> files) using OQL.</p>
<p>As the name might imply, a REPL isn’t the main use case for the Debug
Adapter Protocol (DAP). From the <a
href="https://microsoft.github.io/debug-adapter-protocol/">DAP
page</a>:</p>
<blockquote>
<p>The idea behind the Debug Adapter Protocol (DAP) is to abstract the
way how the debugging support of development tools communicates with
debuggers or runtimes into a protocol.</p>
</blockquote>
<p>But it works surprisingly well for a REPL interface to a language
interpreter too.</p>
]]></summary>
    </entry>
    <entry>
      <title>No-Config Python debugging using Neovim</title>
      <link href="https://zignar.net/2025/03/02/no-config-python-debugging-using-neovim" />
      <id>https://zignar.net/2025/03/02/no-config-python-debugging-using-neovim</id>
      <published>2025-03-02T00:00:00Z</published>
      <updated>2025-03-02T00:00:00Z</updated>
      <summary type="html"><![CDATA[<p>A little while ago Microsoft released <a
href="https://github.com/microsoft/vscode-python-debugger/wiki/No%E2%80%90Config-Debugging">No
Config Debugging</a> functionality in their vscode python extension.</p>
<p>This got me curious - wondering if it can be replicated in Neovim.
Turns out it can be. This post shows how.</p>
]]></summary>
    </entry>
    <entry>
      <title>Template files for nvim</title>
      <link href="https://zignar.net/2024/11/20/template-files-for-nvim" />
      <id>https://zignar.net/2024/11/20/template-files-for-nvim</id>
      <published>2024-11-20T00:00:00Z</published>
      <updated>2024-11-20T00:00:00Z</updated>
      <summary type="html"><![CDATA[<p>Over the years I’ve picked up various tweaks for my <code>nvim</code>
configuration. One of them is template file support. This article is a
short introduction to what they are, how do they work and how I recently
extended them to support snippet expansion.</p>
]]></summary>
    </entry>
    <entry>
      <title>Debugging Lua in Neovim</title>
      <link href="https://zignar.net/2023/06/10/debugging-lua-in-neovim" />
      <id>https://zignar.net/2023/06/10/debugging-lua-in-neovim</id>
      <published>2023-06-10T00:00:00Z</published>
      <updated>2023-06-10T00:00:00Z</updated>
      <summary type="html"><![CDATA[<p>In this post I want to show you how you can debug Lua scripts with
Neovim and <a
href="https://codeberg.org/mfussenegger/nvim-dap">nvim-dap</a>. Both
regular Lua, but also Lua that uses Neovim as Lua interpreter. The
latter is interesting if you want to debug Neovim plugin test cases
written using <a
href="https://lunarmodules.github.io/busted/">busted</a></p>
]]></summary>
    </entry>
    <entry>
      <title>Debugging Neovim with Neovim and nvim-dap</title>
      <link href="https://zignar.net/2023/02/17/debugging-neovim-with-neovim-and-nvim-dap" />
      <id>https://zignar.net/2023/02/17/debugging-neovim-with-neovim-and-nvim-dap</id>
      <published>2023-02-17T00:00:00Z</published>
      <updated>2023-02-17T00:00:00Z</updated>
      <summary type="html"><![CDATA[<p>Recently a change got merged in Neovim that decoupled its TUI from
the main process. A side effect of the change is that debugging it
became a bit more troublesome. It now forks itself and you end up with
two processes. Depending on what you want to debug you need to attach to
that second process.</p>
<p>I thought this might be an interesting use-case for more advanced
features of nvim-dap. This post explores using it to automate attaching
to the second process.</p>
<p>Even if you’ll never debug Neovim you may find this interesting as it
could give you some ideas on what you can do with a hackable
debugger.</p>
<p>This post uses nvim-dap features of the upcoming 0.5 release. If
you’re on 0.4 you’ll have to switch to the development branch. (If you
are from the future, use 0.5+)</p>
]]></summary>
    </entry>
    <entry>
      <title>Using Neovim as Lua interpreter with Luarocks</title>
      <link href="https://zignar.net/2023/01/21/using-Luarocks-as-lua-interpreter-with-luarocks" />
      <id>https://zignar.net/2023/01/21/using-Luarocks-as-lua-interpreter-with-luarocks</id>
      <published>2023-01-21T00:00:00Z</published>
      <updated>2023-01-21T00:00:00Z</updated>
      <summary type="html"><![CDATA[<p>This is a short article covering how you can use Neovim as Lua
interpreter for <a href="https://luarocks.org/">Luarocks</a> and <a
href="https://lunarmodules.github.io/busted/">busted</a>.</p>
]]></summary>
    </entry>
    <entry>
      <title>Structuring Neovim Lua plugins</title>
      <link href="https://zignar.net/2022/11/06/structuring-neovim-lua-plugins" />
      <id>https://zignar.net/2022/11/06/structuring-neovim-lua-plugins</id>
      <published>2022-11-06T00:00:00Z</published>
      <updated>2022-11-06T00:00:00Z</updated>
      <summary type="html"><![CDATA[<p>This is an introduction to the various ways you can structure a
Neovim plugin and their trade-offs.</p>
]]></summary>
    </entry>
    <entry>
      <title>Testing Neovim LSP plugins</title>
      <link href="https://zignar.net/2022/10/26/testing-neovim-lsp-plugins" />
      <id>https://zignar.net/2022/10/26/testing-neovim-lsp-plugins</id>
      <published>2022-10-26T00:00:00Z</published>
      <updated>2022-10-26T00:00:00Z</updated>
      <summary type="html"><![CDATA[<p>This is a short introduction in how you can test a Neovim plugin
which extends the LSP functionality. This approach requires Neovim 0.8
or later.</p>
]]></summary>
    </entry>
    <entry>
      <title>New LSP features in Neovim 0.8</title>
      <link href="https://zignar.net/2022/10/01/new-lsp-features-in-neovim-08" />
      <id>https://zignar.net/2022/10/01/new-lsp-features-in-neovim-08</id>
      <published>2022-10-01T00:00:00Z</published>
      <updated>2022-10-01T00:00:00Z</updated>
      <summary type="html"><![CDATA[<p>Neovim 0.8 got released the other day, time to write about some of
the LSP changes.</p>
]]></summary>
    </entry>
    <entry>
      <title>A tree sitting in your editor</title>
      <link href="https://zignar.net/2022/09/02/a-tree-sitting-in-your-editor" />
      <id>https://zignar.net/2022/09/02/a-tree-sitting-in-your-editor</id>
      <published>2022-09-02T00:00:00Z</published>
      <updated>2022-09-02T00:00:00Z</updated>
      <summary type="html"><![CDATA[<p>This is a short introduction to the <a
href="https://tree-sitter.github.io/tree-sitter/">tree-sitter</a>
integration in <a href="http://neovim.io/">Neovim</a> based on a
use-case I had: To find content in a <code>TOML</code> file close to the
cursor position and then launch an application using this
information.</p>
]]></summary>
    </entry>
    <entry>
      <title>Neovim completion plugin building blocks</title>
      <link href="https://zignar.net/2021/05/14/neovim-completion-pluign-building-blocks" />
      <id>https://zignar.net/2021/05/14/neovim-completion-pluign-building-blocks</id>
      <published>2021-05-14T00:00:00Z</published>
      <updated>2021-05-14T00:00:00Z</updated>
      <summary type="html"><![CDATA[<p>In this post I’ll show you the basic building blocks of a completion
plugin for Neovim.</p>
]]></summary>
    </entry>
    <entry>
      <title>Neovim under the hood - Understanding the language server client</title>
      <link href="https://zignar.net/2020/10/27/neovim-under-the-hood-understanding-the-language-server-client" />
      <id>https://zignar.net/2020/10/27/neovim-under-the-hood-understanding-the-language-server-client</id>
      <published>2020-10-27T00:00:00Z</published>
      <updated>2020-10-27T00:00:00Z</updated>
      <summary type="html"><![CDATA[<p>This is a short introduction to the language server-client
architecture in Neovim and how to customize the diagnostics display.</p>
]]></summary>
    </entry>
    <entry>
      <title>Setup Neovim for Java Development Part 2</title>
      <link href="https://zignar.net/2020/10/17/setup-Neovim-for-java-development-2" />
      <id>https://zignar.net/2020/10/17/setup-Neovim-for-java-development-2</id>
      <published>2020-10-17T00:00:00Z</published>
      <updated>2020-10-17T00:00:00Z</updated>
      <summary type="html"><![CDATA[<p>This is an updated version of <a
href="https://zignar.net/2019/11/21/setup-neovim-for-java-development/">an
older article</a> about setting up Neovim for Java development.</p>
]]></summary>
    </entry>
    <entry>
      <title>Setup Neovim for Java development</title>
      <link href="https://zignar.net/2019/11/21/setup-neovim-for-java-development" />
      <id>https://zignar.net/2019/11/21/setup-neovim-for-java-development</id>
      <published>2019-11-21T00:00:00Z</published>
      <updated>2019-11-21T00:00:00Z</updated>
      <summary type="html"><![CDATA[<p>A writeup of how I’ve setup Neovim for Java development</p>
<p>(There is a <a
href="https://zignar.net/2020/10/17/setup-neovim-for-java-development-2/">newer
version of this article available</a>)</p>
]]></summary>
    </entry>
</feed>
