Commit graph

87 commits

Author SHA1 Message Date
Ben Jackson
256579c4d8 Imrpove console evaluation somewhat. Fix restart bug not resetting connection in the console view 2018-12-19 01:33:21 +00:00
Ben Jackson
3a898edd34 Untested: properly expand lists of dictionaries 2018-12-19 00:44:50 +00:00
Ben Jackson
87db1e3478 Properly responsd to server reverse-request 2018-12-19 00:44:33 +00:00
Ben Jackson
73fe403a19 Per the spec, write the data as json the consoles 2018-12-16 19:15:13 +00:00
Ben Jackson
912cd047b1 Fix flake8 errors 2018-12-16 19:14:44 +00:00
Ben Jackson
83ecbe1aed Improve cleanup by forcefully closing the tab. This could leave unsaved buffers hidden, but it's not easy to know what better to do. Mainly issues happen due to our own buffers being marked as modified for some rason. TODO: fix that instead 2018-12-16 19:14:26 +00:00
Ben Jackson
62e9335a10 Support runInTerminal (sort of) 2018-12-16 19:13:10 +00:00
Ben Jackson
3416070b95 Remove debug 2018-06-10 23:56:05 +01:00
Ben Jackson
08eed4ff15 Update the test/example config file with vars 2018-06-10 23:35:33 +01:00
Ben Jackson
79b25c0860 Allow for variable expansion in configuration
We expand environment variables, ~ and workspaceRoot. The latter is to
match vscode and typical launch configs. As we don't know what the
workspeace root might be, we use the location of the .vimspector.json.
2018-06-10 23:31:20 +01:00
Ben Jackson
3f9bc6f921 Re-add user-requested-breakpoints when resetting
This adds the markers back to any buffers that were open beforehand and
used to request line breakpoints.
2018-06-10 18:34:37 +01: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
6d709d551c Use a prompt that matches the buffer output, so that it is more obvious 2018-06-10 00:06:18 +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
b9ceb5e8ec Fix the restart button. You can't choose another configuration, but that appears impossible 2018-06-05 23:13:39 +01:00
Ben Jackson
1f4f1a1fcc Preserve expand/collapse state of variables and watches
This is starting to get horribly hacky and needs refactoring into
proper classes. Expandable variables now have the following additional
magic properties:

- '_expanded': True (expanded), False (collapsed), none = no preference
- '_variables': Current of child variables
- '_old_variables': The previous state of the '_variables' list when
                    refreshing

Remember that '_result' (the magic property of a watch expression) is
also treated like an expandable variable, so also has these magic
parameters.
2018-06-05 21:49:29 +01:00
Ben Jackson
22ffc43129 The +/- just makes it confusing 2018-06-03 22:02:09 +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
df10cd84cf Tidy up the buffer append logic
Vim seems to insist that a buffer has at least one line. This means that
the first line set in the buffer object has to be a special case. Sigh.
Create a method to wrap that up.
2018-06-03 17:16:20 +01:00
Ben Jackson
553ad95404 Simplify vim options changes 2018-06-03 14:29:51 +01:00
Ben Jackson
a5ee534c98 Fix errors when values contain ' 2018-06-03 00:37:06 +01:00
Ben Jackson
040746409b Put the watches between the vars and the scopes 2018-06-03 00:36:46 +01:00
Ben Jackson
fa775f4499 Separate watches and scopes
They are related (and share code) but make more sense separately
2018-06-03 00:20:07 +01:00
Ben Jackson
fcf19a6d52 More workarounds for free-and-loose-with-the-spec servers 2018-06-01 19:55:51 +01:00
Ben Jackson
298ff8cd9c Allow remote attach to gdbserver without pid picking 2018-06-01 19:55:32 +01:00
Ben Jackson
faf0cefb82 Use the formatted message, unformatted, if there is no other message 2018-06-01 19:55:05 +01:00
Ben Jackson
bd4fa964b0 Only add the log handler once 2018-06-01 19:54:27 +01:00
Ben Jackson
65e2a50d28 Yet more hacking. This sort of makes it work for rust 2018-05-29 02:15:18 +01:00
Ben Jackson
20045b2941 Support the lldb debugger
The advantage of this one is that it has globals and statics in the
variables and runs directly in lldb. It can also show disassembly,
though we don't yet support that.

The disadvantage is that this is yet another plugin that plays fast and
loose with the protocol, so we have to add a bunch more gets.
2018-05-29 01:48:37 +01:00
Ben Jackson
306854cbd6 Keep trying to load a real stack frame until we find one 2018-05-29 00:46:39 +01:00
Ben Jackson
b6a9cba52e Support the bash debugger
This required working around some sort of bug where the server returns
an invalid content length. Either that or we are somehow processing the
same message twice with additional escaping? It's really strange.
2018-05-29 00:39:37 +01:00
Ben Jackson
ba0c11392d Fix python debugger again 2018-05-28 22:22:00 +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
9baea25c46 Start to refactor breakpoints into different types
This basically stores line breakpoints as a map by file name. Soon to
come: function breakpoints and others.
2018-05-28 19:11:29 +01:00
Ben Jackson
979e796bf4 SOrt out the breakpoints TODO. There's still a lot to do in that space 2018-05-28 16:32:41 +01:00
Ben Jackson
bac30acff3 Refactor config file to set adapter properties independently
This can later be extended to set adapter properties globally.
2018-05-28 16:11:11 +01:00
Ben Jackson
9e0b68330e Tidy up the buffers and don't switch on new 2018-05-28 15:48:51 +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
ed703724ca Fix pause/continue/pause 2018-05-28 15:12:53 +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
4815c832f0 Only enable balloons when supported 2018-05-28 12:31:10 +01:00
Ben Jackson
ace8a4d736 Don't break the parser on message handling exceptions 2018-05-28 11:30:19 +01:00
Ben Jackson
5278cd17fe When stepping, try to only reload the current thread stack trace 2018-05-28 11:18:34 +01:00
Ben Jackson
539b6d5c13 Don't send configurationDone each time we set breakpoints 2018-05-28 11:18:18 +01:00
Ben Jackson
403b90a961 Reintroduce width 2018-05-28 11:17:58 +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
0a19048311 Don't try to expand variables that are not expandable 2018-05-27 23:59:36 +01:00
Ben Jackson
b02d35e78d Very hacky: Support for attach
This introduced more hacks than it should. In particular, the sequence
about stack trace requesting became very messy. When we attach, we don't
instantly get a stopped event. This required making the Pause command
actually work (sort of). In this case we often won't have a proper
current thread.

Instead we sort of request all threads whenever we get a thread event,
thought his is horribly hacky and we should really just use the thread
event as-is. We then attempt to pause ALL threads on pause and continue
requests when we don't know the current thread.

Another issue is that when pausing it's likely we don't have the source
location info for the pause location (something like select() or
whatever), so we only set the current frame to the lowest one we have
source for. This sort of roughly matches what you want.

This whole thing makes it clear that threads and stack trace in separate
panes makes no sense. We need to replicate the hierarchy in the
variables view for threads and stack traces.
2018-05-27 23:40:37 +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