@@ -21,7 +21,7 @@ import { CodeActionProvider } from './Providers/codeActionProvider';
21
21
import { InlayHintsProvider } from './Providers/inlayHintProvider' ;
22
22
// End provider imports
23
23
24
- import { LanguageClientOptions , NotificationType , TextDocumentIdentifier , RequestType , ErrorAction , CloseAction , DidOpenTextDocumentParams , Range , Position , DocumentFilter } from 'vscode-languageclient' ;
24
+ import { LanguageClientOptions , NotificationType , TextDocumentIdentifier , RequestType , ErrorAction , CloseAction , DidOpenTextDocumentParams , Range , Position } from 'vscode-languageclient' ;
25
25
import { LanguageClient , ServerOptions } from 'vscode-languageclient/node' ;
26
26
import { SourceFileConfigurationItem , WorkspaceBrowseConfiguration , SourceFileConfiguration , Version } from 'vscode-cpptools' ;
27
27
import { Status , IntelliSenseStatus } from 'vscode-cpptools/out/testApi' ;
@@ -731,7 +731,8 @@ export interface Client {
731
731
handleConfigurationSelectCommand ( ) : Promise < void > ;
732
732
handleConfigurationProviderSelectCommand ( ) : Promise < void > ;
733
733
handleShowParsingCommands ( ) : Promise < void > ;
734
- handleShowCodeAnalysisCommands ( ) : Promise < void > ;
734
+ handleShowActiveCodeAnalysisCommands ( ) : Promise < void > ;
735
+ handleShowIdleCodeAnalysisCommands ( ) : Promise < void > ;
735
736
handleReferencesIcon ( ) : void ;
736
737
handleConfigurationEditCommand ( viewColumn ?: vscode . ViewColumn ) : void ;
737
738
handleConfigurationEditJSONCommand ( viewColumn ?: vscode . ViewColumn ) : void ;
@@ -784,11 +785,6 @@ export class DefaultClient implements Client {
784
785
private settingsTracker : SettingsTracker ;
785
786
private loggingLevel : string | undefined ;
786
787
private configurationProvider ?: string ;
787
- private documentSelector : DocumentFilter [ ] = [
788
- { scheme : 'file' , language : 'c' } ,
789
- { scheme : 'file' , language : 'cpp' } ,
790
- { scheme : 'file' , language : 'cuda-cpp' }
791
- ] ;
792
788
793
789
public static referencesParams : RenameParams | FindAllReferencesParams | undefined ;
794
790
public static referencesRequestPending : boolean = false ;
@@ -928,11 +924,11 @@ export class DefaultClient implements Client {
928
924
util . setProgress ( util . getProgressExecutableStarted ( ) ) ;
929
925
isFirstClient = true ;
930
926
}
931
- ui = getUI ( ) ;
932
- ui . bind ( this ) ;
933
927
934
928
// requests/notifications are deferred until this.languageClient is set.
935
929
this . queueBlockingTask ( async ( ) => {
930
+ ui = await getUI ( ) ;
931
+ ui . bind ( this ) ;
936
932
await firstClientStarted ;
937
933
try {
938
934
const workspaceFolder : vscode . WorkspaceFolder | undefined = this . rootFolder ;
@@ -961,26 +957,26 @@ export class DefaultClient implements Client {
961
957
962
958
this . inlayHintsProvider = new InlayHintsProvider ( this ) ;
963
959
964
- this . disposables . push ( vscode . languages . registerInlayHintsProvider ( this . documentSelector , this . inlayHintsProvider ) ) ;
965
- this . disposables . push ( vscode . languages . registerRenameProvider ( this . documentSelector , new RenameProvider ( this ) ) ) ;
966
- this . disposables . push ( vscode . languages . registerReferenceProvider ( this . documentSelector , new FindAllReferencesProvider ( this ) ) ) ;
960
+ this . disposables . push ( vscode . languages . registerInlayHintsProvider ( util . documentSelector , this . inlayHintsProvider ) ) ;
961
+ this . disposables . push ( vscode . languages . registerRenameProvider ( util . documentSelector , new RenameProvider ( this ) ) ) ;
962
+ this . disposables . push ( vscode . languages . registerReferenceProvider ( util . documentSelector , new FindAllReferencesProvider ( this ) ) ) ;
967
963
this . disposables . push ( vscode . languages . registerWorkspaceSymbolProvider ( new WorkspaceSymbolProvider ( this ) ) ) ;
968
- this . disposables . push ( vscode . languages . registerDocumentSymbolProvider ( this . documentSelector , new DocumentSymbolProvider ( ) , undefined ) ) ;
969
- this . disposables . push ( vscode . languages . registerCodeActionsProvider ( this . documentSelector , new CodeActionProvider ( this ) , undefined ) ) ;
964
+ this . disposables . push ( vscode . languages . registerDocumentSymbolProvider ( util . documentSelector , new DocumentSymbolProvider ( ) , undefined ) ) ;
965
+ this . disposables . push ( vscode . languages . registerCodeActionsProvider ( util . documentSelector , new CodeActionProvider ( this ) , undefined ) ) ;
970
966
// Because formatting and codeFolding can vary per folder, we need to register these providers once
971
967
// and leave them registered. The decision of whether to provide results needs to be made on a per folder basis,
972
968
// within the providers themselves.
973
- this . documentFormattingProviderDisposable = vscode . languages . registerDocumentFormattingEditProvider ( this . documentSelector , new DocumentFormattingEditProvider ( this ) ) ;
974
- this . formattingRangeProviderDisposable = vscode . languages . registerDocumentRangeFormattingEditProvider ( this . documentSelector , new DocumentRangeFormattingEditProvider ( this ) ) ;
975
- this . onTypeFormattingProviderDisposable = vscode . languages . registerOnTypeFormattingEditProvider ( this . documentSelector , new OnTypeFormattingEditProvider ( this ) , ";" , "}" , "\n" ) ;
969
+ this . documentFormattingProviderDisposable = vscode . languages . registerDocumentFormattingEditProvider ( util . documentSelector , new DocumentFormattingEditProvider ( this ) ) ;
970
+ this . formattingRangeProviderDisposable = vscode . languages . registerDocumentRangeFormattingEditProvider ( util . documentSelector , new DocumentRangeFormattingEditProvider ( this ) ) ;
971
+ this . onTypeFormattingProviderDisposable = vscode . languages . registerOnTypeFormattingEditProvider ( util . documentSelector , new OnTypeFormattingEditProvider ( this ) , ";" , "}" , "\n" ) ;
976
972
977
973
this . codeFoldingProvider = new FoldingRangeProvider ( this ) ;
978
- this . codeFoldingProviderDisposable = vscode . languages . registerFoldingRangeProvider ( this . documentSelector , this . codeFoldingProvider ) ;
974
+ this . codeFoldingProviderDisposable = vscode . languages . registerFoldingRangeProvider ( util . documentSelector , this . codeFoldingProvider ) ;
979
975
980
976
const settings : CppSettings = new CppSettings ( ) ;
981
977
if ( settings . enhancedColorization && semanticTokensLegend ) {
982
978
this . semanticTokensProvider = new SemanticTokensProvider ( this ) ;
983
- this . semanticTokensProviderDisposable = vscode . languages . registerDocumentSemanticTokensProvider ( this . documentSelector , this . semanticTokensProvider , semanticTokensLegend ) ;
979
+ this . semanticTokensProviderDisposable = vscode . languages . registerDocumentSemanticTokensProvider ( util . documentSelector , this . semanticTokensProvider , semanticTokensLegend ) ;
984
980
}
985
981
// Listen for messages from the language server.
986
982
this . registerNotifications ( ) ;
@@ -1303,7 +1299,7 @@ export class DefaultClient implements Client {
1303
1299
if ( changedSettings [ "enhancedColorization" ] ) {
1304
1300
if ( settings . enhancedColorization && semanticTokensLegend ) {
1305
1301
this . semanticTokensProvider = new SemanticTokensProvider ( this ) ;
1306
- this . semanticTokensProviderDisposable = vscode . languages . registerDocumentSemanticTokensProvider ( this . documentSelector , this . semanticTokensProvider , semanticTokensLegend ) ;
1302
+ this . semanticTokensProviderDisposable = vscode . languages . registerDocumentSemanticTokensProvider ( util . documentSelector , this . semanticTokensProvider , semanticTokensLegend ) ;
1307
1303
} else if ( this . semanticTokensProviderDisposable ) {
1308
1304
this . semanticTokensProviderDisposable . dispose ( ) ;
1309
1305
this . semanticTokensProviderDisposable = undefined ;
@@ -2174,14 +2170,14 @@ export class DefaultClient implements Client {
2174
2170
private updateTagParseStatus ( notificationBody : LocalizeStringParams ) : void {
2175
2171
this . model . parsingWorkspaceStatus . Value = getLocalizedString ( notificationBody ) ;
2176
2172
if ( notificationBody . text . startsWith ( "Workspace parsing paused" ) ) {
2177
- this . model . isParsingWorkspacePausable . Value = true ;
2178
2173
this . model . isParsingWorkspacePaused . Value = true ;
2179
- } else if ( notificationBody . text . startsWith ( "Parsing workspace" ) ) {
2180
2174
this . model . isParsingWorkspacePausable . Value = true ;
2175
+ } else if ( notificationBody . text . startsWith ( "Parsing workspace" ) ) {
2181
2176
this . model . isParsingWorkspacePaused . Value = false ;
2177
+ this . model . isParsingWorkspacePausable . Value = true ;
2182
2178
} else {
2183
- this . model . isParsingWorkspacePausable . Value = false ;
2184
2179
this . model . isParsingWorkspacePaused . Value = false ;
2180
+ this . model . isParsingWorkspacePausable . Value = false ;
2185
2181
}
2186
2182
}
2187
2183
@@ -2748,13 +2744,24 @@ export class DefaultClient implements Client {
2748
2744
}
2749
2745
}
2750
2746
2751
- public async handleShowCodeAnalysisCommands ( ) : Promise < void > {
2747
+ public async handleShowActiveCodeAnalysisCommands ( ) : Promise < void > {
2752
2748
await this . awaitUntilLanguageClientReady ( ) ;
2753
- const index : number = await ui . showCodeAnalysisCommands ( ) ;
2749
+ const index : number = await ui . showActiveCodeAnalysisCommands ( ) ;
2754
2750
switch ( index ) {
2755
2751
case 0 : this . CancelCodeAnalysis ( ) ; break ;
2756
2752
case 1 : this . PauseCodeAnalysis ( ) ; break ;
2757
2753
case 2 : this . ResumeCodeAnalysis ( ) ; break ;
2754
+ case 3 : this . handleShowIdleCodeAnalysisCommands ( ) ; break ;
2755
+ }
2756
+ }
2757
+
2758
+ public async handleShowIdleCodeAnalysisCommands ( ) : Promise < void > {
2759
+ await this . awaitUntilLanguageClientReady ( ) ;
2760
+ const index : number = await ui . showIdleCodeAnalysisCommands ( ) ;
2761
+ switch ( index ) {
2762
+ case 0 : this . handleRunCodeAnalysisOnActiveFile ( ) ; break ;
2763
+ case 1 : this . handleRunCodeAnalysisOnAllFiles ( ) ; break ;
2764
+ case 2 : this . handleRunCodeAnalysisOnOpenFiles ( ) ; break ;
2758
2765
}
2759
2766
}
2760
2767
@@ -3269,7 +3276,8 @@ class NullClient implements Client {
3269
3276
handleConfigurationSelectCommand ( ) : Promise < void > { return Promise . resolve ( ) ; }
3270
3277
handleConfigurationProviderSelectCommand ( ) : Promise < void > { return Promise . resolve ( ) ; }
3271
3278
handleShowParsingCommands ( ) : Promise < void > { return Promise . resolve ( ) ; }
3272
- handleShowCodeAnalysisCommands ( ) : Promise < void > { return Promise . resolve ( ) ; }
3279
+ handleShowActiveCodeAnalysisCommands ( ) : Promise < void > { return Promise . resolve ( ) ; }
3280
+ handleShowIdleCodeAnalysisCommands ( ) : Promise < void > { return Promise . resolve ( ) ; }
3273
3281
handleReferencesIcon ( ) : void { }
3274
3282
handleConfigurationEditCommand ( viewColumn ?: vscode . ViewColumn ) : void { }
3275
3283
handleConfigurationEditJSONCommand ( viewColumn ?: vscode . ViewColumn ) : void { }
0 commit comments