From bc2bf913f837f423b8092f1251a16fa64d6bdcb4 Mon Sep 17 00:00:00 2001 From: "Rustam.Vishnyakov" Date: Tue, 1 Feb 2011 14:59:27 +0300 Subject: [PATCH] Correctly updating a list of JS libraries in library usage scope after library removal --- .../LangScriptingContextConfigurable.java | 2 +- .../ScriptingLibraryMappings.java | 20 ++++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/scriptingContext/LangScriptingContextConfigurable.java b/platform/lang-impl/src/com/intellij/ide/scriptingContext/LangScriptingContextConfigurable.java index 53c0eb99d703..78b7b935d7dd 100644 --- a/platform/lang-impl/src/com/intellij/ide/scriptingContext/LangScriptingContextConfigurable.java +++ b/platform/lang-impl/src/com/intellij/ide/scriptingContext/LangScriptingContextConfigurable.java @@ -64,7 +64,7 @@ public abstract class LangScriptingContextConfigurable implements Configurable, public void run() { myLibManager.commitChanges(); myPanel.resetTable(); - myContextsConfigurable.resetMappings(); + myContextsConfigurable.reset(); } }); } diff --git a/platform/lang-impl/src/com/intellij/ide/scriptingContext/ScriptingLibraryMappings.java b/platform/lang-impl/src/com/intellij/ide/scriptingContext/ScriptingLibraryMappings.java index 376cd7b3cf0d..9706e690f911 100644 --- a/platform/lang-impl/src/com/intellij/ide/scriptingContext/ScriptingLibraryMappings.java +++ b/platform/lang-impl/src/com/intellij/ide/scriptingContext/ScriptingLibraryMappings.java @@ -76,19 +76,24 @@ public class ScriptingLibraryMappings extends LanguagePerFileMappings map = getMappings(); - for (ScriptingLibraryTable.LibraryModel value : map.values()) { + for (VirtualFile file : map.keySet()) { + ScriptingLibraryTable.LibraryModel value = getImmediateMapping(file); if (value instanceof CompoundLibrary) { CompoundLibrary container = (CompoundLibrary) value; ScriptingLibraryTable.LibraryModel[] libModels = - container.getLibraries().toArray(new ScriptingLibraryTable.LibraryModel[container.getLibraryCount()]); + container.getLibraries().toArray(new ScriptingLibraryTable.LibraryModel[container.getLibraryCount()]); + CompoundLibrary newContainer = new CompoundLibrary(); for (ScriptingLibraryTable.LibraryModel libraryModel : libModels) { - String libName = libraryModel.getName(); - if (myLibraryManager.getLibraryByName(libName) == null) { - container.removeLibrary(libName); + String libName = libraryModel.getName(); + if (myLibraryManager.getLibraryByName(libName) != null) { + newContainer.addLibrary(libraryModel); } } + newContainer.applyChanges(); + setMapping(file, newContainer.isEmpty() ? null : newContainer); } } + } @Override @@ -313,8 +318,9 @@ public class ScriptingLibraryMappings extends LanguagePerFileMappings