RefactoringRope/CodeAssistServer.py

Sun, 05 Nov 2017 17:23:30 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 05 Nov 2017 17:23:30 +0100
changeset 232
65d7d745543d
parent 223
d30d3b0d1df5
child 245
75a35a927952
permissions
-rw-r--r--

Extended the code info provider to return the object type as well.

100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
147
3f8a995f6e49 Updated copyright for 2017.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 144
diff changeset
3 # Copyright (c) 2008 - 2017 Detlev Offenbach <detlev@die-offenbachs.de>
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the autocompletion interface to rope.
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
101
5098ad8960ed Fixed issues connecting/disconnecting editors.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 100
diff changeset
10 from __future__ import unicode_literals
5098ad8960ed Fixed issues connecting/disconnecting editors.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 100
diff changeset
11
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import os
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
13 import sys
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
15 from PyQt5.QtCore import pyqtSlot, QCoreApplication, QTimer
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
16
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
17 from E5Gui.E5Application import e5App
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
18 from E5Gui import E5MessageBox
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
19
202
a111134b5dc7 Started correcting the source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
20 from .JsonServer import JsonServer
193
47d95438c4d8 Started to change the CodeAssist class to support distributed operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
21
104
f6049d39f83d Made the code completion work in case no project is open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
22 import Globals
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
23 import Preferences
104
f6049d39f83d Made the code completion work in case no project is open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
24
118
d242ba11a04c Fixed a few code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
25
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
26 class CodeAssistServer(JsonServer):
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 """
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 Class implementing the autocompletion interface to rope.
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
118
d242ba11a04c Fixed a few code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
30 def __init__(self, plugin, parent=None):
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 Constructor
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @param plugin reference to the plugin object
193
47d95438c4d8 Started to change the CodeAssist class to support distributed operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
35 @type RefactoringRopePlugin
47d95438c4d8 Started to change the CodeAssist class to support distributed operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
36 @param parent parent
47d95438c4d8 Started to change the CodeAssist class to support distributed operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
37 @type QObject
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 """
197
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
39 super(CodeAssistServer, self).__init__(
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
40 "CodeAssistServer", multiplex=True, parent=parent)
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 self.__plugin = plugin
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
43 self.__ui = parent
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
44 self.__vm = e5App().getObject("ViewManager")
104
f6049d39f83d Made the code completion work in case no project is open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
45
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
46 self.__editorLanguageMapping = {}
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
47 self.__clientConfigs = {}
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
48 self.__editors = {}
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
49
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
50 self.__asyncCompletions = False
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
51
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
52 self.__documentationViewer = None
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
53
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
54 # attributes to store the resuls of the client side
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
55 self.__completions = None
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
56 self.__calltips = None
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
57
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
58 self.__methodMapping = {
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
59 "Config": self.__setConfig,
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
60 "CompletionsResult": self.__processCompletionsResult,
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
61 "CallTipsResult": self.__processCallTipsResult,
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
62 "DocumentationResult": self.__processDocumentationResult,
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
63
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
64 "ClientException": self.__processClientException,
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
65 }
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
66
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
67 self.__typeMapping = {
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
68 "staticmethod": self.tr("static method"),
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
69 "classmethod": self.tr("class method"),
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
70 "method": self.tr("method"),
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
71 "function": self.tr("function"),
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
72 "class": self.tr("class"),
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
73 "module": self.tr("module"),
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
74 "package": self.tr("package"),
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
75 "object": self.tr("object"),
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
76 "<unknown>": self.tr("not known"),
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
77 }
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
78
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
79 # Python 2
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
80 self.__ensureActive("Python2")
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
81
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
82 # Python 3
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
83 self.__ensureActive("Python3")
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
85 def __updateEditorLanguageMapping(self):
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
86 """
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
87 Private method to update the editor language to connection mapping.
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
88 """
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
89 self.__editorLanguageMapping = {}
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
90 for name in self.connectionNames():
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
91 if name == "Python2":
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
92 self.__editorLanguageMapping.update({
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
93 "Python": "Python2",
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
94 "Python2": "Python2",
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
95 "Pygments|Python": "Python2",
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
96 })
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
97 elif name == "Python3":
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
98 self.__editorLanguageMapping.update({
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
99 "Python3": "Python3",
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
100 "Pygments|Python 3": "Python3",
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
101 })
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
102
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
103 def __getConfigs(self):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
104 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
105 Private method to get the configurations of all connected clients.
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
106 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
107 for idString in self.connectionNames():
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
108 self.sendJson("getConfig", {}, idString=idString)
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
109
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
110 def __setConfig(self, params):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
111 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
112 Private method to set the rope client configuration data.
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
113
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
114 @param params dictionary containing the configuration data
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
115 @type dict
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
116 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
117 idString = params["Id"]
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
118 ropeFolder = params["RopeFolderName"]
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
119
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
120 self.__clientConfigs[idString] = ropeFolder
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
121
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
122 def __ropeConfigFile(self, idString):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
123 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
124 Private method to get the name of the rope configuration file.
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
125
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
126 @param idString id for which to get the configuration file
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
127 @type str
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
128 @return name of the rope configuration file
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
129 @rtype str
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
130 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
131 configfile = None
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
132 if idString in self.__clientConfigs:
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
133 ropedir = self.__clientConfigs[idString]
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
134 if ropedir:
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
135 configfile = os.path.join(ropedir, "config.py")
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
136 if not os.path.exists(configfile):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
137 configfile = None
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
138 return configfile
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
139
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
140 def __configChanged(self, idString):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
141 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
142 Private slot called, when the rope config file has changed.
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
143
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
144 @param idString id for which to get the configuration file
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
145 @type str
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
146 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
147 self.sendJson("configChanged", {}, idString=idString)
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
148
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
149 def editConfig(self, idString):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
150 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
151 Public slot to open the rope configuration file in an editor.
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
152
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
153 @param idString id for which to get the configuration file
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
154 @type str
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
155 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
156 configfile = self.__ropeConfigFile(idString)
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
157 if configfile:
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
158 if os.path.exists(configfile):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
159 from QScintilla.MiniEditor import MiniEditor
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
160 editor = MiniEditor(configfile)
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
161 editor.show()
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
162 editor.editorSaved.connect(
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
163 lambda: self.__configChanged(idString))
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
164 self.__editors[idString] = editor
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
165 return
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
166 else:
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
167 E5MessageBox.critical(
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
168 self.__ui,
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
169 self.tr("Configure Rope"),
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
170 self.tr("""The Rope configuration file '{0}' does"""
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
171 """ not exist.""").format(configfile))
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
172
197
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
173 def isSupportedLanguage(self, language):
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
174 """
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
175 Public method to check, if the given language is supported.
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
176
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
177 @param language editor programming language to check
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
178 @type str
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
179 @return flag indicating the support status
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
180 @rtype bool
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
181 """
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
182 return language in self.__editorLanguageMapping
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
183
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
184 def getCompletions(self, editor, context):
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 """
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 Public method to calculate the possible completions.
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
188 Note: This is the synchronous variant for eric6 before 17.11.
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
189
104
f6049d39f83d Made the code completion work in case no project is open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
190 @param editor reference to the editor object, that called this method
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
191 @type QScintilla.Editor.Editor
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
192 @param context flag indicating to autocomplete a context
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
193 @type bool
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
194 @return list of possible completions
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
195 @rtype list of str
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 """
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
197 # reset the completions buffer
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
198 self.__completions = None
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
199
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
200 language = editor.getLanguage()
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
201 if language not in self.__editorLanguageMapping:
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
202 return []
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
203
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
204 self.requestCompletions(editor, context, "")
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
205
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
206 # emulate the synchronous behaviour
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
207 timer = QTimer()
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
208 timer.setSingleShot(True)
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
209 timer.start(5000) # 5s timeout
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
210 while self.__completions is None and timer.isActive():
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
211 QCoreApplication.processEvents()
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
213 return [] if self.__completions is None else self.__completions
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
214
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
215 def requestCompletions(self, editor, context, acText):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
216 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
217 Public method to request a list of possible completions.
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
218
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
219 Note: This is part of the asynchronous variant for eric6 17.11 and
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
220 later.
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
221
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
222 @param editor reference to the editor object, that called this method
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
223 @type QScintilla.Editor.Editor
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
224 @param context flag indicating to autocomplete a context
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
225 @type bool
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
226 @param acText text to be completed
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
227 @type str
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
228 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
229 language = editor.getLanguage()
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
230 if language not in self.__editorLanguageMapping:
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
231 return
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
232 idString = self.__editorLanguageMapping[language]
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
233
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
234 filename = editor.getFileName()
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
235 line, index = editor.getCursorPosition()
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
236 source = editor.text()
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
237 offset = len("".join(source.splitlines(True)[:line])) + index
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
238 maxfixes = self.__plugin.getPreferences("MaxFixes")
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
239
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
240 self.__ensureActive(idString)
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
241 self.sendJson("getCompletions", {
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
242 "FileName": filename,
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
243 "Source": source,
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
244 "Offset": offset,
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
245 "MaxFixes": maxfixes,
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
246 "CompletionText": acText,
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
247 "SysPath": sys.path,
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
248 }, idString=idString)
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
249
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
250 def __processCompletionsResult(self, result):
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
251 """
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
252 Private method to process the completions sent by the client.
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
253
202
a111134b5dc7 Started correcting the source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
254 @param result dictionary containing the result sent by the client
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
255 @type dict
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
256 """
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
257 if self.__asyncCompletions:
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
258 # asynchronous variant for eric6 17.11 and later
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
259 if "Error" not in result:
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
260 editor = self.__vm.getOpenEditor(result["FileName"])
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
261 if editor is not None:
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
262 editor.completionsListReady(result["Completions"],
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
263 result["CompletionText"])
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
264 else:
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
265 # synchronous variant for eric6 before 17.11
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
266 if "Error" in result:
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
267 self.__completions = []
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
268 else:
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
269 self.__completions = result["Completions"]
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
271 def getCallTips(self, editor, pos, commas):
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 """
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 Public method to calculate calltips.
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
275 @param editor reference to the editor object, that called this method
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
276 @type QScintilla.Editor.Editor
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
277 @param pos position in the text for the calltip
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
278 @type int
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
279 @param commas minimum number of commas contained in the calltip
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
280 @type int
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
281 @return list of possible calltips
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
282 @rtype list of str
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 """
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
284 # reset the calltips buffer
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
285 self.__calltips = None
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
286
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
287 language = editor.getLanguage()
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
288 if language not in self.__editorLanguageMapping:
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
289 return []
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
290 idString = self.__editorLanguageMapping[language]
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
291
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
292 filename = editor.getFileName()
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
293 source = editor.text()
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
294 line, index = editor.lineIndexFromPosition(pos)
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
295 offset = len("".join(source.splitlines(True)[:line])) + index
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
296 maxfixes = self.__plugin.getPreferences("CalltipsMaxFixes")
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
297
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
298 self.__ensureActive(idString)
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
299 self.sendJson("getCallTips", {
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
300 "FileName": filename,
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
301 "Source": source,
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
302 "Offset": offset,
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
303 "MaxFixes": maxfixes,
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
304 "SysPath": sys.path,
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
305 }, idString=idString)
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
306
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
307 # emulate the synchronous behaviour
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
308 timer = QTimer()
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
309 timer.setSingleShot(True)
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
310 timer.start(5000) # 5s timeout
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
311 while self.__calltips is None and timer.isActive():
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
312 QCoreApplication.processEvents()
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
313
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
314 return [] if self.__calltips is None else self.__calltips
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
315
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
316 def __processCallTipsResult(self, result):
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
317 """
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
318 Private method to process the calltips sent by the client.
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
319
202
a111134b5dc7 Started correcting the source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
320 @param result dictionary containing the result sent by the client
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
321 @type dict
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
322 """
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
323 if "Error" in result:
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
324 self.__calltips = []
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
325 else:
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
326 self.__calltips = result["CallTips"]
104
f6049d39f83d Made the code completion work in case no project is open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
327
f6049d39f83d Made the code completion work in case no project is open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
328 def reportChanged(self, filename, oldSource):
f6049d39f83d Made the code completion work in case no project is open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
329 """
f6049d39f83d Made the code completion work in case no project is open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
330 Public slot to report some changed sources.
f6049d39f83d Made the code completion work in case no project is open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
331
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
332 @param filename file name of the changed source
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
333 @type str
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
334 @param oldSource source code before the change
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
335 @type str
104
f6049d39f83d Made the code completion work in case no project is open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
336 """
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
337 editor = self.__vm.getOpenEditor(filename)
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
338 if editor is not None:
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
339 language = editor.getLanguage()
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
340 if language in self.__editorLanguageMapping:
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
341 idString = self.__editorLanguageMapping[language]
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
342
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
343 self.__ensureActive(idString)
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
344 self.sendJson("reportChanged", {
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
345 "FileName": filename,
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
346 "OldSource": oldSource,
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
347 }, idString=idString)
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
348
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
349 def requestCodeDocumentation(self, editor):
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
350 """
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
351 Public method to request source code documentation for the given
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
352 editor.
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
353
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
354 @param editor reference to the editor to get source code documentation
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
355 for
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
356 @type QScintilla.Editor.Editor
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
357 """
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
358 language = editor.getLanguage()
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
359 if language not in self.__editorLanguageMapping:
223
d30d3b0d1df5 Adjusted to the latest eric6 development state.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 221
diff changeset
360 if Preferences.getDocuViewer("ShowInfoAsRichText"):
d30d3b0d1df5 Adjusted to the latest eric6 development state.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 221
diff changeset
361 warning = self.tr("Language <b>{0}</b> is not supported.")\
d30d3b0d1df5 Adjusted to the latest eric6 development state.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 221
diff changeset
362 .format(language)
d30d3b0d1df5 Adjusted to the latest eric6 development state.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 221
diff changeset
363 else:
d30d3b0d1df5 Adjusted to the latest eric6 development state.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 221
diff changeset
364 warning = self.tr("Language '{0}' is not supported.")\
d30d3b0d1df5 Adjusted to the latest eric6 development state.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 221
diff changeset
365 .format(language)
220
763ef93fabee Fixed an issue in the CodeAssistServer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 219
diff changeset
366 self.__documentationViewer.documentationReady(
223
d30d3b0d1df5 Adjusted to the latest eric6 development state.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 221
diff changeset
367 warning, isWarning=True)
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
368 return
223
d30d3b0d1df5 Adjusted to the latest eric6 development state.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 221
diff changeset
369
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
370 idString = self.__editorLanguageMapping[language]
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
371
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
372 filename = editor.getFileName()
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
373 source = editor.text()
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
374 line, index = editor.getCursorPosition()
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
375 offset = len("".join(source.splitlines(True)[:line])) + index
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
376 maxfixes = self.__plugin.getPreferences("CalltipsMaxFixes")
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
377
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
378 offset = editor.positionBefore(offset)
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
379 if editor.charAt(offset) == "(":
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
380 offset = editor.positionBefore(offset)
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
381
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
382 self.__ensureActive(idString)
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
383 self.sendJson("getDocumentation", {
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
384 "FileName": filename,
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
385 "Source": source,
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
386 "Offset": offset,
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
387 "MaxFixes": maxfixes,
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
388 "SysPath": sys.path,
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
389 }, idString=idString)
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
390
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
391 def __processDocumentationResult(self, result):
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
392 """
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
393 Private method to process the documentation sent by the client.
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
394
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
395 @param result dictionary containing the result sent by the client
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
396 @type dict with keys 'name', 'argspec', 'note', 'docstring', 'typ'
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
397 """
219
c85d02ca2fa9 Fixed an issue in the CodeAssistServer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
398 docu = None
c85d02ca2fa9 Fixed an issue in the CodeAssistServer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
399
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
400 if "Error" not in result:
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
401 documentationDict = result["DocumentationDict"]
219
c85d02ca2fa9 Fixed an issue in the CodeAssistServer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
402 if documentationDict:
c85d02ca2fa9 Fixed an issue in the CodeAssistServer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
403 if "module" in documentationDict:
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
404 if documentationDict["module"]:
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
405 if Preferences.getDocuViewer("ShowInfoAsRichText"):
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
406 documentationDict["note"] = \
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
407 self.tr("Present in <i>{0}</i> module")\
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
408 .format(documentationDict["module"])
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
409 else:
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
410 documentationDict["note"] = \
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
411 self.tr("Present in '{0}' module")\
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
412 .format(documentationDict["module"])
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
413 del documentationDict["module"]
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
414
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
415 if "typ" in documentationDict:
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
416 if documentationDict["typ"] not in self.__typeMapping:
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
417 del documentationDict["typ"]
220
763ef93fabee Fixed an issue in the CodeAssistServer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 219
diff changeset
418 else:
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
419 documentationDict["typ"] = \
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
420 self.__typeMapping[documentationDict["typ"]]
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
421
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
422 if "note" not in documentationDict:
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
423 documentationDict["note"] = ""
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
424
219
c85d02ca2fa9 Fixed an issue in the CodeAssistServer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
425 docu = documentationDict
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
426
223
d30d3b0d1df5 Adjusted to the latest eric6 development state.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 221
diff changeset
427 if docu is None:
d30d3b0d1df5 Adjusted to the latest eric6 development state.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 221
diff changeset
428 msg = self.tr("No documentation available.")
d30d3b0d1df5 Adjusted to the latest eric6 development state.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 221
diff changeset
429 self.__documentationViewer.documentationReady(
d30d3b0d1df5 Adjusted to the latest eric6 development state.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 221
diff changeset
430 msg, isDocWarning=True)
d30d3b0d1df5 Adjusted to the latest eric6 development state.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 221
diff changeset
431 else:
d30d3b0d1df5 Adjusted to the latest eric6 development state.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 221
diff changeset
432 self.__documentationViewer.documentationReady(docu)
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
433
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
434 #######################################################################
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
435 ## Methods below handle the network connection
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
436 #######################################################################
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
437
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
438 def handleCall(self, method, params):
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
439 """
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
440 Public method to handle a method call from the client.
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
441
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
442 @param method requested method name
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
443 @type str
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
444 @param params dictionary with method specific parameters
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
445 @type dict
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
446 """
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
447 self.__methodMapping[method](params)
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
448
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
449 def __processClientException(self, params):
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
450 """
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
451 Private method to handle exceptions of the refactoring client.
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
452
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
453 @param params dictionary containing the exception data
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
454 @type dict
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
455 """
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
456 if params["ExceptionType"] == "ProtocolError":
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
457 self.__ui.appendToStderr(
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
458 self.tr("""The data received from the code assist"""
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
459 """ server could not be decoded. Please report"""
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
460 """ this issue with the received data to the"""
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
461 """ eric bugs email address.\n"""
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
462 """Error: {0}\n"""
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
463 """Data: {1}\n""").format(
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
464 params["ExceptionValue"],
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
465 params["ProtocolData"]))
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
466 else:
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
467 self.__ui.appendToStderr(
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
468 self.tr("An exception happened in the code assist"
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
469 " client. Please report it to the eric bugs"
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
470 " email address.\n"
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
471 "Exception: {0}\n"
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
472 "Value: {1}\n"
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
473 "Traceback: {2}\n").format(
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
474 params["ExceptionType"],
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
475 params["ExceptionValue"],
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
476 params["Traceback"]))
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
477
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
478 def __startCodeAssistClient(self, interpreter, idString):
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
479 """
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
480 Private method to start the code assist client with the given
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
481 interpreter.
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
482
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
483 @param interpreter interpreter to be used for the code assist client
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
484 @type str
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
485 @param idString id of the client to be started
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
486 @type str
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
487 @return flag indicating a successful start of the client
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
488 @rtype bool
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
489 """
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
490 ok = False
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
491
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
492 if interpreter:
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
493 configDir = os.path.join(Globals.getConfigDir(), "rope", idString)
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
494 if not os.path.exists(configDir):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
495 os.makedirs(configDir)
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
496
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
497 client = os.path.join(os.path.dirname(__file__),
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
498 "CodeAssistClient.py")
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
499 ok = self.startClient(interpreter, client, [configDir],
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
500 idString=idString)
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
501 if not ok:
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
502 self.__ui.appendToStderr(self.tr(
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
503 "'{0}' is not supported because the configured interpreter"
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
504 " could not be started.\n"
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
505 ).format(idString))
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
506 else:
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
507 self.__ui.appendToStderr(self.tr(
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
508 "'{0}' is not supported because no suitable interpreter is"
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
509 " configured.\n"
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
510 ).format(idString))
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
511
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
512 return ok
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
513
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
514 def __ensureActive(self, idString):
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
515 """
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
516 Private method to ensure, that the requested client is active.
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
517
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
518 A non-active client will be started.
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
519
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
520 @param idString id of the client to be checked
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
521 @type str
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
522 @return flag indicating an active client
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
523 @rtype bool
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
524 """
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
525 ok = idString in self.connectionNames()
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
526 if not ok:
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
527 # client is not running
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
528 if idString == "Python2":
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
529 # Python 2
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
530 interpreter = Preferences.getDebugger("PythonInterpreter")
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
531 ok = self.__startCodeAssistClient(interpreter, "Python2")
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
532 elif idString == "Python3":
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
533 # Python 3
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
534 interpreter = Preferences.getDebugger("Python3Interpreter")
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
535 ok = self.__startCodeAssistClient(interpreter, "Python3")
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
536 return ok
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
537
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
538 @pyqtSlot()
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
539 def handleNewConnection(self):
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
540 """
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
541 Public slot for new incoming connections from a client.
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
542 """
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
543 super(CodeAssistServer, self).handleNewConnection()
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
544
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
545 self.__updateEditorLanguageMapping()
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
546
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
547 self.__getConfigs()
197
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
548
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
549 def activate(self):
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
550 """
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
551 Public method to activate the code assist server.
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
552 """
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
553 try:
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
554 self.__documentationViewer = self.__ui.documentationViewer()
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
555 self.__documentationViewer.registerProvider(
221
b3592afc8718 Adjusted CodeAssistServer to the extended CodeDocumentationViewer interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 220
diff changeset
556 "rope", self.tr("Rope"), self.requestCodeDocumentation,
b3592afc8718 Adjusted CodeAssistServer to the extended CodeDocumentationViewer interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 220
diff changeset
557 self.isSupportedLanguage)
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
558 except AttributeError:
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
559 # eric6 before 17.11 doesn't have this
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
560 pass
197
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
561
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
562 def deactivate(self):
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
563 """
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
564 Public method to deactivate the code assist server.
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
565 """
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
566 """
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
567 Public method to shut down the code assist server.
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
568 """
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
569 if self.__documentationViewer is not None:
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
570 self.__documentationViewer.unregisterProvider("rope")
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
571
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
572 for idString in self.connectionNames():
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
573 self.sendJson("closeProject", {}, flush=True, idString=idString)
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
574
197
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
575 self.stopAllClients()
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
576
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
577 #######################################################################
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
578 ## Methods below handle setting/unsetting the hook methods
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
579 #######################################################################
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
580
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
581 def connectEditor(self, editor):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
582 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
583 Public method to connect an editor.
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
584
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
585 @param editor reference to the editor
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
586 @type QScintilla.Editor.Editor
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
587 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
588 if self.isSupportedLanguage(editor.getLanguage()):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
589 if self.__plugin.getPreferences("CodeAssistEnabled") and \
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
590 editor.getCompletionListHook("rope") is None:
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
591 self.__setAutoCompletionHook(editor)
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
592 if self.__plugin.getPreferences("CodeAssistCalltipsEnabled") and \
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
593 editor.getCallTipHook("rope") is None:
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
594 self.__setCalltipsHook(editor)
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
595 else:
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
596 self.disconnectEditor(editor)
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
597
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
598 def disconnectEditor(self, editor):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
599 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
600 Public method to disconnect an editor.
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
601
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
602 @param editor reference to the editor
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
603 @type QScintilla.Editor.Editor
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
604 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
605 if editor.getCompletionListHook("rope"):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
606 self.__unsetAutoCompletionHook(editor)
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
607 if editor.getCallTipHook("rope"):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
608 self.__unsetCalltipsHook(editor)
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
609
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
610 def __setAutoCompletionHook(self, editor):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
611 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
612 Private method to set the auto-completion hook.
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
613
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
614 @param editor reference to the editor
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
615 @type QScintilla.Editor.Editor
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
616 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
617 try:
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
618 editor.addCompletionListHook("rope", self.requestCompletions,
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
619 async=True)
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
620 self.__asyncCompletions = True
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
621 except TypeError:
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
622 # backward compatibility for eric6 before 17.11
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
623 editor.addCompletionListHook("rope", self.getCompletions)
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
624 self.__asyncCompletions = False
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
625
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
626 def __unsetAutoCompletionHook(self, editor):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
627 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
628 Private method to unset the auto-completion hook.
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
629
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
630 @param editor reference to the editor
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
631 @type QScintilla.Editor.Editor
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
632 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
633 editor.removeCompletionListHook("rope")
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
634
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
635 def __setCalltipsHook(self, editor):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
636 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
637 Private method to set the calltip hook.
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
638
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
639 @param editor reference to the editor
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
640 @type QScintilla.Editor.Editor
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
641 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
642 editor.addCallTipHook("rope", self.getCallTips)
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
643
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
644 def __unsetCalltipsHook(self, editor):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
645 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
646 Private method to unset the calltip hook.
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
647
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
648 @param editor reference to the editor
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
649 @type QScintilla.Editor.Editor
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
650 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
651 editor.removeCallTipHook("rope")

eric ide

mercurial