- Instead of a single listener per terminal that handles all events VS
Code now has a single listener per event that handles that event for
all terminals.
- Refactor Terminal to extend TerminalProcess to avoid duplicating
methods. This required some modifications to TerminalProcess to access
the pid and title and to set the ID.
- Remove our async change to shutdown. This was necessary to avoid
disposing too early but shutdown already calls dispose so it turns out
we didn't need to call it ourselves.
- Rename methods to match the command strings.
- Fix getting system shell (uses process.env).
- Use a single bufferer. Since it already supports buffering for
multiple terminals there's no need to have one per terminal.
- Remove replay/reconnect logic. It's broken and unused so there doesn't
seem much point in trying to refactor it to fit the changes right now.
While terminals work now there are still a lot of todos.
It seems reaching into lib/vscode for the types caused tsc to establish
watches that caused it to restart over and over while vscode was
building.
The strategy used here is to symlink it instead which is the same thing
we do for the proxy agent.
It looks like before, the ISetTerminalLAyoutInfoArgs and
IGetTerminalLayoutInfoArgs were part of the terminal interface, but now they're
just interfaces so this commit fixes the imports to get them from
vs/platform/terminal/common/terminalProcess.
We used this to run vscodevim in the browser but it now has a version
that is able to run as a VS Code web extension. This does require an
update to our marketplace, however.