Compare commits

...

1 Commits

Author SHA1 Message Date
Dustin Howett
cdf62de189 Fix some issues patching in profiles 2019-09-18 12:52:45 -07:00

View File

@@ -294,14 +294,37 @@ bool CascadiaSettings::_AppendDynamicProfilesToUserSettings()
return false; return false;
}; };
bool changedFile = false;
// Get the index in the user settings string of the _last_ profile. // Get the index in the user settings string of the _last_ profile.
// We want to start inserting profiles immediately following the last profile. // We want to start inserting profiles immediately following the last profile.
const auto userProfilesObj = _GetProfilesJsonObject(_userSettings); const auto userProfilesObj = _GetProfilesJsonObject(_userSettings);
const auto numProfiles = userProfilesObj.size(); auto numProfiles = userProfilesObj.size();
const auto lastProfile = userProfilesObj[numProfiles - 1]; size_t currentInsertIndex = 0;
size_t currentInsertIndex = lastProfile.getOffsetLimit(); if (userProfilesObj && numProfiles == 0)
{
bool changedFile = false; // There's a profiles object, but there's no profiles in it.
currentInsertIndex = userProfilesObj.getOffsetStart() + 1;
}
else if (!userProfilesObj)
{
// There's no profiles object. Insert one right before the parent's closing }.
currentInsertIndex = _userSettings.getOffsetLimit() - 1;
std::string profileObjectSerialization = R"( "profiles": [)";
if (_userSettings.size() > 0)
{
profileObjectSerialization.insert(0, ",\n");
}
_userSettingsString.insert(currentInsertIndex, profileObjectSerialization);
currentInsertIndex += profileObjectSerialization.size();
_userSettingsString.insert(currentInsertIndex, R"(])");
changedFile = true;
}
else
{
const auto lastProfile = userProfilesObj[numProfiles - 1];
currentInsertIndex = lastProfile.getOffsetLimit();
}
for (const auto& profile : _profiles) for (const auto& profile : _profiles)
{ {
@@ -345,14 +368,18 @@ bool CascadiaSettings::_AppendDynamicProfilesToUserSettings()
// Write a comma, newline to the file // Write a comma, newline to the file
changedFile = true; changedFile = true;
_userSettingsString.insert(currentInsertIndex, ","); if (numProfiles > 0)
currentInsertIndex++; {
_userSettingsString.insert(currentInsertIndex, ",");
currentInsertIndex++;
}
_userSettingsString.insert(currentInsertIndex, "\n"); _userSettingsString.insert(currentInsertIndex, "\n");
currentInsertIndex++; currentInsertIndex++;
// Write the profile's serialization to the file // Write the profile's serialization to the file
_userSettingsString.insert(currentInsertIndex, profileSerialization); _userSettingsString.insert(currentInsertIndex, profileSerialization);
currentInsertIndex += profileSerialization.size(); currentInsertIndex += profileSerialization.size();
++numProfiles;
} }
return changedFile; return changedFile;