spacemacs/layers/+tools/dap
syl20bnr 584392bd92 [core] Fix layer dependencies based on layer variables
There was a edge case with the declaration of the `lsp` layer in `layers.el`
files.
The `hy` layer depends on the `python` layer which in turn depends on the `lsp`
layer if and only if the `python-backend` layer variable is set to `lsp`.
When the `hy` layer was declared first then it declares the `python` layer
without its layer variables, thus the `lsp` layer was not declared because the
`python-backend` variable was not set.

The fix is to gather all the layer dependencies and resolve them only after all
the used layers have been declared.

* new function `configuration-layer/declare-layer-dependencies`
* replace all calls to `configuration-layer/declare-layer` by the new function
  except for distribution layers (we declare layer dependencies right away in
  distribution layers)
2019-09-30 02:00:48 -04:00
..
config.el [dap] Refactor configuration dap config in layers 2019-09-30 00:34:26 -04:00
layers.el [core] Fix layer dependencies based on layer variables 2019-09-30 02:00:48 -04:00
packages.el [dap] Refactor configuration dap config in layers 2019-09-30 00:34:26 -04:00
README.org [dap] Refactor configuration dap config in layers 2019-09-30 00:34:26 -04:00

DAP layer

Description

Experimental integrated visual debugger using Debug Adapter Protocol.

Debug Adapter Protocol is a wire protocol for communication between client and Debug Server. It similar to the LSP but providers integration with debug server.

Features:

Fully featured IDE-like debugger providing:

  • Launch/Attach
  • Breakpoints
  • Exceptions
  • Pause & Continue
  • Step In/Out/Over
  • Callstacks
  • Threads
  • Multiple simultaneous debug sessions
  • Evaluating statements
  • Debug/Run configurations
  • Debug REPL

Layer installation

To use this configuration layer, add it to your ~/.spacemacs. You will need to add dap to the existing dotspacemacs-configuration-layers list in this file.

Configuration

DAP configuration in supported layers

To register dap-mode key bindings in a supported layer, the layer must register itself using the variable spacemacs--dap-supported-modes.

For instance the java layer:

(defun java/pre-init-dap-mode ()
  (add-to-list 'spacemacs--dap-supported-modes 'java-mode))

See the java layer for further example on how to setup correctly dap-mode.

Variables

Variable name Default Description
dap-enable-mouse-support t Enable/disable mouse support

Key bindings

Declared prefixes

The following prefixes have been declared:

prefix name
SPC m d debug
SPC m d d launching
SPC m d b breakpoints
SPC m d l debug windows
SPC m d S context switching
SPC m d e eval
SPC m d I inspect

Transient state

Most of the DAP functions can be easily repeated using the built-in DAP transient state which can be initiate with SPC m d ..

Key binding Description
SPC m d . debug transient state

Start/Stop

Key binding Description
SPC m d A abandon all process
SPC m d a abandon current session
SPC m d d d start debugging
SPC m d d e edit debug template
SPC m d d l debug last configuration
SPC m d d r debug recent configuration

Breakpoints

Key binding Description
SPC m d b b toggle a breakpoint
SPC m d b c change breakpoint condition
SPC m d b l change breakpoint log condition
SPC m d b h change breakpoint hit count
SPC m d b a add a breakpoint
SPC m d b d delete a breakpoint
SPC m d b D clear all breakpoints
SPC m d w b list breakpoints

Navigation

Key binding Description
SPC m d c continue
SPC m d i step in
SPC m d o step out
SPC m d s next step
SPC m d r restart frame
SPC m d S f switch frame
SPC m d S s switch session
SPC m d S t switch thread
SPC m d w o goto output buffer if present
SPC m d w s list sessions

Evaluation and REPL

Key binding Description
SPC m d '_ Run debug REPL
SPC m d e e eval
SPC m d e r eval region
SPC m d e t eval value at point

Inspection

Key binding Description
SPC m d I i inspect
SPC m d I r inspect region
SPC m d I t inspect value at point
SPC m d v inspect value at point
SPC m d w l list local variables
SPC m d T m toggle mouse support for value inspection