The problem was that the python regex engine is strictly left-to-right,
so matching `[^}]|\\}` against \\}} meant that the `\\` was consumed by
the left of the `|`. The solution is to just switch them around.
Also add a way to run python tests from within vim, so we can actually
test this stuff.
The problem is the sequence of events sent by the debug adapter.
Vimspector requests threads:
* When the initialisation exchange completes (requests all threads)
* Whenever a thread event is received
* whenever a stopped event is received.
If any of those happens while any other request is in progress, we cache
the request and handle it later. The latest request is processed when
the response to the outstanding request is received.
The problem is if the event is a stopped event, it is the handling of
the threads request that actually sets the thread state internally to
stopped. In a sequence where the first event is a stopped event, we end
up discarding the stopped event. like:
1. Stopped event (thread 1 = stopped) (request threads)
2. Initialisation complete (cache request)
3. threads response received (discard response and process cached request)
4. response received (but forgotten about the stopped event).
The solution is to always process the thread response, even if we send
the cached request. To avoid flicker, we don't draw the screen, or
expand any threads/stacks in the case where we're sending a cached
request.
1.2.1 is, as of this commit, the most recent version of the gadget.
The version currently used, 1.0.0b12 is not compatible with Python 3.9:
the build errors out on missing arguments for _PyEval_EvalFrameDefault.
Python 3.9 is the version of Python that will be shipped with the
upcoming debian release.
Support for 3.9 was merged in before the final 1.0.0 version. So,
upgrading the gadget will bring in python 3.9 support
The gradle wrapper is too large of a dependency to include for every
download of vimspector. Users can use a local installation of gradle to
run the sample kotlin application if necessary.
When installing a custom gadget not officially supported by vimspector the
default extension path is 'extension', this works for vscode extensions but
does not support some debug adapters. This commit gives the ability to change
that default extension path by specifying 'extension_path' within the gadget
installer file.
Installing 'cust_adapter' would use the extension path 'adapter' rather
than 'extension' (ie ${gadgetDir}/cust_adapter/${version}/root/adapter)
{
"cust_adapter": {
"download": { ... },
"all": {
"extension_path": "adapter",
"adapters": { ... }
}
}
}