RefactoringRope/CodeAssistClient.py

Tue, 16 Mar 2021 18:11:29 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 16 Mar 2021 18:11:29 +0100
changeset 347
b5048b5ff454
parent 346
877cac2e8d94
child 354
a967ff16629a
permissions
-rw-r--r--

- updated to rope 0.18.0+
- removed support for Python 2

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
313fbf9c86d9 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 302
diff changeset
11 import os
313fbf9c86d9 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 302
diff changeset
12
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 sys.path.insert(0, os.path.dirname(__file__))
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 import rope.base.libutils
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 import rope.contrib.codeassist
239
f453f583c06b Fixed a few bugs in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 234
diff changeset
17 from rope.base.exceptions import BadIdentifierError, ModuleSyntaxError
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from JsonClient import JsonClient
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 class CodeAssistClient(JsonClient):
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 """
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 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
25 """
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
26 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
27
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 def __init__(self, host, port, idString, projectPath):
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 Constructor
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 @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
33 @type str
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @param port port of the background service
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @type int
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @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
37 order to identify the connection
203
c38750e1bafd Performed some code cleanup actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 201
diff changeset
38 @type str
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @param projectPath path to the project
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 @type str
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 """
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 super(CodeAssistClient, self).__init__(host, port, idString)
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 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
45 "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
46 "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
47 "closeProject": self.__closeProject,
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
48 "getCompletions": self.__getCompletions,
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
49 "getCallTips": self.__getCallTips,
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
50 "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
51 "gotoDefinition": self.__gotoDefinition,
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
52 "reportChanged": self.__reportChanged,
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 }
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.__projectpath = projectPath
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.__project = rope.base.project.Project(self.__projectpath)
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 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
58
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 self.__id = idString
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 def handleCall(self, method, params):
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 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
64
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 @param method requested method name
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 @type str
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 @param params dictionary with method specific parameters
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 @type dict
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 """
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 self.__methodMapping[method](params)
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
71
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
72 def __handleRopeError(self, err):
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
73 """
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
74 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
75
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
76 @param err rope exception object
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
77 @type Exception
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
78 @return dictionary containing the error information
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
79 @rtype dict
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
80 """
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
81 ropeError = str(type(err)).split()[-1]
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
82 ropeError = ropeError[1:-2].split('.')[-1]
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
83 errorDict = {
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
84 "Error": ropeError,
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
85 "ErrorString": str(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 if ropeError == 'ModuleSyntaxError':
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
88 errorDict["ErrorFile"] = err.filename
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
89 errorDict["ErrorLine"] = err.lineno
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
90
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
91 return errorDict
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
92
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
93 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
94 """
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
95 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
96
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
97 @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
98 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
99 @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
100 """
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
101 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
102 "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
103 "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
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
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 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
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 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
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 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
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 @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
113 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
114 @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
115 """
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 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
117 self.__project = rope.base.project.Project(self.__projectpath)
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 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
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 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
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 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
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 @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
125 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
126 @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
127 """
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 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
129
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
130 def __getCompletions(self, params):
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
131 """
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
132 Private method to calculate possible completions.
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
133
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
134 @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
135 @type dict
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
136 """
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
137 filename = params["FileName"]
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
138 source = params["Source"]
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
139 offset = params["Offset"]
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
140 maxfixes = params["MaxFixes"]
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
141
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
142 self.__project.prefs.set("python_path", params["SysPath"])
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
143 if filename:
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
144 resource = rope.base.libutils.path_to_resource(
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
145 self.__project, filename)
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
146 else:
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
147 resource = None
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
148
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
149 errorDict = {}
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
150 completions = []
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
151
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
152 try:
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
153 proposals = rope.contrib.codeassist.code_assist(
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
154 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
155 for proposal in proposals:
e677d82706d4 Extended the auto completions pictures supported by code assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
156 proposalType = proposal.type
e677d82706d4 Extended the auto completions pictures supported by code assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
157 if proposal.name.startswith("__"):
e677d82706d4 Extended the auto completions pictures supported by code assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
158 proposalType = "__" + proposalType
e677d82706d4 Extended the auto completions pictures supported by code assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
159 elif proposal.name.startswith("_"):
e677d82706d4 Extended the auto completions pictures supported by code assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
160 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
161 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
162 "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
163 "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
164 })
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
165 except Exception as err:
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
166 errorDict = self.__handleRopeError(err)
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
167
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
168 result = {
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
169 "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
170 "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
171 "FileName": filename,
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
172 }
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
173 result.update(errorDict)
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
174
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
175 self.sendJson("CompletionsResult", result)
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
176
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
177 def __getCallTips(self, params):
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
178 """
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
179 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
180
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
181 @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
182 @type dict
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
183 """
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
184 filename = params["FileName"]
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
185 source = params["Source"]
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
186 offset = params["Offset"]
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
187 maxfixes = params["MaxFixes"]
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
188
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
189 self.__project.prefs.set("python_path", params["SysPath"])
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
190 if filename:
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
191 resource = rope.base.libutils.path_to_resource(
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
192 self.__project, filename)
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
193 else:
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
194 resource = None
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
195
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
196 errorDict = {}
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
197 calltips = []
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
198
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
199 try:
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
200 cts = rope.contrib.codeassist.get_calltip(
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
201 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
202 remove_self=True)
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
203 if cts is not None:
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
204 calltips = [cts]
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
205 except Exception as err:
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
206 errorDict = self.__handleRopeError(err)
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
207
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
208 result = {
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
209 "CallTips": calltips,
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
210 }
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
211 result.update(errorDict)
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 self.sendJson("CallTipsResult", result)
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
214
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
215 def __getDocumentation(self, params):
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
216 """
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
217 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
218
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
219 @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
220 @type dict
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
221 """
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
222 filename = params["FileName"]
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
223 source = params["Source"]
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
224 offset = params["Offset"]
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
225 maxfixes = params["MaxFixes"]
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
226
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
227 if not self.__id == CodeAssistClient.IdProject:
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
228 self.__project.prefs.set("python_path", params["SysPath"])
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
229 if filename:
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
230 resource = rope.base.libutils.path_to_resource(
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
231 self.__project, filename)
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
232 else:
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
233 resource = None
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
234
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
235 errorDict = {}
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
236 documentation = ""
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
237 cts = None
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
238
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
239 try:
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
240 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
241 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
242 remove_self=True)
335
9438c2ed7732 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 326
diff changeset
243 except Exception: # secok
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
244 pass
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
245
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
246 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
247 while '..' in cts:
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
248 cts = cts.replace('..', '.')
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
249 if '(.)' in cts:
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
250 cts = cts.replace('(.)', '(...)')
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
251
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
252 try:
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
253 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
254 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
255 except Exception as err:
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
256 errorDict = self.__handleRopeError(err)
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
257
234
a9d03af34d28 Fixed a little bug in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 232
diff changeset
258 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
259 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
260
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
261 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
262 typeName)
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
263 result = {
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
264 "DocumentationDict": documentationDict,
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
265 }
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
266 result.update(errorDict)
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
267
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
268 self.sendJson("DocumentationResult", result)
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
269
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
270 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
271 """
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
272 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
273
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
274 @param cts call-tips
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
275 @type str
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
276 @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
277 @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
278 @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
279 @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
280 @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
281 @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
282 "docstring"
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
283 """
228
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
284 objectFullname = ""
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
285 calltip = ""
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
286 argspec = ""
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
287 module = ""
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
288
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
289 if cts:
228
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
290 cts = cts.replace(".__init__", "")
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
291 parenthesisPos = cts.find("(")
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
292 if parenthesisPos != -1:
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
293 objectFullname = cts[:parenthesisPos]
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
294 objectName = objectFullname.split('.')[-1]
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
295 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
296 calltip = cts
228
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
297 else:
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
298 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
299
228
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
300 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
301 if calltip:
228
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
302 argspecStart = calltip.find("(")
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
303 argspec = calltip[argspecStart:]
228
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
304
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
305 moduleEnd = objectFullname.rfind('.')
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
306 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
307
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
308 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
309 objectFullname = typeName[1]
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
310
320
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 305
diff changeset
311 return {
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 305
diff changeset
312 "name": objectFullname,
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 305
diff changeset
313 "argspec": argspec,
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 305
diff changeset
314 "module": module,
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 305
diff changeset
315 "docstring": documentation,
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 305
diff changeset
316 "typ": typeName[0]
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 305
diff changeset
317 }
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
318
234
a9d03af34d28 Fixed a little bug in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 232
diff changeset
319 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
320 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
321 """
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
322 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
323 location.
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
324
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
325 @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
326 @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
327 @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
328 @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
329 @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
330 @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
331 @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
332 @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
333 @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
334 @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
335 @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
336 @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
337 """
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
338 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
339 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
340
234
a9d03af34d28 Fixed a little bug in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 232
diff changeset
341 try:
a9d03af34d28 Fixed a little bug in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 232
diff changeset
342 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
343 maxfixes)
a9d03af34d28 Fixed a little bug in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 232
diff changeset
344 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
345 except BadIdentifierError:
a9d03af34d28 Fixed a little bug in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 232
diff changeset
346 pyname = None
239
f453f583c06b Fixed a few bugs in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 234
diff changeset
347 except ModuleSyntaxError:
f453f583c06b Fixed a few bugs in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 234
diff changeset
348 pyname = None
f453f583c06b Fixed a few bugs in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 234
diff changeset
349 except IndexError:
f453f583c06b Fixed a few bugs in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 234
diff changeset
350 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
351 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
352 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
353
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
354 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
355 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
356 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
357 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
358 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
359 else:
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
360 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
361 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
362 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
363 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
364 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
365 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
366 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
367 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
368 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
369 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
370 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
371 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
372 name = ""
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
373 else:
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 = ""
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 = ""
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
376
248
59e983db024b Adjusted the code style checking parameters and fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 245
diff changeset
377 return typ, name
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
378
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
379 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
380 """
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
381 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
382
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
383 @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
384 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
385 @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
386 """
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
387 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
388
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
389 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
390 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
391 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
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 self.__project.prefs.set("python_path", params["SysPath"])
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
394 if filename:
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
395 resource = rope.base.libutils.path_to_resource(
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
396 self.__project, filename)
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
397 else:
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
398 resource = None
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
399
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
400 errorDict = {}
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
401 result = {}
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
402
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
403 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
404 try:
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
405 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
406 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
407 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
408 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
409 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
410
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
411 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
412 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
413 "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
414 "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
415 }
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
416 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
417
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.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
419
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
420 def __reportChanged(self, params):
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
421 """
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
422 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
423
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
424 @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
425 the server
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
426 @type dict
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
427 """
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
428 filename = params["FileName"]
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
429 oldSource = params["OldSource"]
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
430
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
431 try:
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
432 rope.base.libutils.report_change(
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
433 self.__project, filename, oldSource)
335
9438c2ed7732 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 326
diff changeset
434 except Exception: # secok
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
435 # simply ignore it
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
436 pass
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
438
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
439 if __name__ == '__main__':
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440 if len(sys.argv) != 5:
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
441 print('Host, port, id and project path parameters are missing. Abort.')
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
442 sys.exit(1)
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
443
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
444 host, port, idString, projectPath = sys.argv[1:]
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
445
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
446 # Create a Qt4/5 application object in order to allow the processing of
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447 # modules containing Qt stuff.
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
448 try:
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
449 from PyQt5.QtCore import QCoreApplication
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
450 except ImportError:
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
451 try:
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
452 from PyQt4.QtCore import QCoreApplication
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
453 except ImportError:
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
454 QCoreApplication = None
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
455 if QCoreApplication is not None:
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
456 app = QCoreApplication(sys.argv)
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458 client = CodeAssistClient(host, int(port), idString, projectPath)
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
459 # Start the main loop
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460 client.run()
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
461
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
462 sys.exit(0)
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
463
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 # eflag: noqa = M801

eric ide

mercurial