Commit graph

90 commits

Author SHA1 Message Date
Ben Jackson
98bef3db03 Fix - don't switch windows/buffers to create a new hidden buffer 2020-07-22 10:54:06 +01:00
Ben Jackson
cd5ca37ce1 Neovim support 2020-07-22 10:52:48 +01:00
Ben Jackson
05bbafd60c Close the intaller output when complete 2020-07-22 10:52:48 +01:00
Ben Jackson
0140a607b1 Raise autocommand when installer completes. use this in testing 2020-07-22 10:52:48 +01:00
Ben Jackson
23e5f6bbf4 Switch to running the actual install_gadget.py
This re-uses the OutputView code to run the installer script. Refactor
to remove connection from the base OutputView (and other places, it
wasn't used - only used after ConnectionUp).

This also consolidates the stdout and stderr buffers for running jobs.
The distinction was always arbitrary and probably an error, based on the
fact that they were separate in the APIs not based on usability.
2020-07-22 10:52:48 +01:00
Ben Jackson
025d193493 Add VimspectorInstall command with sort-of completion 2020-07-22 10:48:12 +01:00
Ben Jackson
99b582378a Allow ctrl-c to cancel when asked for a variable 2020-07-18 14:39:54 +01:00
Ben Jackson
7a9f75a06e Don't change the value of equalalways
We were trying to avoid equalalways from changing the UI layout by
unsetting it and resetting it after changes. However, re-setting
equalalways actually resizes all the windows, so this never worked.

Instead we judiciously use rightbelow, leftabove, etc. and specify the
exact window sizes we want.

As a side-effect we make the terminal sizing a little more pleasant by
default, ensuring that it is no wider than 80 chars, and tries to use
any remianing vertical space after reserving 80 chars for the code
window.
2020-07-16 16:05:04 +01:00
Ben Jackson
a4f3fd9c5e Disable relativenumber in utility windows; disable textwidth in neovim too 2020-07-16 08:13:27 +01:00
Ben Jackson
0de023e3c4 Re-raise errors that aren't expectd 2020-07-11 14:42:35 +01:00
Ben Jackson
7c943c2ed7 Fix the terminal window to 80 columns 2020-07-11 14:08:45 +01:00
Ben Jackson
43dd282702 Fix handling data after exit - channels and neovim 2020-07-11 14:07:28 +01:00
Ben Jackson
3643c2effd Only respond to data events for the _current_ job, not buffered data for old jobs 2020-07-11 11:43:28 +01:00
Ben Jackson
6cfc313234 Do a better job of tidying up on test failure; note: We can still receive data callbacks after _OnExit, so just ignore that data 2020-07-10 22:49:30 +01:00
Ben Jackson
32c7960b5f Support channel-based adapters with jobs in neovim
Again, the neovim API is lacking - we have to hack around our own retry
loop (where vim offers 'waittime').

Note neovim documentation says that it returns 0 on connection failure,
but actually it throws an error, so we catch that. There are probably a
ton of other problems with error handling, but i'll rely on user
testing/feedback for that.
2020-07-06 10:44:14 +01:00
Ben Jackson
b322a2e89c Allow 'channel' based transports to also start a job 2020-07-06 10:38:53 +01:00
Ben Jackson
c6d6c7f876 Support "multi-session" mode properly
Document remote debugging and add a test
2020-05-17 14:07:56 +01:00
Ben Jackson
abd8ba7d38 Stabilise some tests 2020-05-08 11:50:38 +01:00
Ben Jackson
4586aa36ff Improve UI for watch window
Add a WinBar as the whole prompt buffer thing is not that well
undersood. Also allow you to delete a watch from any part of the
expression result too.
2020-04-26 21:31:22 +01:00
Ben Jackson
c25e9256aa Fix restart command in neovim when terminal in use
Neovim doesn't allow you to replace a terminal buffer if the buffer has
received some output, so we tell it that the buffer is not modified as a
hackaround.

Fixes #154
2020-04-26 10:21:24 +01:00
Ben Jackson
b20f61bcff Sigh, neovim doesn't support default method arguments 2020-04-25 20:07:03 +01:00
Ben Jackson
7a70519b03 Add basic support for conditional breakpoints
This is the minimal required for a user to use conditional breakpoint -
we add an options dict to each breakpoint (line and function) and allow
the condition to be supplied. We add a plug mapping and a default
shortcut (<leader><F9>) to add one where we ask the user to enter the
condition and hit expression. This isn't great but it works.

We don't check the capabilities, so they would just be ignored if used
on a server that doesn't support them. We also ask for a hit expression
which most users won't understand so this isn't ideal either.

No tests yet.
2020-04-25 19:57:42 +01:00
Ben Jackson
1003cdc0b2 Add a splash popup while starting up
Sometimes it can take quite a while to start up and initialise the debug
adapter. So we use popup/float to display the status as we start up and
shut down.

This increases minimum Vim version to 8.2, but that's been out for ages
now and I intend to agressively require latest/later vim/neovim
versions.
2020-03-26 23:25:50 +00:00
Ben Jackson
c1283a292c When creating a terminal window in neovim, use a new buffer
neovim's termopen() replaces the buffer object in the current window
with a terminal, internally, this completely breaks the buffer list.

Repro:
* Create test.vim:

```
vsplit
call termopen( '/bin/bash', { 'cwd': getcwd() } )
call bufload( expand( '<sfile>' ) )
```

Then:
* `nvim -Nu NONE test.vim`
* `:source %`

Error is "Invald buffer name 'test.vim'"

Anyway, the correct thing to do is to create a _new_ buffer before
making it into a terminal (vnew, new) rather than a split of the current
one. This was only working before because the CodeView window never had
any buffer in it and was broken by the change to use the current buffer
when staring debugging.

Fixes #131
2020-03-09 20:52:34 +00:00
Ben Jackson
0aba8e0179 Work around neovim bug where environ() crashes 2020-02-16 20:15:41 +00:00
Ben Jackson
37fefafe35 Fix tracebacks when the debug adapter dies very quickly 2020-02-16 20:15:41 +00:00
Ben Jackson
896b20f490 Hackaround for missing 'env' in termopen and jobstart in neovim 2020-02-02 17:37:53 +00:00
Ben Jackson
ab56d2cef4 Import the vim module
In Vim, the vim module is always imported by magic in the global scope,
but the docs suggest that you're supposed to import it anyway.

In NeoVim it's never imported so we were relying on some other plugins
having already imported it.
2020-01-28 20:52:33 +00:00
Ben Jackson
5ee8ffc3f6 Catch E325 in neovim 2020-01-19 20:16:52 +00:00
Ben Jackson
6cf4f9f9ab FixUp: Some comments 2020-01-19 20:07:18 +00:00
Ben Jackson
ef4a6fc10c FixUp: use normal! to avoid user mappings, thanks vint! 2020-01-19 10:28:34 +00:00
Ben Jackson
355f0f0e0c Implement command line completion for watch/eval 2020-01-17 00:02:24 +00:00
Ben Jackson
099ffc2af9 Disable swap files in the neovim buffers too 2020-01-15 23:17:15 +00:00
Ben Jackson
c2b0cc8f18 Attempt to make the output windows a little less rubbish on neovim 2020-01-15 23:17:15 +00:00
Ben Jackson
149d48b688 Scroll the output buffer when visible 2020-01-15 23:17:15 +00:00
Ben Jackson
c898eb47b2 Fix filtering VimspectorShowOutput 2020-01-15 23:17:15 +00:00
Ben Jackson
a00e6a19d6 Fix output buffers. bufnr creates an _unloaded_ buffer, so we have to load it 2020-01-15 23:17:15 +00:00
Ben Jackson
7456c26c2a Add some :commands for basic usages 2020-01-15 23:17:15 +00:00
Ben Jackson
04bb03da0a Add channel support for neovim 2020-01-15 23:17:15 +00:00
Ben Jackson
29c26996fb Add neovim job/terminal APIs 2020-01-15 23:17:15 +00:00
Ben Jackson
18627b9244 Add a way to have multiple vim API layers 2020-01-15 23:17:15 +00:00
Ben Jackson
5aa33c19f7 Remove unused ForceRead function 2020-01-15 23:17:15 +00:00
Ben Jackson
ee1bb009ea Wrap the terminal API in vimscript layer 2020-01-15 23:17:15 +00:00
Ben Jackson
dcdab63516 Remove use of bindeval() as it is not suported in neovim 2020-01-15 23:17:15 +00:00
tinmarino
1e153910fa Fix: Remove balloon '...' in windows != code_window
Problem: In non-code window, user see a '...' balloon even if python
knows it does not need to work
Solution: use pyeval in vim so that python's knowledge is getting back
from the stack as return value
2020-01-09 20:37:03 -03:00
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