1
0
mirror of https://github.com/chylex/IntelliJ-IdeaVim.git synced 2025-04-30 13:34:04 +02:00

Update creation of execution context

This commit is contained in:
Alex Plate 2023-03-08 11:35:01 +02:00
parent 897d393342
commit 0e96819e86
No known key found for this signature in database
GPG Key ID: 0B97153C8FFEC09F
19 changed files with 64 additions and 67 deletions

View File

@ -191,6 +191,10 @@
</codeStyleSettings>
<codeStyleSettings language="kotlin">
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
</code_scheme>
</component>

View File

@ -35,7 +35,7 @@ import com.maddyhome.idea.vim.helper.mode
import com.maddyhome.idea.vim.helper.subMode
import com.maddyhome.idea.vim.helper.vimStateMachine
import com.maddyhome.idea.vim.key.OperatorFunction
import com.maddyhome.idea.vim.newapi.IjExecutionContext
import com.maddyhome.idea.vim.newapi.IjEditorExecutionContext
import com.maddyhome.idea.vim.newapi.IjVimEditor
import com.maddyhome.idea.vim.newapi.ij
import com.maddyhome.idea.vim.newapi.vim
@ -169,7 +169,7 @@ class ReplaceWithRegister : VimExtension {
ClipboardOptionHelper.IdeaputDisabler().use {
VimPlugin.getPut().putText(
IjVimEditor(editor),
IjExecutionContext(EditorDataContext.init(editor)),
IjEditorExecutionContext(EditorDataContext.init(editor)),
putData,
operatorArguments = OperatorArguments(
editor.vimStateMachine?.isOperatorPending ?: false,

View File

@ -45,8 +45,8 @@ import com.maddyhome.idea.vim.helper.*;
import com.maddyhome.idea.vim.icons.VimIcons;
import com.maddyhome.idea.vim.key.KeyHandlerKeeper;
import com.maddyhome.idea.vim.listener.VimInsertListener;
import com.maddyhome.idea.vim.newapi.IjExecutionContext;
import com.maddyhome.idea.vim.newapi.IjExecutionContextKt;
import com.maddyhome.idea.vim.newapi.IjEditorExecutionContext;
import com.maddyhome.idea.vim.newapi.IjEditorExecutionContextKt;
import com.maddyhome.idea.vim.newapi.IjVimCaret;
import com.maddyhome.idea.vim.newapi.IjVimEditor;
import com.maddyhome.idea.vim.options.OptionConstants;
@ -99,7 +99,7 @@ public class ChangeGroup extends VimChangeGroupBase {
@Override
public void type(@NotNull VimEditor vimEditor, @NotNull ExecutionContext context, char key) {
Editor editor = ((IjVimEditor) vimEditor).getEditor();
DataContext ijContext = IjExecutionContextKt.getIj(context);
DataContext ijContext = IjEditorExecutionContextKt.getIj(context);
final Document doc = ((IjVimEditor) vimEditor).getEditor().getDocument();
CommandProcessor.getInstance().executeCommand(editor.getProject(), () -> ApplicationManager.getApplication()
.runWriteAction(() -> KeyHandlerKeeper.getInstance().getOriginalHandler().execute(editor, key, ijContext)), "", doc,
@ -116,7 +116,7 @@ public class ChangeGroup extends VimChangeGroupBase {
final @NotNull Argument argument,
boolean isChange,
@NotNull OperatorArguments operatorArguments) {
final TextRange range = MotionGroup.getMotionRange2(((IjVimEditor) editor).getEditor(), ((IjVimCaret) caret).getCaret(), ((IjExecutionContext) context).getContext(), argument, operatorArguments);
final TextRange range = MotionGroup.getMotionRange2(((IjVimEditor) editor).getEditor(), ((IjVimCaret) caret).getCaret(), ((IjEditorExecutionContext) context).getContext(), argument, operatorArguments);
if (range == null) return null;
// Delete motion commands that are not linewise become linewise if all the following are true:
@ -210,7 +210,7 @@ public class ChangeGroup extends VimChangeGroupBase {
final int lineLength = EngineEditorHelperKt.lineLength(editor, line);
if (column < VimMotionGroupBase.LAST_COLUMN && lineLength < column) {
final String pad = EditorHelper.pad(((IjVimEditor) editor).getEditor(), ((IjExecutionContext) context).getContext(), line, column);
final String pad = EditorHelper.pad(((IjVimEditor) editor).getEditor(), ((IjEditorExecutionContext) context).getContext(), line, column);
final int offset = editor.getLineEndOffset(line);
insertText(editor, caret, offset, pad);
}
@ -436,7 +436,7 @@ public class ChangeGroup extends VimChangeGroupBase {
// Remember the current caret column
final int intendedColumn = caret.getVimLastColumn();
IndentConfig indentConfig = IndentConfig.create(((IjVimEditor) editor).getEditor(), ((IjExecutionContext) context).getContext());
IndentConfig indentConfig = IndentConfig.create(((IjVimEditor) editor).getEditor(), ((IjEditorExecutionContext) context).getContext());
final int sline = editor.offsetToBufferPosition(range.getStartOffset()).getLine();
final BufferPosition endLogicalPosition = editor.offsetToBufferPosition(range.getEndOffset());

View File

@ -23,7 +23,7 @@ import com.maddyhome.idea.vim.VimPlugin;
import com.maddyhome.idea.vim.api.VimEditor;
import com.maddyhome.idea.vim.api.VimEditorGroup;
import com.maddyhome.idea.vim.helper.*;
import com.maddyhome.idea.vim.newapi.IjExecutionContext;
import com.maddyhome.idea.vim.newapi.IjEditorExecutionContext;
import com.maddyhome.idea.vim.newapi.IjVimEditor;
import com.maddyhome.idea.vim.options.LocalOptionChangeListener;
import com.maddyhome.idea.vim.options.OptionConstants;
@ -36,7 +36,6 @@ import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Arrays;
import java.util.Collection;
import java.util.stream.Collectors;
@ -215,7 +214,7 @@ public class EditorGroup implements PersistentStateComponent<Element>, VimEditor
if (!EditorHelper.isFileEditor(editor) &&
editor.getDocument().isWritable() &&
!CommandStateHelper.inInsertMode(editor)) {
VimPlugin.getChange().insertBeforeCursor(new IjVimEditor(editor), new IjExecutionContext(EditorDataContext.init(editor, null)));
VimPlugin.getChange().insertBeforeCursor(new IjVimEditor(editor), new IjEditorExecutionContext(EditorDataContext.init(editor, null)));
KeyHandler.getInstance().reset(new IjVimEditor(editor));
}
updateCaretsVisualAttributes(editor);

View File

@ -37,7 +37,7 @@ import com.maddyhome.idea.vim.helper.EditorHelperRt;
import com.maddyhome.idea.vim.helper.MessageHelper;
import com.maddyhome.idea.vim.helper.SearchHelper;
import com.maddyhome.idea.vim.newapi.ExecuteExtensionKt;
import com.maddyhome.idea.vim.newapi.IjExecutionContext;
import com.maddyhome.idea.vim.newapi.IjEditorExecutionContext;
import com.maddyhome.idea.vim.newapi.IjVimEditor;
import com.maddyhome.idea.vim.vimscript.services.IjOptionConstants;
import org.jetbrains.annotations.NotNull;
@ -54,7 +54,7 @@ public class FileGroup extends VimFileBase {
if (logger.isDebugEnabled()) {
logger.debug("openFile(" + filename + ")");
}
final Project project = PlatformDataKeys.PROJECT.getData(((IjExecutionContext) context).getContext()); // API change - don't merge
final Project project = PlatformDataKeys.PROJECT.getData(((IjEditorExecutionContext) context).getContext()); // API change - don't merge
if (project == null) return false;
VirtualFile found = findFile(filename, project);
@ -165,7 +165,7 @@ public class FileGroup extends VimFileBase {
*/
@Override
public void closeFile(int number, @NotNull ExecutionContext context) {
final Project project = PlatformDataKeys.PROJECT.getData(((IjExecutionContext) context).getContext());
final Project project = PlatformDataKeys.PROJECT.getData(((IjEditorExecutionContext) context).getContext());
if (project == null) return;
final FileEditorManagerEx fileEditorManager = FileEditorManagerEx.getInstanceEx(project);
final EditorWindow window = fileEditorManager.getCurrentWindow();
@ -207,7 +207,7 @@ public class FileGroup extends VimFileBase {
*/
@Override
public boolean selectFile(int count, @NotNull ExecutionContext context) {
final Project project = PlatformDataKeys.PROJECT.getData(((IjExecutionContext) context).getContext());
final Project project = PlatformDataKeys.PROJECT.getData(((IjEditorExecutionContext) context).getContext());
if (project == null) return false;
FileEditorManager fem = FileEditorManager.getInstance(project); // API change - don't merge
VirtualFile[] editors = fem.getOpenFiles();
@ -227,7 +227,7 @@ public class FileGroup extends VimFileBase {
* Selects then next or previous editor.
*/
public void selectNextFile(int count, @NotNull ExecutionContext context) {
Project project = PlatformDataKeys.PROJECT.getData(((IjExecutionContext) context).getContext());
Project project = PlatformDataKeys.PROJECT.getData(((IjEditorExecutionContext) context).getContext());
if (project == null) return;
FileEditorManager fem = FileEditorManager.getInstance(project); // API change - don't merge
VirtualFile[] editors = fem.getOpenFiles();

View File

@ -66,7 +66,7 @@ import com.maddyhome.idea.vim.helper.isEndAllowed
import com.maddyhome.idea.vim.helper.vimLastColumn
import com.maddyhome.idea.vim.listener.AppCodeTemplates
import com.maddyhome.idea.vim.mark.Mark
import com.maddyhome.idea.vim.newapi.IjExecutionContext
import com.maddyhome.idea.vim.newapi.IjEditorExecutionContext
import com.maddyhome.idea.vim.newapi.IjVimCaret
import com.maddyhome.idea.vim.newapi.IjVimEditor
import com.maddyhome.idea.vim.newapi.ij
@ -366,7 +366,7 @@ class MotionGroup : VimMotionGroupBase() {
val motion = action.getHandlerOffset(
editor.vim,
caret.vim,
IjExecutionContext(context!!),
IjEditorExecutionContext(context!!),
cmd.argument,
operatorArguments.withCount0(raw)
)
@ -387,7 +387,7 @@ class MotionGroup : VimMotionGroupBase() {
} else if (cmd.action is TextObjectActionHandler) {
val action = cmd.action as TextObjectActionHandler
val range =
action.getRange(editor.vim, caret.vim, IjExecutionContext(context!!), cnt, raw, cmd.argument) ?: return null
action.getRange(editor.vim, caret.vim, IjEditorExecutionContext(context!!), cnt, raw, cmd.argument) ?: return null
start = range.startOffset
end = range.endOffset
if (cmd.isLinewiseMotion()) end--

View File

@ -34,7 +34,7 @@ import com.maddyhome.idea.vim.command.VimStateMachine;
import com.maddyhome.idea.vim.ex.ExException;
import com.maddyhome.idea.vim.ex.InvalidCommandException;
import com.maddyhome.idea.vim.helper.UiHelper;
import com.maddyhome.idea.vim.newapi.IjExecutionContext;
import com.maddyhome.idea.vim.newapi.IjEditorExecutionContext;
import com.maddyhome.idea.vim.newapi.IjVimEditor;
import com.maddyhome.idea.vim.options.OptionConstants;
import com.maddyhome.idea.vim.ui.ex.ExEntryPanel;
@ -84,7 +84,7 @@ public class ProcessGroup extends VimProcessGroupBase {
String initText = getRange(((IjVimEditor) editor).getEditor(), cmd);
VimStateMachine.getInstance(editor).pushModes(VimStateMachine.Mode.CMD_LINE, VimStateMachine.SubMode.NONE);
ExEntryPanel panel = ExEntryPanel.getInstance();
panel.activate(((IjVimEditor) editor).getEditor(), ((IjExecutionContext) context).getContext(), ":", initText, 1);
panel.activate(((IjVimEditor) editor).getEditor(), ((IjEditorExecutionContext) context).getContext(), ":", initText, 1);
}
@Override
@ -159,7 +159,7 @@ public class ProcessGroup extends VimProcessGroupBase {
String initText = getRange(((IjVimEditor) editor).getEditor(), cmd) + "!";
VimStateMachine.getInstance(editor).pushModes(VimStateMachine.Mode.CMD_LINE, VimStateMachine.SubMode.NONE);
ExEntryPanel panel = ExEntryPanel.getInstance();
panel.activate(((IjVimEditor) editor).getEditor(), ((IjExecutionContext) context).getContext(), ":", initText, 1);
panel.activate(((IjVimEditor) editor).getEditor(), ((IjEditorExecutionContext) context).getContext(), ":", initText, 1);
}
private @NotNull String getRange(Editor editor, @NotNull Command cmd) {

View File

@ -33,7 +33,7 @@ import com.maddyhome.idea.vim.ex.ExException;
import com.maddyhome.idea.vim.ex.ranges.LineRange;
import com.maddyhome.idea.vim.helper.*;
import com.maddyhome.idea.vim.history.HistoryConstants;
import com.maddyhome.idea.vim.newapi.IjExecutionContext;
import com.maddyhome.idea.vim.newapi.IjEditorExecutionContext;
import com.maddyhome.idea.vim.newapi.IjVimCaret;
import com.maddyhome.idea.vim.newapi.IjVimEditor;
import com.maddyhome.idea.vim.options.OptionChangeListener;
@ -803,7 +803,7 @@ public class SearchGroup extends VimSearchGroupBase implements PersistentStateCo
if (expression != null) {
try {
match = expression
.evaluate(editor, new IjExecutionContext(EditorDataContext.init(((IjVimEditor) editor).getEditor(), null)), parent)
.evaluate(editor, new IjEditorExecutionContext(EditorDataContext.init(((IjVimEditor) editor).getEditor(), null)), parent)
.toInsertableString();
} catch (Exception e) {
exceptions.add((ExException) e);

View File

@ -20,7 +20,7 @@ import com.maddyhome.idea.vim.VimPlugin;
import com.maddyhome.idea.vim.api.ExecutionContext;
import com.maddyhome.idea.vim.helper.MessageHelper;
import com.maddyhome.idea.vim.helper.RWLockLabel;
import com.maddyhome.idea.vim.newapi.IjExecutionContext;
import com.maddyhome.idea.vim.newapi.IjEditorExecutionContext;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@ -51,7 +51,7 @@ public class WindowGroup extends WindowGroupBase {
}
public void closeAll(@NotNull ExecutionContext context) {
getFileEditorManager(((IjExecutionContext) context).getContext()).closeAllFiles();
getFileEditorManager(((IjEditorExecutionContext) context).getContext()).closeAllFiles();
}
@Override

View File

@ -31,6 +31,7 @@ import com.maddyhome.idea.vim.api.ExecutionContext
import com.maddyhome.idea.vim.api.NativeAction
import com.maddyhome.idea.vim.api.VimActionExecutor
import com.maddyhome.idea.vim.api.VimEditor
import com.maddyhome.idea.vim.api.injector
import com.maddyhome.idea.vim.command.OperatorArguments
import com.maddyhome.idea.vim.handler.EditorActionHandlerBase
import com.maddyhome.idea.vim.newapi.IjNativeAction
@ -163,7 +164,7 @@ class IjActionExecutor : VimActionExecutor {
CommandProcessor.getInstance()
.executeCommand(
editor.ij.project,
{ cmd.execute(editor, EditorDataContext.init(editor.ij, context.ij).vim, operatorArguments) },
{ cmd.execute(editor, injector.executionContextManager.onEditor(editor, context), operatorArguments) },
cmd.id, DocCommandGroupId.noneGroupId(editor.ij.document), UndoConfirmationPolicy.DEFAULT,
editor.ij.document
)

View File

@ -19,7 +19,7 @@ import com.maddyhome.idea.vim.api.getLineStartForOffset
import com.maddyhome.idea.vim.command.OperatorArguments
import com.maddyhome.idea.vim.command.VimStateMachine
import com.maddyhome.idea.vim.listener.SelectionVimListenerSuppressor
import com.maddyhome.idea.vim.newapi.IjExecutionContext
import com.maddyhome.idea.vim.newapi.IjEditorExecutionContext
import com.maddyhome.idea.vim.newapi.IjVimCaret
import com.maddyhome.idea.vim.newapi.IjVimEditor
import com.maddyhome.idea.vim.newapi.vim
@ -76,5 +76,5 @@ fun VimEditor.exitSelectMode(adjustCaretPosition: Boolean) {
}
fun Editor.exitInsertMode(context: DataContext, operatorArguments: OperatorArguments) {
VimPlugin.getChange().processEscape(IjVimEditor(this), IjExecutionContext(context), operatorArguments)
VimPlugin.getChange().processEscape(IjVimEditor(this), IjEditorExecutionContext(context), operatorArguments)
}

View File

@ -13,14 +13,16 @@ import com.maddyhome.idea.vim.api.ExecutionContext
import com.maddyhome.idea.vim.api.VimEditor
import com.maddyhome.idea.vim.helper.EditorDataContext
class IjExecutionContext(override val context: DataContext) : ExecutionContext {
open class IjEditorExecutionContext(override val context: DataContext) : ExecutionContext.Editor {
override fun updateEditor(editor: VimEditor): ExecutionContext {
return IjExecutionContext(EditorDataContext.init((editor as IjVimEditor).editor, context))
return IjEditorExecutionContext(EditorDataContext.init((editor as IjVimEditor).editor, context))
}
}
val DataContext.vim
get() = IjExecutionContext(this)
class IjCaretAndEditorExecutionContext(override val context: DataContext) : IjEditorExecutionContext(context), ExecutionContext.CaretAndEditor
val DataContext.vim: ExecutionContext
get() = IjEditorExecutionContext(this)
val ExecutionContext.ij: DataContext
get() = (this as IjExecutionContext).context
get() = (this as IjEditorExecutionContext).context

View File

@ -15,22 +15,20 @@ import com.maddyhome.idea.vim.api.ExecutionContextManagerBase
import com.maddyhome.idea.vim.api.VimCaret
import com.maddyhome.idea.vim.api.VimEditor
import com.maddyhome.idea.vim.helper.EditorDataContext
import com.maddyhome.idea.vim.options.helpers.StrictMode
@Service
class IjExecutionContextManager : ExecutionContextManagerBase() {
override fun onEditor(editor: VimEditor, prevContext: ExecutionContext?): ExecutionContext {
return IjExecutionContext(EditorDataContext.init((editor as IjVimEditor).editor, prevContext?.ij))
override fun onEditor(editor: VimEditor, prevContext: ExecutionContext?): ExecutionContext.Editor {
if (prevContext is ExecutionContext.CaretAndEditor) {
StrictMode.fail("You should not create context on editor from the context on caret and editor")
prevContext.updateEditor(editor)
return prevContext
}
return IjEditorExecutionContext(EditorDataContext.init((editor as IjVimEditor).editor, prevContext?.ij))
}
override fun onCaret(caret: VimCaret, prevContext: ExecutionContext): ExecutionContext {
return IjExecutionContext(CaretSpecificDataContext.create(prevContext.ij, caret.ij))
}
override fun createCaretSpecificDataContext(context: ExecutionContext, caret: VimCaret): ExecutionContext {
return IjExecutionContext(CaretSpecificDataContext.create(context.ij, caret.ij))
}
override fun createEditorDataContext(editor: VimEditor, context: ExecutionContext): ExecutionContext {
return EditorDataContext.init(editor.ij, context.ij).vim
override fun onCaret(caret: VimCaret, prevContext: ExecutionContext.Editor): ExecutionContext.CaretAndEditor {
return IjCaretAndEditorExecutionContext(CaretSpecificDataContext.create(prevContext.ij, caret.ij))
}
}

View File

@ -18,7 +18,7 @@ import com.intellij.util.IJSwingUtilities;
import com.maddyhome.idea.vim.KeyHandler;
import com.maddyhome.idea.vim.VimPlugin;
import com.maddyhome.idea.vim.helper.*;
import com.maddyhome.idea.vim.newapi.IjExecutionContext;
import com.maddyhome.idea.vim.newapi.IjEditorExecutionContext;
import com.maddyhome.idea.vim.newapi.IjVimEditor;
import com.maddyhome.idea.vim.options.OptionConstants;
import org.jetbrains.annotations.Nls;
@ -296,7 +296,7 @@ public class ExOutputPanel extends JPanel {
final List<KeyStroke> keys = new ArrayList<>(1);
keys.add(key);
KeyHandler.getInstance().getKeyStack().addKeys(keys);
VimPlugin.getMacro().playbackKeys(new IjVimEditor(myEditor), new IjExecutionContext(EditorDataContext.init(myEditor, null)),
VimPlugin.getMacro().playbackKeys(new IjVimEditor(myEditor), new IjEditorExecutionContext(EditorDataContext.init(myEditor, null)),
1);
}
});

View File

@ -12,16 +12,17 @@ package com.maddyhome.idea.vim.api
* This would be ideal if we could provide a typed solution, but sofar this is just a holder
*/
interface ExecutionContext {
sealed interface ExecutionContext {
val context: Any
// TODO: 10.02.2022 Not sure about this method
fun updateEditor(editor: VimEditor): ExecutionContext
interface Editor : ExecutionContext
interface CaretAndEditor : Editor
}
interface ExecutionContextManager {
fun onEditor(editor: VimEditor, prevContext: ExecutionContext? = null): ExecutionContext
fun onCaret(caret: VimCaret, prevContext: ExecutionContext): ExecutionContext
fun createCaretSpecificDataContext(context: ExecutionContext, caret: VimCaret): ExecutionContext
fun createEditorDataContext(editor: VimEditor, context: ExecutionContext): ExecutionContext
fun onEditor(editor: VimEditor, prevContext: ExecutionContext? = null): ExecutionContext.Editor
fun onCaret(caret: VimCaret, prevContext: ExecutionContext.Editor): ExecutionContext.CaretAndEditor
}

View File

@ -19,19 +19,11 @@ class ExecutionContextManagerStub : ExecutionContextManager {
vimLogger<ExecutionContextManagerStub>().warn("ExecutionContextManagerStub is used. Please replace it with your own implementation of ExecutionContextManager.")
}
override fun onEditor(editor: VimEditor, prevContext: ExecutionContext?): ExecutionContext {
override fun onEditor(editor: VimEditor, prevContext: ExecutionContext?): ExecutionContext.Editor {
TODO("Not yet implemented")
}
override fun onCaret(caret: VimCaret, prevContext: ExecutionContext): ExecutionContext {
TODO("Not yet implemented")
}
override fun createCaretSpecificDataContext(context: ExecutionContext, caret: VimCaret): ExecutionContext {
TODO("Not yet implemented")
}
override fun createEditorDataContext(editor: VimEditor, context: ExecutionContext): ExecutionContext {
override fun onCaret(caret: VimCaret, prevContext: ExecutionContext.Editor): ExecutionContext.CaretAndEditor {
TODO("Not yet implemented")
}
}

View File

@ -74,7 +74,7 @@ abstract class EditorActionHandlerBase(private val myRunForEachCaret: Boolean) {
operatorArguments: OperatorArguments,
): Boolean
fun execute(editor: VimEditor, context: ExecutionContext, operatorArguments: OperatorArguments) {
fun execute(editor: VimEditor, context: ExecutionContext.Editor, operatorArguments: OperatorArguments) {
val action = { caret: VimCaret -> doExecute(editor, caret, context, operatorArguments) }
if (myRunForEachCaret) {
editor.forEachCaret(action)
@ -83,7 +83,7 @@ abstract class EditorActionHandlerBase(private val myRunForEachCaret: Boolean) {
}
}
private fun doExecute(editor: VimEditor, caret: VimCaret, context: ExecutionContext, operatorArguments: OperatorArguments) {
private fun doExecute(editor: VimEditor, caret: VimCaret, context: ExecutionContext.Editor, operatorArguments: OperatorArguments) {
if (!injector.enabler.isEnabled()) return
logger.debug("Execute command with handler: " + this.javaClass.name)

View File

@ -243,7 +243,7 @@ class ToActionMappingInfo(
override fun execute(editor: VimEditor, context: ExecutionContext) {
LOG.debug("Executing 'ToAction' mapping...")
val editorDataContext = injector.executionContextManager.onEditor(editor, context)
val dataContext = injector.executionContextManager.createCaretSpecificDataContext(editorDataContext, editor.currentCaret())
val dataContext = injector.executionContextManager.onCaret(editor.currentCaret(), editorDataContext)
injector.actionExecutor.executeAction(action, dataContext)
}

View File

@ -36,7 +36,7 @@ data class EditFileCommand(val ranges: Ranges, val argument: String) : Command.S
// Don't open a choose file dialog under a write action
injector.application.invokeLater {
injector.actionExecutor.executeAction("OpenFile", injector.executionContextManager.createEditorDataContext(editor, context))
injector.actionExecutor.executeAction("OpenFile", injector.executionContextManager.onEditor(editor, context))
}
return ExecutionResult.Success