@@ -729,39 +729,38 @@ export class SessionManager implements Middleware {
729
729
}
730
730
731
731
private showSessionMenu ( ) {
732
- let menuItems : SessionMenuItem [ ] = [ ] ;
733
-
734
732
const currentExePath = ( this . powerShellExePath || "" ) . toLowerCase ( ) ;
735
733
const availablePowerShellExes =
736
734
getAvailablePowerShellExes ( this . platformDetails , this . sessionSettings ) ;
737
735
738
- if ( this . sessionStatus === SessionStatus . Running ) {
739
- const currentPowerShellExe =
736
+ let sessionText : string ;
737
+
738
+ switch ( this . sessionStatus ) {
739
+ case SessionStatus . Running :
740
+ case SessionStatus . Initializing :
741
+ case SessionStatus . NotStarted :
742
+ case SessionStatus . NeverStarted :
743
+ case SessionStatus . Stopping :
744
+ const currentPowerShellExe =
740
745
availablePowerShellExes
741
746
. find ( ( item ) => item . exePath . toLowerCase ( ) === currentExePath ) ;
742
747
743
- const powerShellSessionName =
744
- currentPowerShellExe ?
745
- currentPowerShellExe . versionName :
746
- `PowerShell ${ this . versionDetails . displayVersion } ` +
747
- `(${ this . versionDetails . architecture } ) ${ this . versionDetails . edition } Edition ` +
748
- `[${ this . versionDetails . version } ]` ;
749
-
750
- menuItems = [
751
- new SessionMenuItem (
752
- `Current session: ${ powerShellSessionName } ` ,
753
- ( ) => { vscode . commands . executeCommand ( "PowerShell.ShowLogs" ) ; } ) ,
754
-
755
- new SessionMenuItem (
756
- "Restart Current Session" ,
757
- ( ) => { this . restartSession ( ) ; } ) ,
758
- ] ;
759
- } else if ( this . sessionStatus === SessionStatus . Failed ) {
760
- menuItems = [
761
- new SessionMenuItem (
762
- `Session initialization failed, click here to show PowerShell extension logs` ,
763
- ( ) => { vscode . commands . executeCommand ( "PowerShell.ShowLogs" ) ; } ) ,
764
- ] ;
748
+ const powerShellSessionName =
749
+ currentPowerShellExe ?
750
+ currentPowerShellExe . versionName :
751
+ `PowerShell ${ this . versionDetails . displayVersion } ` +
752
+ `(${ this . versionDetails . architecture } ) ${ this . versionDetails . edition } Edition ` +
753
+ `[${ this . versionDetails . version } ]` ;
754
+
755
+ sessionText = `Current session: ${ powerShellSessionName } ` ;
756
+ break ;
757
+
758
+ case SessionStatus . Failed :
759
+ sessionText = "Session initialization failed, click here to show PowerShell extension logs" ;
760
+ break ;
761
+
762
+ default :
763
+ throw new TypeError ( "Not a valid value for the enum 'SessionStatus'" ) ;
765
764
}
766
765
767
766
const powerShellItems =
@@ -773,12 +772,22 @@ export class SessionManager implements Middleware {
773
772
( ) => { this . changePowerShellExePath ( item . exePath ) ; } ) ;
774
773
} ) ;
775
774
776
- menuItems = menuItems . concat ( powerShellItems ) ;
775
+ const menuItems : SessionMenuItem [ ] = [
776
+ new SessionMenuItem (
777
+ sessionText ,
778
+ ( ) => { vscode . commands . executeCommand ( "PowerShell.ShowLogs" ) ; } ) ,
779
+
780
+ new SessionMenuItem (
781
+ "Restart Current Session" ,
782
+ ( ) => { this . restartSession ( ) ; } ) ,
783
+
784
+ // Add all of the different PowerShell options
785
+ ...powerShellItems ,
777
786
778
- menuItems . push (
779
787
new SessionMenuItem (
780
788
"Open Session Logs Folder" ,
781
- ( ) => { vscode . commands . executeCommand ( "PowerShell.OpenLogFolder" ) ; } ) ) ;
789
+ ( ) => { vscode . commands . executeCommand ( "PowerShell.OpenLogFolder" ) ; } ) ,
790
+ ] ;
782
791
783
792
vscode
784
793
. window
0 commit comments