RefactoringRope/CodeAssistClient.py

Tue, 10 Dec 2024 15:49:01 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 10 Dec 2024 15:49:01 +0100
branch
eric7
changeset 426
7592a1c052e8
parent 413
a4cba20ad7ab
permissions
-rw-r--r--

Updated copyright for 2025.

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
426
7592a1c052e8 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
3 # Copyright (c) 2017 - 2025 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
409
65153bf17e8d Fixed a bug and resorted the imports with isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 389
diff changeset
10 import contextlib
303
313fbf9c86d9 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 302
diff changeset
11 import sys
313fbf9c86d9 bug fixes
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 302
diff changeset
12
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
13 modulePath = sys.argv[-1] # it is always the last parameter
381
88ef06966203 Fixed two bugs causing a crash of the code assist and refactoring clients in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
14 sys.path.append(modulePath)
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
15
360
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
16 try:
409
65153bf17e8d Fixed a bug and resorted the imports with isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 389
diff changeset
17 import rope.base.libutils
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
18 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
19 import rope.contrib.codeassist
413
a4cba20ad7ab Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 412
diff changeset
20 import rope.contrib.findit
409
65153bf17e8d Fixed a bug and resorted the imports with isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 389
diff changeset
21
413
a4cba20ad7ab Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 412
diff changeset
22 from rope.base import pynames, pyobjects, pyobjectsdef
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
23 from rope.base.exceptions import BadIdentifierError, ModuleSyntaxError
413
a4cba20ad7ab Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 412
diff changeset
24 from rope.contrib import fixsyntax
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
25 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
26 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
27
365
f740b50380df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 362
diff changeset
28 from eric7.EricNetwork.EricJsonClient import EricJsonClient
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
365
f740b50380df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 362
diff changeset
31 class CodeAssistClient(EricJsonClient):
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 """
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
35
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
36 IdProject = "Project"
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
37
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 def __init__(self, host, port, idString, projectPath):
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 """
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 Constructor
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
41
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 @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
43 @type str
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 @param port port of the background service
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 @type int
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 @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
47 order to identify the connection
203
c38750e1bafd Performed some code cleanup actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 201
diff changeset
48 @type str
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 @param projectPath path to the project
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 @type str
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
413
a4cba20ad7ab Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 412
diff changeset
52 from FileSystemCommands import RefactoringClientFileSystemCommands # noqa: I102
a4cba20ad7ab Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 412
diff changeset
53
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
54 super().__init__(host, port, idString)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
55
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 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
57 "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
58 "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
59 "closeProject": self.__closeProject,
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
60 "getCompletions": self.__getCompletions,
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
61 "getCallTips": self.__getCallTips,
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
62 "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
63 "gotoDefinition": self.__gotoDefinition,
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
64 "gotoReferences": self.__getReferences,
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
65 "reportChanged": self.__reportChanged,
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 }
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
67
360
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
68 self.__fsCommands = RefactoringClientFileSystemCommands(self)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
69
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 self.__projectpath = projectPath
360
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
71 self.__project = rope.base.project.Project(
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
72 self.__projectpath, fscommands=self.__fsCommands
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
73 )
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 self.__project.validate(self.__project.root)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
75
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
76 self.__id = idString
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
77
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 def handleCall(self, method, params):
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 Public method to handle a method call from the server.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
81
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 @param method requested method name
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 @type str
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 @param params dictionary with method specific parameters
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 @type dict
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 """
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 self.__methodMapping[method](params)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
88
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
89 def __handleRopeError(self, err):
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 Private method to process a rope error.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
92
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
93 @param err rope exception object
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
94 @type Exception
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
95 @return dictionary containing the error information
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
96 @rtype dict
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
97 """
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
98 ropeError = str(type(err)).split()[-1]
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
99 ropeError = ropeError[1:-2].split(".")[-1]
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
100 errorDict = {
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
101 "Error": ropeError,
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
102 "ErrorString": str(err),
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
103 }
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
104 if ropeError == "ModuleSyntaxError":
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
105 errorDict["ErrorFile"] = err.filename
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
106 errorDict["ErrorLine"] = err.lineno
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
107
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
108 return errorDict
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
109
413
a4cba20ad7ab Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 412
diff changeset
110 def __getConfig(self, params): # noqa: U100
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
111 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
112 Private method to send some configuration data to the server.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
113
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
114 @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
115 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
116 @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
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 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
119 "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
120 "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
121 }
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
122
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
123 self.sendJson("Config", result)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
124
413
a4cba20ad7ab Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 412
diff changeset
125 def __configChanged(self, params): # noqa: U100
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
126 """
f05681349336 Changed code assist to use the new 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 Private method to handle a change of the configuration file.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
128
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
129 @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
130 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
131 @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
132 """
f05681349336 Changed code assist to use the new 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 self.__project.close()
360
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
134 self.__project = rope.base.project.Project(
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
135 self.__projectpath, fscommands=self.__fsCommands
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
136 )
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
137 self.__project.validate(self.__project.root)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
138
413
a4cba20ad7ab Corrected some code style issues and converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 412
diff changeset
139 def __closeProject(self, params): # noqa: U100
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
140 """
f05681349336 Changed code assist to use the new 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 Private slot to validate the project.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
142
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
143 @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
144 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
145 @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
146 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
147 self.__project.close()
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
148
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
149 def __getCompletions(self, params):
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 Private method to calculate possible completions.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
152
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
153 @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
154 @type dict
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
155 """
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
156 filename = params["FileName"]
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
157 source = params["Source"]
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
158 offset = params["Offset"]
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
159 maxfixes = params["MaxFixes"]
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
160
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
161 self.__project.prefs.set("python_path", params["SysPath"])
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
162 resource = (
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
163 rope.base.libutils.path_to_resource(self.__project, filename)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
164 if filename
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
165 else None
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
166 )
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
167
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
168 errorDict = {}
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
169 completions = []
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
170
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
171 try:
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
172 proposals = rope.contrib.codeassist.code_assist(
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
173 self.__project, source, offset, resource, maxfixes=maxfixes
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
174 )
201
e677d82706d4 Extended the auto completions pictures supported by code assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
175 for proposal in proposals:
e677d82706d4 Extended the auto completions pictures supported by code assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
176 proposalType = proposal.type
e677d82706d4 Extended the auto completions pictures supported by code assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
177 if proposal.name.startswith("__"):
e677d82706d4 Extended the auto completions pictures supported by code assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
178 proposalType = "__" + proposalType
e677d82706d4 Extended the auto completions pictures supported by code assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
179 elif proposal.name.startswith("_"):
e677d82706d4 Extended the auto completions pictures supported by code assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
180 proposalType = "_" + proposalType
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
181 completions.append(
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
182 {
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
183 "Name": proposal.name,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
184 "CompletionType": proposalType,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
185 }
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
186 )
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
187 except Exception as err:
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
188 errorDict = self.__handleRopeError(err)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
189
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
190 result = {
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
191 "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
192 "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
193 "FileName": filename,
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
194 }
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
195 result.update(errorDict)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
196
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 196
diff changeset
197 self.sendJson("CompletionsResult", result)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
198
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
199 def __getCallTips(self, params):
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
200 """
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
201 Private method to calculate possible calltips.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
202
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
203 @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
204 @type dict
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
205 """
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
206 filename = params["FileName"]
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
207 source = params["Source"]
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
208 offset = params["Offset"]
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
209 maxfixes = params["MaxFixes"]
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
210
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
211 self.__project.prefs.set("python_path", params["SysPath"])
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
212 resource = (
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
213 rope.base.libutils.path_to_resource(self.__project, filename)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
214 if filename
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
215 else None
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
216 )
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
217
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
218 errorDict = {}
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
219 calltips = []
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
220
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
221 try:
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
222 cts = rope.contrib.codeassist.get_calltip(
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
223 self.__project,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
224 source,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
225 offset,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
226 resource,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
227 maxfixes=maxfixes,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
228 remove_self=True,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
229 )
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
230 if cts is not None:
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
231 calltips = [cts]
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
232 except Exception as err:
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
233 errorDict = self.__handleRopeError(err)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
234
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
235 result = {
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
236 "CallTips": calltips,
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
237 }
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
238 result.update(errorDict)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
239
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
240 self.sendJson("CallTipsResult", result)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
241
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
242 def __getDocumentation(self, params):
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
243 """
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
244 Private method to get some source code documentation.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
245
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
246 @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
247 @type dict
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 filename = params["FileName"]
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
250 source = params["Source"]
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
251 offset = params["Offset"]
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
252 maxfixes = params["MaxFixes"]
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
253
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
254 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
255 self.__project.prefs.set("python_path", params["SysPath"])
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
256 resource = (
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
257 rope.base.libutils.path_to_resource(self.__project, filename)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
258 if filename
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
259 else None
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
260 )
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
261
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
262 errorDict = {}
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
263 documentation = ""
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
264 cts = None
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
265
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
266 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
267 cts = rope.contrib.codeassist.get_calltip(
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
268 self.__project,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
269 source,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
270 offset,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
271 resource,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
272 maxfixes=maxfixes,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
273 remove_self=True,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
274 )
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
275
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
276 if cts is not None:
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
277 while ".." in cts:
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
278 cts = cts.replace("..", ".")
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
279 if "(.)" in cts:
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
280 cts = cts.replace("(.)", "(...)")
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
281
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
282 try:
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
283 documentation = rope.contrib.codeassist.get_doc(
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
284 self.__project, source, offset, resource, maxfixes=maxfixes
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
285 )
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
286 except Exception as err:
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
287 errorDict = self.__handleRopeError(err)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
288
234
a9d03af34d28 Fixed a little bug in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 232
diff changeset
289 typeName = self.__getObjectTypeAndName(
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
290 self.__project, source, offset, resource, maxfixes=maxfixes
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
291 )
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
292
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
293 documentationDict = self.__processDocumentation(cts, documentation, typeName)
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
294 result = {
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
295 "DocumentationDict": documentationDict,
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
296 }
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
297 result.update(errorDict)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
298
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
299 self.sendJson("DocumentationResult", result)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
300
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
301 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
302 """
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
303 Private method to process the call-tips and documentation.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
304
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
305 @param cts call-tips
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
306 @type str
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
307 @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
308 @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
309 @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
310 @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
311 @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
312 @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
313 "docstring"
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
314 """
228
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
315 objectFullname = ""
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
316 calltip = ""
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
317 argspec = ""
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
318 module = ""
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
319
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
320 if cts:
228
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
321 cts = cts.replace(".__init__", "")
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
322 parenthesisPos = cts.find("(")
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
323 if parenthesisPos != -1:
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
324 objectFullname = cts[:parenthesisPos]
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
325 objectName = objectFullname.split(".")[-1]
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
326 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
327 calltip = cts
228
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
328 else:
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
329 objectFullname = cts
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
330
228
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
331 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
332 if calltip:
228
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
333 argspecStart = calltip.find("(")
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
334 argspec = calltip[argspecStart:]
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
335
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
336 moduleEnd = objectFullname.rfind(".")
228
e76a4991faef Fixed a few bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
337 module = objectFullname[:moduleEnd]
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
338
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
339 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
340 objectFullname = typeName[1]
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 216
diff changeset
341
320
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 305
diff changeset
342 return {
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 305
diff changeset
343 "name": objectFullname,
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 305
diff changeset
344 "argspec": argspec,
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 305
diff changeset
345 "module": module,
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 305
diff changeset
346 "docstring": documentation,
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
347 "typ": typeName[0],
320
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 305
diff changeset
348 }
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
349
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
350 def __getObjectTypeAndName(
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
351 self, project, sourceCode, offset, resource=None, maxfixes=1
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
352 ):
232
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 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
355 location.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
356
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
357 @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
358 @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
359 @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
360 @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
361 @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
362 @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
363 @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
364 @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
365 @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
366 @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
367 @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
368 @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
369 """
234
a9d03af34d28 Fixed a little bug in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 232
diff changeset
370 try:
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
371 fixer = fixsyntax.FixSyntax(project, sourceCode, resource, maxfixes)
234
a9d03af34d28 Fixed a little bug in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 232
diff changeset
372 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
373 except BadIdentifierError:
a9d03af34d28 Fixed a little bug in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 232
diff changeset
374 pyname = None
239
f453f583c06b Fixed a few bugs in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 234
diff changeset
375 except ModuleSyntaxError:
f453f583c06b Fixed a few bugs in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 234
diff changeset
376 pyname = None
f453f583c06b Fixed a few bugs in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 234
diff changeset
377 except IndexError:
f453f583c06b Fixed a few bugs in the code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 234
diff changeset
378 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
379 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
380 return "<unknown>", "<unknown>"
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
381
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
382 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
383 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
384 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
385 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
386 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
387 else:
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
388 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
389 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
390 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
391 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
392 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
393 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
394 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
395 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
396 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
397 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
398 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
399 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
400 name = ""
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
401 else:
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
402 typ = ""
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 228
diff changeset
403 name = ""
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
404
248
59e983db024b Adjusted the code style checking parameters and fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 245
diff changeset
405 return typ, name
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
406
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
407 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
408 """
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
409 Private method to handle the Goto Definition action.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
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 @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
412 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
413 @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
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 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
416 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
417 source = params["Source"]
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
418 uid = params["Uuid"]
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
419
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
420 self.__project.prefs.set("python_path", params["SysPath"])
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
421 resource = (
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
422 rope.base.libutils.path_to_resource(self.__project, filename)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
423 if filename
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
424 else None
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
425 )
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
426
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
427 errorDict = {}
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 = {}
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
429
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
430 try:
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
431 location = rope.contrib.findit.find_definition(
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
432 self.__project, source, offset, resource
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
433 )
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
434 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
435 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
436 errorDict = self.__handleRopeError(err)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
437
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
438 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
439 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
440 "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
441 "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
442 }
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
443 result["Uuid"] = uid
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
444 result.update(errorDict)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
445
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
446 self.sendJson("GotoDefinitionResult", result)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
447
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
448 def __getReferences(self, params):
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
449 """
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
450 Private method to get the places a parameter is referenced.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
451
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
452 @param params dictionary containing the method parameters sent by
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
453 the server
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
454 @type dict
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
455 """
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
456 filename = params["FileName"]
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
457 offset = params["Offset"]
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
458 line = params["Line"]
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
459 uid = params["Uuid"]
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
460
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
461 self.__project.prefs.set("python_path", params["SysPath"])
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
462 resource = (
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
463 rope.base.libutils.path_to_resource(self.__project, filename)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
464 if filename
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
465 else None
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
466 )
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
467
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
468 errorDict = {}
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
469 gotoReferences = []
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
470
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
471 try:
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
472 occurrences = rope.contrib.findit.find_occurrences(
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
473 self.__project, resource, offset, in_hierarchy=True
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
474 )
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
475 for occurrence in occurrences:
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
476 if (
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
477 occurrence.lineno == line
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
478 and occurrence.resource.real_path == filename
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
479 ):
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
480 continue
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
481 gotoReferences.append(
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
482 {
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
483 "ModulePath": occurrence.resource.real_path,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
484 "Line": occurrence.lineno,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
485 "Code": occurrence.resource.read().splitlines()[
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
486 occurrence.lineno - 1
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
487 ],
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
488 }
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
489 )
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
490 except Exception as err:
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
491 errorDict = self.__handleRopeError(err)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
492
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
493 result = {
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
494 "GotoReferencesList": gotoReferences,
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
495 "Uuid": uid,
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
496 }
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
497 result.update(errorDict)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
498
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
499 self.sendJson("GotoReferencesResult", result)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
500
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
501 def __reportChanged(self, params):
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
502 """
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
503 Private method to register some changed sources.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
504
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
505 @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
506 the server
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
507 @type dict
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
508 """
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
509 filename = params["FileName"]
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
510 oldSource = params["OldSource"]
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
511
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
512 with contextlib.suppress(Exception):
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
513 rope.base.libutils.report_change(self.__project, filename, oldSource)
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
514
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
515
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
516 if __name__ == "__main__":
360
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
517 if len(sys.argv) != 6:
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
518 print(
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
519 "Host, port, id, project path and module path parameters are"
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
520 " missing. Abort."
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
521 )
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
522 sys.exit(1)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
523
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
524 host, port, idString, projectPath = sys.argv[1:-1]
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
525
365
f740b50380df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 362
diff changeset
526 # Create a Qt6 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
527 # modules containing Qt stuff.
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
528 try:
365
f740b50380df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 362
diff changeset
529 from PyQt6.QtCore import QCoreApplication
381
88ef06966203 Fixed two bugs causing a crash of the code assist and refactoring clients in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
530 except (ImportError, RuntimeError):
360
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
531 QCoreApplication = None
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
532 if QCoreApplication is not None:
381
88ef06966203 Fixed two bugs causing a crash of the code assist and refactoring clients in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
533 app = QCoreApplication([])
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
534
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
535 client = CodeAssistClient(host, int(port), idString, projectPath)
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
536 # Start the main loop
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
537 client.run()
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
538
196
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
539 sys.exit(0)
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
540
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
541 #
26986d285975 Added the new code assist client.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
542 # eflag: noqa = M801

eric ide

mercurial