explaingit

mfussenegger/nvim-dap

7,110LuaAudience · developerComplexity · 3/5Setup · hard

TLDR

nvim-dap is a Neovim plugin that adds interactive debugging, breakpoints, step-through execution, and variable inspection, by implementing the same Debug Adapter Protocol used by VS Code.

Mindmap

mindmap
  root((nvim-dap))
    What it does
      Set breakpoints
      Step through code
      Inspect variables
    Tech Stack
      Lua
      Neovim
      DAP protocol
    Use Cases
      Debug any language
      Replace print debugging
    Extensions
      UI companion plugins
      Language adapters
    Audience
      Neovim developers
      Power users
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Set breakpoints and step through your code line by line inside Neovim instead of adding print statements everywhere.

USE CASE 2

Inspect variable values and call stacks at runtime using the built-in interactive console during a debugging session.

USE CASE 3

Build a full IDE-style debugging workspace in Neovim by combining nvim-dap with community UI extension plugins.

Tech stack

LuaNeovim

Getting it running

Difficulty · hard Time to first run · 1h+

Each language requires separately installing and configuring its own debug adapter, consult the community wiki for per-language setup instructions.

In plain English

Neovim is a text-based code editor that runs in a terminal. This plugin, nvim-dap, adds interactive debugging to Neovim by implementing the Debug Adapter Protocol, a standard interface that many programming tools use to communicate with debuggers. In plain terms, debugging means pausing a running program at specific points, stepping through it line by line, and inspecting what values variables hold at any given moment. Without a tool like this, developers often resort to printing values to the screen to understand what their code is doing. nvim-dap gives Neovim users the same kind of interactive debugging experience found in graphical editors like VS Code or IntelliJ. The plugin lets you set breakpoints (pause points) in your code, step over or into functions one line at a time, and examine the state of the program through a built-in interactive console or through optional UI extensions. It supports many programming languages because it relies on separate debug adapters, small programs that translate between the Debug Adapter Protocol and each language's own debugger. You install and configure the adapter for each language you want to debug separately, with the community wiki providing per-language setup instructions. The project is written in Lua, which is the scripting language Neovim uses for plugins. Installation follows the standard Neovim plugin process, and the README explicitly notes that installing debug adapters for specific languages is outside its scope, leaving that to the user. There are companion plugins from the community that build on top of nvim-dap to provide richer user interfaces, such as full IDE-style panels or inline variable display during a debugging session. The core plugin is intentionally minimal, designed to serve as a foundation that other tools can extend.

Copy-paste prompts

Prompt 1
Set up nvim-dap with a Python debug adapter so I can set breakpoints and step through a Flask app inside Neovim.
Prompt 2
Show me the Lua config to add a keybinding in Neovim that toggles a breakpoint on the current line using nvim-dap.
Prompt 3
How do I configure nvim-dap to launch a Node.js script and pause at the first breakpoint automatically?
Prompt 4
What community UI plugins work with nvim-dap to give me VS Code-style variable panels, a call stack view, and inline variable display?
Prompt 5
Walk me through installing and configuring a Rust debug adapter for nvim-dap so I can debug a Cargo project.
Open on GitHub → Explain another repo

← mfussenegger on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.