PluginRefactoringRope.py

changeset 293
dd1c7ed6d880
parent 287
09afe26b734c
child 294
78e4a6823a98
equal deleted inserted replaced
292:3ead66c44f3f 293:dd1c7ed6d880
21 # Start-Of-Header 21 # Start-Of-Header
22 name = "Refactoring Rope Plugin" 22 name = "Refactoring Rope Plugin"
23 author = "Detlev Offenbach <detlev@die-offenbachs.de>" 23 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
24 autoactivate = True 24 autoactivate = True
25 deactivateable = True 25 deactivateable = True
26 version = "6.6.1" 26 version = "6.7.0"
27 className = "RefactoringRopePlugin" 27 className = "RefactoringRopePlugin"
28 packageName = "RefactoringRope" 28 packageName = "RefactoringRope"
29 internalPackages = "rope" 29 internalPackages = "rope"
30 shortDescription = "Refactoring using the Rope library." 30 shortDescription = "Refactoring using the Rope library."
31 longDescription = """This plug-in implements refactoring functionality""" \ 31 longDescription = """This plug-in implements refactoring functionality""" \
272 @param value the value to be set 272 @param value the value to be set
273 """ 273 """
274 Preferences.Prefs.settings.setValue( 274 Preferences.Prefs.settings.setValue(
275 self.PreferencesKey + "/" + key, value) 275 self.PreferencesKey + "/" + key, value)
276 276
277 if key in ["CodeAssistEnabled", "CodeAssistCalltipsEnabled", 277 ## if key in ["CodeAssistEnabled", "CodeAssistCalltipsEnabled",
278 "MouseClickEnabled"]: 278 ## "MouseClickEnabled"]:
279 if value: 279 ## if value:
280 if e5App().getObject("Project").isOpen(): 280 ## for editor in e5App().getObject("ViewManager")\
281 for editor in e5App().getObject("ViewManager")\ 281 ## .getOpenEditors():
282 .getOpenEditors(): 282 ## if editor not in self.__editors:
283 if editor not in self.__editors: 283 ## self.__editorOpened(editor)
284 self.__editorOpened(editor) 284 ## else:
285 else: 285 ## for editor in self.__editors[:]:
286 for editor in self.__editors[:]: 286 ## self.__editorClosed(editor)
287 self.__editorClosed(editor) 287 if key in ["MouseClickGotoModifiers", "MouseClickGotoButton"]:
288 elif key in ["MouseClickGotoModifiers", "MouseClickGotoButton"]:
289 for editor in self.__editors: 288 for editor in self.__editors:
290 self.__refactoringServer.disconnectEditor(editor) 289 self.__disconnectMouseClickHandler(editor)
291 self.__refactoringServer.connectEditor(editor) 290 self.__connectMouseClickHandler(editor)
291 ## for editor in self.__editors:
292 ## # TODO: change these once mouse click has been moved to code assist
293 ## self.__refactoringServer.disconnectEditor(editor)
294 ## self.__refactoringServer.connectEditor(editor)
295
296 def __determineLanguage(self):
297 """
298 Private method to determine the valid language strings.
299
300 @return list of valid language strings
301 @rtype list of str
302 """
303 return ["Python", "Python2", "Python3", "Pygments|Python",
304 "Pygments|Python 3"]
292 305
293 def __editorOpened(self, editor): 306 def __editorOpened(self, editor):
294 """ 307 """
295 Private slot called, when a new editor was opened. 308 Private slot called, when a new editor was opened.
296 309
297 @param editor reference to the new editor 310 @param editor reference to the new editor
298 @type QScintilla.Editor.Editor 311 @type QScintilla.Editor.Editor
299 """ 312 """
300 self.__connectEditor(editor) 313 languages = self.__determineLanguage()
314
315 if editor.getLanguage() in languages:
316 self.__connectEditor(editor)
301 317
302 editor.languageChanged.connect(self.__editorLanguageChanged) 318 editor.languageChanged.connect(self.__editorLanguageChanged)
303 self.__editors.append(editor) 319 self.__editors.append(editor)
304 320
305 def __editorClosed(self, editor): 321 def __editorClosed(self, editor):
320 336
321 @param language programming language of the editor 337 @param language programming language of the editor
322 @type str 338 @type str
323 """ 339 """
324 editor = self.sender() 340 editor = self.sender()
341 languages = self.__determineLanguage()
325 342
326 self.__disconnectEditor(editor) 343 self.__disconnectEditor(editor)
327 self.__connectEditor(editor) 344 if language in languages:
345 self.__connectEditor(editor)
328 346
329 def __connectEditor(self, editor): 347 def __connectEditor(self, editor):
330 """ 348 """
331 Private method to connect an editor. 349 Private method to connect an editor.
332 350
334 @type QScintilla.Editor.Editor 352 @type QScintilla.Editor.Editor
335 """ 353 """
336 editor.editorAboutToBeSaved.connect(self.__editorAboutToBeSaved) 354 editor.editorAboutToBeSaved.connect(self.__editorAboutToBeSaved)
337 editor.editorSaved.connect(self.__editorSaved) 355 editor.editorSaved.connect(self.__editorSaved)
338 356
339 self.__codeAssistServer.connectEditor(editor) 357 self.__setAutoCompletionHook(editor)
340 self.__refactoringServer.connectEditor(editor) 358 self.__setCalltipsHook(editor)
359
360 self.__connectMouseClickHandler(editor)
361 ## self.__codeAssistServer.connectEditor(editor)
362 ## # TODO: delete these once mouse click has been moved to code assist
363 ## if e5App().getObject("Project").isOpen():
364 ## self.__refactoringServer.connectEditor(editor)
341 365
342 def __disconnectEditor(self, editor): 366 def __disconnectEditor(self, editor):
343 """ 367 """
344 Private method to disconnect an editor. 368 Private method to disconnect an editor.
345 369
351 editor.editorSaved.disconnect(self.__editorSaved) 375 editor.editorSaved.disconnect(self.__editorSaved)
352 except TypeError: 376 except TypeError:
353 # just ignore it 377 # just ignore it
354 pass 378 pass
355 379
356 self.__codeAssistServer.disconnectEditor(editor) 380 self.__unsetAutoCompletionHook(editor)
357 self.__refactoringServer.disconnectEditor(editor) 381 self.__unsetCalltipsHook(editor)
382
383 self.__disconnectMouseClickHandler(editor)
384 ## self.__codeAssistServer.disconnectEditor(editor)
385 ## # TODO: delete these once mouse click has been moved to code assist
386 ## self.__refactoringServer.disconnectEditor(editor)
387
388 def __connectMouseClickHandler(self, editor):
389 """
390 Private method to connect the mouse click handler to an editor.
391
392 @param editor reference to the editor
393 @type QScintilla.Editor
394 """
395 if self.getPreferences("MouseClickGotoButton"):
396 editor.setMouseClickHandler(
397 "rope",
398 self.getPreferences("MouseClickGotoModifiers"),
399 self.getPreferences("MouseClickGotoButton"),
400 self.__codeAssistServer.gotoDefinition
401 )
402
403 def __disconnectMouseClickHandler(self, editor):
404 """
405 Private method to disconnect the mouse click handler from an editor.
406
407 @param editor reference to the editor
408 @type QScintilla.Editor
409 """
410 editor.removeMouseClickHandlers("rope")
411
412 def __setAutoCompletionHook(self, editor):
413 """
414 Private method to set the autocompletion hook.
415
416 @param editor reference to the editor
417 @type QScintilla.Editor
418 """
419 try:
420 editor.addCompletionListHook(
421 "rope", self.__codeAssistServer.requestCompletions, True)
422 self.__codeAssistServer.setAsyncCompletions(True)
423 except TypeError:
424 # interface before 17.11
425 editor.addCompletionListHook(
426 "rope", self.__codeAssistServer.getCompletions)
427 self.__codeAssistServer.setAsyncCompletions(False)
428
429 def __unsetAutoCompletionHook(self, editor):
430 """
431 Private method to unset the autocompletion hook.
432
433 @param editor reference to the editor
434 @type QScintilla.Editor
435 """
436 editor.removeCompletionListHook("rope")
437
438 def __setCalltipsHook(self, editor):
439 """
440 Private method to set the calltip hook.
441
442 @param editor reference to the editor
443 @type QScintilla.Editor
444 """
445 editor.addCallTipHook("rope", self.__codeAssistServer.getCallTips)
446
447 def __unsetCalltipsHook(self, editor):
448 """
449 Private method to unset the calltip hook.
450
451 @param editor reference to the editor
452 @type QScintilla.Editor
453 """
454 editor.removeCallTipHook("rope")
358 455
359 def __editorAboutToBeSaved(self, filename): 456 def __editorAboutToBeSaved(self, filename):
360 """ 457 """
361 Private slot to get the old contents of the named file. 458 Private slot to get the old contents of the named file.
362 459

eric ide

mercurial