Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
11 changes: 0 additions & 11 deletions Extension/c_cpp_properties.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -213,17 +213,6 @@
"recursiveIncludes": {
"type": "object",
"properties": {
"reduce": {
Comment thread
Colengms marked this conversation as resolved.
"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.",
"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.",
"type": "string",
"enum": [
"always",
"never",
"default",
"${default}"
]
},
"priority": {
"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.",
"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.",
Expand Down
19 changes: 17 additions & 2 deletions Extension/src/LanguageServer/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -625,12 +625,12 @@ const CreateDeclarationOrDefinitionRequest: RequestType<CreateDeclarationOrDefin
const ExtractToFunctionRequest: RequestType<ExtractToFunctionParams, WorkspaceEditResult, void> = new RequestType<ExtractToFunctionParams, WorkspaceEditResult, void>('cpptools/extractToFunction');
const GoToDirectiveInGroupRequest: RequestType<GoToDirectiveInGroupParams, Position | undefined, void> = new RequestType<GoToDirectiveInGroupParams, Position | undefined, void>('cpptools/goToDirectiveInGroup');
const GenerateDoxygenCommentRequest: RequestType<GenerateDoxygenCommentParams, GenerateDoxygenCommentResult | undefined, void> = new RequestType<GenerateDoxygenCommentParams, GenerateDoxygenCommentResult, void>('cpptools/generateDoxygenComment');
const ChangeCppPropertiesRequest: RequestType<CppPropertiesParams, void, void> = new RequestType<CppPropertiesParams, void, void>('cpptools/didChangeCppProperties');
const IncludesRequest: RequestType<GetIncludesParams, GetIncludesResult, void> = new RequestType<GetIncludesParams, GetIncludesResult, void>('cpptools/getIncludes');
const CppContextRequest: RequestType<TextDocumentIdentifier, ChatContextResult, void> = new RequestType<TextDocumentIdentifier, ChatContextResult, void>('cpptools/getChatContext');
const CopilotCompletionContextRequest: RequestType<CopilotCompletionContextParams, CopilotCompletionContextResult, void> = new RequestType<CopilotCompletionContextParams, CopilotCompletionContextResult, void>('cpptools/getCompletionContext');

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

// Reset all UI state to default, in case this is a restart after a crash.
this.model.isIndexingWorkspace.Value = false;
this.model.isParsingWorkspace.Value = false;
this.model.isParsingWorkspacePaused.Value = false;
this.model.isParsingFiles.Value = false;
this.model.isUpdatingIntelliSense.Value = false;
this.model.isRunningCodeAnalysis.Value = false;
this.model.isCodeAnalysisPaused.Value = false;
this.model.codeAnalysisProcessed.Value = 0;
this.model.codeAnalysisTotal.Value = 0;
this.model.parsingWorkspaceStatus.Value = "";

// Refresh initializing state in UI.
this.model.isInitializingWorkspace.Value = true;

// Create the language client
languageClient = new LanguageClient(`cpptools`, serverOptions, clientOptions);
languageClient.onNotification(DebugProtocolNotification, logDebugProtocol);
Expand Down Expand Up @@ -3291,7 +3306,7 @@ export class DefaultClient implements Client {
params.configurations.push(modifiedConfig);
});

await this.languageClient.sendRequest(ChangeCppPropertiesRequest, params);
await this.languageClient.sendNotification(ChangeCppPropertiesNotification, params);
if (!!this.lastCustomBrowseConfigurationProviderId && !!this.lastCustomBrowseConfiguration && !!this.lastCustomBrowseConfigurationProviderVersion) {
if (!this.doneInitialCustomBrowseConfigurationCheck) {
// Send the last custom browse configuration we received from this provider.
Expand Down
11 changes: 0 additions & 11 deletions Extension/src/LanguageServer/configurations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,6 @@ export interface Configuration {
browse?: Browse;
recursiveIncludes?: RecursiveIncludes;
customConfigurationVariables?: { [key: string]: string };
recursiveIncludesReduceIsExplicit?: boolean;
recursiveIncludesPriorityIsExplicit?: boolean;
recursiveIncludesOrderIsExplicit?: boolean;
}
Expand Down Expand Up @@ -978,8 +977,6 @@ export class CppProperties {
if (!configuration.recursiveIncludes) {
configuration.recursiveIncludes = {};
}
configuration.recursiveIncludes.reduce = this.updateConfigurationString(configuration.recursiveIncludes.reduce, settings.defaultRecursiveIncludesReduce);
configuration.recursiveIncludesReduceIsExplicit = configuration.recursiveIncludesReduceIsExplicit || settings.defaultRecursiveIncludesReduce !== "";
configuration.recursiveIncludes.priority = this.updateConfigurationString(configuration.recursiveIncludes.priority, settings.defaultRecursiveIncludesPriority);
configuration.recursiveIncludesPriorityIsExplicit = configuration.recursiveIncludesPriorityIsExplicit || settings.defaultRecursiveIncludesPriority !== "";
configuration.recursiveIncludes.order = this.updateConfigurationString(configuration.recursiveIncludes.order, settings.defaultRecursiveIncludesOrder);
Expand Down Expand Up @@ -1560,7 +1557,6 @@ export class CppProperties {
|| (this.configurationJson.configurations[i].cStandardIsExplicit !== undefined)
|| (this.configurationJson.configurations[i].cppStandardIsExplicit !== undefined)
|| (this.configurationJson.configurations[i].intelliSenseModeIsExplicit !== undefined)
|| (this.configurationJson.configurations[i].recursiveIncludesReduceIsExplicit !== undefined)
|| (this.configurationJson.configurations[i].recursiveIncludesPriorityIsExplicit !== undefined)
|| (this.configurationJson.configurations[i].recursiveIncludesOrderIsExplicit !== undefined)) {
dirty = true;
Expand All @@ -1583,7 +1579,6 @@ export class CppProperties {
e.cStandardIsExplicit = e.cStandard !== undefined;
e.cppStandardIsExplicit = e.cppStandard !== undefined;
e.intelliSenseModeIsExplicit = e.intelliSenseMode !== undefined;
e.recursiveIncludesReduceIsExplicit = e.recursiveIncludes?.reduce !== undefined;
e.recursiveIncludesPriorityIsExplicit = e.recursiveIncludes?.priority !== undefined;
e.recursiveIncludesOrderIsExplicit = e.recursiveIncludes?.order !== undefined;
});
Expand Down Expand Up @@ -2408,7 +2403,6 @@ export class CppProperties {
const savedCStandardIsExplicit: boolean[] = [];
const savedCppStandardIsExplicit: boolean[] = [];
const savedIntelliSenseModeIsExplicit: boolean[] = [];
const savedRecursiveIncludesReduceIsExplicit: boolean[] = [];
const savedRecursiveIncludesPriorityIsExplicit: boolean[] = [];
const savedRecursiveIncludesOrderIsExplicit: boolean[] = [];

Expand All @@ -2430,10 +2424,6 @@ export class CppProperties {
if (e.intelliSenseModeIsExplicit !== undefined) {
delete e.intelliSenseModeIsExplicit;
}
savedRecursiveIncludesReduceIsExplicit.push(!!e.recursiveIncludesReduceIsExplicit);
if (e.recursiveIncludesReduceIsExplicit !== undefined) {
delete e.recursiveIncludesReduceIsExplicit;
}
savedRecursiveIncludesPriorityIsExplicit.push(!!e.recursiveIncludesPriorityIsExplicit);
if (e.recursiveIncludesPriorityIsExplicit !== undefined) {
delete e.recursiveIncludesPriorityIsExplicit;
Expand All @@ -2456,7 +2446,6 @@ export class CppProperties {
this.configurationJson.configurations[i].cStandardIsExplicit = savedCStandardIsExplicit[i];
this.configurationJson.configurations[i].cppStandardIsExplicit = savedCppStandardIsExplicit[i];
this.configurationJson.configurations[i].intelliSenseModeIsExplicit = savedIntelliSenseModeIsExplicit[i];
this.configurationJson.configurations[i].recursiveIncludesReduceIsExplicit = savedRecursiveIncludesReduceIsExplicit[i];
this.configurationJson.configurations[i].recursiveIncludesPriorityIsExplicit = savedRecursiveIncludesPriorityIsExplicit[i];
this.configurationJson.configurations[i].recursiveIncludesOrderIsExplicit = savedRecursiveIncludesOrderIsExplicit[i];
}
Expand Down
1 change: 0 additions & 1 deletion Extension/src/LanguageServer/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -454,7 +454,6 @@ export class CppSettings extends Settings {
public get defaultBrowsePath(): string[] | undefined { return this.getArrayOfStringsWithUndefinedDefault("default.browse.path"); }
public get defaultDatabaseFilename(): string | undefined { return changeBlankStringToUndefined(this.getAsStringOrUndefined("default.browse.databaseFilename")); }
public get defaultLimitSymbolsToIncludedHeaders(): boolean { return this.getAsBoolean("default.browse.limitSymbolsToIncludedHeaders"); }
public get defaultRecursiveIncludesReduce(): string | undefined { return this.getAsStringOrUndefined("default.recursiveIncludes.reduce"); }
public get defaultRecursiveIncludesPriority(): string | undefined { return this.getAsStringOrUndefined("default.recursiveIncludes.priority"); }
public get defaultRecursiveIncludesOrder(): string | undefined { return this.getAsStringOrUndefined("default.recursiveIncludes.order"); }
public get defaultSystemIncludePath(): string[] | undefined { return this.getArrayOfStringsWithUndefinedDefault("default.systemIncludePath"); }
Expand Down
7 changes: 0 additions & 7 deletions Extension/src/LanguageServer/settingsPanel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ const elementId: { [key: string]: string } = {
mergeConfigurations: "mergeConfigurations",
configurationProvider: "configurationProvider",
forcedInclude: "forcedInclude",
recursiveIncludesReduce: "recursiveIncludes.reduce",
recursiveIncludesPriority: "recursiveIncludes.priority",
recursiveIncludesOrder: "recursiveIncludes.order",

Expand Down Expand Up @@ -355,12 +354,6 @@ export class SettingsPanel {
case elementId.forcedInclude:
this.configValues.forcedInclude = splitEntries(message.value);
break;
case elementId.recursiveIncludesReduce:
if (!this.configValues.recursiveIncludes) {
this.configValues.recursiveIncludes = {};
}
this.configValues.recursiveIncludes.reduce = message.value;
break;
case elementId.recursiveIncludesPriority:
if (!this.configValues.recursiveIncludes) {
this.configValues.recursiveIncludes = {};
Expand Down
1 change: 1 addition & 0 deletions Extension/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ async function makeBinariesExecutable(): Promise<void> {
const commonBinaries: string[] = [
"./bin/cpptools",
"./bin/cpptools-srv",
"./bin/cpptools-srv2",
"./bin/cpptools-wordexp",
"./LLVM/bin/clang-format",
"./LLVM/bin/clang-tidy",
Expand Down
48 changes: 46 additions & 2 deletions Extension/src/nativeStrings.json
Original file line number Diff line number Diff line change
Expand Up @@ -643,5 +643,49 @@
"intellisense_same_canonical_path": {
"text": "Unable to process IntelliSense for a file with the same canonicalized path as an existing file. URI: {0}, canonicalized path: {1}",
"hint": "{Locked=\"IntelliSense\"} {Locked=\"URI\"} {Locked=\"{0}\"} {Locked=\"{1}\"}"
}
}
},
"status_initializing": "Initializing",
"status_initializing_with_n_of_m": "Initializing ({0} of {1})",
"status_initializing_with_n_of_m_and_text": "Initializing ({0} of {1}): {2}",
"status_initializing_with_text": "Initializing {0}",
"status_initializing_projects": "Initializing projects",
"status_initializing_projects_with_n_of_m": "Initializing projects ({0} of {1})",
"status_initializing_projects_with_n_of_m_and_text": "Initializing projects ({0} of {1}): {2}",
"status_initializing_projects_with_text": "Initializing projects {0}",
"status_checking_for_outdated_files": "Checking for out of date files",
"status_checking_for_outdated_files_with_n_of_m": "Checking for out of date files ({0} of {1})",
"status_checking_for_outdated_files_with_n_of_m_and_text": "Checking for out of date files ({0} of {1}): {2}",
"status_checking_for_outdated_files_with_text": "Checking for out of date files {0}",
"status_parsing_files": "Parsing files",
"status_parsing_files_with_n_of_m": "Parsing files ({0} of {1})",
"status_parsing_files_with_n_of_m_and_text": "Parsing files ({0} of {1}): {2}",
"status_parsing_files_with_text": "Parsing files {0}",
"status_parsing_includes": "Parsing included files",
"status_parsing_includes_with_n_of_m": "Parsing included files ({0} of {1})",
"status_parsing_includes_with_n_of_m_and_text": "Parsing included files ({0} of {1}): {2}",
"status_parsing_includes_with_text": "Parsing included files {0}",
"status_scanning_includes": "Scanning #includes for more files",
"status_scanning_includes_with_n_of_m": "Scanning #includes for more files ({0} of {1})",
"status_scanning_includes_with_n_of_m_and_text": "Scanning #includes for more files ({0} of {1}): {2}",
"status_scanning_includes_with_text": "Scanning #includes for more files {0} {1}",
"status_updating_external_dependencies": "Ready (Updating external dependencies)",
"status_updating_external_dependencies_with_n_of_m": "Ready (Updating external dependencies) ({0} of {1})",
"status_updating_external_dependencies_with_n_of_m_and_text": "Ready (Updating external dependencies) ({0} of {1}): {2}",
"status_updating_external_dependencies_with_text": "Ready (Updating external dependencies) {0}",
"status_optimizing_database": "Ready (Optimizing database)",
"status_optimizing_database_with_n_of_m": "Ready (Optimizing database) ({0} of {1})",
"status_optimizing_database_with_n_of_m_and_text": "Ready (Optimizing database) ({0} of {1}): {2}",
"status_optimizing_database_with_text": "Ready (Optimizing database) {0}",
"status_creating_indexes": "Creating Indexes",
"status_creating_indexes_with_n_of_m": "Creating Indexes ({0} of {1})",
"status_creating_indexes_with_n_of_m_and_text": "Creating Indexes ({0} of {1}): {2}",
"status_creating_indexes_with_text": "Creating Indexes {0}",
"status_evaluating_file": "Evaluating",
"status_evaluating_file_with_n_of_m": "Evaluating ({0} of {1})",
"status_evaluating_file_with_n_of_m_and_text": "Evaluating ({0} of {1}): {2}",
"status_evaluating_file_with_text": "Evaluating {0}",
"status_indexing_files": "Indexing files",
"status_indexing_files_with_n_of_m": "Indexing files ({0} of {1})",
"status_indexing_files_with_n_of_m_and_text": "Indexing files ({0} of {1}): {2}",
"status_indexing_files_with_text": "Indexing files {0}"
}
2 changes: 0 additions & 2 deletions Extension/ui/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ const elementId: { [key: string]: string } = {
mergeConfigurations: "mergeConfigurations",
dotConfig: "dotConfig",
dotConfigInvalid: "dotConfigInvalid",
recursiveIncludesReduce: "recursiveIncludes.reduce",
recursiveIncludesPriority: "recursiveIncludes.priority",
recursiveIncludesOrder: "recursiveIncludes.order",

Expand Down Expand Up @@ -304,7 +303,6 @@ class SettingsApp {
(<HTMLInputElement>document.getElementById(elementId.forcedInclude)).value = joinEntries(config.forcedInclude);
(<HTMLInputElement>document.getElementById(elementId.dotConfig)).value = config.dotConfig ?? "";
if (config.recursiveIncludes) {
(<HTMLInputElement>document.getElementById(elementId.recursiveIncludesReduce)).value = config.recursiveIncludes.reduce ?? "${default}";
(<HTMLInputElement>document.getElementById(elementId.recursiveIncludesPriority)).value = config.recursiveIncludes.priority ?? "${default}";
(<HTMLInputElement>document.getElementById(elementId.recursiveIncludesOrder)).value = config.recursiveIncludes.order ?? "${default}";
}
Expand Down
Loading