RefactoringRope/CodeAssistServer.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 422
f98253eed7f0
permissions
-rw-r--r--

Updated copyright for 2025.

100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
426
7592a1c052e8 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 422
diff changeset
3 # Copyright (c) 2008 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the autocompletion interface to rope.
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
10 import contextlib
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import os
394
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
12 import shutil
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
13 import sys
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
14 import uuid
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
409
65153bf17e8d Fixed a bug and resorted the imports with isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 406
diff changeset
16 from PyQt6.QtCore import QCoreApplication, QTimer, pyqtSlot
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
17
420
fa31c3a0df1d Adjusted code for eric7 24.10 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 414
diff changeset
18 from eric7 import Preferences
396
933b8fcd854f Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 394
diff changeset
19 from eric7.EricNetwork.EricJsonServer import EricJsonServer
409
65153bf17e8d Fixed a bug and resorted the imports with isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 406
diff changeset
20 from eric7.EricWidgets import EricMessageBox
396
933b8fcd854f Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 394
diff changeset
21 from eric7.EricWidgets.EricApplication import ericApp
104
f6049d39f83d Made the code completion work in case no project is open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
22
406
923d7f711cae Adjusted code for eric7 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 404
diff changeset
23 try:
420
fa31c3a0df1d Adjusted code for eric7 24.10 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 414
diff changeset
24 from eric7.EricUtilities import getConfigDir
fa31c3a0df1d Adjusted code for eric7 24.10 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 414
diff changeset
25 except ImportError:
fa31c3a0df1d Adjusted code for eric7 24.10 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 414
diff changeset
26 # backward compatibility for eric < 24.10
fa31c3a0df1d Adjusted code for eric7 24.10 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 414
diff changeset
27 from Globals import getConfigDir
fa31c3a0df1d Adjusted code for eric7 24.10 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 414
diff changeset
28
fa31c3a0df1d Adjusted code for eric7 24.10 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 414
diff changeset
29 try:
406
923d7f711cae Adjusted code for eric7 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 404
diff changeset
30 from eric7.SystemUtilities.PythonUtilities import (
409
65153bf17e8d Fixed a bug and resorted the imports with isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 406
diff changeset
31 getPythonExecutable,
406
923d7f711cae Adjusted code for eric7 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 404
diff changeset
32 getPythonLibraryDirectory,
923d7f711cae Adjusted code for eric7 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 404
diff changeset
33 )
923d7f711cae Adjusted code for eric7 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 404
diff changeset
34 except ImportError:
420
fa31c3a0df1d Adjusted code for eric7 24.10 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 414
diff changeset
35 # backward compatibility for eric < 23.1
406
923d7f711cae Adjusted code for eric7 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 404
diff changeset
36 from eric7.Globals import getPythonExecutable, getPythonLibraryDirectory
923d7f711cae Adjusted code for eric7 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 404
diff changeset
37
414
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
38 try:
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
39 from eric7.QScintilla.Editor import EditorIconId
118
d242ba11a04c Fixed a few code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
40
414
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
41 PictureIDs = {
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
42 "class": "?{0}".format(EditorIconId.Class),
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
43 "_class": "?{0}".format(EditorIconId.ClassProtected),
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
44 "__class": "?{0}".format(EditorIconId.ClassPrivate),
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
45 "instance": "?{0}".format(EditorIconId.Class),
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
46 "_instance": "?{0}".format(EditorIconId.ClassProtected),
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
47 "__instance": "?{0}".format(EditorIconId.ClassPrivate),
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
48 "function": "?{0}".format(EditorIconId.Method),
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
49 "_function": "?{0}".format(EditorIconId.MethodProtected),
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
50 "__function": "?{0}".format(EditorIconId.MethodPrivate),
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
51 "module": "?{0}".format(EditorIconId.Module),
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
52 "_module": "?{0}".format(EditorIconId.Module),
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
53 "__module": "?{0}".format(EditorIconId.Module),
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
54 "None": "",
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
55 }
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
56 except ImportError:
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
57 # backward compatibility for eric < 24.2
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
58 from eric7.QScintilla.Editor import Editor
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
59
291
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
60 PictureIDs = {
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
61 "class": "?{0}".format(Editor.ClassID),
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
62 "_class": "?{0}".format(Editor.ClassProtectedID),
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
63 "__class": "?{0}".format(Editor.ClassPrivateID),
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
64 "instance": "?{0}".format(Editor.ClassID),
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
65 "_instance": "?{0}".format(Editor.ClassProtectedID),
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
66 "__instance": "?{0}".format(Editor.ClassPrivateID),
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
67 "function": "?{0}".format(Editor.MethodID),
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
68 "_function": "?{0}".format(Editor.MethodProtectedID),
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
69 "__function": "?{0}".format(Editor.MethodPrivateID),
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
70 "module": "?{0}".format(Editor.ModuleID),
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
71 "_module": "?{0}".format(Editor.ModuleID),
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
72 "__module": "?{0}".format(Editor.ModuleID),
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
73 "None": "",
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
74 }
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
75
414
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
76
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
77 class CodeAssistServer(EricJsonServer):
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
78 """
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
79 Class implementing the autocompletion interface to rope.
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
80 """
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
81
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
82 IdProject = "Project"
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
83
118
d242ba11a04c Fixed a few code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
84 def __init__(self, plugin, parent=None):
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 """
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 Constructor
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
87
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 @param plugin reference to the plugin object
193
47d95438c4d8 Started to change the CodeAssist class to support distributed operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
89 @type RefactoringRopePlugin
47d95438c4d8 Started to change the CodeAssist class to support distributed operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
90 @param parent parent
47d95438c4d8 Started to change the CodeAssist class to support distributed operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 147
diff changeset
91 @type QObject
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 """
420
fa31c3a0df1d Adjusted code for eric7 24.10 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 414
diff changeset
93 try:
fa31c3a0df1d Adjusted code for eric7 24.10 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 414
diff changeset
94 super().__init__(
fa31c3a0df1d Adjusted code for eric7 24.10 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 414
diff changeset
95 name="CodeAssistServer",
fa31c3a0df1d Adjusted code for eric7 24.10 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 414
diff changeset
96 interface=Preferences.getDebugger("NetworkInterface"),
fa31c3a0df1d Adjusted code for eric7 24.10 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 414
diff changeset
97 multiplex=True,
fa31c3a0df1d Adjusted code for eric7 24.10 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 414
diff changeset
98 parent=parent,
fa31c3a0df1d Adjusted code for eric7 24.10 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 414
diff changeset
99 )
fa31c3a0df1d Adjusted code for eric7 24.10 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 414
diff changeset
100 except TypeError:
fa31c3a0df1d Adjusted code for eric7 24.10 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 414
diff changeset
101 # backward compatibility for eric < 24.10
422
f98253eed7f0 - change to the new style header
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 420
diff changeset
102 super().__init__(name="CodeAssistServer", multiplex=True, parent=parent)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
103
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 self.__plugin = plugin
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
105 self.__ui = parent
365
f740b50380df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
106 self.__vm = ericApp().getObject("ViewManager")
f740b50380df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
107 self.__e5project = ericApp().getObject("Project")
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
108
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
109 self.__editorLanguageMapping = {}
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
110 self.__clientConfigs = {}
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
111 self.__editors = {}
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
112
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
113 self.__documentationViewer = None
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
114
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
115 # attributes to store the resuls of the client side
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
116 self.__completions = None
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
117 self.__calltips = None
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
118
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
119 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
120 "Config": self.__setConfig,
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
121 "CompletionsResult": self.__processCompletionsResult,
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
122 "CallTipsResult": self.__processCallTipsResult,
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
123 "DocumentationResult": self.__processDocumentationResult,
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
124 "GotoDefinitionResult": self.__gotoDefinitionResult,
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
125 "GotoReferencesResult": self.__processGotoReferencesResult,
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
126 "ClientException": self.__processClientException,
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
127 }
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
128
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
129 self.__typeMapping = {
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
130 "staticmethod": self.tr("static method"),
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
131 "classmethod": self.tr("class method"),
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
132 "method": self.tr("method"),
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
133 "function": self.tr("function"),
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
134 "class": self.tr("class"),
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
135 "module": self.tr("module"),
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
136 "package": self.tr("package"),
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
137 "object": self.tr("object"),
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
138 "<unknown>": self.tr("not known"),
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
139 }
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
140
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
141 # temporary store for editor references indexed by Uuid
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
142 self.__editors = {}
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
143
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
144 # Python 3
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
145 self.__ensureActive("Python3")
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
146
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
147 def __updateEditorLanguageMapping(self):
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
148 """
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
149 Private method to update the editor language to connection mapping.
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
150 """
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
151 self.__editorLanguageMapping = {}
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
152 for name in self.connectionNames():
335
9438c2ed7732 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 326
diff changeset
153 if name == "Python3":
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
154 self.__editorLanguageMapping.update(
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
155 {
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
156 "Python3": "Python3",
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
157 "MicroPython": "Python3",
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
158 "Pygments|Python": "Python3",
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
159 "Pygments|Python 2.x": "Python3",
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
160 "Cython": "Python3",
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
161 }
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
162 )
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
163
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
164 def isSupportedLanguage(self, language):
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
165 """
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
166 Public method to check, if the given language is supported.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
167
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
168 @param language editor programming language to check
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
169 @type str
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
170 @return flag indicating the support status
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
171 @rtype bool
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
172 """
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
173 return language in self.__editorLanguageMapping
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
174
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
175 def __idString(self, editor):
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
176 """
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
177 Private method to determine the ID string for the back-end.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
178
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
179 @param editor reference to the editor to determine the ID string for
365
f740b50380df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
180 @type Editor
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
181 @return ID string
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
182 @rtype str
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
183 """
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
184 idString = ""
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
185
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
186 language = editor.getLanguage()
320
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 315
diff changeset
187 if (
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
188 self.__e5project.isOpen()
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
189 and self.__e5project.getProjectLanguage() == language
320
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 315
diff changeset
190 ):
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
191 filename = editor.getFileName()
404
c855f98a5217 Adjusted code for eric7 22.12 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 396
diff changeset
192 try:
c855f98a5217 Adjusted code for eric7 22.12 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 396
diff changeset
193 isProjectSource = self.__e5project.isProjectCategory(
c855f98a5217 Adjusted code for eric7 22.12 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 396
diff changeset
194 filename, "SOURCES"
c855f98a5217 Adjusted code for eric7 22.12 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 396
diff changeset
195 )
c855f98a5217 Adjusted code for eric7 22.12 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 396
diff changeset
196 except AttributeError:
c855f98a5217 Adjusted code for eric7 22.12 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 396
diff changeset
197 # backward compatibility for eric < 22.12
c855f98a5217 Adjusted code for eric7 22.12 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 396
diff changeset
198 isProjectSource = self.__e5project.isProjectSource(filename)
c855f98a5217 Adjusted code for eric7 22.12 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 396
diff changeset
199 if isProjectSource:
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
200 idString = CodeAssistServer.IdProject
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
201
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
202 if not idString and language in self.__editorLanguageMapping:
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
203 idString = self.__editorLanguageMapping[language]
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
204
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
205 return idString
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
206
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
207 def __getConfigs(self):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
208 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
209 Private method to get the configurations of all connected clients.
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
210 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
211 for idString in self.connectionNames():
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
212 self.sendJson("getConfig", {}, idString=idString)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
213
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
214 def __setConfig(self, params):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
215 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
216 Private method to set the rope client configuration data.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
217
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
218 @param params dictionary containing the configuration data
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
219 @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
220 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
221 idString = params["Id"]
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
222 ropeFolder = params["RopeFolderName"]
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
223
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
224 self.__clientConfigs[idString] = ropeFolder
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
225
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
226 def __ropeConfigFile(self, idString):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
227 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
228 Private method to get the name of the rope configuration file.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
229
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
230 @param idString id for which to get the configuration file
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
231 @type str
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
232 @return name of the rope configuration file
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
233 @rtype str
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
234 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
235 configfile = None
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
236 if idString in self.__clientConfigs:
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
237 ropedir = self.__clientConfigs[idString]
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
238 if ropedir:
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
239 configfile = os.path.join(ropedir, "config.py")
394
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
240
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
241 return configfile
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
242
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
243 def __configChanged(self, idString):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
244 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
245 Private slot called, when the rope config file has changed.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
246
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
247 @param idString id for which to get the configuration file
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
248 @type str
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
249 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
250 self.sendJson("configChanged", {}, idString=idString)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
251
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
252 def editConfig(self, idString):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
253 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
254 Public slot to open the rope configuration file in an editor.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
255
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
256 @param idString id for which to get the configuration file
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
257 @type str
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
258 """
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
259 from eric7.QScintilla.MiniEditor import MiniEditor
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
260
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
261 configfile = self.__ropeConfigFile(idString)
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
262 if configfile:
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
263 if os.path.exists(configfile):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
264 editor = MiniEditor(configfile)
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
265 editor.show()
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
266 editor.editorSaved.connect(lambda: self.__configChanged(idString))
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
267 self.__editors[idString] = editor
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
268 return
394
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
269 else:
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
270 EricMessageBox.critical(
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
271 self.__ui,
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
272 self.tr("Configure rope"),
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
273 self.tr(
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
274 """The rope configuration file '{0}' does not exist."""
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
275 ).format(configfile),
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
276 )
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
277 else:
365
f740b50380df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
278 EricMessageBox.critical(
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
279 self.__ui,
394
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
280 self.tr("Configure rope"),
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
281 self.tr(
394
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
282 "The path of the rope configuration file could not be determined."
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
283 ).format(configfile),
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
284 )
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
285
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
286 def createConfig(self, idString):
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
287 """
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
288 Public slot to create a new default rope configuration file.
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
289
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
290 @param idString id for which to create the configuration file
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
291 @type str
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
292 """
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
293 configfile = self.__ropeConfigFile(idString)
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
294 if configfile:
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
295 defaultConfigFile = os.path.join(
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
296 os.path.dirname(__file__), "default_config.py"
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
297 )
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
298 try:
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
299 shutil.copyfile(defaultConfigFile, configfile)
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
300 except OSError as err:
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
301 EricMessageBox.critical(
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
302 self.__ui,
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
303 self.tr("Configure Rope"),
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
304 self.tr(
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
305 "<p>A new Rope default configuration could not be written to"
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
306 " the file '{0}'.</p><p>Reason: {1}</p>"
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
307 ).format(configfile, str(err)),
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
308 )
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
309 else:
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
310 EricMessageBox.critical(
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
311 self.__ui,
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
312 self.tr("Configure rope"),
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
313 self.tr(
b34f5dd3db27 Enhanced the default configuration handling (for refactoring and code assist).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 392
diff changeset
314 "The path of the rope configuration file could not be determined."
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
315 ).format(configfile),
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
316 )
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
317
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
318 def requestCompletions(self, editor, context, acText): # 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
319 """
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
320 Public method to request a list of possible completions.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
321
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
322 @param editor reference to the editor object, that called this method
365
f740b50380df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
323 @type Editor
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
324 @param context flag indicating to autocomplete a context
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
325 @type bool
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
326 @param acText text to be completed
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
327 @type str
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
328 """
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
329 if not self.__plugin.getPreferences("CodeAssistEnabled"):
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
330 return
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
331
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
332 idString = self.__idString(editor)
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
333 if not idString:
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
334 return
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
335
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
336 filename = editor.getFileName()
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
337 line, index = editor.getCursorPosition()
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
338 source = editor.text()
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
339 offset = len("".join(source.splitlines(True)[:line])) + index
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
340 maxfixes = self.__plugin.getPreferences("MaxFixes")
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
341
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
342 self.__ensureActive(idString)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
343 self.sendJson(
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
344 "getCompletions",
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
345 {
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
346 "FileName": filename,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
347 "Source": source,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
348 "Offset": offset,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
349 "MaxFixes": maxfixes,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
350 "CompletionText": acText,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
351 "SysPath": sys.path,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
352 },
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
353 idString=idString,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
354 )
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
355
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
356 def __processCompletionsResult(self, result):
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
357 """
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
358 Private method to process the completions sent by the client.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
359
202
a111134b5dc7 Started correcting the source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
360 @param result dictionary containing the result sent by the client
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
361 @type dict
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
362 """
291
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
363 names = []
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
364 for completion in result["Completions"]:
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
365 name = completion["Name"]
414
af1d72eccf91 Adjusted code for eric7 24.2 and newer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 413
diff changeset
366 name += PictureIDs.get(completion["CompletionType"], "")
291
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
367 names.append(name)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
368
365
f740b50380df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
369 if "Error" not in result:
f740b50380df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
370 editor = self.__vm.getOpenEditor(result["FileName"])
f740b50380df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
371 if editor is not None:
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
372 editor.completionsListReady(names, result["CompletionText"])
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
373
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
374 def getCallTips(self, editor, pos, commas): # noqa: U100
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 """
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 Public method to calculate calltips.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
377
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
378 @param editor reference to the editor object, that called this method
365
f740b50380df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
379 @type Editor
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
380 @param pos position in the text for the calltip
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
381 @type int
212
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
382 @param commas minimum number of commas contained in the calltip
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
383 @type int
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
384 @return list of possible calltips
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
385 @rtype list of str
100
2bfe9e3fad8d Ported the code completion and calltips support of the eric4 variant of this plug-in.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 """
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
387 if not self.__plugin.getPreferences("CodeAssistCalltipsEnabled"):
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
388 return []
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
389
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
390 # reset the calltips buffer
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
391 self.__calltips = None
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
392
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
393 idString = self.__idString(editor)
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
394 if not idString:
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
395 return []
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
396
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
397 filename = editor.getFileName()
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
398 source = editor.text()
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
399 line, index = editor.lineIndexFromPosition(pos)
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
400 offset = len("".join(source.splitlines(True)[:line])) + index
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
401 maxfixes = self.__plugin.getPreferences("CalltipsMaxFixes")
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
402
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
403 self.__ensureActive(idString)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
404 self.sendJson(
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
405 "getCallTips",
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
406 {
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
407 "FileName": filename,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
408 "Source": source,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
409 "Offset": offset,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
410 "MaxFixes": maxfixes,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
411 "SysPath": sys.path,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
412 },
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
413 idString=idString,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
414 )
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
415
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
416 # emulate the synchronous behaviour
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
417 timer = QTimer()
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
418 timer.setSingleShot(True)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
419 timer.start(5000) # 5s timeout
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
420 while self.__calltips is None and timer.isActive():
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
421 QCoreApplication.processEvents()
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
422
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
423 return [] if self.__calltips is None else self.__calltips
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
424
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
425 def __processCallTipsResult(self, result):
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
426 """
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
427 Private method to process the calltips sent by the client.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
428
202
a111134b5dc7 Started correcting the source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 200
diff changeset
429 @param result dictionary containing the result sent by the client
199
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
430 @type dict
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
431 """
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
432 if "Error" in result:
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
433 self.__calltips = []
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
434 else:
ae2ad82725b0 Implemented the distributed code assist calltips method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 198
diff changeset
435 self.__calltips = result["CallTips"]
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
436
104
f6049d39f83d Made the code completion work in case no project is open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
437 def reportChanged(self, filename, oldSource):
f6049d39f83d Made the code completion work in case no project is open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
438 """
f6049d39f83d Made the code completion work in case no project is open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
439 Public slot to report some changed sources.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
440
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
441 @param filename file name of the changed source
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
442 @type str
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
443 @param oldSource source code before the change
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
444 @type str
104
f6049d39f83d Made the code completion work in case no project is open.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 103
diff changeset
445 """
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
446 editor = self.__vm.getOpenEditor(filename)
200
1584892147ef Implemented the distributed code assist "report changed" method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 199
diff changeset
447 if editor is not None:
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
448 idString = self.__idString(editor)
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
449 if idString:
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
450 self.__ensureActive(idString)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
451 self.sendJson(
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
452 "reportChanged",
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
453 {
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
454 "FileName": filename,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
455 "OldSource": oldSource,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
456 },
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
457 idString=idString,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
458 )
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
459
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
460 def requestCodeDocumentation(self, editor):
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
461 """
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
462 Public method to request source code documentation for the given
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
463 editor.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
464
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
465 @param editor reference to the editor to get source code documentation
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
466 for
365
f740b50380df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
467 @type Editor
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
468 """
273
803593e12756 CodeAssistServer: added code to cope with the code documentation viewer not being active in the IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 270
diff changeset
469 if self.__documentationViewer is None:
803593e12756 CodeAssistServer: added code to cope with the code documentation viewer not being active in the IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 270
diff changeset
470 return
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
471
291
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
472 idString = self.__idString(editor)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
473
291
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
474 if not idString:
da88cb84ae30 CodeAssistServer, CodeAssistClient: moved determination of the Picture ID to the server side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 287
diff changeset
475 language = editor.getLanguage()
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
476 warning = self.tr("Language <b>{0}</b> is not supported.").format(language)
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
477 self.__documentationViewer.documentationReady(warning, isWarning=True)
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
478 return
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
479
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
480 filename = editor.getFileName()
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
481 source = editor.text()
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
482 line, index = editor.getCursorPosition()
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
483 offset = len("".join(source.splitlines(True)[:line])) + index
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
484 maxfixes = self.__plugin.getPreferences("CalltipsMaxFixes")
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
485
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
486 offset = editor.positionBefore(offset)
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
487 if editor.charAt(offset) == "(":
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
488 offset = editor.positionBefore(offset)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
489
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
490 self.__ensureActive(idString)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
491 self.sendJson(
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
492 "getDocumentation",
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
493 {
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
494 "FileName": filename,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
495 "Source": source,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
496 "Offset": offset,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
497 "MaxFixes": maxfixes,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
498 "SysPath": sys.path,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
499 },
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
500 idString=idString,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
501 )
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
502
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
503 def __processDocumentationResult(self, result):
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
504 """
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
505 Private method to process the documentation sent by the client.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
506
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
507 @param result dictionary containing the result sent by the client
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
508 @type dict with keys 'name', 'argspec', 'note', 'docstring', 'typ'
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
509 """
273
803593e12756 CodeAssistServer: added code to cope with the code documentation viewer not being active in the IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 270
diff changeset
510 if self.__documentationViewer is None:
803593e12756 CodeAssistServer: added code to cope with the code documentation viewer not being active in the IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 270
diff changeset
511 return
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
512
219
c85d02ca2fa9 Fixed an issue in the CodeAssistServer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
513 docu = None
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
514
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
515 if "Error" not in result:
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
516 documentationDict = result["DocumentationDict"]
219
c85d02ca2fa9 Fixed an issue in the CodeAssistServer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
517 if documentationDict:
c85d02ca2fa9 Fixed an issue in the CodeAssistServer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
518 if "module" in documentationDict:
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
519 if documentationDict["module"]:
368
c206d08c28e7 Removed some obsolete code and obsolete files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
520 documentationDict["note"] = self.tr(
c206d08c28e7 Removed some obsolete code and obsolete files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
521 "Present in <i>{0}</i> module"
c206d08c28e7 Removed some obsolete code and obsolete files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 365
diff changeset
522 ).format(documentationDict["module"])
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
523 del documentationDict["module"]
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
524
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
525 if "typ" in documentationDict:
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
526 if documentationDict["typ"] not in self.__typeMapping:
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
527 del documentationDict["typ"]
220
763ef93fabee Fixed an issue in the CodeAssistServer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 219
diff changeset
528 else:
320
91b171fdd85f Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 315
diff changeset
529 documentationDict["typ"] = self.__typeMapping[
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
530 documentationDict["typ"]
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
531 ]
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
532
232
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
533 if "note" not in documentationDict:
65d7d745543d Extended the code info provider to return the object type as well.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 223
diff changeset
534 documentationDict["note"] = ""
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
535
219
c85d02ca2fa9 Fixed an issue in the CodeAssistServer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 217
diff changeset
536 docu = documentationDict
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
537
223
d30d3b0d1df5 Adjusted to the latest eric6 development state.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 221
diff changeset
538 if docu is None:
d30d3b0d1df5 Adjusted to the latest eric6 development state.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 221
diff changeset
539 msg = self.tr("No documentation available.")
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
540 self.__documentationViewer.documentationReady(msg, isDocWarning=True)
223
d30d3b0d1df5 Adjusted to the latest eric6 development state.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 221
diff changeset
541 else:
d30d3b0d1df5 Adjusted to the latest eric6 development state.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 221
diff changeset
542 self.__documentationViewer.documentationReady(docu)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
543
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
544 def gotoDefinition(self, editor):
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
545 """
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
546 Public slot to find the definition for the word at the cursor position
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
547 and go to it.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
548
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
549 Note: This is executed upon a mouse click sequence.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
550
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
551 @param editor reference to the calling editor
365
f740b50380df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
552 @type Editor
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
553 """
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
554 if not self.__plugin.getPreferences("MouseClickEnabled"):
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
555 return
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
556
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
557 idString = self.__idString(editor)
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
558 if not idString:
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
559 return
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
560
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
561 filename = editor.getFileName()
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
562 source = editor.text()
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
563 line, index = editor.getCursorPosition()
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
564 offset = len("".join(source.splitlines(True)[:line])) + index
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
565
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
566 self.__ensureActive(idString)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
567
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
568 euuid = str(uuid.uuid4())
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
569 self.__editors[euuid] = editor
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
570
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
571 self.sendJson(
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
572 "gotoDefinition",
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
573 {
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
574 "FileName": filename,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
575 "Offset": offset,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
576 "Source": source,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
577 "SysPath": sys.path,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
578 "Uuid": euuid,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
579 },
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
580 idString=idString,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
581 )
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
582
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
583 def __gotoDefinitionResult(self, result):
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
584 """
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
585 Private method to handle the "Goto Definition" result 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
586 the client.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
587
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
588 @param result dictionary containing the result data
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
589 @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
590 """
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
591 if "Error" not in result:
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
592 # ignore errors silently
390
e6848531c902 Corrected an issue causing an exception if no definition was found in 'gotoDefinition'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 389
diff changeset
593 location = result.get("Location")
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
594 euuid = result["Uuid"]
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
595 if location:
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
596 try:
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
597 editor = self.__editors[euuid]
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
598 except KeyError:
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
599 editor = None
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
600
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
601 if (
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
602 editor is not None
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
603 and editor.getFileName() == location["ModulePath"]
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
604 and editor.getCursorPosition()[0] + 1 == location["Line"]
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
605 ):
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
606 # this was a click onto the definition line
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
607 # -> get references
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
608 idString = self.__idString(editor)
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
609 filename = editor.getFileName()
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
610 source = editor.text()
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
611 line, index = editor.getCursorPosition()
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
612 offset = len("".join(source.splitlines(True)[:line])) + index
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
613 self.sendJson(
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
614 "gotoReferences",
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
615 {
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
616 "FileName": filename,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
617 "Offset": offset,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
618 "Line": line + 1,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
619 "SysPath": sys.path,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
620 "Uuid": euuid,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
621 },
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
622 idString=idString,
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
623 )
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
624 return
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
625
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
626 self.__vm.openSourceFile(
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
627 location["ModulePath"], location["Line"], addNext=True
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
628 )
293
dd1c7ed6d880 Code Assist: started to move the Mouse Click handler to Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 291
diff changeset
629 else:
365
f740b50380df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
630 ericApp().getObject("UserInterface").statusBar().showMessage(
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
631 self.tr("Code Assist: No definition found"), 5000
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
632 )
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
633
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
634 with contextlib.suppress(KeyError):
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
635 del self.__editors[euuid]
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
636
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
637 def __processGotoReferencesResult(self, result):
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
638 """
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
639 Private method callback for the goto references result.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
640
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
641 @param result dictionary containing the result data
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
642 @type dict
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
643 """
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
644 with contextlib.suppress(ImportError):
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
645 from eric7.QScintilla.Editor import ReferenceItem # noqa: I101
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
646
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
647 if "Error" not in result:
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
648 # ignore errors silently
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
649 references = result["GotoReferencesList"]
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
650 euuid = result["Uuid"]
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
651 if references:
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
652 try:
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
653 editor = self.__editors[euuid]
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
654 except KeyError:
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
655 editor = None
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
656 if editor is not None:
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
657 referenceItemsList = [
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
658 ReferenceItem(
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
659 modulePath=ref["ModulePath"],
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
660 codeLine=ref["Code"],
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
661 line=ref["Line"],
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
662 column=0,
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
663 )
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
664 for ref in references
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
665 ]
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
666 editor.gotoReferenceHandler(referenceItemsList)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
667
370
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
668 with contextlib.suppress(KeyError):
9d246420f284 Added code to jump to references when clicked on a definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 368
diff changeset
669 del self.__editors[euuid]
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
670
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
671 #######################################################################
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
672 ## Methods below handle the network connection
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
673 #######################################################################
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
674
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
675 def handleCall(self, method, params):
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
676 """
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
677 Public method to handle a method call from the client.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
678
198
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
679 @param method requested method name
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
680 @type str
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
681 @param params dictionary with method specific parameters
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
682 @type dict
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
683 """
898d8b4187de IMplemented the distributed code assist completions method.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 197
diff changeset
684 self.__methodMapping[method](params)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
685
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
686 def __processClientException(self, params):
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
687 """
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
688 Private method to handle exceptions of the refactoring client.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
689
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
690 @param params dictionary containing the exception data
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
691 @type dict
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
692 """
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
693 if params["ExceptionType"] == "ProtocolError":
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
694 self.__ui.appendToStderr(
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
695 self.tr(
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
696 "The data received from the code assist"
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
697 " server could not be decoded. Please report"
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
698 " this issue with the received data to the"
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
699 " eric bugs email address.\n"
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
700 "Error: {0}\n"
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
701 "Data:\n{1}\n"
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
702 ).format(params["ExceptionValue"], params["ProtocolData"])
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
703 )
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
704 else:
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
705 self.__ui.appendToStderr(
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
706 self.tr(
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
707 "An exception happened in the code assist"
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
708 " client. Please report it to the eric bugs"
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
709 " email address.\n"
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
710 "Exception: {0}\n"
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
711 "Value: {1}\n"
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
712 "Traceback: {2}\n"
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
713 ).format(
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
714 params["ExceptionType"],
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
715 params["ExceptionValue"],
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
716 params["Traceback"],
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
717 )
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
718 )
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
719
285
247d62c682dc CodeAssistServer, RefactoringServer, JsonServer: adapted the code to the virtual environment extensions as of eric6 18.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 283
diff changeset
720 def __startCodeAssistClient(self, interpreter, idString, clientEnv):
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
721 """
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
722 Private method to start the code assist client with the given
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
723 interpreter.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
724
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
725 @param interpreter interpreter to be used for the code assist client
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
726 @type str
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
727 @param idString id of the client to be started
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
728 @type str
285
247d62c682dc CodeAssistServer, RefactoringServer, JsonServer: adapted the code to the virtual environment extensions as of eric6 18.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 283
diff changeset
729 @param clientEnv dictionary with environment variables to run the
247d62c682dc CodeAssistServer, RefactoringServer, JsonServer: adapted the code to the virtual environment extensions as of eric6 18.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 283
diff changeset
730 interpreter with
247d62c682dc CodeAssistServer, RefactoringServer, JsonServer: adapted the code to the virtual environment extensions as of eric6 18.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 283
diff changeset
731 @type dict
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
732 @return flag indicating a successful start of the client
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
733 @rtype bool
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
734 """
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
735 ok = False
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
736
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
737 if interpreter:
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
738 if idString == CodeAssistServer.IdProject:
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
739 configDir = self.__e5project.getProjectPath()
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
740 else:
420
fa31c3a0df1d Adjusted code for eric7 24.10 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 414
diff changeset
741 configDir = os.path.join(getConfigDir(), "rope", idString)
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
742 if not os.path.exists(configDir):
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
743 os.makedirs(configDir)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
744
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
745 client = os.path.join(os.path.dirname(__file__), "CodeAssistClient.py")
360
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
746 ok, exitCode = self.startClient(
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
747 interpreter,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
748 client,
406
923d7f711cae Adjusted code for eric7 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 404
diff changeset
749 clientArgs=[configDir, getPythonLibraryDirectory()],
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
750 idString=idString,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
751 environment=clientEnv,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
752 )
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
753 if not ok:
360
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
754 if exitCode == 42:
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
755 self.__ui.appendToStderr(
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
756 "CodeAssistServer: "
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
757 + self.tr("The rope refactoring library is not installed.\n")
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
758 )
360
2b35968f3d02 Version 8.0.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 354
diff changeset
759 else:
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
760 self.__ui.appendToStderr(
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
761 "CodeAssistServer: "
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
762 + self.tr(
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
763 "'{0}' is not supported because the configured"
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
764 " interpreter could not be started.\n"
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
765 ).format(idString)
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
766 )
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
767 else:
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
768 self.__ui.appendToStderr(
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
769 "CodeAssistServer: "
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
770 + self.tr(
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
771 "'{0}' is not supported because no suitable interpreter is"
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
772 " configured.\n"
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
773 ).format(idString)
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
774 )
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
775
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
776 return ok
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
777
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
778 def __ensureActive(self, idString):
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
779 """
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
780 Private method to ensure, that the requested client is active.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
781
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
782 A non-active client will be started.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
783
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
784 @param idString id of the client to be checked
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
785 @type str
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
786 @return flag indicating an active client
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
787 @rtype bool
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
788 """
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
789 ok = idString in self.connectionNames()
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
790 if not ok:
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
791 # client is not running
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
792 if idString == CodeAssistServer.IdProject:
285
247d62c682dc CodeAssistServer, RefactoringServer, JsonServer: adapted the code to the virtual environment extensions as of eric6 18.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 283
diff changeset
793 interpreter, clientEnv = self.__interpreterForProject()
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
794 else:
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
795 interpreter = ""
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
796 venvName = ""
285
247d62c682dc CodeAssistServer, RefactoringServer, JsonServer: adapted the code to the virtual environment extensions as of eric6 18.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 283
diff changeset
797 clientEnv = os.environ.copy()
287
09afe26b734c Changes to start the backend clients with a clean PATH setting.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 285
diff changeset
798 if "PATH" in clientEnv:
335
9438c2ed7732 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 326
diff changeset
799 clientEnv["PATH"] = self.__ui.getOriginalPathString()
365
f740b50380df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
800 venvManager = ericApp().getObject("VirtualEnvManager")
335
9438c2ed7732 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 326
diff changeset
801 if idString == "Python3":
9438c2ed7732 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 326
diff changeset
802 venvName = Preferences.getDebugger("Python3VirtualEnv")
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
803 if not venvName:
335
9438c2ed7732 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 326
diff changeset
804 venvName, _ = venvManager.getDefaultEnvironment()
9438c2ed7732 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 326
diff changeset
805 if venvName:
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
806 interpreter = venvManager.getVirtualenvInterpreter(venvName)
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
807
335
9438c2ed7732 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 326
diff changeset
808 execPath = venvManager.getVirtualenvExecPath(venvName)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
809
335
9438c2ed7732 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 326
diff changeset
810 # build a suitable environment
9438c2ed7732 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 326
diff changeset
811 if execPath:
9438c2ed7732 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 326
diff changeset
812 if "PATH" in clientEnv:
9438c2ed7732 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 326
diff changeset
813 clientEnv["PATH"] = os.pathsep.join(
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
814 [execPath, clientEnv["PATH"]]
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
815 )
335
9438c2ed7732 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 326
diff changeset
816 else:
9438c2ed7732 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 326
diff changeset
817 clientEnv["PATH"] = execPath
269
02bf946efbdc CodeAssistServer, RefactoringServer: changed to support the use of Virtual Environments as of eric 18.07.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 263
diff changeset
818 if interpreter:
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
819 ok = self.__startCodeAssistClient(interpreter, idString, clientEnv)
270
efc48da49a75 Fixed some bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 269
diff changeset
820 else:
efc48da49a75 Fixed some bugs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 269
diff changeset
821 ok = False
209
c1dce8630555 Improved handling of died connections/processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 203
diff changeset
822 return ok
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
823
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
824 def __interpreterForProject(self):
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
825 """
285
247d62c682dc CodeAssistServer, RefactoringServer, JsonServer: adapted the code to the virtual environment extensions as of eric6 18.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 283
diff changeset
826 Private method to determine the interpreter for the current project and
247d62c682dc CodeAssistServer, RefactoringServer, JsonServer: adapted the code to the virtual environment extensions as of eric6 18.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 283
diff changeset
827 the environment to run it.
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
828
285
247d62c682dc CodeAssistServer, RefactoringServer, JsonServer: adapted the code to the virtual environment extensions as of eric6 18.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 283
diff changeset
829 @return tuple containing the interpreter of the current project and the
247d62c682dc CodeAssistServer, RefactoringServer, JsonServer: adapted the code to the virtual environment extensions as of eric6 18.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 283
diff changeset
830 environment variables
247d62c682dc CodeAssistServer, RefactoringServer, JsonServer: adapted the code to the virtual environment extensions as of eric6 18.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 283
diff changeset
831 @rtype tuple of (str, dict)
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
832 """
287
09afe26b734c Changes to start the backend clients with a clean PATH setting.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 285
diff changeset
833 projectLanguage = self.__e5project.getProjectLanguage()
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
834 interpreter = ""
285
247d62c682dc CodeAssistServer, RefactoringServer, JsonServer: adapted the code to the virtual environment extensions as of eric6 18.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 283
diff changeset
835 clientEnv = os.environ.copy()
287
09afe26b734c Changes to start the backend clients with a clean PATH setting.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 285
diff changeset
836 if "PATH" in clientEnv:
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
837 clientEnv["PATH"] = self.__ui.getOriginalPathString()
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
838
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
839 if projectLanguage.startswith("Python"):
365
f740b50380df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 360
diff changeset
840 venvManager = ericApp().getObject("VirtualEnvManager")
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
841
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
842 # get virtual environment from project first
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
843 venvName = self.__e5project.getDebugProperty("VIRTUALENV")
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
844 if not venvName:
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
845 # get it from debugger settings next
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
846 if projectLanguage == "Python3":
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
847 venvName = Preferences.getDebugger("Python3VirtualEnv")
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
848 if not venvName:
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
849 venvName, _ = venvManager.getDefaultEnvironment()
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
850 else:
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
851 venvName = ""
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
852 if venvName:
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
853 interpreter = venvManager.getVirtualenvInterpreter(venvName)
392
b9b0a462123d Fixed an issue resolving the project specific interpreter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 390
diff changeset
854 if not interpreter:
406
923d7f711cae Adjusted code for eric7 23.1 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 404
diff changeset
855 interpreter = getPythonExecutable()
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
856 execPath = venvManager.getVirtualenvExecPath(venvName)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
857
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
858 # build a suitable environment
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
859 if execPath:
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
860 if "PATH" in clientEnv:
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
861 clientEnv["PATH"] = os.pathsep.join(
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
862 [execPath, clientEnv["PATH"]]
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
863 )
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
864 else:
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
865 clientEnv["PATH"] = execPath
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
866
285
247d62c682dc CodeAssistServer, RefactoringServer, JsonServer: adapted the code to the virtual environment extensions as of eric6 18.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 283
diff changeset
867 return interpreter, clientEnv
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
868
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
869 @pyqtSlot()
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
870 def handleNewConnection(self):
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
871 """
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
872 Public slot for new incoming connections from a client.
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
873 """
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
874 super().handleNewConnection()
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
875
195
5d614a567be3 Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 193
diff changeset
876 self.__updateEditorLanguageMapping()
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
877
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
878 self.__getConfigs()
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
879
197
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
880 def activate(self):
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
881 """
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
882 Public method to activate the code assist server.
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
883 """
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
884 self.__documentationViewer = self.__ui.documentationViewer()
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
885 if self.__documentationViewer is not None:
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
886 self.__documentationViewer.registerProvider(
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
887 "rope",
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
888 self.tr("Rope"),
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
889 self.requestCodeDocumentation,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
890 self.isSupportedLanguage,
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
891 )
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
892
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
893 self.__e5project.projectClosed.connect(self.__projectClosed)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
894
197
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
895 def deactivate(self):
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
896 """
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
897 Public method to deactivate the code assist server.
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
898 """
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
899 """
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
900 Public method to shut down the code assist server.
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
901 """
217
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
902 if self.__documentationViewer is not None:
874115c79ca7 Added support for the extraction of source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
903 self.__documentationViewer.unregisterProvider("rope")
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
904
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
905 for idString in self.connectionNames():
f05681349336 Changed code assist to use the new async interface of the Editor class, if it available and performed some code refactorings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 209
diff changeset
906 self.sendJson("closeProject", {}, flush=True, idString=idString)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
907
354
a967ff16629a - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 347
diff changeset
908 with contextlib.suppress(TypeError):
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
909 self.__e5project.projectClosed.disconnect(self.__projectClosed)
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
910
197
7046ac1bcb4b Continued implementing the distributed Code Assist.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 195
diff changeset
911 self.stopAllClients()
389
4f53795beff0 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 374
diff changeset
912
283
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
913 @pyqtSlot()
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
914 def __projectClosed(self):
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
915 """
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
916 Private slot to handle the projectClosed signal.
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
917 """
d98e971d9e4c CodeAssistServer: improved code completions and calltips for files belonging to a project (that may be using an interpreter different from the one used by eric or configured globally).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 280
diff changeset
918 self.stopClient(idString=CodeAssistServer.IdProject)

eric ide

mercurial