Commit graph

45 commits

Author SHA1 Message Date
Ben Jackson
82e351454d Wait for up to 10s to attach to socket 2019-10-13 18:39:54 +01:00
Ben Jackson
90ecd905d9 Fix shutdown sequence for channel-based servers 2019-10-01 22:25:48 +01:00
Ben Jackson
d458d06bc5 Use the same version as the current macvim 2019-06-08 10:49:26 +01:00
Ben Jackson
fc802b61bd Run flake8 and vint in azure 2019-05-09 00:24:06 +01:00
Ben Jackson
470c64603a Add ClearBreakpoints API
Add a test which actually triggers the mappings and fires up vimspector
with the cpptools debugger.
2019-04-28 10:51:15 +01:00
Ben Jackson
88bac786ba Merge branch 'breakpoints-list' into remote-bp 2019-03-30 10:13:26 +00:00
Ben Jackson
541686712c Use a list comprehension and try and catch some nasites 2019-02-26 15:24:07 +00:00
Ben Jackson
2d7c67968a Be more forceful when closing th ejob 2019-02-21 16:13:51 +00:00
Ben Jackson
75851e0652 Move the vimscript into vimscript; it's so much easier. Support multiple commands and jobs 2019-02-21 16:12:58 +00:00
Ben Jackson
3092c06cd7 Rudimentary support for listing breakpoints using the quickfix window 2019-02-12 22:41:10 +00:00
Ben Jackson
bb3909c16f Improve output view; use jobs to display logs and remote commands 2019-02-12 09:04:52 +00:00
Ben Jackson
e006b15100 More improvements to startup and closedown stability. Remove some hack code 2019-02-12 09:01:09 +00:00
Ben Jackson
1ca88ad332 WIP: Support remote startup commands, e.g. gdbserver 2019-02-02 15:49:41 +00:00
Ben Jackson
32e16d9daf WIP: Try and remember that the server quit 2019-02-02 15:49:22 +00:00
Ben Jackson
1905556edd Allow mappings to specify variables 2019-02-02 10:49:00 +00:00
Ben Jackson
f1859639d7 Alow env and cwd to be specified for the _adapter_ 2019-02-01 10:05:59 +00:00
Ben Jackson
e573c2fd9f Print server stderr to the GUI 2019-01-12 15:14:06 +00:00
Ben Jackson
ea1962e11b Use a short timeout for closedown 2018-12-20 16:54:55 +00:00
Ben Jackson
af338669f3 Add timeout for requests. 2018-12-20 15:10:24 +00:00
Ben Jackson
14603ae72f Support java debugging
The java architecture is a little different:

- the debugger is a jdt.ls extension bundle.
- to start the server, you send a startDebugSession command to jdt.ls
- this returns a tcl port to connect to for DAP

Loading of jdt.ls and the extension are out of scope for vimspector
currently and instead you can tell it to ask you for a port to connect
to.

After connexting to that port, vimspector works as normal.

To support TCP/IP was pretty simple: we provide the same API from
vimscript as the job-based (stdin/out) comms layer, but instead just
directly use a channel.

The only wrinkle was that the java debug adapter broke the protocol on
runInTerminal and didn't return a 'cwd', so we make one up.
2018-12-20 00:29:45 +00:00
Ben Jackson
b72bc7dfbf Use prompt buffer for Console
Like VSCode does, compbine console and stdout, and allow you to enter
commands in the console. It's all a bit janky right now and the
insertion point isn't ideal (as not all output is interactive) and some
output is asynchronous via a somewhat different channel.
2018-06-10 18:32:16 +01:00
Ben Jackson
920db068c6 Use a prompt buffer for adding watches
This very new feature makes it kind of nice to add new watches in the
place where they will appear, keeping the eye in the same screen
location.
2018-06-09 22:33:22 +01:00
Ben Jackson
88ac7f6d55 Marginally improve the hover text
Don't use the default padded display.
When the request fails, say why.
Include the type if known.
2018-06-03 21:43:45 +01:00
Ben Jackson
bd4fa964b0 Only add the log handler once 2018-06-01 19:54:27 +01:00
Ben Jackson
46cdedc648 Trivial support for function breakpoints
You can't see them and you can't disable/cancel them.
2018-05-28 19:36:50 +01:00
Ben Jackson
f9ecf5f05d Move the output window to its own space
And separate all the different channels into their own buffers. Use the
WinBar to select between them.
2018-05-28 15:14:41 +01:00
Ben Jackson
eb11712cc1 Make sure to close down cleanly
This involves some horrible forceful reading on exit to ensure that we
get a response to the disconnect request. This ensures that any debugee
is killed cleanly.
2018-05-28 13:49:40 +01:00
Ben Jackson
afe4c0db77 Tidy breakpoints 2018-05-28 13:23:31 +01:00
Ben Jackson
5ed9a06ed5 Move the thread handling into the stack frame handling
This shows stack traces as children of a thread, removing one of the
UI splits. However, we still have the somewhat awkward concepts of
"current" thread and "current" stack frame. These are messy and
incredibly fiddly. And in any case, probably wrong _most_ of the time.
2018-05-28 02:34:05 +01:00
Ben Jackson
7600e1e652 Add a reset command to undo all the UI and reset everything 2018-05-27 21:40:31 +01:00
Ben Jackson
6aecfb969b Very basic balloon support.
This is a huge hack, setting it manually and never resetting it. Just
displaying the value (no breakdown) etc.

