• Stars
    star
    3,600
  • Rank 12,317 (Top 0.3 %)
  • Language
    Lua
  • License
    GNU General Publi...
  • Created over 4 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Debug Adapter Protocol client implementation for Neovim

DAP (Debug Adapter Protocol)

nvim-dap is a Debug Adapter Protocol client implementation for Neovim. nvim-dap allows you to:

  • Launch an application to debug
  • Attach to running applications and debug them
  • Set breakpoints and step through code
  • Inspect the state of the application

demo

Installation

LuaRocks

  • Install nvim-dap like any other Neovim plugin:
    • git clone https://github.com/mfussenegger/nvim-dap.git ~/.config/nvim/pack/plugins/start/nvim-dap
    • Or with vim-plug: Plug 'mfussenegger/nvim-dap'
    • Or with packer.nvim: use 'mfussenegger/nvim-dap'
  • Generate the documentation for nvim-dap using :helptags ALL or :helptags <PATH-TO-PLUGIN/doc/>

Supported Neovim versions:

  • Latest nightly
  • 0.9.x (Recommended)
  • 0.8.3

You'll need to install and configure a debug adapter per language. See

Usage

A typical debug flow consists of:

  • Setting breakpoints via :lua require'dap'.toggle_breakpoint().
  • Launching debug sessions and resuming execution via :lua require'dap'.continue().
  • Stepping through code via :lua require'dap'.step_over() and :lua require'dap'.step_into().
  • Inspecting the state via the built-in REPL: :lua require'dap'.repl.open() or using the widget UI (:help dap-widgets)

See :help dap.txt, :help dap-mapping and :help dap-api.

Supported languages

In theory all of the languages for which a debug adapter exists should be supported.

The Wiki is community maintained. If you got an adapter working that isn't listed yet, please extend the Wiki.

Some debug adapters have language specific extensions. Using them over a manual configuration is recommended, as they're usually better maintained.

If the instructions in the wiki for a debug adapter are not working, consider that debug adapters may have made changes since the instructions were written. You may want to read the release notes of the debug adapters or try with an older version. Please update the wiki if you discover outdated examples.

Goals

  • Have a basic debugger in Neovim.

  • Extensibility and double as a DAP client library. This allows other plugins to extend the debugging experience. Either by improving the UI or by making it easier to debug parts of an application.

Extensions

All known extensions are listed in the Wiki. The wiki is community maintained. Please add new extensions if you built one or if you discovered one that's not listed.

Non-Goals

  • Debug adapter installations are out of scope. It's not the business of an editor plugin to re-invent a package manager. Use your system package manager. Use Nix. Use Ansible.

  • nvim-dapconfig

  • Vim support. It's not going to happen. Use vimspector instead.

Alternatives

Contributing

Contributions are welcome:

  • Give concrete feedback about usability.
  • Triage issues. Many of the problems people encounter are debug adapter specific.
  • Improve upstream debug adapter documentation to make them more editor agnostic.
  • Improve the Wiki. But please refrain from turning it into comprehensive debug adapter documentation that should go upstream.
  • Write extensions.

Before making direct code contributions, please create a discussion or issue to clarify whether the change is in scope of the nvim-dap core.

Please keep pull requests focused and don't change multiple things at the same time.

Features

  • launch debug adapter
  • attach to debug adapter
  • toggle breakpoints
  • breakpoints with conditions
  • logpoints
  • set exception breakpoints
  • step over, step into, step out
  • step back, reverse continue
  • Goto
  • restart
  • stop
  • pause
  • evaluate expressions
  • REPL (incl. commands to show threads, frames and scopes)

More Repositories

1

nvim-lint

An asynchronous linter plugin for Neovim complementary to the built-in Language Server Protocol support.
Lua
679
star
2

nvim-jdtls

Extensions for the built-in LSP support in Neovim for eclipse.jdt.ls
Lua
657
star
3

nvim-treehopper

Region selection with hints on the AST nodes of a document powered by treesitter
Lua
369
star
4

nvim-dap-python

An extension for nvim-dap, providing default configurations for python and methods to debug individual test methods or classes.
Lua
297
star
5

dotfiles

Various config files from my home directory
Lua
73
star
6

nvim-lsp-compl

A fast and asynchronous auto-completion plugin for Neovim, focused on LSP.
Lua
67
star
7

nvim-fzy

Fuzzy picker & vim.ui.select implementation via fzy for neovim
Lua
50
star
8

cr8

CLI collection of utilities for working with CrateDB or PostgreSQL. Benchmark queries, insert data.
Python
34
star
9

knx

python knx / eib client library
Python
26
star
10

mkjson

A commandline tool to generate static or random JSON records
Haskell
26
star
11

tornado-template

Tornado template with Jinja2 and Sqlalchemy
Python
22
star
12

nvim-lua-debugger

a Debug Adapter that allows debugging lua plugins written for Neovim
Lua
18
star
13

nvim-ansible

Small neovim plugin to make working with Ansible playbooks or roles more convenient
Lua
14
star
14

nvim-qwahl

Pickers for vim.ui.select
Lua
13
star
15

Huluobo

Web based rss reader written in python using tornado
CSS
13
star
16

crate-mono

Unmaintained Mono/.NET client driver for crate. Use npgsql-cratedb instead.
C#
10
star
17

easymail

A module that makes sending (valid) emails from python a little bit easier.
Python
6
star
18

pypsh

UNMAINTAINED: remotely execute commands in parallel with ssh on hostnames that match a regex.
Python
5
star
19

BaanPrint

Very simple output management framework for Infor ERP LN written in python.
Python
5
star
20

dinspect

Commandline tool to turn JSON into a chart
Python
3
star
21

docker-tornado-crate-demo

Simple demo showing how to run a python web app inside a docker container with a linked crate container
Python
3
star
22

crate-autocomplete

Plugin for Crate that provides SQL auto-complete functionality.
Java
3
star
23

java-benchopedia

Java
3
star
24

spacman

simple wrapper around pacman/pacsearch/aria2c to improve file download speed
Python
1
star
25

paperstore

python script to scan documents and search them later using a fulltext index
Python
1
star
26

crate-udf

Plugin for Crate that provides a mechanism to load user defined functions
Java
1
star
27

riccodo

generates static html sites from markdown files using jinja
Python
1
star
28

crate-peewee

Crate driver for peewee
Python
1
star