1
0
mirror of https://github.com/chylex/IntelliJ-IdeaVim.git synced 2025-07-29 16:59:01 +02:00

Make actions loading async

This commit is contained in:
Alex Plate 2019-09-02 16:54:37 +03:00
parent 44e224489b
commit 59bcd24c47
No known key found for this signature in database
GPG Key ID: 0B97153C8FFEC09F
3 changed files with 27 additions and 51 deletions

View File

@ -36,22 +36,8 @@ public class RegisterActions {
* Register all the key/action mappings for the plugin.
*/
static void registerActions() {
Runnable setup = () -> {
registerVimCommandActions();
registerEmptyShortcuts();
VimPlugin.Initialization.actionsInitialized();
};
// Temporally remove async initialization
setup.run();
/*
if (ApplicationManager.getApplication().isUnitTestMode()) {
setup.run();
}
else {
ApplicationManager.getApplication().executeOnPooledThread(setup);
}
*/
registerVimCommandActions();
registerEmptyShortcuts();
}
@Nullable

View File

@ -305,21 +305,31 @@ public class VimPlugin implements BaseComponent, PersistentStateComponent<Elemen
getSearch().turnOn();
VimListenerManager.INSTANCE.turnOn();
// Register vim actions in command mode
RegisterActions.registerActions();
// Add some listeners so we can handle special events
DocumentManager.getInstance().addDocumentListener(MarkGroup.MarkUpdater.INSTANCE);
DocumentManager.getInstance().addDocumentListener(SearchGroup.DocumentSearchListener.INSTANCE);
// Register ex handlers
CommandParser.getInstance().registerHandlers();
Runnable asyncSetup = () -> {
// Register vim actions in command mode
RegisterActions.registerActions();
if (!ApplicationManager.getApplication().isUnitTestMode()) {
final File ideaVimRc = VimScriptParser.findIdeaVimRc();
if (ideaVimRc != null) {
VimScriptParser.executeFile(ideaVimRc);
// Register ex handlers
CommandParser.getInstance().registerHandlers();
if (!ApplicationManager.getApplication().isUnitTestMode()) {
final File ideaVimRc = VimScriptParser.findIdeaVimRc();
if (ideaVimRc != null) {
VimScriptParser.executeFile(ideaVimRc);
}
}
Initialization.initialized();
};
if (ApplicationManager.getApplication().isUnitTestMode()) {
asyncSetup.run();
} else {
ApplicationManager.getApplication().executeOnPooledThread(asyncSetup);
}
}
@ -403,20 +413,14 @@ public class VimPlugin implements BaseComponent, PersistentStateComponent<Elemen
}
public static class Initialization {
private static final AtomicBoolean initializedActions = new AtomicBoolean(false);
private static final AtomicBoolean initializedCommands = new AtomicBoolean(false);
private static final AtomicBoolean initialized = new AtomicBoolean(false);
public static boolean notInitialized() {
return !(initializedActions.get() &&
initializedCommands.get());
return !(initialized.get());
}
public static void actionsInitialized() {
initializedActions.set(true);
}
public static void commandsInitialized() {
initializedCommands.set(true);
public static void initialized() {
initialized.set(true);
}
}

View File

@ -73,23 +73,9 @@ public class CommandParser {
public void registerHandlers() {
if (registered.getAndSet(true)) return;
Runnable setup = () -> {
for (CommandHandler handler : EX_COMMAND_EP.getExtensions()) {
handler.register();
}
VimPlugin.Initialization.commandsInitialized();
};
// Temporally remove async initialization
setup.run();
/*
if (ApplicationManager.getApplication().isUnitTestMode()) {
setup.run();
} else {
ApplicationManager.getApplication().executeOnPooledThread(setup);
for (CommandHandler handler : EX_COMMAND_EP.getExtensions()) {
handler.register();
}
*/
}
/**