diff --git a/scripts/Start-EditorServices.ps1 b/scripts/Start-EditorServices.ps1 index 16c730e062..4abd394853 100644 --- a/scripts/Start-EditorServices.ps1 +++ b/scripts/Start-EditorServices.ps1 @@ -55,7 +55,7 @@ param( [switch] $EnableConsoleRepl, - [string] + [switch] $DebugServiceOnly, [string[]] @@ -272,149 +272,3 @@ catch [System.Exception] { $e = $e.InnerException; } } - -# SIG # Begin signature block -# MIIasAYJKoZIhvcNAQcCoIIaoTCCGp0CAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB -# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR -# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUpu7oVqr4fTIiTHDYLqwN5cNP -# 7VOgghWDMIIEwzCCA6ugAwIBAgITMwAAALfuAa/68MeouwAAAAAAtzANBgkqhkiG -# 9w0BAQUFADB3MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G -# A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEw -# HwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EwHhcNMTYwOTA3MTc1ODQ1 -# WhcNMTgwOTA3MTc1ODQ1WjCBszELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hp -# bmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw -# b3JhdGlvbjENMAsGA1UECxMETU9QUjEnMCUGA1UECxMebkNpcGhlciBEU0UgRVNO -# OkJCRUMtMzBDQS0yREJFMSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBT -# ZXJ2aWNlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCMjQSw3ep1m -# SndFRK0xgVRgm9wSl3i2llRtDdxzAWN9gQtYAE3hJP0/pV/7HHkshYPfMIRf7Pm/ -# dxSsAN+7ATnNUk+wpe46rfe0FDNxoE6CYaiMSNjKcMXH55bGXNnwrrcsMaZrVXzS -# IQcmAhUQw1jdLntbdTyCAwJ2UqF/XmVtWV/U466G8JP8VGLddeaucY0YKhgYwMnt -# Sp9ElCkVDcUP01L9pgn9JmKUfD3yFt2p1iZ9VKCrlla10JQwe7aNW7xjzXxvcvlV -# IXeA4QSabo4dq8HUh7JoYMqh3ufr2yNgTs/rSxG6D5ITcI0PZkH4PYjO2GbGIcOF -# RVOf5RxVrwIDAQABo4IBCTCCAQUwHQYDVR0OBBYEFJZnqouaH5kw+n1zGHTDXjCT -# 5OMAMB8GA1UdIwQYMBaAFCM0+NlSRnAK7UD7dvuzK7DDNbMPMFQGA1UdHwRNMEsw -# SaBHoEWGQ2h0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3Rz -# L01pY3Jvc29mdFRpbWVTdGFtcFBDQS5jcmwwWAYIKwYBBQUHAQEETDBKMEgGCCsG -# AQUFBzAChjxodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY3Jv -# c29mdFRpbWVTdGFtcFBDQS5jcnQwEwYDVR0lBAwwCgYIKwYBBQUHAwgwDQYJKoZI -# hvcNAQEFBQADggEBAG7J+Fdd7DgxG6awnA8opmQfW5DHnNDC/JPLof1sA8Nqczym -# cnWIHmlWhqA7TUy4q02lKenO+R/vbmHna1BrC/KkczAyhOzkI2WFU3PeYubv8EjK -# fYPmrNvS8fCsHJXj3N6fuFwXkHmCVBjTchK93auG09ckBYx5Mt4zW0TUbbw4/QAZ -# X64rbut6Aw/C1bpxqBb8vvMssBB9Hw2m8ApFTApaEVOE/sKemVlq0VIo0fCXqRST -# Lb6/QOav3S8S+N34RBNx/aKKOFzBDy6Ni45QvtRfBoNX3f4/mm4TFdNs+SeLQA+0 -# oBs7UgdoxGSpX6vsWaH8dtlBw3NZK7SFi9bBMI4wggTtMIID1aADAgECAhMzAAAB -# QJap7nBW/swHAAEAAAFAMA0GCSqGSIb3DQEBBQUAMHkxCzAJBgNVBAYTAlVTMRMw -# EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN -# aWNyb3NvZnQgQ29ycG9yYXRpb24xIzAhBgNVBAMTGk1pY3Jvc29mdCBDb2RlIFNp -# Z25pbmcgUENBMB4XDTE2MDgxODIwMTcxN1oXDTE3MTEwMjIwMTcxN1owgYMxCzAJ -# BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k -# MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xDTALBgNVBAsTBE1PUFIx -# HjAcBgNVBAMTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjCCASIwDQYJKoZIhvcNAQEB -# BQADggEPADCCAQoCggEBANtLi+kDal/IG10KBTnk1Q6S0MThi+ikDQUZWMA81ynd -# ibdobkuffryavVSGOanxODUW5h2s+65r3Akw77ge32z4SppVl0jII4mzWSc0vZUx -# R5wPzkA1Mjf+6fNPpBqks3m8gJs/JJjE0W/Vf+dDjeTc8tLmrmbtBDohlKZX3APb -# LMYb/ys5qF2/Vf7dSd9UBZSrM9+kfTGmTb1WzxYxaD+Eaxxt8+7VMIruZRuetwgc -# KX6TvfJ9QnY4ItR7fPS4uXGew5T0goY1gqZ0vQIz+lSGhaMlvqqJXuI5XyZBmBre -# ueZGhXi7UTICR+zk+R+9BFF15hKbduuFlxQiCqET92ECAwEAAaOCAWEwggFdMBMG -# A1UdJQQMMAoGCCsGAQUFBwMDMB0GA1UdDgQWBBSc5ehtgleuNyTe6l6pxF+QHc7Z -# ezBSBgNVHREESzBJpEcwRTENMAsGA1UECxMETU9QUjE0MDIGA1UEBRMrMjI5ODAz -# K2Y3ODViMWMwLTVkOWYtNDMxNi04ZDZhLTc0YWU2NDJkZGUxYzAfBgNVHSMEGDAW -# gBTLEejK0rQWWAHJNy4zFha5TJoKHzBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8v -# Y3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNDb2RTaWdQQ0Ff -# MDgtMzEtMjAxMC5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRw -# Oi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY0NvZFNpZ1BDQV8wOC0z -# MS0yMDEwLmNydDANBgkqhkiG9w0BAQUFAAOCAQEAa+RW49cTHSBA+W3p3k7bXR7G -# bCaj9+UJgAz/V+G01Nn5XEjhBn/CpFS4lnr1jcmDEwxxv/j8uy7MFXPzAGtOJar0 -# xApylFKfd00pkygIMRbZ3250q8ToThWxmQVEThpJSSysee6/hU+EbkfvvtjSi0lp -# DimD9aW9oxshraKlPpAgnPWfEj16WXVk79qjhYQyEgICamR3AaY5mLPuoihJbKwk -# Mig+qItmLPsC2IMvI5KR91dl/6TV6VEIlPbW/cDVwCBF/UNJT3nuZBl/YE7ixMpT -# Th/7WpENW80kg3xz6MlCdxJfMSbJsM5TimFU98KNcpnxxbYdfqqQhAQ6l3mtYDCC -# BbwwggOkoAMCAQICCmEzJhoAAAAAADEwDQYJKoZIhvcNAQEFBQAwXzETMBEGCgmS -# JomT8ixkARkWA2NvbTEZMBcGCgmSJomT8ixkARkWCW1pY3Jvc29mdDEtMCsGA1UE -# AxMkTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTEwMDgz -# MTIyMTkzMloXDTIwMDgzMTIyMjkzMloweTELMAkGA1UEBhMCVVMxEzARBgNVBAgT -# Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m -# dCBDb3Jwb3JhdGlvbjEjMCEGA1UEAxMaTWljcm9zb2Z0IENvZGUgU2lnbmluZyBQ -# Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCycllcGTBkvx2aYCAg -# Qpl2U2w+G9ZvzMvx6mv+lxYQ4N86dIMaty+gMuz/3sJCTiPVcgDbNVcKicquIEn0 -# 8GisTUuNpb15S3GbRwfa/SXfnXWIz6pzRH/XgdvzvfI2pMlcRdyvrT3gKGiXGqel -# cnNW8ReU5P01lHKg1nZfHndFg4U4FtBzWwW6Z1KNpbJpL9oZC/6SdCnidi9U3RQw -# WfjSjWL9y8lfRjFQuScT5EAwz3IpECgixzdOPaAyPZDNoTgGhVxOVoIoKgUyt0vX -# T2Pn0i1i8UU956wIAPZGoZ7RW4wmU+h6qkryRs83PDietHdcpReejcsRj1Y8wawJ -# XwPTAgMBAAGjggFeMIIBWjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTLEejK -# 0rQWWAHJNy4zFha5TJoKHzALBgNVHQ8EBAMCAYYwEgYJKwYBBAGCNxUBBAUCAwEA -# ATAjBgkrBgEEAYI3FQIEFgQU/dExTtMmipXhmGA7qDFvpjy82C0wGQYJKwYBBAGC -# NxQCBAweCgBTAHUAYgBDAEEwHwYDVR0jBBgwFoAUDqyCYEBWJ5flJRP8KuEKU5VZ -# 5KQwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3Br -# aS9jcmwvcHJvZHVjdHMvbWljcm9zb2Z0cm9vdGNlcnQuY3JsMFQGCCsGAQUFBwEB -# BEgwRjBEBggrBgEFBQcwAoY4aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9j -# ZXJ0cy9NaWNyb3NvZnRSb290Q2VydC5jcnQwDQYJKoZIhvcNAQEFBQADggIBAFk5 -# Pn8mRq/rb0CxMrVq6w4vbqhJ9+tfde1MOy3XQ60L/svpLTGjI8x8UJiAIV2sPS9M -# uqKoVpzjcLu4tPh5tUly9z7qQX/K4QwXaculnCAt+gtQxFbNLeNK0rxw56gNogOl -# VuC4iktX8pVCnPHz7+7jhh80PLhWmvBTI4UqpIIck+KUBx3y4k74jKHK6BOlkU7I -# G9KPcpUqcW2bGvgc8FPWZ8wi/1wdzaKMvSeyeWNWRKJRzfnpo1hW3ZsCRUQvX/Ta -# rtSCMm78pJUT5Otp56miLL7IKxAOZY6Z2/Wi+hImCWU4lPF6H0q70eFW6NB4lhhc -# yTUWX92THUmOLb6tNEQc7hAVGgBd3TVbIc6YxwnuhQ6MT20OE049fClInHLR82zK -# wexwo1eSV32UjaAbSANa98+jZwp0pTbtLS8XyOZyNxL0b7E8Z4L5UrKNMxZlHg6K -# 3RDeZPRvzkbU0xfpecQEtNP7LN8fip6sCvsTJ0Ct5PnhqX9GuwdgR2VgQE6wQuxO -# 7bN2edgKNAltHIAxH+IOVN3lofvlRxCtZJj/UBYufL8FIXrilUEnacOTj5XJjdib -# Ia4NXJzwoq6GaIMMai27dmsAHZat8hZ79haDJLmIz2qoRzEvmtzjcT3XAH5iR9HO -# iMm4GPoOco3Boz2vAkBq/2mbluIQqBC0N1AI1sM9MIIGBzCCA++gAwIBAgIKYRZo -# NAAAAAAAHDANBgkqhkiG9w0BAQUFADBfMRMwEQYKCZImiZPyLGQBGRYDY29tMRkw -# FwYKCZImiZPyLGQBGRYJbWljcm9zb2Z0MS0wKwYDVQQDEyRNaWNyb3NvZnQgUm9v -# dCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDcwNDAzMTI1MzA5WhcNMjEwNDAz -# MTMwMzA5WjB3MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G -# A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSEw -# HwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EwggEiMA0GCSqGSIb3DQEB -# AQUAA4IBDwAwggEKAoIBAQCfoWyx39tIkip8ay4Z4b3i48WZUSNQrc7dGE4kD+7R -# p9FMrXQwIBHrB9VUlRVJlBtCkq6YXDAm2gBr6Hu97IkHD/cOBJjwicwfyzMkh53y -# 9GccLPx754gd6udOo6HBI1PKjfpFzwnQXq/QsEIEovmmbJNn1yjcRlOwhtDlKEYu -# J6yGT1VSDOQDLPtqkJAwbofzWTCd+n7Wl7PoIZd++NIT8wi3U21StEWQn0gASkdm -# EScpZqiX5NMGgUqi+YSnEUcUCYKfhO1VeP4Bmh1QCIUAEDBG7bfeI0a7xC1Un68e -# eEExd8yb3zuDk6FhArUdDbH895uyAc4iS1T/+QXDwiALAgMBAAGjggGrMIIBpzAP -# BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQjNPjZUkZwCu1A+3b7syuwwzWzDzAL -# BgNVHQ8EBAMCAYYwEAYJKwYBBAGCNxUBBAMCAQAwgZgGA1UdIwSBkDCBjYAUDqyC -# YEBWJ5flJRP8KuEKU5VZ5KShY6RhMF8xEzARBgoJkiaJk/IsZAEZFgNjb20xGTAX -# BgoJkiaJk/IsZAEZFgltaWNyb3NvZnQxLTArBgNVBAMTJE1pY3Jvc29mdCBSb290 -# IENlcnRpZmljYXRlIEF1dGhvcml0eYIQea0WoUqgpa1Mc1j0BxMuZTBQBgNVHR8E -# STBHMEWgQ6BBhj9odHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9k -# dWN0cy9taWNyb3NvZnRyb290Y2VydC5jcmwwVAYIKwYBBQUHAQEESDBGMEQGCCsG -# AQUFBzAChjhodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY3Jv -# c29mdFJvb3RDZXJ0LmNydDATBgNVHSUEDDAKBggrBgEFBQcDCDANBgkqhkiG9w0B -# AQUFAAOCAgEAEJeKw1wDRDbd6bStd9vOeVFNAbEudHFbbQwTq86+e4+4LtQSooxt -# YrhXAstOIBNQmd16QOJXu69YmhzhHQGGrLt48ovQ7DsB7uK+jwoFyI1I4vBTFd1P -# q5Lk541q1YDB5pTyBi+FA+mRKiQicPv2/OR4mS4N9wficLwYTp2OawpylbihOZxn -# LcVRDupiXD8WmIsgP+IHGjL5zDFKdjE9K3ILyOpwPf+FChPfwgphjvDXuBfrTot/ -# xTUrXqO/67x9C0J71FNyIe4wyrt4ZVxbARcKFA7S2hSY9Ty5ZlizLS/n+YWGzFFW -# 6J1wlGysOUzU9nm/qhh6YinvopspNAZ3GmLJPR5tH4LwC8csu89Ds+X57H2146So -# dDW4TsVxIxImdgs8UoxxWkZDFLyzs7BNZ8ifQv+AeSGAnhUwZuhCEl4ayJ4iIdBD -# 6Svpu/RIzCzU2DKATCYqSCRfWupW76bemZ3KOm+9gSd0BhHudiG/m4LBJ1S2sWo9 -# iaF2YbRuoROmv6pH8BJv/YoybLL+31HIjCPJZr2dHYcSZAI9La9Zj7jkIeW1sMpj -# tHhUBdRBLlCslLCleKuzoJZ1GtmShxN1Ii8yqAhuoFuMJb+g74TKIdbrHk/Jmu5J -# 4PcBZW+JC33Iacjmbuqnl84xKf8OxVtc2E0bodj6L54/LlUWa8kTo/0xggSXMIIE -# kwIBATCBkDB5MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4G -# A1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSMw -# IQYDVQQDExpNaWNyb3NvZnQgQ29kZSBTaWduaW5nIFBDQQITMwAAAUCWqe5wVv7M -# BwABAAABQDAJBgUrDgMCGgUAoIGwMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEE -# MBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBS8 -# KIP6mqmI5yRH4/Q0YZBi9PUzkTBQBgorBgEEAYI3AgEMMUIwQKAWgBQAUABvAHcA -# ZQByAFMAaABlAGwAbKEmgCRodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vUG93ZXJT -# aGVsbCAwDQYJKoZIhvcNAQEBBQAEggEApgnmifY0Y0687wiB9NKVNHqDyVSS9Vta -# DsqlUd4H1bL++kacnkCtiNg5onEes1wCcp7UBxcW8pSzOG8kIICn4PmdzcZx+m1Y -# dsL8gQNNYH0GtZk+a4DX6yFuUd/NuLLDOOxHegEVnQ66ifiBxQUNGYmfap112ceQ -# 5VXSxaU9EBBu2b7UGin9+N+9l1YIROMxmlZ6UYzW7ocMhv7fXJrcAoUW5aV0dLB+ -# 3JrpwXZwqCUooAr1UytM6ITFiXNV46MLSnZWhUn6Uzj3F0Z8gURkuuuspC5/Kf0D -# VKCqeXa46wORQNavwJEENDINdvewn+bzL1ysPr5aeMprOp6QMC8G6aGCAigwggIk -# BgkqhkiG9w0BCQYxggIVMIICEQIBATCBjjB3MQswCQYDVQQGEwJVUzETMBEGA1UE -# CBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9z -# b2Z0IENvcnBvcmF0aW9uMSEwHwYDVQQDExhNaWNyb3NvZnQgVGltZS1TdGFtcCBQ -# Q0ECEzMAAAC37gGv+vDHqLsAAAAAALcwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJ -# AzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE3MDYxMjE3MzkzN1owIwYJ -# KoZIhvcNAQkEMRYEFJMMhJyhJug1xntbhJw9SZ0rSyjRMA0GCSqGSIb3DQEBBQUA -# BIIBADOP1R9GuWCN8gG5VsAAcJ8slYPiA/SxqGlQJ4OqHl7qkgxkSzftzlPrLpJW -# X/GDqGMxcCbQ/JBjEqIc0Ty4TracExlXw8kFl6CD7n9Hh04Wrhurai9aSj8xxN1Y -# DvoZ7KNpLUr8Jo1dxfaO+i8Aem3bQCNNwISlxBN7V4hvByAjP1YxXlhiIV7Ibr9d -# 7PVBSLIDRpNX6nptuEOkiexTFfJEOI1OSuZs50RAqXarAr3wAEZqn8mDAJMi9WpZ -# 14iT6OJYqWpPQxixFAoED1oSpiebV6qhNw+ryw/ilSkm5lWtL4gcjk5+kaiEw1k8 -# jYFdXvc6mNe793BfInuWAbo8sZY= -# SIG # End signature block diff --git a/src/features/DebugSession.ts b/src/features/DebugSession.ts index 75b65bf12a..8443ba5fb7 100644 --- a/src/features/DebugSession.ts +++ b/src/features/DebugSession.ts @@ -13,6 +13,8 @@ export namespace StartDebuggerNotification { } export class DebugSessionFeature implements IFeature { + + private sessionCount: number = 1; private command: vscode.Disposable; private examplesPath: string; @@ -42,6 +44,8 @@ export class DebugSessionFeature implements IFeature { let debugCurrentScript = (config.script === "${file}") || !config.request; let generateLaunchConfig = !config.request; + let newSession = true; + if (generateLaunchConfig) { // No launch.json, create the default configuration for both unsaved (Untitled) and saved documents. config.type = 'PowerShell'; @@ -112,14 +116,39 @@ export class DebugSessionFeature implements IFeature { config.internalConsoleOptions = "neverOpen"; // Create or show the interactive console - // TODO #367: Check if "newSession" mode is configured vscode.commands.executeCommand('PowerShell.ShowSessionConsole', true); - // Write out temporary debug session file - utils.writeSessionFile( - utils.getDebugSessionFilePath(), - this.sessionManager.getSessionDetails()); + var sessionFilePath = utils.getDebugSessionFilePath(); + + if (newSession) { + var debugProcess = + this.sessionManager.getDebugSessionProcess( + sessionFilePath); + + debugProcess + .start(`DebugSession-${this.sessionCount++}`) + .then( + sessionDetails => { + this.startDebugger( + config, + sessionFilePath, + sessionDetails); + }); + } + else { + this.startDebugger( + config, + sessionFilePath, + this.sessionManager.getSessionDetails()); + } + } + + private startDebugger( + config: any, + sessionFilePath: string, + sessionDetails: utils.EditorServicesSessionDetails) { + utils.writeSessionFile(sessionFilePath, sessionDetails); vscode.commands.executeCommand('vscode.startDebug', config); } } diff --git a/src/process.ts b/src/process.ts index e7f5b81de9..ae39bb9627 100644 --- a/src/process.ts +++ b/src/process.ts @@ -15,7 +15,6 @@ import { Logger } from './logging'; export class PowerShellProcess { - private sessionFilePath: string; private consoleTerminal: vscode.Terminal = undefined; private consoleCloseSubscription: vscode.Disposable; private sessionDetails: utils.EditorServicesSessionDetails; @@ -25,15 +24,14 @@ export class PowerShellProcess { constructor( public exePath: string, + private title: string, private log: Logger, + private startArgs: string, + private sessionFilePath: string, private sessionSettings: Settings.ISettings) { - - this.sessionFilePath = - utils.getSessionFilePath( - Math.floor(100000 + Math.random() * 900000)); } - public start(startArgs: string): Thenable { + public start(logFileName: string): Thenable { return new Promise( (resolve, reject) => { @@ -44,14 +42,14 @@ export class PowerShellProcess { __dirname, '../scripts/Start-EditorServices.ps1'); - var editorServicesLogPath = this.log.getLogFilePath("EditorServices"); + var editorServicesLogPath = this.log.getLogFilePath(logFileName); var featureFlags = this.sessionSettings.developer.featureFlags !== undefined ? this.sessionSettings.developer.featureFlags.map(f => `'${f}'`).join(', ') : ""; - startArgs += + this.startArgs += `-LogPath '${editorServicesLogPath}' ` + `-SessionDetailsPath '${this.sessionFilePath}' ` + `-FeatureFlags @(${featureFlags})` @@ -68,7 +66,7 @@ export class PowerShellProcess { powerShellArgs.push( "-Command", - "& '" + startScriptPath + "' " + startArgs); + "& '" + startScriptPath + "' " + this.startArgs); var powerShellExePath = this.exePath; @@ -95,7 +93,7 @@ export class PowerShellProcess { // Launch PowerShell in the integrated terminal this.consoleTerminal = vscode.window.createTerminal( - "PowerShell Integrated Console", + this.title, powerShellExePath, powerShellArgs); @@ -148,7 +146,7 @@ export class PowerShellProcess { "powershell.exe started --", " pid: " + pid, " exe: " + powerShellExePath, - " args: " + startScriptPath + ' ' + startArgs + os.EOL + os.EOL); + " args: " + startScriptPath + ' ' + this.startArgs + os.EOL + os.EOL); }); } catch (e) diff --git a/src/session.ts b/src/session.ts index 419b52ee97..3215590786 100644 --- a/src/session.ts +++ b/src/session.ts @@ -36,6 +36,7 @@ export class SessionManager implements Middleware { private hostVersion: string; private isWindowsOS: boolean; + private editorServicesArgs: string; private powerShellExePath: string = ""; private sessionStatus: SessionStatus; private suppressRestartPrompt: boolean; @@ -139,7 +140,7 @@ export class SessionManager implements Middleware { } } - var startArgs = + this.editorServicesArgs = "-EditorServicesVersion '" + this.requiredEditorServicesVersion + "' " + "-HostName 'Visual Studio Code Host' " + "-HostProfileId 'Microsoft.VSCode' " + @@ -148,17 +149,17 @@ export class SessionManager implements Middleware { "-EnableConsoleRepl "; if (this.sessionSettings.developer.editorServicesWaitForDebugger) { - startArgs += '-WaitForDebugger '; + this.editorServicesArgs += '-WaitForDebugger '; } if (this.sessionSettings.developer.editorServicesLogLevel) { - startArgs += "-LogLevel '" + this.sessionSettings.developer.editorServicesLogLevel + "' " + this.editorServicesArgs += "-LogLevel '" + this.sessionSettings.developer.editorServicesLogLevel + "' " } this.startPowerShell( this.powerShellExePath, this.sessionSettings.developer.powerShellExeIsWindowsDevBuild, bundledModulesPath, - startArgs); + this.editorServicesArgs); } else { this.setSessionFailure("PowerShell could not be started, click 'Show Logs' for more details."); @@ -205,6 +206,16 @@ export class SessionManager implements Middleware { this.registeredCommands.forEach(command => { command.dispose(); }); } + public getDebugSessionProcess(sessionPath: string): PowerShellProcess { + return new PowerShellProcess( + this.powerShellExePath, + "[DBG] PowerShell Integrated Console", + this.log, + this.editorServicesArgs + "-DebugServiceOnly ", + sessionPath, + Settings.load()); + } + private onConfigurationUpdated() { var settings = Settings.load(); @@ -265,10 +276,17 @@ export class SessionManager implements Middleware { "Starting PowerShell...", SessionStatus.Initializing); + var sessionFilePath = + utils.getSessionFilePath( + Math.floor(100000 + Math.random() * 900000)); + this.powerShellProcess = new PowerShellProcess( this.powerShellExePath, + "PowerShell Integrated Console", this.log, + startArgs, + sessionFilePath, this.sessionSettings); this.powerShellProcess.onExited( @@ -280,7 +298,7 @@ export class SessionManager implements Middleware { }); this.powerShellProcess - .start(startArgs) + .start("EditorServices") .then( sessionDetails => { this.sessionDetails = sessionDetails;