RefactoringRope/CodeAssistClient.py

Tue, 11 May 2021 19:31:36 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 11 May 2021 19:31:36 +0200
changeset 362
792c2651fbd7
parent 360
2b35968f3d02
child 365
f740b50380df
permissions
-rw-r--r--

Moved the sys.path manipulation to the beginning of the ...Client.py files.

196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
346
877cac2e8d94 Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 335
diff changeset
3 # Copyright (c) 2017 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the code assist client interface to rope.
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
303
313fbf9c86d9 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 302
diff changeset
10 import sys
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
11 import contextlib
303
313fbf9c86d9 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 302
diff changeset
12
362
792c2651fbd7 Moved the sys.path manipulation to the beginning of the ...Client.py files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
13 modulePath = sys.argv[-1] # it is always the last parameter
792c2651fbd7 Moved the sys.path manipulation to the beginning of the ...Client.py files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
14 sys.path.insert(1, modulePath)
792c2651fbd7 Moved the sys.path manipulation to the beginning of the ...Client.py files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
15
360
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
16 try:
362
792c2651fbd7 Moved the sys.path manipulation to the beginning of the ...Client.py files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
17 import rope.base.project
792c2651fbd7 Moved the sys.path manipulation to the beginning of the ...Client.py files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
18 import rope.base.libutils
792c2651fbd7 Moved the sys.path manipulation to the beginning of the ...Client.py files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
19 import rope.contrib.codeassist
792c2651fbd7 Moved the sys.path manipulation to the beginning of the ...Client.py files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
20 from rope.base.exceptions import BadIdentifierError, ModuleSyntaxError
792c2651fbd7 Moved the sys.path manipulation to the beginning of the ...Client.py files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
21 except ImportError:
792c2651fbd7 Moved the sys.path manipulation to the beginning of the ...Client.py files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
22 sys.exit(42)
792c2651fbd7 Moved the sys.path manipulation to the beginning of the ...Client.py files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
23
792c2651fbd7 Moved the sys.path manipulation to the beginning of the ...Client.py files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
24 try:
792c2651fbd7 Moved the sys.path manipulation to the beginning of the ...Client.py files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
25 from eric6.E5Network.E5JsonClient import E5JsonClient
360
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
26 except ImportError:
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
27 # TODO: delete JsonClient once ported to eric7
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
28 from JsonClient import JsonClient as E5JsonClient
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30
360
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
31 class CodeAssistClient(E5JsonClient):
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 """
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 Class implementing the code assist client interface to rope.
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 """
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
35 IdProject = "Project"
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
36
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 def __init__(self, host, port, idString, projectPath):
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 """
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 Constructor
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @param host ip address the background service is listening
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 @type str
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 @param port port of the background service
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 @type int
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 @param idString assigned client id to be sent back to the server in
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 order to identify the connection
203
c38750e1bafd Performed some code cleanup actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 201
diff changeset
47 @type str
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 @param projectPath path to the project
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 @type str
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 """
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
51 super().__init__(host, port, idString)
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 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
54 "getConfig": self.__getConfig,
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
55 "configChanged": self.__configChanged,
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
56 "closeProject": self.__closeProject,
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
57 "getCompletions": self.__getCompletions,
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
58 "getCallTips": self.__getCallTips,
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
59 "getDocumentation": self.__getDocumentation,
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
60 "gotoDefinition": self.__gotoDefinition,
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
61 "reportChanged": self.__reportChanged,
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 }
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63
360
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
64 from FileSystemCommands import RefactoringClientFileSystemCommands
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
65 self.__fsCommands = RefactoringClientFileSystemCommands(self)
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
66
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 self.__projectpath = projectPath
360
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
68 self.__project = rope.base.project.Project(
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
69 self.__projectpath, fscommands=self.__fsCommands)
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 self.__project.validate(self.__project.root)
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
71
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
72 self.__id = idString
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 def handleCall(self, method, params):
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 """
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 Public method to handle a method call from the server.
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 @param method requested method name
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 @type str
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 @param params dictionary with method specific parameters
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 @type dict
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 """
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 self.__methodMapping[method](params)
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
84
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
85 def __handleRopeError(self, err):
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
86 """
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
87 Private method to process a rope error.
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
88
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
89 @param err rope exception object
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
90 @type Exception
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
91 @return dictionary containing the error information
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
92 @rtype dict
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
93 """
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
94 ropeError = str(type(err)).split()[-1]
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
95 ropeError = ropeError[1:-2].split('.')[-1]
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
96 errorDict = {
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
97 "Error": ropeError,
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
98 "ErrorString": str(err),
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
99 }
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
100 if ropeError == 'ModuleSyntaxError':
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
101 errorDict["ErrorFile"] = err.filename
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
102 errorDict["ErrorLine"] = err.lineno
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
103
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
104 return errorDict
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
105
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
106 def __getConfig(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
107 """
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 Private method to send some configuration data to the server.
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 @param params dictionary containing the method parameters sent by
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 the server
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 @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
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 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
115 "RopeFolderName": self.__project.ropefolder.real_path,
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 "Id": self.__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
117 }
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
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 self.sendJson("Config", 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
120
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 def __configChanged(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
122 """
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 Private method to handle a change of 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
124
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 @param params dictionary containing the method parameters sent by
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 the server
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 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
128 """
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 self.__project.close()
360
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
130 self.__project = rope.base.project.Project(
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
131 self.__projectpath, fscommands=self.__fsCommands)
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
132 self.__project.validate(self.__project.root)
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
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 def __closeProject(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
135 """
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 Private slot to validate the project.
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
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 @param params dictionary containing the method parameters sent by
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 the server
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 @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
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 self.__project.close()
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
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
144 def __getCompletions(self, params):
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
145 """
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
146 Private method to calculate possible completions.
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
147
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
148 @param params dictionary containing the method parameters
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
149 @type dict
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
150 """
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
151 filename = params["FileName"]
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
152 source = params["Source"]
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
153 offset = params["Offset"]
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
154 maxfixes = params["MaxFixes"]
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
155
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
156 self.__project.prefs.set("python_path", params["SysPath"])
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
157 resource = (
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
158 rope.base.libutils.path_to_resource(self.__project, filename)
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
159 if filename else
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
160 None
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
161 )
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
162
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
163 errorDict = {}
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
164 completions = []
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
165
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
166 try:
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
167 proposals = rope.contrib.codeassist.code_assist(
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
168 self.__project, source, offset, resource, maxfixes=maxfixes)
201
e677d82706d4 Extended the auto completions pictures supported by code assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
169 for proposal in proposals:
e677d82706d4 Extended the auto completions pictures supported by code assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
170 proposalType = proposal.type
e677d82706d4 Extended the auto completions pictures supported by code assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
171 if proposal.name.startswith("__"):
e677d82706d4 Extended the auto completions pictures supported by code assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
172 proposalType = "__" + proposalType
e677d82706d4 Extended the auto completions pictures supported by code assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
173 elif proposal.name.startswith("_"):
e677d82706d4 Extended the auto completions pictures supported by code assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
174 proposalType = "_" + proposalType
291
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 251
diff changeset
175 completions.append({
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 251
diff changeset
176 "Name": proposal.name,
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 251
diff changeset
177 "CompletionType": proposalType,
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 251
diff changeset
178 })
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
179 except Exception as err:
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
180 errorDict = self.__handleRopeError(err)
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
181
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
182 result = {
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
183 "Completions": completions,
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 "CompletionText": params["CompletionText"],
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
185 "FileName": filename,
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
186 }
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
187 result.update(errorDict)
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
188
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
189 self.sendJson("CompletionsResult", result)
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
190
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
191 def __getCallTips(self, params):
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
192 """
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
193 Private method to calculate possible calltips.
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
194
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
195 @param params dictionary containing the method parameters
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
196 @type dict
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
197 """
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
198 filename = params["FileName"]
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
199 source = params["Source"]
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
200 offset = params["Offset"]
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
201 maxfixes = params["MaxFixes"]
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
202
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
203 self.__project.prefs.set("python_path", params["SysPath"])
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
204 resource = (
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
205 rope.base.libutils.path_to_resource(self.__project, filename)
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
206 if filename else
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
207 None
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
208 )
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
209
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
210 errorDict = {}
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
211 calltips = []
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
212
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
213 try:
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
214 cts = rope.contrib.codeassist.get_calltip(
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
215 self.__project, source, offset, resource, maxfixes=maxfixes,
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
216 remove_self=True)
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
217 if cts is not None:
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
218 calltips = [cts]
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
219 except Exception as err:
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
220 errorDict = self.__handleRopeError(err)
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
221
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
222 result = {
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
223 "CallTips": calltips,
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
224 }
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
225 result.update(errorDict)
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
226
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
227 self.sendJson("CallTipsResult", result)
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
228
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
229 def __getDocumentation(self, params):
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
230 """
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
231 Private method to get some source code documentation.
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
232
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
233 @param params dictionary containing the method parameters
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
234 @type dict
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
235 """
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
236 filename = params["FileName"]
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
237 source = params["Source"]
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
238 offset = params["Offset"]
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
239 maxfixes = params["MaxFixes"]
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
240
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
241 if self.__id != CodeAssistClient.IdProject:
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
242 self.__project.prefs.set("python_path", params["SysPath"])
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
243 resource = (
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
244 rope.base.libutils.path_to_resource(self.__project, filename)
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
245 if filename else
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
246 None
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
247 )
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
248
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
249 errorDict = {}
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
250 documentation = ""
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
251 cts = None
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
252
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
253 with contextlib.suppress(Exception):
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
254 cts = rope.contrib.codeassist.get_calltip(
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
255 self.__project, source, offset, resource, maxfixes=maxfixes,
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
256 remove_self=True)
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
257
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
258 if cts is not None:
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
259 while '..' in cts:
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
260 cts = cts.replace('..', '.')
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
261 if '(.)' in cts:
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
262 cts = cts.replace('(.)', '(...)')
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
263
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
264 try:
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
265 documentation = rope.contrib.codeassist.get_doc(
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
266 self.__project, source, offset, resource, maxfixes=maxfixes)
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
267 except Exception as err:
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
268 errorDict = self.__handleRopeError(err)
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
269
234
a9d03af34d28 Fixed a little bug in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 232
diff changeset
270 typeName = self.__getObjectTypeAndName(
248
59e983db024b Adjusted the code style checking parameters and fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 245
diff changeset
271 self.__project, source, offset, resource, maxfixes=maxfixes)
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
272
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
273 documentationDict = self.__processDocumentation(cts, documentation,
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
274 typeName)
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
275 result = {
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
276 "DocumentationDict": documentationDict,
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
277 }
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
278 result.update(errorDict)
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
279
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
280 self.sendJson("DocumentationResult", result)
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
281
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
282 def __processDocumentation(self, cts, documentation, typeName):
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
283 """
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
284 Private method to process the call-tips and documentation.
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
285
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
286 @param cts call-tips
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
287 @type str
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
288 @param documentation extracted source code documentation
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
289 @type str
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
290 @param typeName type and name of the object
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
291 @type tuple of (str, str)
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
292 @return dictionary containing document information
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
293 @rtype dictionary with keys "name", "argspec", "module" and
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
294 "docstring"
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
295 """
228
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
296 objectFullname = ""
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
297 calltip = ""
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
298 argspec = ""
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
299 module = ""
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
300
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
301 if cts:
228
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
302 cts = cts.replace(".__init__", "")
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
303 parenthesisPos = cts.find("(")
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
304 if parenthesisPos != -1:
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
305 objectFullname = cts[:parenthesisPos]
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
306 objectName = objectFullname.split('.')[-1]
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
307 cts = cts.replace(objectFullname, objectName)
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
308 calltip = cts
228
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
309 else:
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
310 objectFullname = cts
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
311
228
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
312 if objectFullname and not objectFullname.startswith("self."):
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
313 if calltip:
228
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
314 argspecStart = calltip.find("(")
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
315 argspec = calltip[argspecStart:]
228
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
316
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
317 moduleEnd = objectFullname.rfind('.')
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
318 module = objectFullname[:moduleEnd]
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
319
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
320 if not objectFullname and typeName[1] not in ["", "<unknown>"]:
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
321 objectFullname = typeName[1]
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
322
320
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 305
diff changeset
323 return {
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 305
diff changeset
324 "name": objectFullname,
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 305
diff changeset
325 "argspec": argspec,
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 305
diff changeset
326 "module": module,
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 305
diff changeset
327 "docstring": documentation,
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 305
diff changeset
328 "typ": typeName[0]
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 305
diff changeset
329 }
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
330
234
a9d03af34d28 Fixed a little bug in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 232
diff changeset
331 def __getObjectTypeAndName(self, project, sourceCode, offset,
a9d03af34d28 Fixed a little bug in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 232
diff changeset
332 resource=None, maxfixes=1):
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
333 """
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
334 Private method to determine an object type and name for the given
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
335 location.
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
336
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
337 @param project reference to the rope project object
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
338 @type rope.base.project.Project
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
339 @param sourceCode source code
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
340 @type str
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
341 @param offset offset to base the calculation on
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
342 @type int
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
343 @param resource reference to the rope resource object
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
344 @type rope.base.resources.Resource
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
345 @param maxfixes number of fixes to be done
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
346 @type int
248
59e983db024b Adjusted the code style checking parameters and fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 245
diff changeset
347 @return tuple containing the object type and name
59e983db024b Adjusted the code style checking parameters and fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 245
diff changeset
348 @rtype tuple of (str, str)
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
349 """
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
350 from rope.base import pyobjects, pyobjectsdef, pynames
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
351 from rope.contrib import fixsyntax
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
352
234
a9d03af34d28 Fixed a little bug in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 232
diff changeset
353 try:
a9d03af34d28 Fixed a little bug in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 232
diff changeset
354 fixer = fixsyntax.FixSyntax(project, sourceCode, resource,
a9d03af34d28 Fixed a little bug in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 232
diff changeset
355 maxfixes)
a9d03af34d28 Fixed a little bug in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 232
diff changeset
356 pyname = fixer.pyname_at(offset)
a9d03af34d28 Fixed a little bug in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 232
diff changeset
357 except BadIdentifierError:
a9d03af34d28 Fixed a little bug in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 232
diff changeset
358 pyname = None
239
f453f583c06b Fixed a few bugs in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 234
diff changeset
359 except ModuleSyntaxError:
f453f583c06b Fixed a few bugs in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 234
diff changeset
360 pyname = None
f453f583c06b Fixed a few bugs in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 234
diff changeset
361 except IndexError:
f453f583c06b Fixed a few bugs in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 234
diff changeset
362 pyname = None
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
363 if pyname is None:
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
364 return "<unknown>", "<unknown>"
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
365
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
366 pyobject = pyname.get_object()
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
367 if isinstance(pyobject, pyobjectsdef.PyPackage):
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
368 typ = "package"
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
369 if isinstance(pyname, pynames.ImportedModule):
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
370 name = pyname.module_name
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
371 else:
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
372 name = "<unknown>"
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
373 elif isinstance(pyobject, pyobjectsdef.PyModule):
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
374 typ = "module"
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
375 name = pyobject.get_name()
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
376 elif isinstance(pyobject, pyobjectsdef.PyClass):
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
377 typ = "class"
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
378 name = pyobject.get_name()
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
379 elif isinstance(pyobject, pyobjectsdef.PyFunction):
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
380 typ = pyobject.get_kind()
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
381 name = pyobject.get_name()
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
382 elif isinstance(pyobject, pyobjects.PyObject):
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
383 typ = "object"
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
384 name = ""
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
385 else:
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
386 typ = ""
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
387 name = ""
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
388
248
59e983db024b Adjusted the code style checking parameters and fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 245
diff changeset
389 return typ, name
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
390
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
391 def __gotoDefinition(self, params):
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
392 """
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
393 Private method to handle the Goto Definition action.
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
394
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
395 @param params dictionary containing the method parameters sent by
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
396 the server
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
397 @type dict
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
398 """
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
399 import rope.base.libutils
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
400
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
401 filename = params["FileName"]
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
402 offset = params["Offset"]
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
403 source = params["Source"]
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
404
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
405 self.__project.prefs.set("python_path", params["SysPath"])
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
406 resource = (
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
407 rope.base.libutils.path_to_resource(self.__project, filename)
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
408 if filename else
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
409 None
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
410 )
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
411
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
412 errorDict = {}
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
413 result = {}
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
414
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
415 import rope.contrib.findit
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
416 try:
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
417 location = rope.contrib.findit.find_definition(
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
418 self.__project, source, offset, resource)
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
419 except Exception as err:
305
9fb032952a0a CodeAssistClient: fixed an issue accessing a variable before it was defined.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 303
diff changeset
420 location = None
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
421 errorDict = self.__handleRopeError(err)
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
422
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
423 if location is not None:
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
424 result["Location"] = {
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
425 "ModulePath": location.resource.real_path,
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
426 "Line": location.lineno,
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
427 }
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
428 result.update(errorDict)
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
429
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
430 self.sendJson("GotoDefinitionResult", result)
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
431
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
432 def __reportChanged(self, params):
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
433 """
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
434 Private method to register some changed sources.
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
435
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
436 @param params dictionary containing the method parameters sent by
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
437 the server
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
438 @type dict
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
439 """
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
440 filename = params["FileName"]
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
441 oldSource = params["OldSource"]
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
442
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
443 with contextlib.suppress(Exception):
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
444 rope.base.libutils.report_change(
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
445 self.__project, filename, oldSource)
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
446
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
448 if __name__ == '__main__':
360
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
449 if len(sys.argv) != 6:
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
450 print('Host, port, id, project path and module path parameters are'
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
451 ' missing. Abort.')
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
452 sys.exit(1)
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
453
362
792c2651fbd7 Moved the sys.path manipulation to the beginning of the ...Client.py files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
454 host, port, idString, projectPath = sys.argv[1:-1]
360
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
455
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
456 # Create a Qt5 application object in order to allow the processing of
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457 # modules containing Qt stuff.
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458 try:
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
459 from PyQt5.QtCore import QCoreApplication
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460 except ImportError:
360
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
461 QCoreApplication = None
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
462 if QCoreApplication is not None:
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
463 app = QCoreApplication(sys.argv)
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
464
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
465 client = CodeAssistClient(host, int(port), idString, projectPath)
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
466 # Start the main loop
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
467 client.run()
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
468
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
469 sys.exit(0)
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
470
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
471 #
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472 # eflag: noqa = M801

eric ide

mercurial