AssistantEric/Assistant.py

Tue, 10 Dec 2024 15:48:50 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 10 Dec 2024 15:48:50 +0100
branch
eric7
changeset 216
42ded9008f96
parent 212
24d6bae09db6
permissions
-rw-r--r--

Updated copyright for 2025.

2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
216
42ded9008f96 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 212
diff changeset
3 # Copyright (c) 2008 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the eric assistant, an alternative autocompletion and
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 calltips system.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10
18
b8ece0b784e8 Fixed a few unicode related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
11 import re
b8ece0b784e8 Fixed a few unicode related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
12
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
13 from PyQt6.QtCore import QObject
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
191
6798a98189da Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 190
diff changeset
15 from eric7.EricWidgets.EricApplication import ericApp
206
0e83bc0cc7fd Corrected some code style and formatting issues and prepared the code for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 201
diff changeset
16 from eric7.Utilities.ModuleParser import PY_SOURCE, Module
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 from .APIsManager import APIsManager, ApisNameProject
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
212
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
20 try:
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
21 from eric7.QScintilla.Editor import EditorIconId
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
22
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
23 AttributeID = EditorIconId.Attribute
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
24 AttributeProtectedID = EditorIconId.AttributeProtected
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
25 AttributePrivateID = EditorIconId.AttributePrivate
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
26 FromDocumentID = EditorIconId.FromDocument
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
27 MethodID = EditorIconId.Method
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
28 MethodProtectedID = EditorIconId.MethodProtected
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
29 MethodPrivateID = EditorIconId.MethodPrivate
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
30 except ImportError:
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
31 # backward compatibility for eric < 24.2
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
32 from eric7.QScintilla.Editor import Editor
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
33
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
34 AttributeID = Editor.AttributeID
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
35 AttributeProtectedID = Editor.AttributeProtectedID
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
36 AttributePrivateID = Editor.AttributePrivateID
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
37 FromDocumentID = Editor.FromDocumentID
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
38 MethodID = Editor.MethodID
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
39 MethodProtectedID = Editor.MethodProtectedID
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
40 MethodPrivateID = Editor.MethodPrivateID
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
41
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
42 AcsAPIs = 0x0001
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 AcsDocument = 0x0002
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
44 AcsProject = 0x0004
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
45
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 class Assistant(QObject):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 Class implementing the autocompletion and calltips system.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 """
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
51
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
52 def __init__(self, plugin, parent=None):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 Constructor
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
55
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 @param plugin reference to the plugin object
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
57 @type AssistantEricPlugin
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
58 @param parent parent
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
59 @type QObject
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 QObject.__init__(self, parent)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
62
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 self.__plugin = plugin
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 self.__ui = parent
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
65 self.__project = ericApp().getObject("Project")
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
66 self.__viewmanager = ericApp().getObject("ViewManager")
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
67 self.__pluginManager = ericApp().getObject("PluginManager")
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
68
69
9082f14126d9 Activated status messages for processing API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 66
diff changeset
69 self.__apisManager = APIsManager(self.__ui, self)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
70
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 self.__editors = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 self.__lastContext = None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 self.__lastFullContext = None
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
74
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 def activate(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 Public method to perform actions upon activation.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 """
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
79 self.__pluginManager.shutdown.connect(self.__shutdown)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
80
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
81 self.__ui.preferencesChanged.connect(self.__preferencesChanged)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
82
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
83 self.__viewmanager.editorOpenedEd.connect(self.__editorOpened)
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
84 self.__viewmanager.editorClosedEd.connect(self.__editorClosed)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
85
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 # preload the project APIs object
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 self.__apisManager.getAPIs(ApisNameProject)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
88
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 for editor in self.__viewmanager.getOpenEditors():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 self.__editorOpened(editor)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
91
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 def deactivate(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 Public method to perform actions upon deactivation.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 """
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
96 self.__pluginManager.shutdown.disconnect(self.__shutdown)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
97
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
98 self.__ui.preferencesChanged.disconnect(self.__preferencesChanged)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
99
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
100 self.__viewmanager.editorOpenedEd.disconnect(self.__editorOpened)
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
101 self.__viewmanager.editorClosedEd.disconnect(self.__editorClosed)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
102
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 self.__shutdown()
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
104
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 def __shutdown(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 Private slot to handle the shutdown signal.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 for editor in self.__editors[:]:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 self.__editorClosed(editor)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
111
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 self.__apisManager.deactivate()
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
113
206
0e83bc0cc7fd Corrected some code style and formatting issues and prepared the code for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 201
diff changeset
114 def setEnabled(
0e83bc0cc7fd Corrected some code style and formatting issues and prepared the code for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 201
diff changeset
115 self,
0e83bc0cc7fd Corrected some code style and formatting issues and prepared the code for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 201
diff changeset
116 key, # noqa: U100
0e83bc0cc7fd Corrected some code style and formatting issues and prepared the code for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 201
diff changeset
117 enabled, # noqa: U100
0e83bc0cc7fd Corrected some code style and formatting issues and prepared the code for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 201
diff changeset
118 ):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 Public method to enable or disable a feature.
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
121
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
122 @param key feature to set
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
123 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
124 @param enabled flag indicating the status
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
125 @type bool
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 for editor in self.__editors[:]:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 self.__editorClosed(editor)
174
5c66380af8e3 bug fix
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 172
diff changeset
129 for editor in self.__viewmanager.getOpenEditors():
5c66380af8e3 bug fix
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 172
diff changeset
130 self.__editorOpened(editor)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
131
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 def __editorOpened(self, editor):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 Private slot called, when a new editor was opened.
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
135
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
136 @param editor reference to the new editor
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
137 @type Editor
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 if self.__plugin.getPreferences("AutoCompletionEnabled"):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 self.__setAutoCompletionHook(editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 if self.__plugin.getPreferences("CalltipsEnabled"):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 self.__setCalltipsHook(editor)
208
5c77d52e97cd Fixed a bug connecting/disconnecting the "editorSaved" signal of an editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 206
diff changeset
143 if (api := self.__apisManager.getAPIs(ApisNameProject)) is not None:
5c77d52e97cd Fixed a bug connecting/disconnecting the "editorSaved" signal of an editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 206
diff changeset
144 editor.editorSaved.connect(api.editorSaved)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 self.__editors.append(editor)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
146
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 # preload the api to give the manager a chance to prepare the database
177
25cb41783971 - applied some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 174
diff changeset
148 language = editor.getApiLanguage()
119
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
149 if language:
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
150 projectType = self.__getProjectType(editor)
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
151 self.__apisManager.getAPIs(language, projectType=projectType)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
152
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 def __editorClosed(self, editor):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 Private slot called, when an editor was closed.
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
156
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
157 @param editor reference to the editor
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
158 @type Editor
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 if editor in self.__editors:
208
5c77d52e97cd Fixed a bug connecting/disconnecting the "editorSaved" signal of an editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 206
diff changeset
161 if (api := self.__apisManager.getAPIs(ApisNameProject)) is not None:
5c77d52e97cd Fixed a bug connecting/disconnecting the "editorSaved" signal of an editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 206
diff changeset
162 editor.editorSaved.disconnect(api.editorSaved)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 self.__editors.remove(editor)
140
a0ea7418d433 Removed bckward compatibility for eric6 before 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 136
diff changeset
164 if editor.getCompletionListHook("Assistant"):
a0ea7418d433 Removed bckward compatibility for eric6 before 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 136
diff changeset
165 self.__unsetAutoCompletionHook(editor)
a0ea7418d433 Removed bckward compatibility for eric6 before 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 136
diff changeset
166 if editor.getCallTipHook("Assistant"):
a0ea7418d433 Removed bckward compatibility for eric6 before 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 136
diff changeset
167 self.__unsetCalltipsHook(editor)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
168
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 def __preferencesChanged(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 Private method to handle a change of the global configuration.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 self.__apisManager.reloadAPIs()
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
174
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
175 def __getProjectType(self, editor):
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
176 """
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
177 Private method to determine the project type to be used.
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
178
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
179 @param editor reference to the editor to check
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
180 @type Editor
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
181 @return project type
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
182 @rtype str
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
183 """
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
184 filename = editor.getFileName()
177
25cb41783971 - applied some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 174
diff changeset
185 projectType = (
25cb41783971 - applied some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 174
diff changeset
186 self.__project.getProjectType()
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
187 if (
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
188 self.__project.isOpen()
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
189 and filename
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
190 and self.__project.isProjectFile(filename)
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
191 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
192 else ""
177
25cb41783971 - applied some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 174
diff changeset
193 )
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
194
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
195 return projectType
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
196
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 #################################
119
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
198 ## auto-completion methods below
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 #################################
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
200
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
201 def __recordSelectedContext(self, userListId, txt):
119
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
202 """
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
203 Private slot to handle the selection from the completion list to
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
204 record the selected completion context.
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
205
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
206 @param userListId the ID of the user list (should be 1)
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
207 @type int
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
208 @param txt the selected text
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
209 @type str
119
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
210 """
191
6798a98189da Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 190
diff changeset
211 from eric7.QScintilla.Editor import EditorAutoCompletionListID
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
212
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
213 if userListId == EditorAutoCompletionListID:
119
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
214 lst = txt.split()
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
215 if len(lst) > 1:
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
216 self.__lastFullContext = lst[1][1:].split(")")[0]
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
217 else:
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
218 self.__lastFullContext = None
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
219
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 def __setAutoCompletionHook(self, editor):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 Private method to set the autocompletion hook.
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
223
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
224 @param editor reference to the editor
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
225 @type Editor
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 """
140
a0ea7418d433 Removed bckward compatibility for eric6 before 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 136
diff changeset
227 editor.userListActivated.connect(self.__recordSelectedContext)
a0ea7418d433 Removed bckward compatibility for eric6 before 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 136
diff changeset
228 editor.addCompletionListHook("Assistant", self.getCompletionsList)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
229
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 def __unsetAutoCompletionHook(self, editor):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 Private method to unset the autocompletion hook.
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
233
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
234 @param editor reference to the editor
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
235 @type Editor
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 """
140
a0ea7418d433 Removed bckward compatibility for eric6 before 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 136
diff changeset
237 editor.userListActivated.disconnect(self.__recordSelectedContext)
a0ea7418d433 Removed bckward compatibility for eric6 before 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 136
diff changeset
238 editor.removeCompletionListHook("Assistant")
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
239
116
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
240 def getCompletionsList(self, editor, context):
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
241 """
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
242 Public method to get a list of possible completions.
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
243
116
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
244 @param editor reference to the editor object, that called this method
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
245 @type Editor
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
246 @param context flag indicating to autocomplete a context
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
247 @type bool
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
248 @return list of possible completions
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
249 @rtype list of str
116
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
250 """
177
25cb41783971 - applied some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 174
diff changeset
251 language = editor.getApiLanguage()
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
252 completeFromDocumentOnly = False
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
253 if language in ["", "Guessed"] or language.startswith("Pygments|"):
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
254 if self.__plugin.getPreferences("AutoCompletionSource") & AcsDocument:
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
255 completeFromDocumentOnly = True
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
256 else:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
257 return []
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
258
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
259 projectType = self.__getProjectType(editor)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
260
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 line, col = editor.getCursorPosition()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 sep = ""
132
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
263 if language and context:
206
0e83bc0cc7fd Corrected some code style and formatting issues and prepared the code for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 201
diff changeset
264 wc = re.sub(r"\w", "", editor.wordCharacters())
0e83bc0cc7fd Corrected some code style and formatting issues and prepared the code for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 201
diff changeset
265 pat = re.compile(r"\w{0}".format(re.escape(wc)))
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 text = editor.text(line)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
267
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 beg = text[:col]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 for wsep in editor.getLexer().autoCompletionWordSeparators():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 if beg.endswith(wsep):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 sep = wsep
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 break
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
273
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 depth = 0
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
275 while col > 0 and not pat.match(text[col - 1]):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 ch = text[col - 1]
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
277 if ch == ")":
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 depth = 1
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
279
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
280 # ignore everything back to the start of the
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 # corresponding parenthesis
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 col -= 1
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 while col > 0:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 ch = text[col - 1]
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
285 if ch == ")":
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 depth += 1
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
287 elif ch == "(":
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 depth -= 1
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 if depth == 0:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 break
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 col -= 1
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
292 elif ch == "(":
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 break
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 col -= 1
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
295
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 word = editor.getWordLeft(line, col)
41
333735b1a460 Corrected the context completion.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
297 if context and not sep:
333735b1a460 Corrected the context completion.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
298 # no separator was found -> no context completion
333735b1a460 Corrected the context completion.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
299 context = False
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 if context:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 self.__lastContext = word
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 self.__lastContext = None
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
304
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
305 prefix = ""
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
306 mod = None
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
307 beg = beg[: col + 1] if context else editor.text(line)[:col]
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
308 col = len(beg)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
309 wseps = editor.getLexer().autoCompletionWordSeparators() if language else []
132
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
310 if wseps:
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
311 wseps.append(" ")
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
312 if col > 0 and beg[col - 1] in wseps:
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
313 col -= 1
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
314 else:
132
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
315 while col > 0 and beg[col - 1] not in wseps:
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
316 col -= 1
51
b70595b49b3e Fixed a bug causing a traceback.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
317 if col > 0 and beg[col - 1] != " ":
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
318 col -= 1
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
319 prefix = editor.getWordLeft(line, col)
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
320 if editor.isPyFile():
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
321 src = editor.text()
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
322 fn = editor.getFileName()
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
323 if fn is None:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
324 fn = ""
206
0e83bc0cc7fd Corrected some code style and formatting issues and prepared the code for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 201
diff changeset
325 mod = Module("", fn, PY_SOURCE)
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
326 mod.scan(src)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
327
42
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
328 importCompletion = False
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
329 if editor.isPyFile():
42
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
330 # check, if we are completing a from import statement
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
331 maxLines = 10
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
332 text = editor.text(line).strip()
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
333 while maxLines and line > 0 and not text.startswith("from"):
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
334 line -= 1
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
335 textm1 = editor.text(line).strip()
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
336 if not textm1.endswith("\\"):
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
337 break
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
338 text = textm1[:-1] + text
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
339 maxLines -= 1
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
340 if text.startswith("from"):
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
341 tokens = text.split()
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
342 if len(tokens) >= 3 and tokens[2] == "import":
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
343 importCompletion = True
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
344 prefix = tokens[1]
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
345 col = len(prefix) - 1
132
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
346 wseps = editor.getLexer().autoCompletionWordSeparators()
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
347 while col >= 0 and prefix[col] not in wseps:
42
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
348 col -= 1
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
349 if col >= 0:
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
350 prefix = prefix[col + 1 :]
42
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
351 if word == tokens[2]:
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
352 word = ""
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
353
42
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
354 if word or importCompletion:
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
355 completionsList = self.__getCompletions(
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
356 word,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
357 context,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
358 prefix,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
359 language,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
360 projectType,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
361 mod,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
362 editor,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
363 importCompletion,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
364 completeFromDocumentOnly,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
365 sep,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
366 )
46
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
367 if len(completionsList) == 0 and prefix:
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
368 # searching with prefix didn't return anything, try without
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
369 completionsList = self.__getCompletions(
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
370 word,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
371 context,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
372 "",
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
373 language,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
374 projectType,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
375 mod,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
376 editor,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
377 importCompletion,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
378 completeFromDocumentOnly,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
379 sep,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
380 )
116
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
381 return completionsList
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
382
116
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
383 return []
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
384
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
385 def __getCompletions(
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
386 self,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
387 word,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
388 context,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
389 prefix,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
390 language,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
391 projectType,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
392 module,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
393 editor,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
394 importCompletion,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
395 documentOnly,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
396 sep,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
397 ):
46
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
398 """
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
399 Private method to get the list of possible completions.
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
400
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
401 @param word word (or wordpart) to complete
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
402 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
403 @param context flag indicating to autocomplete a context
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
404 @type bool
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
405 @param prefix prefix of the word to be completed
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
406 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
407 @param language programming language of the source
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
408 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
409 @param projectType type of the project
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
410 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
411 @param module reference to the scanned module info
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
412 @type Module
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
413 @param editor reference to the editor object
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
414 @type Editor
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
415 @param importCompletion flag indicating an import completion
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
416 @type bool
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
417 @param documentOnly flag indicating to complete from the document only
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
418 @type bool
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
419 @param sep separator string
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
420 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
421 @return list of possible completions
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
422 @rtype list of str
46
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
423 """
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
424 apiCompletionsList = []
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
425 docCompletionsList = []
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
426 projectCompletionList = []
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
427
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
428 if not documentOnly:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
429 if self.__plugin.getPreferences("AutoCompletionSource") & AcsAPIs:
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
430 api = self.__apisManager.getAPIs(language, projectType=projectType)
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
431 apiCompletionsList = self.__getApiCompletions(
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
432 api, word, context, prefix, module, editor
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
433 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
434
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
435 if self.__plugin.getPreferences("AutoCompletionSource") & AcsProject:
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
436 api = self.__apisManager.getAPIs(ApisNameProject)
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
437 projectCompletionList = self.__getApiCompletions(
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
438 api, word, context, prefix, module, editor
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
439 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
440
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
441 if (
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
442 self.__plugin.getPreferences("AutoCompletionSource") & AcsDocument
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
443 and not importCompletion
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
444 ):
46
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
445 docCompletionsList = self.__getDocumentCompletions(
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
446 editor, word, context, sep, prefix, module
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
447 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
448
46
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
449 completionsList = list(
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
450 set(apiCompletionsList)
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
451 .union(set(docCompletionsList))
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
452 .union(set(projectCompletionList))
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
453 )
46
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
454 return completionsList
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
455
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
456 def __getApiCompletions(self, api, word, context, prefix, module, editor):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458 Private method to determine a list of completions from an API object.
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
459
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
460 @param api reference to the API object to be used
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
461 @type APIsManager.DbAPIs
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
462 @param word word (or wordpart) to complete
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
463 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
464 @param context flag indicating to autocomplete a context
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
465 @type bool
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
466 @param prefix prefix of the word to be completed
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
467 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
468 @param module reference to the scanned module info
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
469 @type Module
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
470 @param editor reference to the editor object
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
471 @type Editor
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
472 @return list of possible completions
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
473 @rtype list of str
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475 completionsList = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
476 if api is not None:
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
477 if prefix and module and prefix == "self":
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
478 line, col = editor.getCursorPosition()
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
479 for cl in module.classes.values():
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
480 if line >= cl.lineno and (
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
481 cl.endlineno == -1 or line <= cl.endlineno
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
482 ):
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
483 completions = []
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
484 for superClass in cl.super:
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
485 if prefix == word:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
486 completions.extend(
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
487 api.getCompletions(
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
488 context=superClass,
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
489 followHierarchy=self.__plugin.getPreferences(
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
490 "AutoCompletionFollowHierarchy"
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
491 ),
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
492 )
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
493 )
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
494 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
495 completions.extend(
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
496 api.getCompletions(
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
497 start=word,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
498 context=superClass,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
499 followHierarchy=self.__plugin.getPreferences(
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
500 "AutoCompletionFollowHierarchy"
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
501 ),
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
502 )
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
503 )
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
504 for completion in completions:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
505 if not completion["context"]:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
506 entry = completion["completion"]
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
507 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
508 entry = "{0} ({1})".format(
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
509 completion["completion"], completion["context"]
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
510 )
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
511 if entry in completionsList:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
512 completionsList.remove(entry)
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
513 if completion["pictureId"]:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
514 entry += "?{0}".format(completion["pictureId"])
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
515 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
516 cont = False
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
517 regexp = re.compile(re.escape(entry) + r"\?\d{,2}")
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
518 for comp in completionsList:
182
0df33a07a6c8 Assistant: fixed a type causing an exception.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 180
diff changeset
519 if regexp.fullmatch(comp):
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
520 cont = True
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
521 break
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
522 if cont:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
523 continue
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
524 if entry not in completionsList:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
525 completionsList.append(entry)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
526
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
527 break
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
528 elif context:
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
529 completions = api.getCompletions(context=word)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
530 for completion in completions:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
531 entry = completion["completion"]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
532 if completion["pictureId"]:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
533 entry += "?{0}".format(completion["pictureId"])
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
534 if entry not in completionsList:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
535 completionsList.append(entry)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
536 else:
42
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
537 if prefix:
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
538 completions = api.getCompletions(start=word, context=prefix)
48
baeee0cf39eb Changed code such, that prefixed completions are retried without a prefix, if the retrieval with one didn't return anything (i.e. that is the old behavior).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
539 if not prefix or not completions:
baeee0cf39eb Changed code such, that prefixed completions are retried without a prefix, if the retrieval with one didn't return anything (i.e. that is the old behavior).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
540 # if no completions were returned try without prefix
42
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
541 completions = api.getCompletions(start=word)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
542 for completion in completions:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
543 if not completion["context"]:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
544 entry = completion["completion"]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
545 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
546 entry = "{0} ({1})".format(
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
547 completion["completion"], completion["context"]
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
548 )
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
549 if entry in completionsList:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
550 completionsList.remove(entry)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
551 if completion["pictureId"]:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
552 entry += "?{0}".format(completion["pictureId"])
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
553 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
554 cont = False
206
0e83bc0cc7fd Corrected some code style and formatting issues and prepared the code for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 201
diff changeset
555 regexp = re.compile(re.escape(entry) + r"\?\d{,2}")
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
556 for comp in completionsList:
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
557 if regexp.fullmatch(comp):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
558 cont = True
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
559 break
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
560 if cont:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
561 continue
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
562 if entry not in completionsList:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
563 completionsList.append(entry)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
564 return completionsList
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
565
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
566 def __getDocumentCompletions(
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
567 self, editor, word, context, sep, prefix, module, doHierarchy=False
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
568 ):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
569 """
35
6b706b02c2dd Small enhancement to the autocompletions change in order to show context for document derived completions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
570 Private method to determine autocompletion proposals from the document.
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
571
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
572 @param editor reference to the editor object
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
573 @type Editor
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
574 @param word string to be completed
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
575 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
576 @param context flag indicating to autocomplete a context
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
577 @type bool
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
578 @param sep separator string
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
579 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
580 @param prefix prefix of the word to be completed
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
581 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
582 @param module reference to the scanned module info
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
583 @type Module
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
584 @param doHierarchy flag indicating a hierarchical search
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
585 @type bool
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
586 @return list of possible completions
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
587 @rtype list of str
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
588 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
589 completionsList = []
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
590
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
591 prefixFound = False
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
592 if prefix and module:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
593 line, col = editor.getCursorPosition()
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
594 if prefix in ["cls", "self"]:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
595 prefixFound = True
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
596 for cl in module.classes.values():
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
597 if line >= cl.lineno and (
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
598 cl.endlineno == -1 or line <= cl.endlineno
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
599 ):
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
600 comps = []
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
601 for method in cl.methods.values():
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
602 if method.name == "__init__":
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
603 continue
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
604 # determine icon type
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
605 if method.isPrivate():
212
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
606 iconID = MethodPrivateID
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
607 elif method.isProtected():
212
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
608 iconID = MethodProtectedID
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
609 else:
212
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
610 iconID = MethodID
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
611 if (
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
612 prefix == "cls" and method.modifier == method.Class
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
613 ) or prefix == "self":
35
6b706b02c2dd Small enhancement to the autocompletions change in order to show context for document derived completions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
614 comps.append((method.name, cl.name, iconID))
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
615 if prefix != "cls":
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
616 for attribute in cl.attributes.values():
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
617 # determine icon type
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
618 if attribute.isPrivate():
212
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
619 iconID = AttributePrivateID
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
620 elif attribute.isProtected():
212
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
621 iconID = AttributeProtectedID
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
622 else:
212
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
623 iconID = AttributeID
35
6b706b02c2dd Small enhancement to the autocompletions change in order to show context for document derived completions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
624 comps.append((attribute.name, cl.name, iconID))
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
625 for attribute in cl.globals.values():
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
626 # determine icon type
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
627 if attribute.isPrivate():
212
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
628 iconID = AttributePrivateID
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
629 elif attribute.isProtected():
212
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
630 iconID = AttributeProtectedID
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
631 else:
212
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
632 iconID = AttributeID
35
6b706b02c2dd Small enhancement to the autocompletions change in order to show context for document derived completions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
633 comps.append((attribute.name, cl.name, iconID))
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
634
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
635 if word != prefix:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
636 completionsList.extend(
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
637 [
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
638 "{0} ({1})?{2}".format(c[0], c[1], c[2])
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
639 for c in comps
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
640 if c[0].startswith(word)
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
641 ]
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
642 )
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
643 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
644 completionsList.extend(
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
645 [
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
646 "{0} ({1})?{2}".format(c[0], c[1], c[2])
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
647 for c in comps
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
648 ]
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
649 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
650
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
651 for sup in cl.super:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
652 if sup in module.classes:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
653 if word == prefix:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
654 nword = sup
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
655 else:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
656 nword = word
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
657 completionsList.extend(
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
658 self.__getDocumentCompletions(
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
659 editor,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
660 nword,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
661 context,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
662 sep,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
663 sup,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
664 module,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
665 doHierarchy=True,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
666 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
667 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
668
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
669 break
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
670 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
671 # possibly completing a named class attribute or method
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
672 if prefix in module.classes:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
673 prefixFound = True
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
674 cl = module.classes[prefix]
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
675 comps = []
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
676 for method in cl.methods.values():
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
677 if method.name == "__init__":
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
678 continue
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
679 if doHierarchy or method.modifier in [
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
680 method.Class,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
681 method.Static,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
682 ]:
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
683 # determine icon type
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
684 if method.isPrivate():
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
685 if doHierarchy:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
686 continue
212
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
687 iconID = MethodPrivateID
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
688 elif method.isProtected():
212
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
689 iconID = MethodProtectedID
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
690 else:
212
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
691 iconID = MethodID
35
6b706b02c2dd Small enhancement to the autocompletions change in order to show context for document derived completions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
692 comps.append((method.name, cl.name, iconID))
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
693 for attribute in cl.globals.values():
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
694 # determine icon type
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
695 if attribute.isPrivate():
212
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
696 iconID = AttributePrivateID
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
697 elif attribute.isProtected():
212
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
698 iconID = AttributeProtectedID
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
699 else:
212
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
700 iconID = AttributeID
35
6b706b02c2dd Small enhancement to the autocompletions change in order to show context for document derived completions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
701 comps.append((attribute.name, cl.name, iconID))
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
702
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
703 if word != prefix:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
704 completionsList.extend(
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
705 [
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
706 "{0} ({1})?{2}".format(c[0], c[1], c[2])
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
707 for c in comps
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
708 if c[0].startswith(word)
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
709 ]
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
710 )
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
711 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
712 completionsList.extend(
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
713 ["{0} ({1})?{2}".format(c[0], c[1], c[2]) for c in comps]
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
714 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
715
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
716 for sup in cl.super:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
717 if sup in module.classes:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
718 if word == prefix:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
719 nword = sup
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
720 else:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
721 nword = word
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
722 completionsList.extend(
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
723 self.__getDocumentCompletions(
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
724 editor,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
725 nword,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
726 context,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
727 sep,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
728 sup,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
729 module,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
730 doHierarchy=True,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
731 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
732 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
733
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
734 if not prefixFound:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
735 currentPos = editor.currentPosition()
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
736 if context:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
737 word += sep
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
738
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
739 if editor.isUtf8():
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
740 sword = word.encode("utf-8")
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
741 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
742 sword = word
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
743 res = editor.findFirstTarget(
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
744 sword,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
745 False,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
746 editor.autoCompletionCaseSensitivity(),
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
747 False,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
748 begline=0,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
749 begindex=0,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
750 ws_=True,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
751 )
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
752 while res:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
753 start, length = editor.getFoundTarget()
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
754 pos = start + length
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
755 if pos != currentPos:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
756 if context:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
757 completion = ""
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
758 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
759 completion = word
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
760 line, index = editor.lineIndexFromPosition(pos)
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
761 curWord = editor.getWord(line, index, useWordChars=False)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
762 completion += curWord[len(completion) :]
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
763 if (
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
764 completion
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
765 and completion not in completionsList
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
766 and completion != word
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
767 ):
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
768 completionsList.append(
212
24d6bae09db6 Adjusted some code for eric7 24.2 and newer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 210
diff changeset
769 "{0}?{1}".format(completion, FromDocumentID)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
770 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
771
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
772 res = editor.findNextTarget()
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
773
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
774 completionsList.sort()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
775 return completionsList
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
776
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
777 ###########################
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
778 ## calltips methods below
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
779 ###########################
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
780
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
781 def __setCalltipsHook(self, editor):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
782 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
783 Private method to set the calltip hook.
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
784
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
785 @param editor reference to the editor
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
786 @type Editor
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
787 """
140
a0ea7418d433 Removed bckward compatibility for eric6 before 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 136
diff changeset
788 editor.addCallTipHook("Assistant", self.calltips)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
789
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
790 def __unsetCalltipsHook(self, editor):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
791 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
792 Private method to unset the calltip hook.
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
793
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
794 @param editor reference to the editor
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
795 @type Editor
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
796 """
140
a0ea7418d433 Removed bckward compatibility for eric6 before 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 136
diff changeset
797 editor.removeCallTipHook("Assistant")
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
798
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
799 def calltips(self, editor, pos, commas):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
800 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
801 Public method to return a list of calltips.
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
802
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
803 @param editor reference to the editor
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
804 @type Editor
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
805 @param pos position in the text for the calltip
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
806 @type int
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
807 @param commas minimum number of commas contained in the calltip
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
808 @type int
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
809 @return list of possible calltips
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
810 @rtype list of str
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
811 """
177
25cb41783971 - applied some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 174
diff changeset
812 language = editor.getApiLanguage()
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
813 completeFromDocumentOnly = False
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
814 if language in ["", "Guessed"] or language.startswith("Pygments|"):
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
815 if self.__plugin.getPreferences("AutoCompletionSource") & AcsDocument:
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
816 completeFromDocumentOnly = True
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
817 else:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
818 return []
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
819
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
820 projectType = self.__getProjectType(editor)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
821
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
822 line, col = editor.lineIndexFromPosition(pos)
206
0e83bc0cc7fd Corrected some code style and formatting issues and prepared the code for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 201
diff changeset
823 wc = re.sub(r"\w", "", editor.wordCharacters())
0e83bc0cc7fd Corrected some code style and formatting issues and prepared the code for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 201
diff changeset
824 pat = re.compile(r"\w{0}".format(re.escape(wc)))
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
825 text = editor.text(line)
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
826 while col > 0 and not pat.match(text[col - 1]):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
827 col -= 1
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
828 word = editor.getWordLeft(line, col)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
829
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
830 prefix = ""
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
831 mod = None
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
832 beg = editor.text(line)[:col]
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
833 col = len(beg)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
834 wseps = editor.getLexer().autoCompletionWordSeparators() if language else []
132
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
835 if wseps:
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
836 if col > 0 and beg[col - 1] in wseps:
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
837 col -= 1
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
838 else:
132
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
839 while col > 0 and beg[col - 1] not in wseps + [" ", "\t"]:
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
840 col -= 1
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
841 if col >= 0:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
842 col -= 1
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
843 prefix = editor.getWordLeft(line, col)
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
844 if editor.isPyFile():
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
845 src = editor.text()
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
846 fn = editor.getFileName()
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
847 if fn is None:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
848 fn = ""
206
0e83bc0cc7fd Corrected some code style and formatting issues and prepared the code for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 201
diff changeset
849 mod = Module("", fn, PY_SOURCE)
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
850 mod.scan(src)
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
851
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
852 apiCalltips = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
853 projectCalltips = []
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
854 documentCalltips = []
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
855
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
856 if not completeFromDocumentOnly:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
857 if self.__plugin.getPreferences("AutoCompletionSource") & AcsAPIs:
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
858 api = self.__apisManager.getAPIs(language, projectType=projectType)
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
859 if api is not None:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
860 apiCalltips = self.__getApiCalltips(
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
861 api, word, commas, prefix, mod, editor
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
862 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
863
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
864 if self.__plugin.getPreferences("AutoCompletionSource") & AcsProject:
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
865 api = self.__apisManager.getAPIs(ApisNameProject)
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
866 projectCalltips = self.__getApiCalltips(
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
867 api, word, commas, prefix, mod, editor
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
868 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
869
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
870 if self.__plugin.getPreferences("AutoCompletionSource") & AcsDocument:
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
871 documentCalltips = self.__getDocumentCalltips(word, prefix, mod, editor)
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
872
189
c0d638327085 Fixed a code style issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 186
diff changeset
873 return sorted(
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
874 set(apiCalltips).union(set(projectCalltips)).union(set(documentCalltips))
189
c0d638327085 Fixed a code style issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 186
diff changeset
875 )
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
876
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
877 def __getApiCalltips(self, api, word, commas, prefix, module, editor):
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
878 """
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
879 Private method to determine calltips from APIs.
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
880
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
881 @param api reference to the API object to be used
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
882 @type APIsManager.DbAPIs
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
883 @param word function to get calltips for
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
884 @type str
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
885 @param commas minimum number of commas contained in the calltip
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
886 @type int
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
887 @param prefix prefix of the word to be completed
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
888 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
889 @param module reference to the scanned module info
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
890 @type Module
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
891 @param editor reference to the editor object
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
892 @type Editor
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
893 @return list of calltips
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
894 @rtype list of str
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
895 """
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
896 calltips = []
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
897 if prefix and module and prefix == "self":
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
898 line, col = editor.getCursorPosition()
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
899 for cl in module.classes.values():
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
900 if line >= cl.lineno and (cl.endlineno == -1 or line <= cl.endlineno):
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
901 for superClass in cl.super:
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
902 calltips.extend(
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
903 api.getCalltips(
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
904 word,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
905 commas,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
906 superClass,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
907 None,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
908 self.__plugin.getPreferences("CallTipsContextShown"),
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
909 followHierarchy=self.__plugin.getPreferences(
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
910 "CallTipsFollowHierarchy"
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
911 ),
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
912 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
913 )
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
914 break
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
915 else:
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
916 calltips = api.getCalltips(
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
917 word,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
918 commas,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
919 self.__lastContext,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
920 self.__lastFullContext,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
921 self.__plugin.getPreferences("CallTipsContextShown"),
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
922 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
923
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
924 return calltips
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
925
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
926 def __getDocumentCalltips(self, word, prefix, module, editor, doHierarchy=False):
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
927 """
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
928 Private method to determine calltips from the document.
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
929
180
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
930 @param word function to get calltips for
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
931 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
932 @param prefix prefix of the word to be completed
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
933 @type str
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
934 @param module reference to the scanned module info
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
935 @type Module
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
936 @param editor reference to the editor object
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
937 @type Editor
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
938 @param doHierarchy flag indicating a hierarchical search
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
939 @type bool
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
940 @return list of calltips
89ff060ef0d9 Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 177
diff changeset
941 @rtype list of str
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
942 """
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
943 calltips = []
132
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
944 if module and bool(editor.getLexer()):
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
945 if prefix:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
946 # prefix can be 'self', 'cls' or a class name
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
947 sep = editor.getLexer().autoCompletionWordSeparators()[0]
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
948 if prefix in ["self", "cls"]:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
949 line, col = editor.getCursorPosition()
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
950 for cl in module.classes.values():
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
951 if line >= cl.lineno and (
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
952 cl.endlineno == -1 or line <= cl.endlineno
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
953 ):
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
954 if word in cl.methods:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
955 method = cl.methods[word]
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
956 if prefix == "self" or (
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
957 prefix == "cls" and method.modifier == method.Class
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
958 ):
98
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
959 calltips.append(
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
960 "{0}{1}{2}({3})".format(
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
961 cl.name,
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
962 sep,
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
963 word,
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
964 ", ".join(method.parameters[1:]),
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
965 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
966 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
967
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
968 for sup in cl.super:
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
969 calltips.extend(
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
970 self.__getDocumentCalltips(
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
971 word, sup, module, editor, doHierarchy=True
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
972 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
973 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
974
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
975 break
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
976 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
977 if prefix in module.classes:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
978 cl = module.classes[prefix]
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
979 if word in cl.methods:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
980 method = cl.methods[word]
98
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
981 if doHierarchy or method.modifier == method.Class:
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
982 calltips.append(
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
983 "{0}{1}{2}({3})".format(
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
984 cl.name,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
985 sep,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
986 word,
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
987 ", ".join(method.parameters[1:]),
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
988 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
989 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
990
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
991 for sup in cl.super:
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
992 calltips.extend(
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
993 self.__getDocumentCalltips(
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
994 word, sup, module, editor, doHierarchy=True
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
995 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
996 )
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
997 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
998 # calltip for a module function or class
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
999 if word in module.functions:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
1000 fun = module.functions[word]
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
1001 calltips.append("{0}({1})".format(word, ", ".join(fun.parameters)))
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
1002 elif word in module.classes:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
1003 cl = module.classes[word]
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
1004 if "__init__" in cl.methods:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
1005 method = cl.methods["__init__"]
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
1006 calltips.append(
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
1007 "{0}({1})".format(word, ", ".join(method.parameters[1:]))
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
1008 )
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
1009
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
1010 return calltips
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
1011
190
3104a5a3ea13 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 189
diff changeset
1012
163
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
1013 #
842fce9b31ce Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 156
diff changeset
1014 # eflag: noqa = M834, W605

eric ide

mercurial