PluginRefactoringRope.py

changeset 101
5098ad8960ed
parent 100
2bfe9e3fad8d
child 104
f6049d39f83d
--- a/PluginRefactoringRope.py	Sat Feb 28 15:09:53 2015 +0100
+++ b/PluginRefactoringRope.py	Mon Mar 02 19:51:59 2015 +0100
@@ -26,7 +26,7 @@
 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
 autoactivate = True
 deactivateable = True
-version = "4.0.0"
+version = "4.0.1"
 className = "RefactoringRopePlugin"
 packageName = "RefactoringRope"
 internalPackages = "rope"
@@ -355,11 +355,7 @@
         for editor in self.__editors:
             if editor.getLanguage() in lang and \
                self.__projectIsOpen:
-                self.__connectEditorSignals(editor)
-                if self.getPreferences("CodeAssistEnabled"):
-                    self.__setAutoCompletionHook(editor)
-                if self.getPreferences("CodeAssistCalltipsEnabled"):
-                    self.__setCalltipsHook(editor)
+                self.__connectEditor(editor)
     
     def __projectClosed(self):
         """
@@ -369,11 +365,7 @@
         self.__projectIsOpen = False
         
         for editor in self.__editors:
-            self.__disconnectEditorSignals(editor)
-            if editor.autoCompletionHook() == self.codeAssist:
-                self.__unsetAutoCompletionHook(editor)
-            if editor.callTipHook() == self.codeAssistCallTip:
-                self.__unsetCalltipsHook(editor)
+            self.__editorClosed(editor)
     
     def __editorOpened(self, editor):
         """
@@ -383,12 +375,9 @@
         """
         lang = self.__determineLanguage()
         
-        if editor.getLanguage() in lang and self.__projectIsOpen:
-            self.__connectEditorSignals(editor)
-            if self.getPreferences("CodeAssistEnabled"):
-                self.__setAutoCompletionHook(editor)
-            if self.getPreferences("CodeAssistCalltipsEnabled"):
-                self.__setCalltipsHook(editor)
+        if self.__projectIsOpen:
+            if editor.getLanguage() in lang:
+                self.__connectEditor(editor)
             
             editor.languageChanged.connect(self.__editorLanguageChanged)
             self.__editors.append(editor)
@@ -401,12 +390,8 @@
         """
         if editor in self.__editors:
             editor.languageChanged.disconnect(self.__editorLanguageChanged)
-            self.__disconnectEditorSignals(editor)
+            self.__disconnectEditor(editor)
             self.__editors.remove(editor)
-            if editor.autoCompletionHook() == self.codeAssist:
-                self.__unsetAutoCompletionHook(editor)
-            if editor.callTipHook() == self.codeAssistCallTip:
-                self.__unsetCalltipsHook(editor)
     
     def __editorLanguageChanged(self, language):
         """
@@ -418,35 +403,41 @@
         lang = self.__determineLanguage()
         
         if language in lang and self.__projectIsOpen:
-            self.__connectEditorSignals(editor)
-            if self.getPreferences("CodeAssistEnabled"):
-                self.__setAutoCompletionHook(editor)
-            if self.getPreferences("CodeAssistCalltipsEnabled"):
-                self.__setCalltipsHook(editor)
+            self.__connectEditor(editor)
         else:
-            self.__disconnectEditorSignals(editor)
-            if editor.autoCompletionHook() == self.codeAssist:
-                self.__unsetAutoCompletionHook(editor)
-            if editor.callTipHook() == self.codeAssistCallTip:
-                self.__unsetCalltipsHook(editor)
+            self.__disconnectEditor(editor)
     
-    def __connectEditorSignals(self, editor):
+    def __connectEditor(self, editor):
         """
-        Private method to connect to some signals of an editor.
+        Private method to connect an editor.
         
         @param editor reference to the editor (QScintilla.Editor)
         """
         editor.editorAboutToBeSaved.connect(self.__editorAboutToBeSaved)
         editor.editorSaved.connect(self.__editorSaved)
+        
+        if self.getPreferences("CodeAssistEnabled"):
+            self.__setAutoCompletionHook(editor)
+        if self.getPreferences("CodeAssistCalltipsEnabled"):
+            self.__setCalltipsHook(editor)
     
-    def __disconnectEditorSignals(self, editor):
+    def __disconnectEditor(self, editor):
         """
-        Private method to disconnect to some signals of an editor.
+        Private method to disconnect an editor.
         
         @param editor reference to the editor (QScintilla.Editor)
         """
-        editor.editorAboutToBeSaved.disconnect(self.__editorAboutToBeSaved)
-        editor.editorSaved.disconnect(self.__editorSaved)
+        try:
+            editor.editorAboutToBeSaved.disconnect(self.__editorAboutToBeSaved)
+            editor.editorSaved.disconnect(self.__editorSaved)
+        except TypeError:
+            # just ignore it
+            pass
+        
+        if editor.autoCompletionHook() == self.codeAssist:
+            self.__unsetAutoCompletionHook(editor)
+        if editor.callTipHook() == self.codeAssistCallTip:
+            self.__unsetCalltipsHook(editor)
     
     def __completionListSelected(self, id, txt):
         """
@@ -557,12 +548,17 @@
         """
         import rope.base.libutils
         
-        if filename == self.__savedEditorName and self.__oldEditorText:
-            rope.base.libutils.report_change(self.__object.getProject(), 
-                self.__savedEditorName, self.__oldEditorText)
-        elif self.__savedEditorName == "":
-            rope.base.libutils.report_change(self.__object.getProject(), 
-                filename, "")
+        try:
+            if filename == self.__savedEditorName and self.__oldEditorText:
+                rope.base.libutils.report_change(self.__object.getProject(), 
+                    self.__savedEditorName, self.__oldEditorText)
+            elif self.__savedEditorName == "":
+                rope.base.libutils.report_change(self.__object.getProject(), 
+                    filename, "")
+        except RuntimeError:
+            # this could come from trying to do PyQt4/PyQt5 mixed stuff
+            # simply ignore it
+            pass
     
     def __setCalltipsHook(self, editor):
         """

eric ide

mercurial