Merge pull request #99 from puremourning/readme-launch-settings

Document LaunchWithSettings
This commit is contained in:
mergify[bot] 2020-01-28 09:05:01 +00:00 committed by GitHub
commit e26fc6bd8c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 92 additions and 3 deletions

View file

@ -29,6 +29,7 @@ For a tutorial and usage overview, take a look at the
* [Human Mode](#human-mode)
* [Usage](#usage)
* [Launch and attach by PID:](#launch-and-attach-by-pid)
* [Launch with options](#launch-with-options)
* [Breakpoints](#breakpoints)
* [Stepping](#stepping)
* [Variables and scopes](#variables-and-scopes)
@ -44,12 +45,16 @@ For a tutorial and usage overview, take a look at the
* [C♯](#c)
* [Go](#go)
* [PHP](#php)
* [Debug web application](#debug-web-application)
* [Debug cli application](#debug-cli-application)
* [JavaScript, TypeScript, etc.](#javascript-typescript-etc)
* [Java - partially supported](#java---partially-supported)
* [Customisation](#customisation)
* [Changing the default signs](#changing-the-default-signs)
* [FAQ](#faq)
* [License](#license)
<!-- Added by: ben, at: Sun 26 Jan 2020 21:41:08 GMT -->
<!-- Added by: ben, at: Tue 28 Jan 2020 08:46:26 GMT -->
<!--te-->
@ -485,6 +490,36 @@ let g:vimspector_enable_mappings = 'HUMAN'
* Create `vimspector.json`. See [below](#supported-languages).
* `:call vimspector#Launch()` and select a configuration.
### Launch with options
To launch a specific debug configuration, or specify [replacement
variables][vimspector-ref-var] for the launch, you can use:
* `:call vimspector#LaunchWithSettings( dict )`
The argument is a `dict` with the following keys:
* `configuration`: (optional) Name of the debug configuration to launch
* `<anything else>`: (optional) Name of a variable to set
This allows for some intergration and automation. For example, if you have a
configuration named `Run Test` that contains a [replacement
variable][vimspector-ref-var] named `${Test}` you could write a mapping which
ultimately executes:
```viml
vimspector#LaunchWithSettings( #{ configuration: 'Run Test'
\ Test: 'Name of the test' } )
```
This would start the `Run Test` configuration with `${Test}` set to `'Name of
the test'` and Vimspector would _not_ prompt the user to enter or confirm these
things.
See [this issue](https://github.com/puremourning/vimspector/issues/97) for
another example where it can be used to specify the port to connect the [java
debugger](#java---partially-supported)
## Breakpoints
* Use `vimspector#ToggleBreakpoint()` to set/disable/delete a line breakpoint.
@ -552,9 +587,12 @@ To close the debugger, use:
# Debug adapter configuration
For more information on the configuration of `.vimspector.json`, take a look at
For an introduction to the configuration of `.vimspector.json`, take a look at
the Getting Started section of the [Vimspector website][website].
For full explanation, including how to use variables, substitutions and how to
specify exception breakpoints, see [the docs](vimspector-ref).
Current tested with the following debug adapters.
## C, C++, Rust, etc.
@ -936,8 +974,10 @@ sign define vimspectorPC text=🔶 texthl=SpellBad
necessarily be easy to work out what to put in the `.vimspector.json`. As you
can see above, some of the servers aren't really editor agnostic, and require
very-specific unique handling.
3. How do i stop it starting a new Terminal.app on macOS? See [this
3. How do I stop it starting a new Terminal.app on macOS? See [this
comment](https://github.com/puremourning/vimspector/issues/90#issuecomment-577857322)
4. Can I specify answers to the annoying questions about exception breakpoints
in my `vimspector.json` ? Yes, see [here][vimspector-ref-exception].
# License
@ -951,3 +991,6 @@ Copyright © 2018 Ben Jackson
[website]: https://puremourning.github.io/vimspector-web/
[delve]: https://github.com/go-delve/delve
[delve-install]: https://github.com/go-delve/delve/tree/master/Documentation/installation
[vimspector-ref]: https://puremourning.github.io/vimspector/configuration.html
[vimspector-ref-var]: https://puremourning.github.io/vimspector/configuration.html#replacements-and-variables
[vimspector-ref-exception]: https://puremourning.github.io/vimspector/configuration.html#exception-breakpoints

View file

@ -6,6 +6,23 @@ title: Configuration
This document defines the supported format for project and adapter configuration
for Vimspector.
<!--ts-->
* [Concepts](#concepts)
* [Debug adapter configuration](#debug-adapter-configuration)
* [Debug profile configuration](#debug-profile-configuration)
* [Replacements and variables](#replacements-and-variables)
* [Configuration Format](#configuration-format)
* [Files and locations](#files-and-locations)
* [Adapter configurations](#adapter-configurations)
* [Debug configurations](#debug-configurations)
* [Exception breakpionts](#exception-breakpionts)
* [Predefined Variables](#predefined-variables)
* [Appendix: Editor configuration](#appendix-editor-configuration)
<!-- Added by: ben, at: Tue 28 Jan 2020 08:47:40 GMT -->
<!--te-->
## Concepts
As Vimspector supports debugging arbitrary projects, you need to tell it a few
@ -235,6 +252,35 @@ typical example looks like this:
}
```
### Exception breakpionts
Debug adapters have arbitrary configuration for exception breakpoints. Normally
this is presented as a series of question to the user on startnig the debug
session. The question includes the name of the exception breakpoint option,
the default and the list of valid responses (usually `Y` or `N`).
You can pre-configure the answers to these questions in the `breakpoints`
section of the debug configuration. For each question, take the name provided
and configure the response `exception` mapping in the `breakpoints` mapping. If
the configured response is empty string, the debug adapter default will be used.
Referring to the above example, the following tells the debug adapter to use the
default value for `caught` exceptoins and to break on `uncaught` exception:
```
{
"configurations": {
"example-debug-configuration": {
"adapter": "example-adapter-name",
"breakpoints": {
"exception": {
"caught": "",
"uncaught": "Y"
}
},
...
```
## Predefined Variables
The following variables are provided: