Skip to content

DO NOT MERGE Rebase attempt #821

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 15 commits into from

Conversation

TylerLeonhardt
Copy link
Member

No description provided.

SeeminglyScience and others added 13 commits December 13, 2018 20:33
* Add infrastructure for managing context

Adds classes that manage the state of the prompt, nested contexts,
and multiple ReadLine implementations of varying complexity.

(cherry picked from commit 7ca8b9b)

* Console related classes changes

Change ReadLine method to call out to PowerShellContext. This lets
the PowerShellContext determine which ReadLine implementation to use
based on available modules.

Also includes some changes to the System.Console proxy classes to
account for PSReadLine.

(cherry picked from commit 59bfa3b)

* Rewrite command invocation operations for PSRL

Refactor PowerShellContext to have a more robust system for
tracking the context in which commands are invoked. This is a
significant change in that all interactions with the runspace
must be done through methods in PowerShellContext. These changes
also greatly increase stability.

(cherry picked from commit 21e6b5f)

* Rewrite direct SessionStateProxy calls

All interactions with the runspace must be done through
PowerShellContext now that nested PowerShell instances are
encountered frequently.

Also fix a bunch of race conditions that were made more obvious
with the changes.

(cherry picked from commit fa2faba)

* Pass feature flags to Start-EditorServicesHost

* Address feedback and fix travis build error

- Address feedback from @bergmeister

- Fix a few other similar mistakes I found

- Fix travis build failing due to missing documentation comment tag

* Fix all tests except ServiceLoadsProfileOnDemand

- Fix an issue where intellisense wouldn't finish if PSReadLine was not
  running

- Fix a crash that would occur if the PSHost was not set up for input
  like the one used in our tests

- Fix a compile error when building against PSv3/4

- Fix a hang that occurred when the PromptNest was disposed during a
  debug session

- Fix some XML documentation comment syntax errors

* Fix extra new lines outputted after each command

Removed a call to WriteOutput where it wasn't required.  This was
creating extra new lines which failed tests (and obviously didn't
look right).

* Remove unused field from InvocationEventQueue

And also fix spacing between the other fields.

* Remove copying of PDB's in build script

@rjmholt did a better job of this in a different PR that we can merge
into 2.0.0 later. It also doesn't make sense in this PR.

* Add AppVeyor tracking to branch 2.0.0

* Fix ambiguous method crash on CoreCLR

Simplify delegate creation in PSReadLineProxy and fix the immediate
ambiguous method crash the complicated code caused on CoreCLR.

* first round of feedback changes

* Some more feedback changes

* add a bunch of copyright headers I missed

* remove KeyAvailable query

* Get the latest PSReadLine module installed

* Add PSReadLine installation to build script

* the file should be downloaded as a .zip

* Address remaining feedback

* Attempt to fix issue with native apps and input

On Unix like platforms some native applications do not work properly if
our event subscriber is active. I suspect this is due to PSReadLine
querying cursor position prior to checking for events. I believe the
cursor position response emitted is being read as input.

I've attempted to fix this by hooking into PSHost.NotifyBeginApplication
to temporarly remove the event subscriber, and
PSHost.NotifyEndApplication to recreate it afterwards.

* Revert "Attempt to fix issue with native apps and input"

This reverts commit 1682410.

* Fix build failure
* Use PSRL release and filter out previous betas
* Use fully qualified type name for broad PowerShell support
* Fix CI module installation
* Move PSES builds to netstandard and use PSStandard APIs

* Add shim modules for Windows PowerShell and PowerShell Core 6.0

* Migrate tests to run on .NET Core and on *nix

* Make build file more declarative

* Use latest xunit

* Exclude host integration tests

* Clean out csproj files

* Fix up Travis build

* Retire compatibility APIs for PowerShell v3/4

* Introduce test hook for using InitialSessionState.CreateDefault2() when running on PowerShell Core SDK

* Fix session details gathering in nested prompts

To create a nested PowerShell instance you can't set the runspace
because the target runspace is assumed to be the runspace in TLS.
@TylerLeonhardt TylerLeonhardt changed the title Rebase attempt DO NOT MERGE Rebase attempt Dec 14, 2018
@TylerLeonhardt
Copy link
Member Author

TylerLeonhardt commented Dec 14, 2018

oof... this is rough. @SeeminglyScience + @rjmholt after fighting issues in the rebase we've hit a completely unusable experience on *nix... only with PSReadLine turned on of course...

really could use assistance... but it's very possible one of the changes since 1.10 broke some things.

@SeeminglyScience
Copy link
Collaborator

@TylerLeonhardt could you describe the issues a bit?

@TylerLeonhardt
Copy link
Member Author

Sorry, the issue is that any editor action (intellisense, codelens, F8, etc) needs you to hit any key in the PSIC before you actually see the action (intellisense, codelens, F8, etc).

My guess is that the rebase either included something that wasn't using the UnixConsoleEcho ReadKey, or reverted something that was fixed.

@SeeminglyScience
Copy link
Collaborator

@TylerLeonhardt Here's something to do for troubleshooting

  1. Get PSES into a state when a background command is queue, but isn't processing due to the pending key press

  2. Start debugging PSES with justMyCode turn off

  3. Pause the debugger. You should see a thread in the call stack that looks similar to this:

    1. UnixConsoleOperations.ReadKey L58
    2. ConsoleProxy.UnixReadKey L82
    3. PSReadLinePromptContext.AnonymousMethod L76
    4. <something in PSReadLine>
  4. If not, then the delegate we give to PSReadLine either isn't being set early enough, or it just isn't being set

  5. Also check all the threads for frames that are waiting on a console API

@rkeithhill
Copy link
Contributor

rkeithhill commented Dec 15, 2018

Exactly what was the rebase here? The 2.0.0. branch rebased onto master?

@TylerLeonhardt
Copy link
Member Author

Yeah. Adding the new master bits to 2.0.0

@rjmholt rjmholt closed this Jan 30, 2019
@TylerLeonhardt TylerLeonhardt deleted the rebase-attempt branch September 16, 2019 16:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants