diff --git a/spellchecker/src/META-INF/SpellCheckerPlugin.xml b/spellchecker/src/META-INF/SpellCheckerPlugin.xml
index 30ac2c64e18f..98504c4dd809 100644
--- a/spellchecker/src/META-INF/SpellCheckerPlugin.xml
+++ b/spellchecker/src/META-INF/SpellCheckerPlugin.xml
@@ -14,6 +14,7 @@
overrides="true"/>
+
diff --git a/spellchecker/src/com/intellij/spellchecker/settings/SettingsTransferActivity.java b/spellchecker/src/com/intellij/spellchecker/settings/SettingsTransferActivity.java
new file mode 100644
index 000000000000..55ddeee1a9d5
--- /dev/null
+++ b/spellchecker/src/com/intellij/spellchecker/settings/SettingsTransferActivity.java
@@ -0,0 +1,25 @@
+// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
+package com.intellij.spellchecker.settings;
+
+import com.intellij.openapi.components.ServiceManager;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.startup.StartupActivity;
+import com.intellij.spellchecker.state.ProjectDictionaryState;
+import org.jetbrains.annotations.NotNull;
+
+import static com.intellij.spellchecker.SpellCheckerManager.DictionaryLevel.APP;
+import static com.intellij.spellchecker.SpellCheckerManager.DictionaryLevel.PROJECT;
+
+public class SettingsTransferActivity implements StartupActivity {
+
+ @Override
+ public void runActivity(@NotNull Project project) {
+ final SpellCheckerSettings settings = SpellCheckerSettings.getInstance(project);
+ if (!settings.isSettingsTransferred() && settings.isUseSingleDictionaryToSave() && PROJECT.getName().equals(settings.getDictionaryToSave())) {
+ if (ServiceManager.getService(project, ProjectDictionaryState.class).getProjectDictionary().getWords().isEmpty()) {
+ settings.setDictionaryToSave(APP.getName());
+ settings.setSettingsTransferred(true);
+ }
+ }
+ }
+}
diff --git a/spellchecker/src/com/intellij/spellchecker/settings/SpellCheckerSettings.java b/spellchecker/src/com/intellij/spellchecker/settings/SpellCheckerSettings.java
index 831f7341efb0..5f545b24f7e7 100644
--- a/spellchecker/src/com/intellij/spellchecker/settings/SpellCheckerSettings.java
+++ b/spellchecker/src/com/intellij/spellchecker/settings/SpellCheckerSettings.java
@@ -40,6 +40,7 @@ public class SpellCheckerSettings implements PersistentStateComponent {
private static final String DEFAULT_DICTIONARY_TO_SAVE = SpellCheckerManager.DictionaryLevel.PROJECT.getName();
private static final String USE_SINGLE_DICT_ATTR_NAME = "UseSingleDictionary";
private static final boolean DEFAULT_USE_SINGLE_DICT = true;
+ private static final String SETTINGS_TRANSFERRED = "transferred";
// Paths
private final List myOldDictionaryFoldersPaths = new ArrayList<>();
@@ -49,6 +50,7 @@ public class SpellCheckerSettings implements PersistentStateComponent {
private Set myRuntimeDisabledDictionariesNames = new HashSet<>();
private String myDictionaryToSave = DEFAULT_DICTIONARY_TO_SAVE;
private boolean myUseSingleDictionaryToSave = DEFAULT_USE_SINGLE_DICT;
+ private boolean mySettingsTransferred = false;
public String getDictionaryToSave() {
return myDictionaryToSave;
@@ -66,6 +68,14 @@ public class SpellCheckerSettings implements PersistentStateComponent {
this.myUseSingleDictionaryToSave = useSingleDictionaryToSave;
}
+ public boolean isSettingsTransferred() {
+ return mySettingsTransferred;
+ }
+
+ public void setSettingsTransferred(boolean settingsTransferred) {
+ mySettingsTransferred = settingsTransferred;
+ }
+
public static @NotNull SpellCheckerSettings getInstance(Project project) {
return ServiceManager.getService(project, SpellCheckerSettings.class);
}
@@ -140,6 +150,7 @@ public class SpellCheckerSettings implements PersistentStateComponent {
}
element.setAttribute(DICTIONARY_TO_SAVE_ATTR_NAME, myDictionaryToSave);
element.setAttribute(USE_SINGLE_DICT_ATTR_NAME, String.valueOf(myUseSingleDictionaryToSave));
+ element.setAttribute(SETTINGS_TRANSFERRED, String.valueOf(mySettingsTransferred));
return element;
}
@@ -187,6 +198,7 @@ public class SpellCheckerSettings implements PersistentStateComponent {
myDictionaryToSave = notNullize(element.getAttributeValue(DICTIONARY_TO_SAVE_ATTR_NAME), DEFAULT_DICTIONARY_TO_SAVE);
myUseSingleDictionaryToSave =
Boolean.parseBoolean(notNullize(element.getAttributeValue(USE_SINGLE_DICT_ATTR_NAME), String.valueOf(DEFAULT_USE_SINGLE_DICT)));
+ mySettingsTransferred = Boolean.parseBoolean(notNullize(element.getAttributeValue(SETTINGS_TRANSFERRED), "false"));
}
catch (Exception ignored) {
}