61 "ClearChanges": self.__clearChanges, |
61 "ClearChanges": self.__clearChanges, |
62 "CalculateRenameChanges": self.__calculateRenameChanges, |
62 "CalculateRenameChanges": self.__calculateRenameChanges, |
63 "CalculateChangeOccurrencesChanges": |
63 "CalculateChangeOccurrencesChanges": |
64 self.__calculateChangeOccurrencesChanges, |
64 self.__calculateChangeOccurrencesChanges, |
65 "CalculateExtractChanges": self.__calculateExtractChanges, |
65 "CalculateExtractChanges": self.__calculateExtractChanges, |
|
66 "RequestInlineType": self.__requestInlineType, |
|
67 "CalculateInlineChanges": self.__calculateInlineChanges, |
66 } |
68 } |
67 |
69 |
68 from FileSystemCommands import RefactoringClientFileSystemCommands |
70 from FileSystemCommands import RefactoringClientFileSystemCommands |
69 self.__fsCommands = RefactoringClientFileSystemCommands(self) |
71 self.__fsCommands = RefactoringClientFileSystemCommands(self) |
70 |
72 |
534 |
536 |
535 import rope.refactor.rename |
537 import rope.refactor.rename |
536 resource = rope.base.libutils.path_to_resource( |
538 resource = rope.base.libutils.path_to_resource( |
537 self.__project, filename) |
539 self.__project, filename) |
538 |
540 |
539 try: |
|
540 renamer = rope.refactor.rename.Rename( |
|
541 self.__project, resource, offset) |
|
542 except Exception as err: |
|
543 errorDict = self.__handleRopeError(err) |
|
544 result.update(errorDict) |
|
545 self.sendJson("Changes", result) |
|
546 return |
|
547 |
|
548 if isLocal: |
541 if isLocal: |
549 resources = [resource] |
542 resources = [resource] |
550 else: |
543 else: |
551 resources = None |
544 resources = None |
552 |
545 |
553 from ProgressHandle import ProgressHandle |
546 from ProgressHandle import ProgressHandle |
554 self.__progressHandle = ProgressHandle(self, title, True) |
547 self.__progressHandle = ProgressHandle(self, title, True) |
555 try: |
548 try: |
|
549 renamer = rope.refactor.rename.Rename( |
|
550 self.__project, resource, offset) |
556 changes = renamer.get_changes( |
551 changes = renamer.get_changes( |
557 newName, |
552 newName, |
558 resources=resources, |
553 resources=resources, |
559 in_hierarchy=renameHierarchy, |
554 in_hierarchy=renameHierarchy, |
560 unsure=lambda o: self.__confirmUnsure(o, changeGroup), |
555 unsure=lambda o: self.__confirmUnsure(o, changeGroup), |
627 resource = rope.base.libutils.path_to_resource( |
622 resource = rope.base.libutils.path_to_resource( |
628 self.__project, filename) |
623 self.__project, filename) |
629 try: |
624 try: |
630 renamer = rope.refactor.rename.ChangeOccurrences( |
625 renamer = rope.refactor.rename.ChangeOccurrences( |
631 self.__project, resource, offset) |
626 self.__project, resource, offset) |
632 except Exception as err: |
|
633 errorDict = self.__handleRopeError(err) |
|
634 result.update(errorDict) |
|
635 self.sendJson("Changes", result) |
|
636 return |
|
637 |
|
638 try: |
|
639 changes = renamer.get_changes( |
627 changes = renamer.get_changes( |
640 newName, only_calls=onlyCalls, reads=reads, writes=writes) |
628 newName, only_calls=onlyCalls, reads=reads, writes=writes) |
641 except Exception as err: |
629 except Exception as err: |
642 errorDict = self.__handleRopeError(err) |
630 errorDict = self.__handleRopeError(err) |
643 |
631 |
684 elif kind == "method": |
672 elif kind == "method": |
685 extractor = rope.refactor.extract.ExtractMethod( |
673 extractor = rope.refactor.extract.ExtractMethod( |
686 self.__project, resource, startOffset, endOffset) |
674 self.__project, resource, startOffset, endOffset) |
687 else: |
675 else: |
688 raise Exception("Invalid extraction kind <{0}>.".format(kind)) |
676 raise Exception("Invalid extraction kind <{0}>.".format(kind)) |
689 except Exception as err: |
|
690 errorDict = self.__handleRopeError(err) |
|
691 result.update(errorDict) |
|
692 self.sendJson("Changes", result) |
|
693 return |
|
694 |
|
695 try: |
|
696 changes = extractor.get_changes( |
677 changes = extractor.get_changes( |
697 newName, similar=similar, global_=global_) |
678 newName, similar=similar, global_=global_) |
698 except Exception as err: |
679 except Exception as err: |
699 errorDict = self.__handleRopeError(err) |
680 errorDict = self.__handleRopeError(err) |
|
681 |
|
682 self.__changes[changeGroup] = changes |
|
683 |
|
684 result["Subcommand"] = "ChangesCalculated" |
|
685 result.update(errorDict) |
|
686 |
|
687 self.sendJson("Changes", result) |
|
688 |
|
689 def __requestInlineType(self, params): |
|
690 """ |
|
691 Private method to determine the 'Inline' changes type based on the |
|
692 parameters sent by the server. |
|
693 |
|
694 @param params dictionary containing the method parameters sent by |
|
695 the server |
|
696 @type dict |
|
697 """ |
|
698 changeGroup = params["ChangeGroup"] |
|
699 title = params["Title"] |
|
700 filename = params["FileName"] |
|
701 offset = params["Offset"] |
|
702 |
|
703 errorDict = {} |
|
704 result = { |
|
705 "Subcommand": "InlineType", |
|
706 "ChangeGroup": changeGroup, |
|
707 "Title": title, |
|
708 } |
|
709 |
|
710 import rope.refactor.inline |
|
711 resource = rope.base.libutils.path_to_resource( |
|
712 self.__project, filename) |
|
713 try: |
|
714 inliner = rope.refactor.inline.create_inline( |
|
715 self.__project, resource, offset) |
|
716 result.update({ |
|
717 "Name": inliner.name, |
|
718 "Kind": inliner.get_kind(), |
|
719 }) |
|
720 except Exception as err: |
|
721 errorDict = self.__handleRopeError(err) |
|
722 |
|
723 result.update(errorDict) |
|
724 |
|
725 self.sendJson("Changes", result) |
|
726 |
|
727 def __calculateInlineChanges(self, params): |
|
728 """ |
|
729 Private method to calculate the 'Extract' changes based on the |
|
730 parameters sent by the server. |
|
731 |
|
732 @param params dictionary containing the method parameters sent by |
|
733 the server |
|
734 @type dict |
|
735 """ |
|
736 changeGroup = params["ChangeGroup"] |
|
737 title = params["Title"] |
|
738 filename = params["FileName"] |
|
739 offset = params["Offset"] |
|
740 kind = params["Kind"] |
|
741 |
|
742 errorDict = {} |
|
743 changes = [] |
|
744 result = { |
|
745 "ChangeGroup": changeGroup, |
|
746 "Title": title, |
|
747 } |
|
748 |
|
749 import rope.refactor.extract |
|
750 resource = rope.base.libutils.path_to_resource( |
|
751 self.__project, filename) |
|
752 from ProgressHandle import ProgressHandle |
|
753 self.__progressHandle = ProgressHandle(self, title, True) |
|
754 try: |
|
755 inliner = rope.refactor.inline.create_inline( |
|
756 self.__project, resource, offset) |
|
757 if kind == "parameter": |
|
758 opts = { |
|
759 "in_hierarchy": params["Hierarchy"], |
|
760 } |
|
761 else: |
|
762 opts = { |
|
763 "remove": params["Remove"], |
|
764 "only_current": params["OnlyCurrent"], |
|
765 } |
|
766 changes = inliner.get_changes( |
|
767 task_handle=self.__progressHandle, **opts) |
|
768 except Exception as err: |
|
769 errorDict = self.__handleRopeError(err) |
|
770 self.__progressHandle.reset() |
|
771 self.__progressHandle = None |
700 |
772 |
701 self.__changes[changeGroup] = changes |
773 self.__changes[changeGroup] = changes |
702 |
774 |
703 result["Subcommand"] = "ChangesCalculated" |
775 result["Subcommand"] = "ChangesCalculated" |
704 result.update(errorDict) |
776 result.update(errorDict) |