mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
use transactions in completion
This commit is contained in:
+12
-9
@@ -30,7 +30,10 @@ import com.intellij.injected.editor.DocumentWindow;
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.lang.injection.InjectedLanguageManager;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.application.AccessToken;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.TransactionGuard;
|
||||
import com.intellij.openapi.application.TransactionKind;
|
||||
import com.intellij.openapi.command.CommandProcessor;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.*;
|
||||
@@ -176,7 +179,9 @@ public class CodeCompletionHandlerBase {
|
||||
}
|
||||
};
|
||||
if (autopopup) {
|
||||
CommandProcessor.getInstance().runUndoTransparentAction(initCmd);
|
||||
try (AccessToken ignored = TransactionGuard.getInstance().startSynchronousTransaction(TransactionKind.TEXT_EDITING)) {
|
||||
CommandProcessor.getInstance().runUndoTransparentAction(initCmd);
|
||||
}
|
||||
CompletionAssertions.checkEditorValid(editor);
|
||||
if (!restarted && shouldSkipAutoPopup(editor, initializationContext[0].getFile())) {
|
||||
CompletionServiceImpl.setCompletionPhase(CompletionPhase.NoCompletion);
|
||||
@@ -626,20 +631,18 @@ public class CodeCompletionHandlerBase {
|
||||
|
||||
private static void afterItemInsertion(final CompletionProgressIndicator indicator, final Runnable laterRunnable) {
|
||||
if (laterRunnable != null) {
|
||||
final Runnable runnable1 = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!indicator.getProject().isDisposed()) {
|
||||
laterRunnable.run();
|
||||
}
|
||||
indicator.disposeIndicator();
|
||||
final Runnable runnable1 = () -> {
|
||||
if (!indicator.getProject().isDisposed()) {
|
||||
laterRunnable.run();
|
||||
}
|
||||
indicator.disposeIndicator();
|
||||
};
|
||||
if (ApplicationManager.getApplication().isUnitTestMode()) {
|
||||
runnable1.run();
|
||||
}
|
||||
else {
|
||||
ApplicationManager.getApplication().invokeLater(runnable1);
|
||||
ApplicationManager.getApplication().invokeLater(
|
||||
() -> TransactionGuard.getInstance().submitMergeableTransaction(TransactionKind.TEXT_EDITING, runnable1));
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
+5
-3
@@ -18,13 +18,14 @@ package com.intellij.codeInsight.completion.actions;
|
||||
import com.intellij.codeInsight.completion.CodeCompletionHandlerBase;
|
||||
import com.intellij.codeInsight.completion.CompletionType;
|
||||
import com.intellij.codeInsight.hint.HintManagerImpl;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.TransactionKind;
|
||||
import com.intellij.openapi.application.WrapInTransaction;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import com.intellij.openapi.project.DumbAwareAction;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.util.PsiUtilBase;
|
||||
@@ -34,7 +35,8 @@ import java.awt.event.InputEvent;
|
||||
/**
|
||||
* @author peter
|
||||
*/
|
||||
public abstract class BaseCodeCompletionAction extends AnAction implements HintManagerImpl.ActionToIgnore, DumbAware {
|
||||
@WrapInTransaction(TransactionKind.Common.TEXT_EDITING)
|
||||
public abstract class BaseCodeCompletionAction extends DumbAwareAction implements HintManagerImpl.ActionToIgnore {
|
||||
|
||||
protected BaseCodeCompletionAction() {
|
||||
setEnabledInModalContext(true);
|
||||
|
||||
Reference in New Issue
Block a user