1616import org .eclipse .core .runtime .Platform ;
1717import org .eclipse .core .runtime .preferences .AbstractPreferenceInitializer ;
1818import org .eclipse .core .runtime .preferences .IEclipsePreferences ;
19+ import org .osgi .service .prefs .BackingStoreException ;
1920
2021import ts .cmd .tslint .TslintSettingsStrategy ;
2122import ts .eclipse .ide .core .TypeScriptCorePlugin ;
@@ -56,14 +57,18 @@ public void initializeDefaultPreferences() {
5657 for (int i = 0 ; i < oldRepostoryBaseDirs .length ; i ++) {
5758 oldRepostoryBaseDir = oldRepostoryBaseDirs [i ];
5859 if (oldRepostoryBaseDir .isDirectory ()) {
59- TypeScriptCorePlugin .getTypeScriptRepositoryManager ().createRepository (oldRepostoryBaseDir );
60+ try {
61+ TypeScriptCorePlugin .getTypeScriptRepositoryManager ().createRepository (oldRepostoryBaseDir );
62+ } catch (Exception e ) {
63+ Trace .trace (Trace .SEVERE , "Error while getting an archived TypeScript repository" , e );
64+ }
6065 }
6166 }
6267
6368 }
6469
6570 // Initialize tsc preferences
66- initializeTscPreferences (node , defaultRepository );
71+ initializeTypeScriptRuntimePreferences (node , defaultRepository );
6772 // Initialize tsserver preferences
6873 initializeTsserverPreferences (node , defaultRepository );
6974 // Initialize tslint preferences
@@ -82,6 +87,11 @@ public void initializeDefaultPreferences() {
8287
8388 // initialize editor+formation options
8489 initializeEditorFormatOptions (node );
90+
91+ // Fix embedded TypeScript id preference
92+ // See https://github.com/angelozerr/typescript.java/issues/121
93+ fixEmbeddedTypeScriptIdPreference (
94+ WorkspaceTypeScriptSettingsHelper .getWorkspacePreferences (TypeScriptCorePlugin .PLUGIN_ID ));
8595 }
8696
8797 /**
@@ -112,7 +122,8 @@ private static boolean useBundledNodeJsEmbedded(IEclipsePreferences node) {
112122 return false ;
113123 }
114124
115- private void initializeTscPreferences (IEclipsePreferences node , ITypeScriptRepository defaultRepository ) {
125+ private void initializeTypeScriptRuntimePreferences (IEclipsePreferences node ,
126+ ITypeScriptRepository defaultRepository ) {
116127 node .put (TypeScriptCorePreferenceConstants .EMBEDDED_TYPESCRIPT_ID , defaultRepository .getName ());
117128 node .putBoolean (TypeScriptCorePreferenceConstants .USE_EMBEDDED_TYPESCRIPT , true );
118129 node .put (TypeScriptCorePreferenceConstants .INSTALLED_TYPESCRIPT_PATH , "" );
@@ -171,4 +182,25 @@ private void initializeEditorFormatOptions(IEclipsePreferences node) {
171182 TypeScriptCorePreferenceConstants .FORMAT_OPTIONS_PLACE_OPEN_BRACE_ON_NEW_LINE_FOR_CONTROL_BLOCKS_DEFAULT );
172183
173184 }
185+
186+ /**
187+ * Fix the embeddedTypeScriptId preference if needed with default
188+ * embeddedTypeScriptId.
189+ *
190+ * @param preferences
191+ * @see https://github.com/angelozerr/typescript.java/issues/121
192+ */
193+ public static void fixEmbeddedTypeScriptIdPreference (IEclipsePreferences preferences ) {
194+ String embeddedTypeScriptId = preferences .get (TypeScriptCorePreferenceConstants .EMBEDDED_TYPESCRIPT_ID , null );
195+ if (embeddedTypeScriptId != null
196+ && TypeScriptCorePlugin .getTypeScriptRepositoryManager ().getRepository (embeddedTypeScriptId ) == null ) {
197+ preferences .put (TypeScriptCorePreferenceConstants .EMBEDDED_TYPESCRIPT_ID ,
198+ TypeScriptCorePlugin .getTypeScriptRepositoryManager ().getDefaultRepository ().getName ());
199+ try {
200+ preferences .flush ();
201+ } catch (BackingStoreException e ) {
202+ Trace .trace (Trace .SEVERE , "Error while fixing embeddedTypeScriptId preference" , e );
203+ }
204+ }
205+ }
174206}
0 commit comments