當我用Google搜索到這裏好幾次,當我開發的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
感謝來自Intellij IDEA支持團隊的Serge Baranov。當我從支持頁面詢問時,他立即回答我的問題。 – kamaci
是的,IntelliJ的支持人很棒,這是我比較喜歡IntelliJ上的其中一個原因(不是唯一一個),比Eclipse – Guillaume
更好。但是如果我想恢復更改,那麼我真的想要恢復更改。但它仍然顯示在我從目錄中檢查。保持本地歷史是一回事,但保持SVN的歷史是另一回事。我期望intellij不會在SVN提交中顯示任何內容,或者在文件恢復後恢復。 –