@@ -87,6 +87,9 @@ export interface Configuration {
8787 browse ?: Browse ;
8888 recursiveIncludes ?: RecursiveIncludes ;
8989 customConfigurationVariables ?: { [ key : string ] : string } ;
90+ recursiveIncludesReduceIsExplicit ?: boolean ;
91+ recursiveIncludesPriorityIsExplicit ?: boolean ;
92+ recursiveIncludesOrderIsExplicit ?: boolean ;
9093}
9194
9295export interface ConfigurationErrors {
@@ -940,8 +943,11 @@ export class CppProperties {
940943 configuration . recursiveIncludes = { } ;
941944 }
942945 configuration . recursiveIncludes . reduce = this . updateConfigurationString ( configuration . recursiveIncludes . reduce , settings . defaultRecursiveIncludesReduce ) ;
946+ configuration . recursiveIncludesReduceIsExplicit = configuration . recursiveIncludesReduceIsExplicit || settings . defaultRecursiveIncludesReduce !== "" ;
943947 configuration . recursiveIncludes . priority = this . updateConfigurationString ( configuration . recursiveIncludes . priority , settings . defaultRecursiveIncludesPriority ) ;
948+ configuration . recursiveIncludesPriorityIsExplicit = configuration . recursiveIncludesPriorityIsExplicit || settings . defaultRecursiveIncludesPriority !== "" ;
944949 configuration . recursiveIncludes . order = this . updateConfigurationString ( configuration . recursiveIncludes . order , settings . defaultRecursiveIncludesOrder ) ;
950+ configuration . recursiveIncludesOrderIsExplicit = configuration . recursiveIncludesOrderIsExplicit || settings . defaultRecursiveIncludesOrder !== "" ;
945951 if ( ! configuration . compileCommands ) {
946952 // compile_commands.json already specifies a compiler. compilerPath overrides the compile_commands.json compiler so
947953 // don't set a default when compileCommands is in use.
@@ -1508,7 +1514,10 @@ export class CppProperties {
15081514 if ( ( this . configurationJson . configurations [ i ] . compilerPathIsExplicit !== undefined )
15091515 || ( this . configurationJson . configurations [ i ] . cStandardIsExplicit !== undefined )
15101516 || ( this . configurationJson . configurations [ i ] . cppStandardIsExplicit !== undefined )
1511- || ( this . configurationJson . configurations [ i ] . intelliSenseModeIsExplicit !== undefined ) ) {
1517+ || ( this . configurationJson . configurations [ i ] . intelliSenseModeIsExplicit !== undefined )
1518+ || ( this . configurationJson . configurations [ i ] . recursiveIncludesReduceIsExplicit !== undefined )
1519+ || ( this . configurationJson . configurations [ i ] . recursiveIncludesPriorityIsExplicit !== undefined )
1520+ || ( this . configurationJson . configurations [ i ] . recursiveIncludesOrderIsExplicit !== undefined ) ) {
15121521 dirty = true ;
15131522 break ;
15141523 }
@@ -1529,6 +1538,9 @@ export class CppProperties {
15291538 e . cStandardIsExplicit = e . cStandard !== undefined ;
15301539 e . cppStandardIsExplicit = e . cppStandard !== undefined ;
15311540 e . intelliSenseModeIsExplicit = e . intelliSenseMode !== undefined ;
1541+ e . recursiveIncludesReduceIsExplicit = e . recursiveIncludes ?. reduce !== undefined ;
1542+ e . recursiveIncludesPriorityIsExplicit = e . recursiveIncludes ?. priority !== undefined ;
1543+ e . recursiveIncludesOrderIsExplicit = e . recursiveIncludes ?. order !== undefined ;
15321544 } ) ;
15331545
15341546 } catch ( errJS ) {
@@ -2296,6 +2308,9 @@ export class CppProperties {
22962308 const savedCStandardIsExplicit : boolean [ ] = [ ] ;
22972309 const savedCppStandardIsExplicit : boolean [ ] = [ ] ;
22982310 const savedIntelliSenseModeIsExplicit : boolean [ ] = [ ] ;
2311+ const savedRecursiveIncludesReduceIsExplicit : boolean [ ] = [ ] ;
2312+ const savedRecursiveIncludesPriorityIsExplicit : boolean [ ] = [ ] ;
2313+ const savedRecursiveIncludesOrderIsExplicit : boolean [ ] = [ ] ;
22992314
23002315 if ( this . configurationJson ) {
23012316 this . configurationJson . configurations . forEach ( e => {
@@ -2315,6 +2330,18 @@ export class CppProperties {
23152330 if ( e . intelliSenseModeIsExplicit !== undefined ) {
23162331 delete e . intelliSenseModeIsExplicit ;
23172332 }
2333+ savedRecursiveIncludesReduceIsExplicit . push ( ! ! e . recursiveIncludesReduceIsExplicit ) ;
2334+ if ( e . recursiveIncludesReduceIsExplicit !== undefined ) {
2335+ delete e . recursiveIncludesReduceIsExplicit ;
2336+ }
2337+ savedRecursiveIncludesPriorityIsExplicit . push ( ! ! e . recursiveIncludesPriorityIsExplicit ) ;
2338+ if ( e . recursiveIncludesPriorityIsExplicit !== undefined ) {
2339+ delete e . recursiveIncludesPriorityIsExplicit ;
2340+ }
2341+ savedRecursiveIncludesOrderIsExplicit . push ( ! ! e . recursiveIncludesOrderIsExplicit ) ;
2342+ if ( e . recursiveIncludesOrderIsExplicit !== undefined ) {
2343+ delete e . recursiveIncludesOrderIsExplicit ;
2344+ }
23182345 } ) ;
23192346 }
23202347
@@ -2329,6 +2356,9 @@ export class CppProperties {
23292356 this . configurationJson . configurations [ i ] . cStandardIsExplicit = savedCStandardIsExplicit [ i ] ;
23302357 this . configurationJson . configurations [ i ] . cppStandardIsExplicit = savedCppStandardIsExplicit [ i ] ;
23312358 this . configurationJson . configurations [ i ] . intelliSenseModeIsExplicit = savedIntelliSenseModeIsExplicit [ i ] ;
2359+ this . configurationJson . configurations [ i ] . recursiveIncludesReduceIsExplicit = savedRecursiveIncludesReduceIsExplicit [ i ] ;
2360+ this . configurationJson . configurations [ i ] . recursiveIncludesPriorityIsExplicit = savedRecursiveIncludesPriorityIsExplicit [ i ] ;
2361+ this . configurationJson . configurations [ i ] . recursiveIncludesOrderIsExplicit = savedRecursiveIncludesOrderIsExplicit [ i ] ;
23322362 }
23332363 }
23342364 }
0 commit comments