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