@@ -5,16 +5,17 @@ import net = require("net");
5
5
import path = require( "path" ) ;
6
6
import vscode = require( "vscode" ) ;
7
7
import TelemetryReporter , { TelemetryEventProperties , TelemetryEventMeasurements } from "@vscode/extension-telemetry" ;
8
- import { Message } from "vscode-jsonrpc" ;
9
- import { ILogger , LanguageClientOutputChannelAdapter , LanguageClientTraceFormatter } from "./logging" ;
8
+ import { Message , Trace } from "vscode-jsonrpc" ;
9
+ import { ILogger } from "./logging" ;
10
10
import { PowerShellProcess } from "./process" ;
11
11
import { Settings , changeSetting , getSettings , getEffectiveConfigurationTarget , validateCwdSetting } from "./settings" ;
12
12
import utils = require( "./utils" ) ;
13
13
14
14
import {
15
15
CloseAction , CloseHandlerResult , DocumentSelector , ErrorAction , ErrorHandlerResult ,
16
16
LanguageClientOptions , Middleware , NotificationType ,
17
- RequestType0 , ResolveCodeLensSignature
17
+ RequestType0 , ResolveCodeLensSignature ,
18
+ RevealOutputChannelOn ,
18
19
} from "vscode-languageclient" ;
19
20
import { LanguageClient , StreamInfo } from "vscode-languageclient/node" ;
20
21
@@ -93,28 +94,7 @@ export class SessionManager implements Middleware {
93
94
private startCancellationTokenSource : vscode . CancellationTokenSource | undefined ;
94
95
private suppressRestartPrompt = false ;
95
96
private versionDetails : IPowerShellVersionDetails | undefined ;
96
-
97
- private _outputChannel ?: vscode . LogOutputChannel ;
98
- /** Omnisharp and PSES messages sent via LSP are surfaced here. */
99
- private get outputChannel ( ) : vscode . LogOutputChannel | undefined {
100
- return vscode . workspace . getConfiguration ( "powershell.developer" ) . get < boolean > ( "traceLsp" , false )
101
- ? this . _outputChannel
102
- ??= new LanguageClientOutputChannelAdapter (
103
- vscode . window . createOutputChannel ( "PowerShell: Editor Services" , { log : true } )
104
- )
105
- : undefined ;
106
- }
107
-
108
- private _traceOutputChannel ?: vscode . LogOutputChannel ;
109
- /** The LanguageClient LSP message trace is surfaced here. */
110
- private get traceOutputChannel ( ) : vscode . LogOutputChannel | undefined {
111
- return vscode . workspace . getConfiguration ( "powershell.developer" ) . get < boolean > ( "traceLsp" , false )
112
- ? this . _traceOutputChannel
113
- ??= new LanguageClientTraceFormatter (
114
- vscode . window . createOutputChannel ( "PowerShell: Trace LSP" , { log : true } )
115
- )
116
- : undefined ;
117
- }
97
+ private traceLogLevelHandler ?: vscode . Disposable ;
118
98
119
99
constructor (
120
100
private extensionContext : vscode . ExtensionContext ,
@@ -126,7 +106,6 @@ export class SessionManager implements Middleware {
126
106
hostVersion : string ,
127
107
publisher : string ,
128
108
private telemetryReporter : TelemetryReporter ) {
129
-
130
109
// Create the language status item
131
110
this . languageStatusItem = this . createStatusBarItem ( ) ;
132
111
// We have to override the scheme because it defaults to
@@ -299,6 +278,8 @@ export class SessionManager implements Middleware {
299
278
this . startCancellationTokenSource ?. dispose ( ) ;
300
279
this . startCancellationTokenSource = undefined ;
301
280
this . sessionDetails = undefined ;
281
+ this . traceLogLevelHandler ?. dispose ( ) ;
282
+ this . traceLogLevelHandler = undefined ;
302
283
303
284
this . setSessionStatus ( "Not Started" , SessionStatus . NotStarted ) ;
304
285
}
@@ -375,6 +356,7 @@ export class SessionManager implements Middleware {
375
356
true ,
376
357
false ,
377
358
this . logger ,
359
+ this . extensionContext . logUri ,
378
360
this . getEditorServicesArgs ( bundledModulesPath , this . PowerShellExeDetails ) + "-DebugServiceOnly " ,
379
361
this . getNewSessionFilePath ( ) ,
380
362
this . sessionSettings ) ;
@@ -585,6 +567,7 @@ export class SessionManager implements Middleware {
585
567
false ,
586
568
this . shellIntegrationEnabled ,
587
569
this . logger ,
570
+ this . extensionContext . logUri ,
588
571
this . getEditorServicesArgs ( bundledModulesPath , powerShellExeDetails ) ,
589
572
this . getNewSessionFilePath ( ) ,
590
573
this . sessionSettings ) ;
@@ -669,6 +652,7 @@ export class SessionManager implements Middleware {
669
652
} ) ;
670
653
} ) ;
671
654
} ;
655
+
672
656
const clientOptions : LanguageClientOptions = {
673
657
documentSelector : this . documentSelector ,
674
658
synchronize : {
@@ -705,8 +689,9 @@ export class SessionManager implements Middleware {
705
689
} ,
706
690
} ,
707
691
middleware : this ,
708
- traceOutputChannel : this . traceOutputChannel ,
709
- outputChannel : this . outputChannel
692
+ // traceOutputChannel: traceOutputChannel,
693
+ // outputChannel: outputChannel,
694
+ revealOutputChannelOn : RevealOutputChannelOn . Never
710
695
} ;
711
696
712
697
const languageClient = new LanguageClient ( "powershell" , "PowerShell Editor Services Client" , connectFunc , clientOptions ) ;
@@ -759,6 +744,19 @@ export class SessionManager implements Middleware {
759
744
return languageClient ;
760
745
}
761
746
747
+ /** Synchronizes a vscode LogOutputChannel log level to the LSP trace setting to minimize traffic */
748
+ private async setLspTrace ( languageClient : LanguageClient , level : vscode . LogLevel ) : Promise < void > {
749
+ this . logger . writeVerbose ( "LSP Trace level changed to: " + level . toString ( ) ) ;
750
+ if ( level == vscode . LogLevel . Trace ) {
751
+ return languageClient . setTrace ( Trace . Verbose ) ;
752
+ } else if ( level == vscode . LogLevel . Debug ) {
753
+ return languageClient . setTrace ( Trace . Messages ) ;
754
+ } else {
755
+ return languageClient . setTrace ( Trace . Off ) ;
756
+ }
757
+ }
758
+
759
+
762
760
private async getBundledModulesPath ( ) : Promise < string > {
763
761
// Because the extension is always at `<root>/out/main.js`
764
762
let bundledModulesPath = path . resolve ( __dirname , "../modules" ) ;
0 commit comments