diff -r 2bfe9e3fad8d -r 5098ad8960ed PluginRefactoringRope.py --- 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): """