--- a/RefactoringRope/RefactoringClient.py Wed Sep 20 19:49:26 2017 +0200 +++ b/RefactoringRope/RefactoringClient.py Thu Sep 21 19:18:51 2017 +0200 @@ -63,6 +63,8 @@ "CalculateChangeOccurrencesChanges": self.__calculateChangeOccurrencesChanges, "CalculateExtractChanges": self.__calculateExtractChanges, + "RequestInlineType": self.__requestInlineType, + "CalculateInlineChanges": self.__calculateInlineChanges, } from FileSystemCommands import RefactoringClientFileSystemCommands @@ -536,15 +538,6 @@ resource = rope.base.libutils.path_to_resource( self.__project, filename) - try: - renamer = rope.refactor.rename.Rename( - self.__project, resource, offset) - except Exception as err: - errorDict = self.__handleRopeError(err) - result.update(errorDict) - self.sendJson("Changes", result) - return - if isLocal: resources = [resource] else: @@ -553,6 +546,8 @@ from ProgressHandle import ProgressHandle self.__progressHandle = ProgressHandle(self, title, True) try: + renamer = rope.refactor.rename.Rename( + self.__project, resource, offset) changes = renamer.get_changes( newName, resources=resources, @@ -629,13 +624,6 @@ try: renamer = rope.refactor.rename.ChangeOccurrences( self.__project, resource, offset) - except Exception as err: - errorDict = self.__handleRopeError(err) - result.update(errorDict) - self.sendJson("Changes", result) - return - - try: changes = renamer.get_changes( newName, only_calls=onlyCalls, reads=reads, writes=writes) except Exception as err: @@ -686,13 +674,6 @@ self.__project, resource, startOffset, endOffset) else: raise Exception("Invalid extraction kind <{0}>.".format(kind)) - except Exception as err: - errorDict = self.__handleRopeError(err) - result.update(errorDict) - self.sendJson("Changes", result) - return - - try: changes = extractor.get_changes( newName, similar=similar, global_=global_) except Exception as err: @@ -704,6 +685,97 @@ result.update(errorDict) self.sendJson("Changes", result) + + def __requestInlineType(self, params): + """ + Private method to determine the 'Inline' changes type based on the + parameters sent by the server. + + @param params dictionary containing the method parameters sent by + the server + @type dict + """ + changeGroup = params["ChangeGroup"] + title = params["Title"] + filename = params["FileName"] + offset = params["Offset"] + + errorDict = {} + result = { + "Subcommand": "InlineType", + "ChangeGroup": changeGroup, + "Title": title, + } + + import rope.refactor.inline + resource = rope.base.libutils.path_to_resource( + self.__project, filename) + try: + inliner = rope.refactor.inline.create_inline( + self.__project, resource, offset) + result.update({ + "Name": inliner.name, + "Kind": inliner.get_kind(), + }) + except Exception as err: + errorDict = self.__handleRopeError(err) + + result.update(errorDict) + + self.sendJson("Changes", result) + + def __calculateInlineChanges(self, params): + """ + Private method to calculate the 'Extract' changes based on the + parameters sent by the server. + + @param params dictionary containing the method parameters sent by + the server + @type dict + """ + changeGroup = params["ChangeGroup"] + title = params["Title"] + filename = params["FileName"] + offset = params["Offset"] + kind = params["Kind"] + + errorDict = {} + changes = [] + result = { + "ChangeGroup": changeGroup, + "Title": title, + } + + import rope.refactor.extract + resource = rope.base.libutils.path_to_resource( + self.__project, filename) + from ProgressHandle import ProgressHandle + self.__progressHandle = ProgressHandle(self, title, True) + try: + inliner = rope.refactor.inline.create_inline( + self.__project, resource, offset) + if kind == "parameter": + opts = { + "in_hierarchy": params["Hierarchy"], + } + else: + opts = { + "remove": params["Remove"], + "only_current": params["OnlyCurrent"], + } + changes = inliner.get_changes( + task_handle=self.__progressHandle, **opts) + except Exception as err: + errorDict = self.__handleRopeError(err) + self.__progressHandle.reset() + self.__progressHandle = None + + self.__changes[changeGroup] = changes + + result["Subcommand"] = "ChangesCalculated" + result.update(errorDict) + + self.sendJson("Changes", result) if __name__ == '__main__': if len(sys.argv) != 4: