Поскольку я несколько раз гуглял здесь при разработке плагина IntelliJ emacsIDEAs , я оставлю здесь свое решение для тех, кому оно нужно.
обычно изменение документа необходимо сделать в runWriteAction ,
а для отмены изменений в документе необходимо вызвать CommandProcessor.getInstance (). executeCommand
поэтому решение таково: вызовите executeCommand в runWriteAction , тогда изменения будут отменены.
protected Runnable getRunnableWrapper(final Runnable runnable) {
return new Runnable() {
@Override
public void run() {
CommandProcessor.getInstance().executeCommand(_editor.getProject(), runnable, "cut", ActionGroup.EMPTY_GROUP);
}
};
}
final Runnable runnable = new Runnable() {
@Override
public void run() {
selectJumpArea(jumpTargetOffset);
_editor.getSelectionModel().copySelectionToClipboard();
EditorModificationUtil.deleteSelectedText(_editor);
_editor.getSelectionModel().removeSelection();
}
};
ApplicationManager.getApplication().runWriteAction(getRunnableWrapper(runnable));
код репо: https://github.com/whunmr/emacsIDEAs