Compare commits
6 commits
master
...
data-break
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
af57d2dbdb | ||
|
|
c2353b388d | ||
|
|
32360236ff | ||
|
|
f4831657b8 | ||
|
|
f92f2c5d93 | ||
|
|
cb0fdc7613 |
63 changed files with 1306 additions and 5220 deletions
10
.github/ISSUE_TEMPLATE/bug_report.md
vendored
10
.github/ISSUE_TEMPLATE/bug_report.md
vendored
|
|
@ -17,12 +17,12 @@ assignees: ''
|
||||||
|
|
||||||
> Please answer the following questions
|
> Please answer the following questions
|
||||||
|
|
||||||
* Does your issue reproduce using `vim --clean -Nu /path/to/vimspector/support/minimal_vimrc` ? \[Yes/No]
|
* Does your issue reproduce using `vim -Nu /path/to/vimspector/support/minimal_vimrc` ? \[Yes/No]
|
||||||
* If you are using Neovim, does your issue reproduce using Vim? \[Yes/No]
|
* If you are using Neovim, does your issue reproduce using Vim? \[Yes/No]
|
||||||
|
|
||||||
> List of steps to reproduce:
|
> List of steps to reproduce:
|
||||||
|
|
||||||
> 1. Run `vim ---clean Nu /path/to/vimspector/support/minimal_vimrc`
|
> 1. Run `vim -Nu /path/to/vimspector/support/minimal_vimrc`
|
||||||
> 2. Open _this project_...
|
> 2. Open _this project_...
|
||||||
> 3. Press _this sequence of keys_
|
> 3. Press _this sequence of keys_
|
||||||
|
|
||||||
|
|
@ -57,12 +57,6 @@ discussing on Gitter rather than raising an issue.
|
||||||
* Version of Vimspector: (e.g. output of `git rev-parse HEAD` if cloned or the
|
* Version of Vimspector: (e.g. output of `git rev-parse HEAD` if cloned or the
|
||||||
name of the tarball used to install otherwise)
|
name of the tarball used to install otherwise)
|
||||||
|
|
||||||
* Output of `:VimspectorDebugInfo`
|
|
||||||
|
|
||||||
```
|
|
||||||
paste here
|
|
||||||
```
|
|
||||||
|
|
||||||
* Output of `vim --version` or `nvim --version`
|
* Output of `vim --version` or `nvim --version`
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
||||||
20
.github/workflows/build.yaml
vendored
20
.github/workflows/build.yaml
vendored
|
|
@ -13,7 +13,7 @@ defaults:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
PythonLint:
|
PythonLint:
|
||||||
runs-on: ubuntu-18.04
|
runs-on: ubuntu-16.04
|
||||||
container: 'puremourning/vimspector:test'
|
container: 'puremourning/vimspector:test'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
@ -22,7 +22,7 @@ jobs:
|
||||||
- name: 'Run flake8'
|
- name: 'Run flake8'
|
||||||
run: '$HOME/.local/bin/flake8 python3/ *.py'
|
run: '$HOME/.local/bin/flake8 python3/ *.py'
|
||||||
VimscriptLint:
|
VimscriptLint:
|
||||||
runs-on: 'ubuntu-18.04'
|
runs-on: 'ubuntu-16.04'
|
||||||
container: 'puremourning/vimspector:test'
|
container: 'puremourning/vimspector:test'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
@ -32,7 +32,7 @@ jobs:
|
||||||
run: $HOME/.local/bin/vint autoload/ compiler/ plugin/ tests/ syntax/
|
run: $HOME/.local/bin/vint autoload/ compiler/ plugin/ tests/ syntax/
|
||||||
|
|
||||||
Linux:
|
Linux:
|
||||||
runs-on: 'ubuntu-18.04'
|
runs-on: 'ubuntu-16.04'
|
||||||
container:
|
container:
|
||||||
image: 'puremourning/vimspector:test'
|
image: 'puremourning/vimspector:test'
|
||||||
options: --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
|
options: --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
|
||||||
|
|
@ -111,16 +111,6 @@ jobs:
|
||||||
path: gadgets/macos/download
|
path: gadgets/macos/download
|
||||||
name: Cache gadgets
|
name: Cache gadgets
|
||||||
|
|
||||||
- name: 'Install .NET Core SDK 3.1'
|
|
||||||
uses: actions/setup-dotnet@v1.7.2
|
|
||||||
with:
|
|
||||||
dotnet-version: 3.1
|
|
||||||
|
|
||||||
- uses: maxim-lobanov/setup-xcode@v1
|
|
||||||
with:
|
|
||||||
xcode-version: ^11
|
|
||||||
name: "Switch to xcode 11 because of .NET debugging bug"
|
|
||||||
|
|
||||||
- run: vim --version
|
- run: vim --version
|
||||||
name: 'Print vim version information'
|
name: 'Print vim version information'
|
||||||
|
|
||||||
|
|
@ -153,10 +143,10 @@ jobs:
|
||||||
# if: failure()
|
# if: failure()
|
||||||
# with:
|
# with:
|
||||||
# NGROK_AUTH_TOKEN: ${{ secrets.NGROK_AUTH_TOKEN }}
|
# NGROK_AUTH_TOKEN: ${{ secrets.NGROK_AUTH_TOKEN }}
|
||||||
# SSH_PASS: ${{ secrets.SSH_PASS }} # [V]imspector
|
# SSH_PASS: ${{ secrets.SSH_PASS }}
|
||||||
|
|
||||||
PublishRelease:
|
PublishRelease:
|
||||||
runs-on: 'ubuntu-18.04'
|
runs-on: 'ubuntu-16.04'
|
||||||
needs:
|
needs:
|
||||||
- Linux
|
- Linux
|
||||||
- MacOS
|
- MacOS
|
||||||
|
|
|
||||||
27
.github/workflows/lock_old_issues.yaml
vendored
27
.github/workflows/lock_old_issues.yaml
vendored
|
|
@ -1,27 +0,0 @@
|
||||||
name: "Lock Old Issues"
|
|
||||||
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: '0 0 * * *'
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
lock:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: dessant/lock-threads@v2
|
|
||||||
with:
|
|
||||||
github-token: ${{ github.token }}
|
|
||||||
issue-lock-inactive-days: '60'
|
|
||||||
# issue-exclude-created-before: ''
|
|
||||||
# issue-exclude-labels: ''
|
|
||||||
# issue-lock-labels: ''
|
|
||||||
# issue-lock-comment: ''
|
|
||||||
# issue-lock-reason: 'resolved'
|
|
||||||
# pr-lock-inactive-days: '365'
|
|
||||||
# pr-exclude-created-before: ''
|
|
||||||
# pr-exclude-labels: ''
|
|
||||||
# pr-lock-labels: ''
|
|
||||||
# pr-lock-comment: ''
|
|
||||||
# pr-lock-reason: 'resolved'
|
|
||||||
process-only: 'issues'
|
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -20,4 +20,3 @@ support/test/csharp/*.exe*
|
||||||
configurations/
|
configurations/
|
||||||
venv/
|
venv/
|
||||||
test-base/
|
test-base/
|
||||||
tags
|
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,9 @@ pull_request_rules:
|
||||||
# CI https://doc.mergify.io/conditions.html#github-actions
|
# CI https://doc.mergify.io/conditions.html#github-actions
|
||||||
- status-success=PythonLint
|
- status-success=PythonLint
|
||||||
- status-success=VimscriptLint
|
- status-success=VimscriptLint
|
||||||
- status-success=Linux
|
|
||||||
- status-success=MacOS
|
- status-success=MacOS
|
||||||
|
|
||||||
|
|
||||||
actions: &merge-actions
|
actions: &merge-actions
|
||||||
merge:
|
merge:
|
||||||
method: merge
|
method: merge
|
||||||
|
|
|
||||||
|
|
@ -42,17 +42,7 @@ def Settings( **kwargs ):
|
||||||
return {
|
return {
|
||||||
'sys_path': [
|
'sys_path': [
|
||||||
p.join( PATH_TO_THIS_DIR, 'python3' )
|
p.join( PATH_TO_THIS_DIR, 'python3' )
|
||||||
],
|
]
|
||||||
'ls': {
|
|
||||||
'python': {
|
|
||||||
'analysis': {
|
|
||||||
'extraPaths': [
|
|
||||||
p.join( PATH_TO_THIS_DIR, 'python3' ),
|
|
||||||
],
|
|
||||||
'useLibraryCodeForTypes': True
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if IgnoreExtraConf:
|
if IgnoreExtraConf:
|
||||||
|
|
|
||||||
|
|
@ -46,23 +46,6 @@ The GitHub issue tracker is for *bug reports* and *features requests* for the
|
||||||
Vimspector project, and on-topic comments and follow-ups to them. It is not for
|
Vimspector project, and on-topic comments and follow-ups to them. It is not for
|
||||||
general discussion, general support or for any other purpose.
|
general discussion, general support or for any other purpose.
|
||||||
|
|
||||||
Please **search the issue tracker for similar issues** before creating a new
|
|
||||||
one. There's no point in duplication; if an existing open issue addresses your
|
|
||||||
problem, please comment there instead of creating a duplicate. However, if the
|
|
||||||
issue you found is **closed as resolved** (e.g. with a PR or the original user's
|
|
||||||
problem was resolved), raise a **new issue**, because you've found a new
|
|
||||||
problem. Reference the original issue if you think that's useful information.
|
|
||||||
|
|
||||||
Closed issues which have been inactive for 60 days will be locked, this helps to
|
|
||||||
keep discussions focussed. If you believe you are still experiencing an issue
|
|
||||||
which has been closed, please raise a new issue, completing the issue template.
|
|
||||||
|
|
||||||
If you do find a similar _open_ issue, **don't just post 'me too' or similar**
|
|
||||||
responses. This almost never helps resolve the issue, and just causes noise for
|
|
||||||
the maintainers. Only post if it will aid the maintainers in solving the issue;
|
|
||||||
if there are existing diagnostics requested in the thread, perform
|
|
||||||
them and post the results.
|
|
||||||
|
|
||||||
Please do not be offended if your Issue or comment is closed or hidden, for any
|
Please do not be offended if your Issue or comment is closed or hidden, for any
|
||||||
of the following reasons:
|
of the following reasons:
|
||||||
|
|
||||||
|
|
@ -70,7 +53,6 @@ of the following reasons:
|
||||||
* The issue or comment is off-topic
|
* The issue or comment is off-topic
|
||||||
* The issue does not represent a Vimspector bug or feature request
|
* The issue does not represent a Vimspector bug or feature request
|
||||||
* The issue cannot be reasonably reproduced using the minimal vimrc
|
* The issue cannot be reasonably reproduced using the minimal vimrc
|
||||||
* The issue is a duplicate of an existing issue
|
|
||||||
* etc.
|
* etc.
|
||||||
|
|
||||||
Issue titles are important. It's not usually helpful to write a title like
|
Issue titles are important. It's not usually helpful to write a title like
|
||||||
|
|
@ -101,7 +83,7 @@ in the issue report.
|
||||||
The minimal vimrc is in `support/test/minimal_vimrc` and can be used as follows:
|
The minimal vimrc is in `support/test/minimal_vimrc` and can be used as follows:
|
||||||
|
|
||||||
```
|
```
|
||||||
vim --clean -Nu /path/to/vimspector/support/minimal_vimrc
|
vim -Nu /path/to/vimspector/support/minimal_vimrc
|
||||||
```
|
```
|
||||||
|
|
||||||
## Pull Requests
|
## Pull Requests
|
||||||
|
|
|
||||||
301
README.md
301
README.md
|
|
@ -3,7 +3,7 @@
|
||||||
For a tutorial and usage overview, take a look at the
|
For a tutorial and usage overview, take a look at the
|
||||||
[Vimspector website][website].
|
[Vimspector website][website].
|
||||||
|
|
||||||
For detailed explanation of the `.vimspector.json` format, see the
|
For detailed explanatin of the `.vimspector.json` format, see the
|
||||||
[reference guide][vimspector-ref].
|
[reference guide][vimspector-ref].
|
||||||
|
|
||||||
 [](https://gitter.im/vimspector/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
 [](https://gitter.im/vimspector/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
||||||
|
|
@ -59,16 +59,15 @@ For detailed explanation of the `.vimspector.json` format, see the
|
||||||
* [Console autocompletion](#console-autocompletion)
|
* [Console autocompletion](#console-autocompletion)
|
||||||
* [Log View](#log-view)
|
* [Log View](#log-view)
|
||||||
* [Closing debugger](#closing-debugger)
|
* [Closing debugger](#closing-debugger)
|
||||||
* [Terminate debuggee](#terminate-debuggee)
|
|
||||||
* [Debug profile configuration](#debug-profile-configuration)
|
* [Debug profile configuration](#debug-profile-configuration)
|
||||||
* [C, C++, Rust, etc.](#c-c-rust-etc)
|
* [C, C , Rust, etc.](#c-c-rust-etc)
|
||||||
* [Data visualization / pretty printing](#data-visualization--pretty-printing)
|
* [C Remote debugging](#c-remote-debugging)
|
||||||
* [C++ Remote debugging](#c-remote-debugging)
|
* [C Remote launch and attach](#c-remote-launch-and-attach)
|
||||||
* [C++ Remote launch and attach](#c-remote-launch-and-attach)
|
|
||||||
* [Rust](#rust)
|
* [Rust](#rust)
|
||||||
* [Python](#python)
|
* [Python](#python)
|
||||||
* [Python Remote Debugging](#python-remote-debugging)
|
* [Python Remote Debugging](#python-remote-debugging)
|
||||||
* [Python Remote launch and attach](#python-remote-launch-and-attach)
|
* [Python Remote launch and attach](#python-remote-launch-and-attach)
|
||||||
|
* [Legacy: vscode-python](#legacy-vscode-python)
|
||||||
* [TCL](#tcl)
|
* [TCL](#tcl)
|
||||||
* [C♯](#c)
|
* [C♯](#c)
|
||||||
* [Go](#go)
|
* [Go](#go)
|
||||||
|
|
@ -77,7 +76,6 @@ For detailed explanation of the `.vimspector.json` format, see the
|
||||||
* [Debug cli application](#debug-cli-application)
|
* [Debug cli application](#debug-cli-application)
|
||||||
* [JavaScript, TypeScript, etc.](#javascript-typescript-etc)
|
* [JavaScript, TypeScript, etc.](#javascript-typescript-etc)
|
||||||
* [Java](#java)
|
* [Java](#java)
|
||||||
* [Hot code replace](#hot-code-replace)
|
|
||||||
* [Usage with YouCompleteMe](#usage-with-youcompleteme)
|
* [Usage with YouCompleteMe](#usage-with-youcompleteme)
|
||||||
* [Other LSP clients](#other-lsp-clients)
|
* [Other LSP clients](#other-lsp-clients)
|
||||||
* [Lua](#lua)
|
* [Lua](#lua)
|
||||||
|
|
@ -93,14 +91,14 @@ For detailed explanation of the `.vimspector.json` format, see the
|
||||||
* [Example](#example)
|
* [Example](#example)
|
||||||
* [FAQ](#faq)
|
* [FAQ](#faq)
|
||||||
|
|
||||||
<!-- Added by: ben, at: Fri 19 Mar 2021 22:57:28 GMT -->
|
<!-- Added by: ben, at: Sun 21 Feb 2021 21:15:32 GMT -->
|
||||||
|
|
||||||
<!--te-->
|
<!--te-->
|
||||||
|
|
||||||
# Features and Usage
|
# Features and Usage
|
||||||
|
|
||||||
The plugin is a capable Vim graphical debugger for multiple languages.
|
The plugin is a capable Vim graphical debugger for multiple languages.
|
||||||
It's mostly tested for C++, Python and TCL, but in theory supports any
|
It's mostly tested for c++, python and TCL, but in theory supports any
|
||||||
language that Visual Studio Code supports (but see caveats).
|
language that Visual Studio Code supports (but see caveats).
|
||||||
|
|
||||||
The [Vimspector website][website] has an overview of the UI, along with basic
|
The [Vimspector website][website] has an overview of the UI, along with basic
|
||||||
|
|
@ -145,24 +143,23 @@ runtime dependencies). They are categorised by their level of support:
|
||||||
* `Supported` : Fully supported, frequently used and manually tested
|
* `Supported` : Fully supported, frequently used and manually tested
|
||||||
* `Experimental`: Working, but not frequently used and rarely tested
|
* `Experimental`: Working, but not frequently used and rarely tested
|
||||||
* `Legacy`: No longer supported, please migrate your config
|
* `Legacy`: No longer supported, please migrate your config
|
||||||
* `Retired`: No longer included or supported.
|
|
||||||
|
|
||||||
| Language | Status | Switch (for `install_gadget.py`) | Adapter (for `:VimspectorInstall`) | Dependencies |
|
| Language | Status | Switch (for `install_gadget.py`) | Adapter (for `:VimspectorInstall`) | Dependencies |
|
||||||
|--------------------|-----------|----------------------------------|------------------------------------|--------------------------------------------|
|
|--------------------|--------------|------------------------------------|------------------------------------|--------------------------------------------|
|
||||||
| C, C++, Rust etc. | Tested | `--all` or `--enable-c` (or cpp) | vscode-cpptools | mono-core |
|
| C, C++, Rust etc. | Tested | `--all` or `--enable-c` (or cpp) | vscode-cpptools | mono-core |
|
||||||
| Rust, C, C++, etc. | Supported | `--force-enable-rust` | CodeLLDB | Python 3 |
|
| Rust, C, C++, etc. | Supported | `--force-enable-rust` | CodeLLDB | Python 3 |
|
||||||
| Python | Tested | `--all` or `--enable-python` | debugpy | Python 2.7 or Python 3 |
|
| Python | Tested | `--all` or `--enable-python` | debugpy | Python 2.7 or Python 3 |
|
||||||
| Go | Tested | `--enable-go` | vscode-go | Node, Go, [Delve][] |
|
| Go | Tested | `--enable-go` | vscode-go | Go, [Delve][] |
|
||||||
| TCL | Supported | `--all` or `--enable-tcl` | tclpro | TCL 8.5 |
|
| TCL | Supported | `--all` or `--enable-tcl` | tclpro | TCL 8.5 |
|
||||||
| Bourne Shell | Supported | `--all` or `--enable-bash` | vscode-bash-debug | Bash v?? |
|
| Bourne Shell | Supported | `--all` or `--enable-bash` | vscode-bash-debug | Bash v?? |
|
||||||
| Lua | Supported | `--all` or `--enable-lua` | local-lua-debugger-vscode | Node >=12.13.0, Npm, Lua interpreter |
|
| Lua | Supported | `--all` or `--enable-lua` | local-lua-debugger-vscode | Node >=12.13.0, Npm, Lua interpreter |
|
||||||
| Node.js | Supported | `--force-enable-node` | vscode-node-debug2 | 6 < Node < 12, Npm |
|
| Node.js | Supported | `--force-enable-node` | vscode-node-debug2 | 6 < Node < 12, Npm |
|
||||||
| Javascript | Supported | `--force-enable-chrome` | debugger-for-chrome | Chrome |
|
| Javascript | Supported | `--force-enable-chrome` | debugger-for-chrome | Chrome |
|
||||||
| Java | Supported | `--force-enable-java ` | vscode-java-debug | Compatible LSP plugin (see [later](#java)) |
|
| Java | Supported | `--force-enable-java ` | vscode-java-debug | Compatible LSP plugin (see [later](#java)) |
|
||||||
| C# (dotnet core) | Tested | `--force-enable-csharp` | netcoredbg | DotNet core |
|
| C# (dotnet core) | Experimental | `--force-enable-csharp` | netcoredbg | DotNet core |
|
||||||
| F#, VB, etc. | Supported | `--force-enable-[fsharp,vbnet]` | `, `--force-enable-vbnet` | netcoredbg | DotNet core |
|
| C# (mono) | Experimental | `--force-enable-csharp` | vscode-mono-debug | Mono |
|
||||||
| C# (mono) | _Retired_ | N/A | N/A | N/A |
|
| F#, VB, etc. | Experimental | `--force-enable-fsharp` (or vbnet) | netcoredbg | DotNet core |
|
||||||
| Python.legacy | _Retired_ | N/A | N/A | N/A |
|
| Python.legacy | Legacy | `--force-enable-python.legacy` | vscode-python | Node 10, Python 2.7 or Python 3 |
|
||||||
|
|
||||||
## Other languages
|
## Other languages
|
||||||
|
|
||||||
|
|
@ -291,7 +288,7 @@ If you just want to try out vimspector without changing your vim config, there
|
||||||
are example projects for a number of languages in `support/test`, including:
|
are example projects for a number of languages in `support/test`, including:
|
||||||
|
|
||||||
* Python (`support/test/python/simple_python`)
|
* Python (`support/test/python/simple_python`)
|
||||||
* Go (`support/test/go/hello_world` and `support/test/go/name-starts-with-vowel`)
|
* Go (`support/test/go/hello_world`)
|
||||||
* Nodejs (`support/test/node/simple`)
|
* Nodejs (`support/test/node/simple`)
|
||||||
* Chrome (`support/test/chrome/`)
|
* Chrome (`support/test/chrome/`)
|
||||||
* etc.
|
* etc.
|
||||||
|
|
@ -527,6 +524,13 @@ Example:
|
||||||
"${gadgetDir}/vscode-cpptools/debugAdapters/OpenDebugAD7"
|
"${gadgetDir}/vscode-cpptools/debugAdapters/OpenDebugAD7"
|
||||||
],
|
],
|
||||||
"name": "cppdbg"
|
"name": "cppdbg"
|
||||||
|
},
|
||||||
|
"vscode-python": {
|
||||||
|
"command": [
|
||||||
|
"node",
|
||||||
|
"${gadgetDir}/vscode-python/out/client/debugger/debugAdapter/main.js"
|
||||||
|
],
|
||||||
|
"name": "vscode-python"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -652,23 +656,18 @@ personal and so you should work out what you like and use vim's powerful mapping
|
||||||
features to set your own mappings. To that end, Vimspector defines the following
|
features to set your own mappings. To that end, Vimspector defines the following
|
||||||
`<Plug>` mappings:
|
`<Plug>` mappings:
|
||||||
|
|
||||||
| Mapping | Function | API |
|
* `<Plug>VimspectorContinue`
|
||||||
| --- | --- | --- |
|
* `<Plug>VimspectorStop`
|
||||||
| `<Plug>VimspectorContinue` | When debugging, continue. Otherwise start debugging. | `vimspector#Continue()` |
|
* `<Plug>VimspectorRestart`
|
||||||
| `<Plug>VimspectorStop` | Stop debugging. | `vimspector#Stop()` |
|
* `<Plug>VimspectorPause`
|
||||||
| `<Plug>VimpectorRestart` | Restart debugging with the same configuration. | `vimspector#Restart()` |
|
* `<Plug>VimspectorToggleBreakpoint`
|
||||||
| `<Plug>VimspectorPause` | Pause debuggee. | `vimspector#Pause()` |
|
* `<Plug>VimspectorToggleConditionalBreakpoint`
|
||||||
| `<Plug>VimspectorToggleBreakpoint` | Toggle line breakpoint on the current line. | `vimspector#ToggleBreakpoint()` |
|
* `<Plug>VimspectorAddFunctionBreakpoint`
|
||||||
| `<Plug>VimspectorToggleConditionalBreakpoint` | Toggle conditional line breakpoint on the current line. | `vimspector#ToggleBreakpoint( { trigger expr, hit count expr } )` |
|
* `<Plug>VimspectorStepOver`
|
||||||
| `<Plug>VimspectorAddFunctionBreakpoint` | Add a function breakpoint for the expression under cursor | `vimspector#AddFunctionBreakpoint( '<cexpr>' )` |
|
* `<Plug>VimspectorStepInto`
|
||||||
| `<Plug>VimspectorRunToCursor` | Run to Cursor | `vimspector#RunToCursor()` |
|
* `<Plug>VimspectorStepOut`
|
||||||
| `<Plug>VimspectorStepOver` | Step Over | `vimspector#StepOver()` |
|
* `<Plug>VimspectorRunToCursor`
|
||||||
| `<Plug>VimspectorStepInto` | Step Into | `vimspector#StepInto()` |
|
* `<Plug>VimspectorBalloonEval`
|
||||||
| `<Plug>VimspectorStepOut` | Step out of current function scope | `vimspector#StepOut()` |
|
|
||||||
| `<Plug>VimspectorUpFrame` | Move up a frame in the current call stack | `vimspector#UpFrame()` |
|
|
||||||
| `<Plug>VimspectorDownFrame` | Move down a frame in the current call stack | `vimspector#DownFrame()` |
|
|
||||||
| `<Plug>VimspectorBalloonEval` | Evaluate expression under cursor (or visual) in popup | *internal* |
|
|
||||||
|
|
||||||
|
|
||||||
These map roughly 1-1 with the API functions below.
|
These map roughly 1-1 with the API functions below.
|
||||||
|
|
||||||
|
|
@ -696,17 +695,17 @@ loading vimspector**:
|
||||||
let g:vimspector_enable_mappings = 'VISUAL_STUDIO'
|
let g:vimspector_enable_mappings = 'VISUAL_STUDIO'
|
||||||
```
|
```
|
||||||
|
|
||||||
| Key | Mapping | Function
|
| Key | Function | API |
|
||||||
| --- | --- | ---
|
| --- | --- | --- |
|
||||||
| `F5` | `<Plug>VimspectorContinue` | When debugging, continue. Otherwise start debugging.
|
| `F5` | When debugging, continue. Otherwise start debugging. | `vimspector#Continue()` |
|
||||||
| `Shift F5` | `<Plug>VimspectorStop` | Stop debugging.
|
| `Shift F5` | Stop debugging. | `vimspector#Stop()` |
|
||||||
| `Ctrl Shift F5` | `<Plug>VimspectorRestart` | Restart debugging with the same configuration.
|
| `Ctrl Shift F5` | Restart debugging with the same configuration. | `vimspector#Restart()` |
|
||||||
| `F6` | `<Plug>VimspectorPause` | Pause debuggee.
|
| `F6` | Pause debuggee. | `vimspector#Pause()` |
|
||||||
| `F9` | `<Plug>VimspectorToggleBreakpoint` | Toggle line breakpoint on the current line.
|
| `F9` | Toggle line breakpoint on the current line. | `vimspector#ToggleBreakpoint()` |
|
||||||
| `Shift F9` | `<Plug>VimspectorAddFunctionBreakpoint` | Add a function breakpoint for the expression under cursor
|
| `Shift F9` | Add a function breakpoint for the expression under cursor | `vimspector#AddFunctionBreakpoint( '<cexpr>' )` |
|
||||||
| `F10` | `<Plug>VimspectorStepOver` | Step Over
|
| `F10` | Step Over | `vimspector#StepOver()` |
|
||||||
| `F11` | `<Plug>VimspectorStepInto` | Step Into
|
| `F11` | Step Into | `vimspector#StepInto()` |
|
||||||
| `Shift F11` | `<Plug>VimspectorStepOut` | Step out of current function scope
|
| `Shift F11` | Step out of current function scope | `vimspector#StepOut()` |
|
||||||
|
|
||||||
## Human Mode
|
## Human Mode
|
||||||
|
|
||||||
|
|
@ -721,19 +720,19 @@ loading vimspector**:
|
||||||
let g:vimspector_enable_mappings = 'HUMAN'
|
let g:vimspector_enable_mappings = 'HUMAN'
|
||||||
```
|
```
|
||||||
|
|
||||||
| Key | Mapping | Function
|
| Key | Function | API |
|
||||||
| --- | --- | ---
|
| --- | --- | --- |
|
||||||
| `F5` | `<Plug>VimspectorContinue` | When debugging, continue. Otherwise start debugging.
|
| `F5` | When debugging, continue. Otherwise start debugging. | `vimspector#Continue()` |
|
||||||
| `F3` | `<Plug>VimspectorStop` | Stop debugging.
|
| `F3` | Stop debugging. | `vimspector#Stop()` |
|
||||||
| `F4` | `<Plug>VimspectorRestart` | Restart debugging with the same configuration.
|
| `F4` | Restart debugging with the same configuration. | `vimspector#Restart()` |
|
||||||
| `F6` | `<Plug>VimspectorPause` | Pause debuggee.
|
| `F6` | Pause debuggee. | `vimspector#Pause()` |
|
||||||
| `F9` | `<Plug>VimspectorToggleBreakpoint` | Toggle line breakpoint on the current line.
|
| `F9` | Toggle line breakpoint on the current line. | `vimspector#ToggleBreakpoint()` |
|
||||||
| `<leader>F9` | `<Plug>VimspectorToggleConditionalBreakpoint` | Toggle conditional line breakpoint on the current line.
|
| `<leader>F9` | Toggle conditional line breakpoint on the current line. | `vimspector#ToggleBreakpoint( { trigger expr, hit count expr } )` |
|
||||||
| `F8` | `<Plug>VimspectorAddFunctionBreakpoint` | Add a function breakpoint for the expression under cursor
|
| `F8` | Add a function breakpoint for the expression under cursor | `vimspector#AddFunctionBreakpoint( '<cexpr>' )` |
|
||||||
| `<leader>F8` | `<Plug>VimspectorRunToCursor` | Run to Cursor
|
| `<leader>F8` | Run to Cursor | `vimspector#RunToCursor()` |
|
||||||
| `F10` | `<Plug>VimspectorStepOver` | Step Over
|
| `F10` | Step Over | `vimspector#StepOver()` |
|
||||||
| `F11` | `<Plug>VimspectorStepInto` | Step Into
|
| `F11` | Step Into | `vimspector#StepInto()` |
|
||||||
| `F12` | `<Plug>VimspectorStepOut` | Step out of current function scope
|
| `F12` | Step out of current function scope | `vimspector#StepOut()` |
|
||||||
|
|
||||||
In addition, I recommend adding a mapping to `<Plug>VimspectorBalloonEval`, in
|
In addition, I recommend adding a mapping to `<Plug>VimspectorBalloonEval`, in
|
||||||
normal and visual modes, for example:
|
normal and visual modes, for example:
|
||||||
|
|
@ -747,13 +746,6 @@ nmap <Leader>di <Plug>VimspectorBalloonEval
|
||||||
xmap <Leader>di <Plug>VimspectorBalloonEval
|
xmap <Leader>di <Plug>VimspectorBalloonEval
|
||||||
```
|
```
|
||||||
|
|
||||||
You may also wish to add mappings for up/down the stack, for example:
|
|
||||||
|
|
||||||
```viml
|
|
||||||
nmap <LocalLeader><F11> <Plug>VimspectorUpFrame
|
|
||||||
nmap <LocalLeader><F12> <Plug>VimspectorDownFrame
|
|
||||||
```
|
|
||||||
|
|
||||||
# Usage and API
|
# Usage and API
|
||||||
|
|
||||||
This section defines detailed usage instructions, organised by feature. For most
|
This section defines detailed usage instructions, organised by feature. For most
|
||||||
|
|
@ -1008,8 +1000,6 @@ be changed manually to "switch to" that thread.
|
||||||
to set the "focussed" thread to the currently selected one. If the selected
|
to set the "focussed" thread to the currently selected one. If the selected
|
||||||
line is a stack frame, set the focussed thread to the thread of that frame and
|
line is a stack frame, set the focussed thread to the thread of that frame and
|
||||||
jump to that frame in the code window.
|
jump to that frame in the code window.
|
||||||
* The current frame when a breakpoint is hit or if manuall jumping is also
|
|
||||||
highlighted.
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
@ -1071,8 +1061,6 @@ information when something goes wrong that's not a Vim traceback.
|
||||||
If you just want to see the Vimspector log file, use `:VimspectorToggleLog`,
|
If you just want to see the Vimspector log file, use `:VimspectorToggleLog`,
|
||||||
which will tail it in a little window (doesn't work on Windows).
|
which will tail it in a little window (doesn't work on Windows).
|
||||||
|
|
||||||
You can see some debugging info with `:VimspectorDebugInfo`
|
|
||||||
|
|
||||||
## Closing debugger
|
## Closing debugger
|
||||||
|
|
||||||
To close the debugger, use:
|
To close the debugger, use:
|
||||||
|
|
@ -1177,38 +1165,6 @@ licensing.
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Data visualization / pretty printing
|
|
||||||
|
|
||||||
Depending on the backend you need to enable pretty printing of complex types manually.
|
|
||||||
|
|
||||||
* LLDB: Pretty printing is enabled by default
|
|
||||||
|
|
||||||
* GDB: To enable gdb pretty printers, consider the snippet below.
|
|
||||||
It is not enough to have `set print pretty on` in your .gdbinit!
|
|
||||||
|
|
||||||
```
|
|
||||||
{
|
|
||||||
"configurations": {
|
|
||||||
"Launch": {
|
|
||||||
"adapter": "vscode-cpptools",
|
|
||||||
"configuration": {
|
|
||||||
"request": "launch",
|
|
||||||
"program": "<path to binary>",
|
|
||||||
...
|
|
||||||
"MIMode": "gdb"
|
|
||||||
"setupCommands": [
|
|
||||||
{
|
|
||||||
"description": "Enable pretty-printing for gdb",
|
|
||||||
"text": "-enable-pretty-printing",
|
|
||||||
"ignoreFailures": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### C++ Remote debugging
|
### C++ Remote debugging
|
||||||
|
|
||||||
The cpptools documentation describes how to attach cpptools to gdbserver using
|
The cpptools documentation describes how to attach cpptools to gdbserver using
|
||||||
|
|
@ -1294,6 +1250,10 @@ Rust is supported with any gdb/lldb-based debugger. So it works fine with
|
||||||
headers/libs to build a C python extension for performance.
|
headers/libs to build a C python extension for performance.
|
||||||
* Full options: https://github.com/microsoft/debugpy/wiki/Debug-configuration-settings
|
* Full options: https://github.com/microsoft/debugpy/wiki/Debug-configuration-settings
|
||||||
|
|
||||||
|
|
||||||
|
**Migrating from `vscode-python`**: change `"adapter": "vscode-python"` to
|
||||||
|
`"adapter": "debugpy"`.
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"configurations": {
|
"configurations": {
|
||||||
|
|
@ -1360,6 +1320,34 @@ debugpy](https://github.com/microsoft/debugpy/wiki/Debugging-over-SSH).
|
||||||
If you're feeling fancy, checkout the [reference guide][remote-debugging] for
|
If you're feeling fancy, checkout the [reference guide][remote-debugging] for
|
||||||
an example of getting Vimspector to remotely launch and attach.
|
an example of getting Vimspector to remotely launch and attach.
|
||||||
|
|
||||||
|
### Legacy: vscode-python
|
||||||
|
|
||||||
|
* No longer installed by default - please pass `--force-enable-python.legacy` if
|
||||||
|
you just want to continue using your working setup.
|
||||||
|
* [vscode-python](https://github.com/Microsoft/vscode-python)
|
||||||
|
* NOTE: You must be running `node` 10. See [this issue](https://github.com/puremourning/vimspector/issues/105)
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"configurations": {
|
||||||
|
"<name>: Launch": {
|
||||||
|
"adapter": "vscode-python",
|
||||||
|
"configuration": {
|
||||||
|
"name": "<name>: Launch",
|
||||||
|
"type": "python",
|
||||||
|
"request": "launch",
|
||||||
|
"cwd": "<working directory>",
|
||||||
|
"stopOnEntry": true,
|
||||||
|
"console": "externalTerminal",
|
||||||
|
"debugOptions": [],
|
||||||
|
"program": "<path to main python file>"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
...
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## TCL
|
## TCL
|
||||||
|
|
||||||
* TCL (TclProDebug)
|
* TCL (TclProDebug)
|
||||||
|
|
@ -1383,8 +1371,35 @@ netcoredbg`
|
||||||
"program": "${workspaceRoot}/bin/Debug/netcoreapp2.2/csharp.dll",
|
"program": "${workspaceRoot}/bin/Debug/netcoreapp2.2/csharp.dll",
|
||||||
"args": [],
|
"args": [],
|
||||||
"stopAtEntry": true,
|
"stopAtEntry": true,
|
||||||
|
"cwd": "${workspaceRoot}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
* C# - mono
|
||||||
|
|
||||||
|
Install with `install_gadget.py --force-enable-csharp` or `:VimspectorInstall
|
||||||
|
vscode-mono-debug`.
|
||||||
|
|
||||||
|
***Known not to work.***
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"configurations": {
|
||||||
|
"launch - mono": {
|
||||||
|
"adapter": "vscode-mono-debug",
|
||||||
|
"configuration": {
|
||||||
|
"request": "launch",
|
||||||
|
"program": "${workspaceRoot}/bin/Debug/netcoreapp2.2/csharp.dll",
|
||||||
|
"args": [],
|
||||||
"cwd": "${workspaceRoot}",
|
"cwd": "${workspaceRoot}",
|
||||||
"env": {}
|
"runtimeExecutable": "mono",
|
||||||
|
"runtimeArgs": [],
|
||||||
|
"env": [],
|
||||||
|
"externalConsole": false,
|
||||||
|
"console": "integratedTerminal"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1401,8 +1416,6 @@ Requires:
|
||||||
* [Delve][delve-install] installed, e.g. `go get -u github.com/go-delve/delve/cmd/dlv`
|
* [Delve][delve-install] installed, e.g. `go get -u github.com/go-delve/delve/cmd/dlv`
|
||||||
* Delve to be in your PATH, or specify the `dlvToolPath` launch option
|
* Delve to be in your PATH, or specify the `dlvToolPath` launch option
|
||||||
|
|
||||||
NOTE: Vimspector uses the ["legacy" vscode-go debug adapter](https://github.com/golang/vscode-go/blob/master/docs/debugging-legacy.md) rather than the "built-in" DAP support in Delve. You can track https://github.com/puremourning/vimspector/issues/186 for that.
|
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"configurations": {
|
"configurations": {
|
||||||
|
|
@ -1420,7 +1433,7 @@ NOTE: Vimspector uses the ["legacy" vscode-go debug adapter](https://github.com/
|
||||||
```
|
```
|
||||||
|
|
||||||
See the vscode-go docs for
|
See the vscode-go docs for
|
||||||
[troubleshooting information](https://github.com/golang/vscode-go/blob/master/docs/debugging-legacy.md#troubleshooting)
|
[troubleshooting information](https://github.com/golang/vscode-go/blob/master/docs/debugging.md#troubleshooting)
|
||||||
|
|
||||||
## PHP
|
## PHP
|
||||||
|
|
||||||
|
|
@ -1566,20 +1579,6 @@ editor plugin to use Java. I recommend [YouCompleteMe][], which has full support
|
||||||
for jdt.ls, and most importantly a trivial way to load the debug adapter and to
|
for jdt.ls, and most importantly a trivial way to load the debug adapter and to
|
||||||
use it with Vimspector.
|
use it with Vimspector.
|
||||||
|
|
||||||
### Hot code replace
|
|
||||||
|
|
||||||
When using the [java debug server][java-debug-server], Vimspector supports the
|
|
||||||
hot code replace custom feature. By default, when the underlying class files
|
|
||||||
change, vimspector asks the user if they wish to reload these classes at
|
|
||||||
runtime.
|
|
||||||
|
|
||||||
This behaviour can be customised:
|
|
||||||
|
|
||||||
* `let g:ycm_java_hotcodereplace_mode = 'ask'` - the default, ask the user for
|
|
||||||
each reload.
|
|
||||||
* `let g:ycm_java_hotcodereplace_mode = 'always'` - don't ask, always reload
|
|
||||||
* `let g:ycm_java_hotcodereplace_mode = 'never'` - don't ask, never reload
|
|
||||||
|
|
||||||
### Usage with YouCompleteMe
|
### Usage with YouCompleteMe
|
||||||
|
|
||||||
* Set up [YCM for java][YcmJava].
|
* Set up [YCM for java][YcmJava].
|
||||||
|
|
@ -1739,26 +1738,22 @@ Vimsector uses them, they will not be replaced. So to customise the signs,
|
||||||
define them in your `vimrc`.
|
define them in your `vimrc`.
|
||||||
|
|
||||||
|
|
||||||
| Sign | Description | Priority |
|
| Sign | Description | Priority |
|
||||||
|---------------------------|-----------------------------------------|----------|
|
|------------------------|-------------------------------------|----------|
|
||||||
| `vimspectorBP` | Line breakpoint | 9 |
|
| `vimspectorBP` | Line breakpoint | 9 |
|
||||||
| `vimspectorBPCond` | Conditional line breakpoint | 9 |
|
| `vimspectorBPCond` | Conditional line breakpoint | 9 |
|
||||||
| `vimspectorBPDisabled` | Disabled breakpoint | 9 |
|
| `vimspectorBPDisabled` | Disabled breakpoint | 9 |
|
||||||
| `vimspectorPC` | Program counter (i.e. current line) | 200 |
|
| `vimspectorPC` | Program counter (i.e. current line) | 200 |
|
||||||
| `vimspectorPCBP` | Program counter and breakpoint | 200 |
|
| `vimspectorPCBP` | Program counter and breakpoint | 200 |
|
||||||
| `vimspectorCurrentThread` | Focussed thread in stack trace view | 200 |
|
|
||||||
| `vimspectorCurrentFrame` | Current stack frame in stack trace view | 200 |
|
|
||||||
|
|
||||||
The default symbols are the equivalent of something like the following:
|
The default symbols are the equivalent of something like the following:
|
||||||
|
|
||||||
```viml
|
```viml
|
||||||
sign define vimspectorBP text=\ ● texthl=WarningMsg
|
sign define vimspectorBP text=\ ● texthl=WarningMsg
|
||||||
sign define vimspectorBPCond text=\ ◆ texthl=WarningMsg
|
sign define vimspectorBPCond text=\ ◆ texthl=WarningMsg
|
||||||
sign define vimspectorBPDisabled text=\ ● texthl=LineNr
|
sign define vimspectorBPDisabled text=\ ● texthl=LineNr
|
||||||
sign define vimspectorPC text=\ ▶ texthl=MatchParen linehl=CursorLine
|
sign define vimspectorPC text=\ ▶ texthl=MatchParen linehl=CursorLine
|
||||||
sign define vimspectorPCBP text=●▶ texthl=MatchParen linehl=CursorLine
|
sign define vimspectorPCBP text=●▶ texthl=MatchParen linehl=CursorLine
|
||||||
sign define vimspectorCurrentThread text=▶ texthl=MatchParen linehl=CursorLine
|
|
||||||
sign define vimspectorCurrentFrame text=▶ texthl=Special linehl=CursorLine
|
|
||||||
```
|
```
|
||||||
|
|
||||||
If the signs don't display properly, your font probably doesn't contain these
|
If the signs don't display properly, your font probably doesn't contain these
|
||||||
|
|
@ -1766,13 +1761,11 @@ glyphs. You can easily change them by defining the sign in your vimrc. For
|
||||||
example, you could put this in your `vimrc` to use some simple ASCII symbols:
|
example, you could put this in your `vimrc` to use some simple ASCII symbols:
|
||||||
|
|
||||||
```viml
|
```viml
|
||||||
sign define vimspectorBP text=o texthl=WarningMsg
|
sign define vimspectorBP text=o texthl=WarningMsg
|
||||||
sign define vimspectorBPCond text=o? texthl=WarningMsg
|
sign define vimspectorBPCond text=o? texthl=WarningMsg
|
||||||
sign define vimspectorBPDisabled text=o! texthl=LineNr
|
sign define vimspectorBPDisabled text=o! texthl=LineNr
|
||||||
sign define vimspectorPC text=\ > texthl=MatchParen
|
sign define vimspectorPC text=\ > texthl=MatchParen
|
||||||
sign define vimspectorPCBP text=o> texthl=MatchParen
|
sign define vimspectorPCBP text=o> texthl=MatchParen
|
||||||
sign define vimspectorCurrentThread text=> texthl=MatchParen
|
|
||||||
sign define vimspectorCurrentFrame text=> texthl=Special
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Sign priority
|
## Sign priority
|
||||||
|
|
@ -2049,10 +2042,6 @@ hi link jsonComment Comment
|
||||||
Debug adapters (for some reason) send telemetry data to clients. Vimspector simply
|
Debug adapters (for some reason) send telemetry data to clients. Vimspector simply
|
||||||
displays this information in the output window. It *does not* and *will not ever*
|
displays this information in the output window. It *does not* and *will not ever*
|
||||||
collect, use, forward or otherwise share any data with any third parties.
|
collect, use, forward or otherwise share any data with any third parties.
|
||||||
10. Do I _have_ to put a `.vimspector.json` in the root of every project? No, you
|
|
||||||
can put all of your adapter and debug configs in a [single directory](https://puremourning.github.io/vimspector/configuration.html#debug-configurations) if you want to, but note
|
|
||||||
the caveat that `${workspaceRoot}` won't be calculated correctly in that case.
|
|
||||||
The vimsepctor author uses this [a lot](https://github.com/puremourning/.vim-mac/tree/master/vimspector-conf).
|
|
||||||
|
|
||||||
|
|
||||||
[ycmd]: https://github.com/Valloric/ycmd
|
[ycmd]: https://github.com/Valloric/ycmd
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,6 @@
|
||||||
" See the License for the specific language governing permissions and
|
" See the License for the specific language governing permissions and
|
||||||
" limitations under the License.
|
" limitations under the License.
|
||||||
|
|
||||||
if !has( 'python3' )
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Boilerplate {{{
|
" Boilerplate {{{
|
||||||
let s:save_cpo = &cpoptions
|
let s:save_cpo = &cpoptions
|
||||||
|
|
@ -223,6 +220,14 @@ function! vimspector#SetVariableValue( ... ) abort
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! vimspector#AddDataBreakpoint( ... ) abort
|
||||||
|
if !s:Enabled()
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
" TODO: how to set options?
|
||||||
|
py3 _vimspector_session.AddDataBreakpoint( {} )
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! vimspector#DeleteWatch() abort
|
function! vimspector#DeleteWatch() abort
|
||||||
if !s:Enabled()
|
if !s:Enabled()
|
||||||
return
|
return
|
||||||
|
|
@ -237,20 +242,6 @@ function! vimspector#GoToFrame() abort
|
||||||
py3 _vimspector_session.ExpandFrameOrThread()
|
py3 _vimspector_session.ExpandFrameOrThread()
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! vimspector#UpFrame() abort
|
|
||||||
if !s:Enabled()
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
py3 _vimspector_session.UpFrame()
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! vimspector#DownFrame() abort
|
|
||||||
if !s:Enabled()
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
py3 _vimspector_session.DownFrame()
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! vimspector#AddWatch( ... ) abort
|
function! vimspector#AddWatch( ... ) abort
|
||||||
if !s:Enabled()
|
if !s:Enabled()
|
||||||
return
|
return
|
||||||
|
|
@ -557,14 +548,6 @@ function! vimspector#ShowEvalBalloon( is_visual ) abort
|
||||||
\ . '", 0 )' )
|
\ . '", 0 )' )
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! vimspector#PrintDebugInfo() abort
|
|
||||||
if !s:Enabled()
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
|
|
||||||
py3 _vimspector_session.PrintDebugInfo()
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
|
|
||||||
" Boilerplate {{{
|
" Boilerplate {{{
|
||||||
let &cpoptions=s:save_cpo
|
let &cpoptions=s:save_cpo
|
||||||
|
|
|
||||||
|
|
@ -69,9 +69,14 @@ function! vimspector#internal#balloon#CreateTooltip( is_hover, ... ) abort
|
||||||
\ 'resize': 1,
|
\ 'resize': 1,
|
||||||
\ 'close': 'button',
|
\ 'close': 'button',
|
||||||
\ 'callback': 'vimspector#internal#balloon#CloseCallback',
|
\ 'callback': 'vimspector#internal#balloon#CloseCallback',
|
||||||
|
\ 'mapping': 0
|
||||||
\ }
|
\ }
|
||||||
|
|
||||||
let config = vimspector#internal#popup#SetBorderChars( config )
|
" When ambiwidth is single, use prettier characters for the border. This
|
||||||
|
" would look silly when ambiwidth is double.
|
||||||
|
if &ambiwidth ==# 'single' && &encoding ==? 'utf-8'
|
||||||
|
let config[ 'borderchars' ] = [ '─', '│', '─', '│', '╭', '╮', '┛', '╰' ]
|
||||||
|
endif
|
||||||
|
|
||||||
if a:is_hover
|
if a:is_hover
|
||||||
let config[ 'filter' ] = 'vimspector#internal#balloon#MouseFilter'
|
let config[ 'filter' ] = 'vimspector#internal#balloon#MouseFilter'
|
||||||
|
|
@ -81,7 +86,6 @@ function! vimspector#internal#balloon#CreateTooltip( is_hover, ... ) abort
|
||||||
let config[ 'filter' ] = 'vimspector#internal#balloon#CursorFilter'
|
let config[ 'filter' ] = 'vimspector#internal#balloon#CursorFilter'
|
||||||
let config[ 'moved' ] = 'any'
|
let config[ 'moved' ] = 'any'
|
||||||
let config[ 'cursorline' ] = 1
|
let config[ 'cursorline' ] = 1
|
||||||
let config[ 'mapping' ] = 0
|
|
||||||
let s:popup_win_id = popup_atcursor( body, config )
|
let s:popup_win_id = popup_atcursor( body, config )
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -159,16 +159,15 @@ function! s:_OnCommandEvent( category, id, data, event ) abort
|
||||||
call setbufvar( buffer, '&modified', 0 )
|
call setbufvar( buffer, '&modified', 0 )
|
||||||
endtry
|
endtry
|
||||||
|
|
||||||
" if the buffer is visible, scroll it, but don't allow autocommands to fire,
|
" if the buffer is visible, scroll it
|
||||||
" as this may close the current window!
|
|
||||||
let w = bufwinnr( buffer )
|
let w = bufwinnr( buffer )
|
||||||
if w > 0
|
if w > 0
|
||||||
let cw = winnr()
|
let cw = winnr()
|
||||||
try
|
try
|
||||||
noautocmd execute w . 'wincmd w'
|
execute w . 'wincmd w'
|
||||||
noautocmd normal! Gz-
|
normal! Gz-
|
||||||
finally
|
finally
|
||||||
noautocmd execute cw . 'wincmd w'
|
execute cw . 'wincmd w'
|
||||||
endtry
|
endtry
|
||||||
endif
|
endif
|
||||||
elseif a:event ==# 'exit'
|
elseif a:event ==# 'exit'
|
||||||
|
|
|
||||||
|
|
@ -82,54 +82,26 @@ endfunction
|
||||||
|
|
||||||
function! vimspector#internal#neopopup#Confirm( confirm_id,
|
function! vimspector#internal#neopopup#Confirm( confirm_id,
|
||||||
\ text,
|
\ text,
|
||||||
\ options,
|
\ default_value ) abort
|
||||||
\ default_value,
|
let result = confirm( a:text, '&Yes &No &Default', 3 )
|
||||||
\ keys ) abort
|
|
||||||
|
|
||||||
" Neovim doesn't have an equivalent of popup_dialog, and it's way too much
|
" Map the results to what popup_menu_filter would return (ok s:ConfirmCallback
|
||||||
" effort to write one, so we just use confirm()...
|
" in popup.vim)
|
||||||
" Annoyingly we can't use confirm() here because for some reason it doesn't
|
if result == 2
|
||||||
" render properly in a channel callback. So we use input() and mimic dialog
|
" No is represented as 0
|
||||||
" behaviour.
|
let result = 0
|
||||||
let prompt = a:text
|
elseif result == 0
|
||||||
for opt in a:options
|
|
||||||
let prompt .= ' ' . opt
|
|
||||||
endfor
|
|
||||||
let prompt .= ': '
|
|
||||||
|
|
||||||
try
|
|
||||||
let result = input( prompt, a:keys[ a:default_value - 1 ] )
|
|
||||||
catch /.*/
|
|
||||||
let result = -1
|
|
||||||
endtry
|
|
||||||
|
|
||||||
" Map the results to what the vim popup stuff would return (s:ConfirmCallback
|
|
||||||
" in popup.vim), i.e.:
|
|
||||||
" - 1-based index of selected item, or
|
|
||||||
" - -1 or 0 for cancellation
|
|
||||||
if result == ''
|
|
||||||
" User pressed ESC/ctrl-c
|
" User pressed ESC/ctrl-c
|
||||||
let result = -1
|
let result = -1
|
||||||
else
|
elseif result == 3
|
||||||
let index = 1
|
" Default
|
||||||
for k in a:keys
|
let result = a:default_value
|
||||||
if k ==? result
|
|
||||||
let result = index
|
|
||||||
break
|
|
||||||
endif
|
|
||||||
let index += 1
|
|
||||||
endfor
|
|
||||||
|
|
||||||
if index > len( a:keys )
|
|
||||||
let result = -1
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
py3 __import__( 'vimspector', fromlist = [ 'utils' ] ).utils.ConfirmCallback(
|
py3 __import__( 'vimspector', fromlist = [ 'utils' ] ).utils.ConfirmCallback(
|
||||||
\ int( vim.eval( 'a:confirm_id' ) ),
|
\ int( vim.eval( 'a:confirm_id' ) ),
|
||||||
\ int( vim.eval( 'result' ) ) )
|
\ int( vim.eval( 'result' ) ) )
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Boilerplate {{{
|
" Boilerplate {{{
|
||||||
let &cpoptions=s:save_cpo
|
let &cpoptions=s:save_cpo
|
||||||
unlet s:save_cpo
|
unlet s:save_cpo
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@
|
||||||
" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
" See the License for the specific language governing permissions and
|
" See the License for the specific language governing permissions and
|
||||||
" limitations under the License.
|
" limitations under the License.
|
||||||
scriptencoding utf-8
|
|
||||||
|
|
||||||
|
|
||||||
" Boilerplate {{{
|
" Boilerplate {{{
|
||||||
|
|
@ -33,42 +32,12 @@ function! vimspector#internal#popup#HideSplash( id ) abort
|
||||||
call popup_hide( a:id )
|
call popup_hide( a:id )
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
let s:current_selection = 0
|
function! s:YesNoDefaultFilter( default_value, id, key ) abort
|
||||||
let s:selections = []
|
if a:key ==# "\<CR>" || a:key ==# 'D' || a:key ==# 'd'
|
||||||
let s:text = []
|
call popup_close( a:id, a:default_value )
|
||||||
|
|
||||||
function! s:UpdatePopup( id ) abort
|
|
||||||
let buf = copy( s:text )
|
|
||||||
call extend( buf, s:DrawButtons() )
|
|
||||||
call popup_settext( a:id, buf )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:ConfirmKeyFilter( keys, id, key ) abort
|
|
||||||
if a:key ==# "\<CR>"
|
|
||||||
call popup_close( a:id, s:current_selection + 1 )
|
|
||||||
return 1
|
|
||||||
elseif index( [ "\<Tab>", "\<Right>" ], a:key ) >= 0
|
|
||||||
let s:current_selection = ( s:current_selection + 1 ) % len( s:selections )
|
|
||||||
call s:UpdatePopup( a:id )
|
|
||||||
return 1
|
|
||||||
elseif index( [ "\<S-Tab>", "\<Left>" ], a:key ) >= 0
|
|
||||||
let s:current_selection = s:current_selection == 0
|
|
||||||
\ ? len( s:selections ) - 1: s:current_selection - 1
|
|
||||||
call s:UpdatePopup( a:id )
|
|
||||||
return 1
|
|
||||||
elseif a:key ==# "\<Esc>" || a:key ==# "\<C-c>"
|
|
||||||
call popup_close( a:id, -1 )
|
|
||||||
return 1
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let index = 1
|
return popup_filter_yesno( a:id, a:key )
|
||||||
for key in a:keys
|
|
||||||
if a:key ==? key
|
|
||||||
call popup_close( a:id, index )
|
|
||||||
return 1
|
|
||||||
endif
|
|
||||||
let index += 1
|
|
||||||
endfor
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:ConfirmCallback( confirm_id, id, result ) abort
|
function! s:ConfirmCallback( confirm_id, id, result ) abort
|
||||||
|
|
@ -77,68 +46,22 @@ function! s:ConfirmCallback( confirm_id, id, result ) abort
|
||||||
\ int( vim.eval( 'a:result' ) ) )
|
\ int( vim.eval( 'a:result' ) ) )
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:SelectionPosition( idx ) abort
|
|
||||||
return a:idx == 0 ? 0 : len( join( s:selections[ : a:idx - 1 ], ' ' ) ) + 1
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:DrawButtons() abort
|
|
||||||
return [ {
|
|
||||||
\ 'text': join( s:selections, ' ' ),
|
|
||||||
\ 'props': [
|
|
||||||
\ {
|
|
||||||
\ 'col': s:SelectionPosition( s:current_selection ) + 1,
|
|
||||||
\ 'length': len( s:selections[ s:current_selection ] ),
|
|
||||||
\ 'type': 'VimspectorSelectedItem'
|
|
||||||
\ },
|
|
||||||
\ ]
|
|
||||||
\ } ]
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! vimspector#internal#popup#Confirm(
|
function! vimspector#internal#popup#Confirm(
|
||||||
\ confirm_id,
|
\ confirm_id,
|
||||||
\ text,
|
\ text,
|
||||||
\ options,
|
\ default_value ) abort
|
||||||
\ default_value,
|
let text = a:text
|
||||||
\ keys ) abort
|
if type( a:text ) != v:t_list
|
||||||
|
let text = [ a:text ]
|
||||||
silent! call prop_type_add( 'VimspectorSelectedItem', {
|
|
||||||
\ 'highlight': 'PMenuSel'
|
|
||||||
\ } )
|
|
||||||
|
|
||||||
let lines = split( a:text, "\n", v:true )
|
|
||||||
let buf = []
|
|
||||||
for line in lines
|
|
||||||
call add( buf, { 'text': line, 'props': [] } )
|
|
||||||
endfor
|
|
||||||
|
|
||||||
call add( buf, { 'text': '', 'props': [] } )
|
|
||||||
|
|
||||||
let s:selections = a:options
|
|
||||||
let s:current_selection = ( a:default_value - 1 )
|
|
||||||
|
|
||||||
let s:text = copy( buf )
|
|
||||||
call extend( buf, s:DrawButtons() )
|
|
||||||
|
|
||||||
let config = {
|
|
||||||
\ 'callback': function( 's:ConfirmCallback', [ a:confirm_id ] ),
|
|
||||||
\ 'filter': function( 's:ConfirmKeyFilter', [ a:keys ] ),
|
|
||||||
\ 'mapping': v:false,
|
|
||||||
\ }
|
|
||||||
let config = vimspector#internal#popup#SetBorderChars( config )
|
|
||||||
|
|
||||||
return popup_dialog( buf, config )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! vimspector#internal#popup#SetBorderChars( config ) abort
|
|
||||||
" When ambiwidth is single, use prettier characters for the border. This
|
|
||||||
" would look silly when ambiwidth is double.
|
|
||||||
if &ambiwidth ==# 'single' && &encoding ==? 'utf-8'
|
|
||||||
let a:config[ 'borderchars' ] = [ '─', '│', '─', '│', '╭', '╮', '┛', '╰' ]
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return a:config
|
call extend( text, [ '', '(Y)es (N)o (D)efault' ] )
|
||||||
endfunction
|
|
||||||
|
|
||||||
|
return popup_dialog( text, {
|
||||||
|
\ 'callback': function( 's:ConfirmCallback', [ a:confirm_id ] ),
|
||||||
|
\ 'filter': function( 's:YesNoDefaultFilter', [ a:default_value ] )
|
||||||
|
\ } )
|
||||||
|
endfunction
|
||||||
|
|
||||||
" Boilerplate {{{
|
" Boilerplate {{{
|
||||||
let &cpoptions=s:save_cpo
|
let &cpoptions=s:save_cpo
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
2394
doc/vimspector.txt
2394
doc/vimspector.txt
File diff suppressed because it is too large
Load diff
|
|
@ -1,13 +1,13 @@
|
||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
activesupport (6.0.3.6)
|
activesupport (6.0.3.4)
|
||||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||||
i18n (>= 0.7, < 2)
|
i18n (>= 0.7, < 2)
|
||||||
minitest (~> 5.1)
|
minitest (~> 5.1)
|
||||||
tzinfo (~> 1.1)
|
tzinfo (~> 1.1)
|
||||||
zeitwerk (~> 2.2, >= 2.2.2)
|
zeitwerk (~> 2.2, >= 2.2.2)
|
||||||
addressable (2.8.0)
|
addressable (2.7.0)
|
||||||
public_suffix (>= 2.0.2, < 5.0)
|
public_suffix (>= 2.0.2, < 5.0)
|
||||||
coffee-script (2.4.1)
|
coffee-script (2.4.1)
|
||||||
coffee-script-source
|
coffee-script-source
|
||||||
|
|
@ -16,7 +16,7 @@ GEM
|
||||||
colorator (1.1.0)
|
colorator (1.1.0)
|
||||||
commonmarker (0.17.13)
|
commonmarker (0.17.13)
|
||||||
ruby-enum (~> 0.5)
|
ruby-enum (~> 0.5)
|
||||||
concurrent-ruby (1.1.8)
|
concurrent-ruby (1.1.7)
|
||||||
dnsruby (1.61.5)
|
dnsruby (1.61.5)
|
||||||
simpleidn (~> 0.1)
|
simpleidn (~> 0.1)
|
||||||
em-websocket (0.5.2)
|
em-websocket (0.5.2)
|
||||||
|
|
@ -30,12 +30,12 @@ GEM
|
||||||
faraday-net_http (~> 1.0)
|
faraday-net_http (~> 1.0)
|
||||||
multipart-post (>= 1.2, < 3)
|
multipart-post (>= 1.2, < 3)
|
||||||
ruby2_keywords
|
ruby2_keywords
|
||||||
faraday-net_http (1.0.1)
|
faraday-net_http (1.0.0)
|
||||||
ffi (1.15.0)
|
ffi (1.14.2)
|
||||||
forwardable-extended (2.6.0)
|
forwardable-extended (2.6.0)
|
||||||
gemoji (3.0.1)
|
gemoji (3.0.1)
|
||||||
github-pages (214)
|
github-pages (209)
|
||||||
github-pages-health-check (= 1.17.0)
|
github-pages-health-check (= 1.16.1)
|
||||||
jekyll (= 3.9.0)
|
jekyll (= 3.9.0)
|
||||||
jekyll-avatar (= 0.7.0)
|
jekyll-avatar (= 0.7.0)
|
||||||
jekyll-coffeescript (= 1.1.1)
|
jekyll-coffeescript (= 1.1.1)
|
||||||
|
|
@ -50,9 +50,9 @@ GEM
|
||||||
jekyll-readme-index (= 0.3.0)
|
jekyll-readme-index (= 0.3.0)
|
||||||
jekyll-redirect-from (= 0.16.0)
|
jekyll-redirect-from (= 0.16.0)
|
||||||
jekyll-relative-links (= 0.6.1)
|
jekyll-relative-links (= 0.6.1)
|
||||||
jekyll-remote-theme (= 0.4.3)
|
jekyll-remote-theme (= 0.4.2)
|
||||||
jekyll-sass-converter (= 1.5.2)
|
jekyll-sass-converter (= 1.5.2)
|
||||||
jekyll-seo-tag (= 2.7.1)
|
jekyll-seo-tag (= 2.6.1)
|
||||||
jekyll-sitemap (= 1.4.0)
|
jekyll-sitemap (= 1.4.0)
|
||||||
jekyll-swiss (= 1.0.0)
|
jekyll-swiss (= 1.0.0)
|
||||||
jekyll-theme-architect (= 0.1.1)
|
jekyll-theme-architect (= 0.1.1)
|
||||||
|
|
@ -70,19 +70,19 @@ GEM
|
||||||
jekyll-theme-time-machine (= 0.1.1)
|
jekyll-theme-time-machine (= 0.1.1)
|
||||||
jekyll-titles-from-headings (= 0.5.3)
|
jekyll-titles-from-headings (= 0.5.3)
|
||||||
jemoji (= 0.12.0)
|
jemoji (= 0.12.0)
|
||||||
kramdown (= 2.3.1)
|
kramdown (= 2.3.0)
|
||||||
kramdown-parser-gfm (= 1.1.0)
|
kramdown-parser-gfm (= 1.1.0)
|
||||||
liquid (= 4.0.3)
|
liquid (= 4.0.3)
|
||||||
mercenary (~> 0.3)
|
mercenary (~> 0.3)
|
||||||
minima (= 2.5.1)
|
minima (= 2.5.1)
|
||||||
nokogiri (>= 1.10.4, < 2.0)
|
nokogiri (>= 1.10.4, < 2.0)
|
||||||
rouge (= 3.26.0)
|
rouge (= 3.23.0)
|
||||||
terminal-table (~> 1.4)
|
terminal-table (~> 1.4)
|
||||||
github-pages-health-check (1.17.0)
|
github-pages-health-check (1.16.1)
|
||||||
addressable (~> 2.3)
|
addressable (~> 2.3)
|
||||||
dnsruby (~> 1.60)
|
dnsruby (~> 1.60)
|
||||||
octokit (~> 4.0)
|
octokit (~> 4.0)
|
||||||
public_suffix (>= 2.0.2, < 5.0)
|
public_suffix (~> 3.0)
|
||||||
typhoeus (~> 1.3)
|
typhoeus (~> 1.3)
|
||||||
html-pipeline (2.14.0)
|
html-pipeline (2.14.0)
|
||||||
activesupport (>= 2)
|
activesupport (>= 2)
|
||||||
|
|
@ -136,15 +136,15 @@ GEM
|
||||||
jekyll (>= 3.3, < 5.0)
|
jekyll (>= 3.3, < 5.0)
|
||||||
jekyll-relative-links (0.6.1)
|
jekyll-relative-links (0.6.1)
|
||||||
jekyll (>= 3.3, < 5.0)
|
jekyll (>= 3.3, < 5.0)
|
||||||
jekyll-remote-theme (0.4.3)
|
jekyll-remote-theme (0.4.2)
|
||||||
addressable (~> 2.0)
|
addressable (~> 2.0)
|
||||||
jekyll (>= 3.5, < 5.0)
|
jekyll (>= 3.5, < 5.0)
|
||||||
jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0)
|
jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0)
|
||||||
rubyzip (>= 1.3.0, < 3.0)
|
rubyzip (>= 1.3.0, < 3.0)
|
||||||
jekyll-sass-converter (1.5.2)
|
jekyll-sass-converter (1.5.2)
|
||||||
sass (~> 3.4)
|
sass (~> 3.4)
|
||||||
jekyll-seo-tag (2.7.1)
|
jekyll-seo-tag (2.6.1)
|
||||||
jekyll (>= 3.8, < 5.0)
|
jekyll (>= 3.3, < 5.0)
|
||||||
jekyll-sitemap (1.4.0)
|
jekyll-sitemap (1.4.0)
|
||||||
jekyll (>= 3.7, < 5.0)
|
jekyll (>= 3.7, < 5.0)
|
||||||
jekyll-swiss (1.0.0)
|
jekyll-swiss (1.0.0)
|
||||||
|
|
@ -196,23 +196,23 @@ GEM
|
||||||
gemoji (~> 3.0)
|
gemoji (~> 3.0)
|
||||||
html-pipeline (~> 2.2)
|
html-pipeline (~> 2.2)
|
||||||
jekyll (>= 3.0, < 5.0)
|
jekyll (>= 3.0, < 5.0)
|
||||||
kramdown (2.3.1)
|
kramdown (2.3.0)
|
||||||
rexml
|
rexml
|
||||||
kramdown-parser-gfm (1.1.0)
|
kramdown-parser-gfm (1.1.0)
|
||||||
kramdown (~> 2.0)
|
kramdown (~> 2.0)
|
||||||
liquid (4.0.3)
|
liquid (4.0.3)
|
||||||
listen (3.5.1)
|
listen (3.4.0)
|
||||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||||
rb-inotify (~> 0.9, >= 0.9.10)
|
rb-inotify (~> 0.9, >= 0.9.10)
|
||||||
mercenary (0.3.6)
|
mercenary (0.3.6)
|
||||||
mini_portile2 (2.5.1)
|
mini_portile2 (2.5.0)
|
||||||
minima (2.5.1)
|
minima (2.5.1)
|
||||||
jekyll (>= 3.5, < 5.0)
|
jekyll (>= 3.5, < 5.0)
|
||||||
jekyll-feed (~> 0.9)
|
jekyll-feed (~> 0.9)
|
||||||
jekyll-seo-tag (~> 2.1)
|
jekyll-seo-tag (~> 2.1)
|
||||||
minitest (5.14.4)
|
minitest (5.14.3)
|
||||||
multipart-post (2.1.1)
|
multipart-post (2.1.1)
|
||||||
nokogiri (1.11.5)
|
nokogiri (1.11.1)
|
||||||
mini_portile2 (~> 2.5.0)
|
mini_portile2 (~> 2.5.0)
|
||||||
racc (~> 1.4)
|
racc (~> 1.4)
|
||||||
octokit (4.20.0)
|
octokit (4.20.0)
|
||||||
|
|
@ -220,16 +220,16 @@ GEM
|
||||||
sawyer (~> 0.8.0, >= 0.5.3)
|
sawyer (~> 0.8.0, >= 0.5.3)
|
||||||
pathutil (0.16.2)
|
pathutil (0.16.2)
|
||||||
forwardable-extended (~> 2.6)
|
forwardable-extended (~> 2.6)
|
||||||
public_suffix (4.0.6)
|
public_suffix (3.1.1)
|
||||||
racc (1.5.2)
|
racc (1.5.2)
|
||||||
rb-fsevent (0.10.4)
|
rb-fsevent (0.10.4)
|
||||||
rb-inotify (0.10.1)
|
rb-inotify (0.10.1)
|
||||||
ffi (~> 1.0)
|
ffi (~> 1.0)
|
||||||
rexml (3.2.5)
|
rexml (3.2.4)
|
||||||
rouge (3.26.0)
|
rouge (3.23.0)
|
||||||
ruby-enum (0.9.0)
|
ruby-enum (0.8.0)
|
||||||
i18n
|
i18n
|
||||||
ruby2_keywords (0.0.4)
|
ruby2_keywords (0.0.2)
|
||||||
rubyzip (2.3.0)
|
rubyzip (2.3.0)
|
||||||
safe_yaml (1.0.5)
|
safe_yaml (1.0.5)
|
||||||
sass (3.7.4)
|
sass (3.7.4)
|
||||||
|
|
@ -240,7 +240,7 @@ GEM
|
||||||
sawyer (0.8.2)
|
sawyer (0.8.2)
|
||||||
addressable (>= 2.3.5)
|
addressable (>= 2.3.5)
|
||||||
faraday (> 0.8, < 2.0)
|
faraday (> 0.8, < 2.0)
|
||||||
simpleidn (0.2.1)
|
simpleidn (0.1.1)
|
||||||
unf (~> 0.1.4)
|
unf (~> 0.1.4)
|
||||||
terminal-table (1.8.0)
|
terminal-table (1.8.0)
|
||||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||||
|
|
|
||||||
|
|
@ -271,7 +271,7 @@ JSON value `true`, and the suffix is stripped fom the key, resulting in the
|
||||||
following:
|
following:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"stopOnEntry": true
|
"stopOnEntry#json": true
|
||||||
```
|
```
|
||||||
|
|
||||||
Which is what we need.
|
Which is what we need.
|
||||||
|
|
@ -722,7 +722,7 @@ Vimspector then orchestrates the various tools to set you up.
|
||||||
"variables": {
|
"variables": {
|
||||||
// Just an example of how to specify a variable manually rather than
|
// Just an example of how to specify a variable manually rather than
|
||||||
// vimspector asking for input from the user
|
// vimspector asking for input from the user
|
||||||
"ServiceName": "${fileBasenameNoExtension}"
|
"ServiceName": "${fileBasenameNoExtention}"
|
||||||
},
|
},
|
||||||
|
|
||||||
"adapter": "python-remote",
|
"adapter": "python-remote",
|
||||||
|
|
|
||||||
|
|
@ -13,13 +13,6 @@
|
||||||
" See the License for the specific language governing permissions and
|
" See the License for the specific language governing permissions and
|
||||||
" limitations under the License.
|
" limitations under the License.
|
||||||
|
|
||||||
if !has( 'python3' )
|
|
||||||
echohl WarningMsg
|
|
||||||
echom 'Vimspector unavailable: Requires Vim compiled with +python3'
|
|
||||||
echohl None
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Boilerplate {{{
|
" Boilerplate {{{
|
||||||
let s:save_cpo = &cpoptions
|
let s:save_cpo = &cpoptions
|
||||||
set cpoptions&vim
|
set cpoptions&vim
|
||||||
|
|
@ -76,11 +69,6 @@ nnoremap <silent> <Plug>VimspectorBalloonEval
|
||||||
xnoremap <silent> <Plug>VimspectorBalloonEval
|
xnoremap <silent> <Plug>VimspectorBalloonEval
|
||||||
\ :<c-u>call vimspector#ShowEvalBalloon( 1 )<CR>
|
\ :<c-u>call vimspector#ShowEvalBalloon( 1 )<CR>
|
||||||
|
|
||||||
nnoremap <silent> <Plug>VimspectorUpFrame
|
|
||||||
\ :<c-u>call vimspector#UpFrame()<CR>
|
|
||||||
nnoremap <silent> <Plug>VimspectorDownFrame
|
|
||||||
\ :<c-u>call vimspector#DownFrame()<CR>
|
|
||||||
|
|
||||||
if s:mappings ==# 'VISUAL_STUDIO'
|
if s:mappings ==# 'VISUAL_STUDIO'
|
||||||
nmap <F5> <Plug>VimspectorContinue
|
nmap <F5> <Plug>VimspectorContinue
|
||||||
nmap <S-F5> <Plug>VimspectorStop
|
nmap <S-F5> <Plug>VimspectorStop
|
||||||
|
|
@ -115,9 +103,6 @@ command! -bar -nargs=? -complete=custom,vimspector#CompleteOutput
|
||||||
command! -bar
|
command! -bar
|
||||||
\ VimspectorToggleLog
|
\ VimspectorToggleLog
|
||||||
\ call vimspector#ToggleLog()
|
\ call vimspector#ToggleLog()
|
||||||
command! -bar
|
|
||||||
\ VimspectorDebugInfo
|
|
||||||
\ call vimspector#PrintDebugInfo()
|
|
||||||
command! -nargs=1 -complete=custom,vimspector#CompleteExpr
|
command! -nargs=1 -complete=custom,vimspector#CompleteExpr
|
||||||
\ VimspectorEval
|
\ VimspectorEval
|
||||||
\ call vimspector#Evaluate( <f-args> )
|
\ call vimspector#Evaluate( <f-args> )
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@ class ProjectBreakpoints( object ):
|
||||||
self._func_breakpoints = []
|
self._func_breakpoints = []
|
||||||
self._exception_breakpoints = None
|
self._exception_breakpoints = None
|
||||||
self._configured_breakpoints = {}
|
self._configured_breakpoints = {}
|
||||||
|
self._data_breakponts = []
|
||||||
|
|
||||||
# FIXME: Remove this. Remove breakpoints nonesense from code.py
|
# FIXME: Remove this. Remove breakpoints nonesense from code.py
|
||||||
self._breakpoints_handler = None
|
self._breakpoints_handler = None
|
||||||
|
|
@ -270,6 +271,18 @@ class ProjectBreakpoints( object ):
|
||||||
|
|
||||||
# TODO: We don't really have aanything to update here, but if we're going to
|
# TODO: We don't really have aanything to update here, but if we're going to
|
||||||
# have a UI list of them we should update that at this point
|
# have a UI list of them we should update that at this point
|
||||||
|
# but note that while debugging, this is when we actually _send_ the
|
||||||
|
# breakpoints.
|
||||||
|
self.UpdateUI()
|
||||||
|
|
||||||
|
|
||||||
|
def AddDataBreakpoint( self, dataId, options ):
|
||||||
|
self._data_breakponts.append( {
|
||||||
|
'state': 'ENABLED',
|
||||||
|
'dataId': dataId,
|
||||||
|
'options': options,
|
||||||
|
} )
|
||||||
|
|
||||||
self.UpdateUI()
|
self.UpdateUI()
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -402,6 +415,27 @@ class ProjectBreakpoints( object ):
|
||||||
failure_handler = response_received
|
failure_handler = response_received
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if self._data_breakponts and self._server_capabilities[
|
||||||
|
'supportsDataBreakpoints' ]:
|
||||||
|
awaiting += 1
|
||||||
|
breakpoints = []
|
||||||
|
for bp in self._data_breakponts:
|
||||||
|
if bp[ 'state' ] != 'ENABLED':
|
||||||
|
continue
|
||||||
|
data_bp = {}
|
||||||
|
data_bp.update( bp[ 'options' ] )
|
||||||
|
data_bp[ 'dataId' ] = bp[ 'dataId' ]
|
||||||
|
breakpoints.append( data_bp )
|
||||||
|
|
||||||
|
self._connection.DoRequest(
|
||||||
|
lambda msg: response_handler( None, None ),
|
||||||
|
{
|
||||||
|
'command': 'setDataBreakpoints',
|
||||||
|
'arguments': breakpoints,
|
||||||
|
},
|
||||||
|
failure_handler = response_received
|
||||||
|
)
|
||||||
|
|
||||||
if self._exception_breakpoints:
|
if self._exception_breakpoints:
|
||||||
awaiting = awaiting + 1
|
awaiting = awaiting + 1
|
||||||
self._connection.DoRequest(
|
self._connection.DoRequest(
|
||||||
|
|
@ -494,6 +528,11 @@ class ProjectBreakpoints( object ):
|
||||||
file_name,
|
file_name,
|
||||||
bp[ 'line' ] )
|
bp[ 'line' ] )
|
||||||
|
|
||||||
|
# TODO could/should we show a sign in the variables view when there's a data
|
||||||
|
# brakpoint on the variable? Not sure how best to actually do that, but
|
||||||
|
# maybe the variable view can pass that info when calling AddDataBreakpoint,
|
||||||
|
# such as the variablesReference/name
|
||||||
|
|
||||||
|
|
||||||
def _SignToLine( self, file_name, bp ):
|
def _SignToLine( self, file_name, bp ):
|
||||||
if 'sign_id' not in bp:
|
if 'sign_id' not in bp:
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
from vimspector.debug_session import DebugSession
|
from vimspector.debug_session import DebugSession
|
||||||
from vimspector import utils, settings
|
from vimspector import utils
|
||||||
|
|
||||||
|
|
||||||
class JavaDebugAdapter( object ):
|
class JavaDebugAdapter( object ):
|
||||||
|
|
@ -36,16 +36,8 @@ class JavaDebugAdapter( object ):
|
||||||
'arguments': {},
|
'arguments': {},
|
||||||
} )
|
} )
|
||||||
|
|
||||||
mode = settings.Get( 'java_hotcodereplace_mode' )
|
utils.Confirm( self.debug_session._api_prefix,
|
||||||
if mode == 'ask':
|
'Code has changed, hot reload?',
|
||||||
utils.Confirm( self.debug_session._api_prefix,
|
handler )
|
||||||
'Code has changed, hot reload?',
|
|
||||||
handler,
|
|
||||||
default_value = 1 )
|
|
||||||
elif mode == 'always':
|
|
||||||
self.debug_session._connection.DoRequest( None, {
|
|
||||||
'command': 'redefineClasses',
|
|
||||||
'arguments': {},
|
|
||||||
} )
|
|
||||||
elif body.get( 'message' ):
|
elif body.get( 'message' ):
|
||||||
utils.UserMessage( 'Hot code replace: ' + body[ 'message' ] )
|
utils.UserMessage( 'Hot code replace: ' + body[ 'message' ] )
|
||||||
|
|
|
||||||
|
|
@ -226,12 +226,7 @@ class DebugAdapterConnection( object ):
|
||||||
|
|
||||||
# self._logger.debug( 'Message received (raw): %s', payload )
|
# self._logger.debug( 'Message received (raw): %s', payload )
|
||||||
|
|
||||||
try:
|
message = json.loads( payload )
|
||||||
message = json.loads( payload, strict = False )
|
|
||||||
except Exception:
|
|
||||||
self._logger.exception( "Invalid message received: %s", payload )
|
|
||||||
self._SetState( 'READ_HEADER' )
|
|
||||||
raise
|
|
||||||
|
|
||||||
self._logger.debug( 'Message received: {0}'.format( message ) )
|
self._logger.debug( 'Message received: {0}'.format( message ) )
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -535,6 +535,21 @@ class DebugSession( object ):
|
||||||
def SetVariableValue( self, new_value = None, buf = None, line_num = None ):
|
def SetVariableValue( self, new_value = None, buf = None, line_num = None ):
|
||||||
self._variablesView.SetVariableValue( new_value, buf, line_num )
|
self._variablesView.SetVariableValue( new_value, buf, line_num )
|
||||||
|
|
||||||
|
@IfConnected()
|
||||||
|
def AddDataBreakpoint( self, opts, buf = None, line_num = None ):
|
||||||
|
def add_bp( breakpoint_info ):
|
||||||
|
if breakpoint_info[ 'dataId' ] is None:
|
||||||
|
utils.UserMessage(
|
||||||
|
"Can't set data breakpoint here: { breakpoint_info[ 'description' ] }"
|
||||||
|
)
|
||||||
|
return
|
||||||
|
|
||||||
|
# TODO: Ask the user about the possible DataBreakpointAccessType's and add
|
||||||
|
# that in to opts here
|
||||||
|
self._breakpoints.AddDataBreakpoint( breakpoint_info[ 'dataId' ], opts )
|
||||||
|
|
||||||
|
self._variablesView.GetDataBreakpointInfo( add_bp, buf, line_num )
|
||||||
|
|
||||||
@IfConnected()
|
@IfConnected()
|
||||||
def AddWatch( self, expression ):
|
def AddWatch( self, expression ):
|
||||||
self._variablesView.AddWatch( self._stackTraceView.GetCurrentFrame(),
|
self._variablesView.AddWatch( self._stackTraceView.GetCurrentFrame(),
|
||||||
|
|
@ -577,14 +592,6 @@ class DebugSession( object ):
|
||||||
def ExpandFrameOrThread( self ):
|
def ExpandFrameOrThread( self ):
|
||||||
self._stackTraceView.ExpandFrameOrThread()
|
self._stackTraceView.ExpandFrameOrThread()
|
||||||
|
|
||||||
@IfConnected()
|
|
||||||
def UpFrame( self ):
|
|
||||||
self._stackTraceView.UpFrame()
|
|
||||||
|
|
||||||
@IfConnected()
|
|
||||||
def DownFrame( self ):
|
|
||||||
self._stackTraceView.DownFrame()
|
|
||||||
|
|
||||||
def ToggleLog( self ):
|
def ToggleLog( self ):
|
||||||
if self._HasUI():
|
if self._HasUI():
|
||||||
return self.ShowOutput( 'Vimspector' )
|
return self.ShowOutput( 'Vimspector' )
|
||||||
|
|
@ -669,45 +676,6 @@ class DebugSession( object ):
|
||||||
vim.command( 'tab split' )
|
vim.command( 'tab split' )
|
||||||
self._uiTab = vim.current.tabpage
|
self._uiTab = vim.current.tabpage
|
||||||
|
|
||||||
mode = settings.Get( 'ui_mode' )
|
|
||||||
|
|
||||||
if mode == 'auto':
|
|
||||||
# Go vertical if there isn't enough horizontal space for at least:
|
|
||||||
# the left bar width
|
|
||||||
# + the code min width
|
|
||||||
# + the terminal min width
|
|
||||||
# + enough space for a sign column and number column?
|
|
||||||
min_width = ( settings.Int( 'sidebar_width' )
|
|
||||||
+ 1 + 2 + 3
|
|
||||||
+ settings.Int( 'code_minwidth' )
|
|
||||||
+ 1 + settings.Int( 'terminal_minwidth' ) )
|
|
||||||
|
|
||||||
min_height = ( settings.Int( 'code_minheight' ) + 1 +
|
|
||||||
settings.Int( 'topbar_height' ) + 1 +
|
|
||||||
settings.Int( 'bottombar_height' ) + 1 +
|
|
||||||
2 )
|
|
||||||
|
|
||||||
mode = ( 'vertical'
|
|
||||||
if vim.options[ 'columns' ] < min_width
|
|
||||||
else 'horizontal' )
|
|
||||||
|
|
||||||
if vim.options[ 'lines' ] < min_height:
|
|
||||||
mode = 'horizontal'
|
|
||||||
|
|
||||||
self._logger.debug( 'min_width/height: %s/%s, actual: %s/%s - result: %s',
|
|
||||||
min_width,
|
|
||||||
min_height,
|
|
||||||
vim.options[ 'columns' ],
|
|
||||||
vim.options[ 'lines' ],
|
|
||||||
mode )
|
|
||||||
|
|
||||||
if mode == 'vertical':
|
|
||||||
self._SetUpUIVertical()
|
|
||||||
else:
|
|
||||||
self._SetUpUIHorizontal()
|
|
||||||
|
|
||||||
|
|
||||||
def _SetUpUIHorizontal( self ):
|
|
||||||
# Code window
|
# Code window
|
||||||
code_window = vim.current.window
|
code_window = vim.current.window
|
||||||
self._codeView = code.CodeView( code_window, self._api_prefix )
|
self._codeView = code.CodeView( code_window, self._api_prefix )
|
||||||
|
|
@ -748,66 +716,6 @@ class DebugSession( object ):
|
||||||
# TODO: If/when we support multiple sessions, we'll need some way to
|
# TODO: If/when we support multiple sessions, we'll need some way to
|
||||||
# indicate which tab was created and store all the tabs
|
# indicate which tab was created and store all the tabs
|
||||||
vim.vars[ 'vimspector_session_windows' ] = {
|
vim.vars[ 'vimspector_session_windows' ] = {
|
||||||
'mode': 'horizontal',
|
|
||||||
'tabpage': self._uiTab.number,
|
|
||||||
'code': utils.WindowID( code_window, self._uiTab ),
|
|
||||||
'stack_trace': utils.WindowID( stack_trace_window, self._uiTab ),
|
|
||||||
'variables': utils.WindowID( vars_window, self._uiTab ),
|
|
||||||
'watches': utils.WindowID( watch_window, self._uiTab ),
|
|
||||||
'output': utils.WindowID( output_window, self._uiTab ),
|
|
||||||
'eval': None # this is going to be updated every time eval popup is opened
|
|
||||||
}
|
|
||||||
with utils.RestoreCursorPosition():
|
|
||||||
with utils.RestoreCurrentWindow():
|
|
||||||
with utils.RestoreCurrentBuffer( vim.current.window ):
|
|
||||||
vim.command( 'doautocmd User VimspectorUICreated' )
|
|
||||||
|
|
||||||
|
|
||||||
def _SetUpUIVertical( self ):
|
|
||||||
# Code window
|
|
||||||
code_window = vim.current.window
|
|
||||||
self._codeView = code.CodeView( code_window, self._api_prefix )
|
|
||||||
|
|
||||||
# Call stack
|
|
||||||
vim.command(
|
|
||||||
f'topleft { settings.Int( "topbar_height" ) }new' )
|
|
||||||
stack_trace_window = vim.current.window
|
|
||||||
one_third = int( vim.eval( 'winwidth( 0 )' ) ) / 3
|
|
||||||
self._stackTraceView = stack_trace.StackTraceView( self,
|
|
||||||
stack_trace_window )
|
|
||||||
|
|
||||||
|
|
||||||
# Watches
|
|
||||||
vim.command( 'leftabove vertical new' )
|
|
||||||
watch_window = vim.current.window
|
|
||||||
|
|
||||||
# Variables
|
|
||||||
vim.command( 'leftabove vertical new' )
|
|
||||||
vars_window = vim.current.window
|
|
||||||
|
|
||||||
|
|
||||||
with utils.LetCurrentWindow( vars_window ):
|
|
||||||
vim.command( f'{ one_third }wincmd |' )
|
|
||||||
with utils.LetCurrentWindow( watch_window ):
|
|
||||||
vim.command( f'{ one_third }wincmd |' )
|
|
||||||
with utils.LetCurrentWindow( stack_trace_window ):
|
|
||||||
vim.command( f'{ one_third }wincmd |' )
|
|
||||||
|
|
||||||
self._variablesView = variables.VariablesView( vars_window,
|
|
||||||
watch_window )
|
|
||||||
|
|
||||||
|
|
||||||
# Output/logging
|
|
||||||
vim.current.window = code_window
|
|
||||||
vim.command( f'rightbelow { settings.Int( "bottombar_height" ) }new' )
|
|
||||||
output_window = vim.current.window
|
|
||||||
self._outputView = output.DAPOutputView( output_window,
|
|
||||||
self._api_prefix )
|
|
||||||
|
|
||||||
# TODO: If/when we support multiple sessions, we'll need some way to
|
|
||||||
# indicate which tab was created and store all the tabs
|
|
||||||
vim.vars[ 'vimspector_session_windows' ] = {
|
|
||||||
'mode': 'vertical',
|
|
||||||
'tabpage': self._uiTab.number,
|
'tabpage': self._uiTab.number,
|
||||||
'code': utils.WindowID( code_window, self._uiTab ),
|
'code': utils.WindowID( code_window, self._uiTab ),
|
||||||
'stack_trace': utils.WindowID( stack_trace_window, self._uiTab ),
|
'stack_trace': utils.WindowID( stack_trace_window, self._uiTab ),
|
||||||
|
|
@ -916,9 +824,7 @@ class DebugSession( object ):
|
||||||
self._logger.info( 'Debug Adapter Started' )
|
self._logger.info( 'Debug Adapter Started' )
|
||||||
|
|
||||||
def _StopDebugAdapter( self, interactive = False, callback = None ):
|
def _StopDebugAdapter( self, interactive = False, callback = None ):
|
||||||
arguments = {}
|
def disconnect( arguments = {} ):
|
||||||
|
|
||||||
def disconnect():
|
|
||||||
self._splash_screen = utils.DisplaySplash(
|
self._splash_screen = utils.DisplaySplash(
|
||||||
self._api_prefix,
|
self._api_prefix,
|
||||||
self._splash_screen,
|
self._splash_screen,
|
||||||
|
|
@ -938,7 +844,7 @@ class DebugSession( object ):
|
||||||
|
|
||||||
self._connection.DoRequest( handler, {
|
self._connection.DoRequest( handler, {
|
||||||
'command': 'disconnect',
|
'command': 'disconnect',
|
||||||
'arguments': arguments,
|
'arguments': {},
|
||||||
}, failure_handler = handler, timeout = 5000 )
|
}, failure_handler = handler, timeout = 5000 )
|
||||||
|
|
||||||
if not interactive:
|
if not interactive:
|
||||||
|
|
@ -949,25 +855,21 @@ class DebugSession( object ):
|
||||||
disconnect()
|
disconnect()
|
||||||
else:
|
else:
|
||||||
def handle_choice( choice ):
|
def handle_choice( choice ):
|
||||||
|
arguments = {}
|
||||||
if choice == 1:
|
if choice == 1:
|
||||||
# yes
|
|
||||||
arguments[ 'terminateDebuggee' ] = True
|
arguments[ 'terminateDebuggee' ] = True
|
||||||
elif choice == 2:
|
elif choice == 0:
|
||||||
# no
|
|
||||||
arguments[ 'terminateDebuggee' ] = False
|
arguments[ 'terminateDebuggee' ] = False
|
||||||
elif choice <= 0:
|
elif choice == -1:
|
||||||
# Abort
|
# Abort
|
||||||
return
|
return
|
||||||
# Else, use server default
|
|
||||||
|
|
||||||
disconnect()
|
disconnect( arguments )
|
||||||
|
|
||||||
utils.Confirm( self._api_prefix,
|
utils.Confirm( self._api_prefix,
|
||||||
"Terminate debuggee?",
|
"Terminate debuggee?",
|
||||||
handle_choice,
|
handle_choice,
|
||||||
default_value = 3,
|
default_value = 3 )
|
||||||
options = [ '(Y)es', '(N)o', '(D)efault' ],
|
|
||||||
keys = [ 'y', 'n', 'd' ] )
|
|
||||||
|
|
||||||
|
|
||||||
def _PrepareAttach( self, adapter_config, launch_config ):
|
def _PrepareAttach( self, adapter_config, launch_config ):
|
||||||
|
|
@ -1147,6 +1049,10 @@ class DebugSession( object ):
|
||||||
#
|
#
|
||||||
def handle_initialize_response( msg ):
|
def handle_initialize_response( msg ):
|
||||||
self._server_capabilities = msg.get( 'body' ) or {}
|
self._server_capabilities = msg.get( 'body' ) or {}
|
||||||
|
self._outputView.Print(
|
||||||
|
'server',
|
||||||
|
'Server Capabilities:\n' + json.dumps( self._server_capabilities,
|
||||||
|
indent = 2 ) )
|
||||||
self._breakpoints.SetServerCapabilities( self._server_capabilities )
|
self._breakpoints.SetServerCapabilities( self._server_capabilities )
|
||||||
self._variablesView.SetServerCapabilities( self._server_capabilities )
|
self._variablesView.SetServerCapabilities( self._server_capabilities )
|
||||||
self._Launch()
|
self._Launch()
|
||||||
|
|
@ -1270,37 +1176,6 @@ class DebugSession( object ):
|
||||||
self._stackTraceView.LoadThreads( True )
|
self._stackTraceView.LoadThreads( True )
|
||||||
|
|
||||||
|
|
||||||
@IfConnected()
|
|
||||||
@RequiresUI()
|
|
||||||
def PrintDebugInfo( self ):
|
|
||||||
def Line():
|
|
||||||
return ( "--------------------------------------------------------------"
|
|
||||||
"------------------" )
|
|
||||||
|
|
||||||
def Pretty( obj ):
|
|
||||||
if obj is None:
|
|
||||||
return [ "None" ]
|
|
||||||
return [ Line() ] + json.dumps( obj, indent=2 ).splitlines() + [ Line() ]
|
|
||||||
|
|
||||||
|
|
||||||
debugInfo = [
|
|
||||||
"Vimspector Debug Info",
|
|
||||||
Line(),
|
|
||||||
f"ConnectionType: { self._connection_type }",
|
|
||||||
"Adapter: " ] + Pretty( self._adapter ) + [
|
|
||||||
"Configuration: " ] + Pretty( self._configuration ) + [
|
|
||||||
f"API Prefix: { self._api_prefix }",
|
|
||||||
f"Launch/Init: { self._launch_complete } / { self._init_complete }",
|
|
||||||
f"Workspace Root: { self._workspace_root }",
|
|
||||||
"Launch Config: " ] + Pretty( self._launch_config ) + [
|
|
||||||
"Server Capabilities: " ] + Pretty( self._server_capabilities ) + [
|
|
||||||
]
|
|
||||||
|
|
||||||
self._outputView.ClearCategory( 'DebugInfo' )
|
|
||||||
self._outputView.Print( "DebugInfo", debugInfo )
|
|
||||||
self.ShowOutput( "DebugInfo" )
|
|
||||||
|
|
||||||
|
|
||||||
def OnEvent_loadedSource( self, msg ):
|
def OnEvent_loadedSource( self, msg ):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,12 +30,12 @@ GADGETS = {
|
||||||
root,
|
root,
|
||||||
gadget ),
|
gadget ),
|
||||||
'all': {
|
'all': {
|
||||||
'version': '1.6.0',
|
'version': '0.27.0',
|
||||||
"adapters": {
|
"adapters": {
|
||||||
"vscode-cpptools": {
|
"vscode-cpptools": {
|
||||||
"name": "cppdbg",
|
"name": "cppdbg",
|
||||||
"command": [
|
"command": [
|
||||||
"${gadgetDir}/vscode-cpptools/debugAdapters/bin/OpenDebugAD7"
|
"${gadgetDir}/vscode-cpptools/debugAdapters/OpenDebugAD7"
|
||||||
],
|
],
|
||||||
"attach": {
|
"attach": {
|
||||||
"pidProperty": "processId",
|
"pidProperty": "processId",
|
||||||
|
|
@ -53,17 +53,17 @@ GADGETS = {
|
||||||
'linux': {
|
'linux': {
|
||||||
'file_name': 'cpptools-linux.vsix',
|
'file_name': 'cpptools-linux.vsix',
|
||||||
'checksum':
|
'checksum':
|
||||||
'c25299bcfb46b22d41aa3f125df7184e6282a35ff9fb69c47def744cb4778f55',
|
'3695202e1e75a03de18049323b66d868165123f26151f8c974a480eaf0205435',
|
||||||
},
|
},
|
||||||
'macos': {
|
'macos': {
|
||||||
'file_name': 'cpptools-osx-arm64.vsix',
|
'file_name': 'cpptools-osx.vsix',
|
||||||
'checksum':
|
'checksum':
|
||||||
'ceb3e8cdaa2b5bb45af50913ddd8402089969748af8d70f5d46480408287ba6f',
|
'cb061e3acd7559a539e5586f8d3f535101c4ec4e8a48195856d1d39380b5cf3c',
|
||||||
},
|
},
|
||||||
'windows': {
|
'windows': {
|
||||||
'file_name': 'cpptools-win32.vsix',
|
'file_name': 'cpptools-win32.vsix',
|
||||||
'checksum':
|
'checksum':
|
||||||
'ef7ac5831874a3c7dbf0feb826bfda2be579aff9b6d990622fff1d0d4ede00d1',
|
'aa294368ed16d48c59e49c8000e146eae5a19ad07b654efed5db8ec93b24229e',
|
||||||
"adapters": {
|
"adapters": {
|
||||||
"vscode-cpptools": {
|
"vscode-cpptools": {
|
||||||
"name": "cppdbg",
|
"name": "cppdbg",
|
||||||
|
|
@ -86,6 +86,29 @@ GADGETS = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
'vscode-python': {
|
||||||
|
'language': 'python.legacy',
|
||||||
|
'enabled': False,
|
||||||
|
'download': {
|
||||||
|
'url': 'https://github.com/Microsoft/vscode-python/releases/download/'
|
||||||
|
'${version}/${file_name}',
|
||||||
|
},
|
||||||
|
'all': {
|
||||||
|
'version': '2019.11.50794',
|
||||||
|
'file_name': 'ms-python-release.vsix',
|
||||||
|
'checksum':
|
||||||
|
'6a9edf9ecabed14aac424e6007858068204a3638bf3bb4f235bd6035d823acc6',
|
||||||
|
},
|
||||||
|
'adapters': {
|
||||||
|
"vscode-python": {
|
||||||
|
"name": "vscode-python",
|
||||||
|
"command": [
|
||||||
|
"node",
|
||||||
|
"${gadgetDir}/vscode-python/out/client/debugger/debugAdapter/main.js",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
'debugpy': {
|
'debugpy': {
|
||||||
'language': 'python',
|
'language': 'python',
|
||||||
'download': {
|
'download': {
|
||||||
|
|
@ -211,15 +234,15 @@ GADGETS = {
|
||||||
'format': 'tar',
|
'format': 'tar',
|
||||||
},
|
},
|
||||||
'all': {
|
'all': {
|
||||||
'version': '1.2.0-782'
|
'version': '1.2.0-635'
|
||||||
},
|
},
|
||||||
'macos': {
|
'macos': {
|
||||||
'file_name': 'netcoredbg-osx.tar.gz',
|
'file_name': 'netcoredbg-osx.tar.gz',
|
||||||
'checksum':
|
'checksum':
|
||||||
'',
|
'71c773e34d358950f25119bade7e3081c4c2f9d71847bd49027ca5792e918beb',
|
||||||
},
|
},
|
||||||
'linux': {
|
'linux': {
|
||||||
'file_name': 'netcoredbg-linux-bionic-amd64.tar.gz',
|
'file_name': 'netcoredbg-linux-bionic.tar.gz',
|
||||||
'checksum': '',
|
'checksum': '',
|
||||||
},
|
},
|
||||||
'windows': {
|
'windows': {
|
||||||
|
|
@ -246,6 +269,41 @@ GADGETS = {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
'vscode-mono-debug': {
|
||||||
|
'language': 'csharp',
|
||||||
|
'enabled': False,
|
||||||
|
'download': {
|
||||||
|
'url': 'https://marketplace.visualstudio.com/_apis/public/gallery/'
|
||||||
|
'publishers/ms-vscode/vsextensions/mono-debug/${version}/'
|
||||||
|
'vspackage',
|
||||||
|
'target': 'vscode-mono-debug.vsix.gz',
|
||||||
|
'format': 'zip.gz',
|
||||||
|
},
|
||||||
|
'all': {
|
||||||
|
'file_name': 'vscode-mono-debug.vsix',
|
||||||
|
'version': '0.16.2',
|
||||||
|
'checksum':
|
||||||
|
'121eca297d83daeeb1e6e1d791305d1827998dbd595c330086b3b94d33dba3b9',
|
||||||
|
},
|
||||||
|
'adapters': {
|
||||||
|
'vscode-mono-debug': {
|
||||||
|
"name": "mono-debug",
|
||||||
|
"command": [
|
||||||
|
"mono",
|
||||||
|
"${gadgetDir}/vscode-mono-debug/bin/Release/mono-debug.exe"
|
||||||
|
],
|
||||||
|
"attach": {
|
||||||
|
"pidSelect": "none"
|
||||||
|
},
|
||||||
|
"configuration": {
|
||||||
|
"cwd": "${workspaceRoot}",
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"args": [],
|
||||||
|
"env": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
'vscode-bash-debug': {
|
'vscode-bash-debug': {
|
||||||
'language': 'bash',
|
'language': 'bash',
|
||||||
'download': {
|
'download': {
|
||||||
|
|
@ -323,10 +381,10 @@ GADGETS = {
|
||||||
'${version}/${file_name}',
|
'${version}/${file_name}',
|
||||||
},
|
},
|
||||||
'all': {
|
'all': {
|
||||||
'version': 'v1.17.0',
|
'version': 'v1.14.9',
|
||||||
'file_name': 'php-debug-1.17.0.vsix',
|
'file_name': 'php-debug.vsix',
|
||||||
'checksum':
|
'checksum':
|
||||||
'd0fff272503414b6696cc737bc2e18e060fdd5e5dc4bcaf38ae7373afd8d8bc9',
|
'0c5709cbbffe26b12aa63a88142195a9a045a5d8fca7fe63d62c789fe601630d',
|
||||||
},
|
},
|
||||||
'adapters': {
|
'adapters': {
|
||||||
'vscode-php-debug': {
|
'vscode-php-debug': {
|
||||||
|
|
@ -394,12 +452,12 @@ GADGETS = {
|
||||||
'${version}/${file_name}',
|
'${version}/${file_name}',
|
||||||
},
|
},
|
||||||
'all': {
|
'all': {
|
||||||
'version': 'v1.6.6',
|
'version': 'v1.5.3',
|
||||||
},
|
},
|
||||||
'macos': {
|
'macos': {
|
||||||
'file_name': 'codelldb-aarch64-darwin.vsix',
|
'file_name': 'codelldb-x86_64-darwin.vsix',
|
||||||
'checksum':
|
'checksum':
|
||||||
'5adc3b9139eabdafd825bd5efc55df4424a203fb2b6087b425cd434956e7ec58',
|
'7505bc1cdfcfd1cb981e2996aec62d63577440709bac31dcadb41a3b4b44631a',
|
||||||
'make_executable': [
|
'make_executable': [
|
||||||
'adapter/codelldb',
|
'adapter/codelldb',
|
||||||
'lldb/bin/debugserver',
|
'lldb/bin/debugserver',
|
||||||
|
|
@ -410,7 +468,7 @@ GADGETS = {
|
||||||
'linux': {
|
'linux': {
|
||||||
'file_name': 'codelldb-x86_64-linux.vsix',
|
'file_name': 'codelldb-x86_64-linux.vsix',
|
||||||
'checksum':
|
'checksum':
|
||||||
'eda2cd9b3089dcc0524c273e91ffb5875fe08c930bf643739a2cd1846e1f98d6',
|
'ce7efc3e94d775368e5942a02bf5c326b6809a0b4c389f79ffa6a8f6f6b72139',
|
||||||
'make_executable': [
|
'make_executable': [
|
||||||
'adapter/codelldb',
|
'adapter/codelldb',
|
||||||
'lldb/bin/lldb',
|
'lldb/bin/lldb',
|
||||||
|
|
@ -421,7 +479,7 @@ GADGETS = {
|
||||||
'windows': {
|
'windows': {
|
||||||
'file_name': 'codelldb-x86_64-windows.vsix',
|
'file_name': 'codelldb-x86_64-windows.vsix',
|
||||||
'checksum':
|
'checksum':
|
||||||
'8ddebe8381a3d22dc3d95139c3797fda06b5cc34aadf300e13b1c516b9da95fe',
|
'',
|
||||||
'make_executable': []
|
'make_executable': []
|
||||||
},
|
},
|
||||||
'adapters': {
|
'adapters': {
|
||||||
|
|
|
||||||
|
|
@ -358,8 +358,7 @@ def InstallCppTools( name, root, gadget ):
|
||||||
# It's hilarious, but the execute bits aren't set in the vsix. So they
|
# It's hilarious, but the execute bits aren't set in the vsix. So they
|
||||||
# actually have javascript code which does this. It's just a horrible horrible
|
# actually have javascript code which does this. It's just a horrible horrible
|
||||||
# hack that really is not funny.
|
# hack that really is not funny.
|
||||||
MakeExecutable(
|
MakeExecutable( os.path.join( extension, 'debugAdapters', 'OpenDebugAD7' ) )
|
||||||
os.path.join( extension, 'debugAdapters', 'bin', 'OpenDebugAD7' ) )
|
|
||||||
with open( os.path.join( extension, 'package.json' ) ) as f:
|
with open( os.path.join( extension, 'package.json' ) ) as f:
|
||||||
package = json.load( f )
|
package = json.load( f )
|
||||||
runtime_dependencies = package[ 'runtimeDependencies' ]
|
runtime_dependencies = package[ 'runtimeDependencies' ]
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@ class TabBuffer( object ):
|
||||||
BUFFER_MAP = {
|
BUFFER_MAP = {
|
||||||
'console': 'Console',
|
'console': 'Console',
|
||||||
'stdout': 'Console',
|
'stdout': 'Console',
|
||||||
'output': 'Console',
|
|
||||||
'stderr': 'stderr',
|
'stderr': 'stderr',
|
||||||
'telemetry': None,
|
'telemetry': None,
|
||||||
}
|
}
|
||||||
|
|
@ -65,11 +64,8 @@ class OutputView( object ):
|
||||||
self._api_prefix = api_prefix
|
self._api_prefix = api_prefix
|
||||||
VIEWS.add( self )
|
VIEWS.add( self )
|
||||||
|
|
||||||
def Print( self, category, text: typing.Union[ str, list ] ):
|
def Print( self, category, text ):
|
||||||
if not isinstance( text, list ):
|
self._Print( category, text.splitlines() )
|
||||||
text = text.splitlines()
|
|
||||||
|
|
||||||
self._Print( category, text )
|
|
||||||
|
|
||||||
def OnOutput( self, event ):
|
def OnOutput( self, event ):
|
||||||
category = CategoryToBuffer( event.get( 'category' ) or 'output' )
|
category = CategoryToBuffer( event.get( 'category' ) or 'output' )
|
||||||
|
|
@ -108,26 +104,13 @@ class OutputView( object ):
|
||||||
|
|
||||||
def Clear( self ):
|
def Clear( self ):
|
||||||
for category, tab_buffer in self._buffers.items():
|
for category, tab_buffer in self._buffers.items():
|
||||||
self._CleanUpBuffer( category, tab_buffer )
|
if tab_buffer.is_job:
|
||||||
|
utils.CleanUpCommand( category, self._api_prefix )
|
||||||
|
utils.CleanUpHiddenBuffer( tab_buffer.buf )
|
||||||
|
|
||||||
# FIXME: nunmenu the WinBar ?
|
# FIXME: nunmenu the WinBar ?
|
||||||
self._buffers = {}
|
self._buffers = {}
|
||||||
|
|
||||||
|
|
||||||
def ClearCategory( self, category: str ):
|
|
||||||
if category not in self._buffers:
|
|
||||||
return
|
|
||||||
|
|
||||||
self._CleanUpBuffer( category, self._buffers[ category ] )
|
|
||||||
|
|
||||||
|
|
||||||
def _CleanUpBuffer( self, category: str, tab_buffer: TabBuffer ):
|
|
||||||
if tab_buffer.is_job:
|
|
||||||
utils.CleanUpCommand( category, self._api_prefix )
|
|
||||||
|
|
||||||
utils.CleanUpHiddenBuffer( tab_buffer.buf )
|
|
||||||
|
|
||||||
|
|
||||||
def WindowIsValid( self ):
|
def WindowIsValid( self ):
|
||||||
return self._window.valid
|
return self._window.valid
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,20 +20,11 @@ from vimspector import utils
|
||||||
|
|
||||||
DEFAULTS = {
|
DEFAULTS = {
|
||||||
# UI
|
# UI
|
||||||
'ui_mode': 'auto',
|
'bottombar_height': 10,
|
||||||
'bottombar_height': 10,
|
'sidebar_width': 50,
|
||||||
|
'code_minwidth': 82,
|
||||||
# For ui_mode = 'horizontal':
|
'terminal_maxwidth': 80,
|
||||||
'sidebar_width': 50,
|
'terminal_minwidth': 10,
|
||||||
'code_minwidth': 82,
|
|
||||||
'terminal_maxwidth': 80,
|
|
||||||
'terminal_minwidth': 10,
|
|
||||||
|
|
||||||
# For ui_mode = 'vertical':
|
|
||||||
'topbar_height': 15,
|
|
||||||
'code_minheight': 20,
|
|
||||||
'terminal_maxheight': 15,
|
|
||||||
'terminal_minheight': 5,
|
|
||||||
|
|
||||||
# Signs
|
# Signs
|
||||||
'sign_priority': {
|
'sign_priority': {
|
||||||
|
|
@ -42,8 +33,7 @@ DEFAULTS = {
|
||||||
'vimspectorBP': 9,
|
'vimspectorBP': 9,
|
||||||
'vimspectorBPCond': 9,
|
'vimspectorBPCond': 9,
|
||||||
'vimspectorBPDisabled': 9,
|
'vimspectorBPDisabled': 9,
|
||||||
'vimspectorCurrentThread': 200,
|
'vimspectorCurrentThread': 200
|
||||||
'vimspectorCurrentFrame': 200,
|
|
||||||
},
|
},
|
||||||
|
|
||||||
# Installer
|
# Installer
|
||||||
|
|
@ -60,10 +50,7 @@ DEFAULTS = {
|
||||||
'expand_or_jump': [ '<CR>', '<2-LeftMouse>' ],
|
'expand_or_jump': [ '<CR>', '<2-LeftMouse>' ],
|
||||||
'focus_thread': [ '<leader><CR>' ],
|
'focus_thread': [ '<leader><CR>' ],
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
|
|
||||||
# Custom
|
|
||||||
'java_hotcodereplace_mode': 'ask',
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -102,8 +102,7 @@ class StackTraceView( object ):
|
||||||
self._scratch_buffers = []
|
self._scratch_buffers = []
|
||||||
|
|
||||||
# FIXME: This ID is by group, so should be module scope
|
# FIXME: This ID is by group, so should be module scope
|
||||||
self._current_thread_sign_id = 0 # 1 when used
|
self._next_sign_id = 1
|
||||||
self._current_frame_sign_id = 0 # 2 when used
|
|
||||||
|
|
||||||
utils.SetUpHiddenBuffer( self._buf, 'vimspector.StackTrace' )
|
utils.SetUpHiddenBuffer( self._buf, 'vimspector.StackTrace' )
|
||||||
utils.SetUpUIWindow( win )
|
utils.SetUpUIWindow( win )
|
||||||
|
|
@ -128,7 +127,6 @@ class StackTraceView( object ):
|
||||||
':call vimspector#SetCurrentThread()<CR>' )
|
':call vimspector#SetCurrentThread()<CR>' )
|
||||||
|
|
||||||
win.options[ 'cursorline' ] = False
|
win.options[ 'cursorline' ] = False
|
||||||
win.options[ 'signcolumn' ] = 'auto'
|
|
||||||
|
|
||||||
|
|
||||||
if not signs.SignDefined( 'vimspectorCurrentThread' ):
|
if not signs.SignDefined( 'vimspectorCurrentThread' ):
|
||||||
|
|
@ -138,13 +136,6 @@ class StackTraceView( object ):
|
||||||
texthl = 'MatchParen',
|
texthl = 'MatchParen',
|
||||||
linehl = 'CursorLine' )
|
linehl = 'CursorLine' )
|
||||||
|
|
||||||
if not signs.SignDefined( 'vimspectorCurrentFrame' ):
|
|
||||||
signs.DefineSign( 'vimspectorCurrentFrame',
|
|
||||||
text = '▶ ',
|
|
||||||
double_text = '▶',
|
|
||||||
texthl = 'Special',
|
|
||||||
linehl = 'CursorLine' )
|
|
||||||
|
|
||||||
self._line_to_frame = {}
|
self._line_to_frame = {}
|
||||||
self._line_to_thread = {}
|
self._line_to_thread = {}
|
||||||
|
|
||||||
|
|
@ -166,12 +157,9 @@ class StackTraceView( object ):
|
||||||
self._sources = {}
|
self._sources = {}
|
||||||
self._requesting_threads = StackTraceView.ThreadRequestState.NO
|
self._requesting_threads = StackTraceView.ThreadRequestState.NO
|
||||||
self._pending_thread_request = None
|
self._pending_thread_request = None
|
||||||
if self._current_thread_sign_id:
|
if self._next_sign_id:
|
||||||
signs.UnplaceSign( self._current_thread_sign_id, 'VimspectorStackTrace' )
|
signs.UnplaceSign( self._next_sign_id, 'VimspectorStackTrace' )
|
||||||
self._current_thread_sign_id = 0
|
self._next_sign_id = 0
|
||||||
if self._current_frame_sign_id:
|
|
||||||
signs.UnplaceSign( self._current_frame_sign_id, 'VimspectorStackTrace' )
|
|
||||||
self._current_frame_sign_id = 0
|
|
||||||
|
|
||||||
with utils.ModifiableScratchBuffer( self._buf ):
|
with utils.ModifiableScratchBuffer( self._buf ):
|
||||||
utils.ClearBuffer( self._buf )
|
utils.ClearBuffer( self._buf )
|
||||||
|
|
@ -285,10 +273,10 @@ class StackTraceView( object ):
|
||||||
self._line_to_frame.clear()
|
self._line_to_frame.clear()
|
||||||
self._line_to_thread.clear()
|
self._line_to_thread.clear()
|
||||||
|
|
||||||
if self._current_thread_sign_id:
|
if self._next_sign_id:
|
||||||
signs.UnplaceSign( self._current_thread_sign_id, 'VimspectorStackTrace' )
|
signs.UnplaceSign( self._next_sign_id, 'VimspectorStackTrace' )
|
||||||
else:
|
else:
|
||||||
self._current_thread_sign_id = 1
|
self._next_sign_id = 1
|
||||||
|
|
||||||
with utils.ModifiableScratchBuffer( self._buf ):
|
with utils.ModifiableScratchBuffer( self._buf ):
|
||||||
with utils.RestoreCursorPosition():
|
with utils.RestoreCursorPosition():
|
||||||
|
|
@ -302,7 +290,7 @@ class StackTraceView( object ):
|
||||||
f'({thread.State()})' )
|
f'({thread.State()})' )
|
||||||
|
|
||||||
if self._current_thread == thread.id:
|
if self._current_thread == thread.id:
|
||||||
signs.PlaceSign( self._current_thread_sign_id,
|
signs.PlaceSign( self._next_sign_id,
|
||||||
'VimspectorStackTrace',
|
'VimspectorStackTrace',
|
||||||
'vimspectorCurrentThread',
|
'vimspectorCurrentThread',
|
||||||
self._buf.name,
|
self._buf.name,
|
||||||
|
|
@ -379,46 +367,6 @@ class StackTraceView( object ):
|
||||||
self._JumpToFrame( frame )
|
self._JumpToFrame( frame )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def _GetFrameOffset( self, delta ):
|
|
||||||
thread: Thread
|
|
||||||
for thread in self._threads:
|
|
||||||
if thread.id != self._current_thread:
|
|
||||||
continue
|
|
||||||
|
|
||||||
if not thread.stacktrace:
|
|
||||||
return
|
|
||||||
|
|
||||||
frame_idx = None
|
|
||||||
for index, frame in enumerate( thread.stacktrace ):
|
|
||||||
if frame == self._current_frame:
|
|
||||||
frame_idx = index
|
|
||||||
break
|
|
||||||
|
|
||||||
if frame_idx is not None:
|
|
||||||
target_idx = frame_idx + delta
|
|
||||||
if target_idx >= 0 and target_idx < len( thread.stacktrace ):
|
|
||||||
return thread.stacktrace[ target_idx ]
|
|
||||||
|
|
||||||
break
|
|
||||||
|
|
||||||
|
|
||||||
def UpFrame( self ):
|
|
||||||
frame = self._GetFrameOffset( 1 )
|
|
||||||
if not frame:
|
|
||||||
utils.UserMessage( 'Top of stack' )
|
|
||||||
else:
|
|
||||||
self._JumpToFrame( frame, 'up' )
|
|
||||||
|
|
||||||
|
|
||||||
def DownFrame( self ):
|
|
||||||
frame = self._GetFrameOffset( -1 )
|
|
||||||
if not frame:
|
|
||||||
utils.UserMessage( 'Bottom of stack' )
|
|
||||||
else:
|
|
||||||
self._JumpToFrame( frame, 'down' )
|
|
||||||
|
|
||||||
|
|
||||||
def AnyThreadsRunning( self ):
|
def AnyThreadsRunning( self ):
|
||||||
for thread in self._threads:
|
for thread in self._threads:
|
||||||
if thread.state != Thread.TERMINATED:
|
if thread.state != Thread.TERMINATED:
|
||||||
|
|
@ -433,7 +381,6 @@ class StackTraceView( object ):
|
||||||
# Should this set the current _Thread_ too ? If i jump to a frame in
|
# Should this set the current _Thread_ too ? If i jump to a frame in
|
||||||
# Thread 2, should that become the focussed thread ?
|
# Thread 2, should that become the focussed thread ?
|
||||||
self._current_frame = frame
|
self._current_frame = frame
|
||||||
self._DrawThreads()
|
|
||||||
return self._session.SetCurrentFrame( self._current_frame, reason )
|
return self._session.SetCurrentFrame( self._current_frame, reason )
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
@ -531,11 +478,6 @@ class StackTraceView( object ):
|
||||||
if not thread.IsExpanded():
|
if not thread.IsExpanded():
|
||||||
return
|
return
|
||||||
|
|
||||||
if self._current_frame_sign_id:
|
|
||||||
signs.UnplaceSign( self._current_frame_sign_id, 'VimspectorStackTrace' )
|
|
||||||
else:
|
|
||||||
self._current_frame_sign_id = 2
|
|
||||||
|
|
||||||
for frame in thread.stacktrace:
|
for frame in thread.stacktrace:
|
||||||
if frame.get( 'source' ):
|
if frame.get( 'source' ):
|
||||||
source = frame[ 'source' ]
|
source = frame[ 'source' ]
|
||||||
|
|
@ -560,14 +502,6 @@ class StackTraceView( object ):
|
||||||
source[ 'name' ],
|
source[ 'name' ],
|
||||||
frame[ 'line' ] ) )
|
frame[ 'line' ] ) )
|
||||||
|
|
||||||
if ( self._current_frame is not None and
|
|
||||||
self._current_frame[ 'id' ] == frame[ 'id' ] ):
|
|
||||||
signs.PlaceSign( self._current_frame_sign_id,
|
|
||||||
'VimspectorStackTrace',
|
|
||||||
'vimspectorCurrentFrame',
|
|
||||||
self._buf.name,
|
|
||||||
line )
|
|
||||||
|
|
||||||
self._line_to_frame[ line ] = ( thread, frame )
|
self._line_to_frame[ line ] = ( thread, frame )
|
||||||
|
|
||||||
def _ResolveSource( self, source, and_then ):
|
def _ResolveSource( self, source, and_then ):
|
||||||
|
|
|
||||||
|
|
@ -23,53 +23,12 @@ def LaunchTerminal( api_prefix,
|
||||||
env = params.get( 'env' ) or {}
|
env = params.get( 'env' ) or {}
|
||||||
|
|
||||||
term_options = {
|
term_options = {
|
||||||
|
'vertical': 1,
|
||||||
'norestore': 1,
|
'norestore': 1,
|
||||||
'cwd': cwd,
|
'cwd': cwd,
|
||||||
'env': env,
|
'env': env,
|
||||||
}
|
}
|
||||||
|
|
||||||
if settings.Get( 'ui_mode' ) == 'horizontal':
|
|
||||||
# force-horizontal
|
|
||||||
term_options[ 'vertical' ] = 1
|
|
||||||
elif utils.GetVimValue( vim.vars[ 'vimspector_session_windows' ],
|
|
||||||
'mode' ) == 'horizontal':
|
|
||||||
# horizontal, which means that we should have enough space for:
|
|
||||||
# - sidebar
|
|
||||||
# - code min
|
|
||||||
# - term min width
|
|
||||||
# - + 2 vertical spaders
|
|
||||||
# - + 3 columns for signs
|
|
||||||
term_options[ 'vertical' ] = 1
|
|
||||||
|
|
||||||
# if we don't have enough space for terminal_maxwidth, then see if we have
|
|
||||||
# enough vertically for terminal_maxheight, in which case,
|
|
||||||
# that seems a better fit
|
|
||||||
term_horiz_max = ( settings.Int( 'sidebar_width' ) +
|
|
||||||
1 + 2 + 3 +
|
|
||||||
settings.Int( 'code_minwidth' ) +
|
|
||||||
1 + settings.Int( 'terminal_maxwidth' ) )
|
|
||||||
term_vert_max = ( settings.Int( 'bottombar_height' ) + 1 +
|
|
||||||
settings.Int( 'code_minheight' ) + 1 +
|
|
||||||
settings.Int( 'terminal_minheight' ) )
|
|
||||||
|
|
||||||
if ( vim.options[ 'columns' ] < term_horiz_max and
|
|
||||||
vim.options[ 'lines' ] >= term_vert_max ):
|
|
||||||
# Looks like it, let's try that layout
|
|
||||||
term_options[ 'vertical' ] = 0
|
|
||||||
|
|
||||||
|
|
||||||
else:
|
|
||||||
# vertical - we need enough space horizontally for the code+terminal, but we
|
|
||||||
# may fit better with code above terminal
|
|
||||||
term_options[ 'vertical' ] = 0
|
|
||||||
|
|
||||||
term_horiz_max = ( settings.Int( 'code_minwidth' ) + 3 +
|
|
||||||
settings.Int( 'terminal_maxwidth' ) + 1 )
|
|
||||||
|
|
||||||
if vim.options[ 'columns' ] > term_horiz_max:
|
|
||||||
term_options[ 'vertical' ] = 1
|
|
||||||
|
|
||||||
|
|
||||||
if not window_for_start or not window_for_start.valid:
|
if not window_for_start or not window_for_start.valid:
|
||||||
# TOOD: Where? Maybe we should just use botright vertical ...
|
# TOOD: Where? Maybe we should just use botright vertical ...
|
||||||
window_for_start = vim.current.window
|
window_for_start = vim.current.window
|
||||||
|
|
@ -91,23 +50,13 @@ def LaunchTerminal( api_prefix,
|
||||||
# If we're making a vertical split from the code window, make it no more
|
# If we're making a vertical split from the code window, make it no more
|
||||||
# than 80 columns and no fewer than 10. Also try and keep the code window
|
# than 80 columns and no fewer than 10. Also try and keep the code window
|
||||||
# at least 82 columns
|
# at least 82 columns
|
||||||
if term_options.get( 'curwin', 0 ):
|
if term_options[ 'vertical' ] and not term_options.get( 'curwin', 0 ):
|
||||||
pass
|
|
||||||
elif term_options[ 'vertical' ]:
|
|
||||||
term_options[ 'term_cols' ] = max(
|
term_options[ 'term_cols' ] = max(
|
||||||
min ( int( vim.eval( 'winwidth( 0 )' ) )
|
min ( int( vim.eval( 'winwidth( 0 )' ) )
|
||||||
- settings.Int( 'code_minwidth' ),
|
- settings.Int( 'code_minwidth' ),
|
||||||
settings.Int( 'terminal_maxwidth' ) ),
|
settings.Int( 'terminal_maxwidth' ) ),
|
||||||
settings.Int( 'terminal_minwidth' )
|
settings.Int( 'terminal_minwidth' )
|
||||||
)
|
)
|
||||||
else:
|
|
||||||
term_options[ 'term_rows' ] = max(
|
|
||||||
min ( int( vim.eval( 'winheight( 0 )' ) )
|
|
||||||
- settings.Int( 'code_minheight' ),
|
|
||||||
settings.Int( 'terminal_maxheight' ) ),
|
|
||||||
settings.Int( 'terminal_minheight' )
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
buffer_number = int(
|
buffer_number = int(
|
||||||
utils.Call(
|
utils.Call(
|
||||||
|
|
|
||||||
|
|
@ -378,7 +378,6 @@ def AskForInput( prompt, default_value = None, completion = None ):
|
||||||
CONFIRM = {}
|
CONFIRM = {}
|
||||||
CONFIRM_ID = 0
|
CONFIRM_ID = 0
|
||||||
|
|
||||||
|
|
||||||
def ConfirmCallback( confirm_id, result ):
|
def ConfirmCallback( confirm_id, result ):
|
||||||
try:
|
try:
|
||||||
handler = CONFIRM.pop( confirm_id )
|
handler = CONFIRM.pop( confirm_id )
|
||||||
|
|
@ -391,26 +390,14 @@ def ConfirmCallback( confirm_id, result ):
|
||||||
handler( result )
|
handler( result )
|
||||||
|
|
||||||
|
|
||||||
def Confirm( api_prefix,
|
def Confirm( api_prefix, prompt, handler, default_value = 1 ):
|
||||||
prompt,
|
|
||||||
handler,
|
|
||||||
default_value = 2,
|
|
||||||
options: list = None,
|
|
||||||
keys: list = None ):
|
|
||||||
if not options:
|
|
||||||
options = [ '(Y)es', '(N)o' ]
|
|
||||||
if not keys:
|
|
||||||
keys = [ 'y', 'n' ]
|
|
||||||
|
|
||||||
global CONFIRM_ID
|
global CONFIRM_ID
|
||||||
CONFIRM_ID += 1
|
CONFIRM_ID += 1
|
||||||
CONFIRM[ CONFIRM_ID ] = handler
|
CONFIRM[ CONFIRM_ID ] = handler
|
||||||
Call( f'vimspector#internal#{ api_prefix }popup#Confirm',
|
Call( f'vimspector#internal#{ api_prefix }popup#Confirm',
|
||||||
CONFIRM_ID,
|
CONFIRM_ID,
|
||||||
prompt,
|
prompt,
|
||||||
options,
|
default_value )
|
||||||
default_value,
|
|
||||||
keys )
|
|
||||||
|
|
||||||
|
|
||||||
def AppendToBuffer( buf, line_or_lines, modified=False ):
|
def AppendToBuffer( buf, line_or_lines, modified=False ):
|
||||||
|
|
@ -534,6 +521,7 @@ def _Substitute( template, mapping ):
|
||||||
if mo.group( 'braceddefault' ) is not None:
|
if mo.group( 'braceddefault' ) is not None:
|
||||||
named = mo.group( 'defname' )
|
named = mo.group( 'defname' )
|
||||||
if named not in mapping:
|
if named not in mapping:
|
||||||
|
''
|
||||||
raise MissingSubstitution(
|
raise MissingSubstitution(
|
||||||
named,
|
named,
|
||||||
mo.group( 'default' ).replace( '\\}', '}' ) )
|
mo.group( 'default' ).replace( '\\}', '}' ) )
|
||||||
|
|
@ -575,11 +563,8 @@ def ExpandReferencesInString( orig_s,
|
||||||
if default_value is None and e.default_value is not None:
|
if default_value is None and e.default_value is not None:
|
||||||
try:
|
try:
|
||||||
default_value = _Substitute( e.default_value, mapping )
|
default_value = _Substitute( e.default_value, mapping )
|
||||||
except MissingSubstitution as e2:
|
except MissingSubstitution:
|
||||||
if e2.name in calculus:
|
default_value = e.default_value
|
||||||
default_value = calculus[ e2.name ]()
|
|
||||||
else:
|
|
||||||
default_value = e.default_value
|
|
||||||
|
|
||||||
mapping[ key ] = AskForInput( 'Enter value for {}: '.format( key ),
|
mapping[ key ] = AskForInput( 'Enter value for {}: '.format( key ),
|
||||||
default_value )
|
default_value )
|
||||||
|
|
|
||||||
|
|
@ -580,6 +580,33 @@ class VariablesView( object ):
|
||||||
}, failure_handler = failure_handler )
|
}, failure_handler = failure_handler )
|
||||||
|
|
||||||
|
|
||||||
|
def GetDataBreakpointInfo( self,
|
||||||
|
then,
|
||||||
|
buf = None,
|
||||||
|
line_num = None ):
|
||||||
|
variable: Variable
|
||||||
|
view: View
|
||||||
|
|
||||||
|
if not self._server_capabilities.get( 'supportsDataBreakpoints' ):
|
||||||
|
return None
|
||||||
|
|
||||||
|
variable, view = self._GetVariable( buf, line_num )
|
||||||
|
if variable is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
arguments = {
|
||||||
|
'name': variable.variable[ 'name' ],
|
||||||
|
}
|
||||||
|
if variable.IsContained():
|
||||||
|
arguments[ 'variablesReference' ] = (
|
||||||
|
variable.container.VariablesReference() )
|
||||||
|
|
||||||
|
self._connection.DoRequest( lambda msg: then( msg[ 'body' ] ), {
|
||||||
|
'command': 'dataBreakpointInfo',
|
||||||
|
'arguments': arguments,
|
||||||
|
} )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def _DrawVariables( self, view, variables, indent, is_short = False ):
|
def _DrawVariables( self, view, variables, indent, is_short = False ):
|
||||||
assert indent > 0
|
assert indent > 0
|
||||||
|
|
|
||||||
12
run_tests
12
run_tests
|
|
@ -21,7 +21,7 @@ out_fd=1
|
||||||
|
|
||||||
while [ -n "$1" ]; do
|
while [ -n "$1" ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
"--basedir"|"--base-dir"|"--test-base")
|
"--basedir")
|
||||||
shift
|
shift
|
||||||
SetBaseDir $1
|
SetBaseDir $1
|
||||||
shift
|
shift
|
||||||
|
|
@ -36,7 +36,7 @@ while [ -n "$1" ]; do
|
||||||
INSTALL=$1
|
INSTALL=$1
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
"--update"|"--upgrade")
|
"--update")
|
||||||
UPDATE=1
|
UPDATE=1
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
|
@ -91,8 +91,7 @@ if [ "$INSTALL" = "1" ] || [ "$INSTALL" = "script" ]; then
|
||||||
if ! python3 $(dirname $0)/install_gadget.py \
|
if ! python3 $(dirname $0)/install_gadget.py \
|
||||||
--basedir ${BASEDIR} \
|
--basedir ${BASEDIR} \
|
||||||
${INSTALLER_ARGS} \
|
${INSTALLER_ARGS} \
|
||||||
--all \
|
--all; then
|
||||||
--force-enable-csharp; then
|
|
||||||
echo "Script installation reported errors" >&2
|
echo "Script installation reported errors" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
@ -103,7 +102,7 @@ if [ "$INSTALL" = "1" ] || [ "$INSTALL" = "vim" ]; then
|
||||||
--cmd "${BASEDIR_CMD}" \
|
--cmd "${BASEDIR_CMD}" \
|
||||||
-c 'autocmd User VimspectorInstallSuccess qa!' \
|
-c 'autocmd User VimspectorInstallSuccess qa!' \
|
||||||
-c 'autocmd User VimspectorInstallFailed cquit!' \
|
-c 'autocmd User VimspectorInstallFailed cquit!' \
|
||||||
-c "VimspectorInstall --all netcoredbg"; then
|
-c "VimspectorInstall --all"; then
|
||||||
echo "Vim installation reported errors" >&2
|
echo "Vim installation reported errors" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
@ -145,9 +144,6 @@ set -e
|
||||||
pushd tests/testdata/cpp/simple
|
pushd tests/testdata/cpp/simple
|
||||||
make clean all
|
make clean all
|
||||||
popd
|
popd
|
||||||
pushd support/test/csharp
|
|
||||||
dotnet build
|
|
||||||
popd
|
|
||||||
set +e
|
set +e
|
||||||
echo "%DONE - built test programs"
|
echo "%DONE - built test programs"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ function s:SetUpTerminal()
|
||||||
let padding = 4
|
let padding = 4
|
||||||
let cols = max( [ min( [ &columns - left_bar - code - padding, 80 ] ), 10 ] )
|
let cols = max( [ min( [ &columns - left_bar - code - padding, 80 ] ), 10 ] )
|
||||||
call win_gotoid( terminal_win )
|
call win_gotoid( terminal_win )
|
||||||
execute string(cols) . 'wincmd |'
|
execute cols . 'wincmd |'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:CustomiseWinBar()
|
function! s:CustomiseWinBar()
|
||||||
|
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
# Manually updating shipped gadgets
|
|
||||||
|
|
||||||
Download the gadget files manuall from their official source into this dir.
|
|
||||||
Run `./checksum.py <list of files>` to get the checksums.
|
|
||||||
|
|
||||||
Update ../../python3/vimspector/gadgets.py with the new version and the
|
|
||||||
checksums.
|
|
||||||
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
import hashlib
|
|
||||||
import sys
|
|
||||||
|
|
||||||
|
|
||||||
def GetChecksumSHA254( file_path ):
|
|
||||||
with open( file_path, 'rb' ) as existing_file:
|
|
||||||
return hashlib.sha256( existing_file.read() ).hexdigest()
|
|
||||||
|
|
||||||
|
|
||||||
for arg in sys.argv[ 1: ]:
|
|
||||||
print( f"{ arg } = { GetChecksumSHA254( arg ) }" )
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
{
|
|
||||||
"$schema": "https://puremourning.github.io/vimspector/schema/vimspector.schema.json",
|
|
||||||
"configurations": {
|
|
||||||
"Run Current Script": {
|
|
||||||
"adapter": "vscode-bash",
|
|
||||||
"autoselect": false,
|
|
||||||
"configuration": {
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${file}",
|
|
||||||
"cwd": "${fileDirname}",
|
|
||||||
"args": [ "*${args}" ]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -15,15 +15,6 @@
|
||||||
"program": "${workspaceRoot}/test",
|
"program": "${workspaceRoot}/test",
|
||||||
"stopAtEntry": true
|
"stopAtEntry": true
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"cpptools": {
|
|
||||||
"adapter": "vscode-cpptools",
|
|
||||||
"configuration": {
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceRoot}/test",
|
|
||||||
"stopOnEntry": true,
|
|
||||||
"MIMode": "lldb"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
def Settings( **kwargs ):
|
def Settings( **kwargs ):
|
||||||
return {
|
return {
|
||||||
'flags': [ '-x', 'c++', '-Wall', '-Wextra', '-std=c++17' ]
|
'flags': [ '-x', 'c++', '-Wall', '-Wextra' ]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
1
support/test/csharp/.gitignore
vendored
1
support/test/csharp/.gitignore
vendored
|
|
@ -1,3 +1,2 @@
|
||||||
bin/
|
bin/
|
||||||
obj/Debug
|
obj/Debug
|
||||||
obj/
|
|
||||||
|
|
|
||||||
|
|
@ -1,57 +1,25 @@
|
||||||
{
|
{
|
||||||
"adapters": {
|
"configurations": {
|
||||||
"netcoredbg-debuglog": {
|
"launch - netcoredbg": {
|
||||||
"attach": {
|
"adapter": "netcoredbg",
|
||||||
"pidProperty": "processId",
|
"configuration": {
|
||||||
"pidSelect": "ask"
|
"request": "launch",
|
||||||
|
"program": "${workspaceRoot}/bin/Debug/netcoreapp2.2/csharp.dll",
|
||||||
|
"args": [],
|
||||||
|
"stopAtEntry": true
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"command": [
|
"launch - mono": {
|
||||||
"${gadgetDir}/netcoredbg/netcoredbg",
|
"adapter": "vscode-mono-debug",
|
||||||
"--interpreter=vscode",
|
"configuration": {
|
||||||
"--engineLogging=${workspaceRoot}/netcoredbg.engine.log",
|
"request": "launch",
|
||||||
"--log=${workspaceRoot}/netcoredbg.log"
|
"program": "${workspaceRoot}/Program.exe",
|
||||||
],
|
"console": "integratedTerminal",
|
||||||
"configuration": {
|
"cwd": "${workspaceRoot}",
|
||||||
"cwd": "${workspaceRoot}"
|
"args": [],
|
||||||
},
|
"env": {}
|
||||||
"name": "netcoredbg"
|
}
|
||||||
}
|
|
||||||
},
|
|
||||||
"configurations": {
|
|
||||||
//
|
|
||||||
// NOTE:
|
|
||||||
// If you add to this, you must update tests/get_configurations.test.vim
|
|
||||||
//
|
|
||||||
|
|
||||||
"launch - netcoredbg": {
|
|
||||||
"adapter": "netcoredbg",
|
|
||||||
"configuration": {
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceRoot}/bin/Debug/netcoreapp3.1/csharp.dll",
|
|
||||||
"args": [],
|
|
||||||
"stopAtEntry": false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"launch - netcoredbg - with debug log": {
|
|
||||||
"adapter": "netcoredbg-debuglog",
|
|
||||||
"configuration": {
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceRoot}/bin/Debug/netcoreapp3.1/csharp.dll",
|
|
||||||
"args": [],
|
|
||||||
"stopAtEntry": false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"launch - mono": {
|
|
||||||
"adapter": "vscode-mono-debug",
|
|
||||||
"configuration": {
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceRoot}/Program.exe",
|
|
||||||
"console": "integratedTerminal",
|
|
||||||
"cwd": "${workspaceRoot}",
|
|
||||||
"args": [],
|
|
||||||
"env": {}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
<TargetFramework>netcoreapp2.2</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 15
|
# Visual Studio 15
|
||||||
VisualStudioVersion = 15.0.26124.0
|
VisualStudioVersion = 15.0.26124.0
|
||||||
MinimumVisualStudioVersion = 15.0.26124.0
|
MinimumVisualStudioVersion = 15.0.26124.0
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csharp", "csharp.csproj", "{91DB205F-E422-430B-BBB8-955110C7B3B6}"
|
|
||||||
EndProject
|
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
|
@ -17,18 +15,4 @@ Global
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
|
||||||
{91DB205F-E422-430B-BBB8-955110C7B3B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{91DB205F-E422-430B-BBB8-955110C7B3B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{91DB205F-E422-430B-BBB8-955110C7B3B6}.Debug|x64.ActiveCfg = Debug|Any CPU
|
|
||||||
{91DB205F-E422-430B-BBB8-955110C7B3B6}.Debug|x64.Build.0 = Debug|Any CPU
|
|
||||||
{91DB205F-E422-430B-BBB8-955110C7B3B6}.Debug|x86.ActiveCfg = Debug|Any CPU
|
|
||||||
{91DB205F-E422-430B-BBB8-955110C7B3B6}.Debug|x86.Build.0 = Debug|Any CPU
|
|
||||||
{91DB205F-E422-430B-BBB8-955110C7B3B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{91DB205F-E422-430B-BBB8-955110C7B3B6}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{91DB205F-E422-430B-BBB8-955110C7B3B6}.Release|x64.ActiveCfg = Release|Any CPU
|
|
||||||
{91DB205F-E422-430B-BBB8-955110C7B3B6}.Release|x64.Build.0 = Release|Any CPU
|
|
||||||
{91DB205F-E422-430B-BBB8-955110C7B3B6}.Release|x86.ActiveCfg = Release|Any CPU
|
|
||||||
{91DB205F-E422-430B-BBB8-955110C7B3B6}.Release|x86.Build.0 = Release|Any CPU
|
|
||||||
EndGlobalSection
|
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|
|
||||||
5
support/test/csharp/obj/csharp.csproj.nuget.cache
Normal file
5
support/test/csharp/obj/csharp.csproj.nuget.cache
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"dgSpecHash": "6/vdr7YprlSIoQecv/nNuLNflFpO0X7eN7jHUinZTsgian9nYpmHMWirsDWMi5l+29TH+Qy8O/QfaB/48QtjRQ==",
|
||||||
|
"success": true
|
||||||
|
}
|
||||||
21
support/test/csharp/obj/csharp.csproj.nuget.g.props
Normal file
21
support/test/csharp/obj/csharp.csproj.nuget.g.props
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
|
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||||
|
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||||
|
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||||
|
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/Users/ben/.nuget/packages/</NuGetPackageRoot>
|
||||||
|
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/Users/ben/.nuget/packages/;/usr/local/share/dotnet/sdk/NuGetFallbackFolder</NuGetPackageFolders>
|
||||||
|
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||||
|
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">5.7.0</NuGetToolVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
|
<SourceRoot Include="$([MSBuild]::EnsureTrailingSlash($(NuGetPackageFolders)))" />
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
|
<Import Project="/usr/local/share/dotnet/sdk/NuGetFallbackFolder/microsoft.netcore.app/2.2.0/build/netcoreapp2.2/Microsoft.NETCore.App.props" Condition="Exists('/usr/local/share/dotnet/sdk/NuGetFallbackFolder/microsoft.netcore.app/2.2.0/build/netcoreapp2.2/Microsoft.NETCore.App.props')" />
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
||||||
10
support/test/csharp/obj/csharp.csproj.nuget.g.targets
Normal file
10
support/test/csharp/obj/csharp.csproj.nuget.g.targets
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
|
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||||
|
<Import Project="/usr/local/share/dotnet/sdk/NuGetFallbackFolder/netstandard.library/2.0.3/build/netstandard2.0/NETStandard.Library.targets" Condition="Exists('/usr/local/share/dotnet/sdk/NuGetFallbackFolder/netstandard.library/2.0.3/build/netstandard2.0/NETStandard.Library.targets')" />
|
||||||
|
<Import Project="/usr/local/share/dotnet/sdk/NuGetFallbackFolder/microsoft.netcore.app/2.2.0/build/netcoreapp2.2/Microsoft.NETCore.App.targets" Condition="Exists('/usr/local/share/dotnet/sdk/NuGetFallbackFolder/microsoft.netcore.app/2.2.0/build/netcoreapp2.2/Microsoft.NETCore.App.targets')" />
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
||||||
748
support/test/csharp/obj/project.assets.json
Normal file
748
support/test/csharp/obj/project.assets.json
Normal file
|
|
@ -0,0 +1,748 @@
|
||||||
|
{
|
||||||
|
"version": 3,
|
||||||
|
"targets": {
|
||||||
|
".NETCoreApp,Version=v2.2": {
|
||||||
|
"Microsoft.NETCore.App/2.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.DotNetHostPolicy": "2.2.0",
|
||||||
|
"Microsoft.NETCore.Platforms": "2.2.0",
|
||||||
|
"Microsoft.NETCore.Targets": "2.0.0",
|
||||||
|
"NETStandard.Library": "2.0.3"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"ref/netcoreapp2.2/Microsoft.CSharp.dll": {},
|
||||||
|
"ref/netcoreapp2.2/Microsoft.VisualBasic.dll": {},
|
||||||
|
"ref/netcoreapp2.2/Microsoft.Win32.Primitives.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.AppContext.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Buffers.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Collections.Concurrent.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Collections.Immutable.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Collections.NonGeneric.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Collections.Specialized.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Collections.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.ComponentModel.Annotations.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.ComponentModel.DataAnnotations.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.ComponentModel.EventBasedAsync.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.ComponentModel.Primitives.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.ComponentModel.TypeConverter.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.ComponentModel.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Configuration.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Console.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Core.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Data.Common.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Data.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.Contracts.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.Debug.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.DiagnosticSource.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.FileVersionInfo.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.Process.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.StackTrace.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.TextWriterTraceListener.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.Tools.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.TraceSource.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.Tracing.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Drawing.Primitives.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Drawing.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Dynamic.Runtime.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Globalization.Calendars.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Globalization.Extensions.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Globalization.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.IO.Compression.Brotli.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.IO.Compression.FileSystem.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.IO.Compression.ZipFile.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.IO.Compression.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.IO.FileSystem.DriveInfo.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.IO.FileSystem.Primitives.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.IO.FileSystem.Watcher.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.IO.FileSystem.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.IO.IsolatedStorage.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.IO.MemoryMappedFiles.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.IO.Pipes.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.IO.UnmanagedMemoryStream.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.IO.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Linq.Expressions.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Linq.Parallel.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Linq.Queryable.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Linq.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Memory.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Net.Http.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Net.HttpListener.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Net.Mail.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Net.NameResolution.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Net.NetworkInformation.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Net.Ping.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Net.Primitives.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Net.Requests.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Net.Security.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Net.ServicePoint.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Net.Sockets.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Net.WebClient.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Net.WebHeaderCollection.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Net.WebProxy.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Net.WebSockets.Client.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Net.WebSockets.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Net.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Numerics.Vectors.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Numerics.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.ObjectModel.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.DispatchProxy.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.Emit.ILGeneration.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.Emit.Lightweight.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.Emit.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.Extensions.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.Metadata.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.Primitives.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.TypeExtensions.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Resources.Reader.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Resources.ResourceManager.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Resources.Writer.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.CompilerServices.VisualC.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Extensions.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Handles.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.InteropServices.RuntimeInformation.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.InteropServices.WindowsRuntime.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.InteropServices.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Loader.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Numerics.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Serialization.Formatters.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Serialization.Json.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Serialization.Primitives.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Serialization.Xml.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Serialization.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Security.Claims.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Security.Cryptography.Algorithms.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Security.Cryptography.Csp.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Security.Cryptography.Encoding.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Security.Cryptography.Primitives.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Security.Cryptography.X509Certificates.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Security.Principal.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Security.SecureString.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Security.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.ServiceModel.Web.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.ServiceProcess.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Text.Encoding.Extensions.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Text.Encoding.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Text.RegularExpressions.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Overlapped.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Tasks.Dataflow.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Tasks.Extensions.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Tasks.Parallel.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Tasks.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Thread.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Threading.ThreadPool.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Timer.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Threading.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Transactions.Local.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Transactions.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.ValueTuple.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Web.HttpUtility.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Web.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Windows.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Xml.Linq.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Xml.ReaderWriter.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Xml.Serialization.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Xml.XDocument.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Xml.XPath.XDocument.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Xml.XPath.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Xml.XmlDocument.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Xml.XmlSerializer.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.Xml.dll": {},
|
||||||
|
"ref/netcoreapp2.2/System.dll": {},
|
||||||
|
"ref/netcoreapp2.2/WindowsBase.dll": {},
|
||||||
|
"ref/netcoreapp2.2/mscorlib.dll": {},
|
||||||
|
"ref/netcoreapp2.2/netstandard.dll": {}
|
||||||
|
},
|
||||||
|
"build": {
|
||||||
|
"build/netcoreapp2.2/Microsoft.NETCore.App.props": {},
|
||||||
|
"build/netcoreapp2.2/Microsoft.NETCore.App.targets": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.NETCore.DotNetAppHost/2.2.0": {
|
||||||
|
"type": "package"
|
||||||
|
},
|
||||||
|
"Microsoft.NETCore.DotNetHostPolicy/2.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.DotNetHostResolver": "2.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.NETCore.DotNetHostResolver/2.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.DotNetAppHost": "2.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.NETCore.Platforms/2.2.0": {
|
||||||
|
"type": "package",
|
||||||
|
"compile": {
|
||||||
|
"lib/netstandard1.0/_._": {}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard1.0/_._": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.NETCore.Targets/2.0.0": {
|
||||||
|
"type": "package",
|
||||||
|
"compile": {
|
||||||
|
"lib/netstandard1.0/_._": {}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard1.0/_._": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"NETStandard.Library/2.0.3": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.Platforms": "1.1.0"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/netstandard1.0/_._": {}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/netstandard1.0/_._": {}
|
||||||
|
},
|
||||||
|
"build": {
|
||||||
|
"build/netstandard2.0/NETStandard.Library.targets": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"libraries": {
|
||||||
|
"Microsoft.NETCore.App/2.2.0": {
|
||||||
|
"sha512": "7z5l8Jp324S8bU8+yyWeYHXUFYvKyiI5lqS1dXgTzOx1H69Qbf6df12kCKlNX45LpMfCMd4U3M6p7Rl5Zk7SLA==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.netcore.app/2.2.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"LICENSE.TXT",
|
||||||
|
"Microsoft.NETCore.App.versions.txt",
|
||||||
|
"THIRD-PARTY-NOTICES.TXT",
|
||||||
|
"build/netcoreapp2.2/Microsoft.NETCore.App.PlatformManifest.txt",
|
||||||
|
"build/netcoreapp2.2/Microsoft.NETCore.App.props",
|
||||||
|
"build/netcoreapp2.2/Microsoft.NETCore.App.targets",
|
||||||
|
"microsoft.netcore.app.2.2.0.nupkg.sha512",
|
||||||
|
"microsoft.netcore.app.nuspec",
|
||||||
|
"ref/netcoreapp2.2/Microsoft.CSharp.dll",
|
||||||
|
"ref/netcoreapp2.2/Microsoft.CSharp.xml",
|
||||||
|
"ref/netcoreapp2.2/Microsoft.VisualBasic.dll",
|
||||||
|
"ref/netcoreapp2.2/Microsoft.VisualBasic.xml",
|
||||||
|
"ref/netcoreapp2.2/Microsoft.Win32.Primitives.dll",
|
||||||
|
"ref/netcoreapp2.2/Microsoft.Win32.Primitives.xml",
|
||||||
|
"ref/netcoreapp2.2/System.AppContext.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Buffers.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Buffers.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Collections.Concurrent.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Collections.Concurrent.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Collections.Immutable.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Collections.Immutable.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Collections.NonGeneric.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Collections.NonGeneric.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Collections.Specialized.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Collections.Specialized.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Collections.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Collections.xml",
|
||||||
|
"ref/netcoreapp2.2/System.ComponentModel.Annotations.dll",
|
||||||
|
"ref/netcoreapp2.2/System.ComponentModel.Annotations.xml",
|
||||||
|
"ref/netcoreapp2.2/System.ComponentModel.DataAnnotations.dll",
|
||||||
|
"ref/netcoreapp2.2/System.ComponentModel.EventBasedAsync.dll",
|
||||||
|
"ref/netcoreapp2.2/System.ComponentModel.EventBasedAsync.xml",
|
||||||
|
"ref/netcoreapp2.2/System.ComponentModel.Primitives.dll",
|
||||||
|
"ref/netcoreapp2.2/System.ComponentModel.Primitives.xml",
|
||||||
|
"ref/netcoreapp2.2/System.ComponentModel.TypeConverter.dll",
|
||||||
|
"ref/netcoreapp2.2/System.ComponentModel.TypeConverter.xml",
|
||||||
|
"ref/netcoreapp2.2/System.ComponentModel.dll",
|
||||||
|
"ref/netcoreapp2.2/System.ComponentModel.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Configuration.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Console.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Console.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Core.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Data.Common.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Data.Common.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Data.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.Contracts.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.Contracts.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.Debug.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.Debug.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.DiagnosticSource.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.DiagnosticSource.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.FileVersionInfo.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.FileVersionInfo.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.Process.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.Process.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.StackTrace.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.StackTrace.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.TextWriterTraceListener.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.TextWriterTraceListener.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.Tools.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.Tools.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.TraceSource.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.TraceSource.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.Tracing.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Diagnostics.Tracing.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Drawing.Primitives.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Drawing.Primitives.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Drawing.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Dynamic.Runtime.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Globalization.Calendars.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Globalization.Extensions.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Globalization.dll",
|
||||||
|
"ref/netcoreapp2.2/System.IO.Compression.Brotli.dll",
|
||||||
|
"ref/netcoreapp2.2/System.IO.Compression.FileSystem.dll",
|
||||||
|
"ref/netcoreapp2.2/System.IO.Compression.ZipFile.dll",
|
||||||
|
"ref/netcoreapp2.2/System.IO.Compression.ZipFile.xml",
|
||||||
|
"ref/netcoreapp2.2/System.IO.Compression.dll",
|
||||||
|
"ref/netcoreapp2.2/System.IO.Compression.xml",
|
||||||
|
"ref/netcoreapp2.2/System.IO.FileSystem.DriveInfo.dll",
|
||||||
|
"ref/netcoreapp2.2/System.IO.FileSystem.DriveInfo.xml",
|
||||||
|
"ref/netcoreapp2.2/System.IO.FileSystem.Primitives.dll",
|
||||||
|
"ref/netcoreapp2.2/System.IO.FileSystem.Watcher.dll",
|
||||||
|
"ref/netcoreapp2.2/System.IO.FileSystem.Watcher.xml",
|
||||||
|
"ref/netcoreapp2.2/System.IO.FileSystem.dll",
|
||||||
|
"ref/netcoreapp2.2/System.IO.FileSystem.xml",
|
||||||
|
"ref/netcoreapp2.2/System.IO.IsolatedStorage.dll",
|
||||||
|
"ref/netcoreapp2.2/System.IO.IsolatedStorage.xml",
|
||||||
|
"ref/netcoreapp2.2/System.IO.MemoryMappedFiles.dll",
|
||||||
|
"ref/netcoreapp2.2/System.IO.MemoryMappedFiles.xml",
|
||||||
|
"ref/netcoreapp2.2/System.IO.Pipes.dll",
|
||||||
|
"ref/netcoreapp2.2/System.IO.Pipes.xml",
|
||||||
|
"ref/netcoreapp2.2/System.IO.UnmanagedMemoryStream.dll",
|
||||||
|
"ref/netcoreapp2.2/System.IO.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Linq.Expressions.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Linq.Expressions.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Linq.Parallel.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Linq.Parallel.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Linq.Queryable.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Linq.Queryable.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Linq.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Linq.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Memory.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Memory.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Net.Http.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Net.Http.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Net.HttpListener.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Net.HttpListener.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Net.Mail.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Net.Mail.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Net.NameResolution.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Net.NameResolution.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Net.NetworkInformation.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Net.NetworkInformation.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Net.Ping.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Net.Ping.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Net.Primitives.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Net.Primitives.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Net.Requests.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Net.Requests.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Net.Security.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Net.Security.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Net.ServicePoint.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Net.ServicePoint.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Net.Sockets.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Net.Sockets.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Net.WebClient.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Net.WebClient.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Net.WebHeaderCollection.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Net.WebHeaderCollection.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Net.WebProxy.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Net.WebProxy.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Net.WebSockets.Client.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Net.WebSockets.Client.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Net.WebSockets.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Net.WebSockets.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Net.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Numerics.Vectors.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Numerics.Vectors.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Numerics.dll",
|
||||||
|
"ref/netcoreapp2.2/System.ObjectModel.dll",
|
||||||
|
"ref/netcoreapp2.2/System.ObjectModel.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.DispatchProxy.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.DispatchProxy.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.Emit.ILGeneration.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.Emit.ILGeneration.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.Emit.Lightweight.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.Emit.Lightweight.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.Emit.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.Emit.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.Extensions.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.Metadata.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.Metadata.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.Primitives.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.Primitives.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.TypeExtensions.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.TypeExtensions.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Reflection.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Resources.Reader.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Resources.ResourceManager.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Resources.ResourceManager.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Resources.Writer.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Resources.Writer.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.CompilerServices.VisualC.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.CompilerServices.VisualC.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Extensions.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Extensions.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Handles.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.InteropServices.RuntimeInformation.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.InteropServices.RuntimeInformation.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.InteropServices.WindowsRuntime.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.InteropServices.WindowsRuntime.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.InteropServices.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.InteropServices.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Loader.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Loader.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Numerics.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Numerics.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Serialization.Formatters.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Serialization.Formatters.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Serialization.Json.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Serialization.Json.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Serialization.Primitives.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Serialization.Primitives.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Serialization.Xml.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Serialization.Xml.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.Serialization.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Runtime.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Security.Claims.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Security.Claims.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Security.Cryptography.Algorithms.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Security.Cryptography.Algorithms.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Security.Cryptography.Csp.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Security.Cryptography.Csp.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Security.Cryptography.Encoding.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Security.Cryptography.Encoding.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Security.Cryptography.Primitives.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Security.Cryptography.Primitives.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Security.Cryptography.X509Certificates.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Security.Cryptography.X509Certificates.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Security.Principal.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Security.Principal.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Security.SecureString.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Security.dll",
|
||||||
|
"ref/netcoreapp2.2/System.ServiceModel.Web.dll",
|
||||||
|
"ref/netcoreapp2.2/System.ServiceProcess.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Text.Encoding.Extensions.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Text.Encoding.Extensions.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Text.Encoding.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Text.RegularExpressions.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Text.RegularExpressions.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Overlapped.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Overlapped.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Tasks.Dataflow.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Tasks.Dataflow.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Tasks.Extensions.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Tasks.Extensions.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Tasks.Parallel.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Tasks.Parallel.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Tasks.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Tasks.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Thread.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Thread.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Threading.ThreadPool.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Threading.ThreadPool.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Timer.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Threading.Timer.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Threading.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Threading.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Transactions.Local.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Transactions.Local.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Transactions.dll",
|
||||||
|
"ref/netcoreapp2.2/System.ValueTuple.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Web.HttpUtility.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Web.HttpUtility.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Web.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Windows.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Xml.Linq.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Xml.ReaderWriter.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Xml.ReaderWriter.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Xml.Serialization.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Xml.XDocument.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Xml.XDocument.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Xml.XPath.XDocument.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Xml.XPath.XDocument.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Xml.XPath.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Xml.XPath.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Xml.XmlDocument.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Xml.XmlSerializer.dll",
|
||||||
|
"ref/netcoreapp2.2/System.Xml.XmlSerializer.xml",
|
||||||
|
"ref/netcoreapp2.2/System.Xml.dll",
|
||||||
|
"ref/netcoreapp2.2/System.dll",
|
||||||
|
"ref/netcoreapp2.2/WindowsBase.dll",
|
||||||
|
"ref/netcoreapp2.2/mscorlib.dll",
|
||||||
|
"ref/netcoreapp2.2/netstandard.dll",
|
||||||
|
"runtime.json"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Microsoft.NETCore.DotNetAppHost/2.2.0": {
|
||||||
|
"sha512": "DrhaKInRKKvN6Ns2VNIlC7ZffLOp9THf8cO6X4fytPRJovJUbF49/zzx4WfgX9E44FMsw9hT8hrKiIqDSHvGvA==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.netcore.dotnetapphost/2.2.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"LICENSE.TXT",
|
||||||
|
"THIRD-PARTY-NOTICES.TXT",
|
||||||
|
"microsoft.netcore.dotnetapphost.2.2.0.nupkg.sha512",
|
||||||
|
"microsoft.netcore.dotnetapphost.nuspec",
|
||||||
|
"runtime.json"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Microsoft.NETCore.DotNetHostPolicy/2.2.0": {
|
||||||
|
"sha512": "FJie7IoPZFaPgNDxhZGmDBQP/Bs5vPdfca/G2Wf9gd6LIvMYkZcibtmJwB4tcf4KXkaOYfIOo4Cl9sEPMsSzkw==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.netcore.dotnethostpolicy/2.2.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"LICENSE.TXT",
|
||||||
|
"THIRD-PARTY-NOTICES.TXT",
|
||||||
|
"microsoft.netcore.dotnethostpolicy.2.2.0.nupkg.sha512",
|
||||||
|
"microsoft.netcore.dotnethostpolicy.nuspec",
|
||||||
|
"runtime.json"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Microsoft.NETCore.DotNetHostResolver/2.2.0": {
|
||||||
|
"sha512": "spDm3AJYmebthDNhzY17YLPtvbc+Y1lCLVeiIH1uLJ/hZaM+40pBiPefFR8J1u66Ndkqi8ipR2tEbqPnYnjRhw==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.netcore.dotnethostresolver/2.2.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"LICENSE.TXT",
|
||||||
|
"THIRD-PARTY-NOTICES.TXT",
|
||||||
|
"microsoft.netcore.dotnethostresolver.2.2.0.nupkg.sha512",
|
||||||
|
"microsoft.netcore.dotnethostresolver.nuspec",
|
||||||
|
"runtime.json"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Microsoft.NETCore.Platforms/2.2.0": {
|
||||||
|
"sha512": "T/J+XZo+YheFTJh8/4uoeJDdz5qOmOMkjg6/VL8mHJ9AnP8+fmV/kcbxeXsob0irRNiChf+V0ig1MCRLp/+Kog==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.netcore.platforms/2.2.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"LICENSE.TXT",
|
||||||
|
"THIRD-PARTY-NOTICES.TXT",
|
||||||
|
"lib/netstandard1.0/_._",
|
||||||
|
"microsoft.netcore.platforms.2.2.0.nupkg.sha512",
|
||||||
|
"microsoft.netcore.platforms.nuspec",
|
||||||
|
"runtime.json",
|
||||||
|
"useSharedDesignerContext.txt",
|
||||||
|
"version.txt"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Microsoft.NETCore.Targets/2.0.0": {
|
||||||
|
"sha512": "odP/tJj1z6GylFpNo7pMtbd/xQgTC3Ex2If63dRTL38bBNMwsBnJ+RceUIyHdRBC0oik/3NehYT+oECwBhIM3Q==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "microsoft.netcore.targets/2.0.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
"LICENSE.TXT",
|
||||||
|
"THIRD-PARTY-NOTICES.TXT",
|
||||||
|
"lib/netstandard1.0/_._",
|
||||||
|
"microsoft.netcore.targets.2.0.0.nupkg.sha512",
|
||||||
|
"microsoft.netcore.targets.nuspec",
|
||||||
|
"runtime.json",
|
||||||
|
"useSharedDesignerContext.txt",
|
||||||
|
"version.txt"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"NETStandard.Library/2.0.3": {
|
||||||
|
"sha512": "st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "netstandard.library/2.0.3",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
"LICENSE.TXT",
|
||||||
|
"THIRD-PARTY-NOTICES.TXT",
|
||||||
|
"build/netstandard2.0/NETStandard.Library.targets",
|
||||||
|
"build/netstandard2.0/ref/Microsoft.Win32.Primitives.dll",
|
||||||
|
"build/netstandard2.0/ref/System.AppContext.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Collections.Concurrent.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Collections.NonGeneric.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Collections.Specialized.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Collections.dll",
|
||||||
|
"build/netstandard2.0/ref/System.ComponentModel.Composition.dll",
|
||||||
|
"build/netstandard2.0/ref/System.ComponentModel.EventBasedAsync.dll",
|
||||||
|
"build/netstandard2.0/ref/System.ComponentModel.Primitives.dll",
|
||||||
|
"build/netstandard2.0/ref/System.ComponentModel.TypeConverter.dll",
|
||||||
|
"build/netstandard2.0/ref/System.ComponentModel.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Console.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Core.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Data.Common.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Data.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Diagnostics.Contracts.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Diagnostics.Debug.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Diagnostics.FileVersionInfo.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Diagnostics.Process.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Diagnostics.StackTrace.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Diagnostics.TextWriterTraceListener.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Diagnostics.Tools.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Diagnostics.TraceSource.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Diagnostics.Tracing.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Drawing.Primitives.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Drawing.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Dynamic.Runtime.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Globalization.Calendars.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Globalization.Extensions.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Globalization.dll",
|
||||||
|
"build/netstandard2.0/ref/System.IO.Compression.FileSystem.dll",
|
||||||
|
"build/netstandard2.0/ref/System.IO.Compression.ZipFile.dll",
|
||||||
|
"build/netstandard2.0/ref/System.IO.Compression.dll",
|
||||||
|
"build/netstandard2.0/ref/System.IO.FileSystem.DriveInfo.dll",
|
||||||
|
"build/netstandard2.0/ref/System.IO.FileSystem.Primitives.dll",
|
||||||
|
"build/netstandard2.0/ref/System.IO.FileSystem.Watcher.dll",
|
||||||
|
"build/netstandard2.0/ref/System.IO.FileSystem.dll",
|
||||||
|
"build/netstandard2.0/ref/System.IO.IsolatedStorage.dll",
|
||||||
|
"build/netstandard2.0/ref/System.IO.MemoryMappedFiles.dll",
|
||||||
|
"build/netstandard2.0/ref/System.IO.Pipes.dll",
|
||||||
|
"build/netstandard2.0/ref/System.IO.UnmanagedMemoryStream.dll",
|
||||||
|
"build/netstandard2.0/ref/System.IO.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Linq.Expressions.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Linq.Parallel.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Linq.Queryable.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Linq.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Net.Http.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Net.NameResolution.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Net.NetworkInformation.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Net.Ping.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Net.Primitives.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Net.Requests.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Net.Security.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Net.Sockets.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Net.WebHeaderCollection.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Net.WebSockets.Client.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Net.WebSockets.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Net.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Numerics.dll",
|
||||||
|
"build/netstandard2.0/ref/System.ObjectModel.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Reflection.Extensions.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Reflection.Primitives.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Reflection.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Resources.Reader.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Resources.ResourceManager.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Resources.Writer.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Runtime.CompilerServices.VisualC.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Runtime.Extensions.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Runtime.Handles.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Runtime.InteropServices.RuntimeInformation.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Runtime.InteropServices.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Runtime.Numerics.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Runtime.Serialization.Formatters.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Runtime.Serialization.Json.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Runtime.Serialization.Primitives.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Runtime.Serialization.Xml.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Runtime.Serialization.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Runtime.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Security.Claims.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Security.Cryptography.Algorithms.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Security.Cryptography.Csp.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Security.Cryptography.Encoding.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Security.Cryptography.Primitives.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Security.Cryptography.X509Certificates.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Security.Principal.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Security.SecureString.dll",
|
||||||
|
"build/netstandard2.0/ref/System.ServiceModel.Web.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Text.Encoding.Extensions.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Text.Encoding.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Text.RegularExpressions.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Threading.Overlapped.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Threading.Tasks.Parallel.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Threading.Tasks.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Threading.Thread.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Threading.ThreadPool.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Threading.Timer.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Threading.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Transactions.dll",
|
||||||
|
"build/netstandard2.0/ref/System.ValueTuple.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Web.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Windows.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Xml.Linq.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Xml.ReaderWriter.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Xml.Serialization.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Xml.XDocument.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Xml.XPath.XDocument.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Xml.XPath.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Xml.XmlDocument.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Xml.XmlSerializer.dll",
|
||||||
|
"build/netstandard2.0/ref/System.Xml.dll",
|
||||||
|
"build/netstandard2.0/ref/System.dll",
|
||||||
|
"build/netstandard2.0/ref/mscorlib.dll",
|
||||||
|
"build/netstandard2.0/ref/netstandard.dll",
|
||||||
|
"build/netstandard2.0/ref/netstandard.xml",
|
||||||
|
"lib/netstandard1.0/_._",
|
||||||
|
"netstandard.library.2.0.3.nupkg.sha512",
|
||||||
|
"netstandard.library.nuspec"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"projectFileDependencyGroups": {
|
||||||
|
".NETCoreApp,Version=v2.2": [
|
||||||
|
"Microsoft.NETCore.App >= 2.2.0"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"packageFolders": {
|
||||||
|
"/Users/ben/.nuget/packages/": {},
|
||||||
|
"/usr/local/share/dotnet/sdk/NuGetFallbackFolder": {}
|
||||||
|
},
|
||||||
|
"project": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"restore": {
|
||||||
|
"projectUniqueName": "/Users/ben/.vim/bundle/vimspector/support/test/csharp/csharp.csproj",
|
||||||
|
"projectName": "csharp",
|
||||||
|
"projectPath": "/Users/ben/.vim/bundle/vimspector/support/test/csharp/csharp.csproj",
|
||||||
|
"packagesPath": "/Users/ben/.nuget/packages/",
|
||||||
|
"outputPath": "/Users/ben/.vim/bundle/vimspector/support/test/csharp/obj/",
|
||||||
|
"projectStyle": "PackageReference",
|
||||||
|
"fallbackFolders": [
|
||||||
|
"/usr/local/share/dotnet/sdk/NuGetFallbackFolder"
|
||||||
|
],
|
||||||
|
"configFilePaths": [
|
||||||
|
"/Users/ben/.nuget/NuGet/NuGet.Config"
|
||||||
|
],
|
||||||
|
"originalTargetFrameworks": [
|
||||||
|
"netcoreapp2.2"
|
||||||
|
],
|
||||||
|
"sources": {
|
||||||
|
"https://api.nuget.org/v3/index.json": {}
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"netcoreapp2.2": {
|
||||||
|
"projectReferences": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"warningProperties": {
|
||||||
|
"warnAsError": [
|
||||||
|
"NU1605"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"frameworks": {
|
||||||
|
"netcoreapp2.2": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.NETCore.App": {
|
||||||
|
"suppressParent": "All",
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[2.2.0, )",
|
||||||
|
"autoReferenced": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"imports": [
|
||||||
|
"net461",
|
||||||
|
"net462",
|
||||||
|
"net47",
|
||||||
|
"net471",
|
||||||
|
"net472",
|
||||||
|
"net48"
|
||||||
|
],
|
||||||
|
"assetTargetFallback": true,
|
||||||
|
"warn": true,
|
||||||
|
"runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/3.1.402/RuntimeIdentifierGraph.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,18 +1,4 @@
|
||||||
{
|
{
|
||||||
"adapters": {
|
|
||||||
"dlv-dap": {
|
|
||||||
"variables": {
|
|
||||||
"port": "${unusedLocalPort}"
|
|
||||||
},
|
|
||||||
"command": [
|
|
||||||
"$HOME/go/bin/dlv",
|
|
||||||
"dap",
|
|
||||||
"--listen",
|
|
||||||
"127.0.0.1:${port}"
|
|
||||||
],
|
|
||||||
"port": "${port}"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"configurations": {
|
"configurations": {
|
||||||
"run": {
|
"run": {
|
||||||
"adapter": "vscode-go",
|
"adapter": "vscode-go",
|
||||||
|
|
@ -26,21 +12,6 @@
|
||||||
"env": { "GO111MODULE": "off" }
|
"env": { "GO111MODULE": "off" }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"run-dap": {
|
|
||||||
"adapter": "dlv-dap",
|
|
||||||
"configuration": {
|
|
||||||
"request": "launch",
|
|
||||||
"env": { "GO111MODULE": "off" },
|
|
||||||
|
|
||||||
"mode": "debug", // debug|test
|
|
||||||
"program": "${workspaceRoot}/hello-world.go"
|
|
||||||
|
|
||||||
// "args": [],
|
|
||||||
// "buildFlags": ...
|
|
||||||
// "stackTraceDepth": ...,
|
|
||||||
// "showGlobalVariables": true,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"run-exec": {
|
"run-exec": {
|
||||||
// NOTE: To use this you _must_ disable optimistaion:
|
// NOTE: To use this you _must_ disable optimistaion:
|
||||||
// go build -o hello_world -gcflags="all=-N -l"
|
// go build -o hello_world -gcflags="all=-N -l"
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,25 @@
|
||||||
package main
|
package main
|
||||||
import "fmt"
|
import "fmt"
|
||||||
|
|
||||||
|
type Toaster struct {
|
||||||
|
Power int
|
||||||
|
Colour string
|
||||||
|
}
|
||||||
|
|
||||||
|
type Test struct {
|
||||||
|
Test string
|
||||||
|
Toast Toaster
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
var v = "test"
|
var v = "test"
|
||||||
|
test := Test{
|
||||||
|
Test: "This is\na\ntest",
|
||||||
|
Toast: Toaster{
|
||||||
|
Power: 10,
|
||||||
|
Colour: "green",
|
||||||
|
},
|
||||||
|
}
|
||||||
fmt.Println("hello world: " + v)
|
fmt.Println("hello world: " + v)
|
||||||
|
fmt.Println("Hi " + test.Test)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
{
|
|
||||||
"configurations": {
|
|
||||||
"run-cmd": {
|
|
||||||
"adapter": "vscode-go",
|
|
||||||
"configuration": {
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceRoot}/cmd/namestartswithvowel/main.go",
|
|
||||||
"mode": "debug",
|
|
||||||
"dlvToolPath": "$HOME/go/bin/dlv",
|
|
||||||
"dlvLoadConfig": {
|
|
||||||
"maxArrayValues": 1000,
|
|
||||||
"maxStringLen": 1000
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"test-current-file": {
|
|
||||||
"adapter": "vscode-go",
|
|
||||||
"configuration": {
|
|
||||||
"request": "launch",
|
|
||||||
"mode": "test",
|
|
||||||
"program": "${fileDirname}",
|
|
||||||
"cwd": "${fileDirname}",
|
|
||||||
"dlvToolPath": "$GOPATH/bin/dlv",
|
|
||||||
"env": {},
|
|
||||||
"args": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
# Purpose
|
|
||||||
|
|
||||||
This example comes with two example vimspector configs for the Go programming language.
|
|
||||||
|
|
||||||
1) `run-cmd` will launch the main programme under `cmd/namestartswithvowel`.
|
|
||||||
1) `test-current-file` will run the tests in the current file in debug mode.
|
|
||||||
|
|
||||||
## Example use-cases
|
|
||||||
|
|
||||||
### run-cmd
|
|
||||||
|
|
||||||
* Open `cmd/namestartswithvowel/main.go`
|
|
||||||
* Add a breakpoint somewhere within the programme
|
|
||||||
* Start the debugger (`:call vimspector#Continue()` or your relevant keymapping)
|
|
||||||
* Select the first launch configuration (`1: run-cmd`)
|
|
||||||
|
|
||||||
### test-current-file
|
|
||||||
|
|
||||||
* Open `internal/vowels/vowels_test.go`
|
|
||||||
* Add a breakpoint somewhere within the test
|
|
||||||
* Start the debugger (`:call vimspector#Continue()` or your relevant keymapping)
|
|
||||||
* Select the second launch configuration (`2: test-current-file`)
|
|
||||||
|
|
||||||
## Additional Configuration
|
|
||||||
|
|
||||||
There are two additional configuration options specified under `run-cmd`; these parameters configure the maximum string/array size to be shown while debugging.
|
|
||||||
|
|
||||||
```
|
|
||||||
"dlvLoadConfig": {
|
|
||||||
"maxArrayValues": 1000,
|
|
||||||
"maxStringLen": 1000
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"example.com/internal/vowels"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
names := []string{"Simon", "Bob", "Jennifer", "Amy", "Duke", "Elizabeth"}
|
|
||||||
|
|
||||||
for _, n := range names {
|
|
||||||
if vowels.NameStartsWithVowel(n) {
|
|
||||||
fmt.Printf("%s starts with a vowel!\n", n)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Printf("%s does not start with a vowel!\n", n)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
module example.com
|
|
||||||
|
|
||||||
go 1.16
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
package vowels
|
|
||||||
|
|
||||||
import "strings"
|
|
||||||
|
|
||||||
func NameStartsWithVowel(name string) bool {
|
|
||||||
s := strings.Split(strings.ToLower(name), "")
|
|
||||||
|
|
||||||
return s[0] == "a" || s[0] == "e" || s[0] == "i" || s[0] == "o" || s[0] == "u"
|
|
||||||
}
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
package vowels
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestNameStartsWithVowel(t *testing.T) {
|
|
||||||
testCases := []struct {
|
|
||||||
input string
|
|
||||||
expectedOutput bool
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
input: "Simon",
|
|
||||||
expectedOutput: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
input: "Andy",
|
|
||||||
expectedOutput: true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for _, tt := range testCases {
|
|
||||||
t.Run(fmt.Sprintf("%s should product %t", tt.input, tt.expectedOutput), func(t *testing.T) {
|
|
||||||
out := NameStartsWithVowel(tt.input)
|
|
||||||
if out != tt.expectedOutput {
|
|
||||||
t.Errorf("%s produced %t, when %t was expected", tt.input, out, tt.expectedOutput)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -70,12 +70,6 @@ RUN mkdir -p /home/linuxbrew/.linuxbrew &&\
|
||||||
|
|
||||||
RUN /home/linuxbrew/.linuxbrew/bin/brew install golang
|
RUN /home/linuxbrew/.linuxbrew/bin/brew install golang
|
||||||
|
|
||||||
# dotnet
|
|
||||||
RUN curl -sSL https://dot.net/v1/dotnet-install.sh \
|
|
||||||
| bash /dev/stdin --channel LTS --install-dir /usr/share/dotnet && \
|
|
||||||
update-alternatives --install /usr/bin/dotnet dotnet \
|
|
||||||
/usr/share/dotnet/dotnet 1
|
|
||||||
|
|
||||||
# clean up
|
# clean up
|
||||||
RUN /home/linuxbrew/.linuxbrew/bin/brew cleanup && \
|
RUN /home/linuxbrew/.linuxbrew/bin/brew cleanup && \
|
||||||
rm -rf ~/.cache && \
|
rm -rf ~/.cache && \
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ function Test_Get_Configurations()
|
||||||
let configs = vimspector#GetConfigurations()
|
let configs = vimspector#GetConfigurations()
|
||||||
call assert_equal([
|
call assert_equal([
|
||||||
\ 'launch - netcoredbg',
|
\ 'launch - netcoredbg',
|
||||||
\ 'launch - netcoredbg - with debug log',
|
|
||||||
\ 'launch - mono',
|
\ 'launch - mono',
|
||||||
\ ], configs)
|
\ ], configs)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
||||||
function! SetUp()
|
|
||||||
call vimspector#test#setup#SetUpWithMappings( v:none )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! ClearDown()
|
|
||||||
call vimspector#test#setup#ClearDown()
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! SetUp_Test_Go_Simple()
|
|
||||||
let g:vimspector_enable_mappings = 'HUMAN'
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! Test_CSharp_Simple()
|
|
||||||
let fn='Program.cs'
|
|
||||||
lcd ../support/test/csharp
|
|
||||||
exe 'edit ' . fn
|
|
||||||
|
|
||||||
call vimspector#SetLineBreakpoint( fn, 31 )
|
|
||||||
call vimspector#LaunchWithSettings( {
|
|
||||||
\ 'configuration': 'launch - netcoredbg'
|
|
||||||
\ } )
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 31, 7 )
|
|
||||||
call WaitForAssert( {->
|
|
||||||
\ vimspector#test#signs#AssertPCIsAtLineInBuffer( fn, 31 )
|
|
||||||
\ } )
|
|
||||||
|
|
||||||
call vimspector#StepOver()
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 32, 12 )
|
|
||||||
call WaitForAssert( {->
|
|
||||||
\ vimspector#test#signs#AssertPCIsAtLineInBuffer( fn, 32 )
|
|
||||||
\ } )
|
|
||||||
|
|
||||||
call vimspector#test#setup#Reset()
|
|
||||||
|
|
||||||
lcd -
|
|
||||||
%bwipeout!
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
|
|
||||||
function! Test_Run_To_Cursor()
|
|
||||||
let fn='Program.cs'
|
|
||||||
lcd ../support/test/csharp
|
|
||||||
exe 'edit ' . fn
|
|
||||||
|
|
||||||
call vimspector#SetLineBreakpoint( fn, 31 )
|
|
||||||
call vimspector#LaunchWithSettings( {
|
|
||||||
\ 'configuration': 'launch - netcoredbg'
|
|
||||||
\ } )
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 31, 7 )
|
|
||||||
call WaitForAssert( {->
|
|
||||||
\ vimspector#test#signs#AssertPCIsAtLineInBuffer( fn, 31 )
|
|
||||||
\ } )
|
|
||||||
|
|
||||||
call cursor( 33, 1 )
|
|
||||||
call vimspector#RunToCursor()
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 33, 1 )
|
|
||||||
call WaitForAssert( {->
|
|
||||||
\ vimspector#test#signs#AssertPCIsAtLineInBuffer( fn, 33 )
|
|
||||||
\ } )
|
|
||||||
|
|
||||||
call vimspector#test#setup#Reset()
|
|
||||||
lcd -
|
|
||||||
%bwipeout!
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
|
|
@ -50,59 +50,3 @@ function! vimspector#test#setup#Reset() abort
|
||||||
call popup_clear()
|
call popup_clear()
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
let s:g_stack = {}
|
|
||||||
|
|
||||||
function! vimspector#test#setup#PushGlobal( name, value ) abort
|
|
||||||
if !has_key( s:g_stack, a:name )
|
|
||||||
let s:g_stack[ a:name ] = []
|
|
||||||
endif
|
|
||||||
|
|
||||||
let old_value = get( g:, a:name, v:null )
|
|
||||||
call add( s:g_stack[ a:name ], old_value )
|
|
||||||
let g:[ a:name ] = a:value
|
|
||||||
|
|
||||||
return old_value
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! vimspector#test#setup#PopGlobal( name ) abort
|
|
||||||
if !has_key( s:g_stack, a:name ) || len( s:g_stack[ a:name ] ) == 0
|
|
||||||
return v:null
|
|
||||||
endif
|
|
||||||
|
|
||||||
let old_value = s:g_stack[ a:name ][ -1 ]
|
|
||||||
call remove( s:g_stack[ a:name ], -1 )
|
|
||||||
|
|
||||||
if old_value is v:null
|
|
||||||
silent! call remove( g:, a:name )
|
|
||||||
else
|
|
||||||
let g:[ a:name ] = old_value
|
|
||||||
endif
|
|
||||||
|
|
||||||
return old_value
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
let s:o_stack = {}
|
|
||||||
|
|
||||||
function! vimspector#test#setup#PushOption( name, value ) abort
|
|
||||||
if !has_key( s:o_stack, a:name )
|
|
||||||
let s:o_stack[ a:name ] = []
|
|
||||||
endif
|
|
||||||
|
|
||||||
let old_value = v:null
|
|
||||||
execute 'let old_value = &' . a:name
|
|
||||||
call add( s:o_stack[ a:name ], old_value )
|
|
||||||
execute 'set ' . a:name . '=' . a:value
|
|
||||||
return old_value
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! vimspector#test#setup#PopOption( name ) abort
|
|
||||||
if !has_key( s:o_stack, a:name ) || len( s:o_stack[ a:name ] ) == 0
|
|
||||||
return v:null
|
|
||||||
endif
|
|
||||||
|
|
||||||
let old_value = s:o_stack[ a:name ][ -1 ]
|
|
||||||
call remove( s:o_stack[ a:name ], -1 )
|
|
||||||
|
|
||||||
execute 'set ' . a:name . '=' . old_value
|
|
||||||
return old_value
|
|
||||||
endfunction
|
|
||||||
|
|
|
||||||
|
|
@ -99,7 +99,7 @@ function! ThisTestIsFlaky()
|
||||||
let g:test_is_flaky = v:true
|
let g:test_is_flaky = v:true
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! AssertMatchList( expected, actual ) abort
|
function! AssertMatchist( expected, actual ) abort
|
||||||
let ret = assert_equal( len( a:expected ), len( a:actual ) )
|
let ret = assert_equal( len( a:expected ), len( a:actual ) )
|
||||||
let len = min( [ len( a:expected ), len( a:actual ) ] )
|
let len = min( [ len( a:expected ), len( a:actual ) ] )
|
||||||
let idx = 0
|
let idx = 0
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,6 @@ class TestExpandReferencesInDict( unittest.TestCase ):
|
||||||
'one': '${one}',
|
'one': '${one}',
|
||||||
'two': '${one} and ${two}',
|
'two': '${one} and ${two}',
|
||||||
'three': '${three}',
|
'three': '${three}',
|
||||||
'three_with_default': '${three_with_default:${three\\}}', # uses calculus
|
|
||||||
'four': '${four}',
|
'four': '${four}',
|
||||||
'five': '${five}',
|
'five': '${five}',
|
||||||
'list': [ '*${words}' ],
|
'list': [ '*${words}' ],
|
||||||
|
|
@ -59,7 +58,6 @@ class TestExpandReferencesInDict( unittest.TestCase ):
|
||||||
'one': 'one',
|
'one': 'one',
|
||||||
'two': 'one and TWO',
|
'two': 'one and TWO',
|
||||||
'three': '3',
|
'three': '3',
|
||||||
'three_with_default': '3',
|
|
||||||
'four': 'typed text',
|
'four': 'typed text',
|
||||||
'five': '5ive!',
|
'five': '5ive!',
|
||||||
'list': [ 'these', 'are', 'some', 'words' ],
|
'list': [ 'these', 'are', 'some', 'words' ],
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
||||||
call cursor( 1, 1 )
|
call cursor( 1, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Thread [0-9]\+: .* (paused)',
|
\ '- Thread [0-9]\+: .* (paused)',
|
||||||
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
||||||
|
|
@ -45,7 +45,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
||||||
call cursor( 1, 1 )
|
call cursor( 1, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Thread [0-9]\+: .* (paused)',
|
\ '- Thread [0-9]\+: .* (paused)',
|
||||||
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
||||||
|
|
@ -56,7 +56,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
\ )
|
\ )
|
||||||
\ } )
|
\ } )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ ],
|
\ ],
|
||||||
|
|
@ -70,7 +70,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
||||||
call cursor( 1, 1 )
|
call cursor( 1, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Thread [0-9]\+: .* (paused)',
|
\ '- Thread [0-9]\+: .* (paused)',
|
||||||
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
||||||
|
|
@ -81,7 +81,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
\ )
|
\ )
|
||||||
\ } )
|
\ } )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ ],
|
\ ],
|
||||||
|
|
@ -95,7 +95,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
||||||
call cursor( 1, 1 )
|
call cursor( 1, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Thread [0-9]\+: .* (paused)',
|
\ '- Thread [0-9]\+: .* (paused)',
|
||||||
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
||||||
|
|
@ -106,7 +106,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
\ )
|
\ )
|
||||||
\ } )
|
\ } )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ ],
|
\ ],
|
||||||
|
|
@ -121,7 +121,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
||||||
call cursor( 1, 1 )
|
call cursor( 1, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Thread [0-9]\+: .* (paused)',
|
\ '- Thread [0-9]\+: .* (paused)',
|
||||||
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
||||||
|
|
@ -132,7 +132,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
\ )
|
\ )
|
||||||
\ } )
|
\ } )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ ],
|
\ ],
|
||||||
|
|
@ -146,7 +146,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
" So we break out of the loop
|
" So we break out of the loop
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, notify_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, notify_l, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Thread [0-9]\+: .* (paused)',
|
\ '- Thread [0-9]\+: .* (paused)',
|
||||||
\ ' .*: .*@threads.cpp:' . string( notify_l )
|
\ ' .*: .*@threads.cpp:' . string( notify_l )
|
||||||
|
|
@ -157,7 +157,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
\ )
|
\ )
|
||||||
\ } )
|
\ } )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ ],
|
\ ],
|
||||||
|
|
@ -192,7 +192,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Thread [0-9]\+: .* (paused)',
|
\ '- Thread [0-9]\+: .* (paused)',
|
||||||
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
||||||
|
|
@ -205,7 +205,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
call vimspector#StepOver()
|
call vimspector#StepOver()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_n, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_n, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ ],
|
\ ],
|
||||||
|
|
@ -218,7 +218,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ ],
|
\ ],
|
||||||
|
|
@ -230,7 +230,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
call vimspector#StepOver()
|
call vimspector#StepOver()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_n, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_n, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
|
|
@ -244,7 +244,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
|
|
@ -257,7 +257,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
call vimspector#StepOver()
|
call vimspector#StepOver()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_n, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_n, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
|
|
@ -273,7 +273,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
|
|
@ -287,7 +287,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
call vimspector#StepOver()
|
call vimspector#StepOver()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_n, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_n, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
|
|
@ -304,7 +304,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
|
|
@ -319,7 +319,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
call vimspector#StepOver()
|
call vimspector#StepOver()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_n, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_n, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
|
|
@ -338,7 +338,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
" So we break out of the loop
|
" So we break out of the loop
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, notify_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, notify_l, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
|
|
@ -352,209 +352,6 @@ function! Test_Multiple_Threads_Step()
|
||||||
\ )
|
\ )
|
||||||
\ } )
|
\ } )
|
||||||
|
|
||||||
call vimspector#ClearBreakpoints()
|
|
||||||
call vimspector#test#setup#Reset()
|
|
||||||
%bwipe!
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! Test_UpDownStack()
|
|
||||||
let fn='../support/test/python/simple_python/main.py'
|
|
||||||
exe 'edit ' . fn
|
|
||||||
call setpos( '.', [ 0, 6, 1 ] )
|
|
||||||
|
|
||||||
call vimspector#SetLineBreakpoint( fn, 15 )
|
|
||||||
call vimspector#LaunchWithSettings( { 'configuration': 'run' } )
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 15, 1 )
|
|
||||||
call WaitForAssert( {->
|
|
||||||
\ AssertMatchList(
|
|
||||||
\ [
|
|
||||||
\ '- Thread 1: MainThread (paused)',
|
|
||||||
\ ' 2: DoSomething@main.py:15',
|
|
||||||
\ ' 3: __init__@main.py:8',
|
|
||||||
\ ' 4: Main@main.py:23',
|
|
||||||
\ ' 5: <module>@main.py:29',
|
|
||||||
\ ],
|
|
||||||
\ GetBufLine( winbufnr( g:vimspector_session_windows.stack_trace ),
|
|
||||||
\ 1,
|
|
||||||
\ '$' )
|
|
||||||
\ )
|
|
||||||
\ } )
|
|
||||||
call win_gotoid( g:vimspector_session_windows.stack_trace )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 1,
|
|
||||||
\ 'vimspectorCurrentThread',
|
|
||||||
\ 200 ) } )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 2,
|
|
||||||
\ 'vimspectorCurrentFrame',
|
|
||||||
\ 200 ) } )
|
|
||||||
wincmd w
|
|
||||||
|
|
||||||
call vimspector#DownFrame()
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 15, 1 )
|
|
||||||
call WaitForAssert( {->
|
|
||||||
\ AssertMatchList(
|
|
||||||
\ [
|
|
||||||
\ '- Thread 1: MainThread (paused)',
|
|
||||||
\ ' 2: DoSomething@main.py:15',
|
|
||||||
\ ' 3: __init__@main.py:8',
|
|
||||||
\ ' 4: Main@main.py:23',
|
|
||||||
\ ' 5: <module>@main.py:29',
|
|
||||||
\ ],
|
|
||||||
\ GetBufLine( winbufnr( g:vimspector_session_windows.stack_trace ),
|
|
||||||
\ 1,
|
|
||||||
\ '$' )
|
|
||||||
\ )
|
|
||||||
\ } )
|
|
||||||
call win_gotoid( g:vimspector_session_windows.stack_trace )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 1,
|
|
||||||
\ 'vimspectorCurrentThread',
|
|
||||||
\ 200 ) } )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 2,
|
|
||||||
\ 'vimspectorCurrentFrame',
|
|
||||||
\ 200 ) } )
|
|
||||||
wincmd w
|
|
||||||
|
|
||||||
|
|
||||||
call vimspector#UpFrame()
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 8, 1 )
|
|
||||||
call WaitForAssert( {->
|
|
||||||
\ AssertMatchList(
|
|
||||||
\ [
|
|
||||||
\ '- Thread 1: MainThread (paused)',
|
|
||||||
\ ' 2: DoSomething@main.py:15',
|
|
||||||
\ ' 3: __init__@main.py:8',
|
|
||||||
\ ' 4: Main@main.py:23',
|
|
||||||
\ ' 5: <module>@main.py:29',
|
|
||||||
\ ],
|
|
||||||
\ GetBufLine( winbufnr( g:vimspector_session_windows.stack_trace ),
|
|
||||||
\ 1,
|
|
||||||
\ '$' )
|
|
||||||
\ )
|
|
||||||
\ } )
|
|
||||||
call win_gotoid( g:vimspector_session_windows.stack_trace )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 1,
|
|
||||||
\ 'vimspectorCurrentThread',
|
|
||||||
\ 200 ) } )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 3,
|
|
||||||
\ 'vimspectorCurrentFrame',
|
|
||||||
\ 200 ) } )
|
|
||||||
wincmd w
|
|
||||||
|
|
||||||
|
|
||||||
call feedkeys( "\<Plug>VimspectorUpFrame", 'x' )
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 23, 1 )
|
|
||||||
call WaitForAssert( {->
|
|
||||||
\ AssertMatchList(
|
|
||||||
\ [
|
|
||||||
\ '- Thread 1: MainThread (paused)',
|
|
||||||
\ ' 2: DoSomething@main.py:15',
|
|
||||||
\ ' 3: __init__@main.py:8',
|
|
||||||
\ ' 4: Main@main.py:23',
|
|
||||||
\ ' 5: <module>@main.py:29',
|
|
||||||
\ ],
|
|
||||||
\ GetBufLine( winbufnr( g:vimspector_session_windows.stack_trace ),
|
|
||||||
\ 1,
|
|
||||||
\ '$' )
|
|
||||||
\ )
|
|
||||||
\ } )
|
|
||||||
call win_gotoid( g:vimspector_session_windows.stack_trace )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 1,
|
|
||||||
\ 'vimspectorCurrentThread',
|
|
||||||
\ 200 ) } )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 4,
|
|
||||||
\ 'vimspectorCurrentFrame',
|
|
||||||
\ 200 ) } )
|
|
||||||
wincmd w
|
|
||||||
|
|
||||||
|
|
||||||
call feedkeys( "\<Plug>VimspectorDownFrame", 'x' )
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 8, 1 )
|
|
||||||
call WaitForAssert( {->
|
|
||||||
\ AssertMatchList(
|
|
||||||
\ [
|
|
||||||
\ '- Thread 1: MainThread (paused)',
|
|
||||||
\ ' 2: DoSomething@main.py:15',
|
|
||||||
\ ' 3: __init__@main.py:8',
|
|
||||||
\ ' 4: Main@main.py:23',
|
|
||||||
\ ' 5: <module>@main.py:29',
|
|
||||||
\ ],
|
|
||||||
\ GetBufLine( winbufnr( g:vimspector_session_windows.stack_trace ),
|
|
||||||
\ 1,
|
|
||||||
\ '$' )
|
|
||||||
\ )
|
|
||||||
\ } )
|
|
||||||
call win_gotoid( g:vimspector_session_windows.stack_trace )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 1,
|
|
||||||
\ 'vimspectorCurrentThread',
|
|
||||||
\ 200 ) } )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 3,
|
|
||||||
\ 'vimspectorCurrentFrame',
|
|
||||||
\ 200 ) } )
|
|
||||||
wincmd w
|
|
||||||
|
|
||||||
|
|
||||||
call vimspector#DownFrame()
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 15, 1 )
|
|
||||||
call WaitForAssert( {->
|
|
||||||
\ AssertMatchList(
|
|
||||||
\ [
|
|
||||||
\ '- Thread 1: MainThread (paused)',
|
|
||||||
\ ' 2: DoSomething@main.py:15',
|
|
||||||
\ ' 3: __init__@main.py:8',
|
|
||||||
\ ' 4: Main@main.py:23',
|
|
||||||
\ ' 5: <module>@main.py:29',
|
|
||||||
\ ],
|
|
||||||
\ GetBufLine( winbufnr( g:vimspector_session_windows.stack_trace ),
|
|
||||||
\ 1,
|
|
||||||
\ '$' )
|
|
||||||
\ )
|
|
||||||
\ } )
|
|
||||||
call win_gotoid( g:vimspector_session_windows.stack_trace )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 1,
|
|
||||||
\ 'vimspectorCurrentThread',
|
|
||||||
\ 200 ) } )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 2,
|
|
||||||
\ 'vimspectorCurrentFrame',
|
|
||||||
\ 200 ) } )
|
|
||||||
wincmd w
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
call vimspector#ClearBreakpoints()
|
call vimspector#ClearBreakpoints()
|
||||||
call vimspector#test#setup#Reset()
|
call vimspector#test#setup#Reset()
|
||||||
%bwipe!
|
%bwipe!
|
||||||
|
|
|
||||||
8
tests/testdata/cpp/simple/.vimspector.json
vendored
8
tests/testdata/cpp/simple/.vimspector.json
vendored
|
|
@ -12,7 +12,7 @@
|
||||||
"externalConsole": false,
|
"externalConsole": false,
|
||||||
"stopAtEntry": true,
|
"stopAtEntry": true,
|
||||||
"stopOnEntry": true,
|
"stopOnEntry": true,
|
||||||
"MIMode": "${VIMSPECTOR_MIMODE}"
|
"MImode": "${VIMSPECTOR_MIMODE}"
|
||||||
},
|
},
|
||||||
"breakpoints": {
|
"breakpoints": {
|
||||||
"exception": {
|
"exception": {
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
"externalConsole": false,
|
"externalConsole": false,
|
||||||
"stopAtEntry": false,
|
"stopAtEntry": false,
|
||||||
"stopOnEntry": false,
|
"stopOnEntry": false,
|
||||||
"MIMode": "${VIMSPECTOR_MIMODE}"
|
"MImode": "${VIMSPECTOR_MIMODE}"
|
||||||
},
|
},
|
||||||
"breakpoints": {
|
"breakpoints": {
|
||||||
"exception": {
|
"exception": {
|
||||||
|
|
@ -55,7 +55,7 @@
|
||||||
"externalConsole": false,
|
"externalConsole": false,
|
||||||
"stopAtEntry": false,
|
"stopAtEntry": false,
|
||||||
"stopOnEntry": false,
|
"stopOnEntry": false,
|
||||||
"MIMode": "${VIMSPECTOR_MIMODE}"
|
"MImode": "${VIMSPECTOR_MIMODE}"
|
||||||
},
|
},
|
||||||
"breakpoints": {
|
"breakpoints": {
|
||||||
"exception": {
|
"exception": {
|
||||||
|
|
@ -82,7 +82,7 @@
|
||||||
"configuration": {
|
"configuration": {
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"program": "${workspaceRoot}/${fileBasenameNoExtension}",
|
"program": "${workspaceRoot}/${fileBasenameNoExtension}",
|
||||||
"MIMode": "${VIMSPECTOR_MIMODE}",
|
"MImode": "${VIMSPECTOR_MIMODE}",
|
||||||
"externalConsole": false,
|
"externalConsole": false,
|
||||||
"args": [
|
"args": [
|
||||||
"CALCULATED_LIST", "${CALCULATED_LIST}",
|
"CALCULATED_LIST", "${CALCULATED_LIST}",
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
let s:fn='../support/test/python/simple_python/main.py'
|
let s:fn='../support/test/python/simple_python/main.py'
|
||||||
|
|
||||||
function! SetUp()
|
function! SetUp()
|
||||||
let g:vimspector_ui_mode = get( s:, 'vimspector_ui_mode', 'horizontal' )
|
|
||||||
call vimspector#test#setup#SetUpWithMappings( 'HUMAN' )
|
call vimspector#test#setup#SetUpWithMappings( 'HUMAN' )
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
@ -17,17 +16,12 @@ function! s:StartDebugging()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, 23, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, 23, 1 )
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! SetUp_Test_StandardLayout()
|
|
||||||
call vimspector#test#setup#PushOption( 'columns', 200 )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! Test_StandardLayout()
|
function! Test_StandardLayout()
|
||||||
call s:StartDebugging()
|
call s:StartDebugging()
|
||||||
|
|
||||||
call vimspector#StepOver()
|
call vimspector#StepOver()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, 25, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, 25, 1 )
|
||||||
|
|
||||||
call assert_equal( 'horizontal', g:vimspector_session_windows.mode )
|
|
||||||
call assert_equal(
|
call assert_equal(
|
||||||
\ [ 'row', [
|
\ [ 'row', [
|
||||||
\ [ 'col', [
|
\ [ 'col', [
|
||||||
|
|
@ -49,247 +43,6 @@ function! Test_StandardLayout()
|
||||||
%bwipe!
|
%bwipe!
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! TearDown_Test_StandardLayout()
|
|
||||||
call vimspector#test#setup#PopOption( 'columns' )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! SetUp_Test_NarrowLayout()
|
|
||||||
call vimspector#test#setup#PushOption( 'columns', 100 )
|
|
||||||
let s:vimspector_ui_mode = 'vertical'
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! Test_NarrowLayout()
|
|
||||||
call s:StartDebugging()
|
|
||||||
|
|
||||||
call vimspector#StepOver()
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, 25, 1 )
|
|
||||||
|
|
||||||
call assert_equal( 'vertical', g:vimspector_session_windows.mode )
|
|
||||||
call assert_equal(
|
|
||||||
\ [ 'col', [
|
|
||||||
\ [ 'row', [
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.variables ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.watches ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.stack_trace ],
|
|
||||||
\ ] ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.code ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.terminal ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.output ],
|
|
||||||
\ ] ],
|
|
||||||
\ winlayout( g:vimspector_session_windows.tabpage ) )
|
|
||||||
|
|
||||||
call vimspector#test#setup#Reset()
|
|
||||||
%bwipe!
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! TearDown_Test_NarrowLayout()
|
|
||||||
unlet s:vimspector_ui_mode
|
|
||||||
call vimspector#test#setup#PopOption( 'columns' )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! SetUp_Test_AutoLayoutTerminalVert()
|
|
||||||
let s:vimspector_ui_mode = 'auto'
|
|
||||||
call vimspector#test#setup#PushOption( 'columns', 250 )
|
|
||||||
call vimspector#test#setup#PushOption( 'lines', 30 )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! Test_AutoLayoutTerminalVert()
|
|
||||||
call s:StartDebugging()
|
|
||||||
|
|
||||||
call vimspector#StepOver()
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, 25, 1 )
|
|
||||||
|
|
||||||
call assert_equal( 'horizontal', g:vimspector_session_windows.mode )
|
|
||||||
call assert_equal(
|
|
||||||
\ [ 'row', [
|
|
||||||
\ [ 'col', [
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.variables ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.watches ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.stack_trace ],
|
|
||||||
\ ] ],
|
|
||||||
\ [ 'col', [
|
|
||||||
\ [ 'row', [
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.code ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.terminal ],
|
|
||||||
\ ] ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.output ],
|
|
||||||
\ ] ]
|
|
||||||
\ ] ],
|
|
||||||
\ winlayout( g:vimspector_session_windows.tabpage ) )
|
|
||||||
|
|
||||||
call vimspector#test#setup#Reset()
|
|
||||||
%bwipe!
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! TearDown_Test_AutoLayoutTerminalVert()
|
|
||||||
unlet s:vimspector_ui_mode
|
|
||||||
call vimspector#test#setup#PopOption( 'lines' )
|
|
||||||
call vimspector#test#setup#PopOption( 'columns' )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! SetUp_Test_AutoLayoutTerminalHorizVert()
|
|
||||||
let s:vimspector_ui_mode = 'auto'
|
|
||||||
" Wide enough to be horizontal layout, but not wide enough to fully fit the
|
|
||||||
" terminal, with enough rows to fit the max terminal below
|
|
||||||
call vimspector#test#setup#PushOption( 'columns',
|
|
||||||
\ 50 + 82 + 3 + 2 + 12 )
|
|
||||||
call vimspector#test#setup#PushOption( 'lines', 50 )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! Test_AutoLayoutTerminalHorizVert()
|
|
||||||
call s:StartDebugging()
|
|
||||||
|
|
||||||
call vimspector#StepOver()
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, 25, 1 )
|
|
||||||
|
|
||||||
call assert_equal( 'horizontal', g:vimspector_session_windows.mode )
|
|
||||||
call assert_equal(
|
|
||||||
\ [ 'row', [
|
|
||||||
\ [ 'col', [
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.variables ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.watches ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.stack_trace ],
|
|
||||||
\ ] ],
|
|
||||||
\ [ 'col', [
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.code ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.terminal ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.output ],
|
|
||||||
\ ] ]
|
|
||||||
\ ] ],
|
|
||||||
\ winlayout( g:vimspector_session_windows.tabpage ) )
|
|
||||||
|
|
||||||
call vimspector#test#setup#Reset()
|
|
||||||
%bwipe!
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! TearDown_Test_AutoLayoutTerminalHorizVert()
|
|
||||||
unlet s:vimspector_ui_mode
|
|
||||||
call vimspector#test#setup#PopOption( 'lines' )
|
|
||||||
call vimspector#test#setup#PopOption( 'columns' )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! SetUp_Test_AutoLayoutTerminalHorizVertButNotEnoughLines()
|
|
||||||
let s:vimspector_ui_mode = 'auto'
|
|
||||||
" Wide enough to be horizontal layout, but not wide enough to fully fit the
|
|
||||||
" terminal, with enough rows to fit the max terminal below, but there are not
|
|
||||||
" enough lines to do this
|
|
||||||
call vimspector#test#setup#PushOption( 'columns',
|
|
||||||
\ 50 + 82 + 3 + 2 + 12 )
|
|
||||||
call vimspector#test#setup#PushOption( 'lines', 20 )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! Test_AutoLayoutTerminalHorizVertButNotEnoughLines()
|
|
||||||
call s:StartDebugging()
|
|
||||||
|
|
||||||
call vimspector#StepOver()
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, 25, 1 )
|
|
||||||
|
|
||||||
call assert_equal( 'horizontal', g:vimspector_session_windows.mode )
|
|
||||||
call assert_equal(
|
|
||||||
\ [ 'row', [
|
|
||||||
\ [ 'col', [
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.variables ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.watches ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.stack_trace ],
|
|
||||||
\ ] ],
|
|
||||||
\ [ 'col', [
|
|
||||||
\ [ 'row', [
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.code ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.terminal ],
|
|
||||||
\ ] ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.output ],
|
|
||||||
\ ] ],
|
|
||||||
\ ] ],
|
|
||||||
\ winlayout( g:vimspector_session_windows.tabpage ) )
|
|
||||||
|
|
||||||
call vimspector#test#setup#Reset()
|
|
||||||
%bwipe!
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! TearDown_Test_AutoLayoutTerminalHorizVertButNotEnoughLines()
|
|
||||||
unlet s:vimspector_ui_mode
|
|
||||||
call vimspector#test#setup#PopOption( 'lines' )
|
|
||||||
call vimspector#test#setup#PopOption( 'columns' )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! SetUp_Test_AutoLayoutTerminalHoriz()
|
|
||||||
let s:vimspector_ui_mode = 'vertical'
|
|
||||||
" Vertical layout, but we split the terminal horizonally
|
|
||||||
call vimspector#test#setup#PushOption( 'columns', 200 )
|
|
||||||
call vimspector#test#setup#PushOption( 'lines', 50 )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! Test_AutoLayoutTerminalHoriz()
|
|
||||||
call s:StartDebugging()
|
|
||||||
|
|
||||||
call vimspector#StepOver()
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, 25, 1 )
|
|
||||||
|
|
||||||
call assert_equal( 'vertical', g:vimspector_session_windows.mode )
|
|
||||||
call assert_equal(
|
|
||||||
\ [ 'col', [
|
|
||||||
\ [ 'row', [
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.variables ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.watches ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.stack_trace ],
|
|
||||||
\ ] ],
|
|
||||||
\ [ 'row', [
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.code ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.terminal ],
|
|
||||||
\ ] ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.output ],
|
|
||||||
\ ] ],
|
|
||||||
\ winlayout( g:vimspector_session_windows.tabpage ) )
|
|
||||||
|
|
||||||
call vimspector#test#setup#Reset()
|
|
||||||
%bwipe!
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! TearDown_Test_AutoLayoutTerminalHoriz()
|
|
||||||
unlet s:vimspector_ui_mode
|
|
||||||
call vimspector#test#setup#PopOption( 'lines' )
|
|
||||||
call vimspector#test#setup#PopOption( 'columns' )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! SetUp_Test_AutoLayoutTerminalVertVert()
|
|
||||||
let s:vimspector_ui_mode = 'auto'
|
|
||||||
" Not wide enough to go horizontal, but wide enough to put the terminal and
|
|
||||||
" code vertically split
|
|
||||||
call vimspector#test#setup#PushOption( 'columns', 80 )
|
|
||||||
call vimspector#test#setup#PushOption( 'lines', 50 )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! Test_AutoLayoutTerminalVertVert()
|
|
||||||
call s:StartDebugging()
|
|
||||||
|
|
||||||
call vimspector#StepOver()
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, 25, 1 )
|
|
||||||
|
|
||||||
call assert_equal( 'vertical', g:vimspector_session_windows.mode )
|
|
||||||
call assert_equal(
|
|
||||||
\ [ 'col', [
|
|
||||||
\ [ 'row', [
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.variables ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.watches ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.stack_trace ],
|
|
||||||
\ ] ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.code ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.terminal ],
|
|
||||||
\ [ 'leaf', g:vimspector_session_windows.output ],
|
|
||||||
\ ] ],
|
|
||||||
\ winlayout( g:vimspector_session_windows.tabpage ) )
|
|
||||||
|
|
||||||
call vimspector#test#setup#Reset()
|
|
||||||
%bwipe!
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! TearDown_Test_AutoLayoutTerminalVertVert()
|
|
||||||
unlet s:vimspector_ui_mode
|
|
||||||
call vimspector#test#setup#PopOption( 'lines' )
|
|
||||||
call vimspector#test#setup#PopOption( 'columns' )
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
|
|
||||||
function! Test_CloseVariables()
|
function! Test_CloseVariables()
|
||||||
call s:StartDebugging()
|
call s:StartDebugging()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -194,7 +194,6 @@ function! Test_ExpandVariables()
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' *+ t (Test): {...}',
|
\ ' *+ t (Test): {...}',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -212,7 +211,7 @@ function! Test_ExpandVariables()
|
||||||
call feedkeys( "\<CR>", 'xt' )
|
call feedkeys( "\<CR>", 'xt' )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' \*- t (Test): {...}',
|
\ ' \*- t (Test): {...}',
|
||||||
|
|
@ -220,7 +219,6 @@ function! Test_ExpandVariables()
|
||||||
\ ' \*- c (char): 0 ''\\0\{1,3}''',
|
\ ' \*- c (char): 0 ''\\0\{1,3}''',
|
||||||
\ ' \*- fffff (float): 0',
|
\ ' \*- fffff (float): 0',
|
||||||
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -231,7 +229,7 @@ function! Test_ExpandVariables()
|
||||||
" Step - stays expanded
|
" Step - stays expanded
|
||||||
call vimspector#StepOver()
|
call vimspector#StepOver()
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' - t (Test): {...}',
|
\ ' - t (Test): {...}',
|
||||||
|
|
@ -239,7 +237,6 @@ function! Test_ExpandVariables()
|
||||||
\ ' - c (char): 0 ''\\0\{1,3}''',
|
\ ' - c (char): 0 ''\\0\{1,3}''',
|
||||||
\ ' - fffff (float): 0',
|
\ ' - fffff (float): 0',
|
||||||
\ ' + another_test (AnotherTest):\( {...}\)\?',
|
\ ' + another_test (AnotherTest):\( {...}\)\?',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -256,7 +253,6 @@ function! Test_ExpandVariables()
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' + t (Test): {...}',
|
\ ' + t (Test): {...}',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -271,7 +267,6 @@ function! Test_ExpandVariables()
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' + t (Test): {...}',
|
\ ' + t (Test): {...}',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -283,7 +278,7 @@ function! Test_ExpandVariables()
|
||||||
call setpos( '.', [ 0, 2, 1 ] )
|
call setpos( '.', [ 0, 2, 1 ] )
|
||||||
call feedkeys( "\<CR>", 'xt' )
|
call feedkeys( "\<CR>", 'xt' )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' - t (Test): {...}',
|
\ ' - t (Test): {...}',
|
||||||
|
|
@ -291,7 +286,6 @@ function! Test_ExpandVariables()
|
||||||
\ ' \*- c (char): 99 ''c''',
|
\ ' \*- c (char): 99 ''c''',
|
||||||
\ ' \*- fffff (float): 0',
|
\ ' \*- fffff (float): 0',
|
||||||
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -308,7 +302,6 @@ function! Test_ExpandVariables()
|
||||||
\ assert_equal(
|
\ assert_equal(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Scope: Locals',
|
\ '+ Scope: Locals',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -323,7 +316,6 @@ function! Test_ExpandVariables()
|
||||||
\ assert_equal(
|
\ assert_equal(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Scope: Locals',
|
\ '+ Scope: Locals',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -339,7 +331,6 @@ function! Test_ExpandVariables()
|
||||||
\ assert_equal(
|
\ assert_equal(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Scope: Locals',
|
\ '+ Scope: Locals',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -387,7 +378,7 @@ function! Test_ExpandWatch()
|
||||||
call feedkeys( "\<CR>", 'xt' )
|
call feedkeys( "\<CR>", 'xt' )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ 'Watches: ----',
|
\ 'Watches: ----',
|
||||||
\ 'Expression: t',
|
\ 'Expression: t',
|
||||||
|
|
@ -406,7 +397,7 @@ function! Test_ExpandWatch()
|
||||||
" Step - stays expanded
|
" Step - stays expanded
|
||||||
call vimspector#StepOver()
|
call vimspector#StepOver()
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ 'Watches: ----',
|
\ 'Watches: ----',
|
||||||
\ 'Expression: t',
|
\ 'Expression: t',
|
||||||
|
|
@ -458,7 +449,7 @@ function! Test_ExpandWatch()
|
||||||
call setpos( '.', [ 0, 3, 1 ] )
|
call setpos( '.', [ 0, 3, 1 ] )
|
||||||
call feedkeys( "\<CR>", 'xt' )
|
call feedkeys( "\<CR>", 'xt' )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ 'Watches: ----',
|
\ 'Watches: ----',
|
||||||
\ 'Expression: t',
|
\ 'Expression: t',
|
||||||
|
|
@ -616,7 +607,7 @@ function! Test_EvaluateFailure()
|
||||||
" Add a wtch
|
" Add a wtch
|
||||||
call vimspector#AddWatch( 'test' )
|
call vimspector#AddWatch( 'test' )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ 'Watches: ----',
|
\ 'Watches: ----',
|
||||||
\ 'Expression: test',
|
\ 'Expression: test',
|
||||||
|
|
@ -667,7 +658,7 @@ function! Test_VariableEval()
|
||||||
\ } )
|
\ } )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '{...}',
|
\ '{...}',
|
||||||
\ ' - i: 0',
|
\ ' - i: 0',
|
||||||
|
|
@ -699,7 +690,7 @@ function! Test_VariableEval()
|
||||||
\ } )
|
\ } )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '{...}',
|
\ '{...}',
|
||||||
\ ' - i: 0',
|
\ ' - i: 0',
|
||||||
|
|
@ -733,7 +724,7 @@ function! Test_VariableEval()
|
||||||
\ } )
|
\ } )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ 'Evaluation error',
|
\ 'Evaluation error',
|
||||||
\ ],
|
\ ],
|
||||||
|
|
@ -777,7 +768,7 @@ function! Test_VariableEvalExpand()
|
||||||
\ } )
|
\ } )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '{...}',
|
\ '{...}',
|
||||||
\ ' - i: 0',
|
\ ' - i: 0',
|
||||||
|
|
@ -795,7 +786,7 @@ function! Test_VariableEvalExpand()
|
||||||
call feedkeys( "jjjj\<CR>", 'xt' )
|
call feedkeys( "jjjj\<CR>", 'xt' )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '{...}',
|
\ '{...}',
|
||||||
\ ' - i: 0',
|
\ ' - i: 0',
|
||||||
|
|
@ -815,7 +806,7 @@ function! Test_VariableEvalExpand()
|
||||||
call feedkeys( "\<CR>", 'xt' )
|
call feedkeys( "\<CR>", 'xt' )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '{...}',
|
\ '{...}',
|
||||||
\ ' - i: 0',
|
\ ' - i: 0',
|
||||||
|
|
@ -855,7 +846,6 @@ function! Test_SetVariableValue_Local()
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' *+ t (Test): {...}',
|
\ ' *+ t (Test): {...}',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -873,7 +863,7 @@ function! Test_SetVariableValue_Local()
|
||||||
call feedkeys( "\<CR>", 'xt' )
|
call feedkeys( "\<CR>", 'xt' )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' \*- t (Test): {...}',
|
\ ' \*- t (Test): {...}',
|
||||||
|
|
@ -881,7 +871,6 @@ function! Test_SetVariableValue_Local()
|
||||||
\ ' \*- c (char): 0 ''\\0\{1,3}''',
|
\ ' \*- c (char): 0 ''\\0\{1,3}''',
|
||||||
\ ' \*- fffff (float): 0',
|
\ ' \*- fffff (float): 0',
|
||||||
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -900,7 +889,7 @@ with mock.patch( 'vimspector.utils.InputSave' ):
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' \*- t (Test): {...}',
|
\ ' \*- t (Test): {...}',
|
||||||
|
|
@ -908,7 +897,6 @@ EOF
|
||||||
\ ' \*- c (char): 0 ''\\0\{1,3}''',
|
\ ' \*- c (char): 0 ''\\0\{1,3}''',
|
||||||
\ ' \*- fffff (float): 0',
|
\ ' \*- fffff (float): 0',
|
||||||
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -920,7 +908,7 @@ EOF
|
||||||
call vimspector#SetVariableValue( '1234' )
|
call vimspector#SetVariableValue( '1234' )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' \*- t (Test): {...}',
|
\ ' \*- t (Test): {...}',
|
||||||
|
|
@ -928,7 +916,6 @@ EOF
|
||||||
\ ' \*- c (char): 0 ''\\0\{1,3}''',
|
\ ' \*- c (char): 0 ''\\0\{1,3}''',
|
||||||
\ ' \*- fffff (float): 0',
|
\ ' \*- fffff (float): 0',
|
||||||
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -940,7 +927,7 @@ EOF
|
||||||
call vimspector#SetVariableValue( 'this is invalid' )
|
call vimspector#SetVariableValue( 'this is invalid' )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' \*- t (Test): {...}',
|
\ ' \*- t (Test): {...}',
|
||||||
|
|
@ -948,7 +935,6 @@ EOF
|
||||||
\ ' \*- c (char): 0 ''\\0\{1,3}''',
|
\ ' \*- c (char): 0 ''\\0\{1,3}''',
|
||||||
\ ' \*- fffff (float): 0',
|
\ ' \*- fffff (float): 0',
|
||||||
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -997,7 +983,7 @@ function! Test_SetVariableValue_Watch()
|
||||||
call feedkeys( "\<CR>", 'xt' )
|
call feedkeys( "\<CR>", 'xt' )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ 'Watches: ----',
|
\ 'Watches: ----',
|
||||||
\ 'Expression: t',
|
\ 'Expression: t',
|
||||||
|
|
@ -1026,7 +1012,7 @@ EOF
|
||||||
|
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ 'Watches: ----',
|
\ 'Watches: ----',
|
||||||
\ 'Expression: t',
|
\ 'Expression: t',
|
||||||
|
|
@ -1046,7 +1032,7 @@ EOF
|
||||||
call vimspector#SetVariableValue( '1234' )
|
call vimspector#SetVariableValue( '1234' )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ 'Watches: ----',
|
\ 'Watches: ----',
|
||||||
\ 'Expression: t',
|
\ 'Expression: t',
|
||||||
|
|
@ -1089,7 +1075,7 @@ function! Test_SetVariableValue_Balloon()
|
||||||
\ } )
|
\ } )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '{...}',
|
\ '{...}',
|
||||||
\ ' - i: 0',
|
\ ' - i: 0',
|
||||||
|
|
@ -1116,7 +1102,7 @@ with mock.patch( 'vimspector.utils.InputSave' ):
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '{...}',
|
\ '{...}',
|
||||||
\ ' - i: 0',
|
\ ' - i: 0',
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue