diff -r fb8a4182f12e -r 05ef7c12a6d4 RefactoringRope/RefactoringClient.py --- a/RefactoringRope/RefactoringClient.py Sun Sep 17 17:53:20 2017 +0200 +++ b/RefactoringRope/RefactoringClient.py Sun Sep 17 18:30:14 2017 +0200 @@ -67,7 +67,8 @@ self.__progressHandle = None - self.__changes = {} # dict storing the retrieved changes + self.__changes = {} + # dict storing the retrieved changes for various refactorings def handleCall(self, method, params): """ @@ -347,7 +348,7 @@ """ subcommand = params["Subcommand"] if subcommand == "Get": - self.__changes = {} + changes = {} if params["Filename"]: # file history resource = rope.base.libutils.path_to_resource( @@ -368,25 +369,28 @@ result = {"Subcommand": "Histories"} result["Undo"] = [] for change in undoList: - self.__changes[id(change)] = change + changes[id(change)] = change result["Undo"].append([str(change), id(change)]) result["Redo"] = [] for change in redoList: - self.__changes[id(change)] = change + changes[id(change)] = change result["Redo"].append([str(change), id(change)]) + self.__changes["History"] = changes + self.sendJson("HistoryResult", result) elif subcommand == "GetChange": result = { "Subcommand": "ChangeDescription", - "Description": self.__changes[params["Id"]].get_description() + "Description": self.__changes["History"][params["Id"]]\ + .get_description() } self.sendJson("HistoryResult", result) elif subcommand in ["Undo", "Redo"]: - change = self.__changes[params["Id"]] + change = self.__changes["History"][params["Id"]] from ProgressHandle import ProgressHandle self.__progressHandle = ProgressHandle(self, change.description, False) @@ -410,6 +414,12 @@ elif subcommand == "Clear": self.__project.history.clear() + + elif subcommand == "ClearChanges": + try: + del self.__changes["History"] + except KeyError: + pass if __name__ == '__main__': if len(sys.argv) != 4: