Skip to content

Commit 0dd2603

Browse files
authored
Database population unification (#14426)
1 parent c498040 commit 0dd2603

9 files changed

Lines changed: 64 additions & 36 deletions

File tree

Extension/c_cpp_properties.schema.json

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -213,17 +213,6 @@
213213
"recursiveIncludes": {
214214
"type": "object",
215215
"properties": {
216-
"reduce": {
217-
"markdownDescription": "Set to `always` to always reduce the number of recursive include paths provided to IntelliSense to only those paths currently referenced by #include statements. This requires first parsing files to determine which headers are included. Set to `never` to provide all recursive include paths to IntelliSense. Reducing the number of recursive include paths may improve IntelliSense performance when a very large number of recursive include paths are involved. Not reducing the number of recursive include paths can improve IntelliSense performance by avoiding the need to parse files to determine which include paths to provide. The `default` value is currently to reduce the number of recursive include paths provided to IntelliSense.",
218-
"descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered.",
219-
"type": "string",
220-
"enum": [
221-
"always",
222-
"never",
223-
"default",
224-
"${default}"
225-
]
226-
},
227216
"priority": {
228217
"markdownDescription": "The priority of recursive include paths. If set to `beforeSystemIncludes`, the recursive include paths will be searched before system include paths. If set to `afterSystemIncludes`, the recursive include paths will be searched after system include paths. `beforeSystemIncludes` would more closely reflect the search order of a compiler, while `afterSystemIncludes` may result in improved performance.",
229218
"descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered.",

Extension/src/LanguageServer/client.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -625,12 +625,12 @@ const CreateDeclarationOrDefinitionRequest: RequestType<CreateDeclarationOrDefin
625625
const ExtractToFunctionRequest: RequestType<ExtractToFunctionParams, WorkspaceEditResult, void> = new RequestType<ExtractToFunctionParams, WorkspaceEditResult, void>('cpptools/extractToFunction');
626626
const GoToDirectiveInGroupRequest: RequestType<GoToDirectiveInGroupParams, Position | undefined, void> = new RequestType<GoToDirectiveInGroupParams, Position | undefined, void>('cpptools/goToDirectiveInGroup');
627627
const GenerateDoxygenCommentRequest: RequestType<GenerateDoxygenCommentParams, GenerateDoxygenCommentResult | undefined, void> = new RequestType<GenerateDoxygenCommentParams, GenerateDoxygenCommentResult, void>('cpptools/generateDoxygenComment');
628-
const ChangeCppPropertiesRequest: RequestType<CppPropertiesParams, void, void> = new RequestType<CppPropertiesParams, void, void>('cpptools/didChangeCppProperties');
629628
const IncludesRequest: RequestType<GetIncludesParams, GetIncludesResult, void> = new RequestType<GetIncludesParams, GetIncludesResult, void>('cpptools/getIncludes');
630629
const CppContextRequest: RequestType<TextDocumentIdentifier, ChatContextResult, void> = new RequestType<TextDocumentIdentifier, ChatContextResult, void>('cpptools/getChatContext');
631630
const CopilotCompletionContextRequest: RequestType<CopilotCompletionContextParams, CopilotCompletionContextResult, void> = new RequestType<CopilotCompletionContextParams, CopilotCompletionContextResult, void>('cpptools/getCompletionContext');
632631

633632
// Notifications to the server
633+
const ChangeCppPropertiesNotification: NotificationType<CppPropertiesParams> = new NotificationType<CppPropertiesParams>('cpptools/didChangeCppProperties');
634634
const DidOpenNotification: NotificationType<DidOpenTextDocumentParams> = new NotificationType<DidOpenTextDocumentParams>('textDocument/didOpen');
635635
const FileCreatedNotification: NotificationType<FileChangedParams> = new NotificationType<FileChangedParams>('cpptools/fileCreated');
636636
const FileChangedNotification: NotificationType<FileChangedParams> = new NotificationType<FileChangedParams>('cpptools/fileChanged');
@@ -1811,6 +1811,21 @@ export class DefaultClient implements Client {
18111811
// TODO: should I set the output channel? Does this sort output between servers?
18121812
};
18131813

1814+
// Reset all UI state to default, in case this is a restart after a crash.
1815+
this.model.isIndexingWorkspace.Value = false;
1816+
this.model.isParsingWorkspace.Value = false;
1817+
this.model.isParsingWorkspacePaused.Value = false;
1818+
this.model.isParsingFiles.Value = false;
1819+
this.model.isUpdatingIntelliSense.Value = false;
1820+
this.model.isRunningCodeAnalysis.Value = false;
1821+
this.model.isCodeAnalysisPaused.Value = false;
1822+
this.model.codeAnalysisProcessed.Value = 0;
1823+
this.model.codeAnalysisTotal.Value = 0;
1824+
this.model.parsingWorkspaceStatus.Value = "";
1825+
1826+
// Refresh initializing state in UI.
1827+
this.model.isInitializingWorkspace.Value = true;
1828+
18141829
// Create the language client
18151830
languageClient = new LanguageClient(`cpptools`, serverOptions, clientOptions);
18161831
languageClient.onNotification(DebugProtocolNotification, logDebugProtocol);
@@ -3291,7 +3306,7 @@ export class DefaultClient implements Client {
32913306
params.configurations.push(modifiedConfig);
32923307
});
32933308

3294-
await this.languageClient.sendRequest(ChangeCppPropertiesRequest, params);
3309+
await this.languageClient.sendNotification(ChangeCppPropertiesNotification, params);
32953310
if (!!this.lastCustomBrowseConfigurationProviderId && !!this.lastCustomBrowseConfiguration && !!this.lastCustomBrowseConfigurationProviderVersion) {
32963311
if (!this.doneInitialCustomBrowseConfigurationCheck) {
32973312
// Send the last custom browse configuration we received from this provider.

Extension/src/LanguageServer/configurations.ts

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@ export interface Configuration {
8888
browse?: Browse;
8989
recursiveIncludes?: RecursiveIncludes;
9090
customConfigurationVariables?: { [key: string]: string };
91-
recursiveIncludesReduceIsExplicit?: boolean;
9291
recursiveIncludesPriorityIsExplicit?: boolean;
9392
recursiveIncludesOrderIsExplicit?: boolean;
9493
}
@@ -978,8 +977,6 @@ export class CppProperties {
978977
if (!configuration.recursiveIncludes) {
979978
configuration.recursiveIncludes = {};
980979
}
981-
configuration.recursiveIncludes.reduce = this.updateConfigurationString(configuration.recursiveIncludes.reduce, settings.defaultRecursiveIncludesReduce);
982-
configuration.recursiveIncludesReduceIsExplicit = configuration.recursiveIncludesReduceIsExplicit || settings.defaultRecursiveIncludesReduce !== "";
983980
configuration.recursiveIncludes.priority = this.updateConfigurationString(configuration.recursiveIncludes.priority, settings.defaultRecursiveIncludesPriority);
984981
configuration.recursiveIncludesPriorityIsExplicit = configuration.recursiveIncludesPriorityIsExplicit || settings.defaultRecursiveIncludesPriority !== "";
985982
configuration.recursiveIncludes.order = this.updateConfigurationString(configuration.recursiveIncludes.order, settings.defaultRecursiveIncludesOrder);
@@ -1560,7 +1557,6 @@ export class CppProperties {
15601557
|| (this.configurationJson.configurations[i].cStandardIsExplicit !== undefined)
15611558
|| (this.configurationJson.configurations[i].cppStandardIsExplicit !== undefined)
15621559
|| (this.configurationJson.configurations[i].intelliSenseModeIsExplicit !== undefined)
1563-
|| (this.configurationJson.configurations[i].recursiveIncludesReduceIsExplicit !== undefined)
15641560
|| (this.configurationJson.configurations[i].recursiveIncludesPriorityIsExplicit !== undefined)
15651561
|| (this.configurationJson.configurations[i].recursiveIncludesOrderIsExplicit !== undefined)) {
15661562
dirty = true;
@@ -1583,7 +1579,6 @@ export class CppProperties {
15831579
e.cStandardIsExplicit = e.cStandard !== undefined;
15841580
e.cppStandardIsExplicit = e.cppStandard !== undefined;
15851581
e.intelliSenseModeIsExplicit = e.intelliSenseMode !== undefined;
1586-
e.recursiveIncludesReduceIsExplicit = e.recursiveIncludes?.reduce !== undefined;
15871582
e.recursiveIncludesPriorityIsExplicit = e.recursiveIncludes?.priority !== undefined;
15881583
e.recursiveIncludesOrderIsExplicit = e.recursiveIncludes?.order !== undefined;
15891584
});
@@ -2408,7 +2403,6 @@ export class CppProperties {
24082403
const savedCStandardIsExplicit: boolean[] = [];
24092404
const savedCppStandardIsExplicit: boolean[] = [];
24102405
const savedIntelliSenseModeIsExplicit: boolean[] = [];
2411-
const savedRecursiveIncludesReduceIsExplicit: boolean[] = [];
24122406
const savedRecursiveIncludesPriorityIsExplicit: boolean[] = [];
24132407
const savedRecursiveIncludesOrderIsExplicit: boolean[] = [];
24142408

@@ -2430,10 +2424,6 @@ export class CppProperties {
24302424
if (e.intelliSenseModeIsExplicit !== undefined) {
24312425
delete e.intelliSenseModeIsExplicit;
24322426
}
2433-
savedRecursiveIncludesReduceIsExplicit.push(!!e.recursiveIncludesReduceIsExplicit);
2434-
if (e.recursiveIncludesReduceIsExplicit !== undefined) {
2435-
delete e.recursiveIncludesReduceIsExplicit;
2436-
}
24372427
savedRecursiveIncludesPriorityIsExplicit.push(!!e.recursiveIncludesPriorityIsExplicit);
24382428
if (e.recursiveIncludesPriorityIsExplicit !== undefined) {
24392429
delete e.recursiveIncludesPriorityIsExplicit;
@@ -2456,7 +2446,6 @@ export class CppProperties {
24562446
this.configurationJson.configurations[i].cStandardIsExplicit = savedCStandardIsExplicit[i];
24572447
this.configurationJson.configurations[i].cppStandardIsExplicit = savedCppStandardIsExplicit[i];
24582448
this.configurationJson.configurations[i].intelliSenseModeIsExplicit = savedIntelliSenseModeIsExplicit[i];
2459-
this.configurationJson.configurations[i].recursiveIncludesReduceIsExplicit = savedRecursiveIncludesReduceIsExplicit[i];
24602449
this.configurationJson.configurations[i].recursiveIncludesPriorityIsExplicit = savedRecursiveIncludesPriorityIsExplicit[i];
24612450
this.configurationJson.configurations[i].recursiveIncludesOrderIsExplicit = savedRecursiveIncludesOrderIsExplicit[i];
24622451
}

Extension/src/LanguageServer/settings.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -454,7 +454,6 @@ export class CppSettings extends Settings {
454454
public get defaultBrowsePath(): string[] | undefined { return this.getArrayOfStringsWithUndefinedDefault("default.browse.path"); }
455455
public get defaultDatabaseFilename(): string | undefined { return changeBlankStringToUndefined(this.getAsStringOrUndefined("default.browse.databaseFilename")); }
456456
public get defaultLimitSymbolsToIncludedHeaders(): boolean { return this.getAsBoolean("default.browse.limitSymbolsToIncludedHeaders"); }
457-
public get defaultRecursiveIncludesReduce(): string | undefined { return this.getAsStringOrUndefined("default.recursiveIncludes.reduce"); }
458457
public get defaultRecursiveIncludesPriority(): string | undefined { return this.getAsStringOrUndefined("default.recursiveIncludes.priority"); }
459458
public get defaultRecursiveIncludesOrder(): string | undefined { return this.getAsStringOrUndefined("default.recursiveIncludes.order"); }
460459
public get defaultSystemIncludePath(): string[] | undefined { return this.getArrayOfStringsWithUndefinedDefault("default.systemIncludePath"); }

Extension/src/LanguageServer/settingsPanel.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ const elementId: { [key: string]: string } = {
5252
mergeConfigurations: "mergeConfigurations",
5353
configurationProvider: "configurationProvider",
5454
forcedInclude: "forcedInclude",
55-
recursiveIncludesReduce: "recursiveIncludes.reduce",
5655
recursiveIncludesPriority: "recursiveIncludes.priority",
5756
recursiveIncludesOrder: "recursiveIncludes.order",
5857

@@ -355,12 +354,6 @@ export class SettingsPanel {
355354
case elementId.forcedInclude:
356355
this.configValues.forcedInclude = splitEntries(message.value);
357356
break;
358-
case elementId.recursiveIncludesReduce:
359-
if (!this.configValues.recursiveIncludes) {
360-
this.configValues.recursiveIncludes = {};
361-
}
362-
this.configValues.recursiveIncludes.reduce = message.value;
363-
break;
364357
case elementId.recursiveIncludesPriority:
365358
if (!this.configValues.recursiveIncludes) {
366359
this.configValues.recursiveIncludes = {};

Extension/src/main.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ async function makeBinariesExecutable(): Promise<void> {
191191
const commonBinaries: string[] = [
192192
"./bin/cpptools",
193193
"./bin/cpptools-srv",
194+
"./bin/cpptools-srv2",
194195
"./bin/cpptools-wordexp",
195196
"./LLVM/bin/clang-format",
196197
"./LLVM/bin/clang-tidy",

Extension/src/nativeStrings.json

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -643,5 +643,49 @@
643643
"intellisense_same_canonical_path": {
644644
"text": "Unable to process IntelliSense for a file with the same canonicalized path as an existing file. URI: {0}, canonicalized path: {1}",
645645
"hint": "{Locked=\"IntelliSense\"} {Locked=\"URI\"} {Locked=\"{0}\"} {Locked=\"{1}\"}"
646-
}
647-
}
646+
},
647+
"status_initializing": "Initializing",
648+
"status_initializing_with_n_of_m": "Initializing ({0} of {1})",
649+
"status_initializing_with_n_of_m_and_text": "Initializing ({0} of {1}): {2}",
650+
"status_initializing_with_text": "Initializing {0}",
651+
"status_initializing_projects": "Initializing projects",
652+
"status_initializing_projects_with_n_of_m": "Initializing projects ({0} of {1})",
653+
"status_initializing_projects_with_n_of_m_and_text": "Initializing projects ({0} of {1}): {2}",
654+
"status_initializing_projects_with_text": "Initializing projects {0}",
655+
"status_checking_for_outdated_files": "Checking for out of date files",
656+
"status_checking_for_outdated_files_with_n_of_m": "Checking for out of date files ({0} of {1})",
657+
"status_checking_for_outdated_files_with_n_of_m_and_text": "Checking for out of date files ({0} of {1}): {2}",
658+
"status_checking_for_outdated_files_with_text": "Checking for out of date files {0}",
659+
"status_parsing_files": "Parsing files",
660+
"status_parsing_files_with_n_of_m": "Parsing files ({0} of {1})",
661+
"status_parsing_files_with_n_of_m_and_text": "Parsing files ({0} of {1}): {2}",
662+
"status_parsing_files_with_text": "Parsing files {0}",
663+
"status_parsing_includes": "Parsing included files",
664+
"status_parsing_includes_with_n_of_m": "Parsing included files ({0} of {1})",
665+
"status_parsing_includes_with_n_of_m_and_text": "Parsing included files ({0} of {1}): {2}",
666+
"status_parsing_includes_with_text": "Parsing included files {0}",
667+
"status_scanning_includes": "Scanning #includes for more files",
668+
"status_scanning_includes_with_n_of_m": "Scanning #includes for more files ({0} of {1})",
669+
"status_scanning_includes_with_n_of_m_and_text": "Scanning #includes for more files ({0} of {1}): {2}",
670+
"status_scanning_includes_with_text": "Scanning #includes for more files {0} {1}",
671+
"status_updating_external_dependencies": "Ready (Updating external dependencies)",
672+
"status_updating_external_dependencies_with_n_of_m": "Ready (Updating external dependencies) ({0} of {1})",
673+
"status_updating_external_dependencies_with_n_of_m_and_text": "Ready (Updating external dependencies) ({0} of {1}): {2}",
674+
"status_updating_external_dependencies_with_text": "Ready (Updating external dependencies) {0}",
675+
"status_optimizing_database": "Ready (Optimizing database)",
676+
"status_optimizing_database_with_n_of_m": "Ready (Optimizing database) ({0} of {1})",
677+
"status_optimizing_database_with_n_of_m_and_text": "Ready (Optimizing database) ({0} of {1}): {2}",
678+
"status_optimizing_database_with_text": "Ready (Optimizing database) {0}",
679+
"status_creating_indexes": "Creating Indexes",
680+
"status_creating_indexes_with_n_of_m": "Creating Indexes ({0} of {1})",
681+
"status_creating_indexes_with_n_of_m_and_text": "Creating Indexes ({0} of {1}): {2}",
682+
"status_creating_indexes_with_text": "Creating Indexes {0}",
683+
"status_evaluating_file": "Evaluating",
684+
"status_evaluating_file_with_n_of_m": "Evaluating ({0} of {1})",
685+
"status_evaluating_file_with_n_of_m_and_text": "Evaluating ({0} of {1}): {2}",
686+
"status_evaluating_file_with_text": "Evaluating {0}",
687+
"status_indexing_files": "Indexing files",
688+
"status_indexing_files_with_n_of_m": "Indexing files ({0} of {1})",
689+
"status_indexing_files_with_n_of_m_and_text": "Indexing files ({0} of {1}): {2}",
690+
"status_indexing_files_with_text": "Indexing files {0}"
691+
}

Extension/ui/settings.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ const elementId: { [key: string]: string } = {
4242
mergeConfigurations: "mergeConfigurations",
4343
dotConfig: "dotConfig",
4444
dotConfigInvalid: "dotConfigInvalid",
45-
recursiveIncludesReduce: "recursiveIncludes.reduce",
4645
recursiveIncludesPriority: "recursiveIncludes.priority",
4746
recursiveIncludesOrder: "recursiveIncludes.order",
4847

@@ -304,7 +303,6 @@ class SettingsApp {
304303
(<HTMLInputElement>document.getElementById(elementId.forcedInclude)).value = joinEntries(config.forcedInclude);
305304
(<HTMLInputElement>document.getElementById(elementId.dotConfig)).value = config.dotConfig ?? "";
306305
if (config.recursiveIncludes) {
307-
(<HTMLInputElement>document.getElementById(elementId.recursiveIncludesReduce)).value = config.recursiveIncludes.reduce ?? "${default}";
308306
(<HTMLInputElement>document.getElementById(elementId.recursiveIncludesPriority)).value = config.recursiveIncludes.priority ?? "${default}";
309307
(<HTMLInputElement>document.getElementById(elementId.recursiveIncludesOrder)).value = config.recursiveIncludes.order ?? "${default}";
310308
}

0 commit comments

Comments
 (0)