Sun, 02 Oct 2011 18:41:38 +0200
Fixed the autocompleter.
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 | |
25
6a68405feb84
Updated copyright notice.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
19
diff
changeset
|
3 | # Copyright (c) 2008 - 2011 Detlev Offenbach <detlev@die-offenbachs.de> |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing the eric assistant, an alternative autocompletion and |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | calltips system. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | |
18
b8ece0b784e8
Fixed a few unicode related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
11 | import re |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
12 | import imp |
18
b8ece0b784e8
Fixed a few unicode related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
13 | |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
14 | from PyQt4.QtCore import QRegExp, QObject |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | from E5Gui.E5Application import e5App |
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 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | from QScintilla.Editor import Editor |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | import Preferences |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
23 | from Utilities.ModuleParser import Module |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
25 | AcsAPIs = 0x0001 |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | AcsDocument = 0x0002 |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
27 | AcsProject = 0x0004 |
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
28 | AcsOther = 0x1000 |
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
29 | |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | class Assistant(QObject): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | Class implementing the autocompletion and calltips system. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | """ |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
35 | def __init__(self, plugin, parent=None): |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | Constructor |
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 | @param plugin reference to the plugin object |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | @param parent parent (QObject) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | QObject.__init__(self, parent) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | self.__plugin = plugin |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | self.__ui = parent |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | self.__project = e5App().getObject("Project") |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | self.__viewmanager = e5App().getObject("ViewManager") |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | self.__pluginManager = e5App().getObject("PluginManager") |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
50 | self.__apisManager = APIsManager(self) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | self.__editors = [] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | self.__completingContext = False |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | self.__lastContext = None |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | self.__lastFullContext = None |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | self.__fromDocumentID = Editor.FromDocumentID |
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 | def activate(self): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | Public method to perform actions upon activation. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | """ |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
63 | self.__pluginManager.shutdown.connect(self.__shutdown) |
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
64 | |
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
65 | self.__ui.preferencesChanged.connect(self.__preferencesChanged) |
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
66 | |
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
67 | self.__viewmanager.editorOpenedEd.connect(self.__editorOpened) |
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
68 | self.__viewmanager.editorClosedEd.connect(self.__editorClosed) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | # preload the project APIs object |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | self.__apisManager.getAPIs(ApisNameProject) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | for editor in self.__viewmanager.getOpenEditors(): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | self.__editorOpened(editor) |
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 | def deactivate(self): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | Public method to perform actions upon deactivation. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | """ |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
80 | self.__pluginManager.shutdown.disconnect(self.__shutdown) |
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
81 | |
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
82 | self.__ui.preferencesChanged.disconnect(self.__preferencesChanged) |
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
83 | |
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
84 | self.__viewmanager.editorOpenedEd.disconnect(self.__editorOpened) |
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
85 | self.__viewmanager.editorClosedEd.disconnect(self.__editorClosed) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | self.__shutdown() |
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 | def __shutdown(self): |
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 | Private slot to handle the shutdown signal. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | for editor in self.__editors[:]: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | self.__editorClosed(editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | self.__apisManager.deactivate() |
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 | def setEnabled(self, key, enabled): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | Public method to enable or disable a feature. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | @param key feature to set (string) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | @param enabled flag indicating the status (boolean) |
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) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | if enabled: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | for editor in self.__viewmanager.getOpenEditors(): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | self.__editorOpened(editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | def __editorOpened(self, editor): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | Private slot called, when a new editor was opened. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | @param editor reference to the new editor (QScintilla.Editor) |
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( |
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
122 | self.__apisManager.getAPIs(ApisNameProject).editorSaved) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | self.__editors.append(editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | # preload the api to give the manager a chance to prepare the database |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | language = editor.getLanguage() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | if language == "": |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | return |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | self.__apisManager.getAPIs(language) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | def __editorClosed(self, editor): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | Private slot called, when an editor was closed. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | @param editor reference to the editor (QScintilla.Editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | if editor in self.__editors: |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
138 | editor.editorSaved.disconnect( |
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
139 | self.__apisManager.getAPIs(ApisNameProject).editorSaved) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | self.__editors.remove(editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | if editor.autoCompletionHook() == self.autocomplete: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | self.__unsetAutoCompletionHook(editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | if editor.callTipHook() == self.calltips: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | self.__unsetCalltipsHook(editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | def __preferencesChanged(self): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | 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
|
149 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | self.__apisManager.reloadAPIs() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | def __getCharacter(self, pos, editor): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | Private method to get the character to the left of the current position |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | in the current line. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | @param pos position to get character at (integer) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | @param editor reference to the editor object to work with (QScintilla.Editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | @return requested character or "", if there are no more (string) and |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | the next position (i.e. pos - 1) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | if pos <= 0: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | return "", pos |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | pos -= 1 |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | ch = editor.charAt(pos) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | # Don't go past the end of the previous line |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | if ch == '\n' or ch == '\r': |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | return "", pos |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | return ch, pos |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | ################################# |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
175 | ## autocompletion methods below |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | ################################# |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | def __completionListSelected(self, id, txt): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | Private slot to handle the selection from the completion list. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | @param id the ID of the user list (should be 1) (integer) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | @param txt the selected text (string) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | from QScintilla.Editor import EditorAutoCompletionListID |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | editor = self.sender() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | if id == EditorAutoCompletionListID: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | lst = txt.split() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | if len(lst) > 1: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | txt = lst[0] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | self.__lastFullContext = lst[1][1:].split(")")[0] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | else: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | self.__lastFullContext = None |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | if Preferences.getEditor("AutoCompletionReplaceWord"): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | editor.selectCurrentWord() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | editor.removeSelectedText() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | line, col = editor.getCursorPosition() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | else: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | line, col = editor.getCursorPosition() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202 | wLeft = editor.getWordLeft(line, col) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | if not txt.startswith(wLeft): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
204 | editor.selectCurrentWord() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | editor.removeSelectedText() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | line, col = editor.getCursorPosition() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | elif wLeft: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | txt = txt[len(wLeft):] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209 | editor.insert(txt) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210 | editor.setCursorPosition(line, col + len(txt)) |
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 | def __setAutoCompletionHook(self, editor): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214 | Private method to set the autocompletion hook. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216 | @param editor reference to the editor (QScintilla.Editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | """ |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
218 | editor.userListActivated.connect(self.__completionListSelected) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
219 | editor.setAutoCompletionHook(self.autocomplete) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | def __unsetAutoCompletionHook(self, editor): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | Private method to unset the autocompletion hook. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
224 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225 | @param editor reference to the editor (QScintilla.Editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227 | editor.unsetAutoCompletionHook() |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
228 | editor.userListActivated.disconnect(self.__completionListSelected) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
230 | def autocomplete(self, editor, context): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
231 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
232 | Public method to determine the autocompletion proposals. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
233 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234 | @param editor reference to the editor object, that called this method |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
235 | (QScintilla.Editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
236 | @param context flag indicating to autocomplete a context (boolean) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
237 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
238 | from QScintilla.Editor import EditorAutoCompletionListID |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
239 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
240 | if editor.isListActive(): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241 | editor.cancelList() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
242 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | language = editor.getLanguage() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | if language == "": |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
245 | return |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
246 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
247 | line, col = editor.getCursorPosition() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
248 | self.__completingContext = context |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
249 | apiCompletionsList = [] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | docCompletionsList = [] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | projectCompletionList = [] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
252 | sep = "" |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
253 | if context: |
18
b8ece0b784e8
Fixed a few unicode related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
254 | 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
|
255 | 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
|
256 | text = editor.text(line) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
257 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
258 | beg = text[:col] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
259 | for wsep in editor.getLexer().autoCompletionWordSeparators(): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
260 | if beg.endswith(wsep): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
261 | sep = wsep |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
262 | break |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
263 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
264 | depth = 0 |
18
b8ece0b784e8
Fixed a few unicode related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
265 | while col > 0 and \ |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
266 | not pat.match(text[col - 1]): |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
267 | ch = text[col - 1] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
268 | if ch == ')': |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
269 | depth = 1 |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
270 | |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
271 | # 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
|
272 | # corresponding parenthesis |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
273 | col -= 1 |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
274 | while col > 0: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
275 | ch = text[col - 1] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
276 | if ch == ')': |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
277 | depth += 1 |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
278 | elif ch == '(': |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
279 | depth -= 1 |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
280 | if depth == 0: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
281 | break |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
282 | col -= 1 |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
283 | elif ch == '(': |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
284 | break |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
285 | col -= 1 |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
286 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
287 | word = editor.getWordLeft(line, col) |
41
333735b1a460
Corrected the context completion.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
39
diff
changeset
|
288 | if context and not sep: |
333735b1a460
Corrected the context completion.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
39
diff
changeset
|
289 | # no separator was found -> no context completion |
333735b1a460
Corrected the context completion.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
39
diff
changeset
|
290 | context = False |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
291 | if context: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
292 | self.__lastContext = word |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
293 | else: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
294 | self.__lastContext = None |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
295 | |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
296 | prefix = "" |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
297 | mod = None |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
298 | if context: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
299 | beg = beg[:col + 1] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
300 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
301 | beg = editor.text(line)[:col] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
302 | col = len(beg) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
303 | wsep = editor.getLexer().autoCompletionWordSeparators() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
304 | if wsep: |
43
263a7d088c75
Fixed the autocompleter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
42
diff
changeset
|
305 | wsep.append(" ") |
38
55f259fad55b
Fixed an issue in the latest code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
36
diff
changeset
|
306 | if col > 0 and beg[col - 1] in wsep: |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
307 | col -= 1 |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
308 | else: |
38
55f259fad55b
Fixed an issue in the latest code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
36
diff
changeset
|
309 | while col > 0 and beg[col - 1] not in wsep: |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
310 | col -= 1 |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
311 | if col >= 0: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
312 | col -= 1 |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
313 | prefix = editor.getWordLeft(line, col) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
314 | if editor.isPy2File() or editor.isPy3File(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
315 | src = editor.text() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
316 | fn = editor.getFileName() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
317 | if fn is None: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
318 | fn = "" |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
319 | 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
|
320 | mod.scan(src) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
321 | |
42
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
322 | importCompletion = False |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
323 | if editor.isPy2File() or editor.isPy3File(): |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
324 | # 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
|
325 | maxLines = 10 |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
326 | text = editor.text(line).strip() |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
327 | 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
|
328 | line -= 1 |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
329 | textm1 = editor.text(line).strip() |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
330 | if not textm1.endswith("\\"): |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
331 | break |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
332 | text = textm1[:-1] + text |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
333 | maxLines -= 1 |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
334 | if text.startswith("from"): |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
335 | tokens = text.split() |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
336 | 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
|
337 | importCompletion = True |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
338 | prefix = tokens[1] |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
339 | col = len(prefix) - 1 |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
340 | wsep = editor.getLexer().autoCompletionWordSeparators() |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
341 | while col >= 0 and prefix[col] not in wsep: |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
342 | col -= 1 |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
343 | if col >= 0: |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
344 | prefix = prefix[col + 1:] |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
345 | if word == tokens[2]: |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
346 | word = "" |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
347 | |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
348 | if word or importCompletion: |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
349 | if self.__plugin.getPreferences("AutoCompletionSource") & AcsAPIs: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
350 | api = self.__apisManager.getAPIs(language) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
351 | apiCompletionsList = self.__getApiCompletions( |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
352 | api, word, context, prefix, mod, editor) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
353 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
354 | if self.__plugin.getPreferences("AutoCompletionSource") & AcsProject: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
355 | api = self.__apisManager.getAPIs(ApisNameProject) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
356 | projectCompletionList = self.__getApiCompletions( |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
357 | api, word, context, prefix, mod, editor) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
358 | |
42
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
359 | if self.__plugin.getPreferences("AutoCompletionSource") & AcsDocument and \ |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
360 | not importCompletion: |
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
|
361 | docCompletionsList = self.__getDocumentCompletions( |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
362 | editor, word, context, sep, prefix, mod) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
363 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
364 | completionsList = list( |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
365 | set(apiCompletionsList) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
366 | .union(set(docCompletionsList)) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
367 | .union(set(projectCompletionList)) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
368 | ) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
369 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
370 | if len(completionsList) > 0: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
371 | completionsList.sort() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
372 | editor.showUserList(EditorAutoCompletionListID, completionsList) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
373 | |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
374 | 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
|
375 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
376 | Private method to determine a list of completions from an API object. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
377 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
378 | @param api reference to the API object to be used (APIsManager.DbAPIs) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
379 | @param word word (or wordpart) to complete (string) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
380 | @param context flag indicating to autocomplete a context (boolean) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
381 | @param prefix prefix of the word to be completed (string) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
382 | @param module reference to the scanned module info (Module) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
383 | @param editor reference to the editor object (QScintilla.Editor) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
384 | @return list of possible completions (list of strings) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
385 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
386 | completionsList = [] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
387 | 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
|
388 | 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
|
389 | line, col = editor.getCursorPosition() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
390 | for cl in module.classes.values(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
391 | if line >= cl.lineno and \ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
392 | (cl.endlineno == -1 or line <= cl.endlineno): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
393 | completions = [] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
394 | for super in cl.super: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
395 | if prefix == word: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
396 | completions.extend( |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
397 | api.getCompletions(context=super, |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
398 | followHierarchy=True)) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
399 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
400 | completions.extend( |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
401 | api.getCompletions(start=word, context=super, |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
402 | followHierarchy=True)) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
403 | for completion in completions: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
404 | if not completion["context"]: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
405 | entry = completion["completion"] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
406 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
407 | entry = "{0} ({1})".format( |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
408 | completion["completion"], |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
409 | completion["context"] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
410 | ) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
411 | if entry in completionsList: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
412 | completionsList.remove(entry) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
413 | if completion["pictureId"]: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
414 | entry += "?{0}".format(completion["pictureId"]) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
415 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
416 | cont = False |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
417 | re = QRegExp(QRegExp.escape(entry) + "\?\d{,2}") |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
418 | for comp in completionsList: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
419 | if re.exactMatch(comp): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
420 | cont = True |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
421 | break |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
422 | if cont: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
423 | continue |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
424 | if entry not in completionsList: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
425 | completionsList.append(entry) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
426 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
427 | break |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
428 | elif context: |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
429 | completions = api.getCompletions(context=word) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
430 | for completion in completions: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
431 | entry = completion["completion"] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
432 | if completion["pictureId"]: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
433 | entry += "?{0}".format(completion["pictureId"]) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
434 | if entry not in completionsList: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
435 | completionsList.append(entry) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
436 | else: |
42
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
437 | if prefix: |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
438 | completions = api.getCompletions(start=word, context=prefix) |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
439 | else: |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
440 | completions = api.getCompletions(start=word) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
441 | for completion in completions: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
442 | if not completion["context"]: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
443 | entry = completion["completion"] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
444 | else: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
445 | entry = "{0} ({1})".format( |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
446 | completion["completion"], |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
447 | completion["context"] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
448 | ) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
449 | if entry in completionsList: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
450 | completionsList.remove(entry) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
451 | if completion["pictureId"]: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
452 | entry += "?{0}".format(completion["pictureId"]) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
453 | else: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
454 | cont = False |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
455 | re = QRegExp(QRegExp.escape(entry) + "\?\d{,2}") |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
456 | for comp in completionsList: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
457 | if re.exactMatch(comp): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
458 | cont = True |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
459 | break |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
460 | if cont: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
461 | continue |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
462 | if entry not in completionsList: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
463 | completionsList.append(entry) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
464 | return completionsList |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
465 | |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
466 | def __getDocumentCompletions(self, editor, word, context, sep, prefix, module, |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
467 | doHierarchy=False): |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
468 | """ |
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
|
469 | Private method to determine autocompletion proposals from the document. |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
470 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
471 | @param editor reference to the editor object (QScintilla.Editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
472 | @param word string to be completed (string) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
473 | @param context flag indicating to autocomplete a context (boolean) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
474 | @param sep separator string (string) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
475 | @param prefix prefix of the word to be completed (string) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
476 | @param module reference to the scanned module info (Module) |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
477 | @keyparam doHierarchy flag indicating a hierarchical search (boolean) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
478 | @return list of possible completions (list of strings) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
479 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
480 | completionsList = [] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
481 | |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
482 | prefixFound = False |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
483 | if prefix and module: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
484 | line, col = editor.getCursorPosition() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
485 | if prefix in ["cls", "self"]: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
486 | prefixFound = True |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
487 | for cl in module.classes.values(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
488 | if line >= cl.lineno and \ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
489 | (cl.endlineno == -1 or line <= cl.endlineno): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
490 | comps = [] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
491 | 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
|
492 | if method.name == "__init__": |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
493 | continue |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
494 | # determine icon type |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
495 | if method.isPrivate(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
496 | iconID = Editor.MethodPrivateID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
497 | elif method.isProtected(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
498 | iconID = Editor.MethodProtectedID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
499 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
500 | iconID = Editor.MethodID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
501 | if hasattr(method, "modifier"): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
502 | if (prefix == "cls" and \ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
503 | method.modifier == method.Class) or \ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
504 | 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
|
505 | 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
|
506 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
507 | # eric 5.1 cannot differentiate method types |
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
|
508 | 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
|
509 | if prefix != "cls": |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
510 | 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
|
511 | # determine icon type |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
512 | if attribute.isPrivate(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
513 | iconID = Editor.AttributePrivateID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
514 | elif attribute.isProtected(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
515 | iconID = Editor.AttributeProtectedID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
516 | else: |
36
d4d279e10fa8
Fixed an issue assigning a wrong icon ID for public attributes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
35
diff
changeset
|
517 | 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
|
518 | 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
|
519 | 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
|
520 | # determine icon type |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
521 | if attribute.isPrivate(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
522 | iconID = Editor.AttributePrivateID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
523 | elif attribute.isProtected(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
524 | iconID = Editor.AttributeProtectedID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
525 | else: |
36
d4d279e10fa8
Fixed an issue assigning a wrong icon ID for public attributes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
35
diff
changeset
|
526 | 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
|
527 | 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
|
528 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
529 | if word != prefix: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
530 | completionsList.extend( |
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
|
531 | ["{0} ({1})?{2}".format(c[0], c[1], c[2]) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
532 | for c in comps if c[0].startswith(word)]) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
533 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
534 | completionsList.extend( |
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
|
535 | ["{0} ({1})?{2}".format(c[0], c[1], c[2]) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
536 | for c in comps]) |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
537 | |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
538 | 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
|
539 | 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
|
540 | if word == prefix: |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
541 | nword = sup |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
542 | else: |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
543 | nword = word |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
544 | completionsList.extend(self.__getDocumentCompletions( |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
545 | editor, nword, context, sep, sup, module, |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
546 | doHierarchy=True)) |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
547 | |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
548 | break |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
549 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
550 | # 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
|
551 | if prefix in module.classes: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
552 | prefixFound = True |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
553 | cl = module.classes[prefix] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
554 | comps = [] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
555 | 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
|
556 | if method.name == "__init__": |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
557 | continue |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
558 | if not doHierarchy and not hasattr(method, "modifier"): |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
559 | # eric 5.1 cannot differentiate method types |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
560 | continue |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
561 | if doHierarchy or \ |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
562 | method.modifier in [method.Class, method.Static]: |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
563 | # determine icon type |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
564 | 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
|
565 | if doHierarchy: |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
566 | continue |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
567 | iconID = Editor.MethodPrivateID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
568 | elif method.isProtected(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
569 | iconID = Editor.MethodProtectedID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
570 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
571 | 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
|
572 | 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
|
573 | 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
|
574 | # determine icon type |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
575 | if attribute.isPrivate(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
576 | iconID = Editor.AttributePrivateID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
577 | elif attribute.isProtected(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
578 | iconID = Editor.AttributeProtectedID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
579 | else: |
36
d4d279e10fa8
Fixed an issue assigning a wrong icon ID for public attributes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
35
diff
changeset
|
580 | 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
|
581 | 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
|
582 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
583 | if word != prefix: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
584 | completionsList.extend( |
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
|
585 | ["{0} ({1})?{2}".format(c[0], c[1], c[2]) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
586 | for c in comps if c[0].startswith(word)]) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
587 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
588 | completionsList.extend( |
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
|
589 | ["{0} ({1})?{2}".format(c[0], c[1], c[2]) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
590 | for c in comps]) |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
591 | |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
592 | 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
|
593 | 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
|
594 | if word == prefix: |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
595 | nword = sup |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
596 | else: |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
597 | nword = word |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
598 | completionsList.extend(self.__getDocumentCompletions( |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
599 | editor, nword, context, sep, sup, module, |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
600 | doHierarchy=True)) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
601 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
602 | if not prefixFound: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
603 | currentPos = editor.currentPosition() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
604 | if context: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
605 | word += sep |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
606 | |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
607 | if editor.isUtf8(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
608 | sword = word.encode("utf-8") |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
609 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
610 | sword = word |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
611 | res = editor.findFirstTarget(sword, False, |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
612 | editor.autoCompletionCaseSensitivity(), |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
613 | False, begline=0, begindex=0, ws_=True) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
614 | while res: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
615 | start, length = editor.getFoundTarget() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
616 | pos = start + length |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
617 | if pos != currentPos: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
618 | if context: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
619 | completion = "" |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
620 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
621 | completion = word |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
622 | line, index = editor.lineIndexFromPosition(pos) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
623 | curWord = editor.getWord(line, index, useWordChars=False) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
624 | completion += curWord[len(completion):] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
625 | if completion and completion not in completionsList: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
626 | completionsList.append( |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
627 | "{0}?{1}".format(completion, self.__fromDocumentID)) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
628 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
629 | res = editor.findNextTarget() |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
630 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
631 | completionsList.sort() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
632 | return completionsList |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
633 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
634 | ########################### |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
635 | ## calltips methods below |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
636 | ########################### |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
637 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
638 | def __setCalltipsHook(self, editor): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
639 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
640 | Private method to set the calltip hook. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
641 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
642 | @param editor reference to the editor (QScintilla.Editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
643 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
644 | editor.setCallTipHook(self.calltips) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
645 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
646 | def __unsetCalltipsHook(self, editor): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
647 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
648 | Private method to unset the calltip hook. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
649 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
650 | @param editor reference to the editor (QScintilla.Editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
651 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
652 | editor.unsetCallTipHook() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
653 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
654 | def calltips(self, editor, pos, commas): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
655 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
656 | Public method to return a list of calltips. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
657 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
658 | @param editor reference to the editor (QScintilla.Editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
659 | @param pos position in the text for the calltip (integer) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
660 | @param commas minimum number of commas contained in the calltip (integer) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
661 | @return list of possible calltips (list of strings) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
662 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
663 | language = editor.getLanguage() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
664 | if language == "": |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
665 | return |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
666 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
667 | line, col = editor.lineIndexFromPosition(pos) |
18
b8ece0b784e8
Fixed a few unicode related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
668 | 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
|
669 | 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
|
670 | text = editor.text(line) |
18
b8ece0b784e8
Fixed a few unicode related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
671 | while col > 0 and \ |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
672 | not pat.match(text[col - 1]): |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
673 | col -= 1 |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
674 | word = editor.getWordLeft(line, col) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
675 | |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
676 | prefix = "" |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
677 | mod = None |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
678 | beg = editor.text(line)[:col] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
679 | col = len(beg) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
680 | wsep = editor.getLexer().autoCompletionWordSeparators() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
681 | if wsep: |
38
55f259fad55b
Fixed an issue in the latest code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
36
diff
changeset
|
682 | if col > 0 and beg[col - 1] in wsep: |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
683 | col -= 1 |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
684 | else: |
38
55f259fad55b
Fixed an issue in the latest code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
36
diff
changeset
|
685 | while col > 0 and beg[col - 1] not in wsep + [" ", "\t"]: |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
686 | col -= 1 |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
687 | if col >= 0: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
688 | col -= 1 |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
689 | prefix = editor.getWordLeft(line, col) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
690 | if editor.isPy2File() or editor.isPy3File(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
691 | src = editor.text() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
692 | fn = editor.getFileName() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
693 | if fn is None: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
694 | fn = "" |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
695 | 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
|
696 | mod.scan(src) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
697 | |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
698 | apiCalltips = [] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
699 | projectCalltips = [] |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
700 | documentCalltips = [] |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
701 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
702 | if self.__plugin.getPreferences("AutoCompletionSource") & AcsAPIs: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
703 | api = self.__apisManager.getAPIs(language) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
704 | 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
|
705 | apiCalltips = self.__getApiCalltips( |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
706 | api, word, commas, prefix, mod, editor) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
707 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
708 | if self.__plugin.getPreferences("AutoCompletionSource") & AcsProject: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
709 | api = self.__apisManager.getAPIs(ApisNameProject) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
710 | projectCalltips = self.__getApiCalltips( |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
711 | api, word, commas, prefix, mod, editor) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
712 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
713 | if self.__plugin.getPreferences("AutoCompletionSource") & AcsDocument: |
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
|
714 | documentCalltips = self.__getDocumentCalltips( |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
715 | word, prefix, mod, editor) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
716 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
717 | return sorted( |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
718 | set(apiCalltips) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
719 | .union(set(projectCalltips)) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
720 | .union(set(documentCalltips)) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
721 | ) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
722 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
723 | 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
|
724 | """ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
725 | Private method to determine calltips from APIs. |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
726 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
727 | @param api reference to the API object to be used (APIsManager.DbAPIs) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
728 | @param word function to get calltips for (string) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
729 | @param commas minimum number of commas contained in the calltip (integer) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
730 | @param prefix prefix of the word to be completed (string) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
731 | @param module reference to the scanned module info (Module) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
732 | @param editor reference to the editor object (QScintilla.Editor) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
733 | @return list of calltips (list of string) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
734 | """ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
735 | calltips = [] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
736 | 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
|
737 | line, col = editor.getCursorPosition() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
738 | for cl in module.classes.values(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
739 | if line >= cl.lineno and \ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
740 | (cl.endlineno == -1 or line <= cl.endlineno): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
741 | for super in cl.super: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
742 | calltips.extend(api.getCalltips(word, commas, super, None, |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
743 | self.__plugin.getPreferences("CallTipsContextShown"), |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
744 | followHierarchy=True)) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
745 | break |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
746 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
747 | calltips = api.getCalltips(word, commas, self.__lastContext, |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
748 | self.__lastFullContext, |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
749 | self.__plugin.getPreferences("CallTipsContextShown")) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
750 | |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
751 | return calltips |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
752 | |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
753 | 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
|
754 | """ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
755 | Private method to determine calltips from the document. |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
756 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
757 | @param word function to get calltips for (string) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
758 | @param prefix prefix of the word to be completed (string) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
759 | @param module reference to the scanned module info (Module) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
760 | @param editor reference to the editor object (QScintilla.Editor) |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
761 | @keyparam doHierarchy flag indicating a hierarchical search (boolean) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
762 | @return list of calltips (list of string) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
763 | """ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
764 | calltips = [] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
765 | if module: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
766 | if prefix: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
767 | # 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
|
768 | sep = editor.getLexer().autoCompletionWordSeparators()[0] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
769 | if prefix in ["self", "cls"]: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
770 | line, col = editor.getCursorPosition() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
771 | for cl in module.classes.values(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
772 | if line >= cl.lineno and \ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
773 | (cl.endlineno == -1 or line <= cl.endlineno): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
774 | if word in cl.methods: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
775 | method = cl.methods[word] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
776 | if hasattr(method, "modifier"): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
777 | if prefix == "self" or \ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
778 | (prefix == "cls" and \ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
779 | method.modifier == method.Class): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
780 | calltips.append("{0}{1}{2}({3})".format( |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
781 | cl.name, |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
782 | sep, |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
783 | word, |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
784 | ', '.join(method.parameters[1:]))) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
785 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
786 | # eric 5.1 cannot differentiate method types |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
787 | calltips.append("{0}{1}{2}({3})".format( |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
788 | cl.name, |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
789 | sep, |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
790 | word, |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
791 | ', '.join(method.parameters[1:]))) |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
792 | |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
793 | 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
|
794 | calltips.extend(self.__getDocumentCalltips( |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
795 | word, sup, module, editor, doHierarchy=True)) |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
796 | |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
797 | break |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
798 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
799 | if prefix in module.classes: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
800 | cl = module.classes[prefix] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
801 | if word in cl.methods: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
802 | method = cl.methods[word] |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
803 | if doHierarchy or \ |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
804 | (hasattr(method, "modifier") and \ |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
805 | method.modifier == method.Class): |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
806 | # only eric 5.2 and newer can differentiate method types |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
807 | calltips.append("{0}{1}{2}({3})".format( |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
808 | cl.name, |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
809 | sep, |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
810 | word, |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
811 | ', '.join(method.parameters[1:]))) |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
812 | |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
813 | 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
|
814 | calltips.extend(self.__getDocumentCalltips( |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
815 | word, sup, module, editor, doHierarchy=True)) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
816 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
817 | # 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
|
818 | if word in module.functions: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
819 | fun = module.functions[word] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
820 | calltips.append("{0}({1})".format( |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
821 | word, |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
822 | ', '.join(fun.parameters))) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
823 | elif word in module.classes: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
824 | cl = module.classes[word] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
825 | if "__init__" in cl.methods: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
826 | method = cl.methods["__init__"] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
827 | calltips.append("{0}({1})".format( |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
828 | word, |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
829 | ', '.join(method.parameters[1:]))) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
830 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
831 | return calltips |