I'm tempted to drop this functionality altogether as it is of limited
use when you have the locals and watch windows.
2018-05-27 20:23:25 +01:00
Ben Jackson
3f73d1c2f8 Allow deleting watches and improve expansion
Now scopes and watch results can be expanded/collapsed. Locals still
default to being expanded, but watches do not.
2018-05-27 18:19:07 +01:00
Ben Jackson
437dbe8776 Don't None-ify the connection on restarting (race condition) 2018-05-27 17:00:47 +01:00
Ben Jackson
533b2aa0d5 Very basic support for watch expressions
You can currently only add them, not remoove them and you have to pass
the expression in the function call, but once added the variable
breakdown works nicely.
2018-05-27 16:59:06 +01:00
Ben Jackson
73f8a66d2c Reset the connection when the channel closes 2018-05-27 13:41:23 +01:00
Ben Jackson
dbef05b9a5 support restarting via calling Launch again (todo: restart button doesn't work) 2018-05-27 00:04:56 +01:00
Ben Jackson
c9a45b3bdc First attempt to make breakpoints work. Doesn't. Python at least responds with the breakpoints. MS CPP does not, and native debug just throws an error 2018-05-22 23:59:15 +01:00
Ben Jackson
269d09b73e Very basic support for launch configuration
This change refactors the way we launch the job and puts it all in an
internal namespace. Having done that, we are able to launch the job from
the python side. This allows us to neatly load a json file, simlar in
format to .vscode's launch.json, but sufficiently different that users
won't just expect the launch.json to work.

This change allows selecting between 2 different adapters to debug the
same c program.
2018-05-21 23:44:06 +01:00
Ben Jackson
fa627712e2 Support jumping up/down the stack
Split out stack trace view into its own thing. Support jumping to code
location.
2018-05-20 21:38:11 +01:00
Ben Jackson
0650b5a514 Refactor: Split VariablesView into own file
This also moves all handling of message dispatch to the connection
object. That seems fine and the requirements of a "handler" are:

- implement OnEvent_<event> for any unsolicited events

Otherwise, requests are handled still by callbacks.
2018-05-20 20:50:48 +01:00
Ben Jackson
a535d65b26 Hierarchical variables and scopes
Maintain the variables in a simple tree and allow the user to
expand/collapse in the dumbest way possible. This means we don't
recursively consume all of the possible variable scopes.
2018-05-20 19:07:44 +01:00
Ben Jackson
a5c773932e Add Pause command 2018-05-20 18:09:19 +01:00
Ben Jackson
f55dc8cd8e StepOut and Continue 2018-05-20 16:18:40 +01:00
Ben Jackson
8437397491 Actually connect to a real debug server and add some basic debugging
UI is totally placeholder
Step over/step in are the only supported commands
Hardcoded launch config using a specific debug adapter that happened to
work
Adds a trivial log file hack and fixes the protocol handler for bytes
2018-05-20 15:11:58 +01:00
Ben Jackson
cd2ccedcb6 Talk to a job from python
Very very basic inital checkin to show a way to talk to/from a Vim job
using python (mainly), and to parse the sort of messages that LSP and
VSCode debugger protocol speak (i.e. similar to http messages).

Very hacky, sort of holds together for what it is.
2018-05-16 02:31:23 +01:00