Wed, 23 Apr 2014 23:24:27 +0200
python2Compatible flag added.
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 | |
87
55b5831bcad0
Updated copyright for 2014.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
84
diff
changeset
|
3 | # Copyright (c) 2008 - 2014 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 | |
93
9e323efeffcf
python2Compatible flag added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
87
diff
changeset
|
11 | from __future__ import unicode_literals |
76
add31149e0b1
Python 2 compatibility for Eric 5
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
69
diff
changeset
|
12 | |
18
b8ece0b784e8
Fixed a few unicode related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
13 | import re |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
14 | import imp |
18
b8ece0b784e8
Fixed a few unicode related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
15 | |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
16 | from PyQt4.QtCore import QRegExp, QObject |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | from E5Gui.E5Application import e5App |
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 .APIsManager import APIsManager, ApisNameProject |
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 |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
24 | AcsAPIs = 0x0001 |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | AcsDocument = 0x0002 |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
26 | AcsProject = 0x0004 |
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
27 | AcsOther = 0x1000 |
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
28 | |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | class Assistant(QObject): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | Class implementing the autocompletion and calltips system. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | """ |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
34 | def __init__(self, plugin, parent=None): |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | Constructor |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | @param plugin reference to the plugin object |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | @param parent parent (QObject) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | QObject.__init__(self, parent) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | self.__plugin = plugin |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | self.__ui = parent |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | self.__project = e5App().getObject("Project") |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | self.__viewmanager = e5App().getObject("ViewManager") |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | self.__pluginManager = e5App().getObject("PluginManager") |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | |
69
9082f14126d9
Activated status messages for processing API files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
66
diff
changeset
|
49 | self.__apisManager = APIsManager(self.__ui, self) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | self.__editors = [] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | self.__completingContext = False |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | self.__lastContext = None |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | self.__lastFullContext = None |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | |
66
f57b151c9761
Modified the code to do lazy import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
65
diff
changeset
|
56 | from QScintilla.Editor import Editor |
2
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) |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
158 | @param editor reference to the editor object to work with |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
159 | (QScintilla.Editor) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | @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
|
161 | the next position (i.e. pos - 1) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | if pos <= 0: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | return "", pos |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | pos -= 1 |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | ch = editor.charAt(pos) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | # 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
|
170 | if ch == '\n' or ch == '\r': |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | return "", pos |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | return ch, pos |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | ################################# |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
176 | ## autocompletion methods below |
2
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 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | def __completionListSelected(self, id, txt): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | 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
|
182 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | @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
|
184 | @param txt the selected text (string) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | from QScintilla.Editor import EditorAutoCompletionListID |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | editor = self.sender() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | if id == EditorAutoCompletionListID: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | lst = txt.split() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | if len(lst) > 1: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | txt = lst[0] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | self.__lastFullContext = lst[1][1:].split(")")[0] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | else: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | self.__lastFullContext = None |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | if Preferences.getEditor("AutoCompletionReplaceWord"): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | editor.selectCurrentWord() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | editor.removeSelectedText() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | line, col = editor.getCursorPosition() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | else: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202 | line, col = editor.getCursorPosition() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | wLeft = editor.getWordLeft(line, col) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
204 | if not txt.startswith(wLeft): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | editor.selectCurrentWord() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | editor.removeSelectedText() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | line, col = editor.getCursorPosition() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | elif wLeft: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209 | txt = txt[len(wLeft):] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210 | editor.insert(txt) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | editor.setCursorPosition(line, col + len(txt)) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
212 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | def __setAutoCompletionHook(self, editor): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215 | Private method to set the autocompletion hook. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | @param editor reference to the editor (QScintilla.Editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218 | """ |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
219 | editor.userListActivated.connect(self.__completionListSelected) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220 | editor.setAutoCompletionHook(self.autocomplete) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222 | def __unsetAutoCompletionHook(self, editor): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
224 | Private method to unset the autocompletion hook. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | @param editor reference to the editor (QScintilla.Editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
228 | editor.unsetAutoCompletionHook() |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
229 | editor.userListActivated.disconnect(self.__completionListSelected) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
230 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
231 | def autocomplete(self, editor, context): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
232 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
233 | Public method to determine the autocompletion proposals. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
235 | @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
|
236 | (QScintilla.Editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
237 | @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
|
238 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
239 | from QScintilla.Editor import EditorAutoCompletionListID |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
240 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241 | if editor.isListActive(): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
242 | editor.cancelList() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | language = editor.getLanguage() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
245 | if language == "": |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
246 | return |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
247 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
248 | line, col = editor.getCursorPosition() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
249 | self.__completingContext = context |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | sep = "" |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | if context: |
18
b8ece0b784e8
Fixed a few unicode related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
252 | 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
|
253 | 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
|
254 | text = editor.text(line) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
255 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
256 | beg = text[:col] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
257 | for wsep in editor.getLexer().autoCompletionWordSeparators(): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
258 | if beg.endswith(wsep): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
259 | sep = wsep |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
260 | break |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
261 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
262 | depth = 0 |
18
b8ece0b784e8
Fixed a few unicode related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
263 | while col > 0 and \ |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
264 | not pat.match(text[col - 1]): |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
265 | ch = text[col - 1] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
266 | if ch == ')': |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
267 | depth = 1 |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
268 | |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
269 | # 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
|
270 | # corresponding parenthesis |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
271 | col -= 1 |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
272 | while col > 0: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
273 | ch = text[col - 1] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
274 | if ch == ')': |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
275 | depth += 1 |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
276 | elif 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 | if depth == 0: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
279 | break |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
280 | col -= 1 |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
281 | elif ch == '(': |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
282 | break |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
283 | col -= 1 |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
284 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
285 | word = editor.getWordLeft(line, col) |
41
333735b1a460
Corrected the context completion.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
39
diff
changeset
|
286 | if context and not sep: |
333735b1a460
Corrected the context completion.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
39
diff
changeset
|
287 | # no separator was found -> no context completion |
333735b1a460
Corrected the context completion.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
39
diff
changeset
|
288 | context = False |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
289 | if context: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
290 | self.__lastContext = word |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
291 | else: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
292 | self.__lastContext = None |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
293 | |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
294 | prefix = "" |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
295 | mod = None |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
296 | if context: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
297 | beg = beg[:col + 1] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
298 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
299 | beg = editor.text(line)[:col] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
300 | col = len(beg) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
301 | wsep = editor.getLexer().autoCompletionWordSeparators() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
302 | if wsep: |
43
263a7d088c75
Fixed the autocompleter.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
42
diff
changeset
|
303 | wsep.append(" ") |
38
55f259fad55b
Fixed an issue in the latest code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
36
diff
changeset
|
304 | 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
|
305 | col -= 1 |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
306 | else: |
38
55f259fad55b
Fixed an issue in the latest code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
36
diff
changeset
|
307 | 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
|
308 | col -= 1 |
51
b70595b49b3e
Fixed a bug causing a traceback.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
50
diff
changeset
|
309 | if col > 0 and beg[col - 1] != " ": |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
310 | col -= 1 |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
311 | prefix = editor.getWordLeft(line, col) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
312 | if editor.isPy2File() or editor.isPy3File(): |
66
f57b151c9761
Modified the code to do lazy import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
65
diff
changeset
|
313 | from Utilities.ModuleParser import Module |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
314 | src = editor.text() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
315 | fn = editor.getFileName() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
316 | if fn is None: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
317 | fn = "" |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
318 | 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
|
319 | mod.scan(src) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
320 | |
42
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
321 | importCompletion = False |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
322 | if editor.isPy2File() or editor.isPy3File(): |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
323 | # 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
|
324 | maxLines = 10 |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
325 | text = editor.text(line).strip() |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
326 | 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
|
327 | line -= 1 |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
328 | textm1 = editor.text(line).strip() |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
329 | if not textm1.endswith("\\"): |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
330 | break |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
331 | text = textm1[:-1] + text |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
332 | maxLines -= 1 |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
333 | if text.startswith("from"): |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
334 | tokens = text.split() |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
335 | 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
|
336 | importCompletion = True |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
337 | prefix = tokens[1] |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
338 | col = len(prefix) - 1 |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
339 | wsep = editor.getLexer().autoCompletionWordSeparators() |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
340 | 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
|
341 | col -= 1 |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
342 | if col >= 0: |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
343 | prefix = prefix[col + 1:] |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
344 | if word == tokens[2]: |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
345 | word = "" |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
346 | |
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
347 | if word or importCompletion: |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
348 | completionsList = self.__getCompletions( |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
349 | word, context, prefix, language, mod, editor, |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
350 | importCompletion, sep) |
46
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
351 | if len(completionsList) == 0 and prefix: |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
352 | # searching with prefix didn't return anything, try without |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
353 | completionsList = self.__getCompletions( |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
354 | word, context, "", language, mod, editor, importCompletion, |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
355 | sep) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
356 | if len(completionsList) > 0: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
357 | completionsList.sort() |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
358 | editor.showUserList(EditorAutoCompletionListID, |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
359 | completionsList) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
360 | |
46
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
361 | def __getCompletions(self, word, context, prefix, language, module, editor, |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
362 | importCompletion, sep): |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
363 | """ |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
364 | Private method to get the list of possible completions. |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
365 | |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
366 | @param word word (or wordpart) to complete (string) |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
367 | @param context flag indicating to autocomplete a context (boolean) |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
368 | @param prefix prefix of the word to be completed (string) |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
369 | @param language programming language of the source (string) |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
370 | @param module reference to the scanned module info (Module) |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
371 | @param editor reference to the editor object (QScintilla.Editor.Editor) |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
372 | @param importCompletion flag indicating an import completion (boolean) |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
373 | @param sep separator string (string) |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
374 | @return list of possible completions (list of strings) |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
375 | """ |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
376 | apiCompletionsList = [] |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
377 | docCompletionsList = [] |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
378 | projectCompletionList = [] |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
379 | |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
380 | if self.__plugin.getPreferences("AutoCompletionSource") & AcsAPIs: |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
381 | api = self.__apisManager.getAPIs(language) |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
382 | apiCompletionsList = self.__getApiCompletions( |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
383 | api, word, context, prefix, module, editor) |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
384 | |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
385 | if self.__plugin.getPreferences("AutoCompletionSource") & AcsProject: |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
386 | api = self.__apisManager.getAPIs(ApisNameProject) |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
387 | projectCompletionList = self.__getApiCompletions( |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
388 | api, word, context, prefix, module, editor) |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
389 | |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
390 | if self.__plugin.getPreferences("AutoCompletionSource") & AcsDocument \ |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
391 | and not importCompletion: |
46
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
392 | docCompletionsList = self.__getDocumentCompletions( |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
393 | editor, word, context, sep, prefix, module) |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
394 | |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
395 | completionsList = list( |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
396 | set(apiCompletionsList) |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
397 | .union(set(docCompletionsList)) |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
398 | .union(set(projectCompletionList)) |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
399 | ) |
46
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
400 | return completionsList |
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
401 | |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
402 | 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
|
403 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
404 | 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
|
405 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
406 | @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
|
407 | @param word word (or wordpart) to complete (string) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
408 | @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
|
409 | @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
|
410 | @param module reference to the scanned module info (Module) |
46
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
411 | @param editor reference to the editor object (QScintilla.Editor.Editor) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
412 | @return list of possible completions (list of strings) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
413 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
414 | completionsList = [] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
415 | 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
|
416 | 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
|
417 | line, col = editor.getCursorPosition() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
418 | 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
|
419 | if line >= cl.lineno and \ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
420 | (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
|
421 | completions = [] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
422 | for super in cl.super: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
423 | if prefix == word: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
424 | completions.extend( |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
425 | api.getCompletions( |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
426 | context=super, |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
427 | followHierarchy= |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
428 | self.__plugin.getPreferences( |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
429 | "AutoCompletionFollowHierarchy" |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
430 | ) |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
431 | ) |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
432 | ) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
433 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
434 | completions.extend( |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
435 | api.getCompletions( |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
436 | start=word, context=super, |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
437 | followHierarchy= |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
438 | self.__plugin.getPreferences( |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
439 | "AutoCompletionFollowHierarchy" |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
440 | ) |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
441 | ) |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
442 | ) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
443 | for completion in completions: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
444 | if not completion["context"]: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
445 | entry = completion["completion"] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
446 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
447 | entry = "{0} ({1})".format( |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
448 | completion["completion"], |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
449 | completion["context"] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
450 | ) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
451 | if entry in completionsList: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
452 | completionsList.remove(entry) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
453 | if completion["pictureId"]: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
454 | entry += "?{0}".format(completion["pictureId"]) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
455 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
456 | cont = False |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
457 | re = QRegExp( |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
458 | QRegExp.escape(entry) + "\?\d{,2}") |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
459 | for comp in completionsList: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
460 | if re.exactMatch(comp): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
461 | cont = True |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
462 | break |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
463 | if cont: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
464 | continue |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
465 | if entry not in completionsList: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
466 | completionsList.append(entry) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
467 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
468 | break |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
469 | elif context: |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
470 | completions = api.getCompletions(context=word) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
471 | for completion in completions: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
472 | entry = completion["completion"] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
473 | if completion["pictureId"]: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
474 | entry += "?{0}".format(completion["pictureId"]) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
475 | if entry not in completionsList: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
476 | completionsList.append(entry) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
477 | else: |
42
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
478 | if prefix: |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
479 | completions = api.getCompletions( |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
480 | start=word, context=prefix) |
48
baeee0cf39eb
Changed code such, that prefixed completions are retried without a prefix, if the retrieval with one didn't return anything (i.e. that is the old behavior).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
46
diff
changeset
|
481 | if not prefix or not completions: |
baeee0cf39eb
Changed code such, that prefixed completions are retried without a prefix, if the retrieval with one didn't return anything (i.e. that is the old behavior).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
46
diff
changeset
|
482 | # if no completions were returned try without prefix |
42
2489ae0286ef
Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
41
diff
changeset
|
483 | completions = api.getCompletions(start=word) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
484 | for completion in completions: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
485 | if not completion["context"]: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
486 | entry = completion["completion"] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
487 | else: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
488 | entry = "{0} ({1})".format( |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
489 | completion["completion"], |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
490 | completion["context"] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
491 | ) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
492 | if entry in completionsList: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
493 | completionsList.remove(entry) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
494 | if completion["pictureId"]: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
495 | entry += "?{0}".format(completion["pictureId"]) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
496 | else: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
497 | cont = False |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
498 | re = QRegExp(QRegExp.escape(entry) + "\?\d{,2}") |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
499 | for comp in completionsList: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
500 | if re.exactMatch(comp): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
501 | cont = True |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
502 | break |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
503 | if cont: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
504 | continue |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
505 | if entry not in completionsList: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
506 | completionsList.append(entry) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
507 | return completionsList |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
508 | |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
509 | def __getDocumentCompletions(self, editor, word, context, sep, prefix, |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
510 | module, doHierarchy=False): |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
511 | """ |
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
|
512 | 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
|
513 | |
46
5e928f308f55
Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
45
diff
changeset
|
514 | @param editor reference to the editor object (QScintilla.Editor.Editor) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
515 | @param word string to be completed (string) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
516 | @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
|
517 | @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
|
518 | @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
|
519 | @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
|
520 | @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
|
521 | @return list of possible completions (list of strings) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
522 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
523 | completionsList = [] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
524 | |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
525 | prefixFound = False |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
526 | if prefix and module: |
66
f57b151c9761
Modified the code to do lazy import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
65
diff
changeset
|
527 | from QScintilla.Editor import Editor |
f57b151c9761
Modified the code to do lazy import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
65
diff
changeset
|
528 | |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
529 | line, col = editor.getCursorPosition() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
530 | if prefix in ["cls", "self"]: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
531 | prefixFound = True |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
532 | 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
|
533 | if line >= cl.lineno and \ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
534 | (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
|
535 | comps = [] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
536 | 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
|
537 | if method.name == "__init__": |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
538 | continue |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
539 | # determine icon type |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
540 | if method.isPrivate(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
541 | iconID = Editor.MethodPrivateID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
542 | elif method.isProtected(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
543 | iconID = Editor.MethodProtectedID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
544 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
545 | iconID = Editor.MethodID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
546 | if hasattr(method, "modifier"): |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
547 | if (prefix == "cls" and |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
548 | method.modifier == method.Class) or \ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
549 | prefix == "self": |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
550 | comps.append((method.name, cl.name, |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
551 | iconID)) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
552 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
553 | # 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
|
554 | 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
|
555 | if prefix != "cls": |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
556 | 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
|
557 | # determine icon type |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
558 | if attribute.isPrivate(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
559 | iconID = Editor.AttributePrivateID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
560 | elif attribute.isProtected(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
561 | iconID = Editor.AttributeProtectedID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
562 | else: |
36
d4d279e10fa8
Fixed an issue assigning a wrong icon ID for public attributes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
35
diff
changeset
|
563 | 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
|
564 | 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
|
565 | 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
|
566 | # determine icon type |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
567 | if attribute.isPrivate(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
568 | iconID = Editor.AttributePrivateID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
569 | elif attribute.isProtected(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
570 | iconID = Editor.AttributeProtectedID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
571 | else: |
36
d4d279e10fa8
Fixed an issue assigning a wrong icon ID for public attributes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
35
diff
changeset
|
572 | 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
|
573 | 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
|
574 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
575 | if word != prefix: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
576 | 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
|
577 | ["{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
|
578 | 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
|
579 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
580 | 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
|
581 | ["{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
|
582 | 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
|
583 | |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
584 | 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
|
585 | 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
|
586 | if word == prefix: |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
587 | nword = sup |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
588 | else: |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
589 | nword = word |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
590 | completionsList.extend( |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
591 | self.__getDocumentCompletions( |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
592 | editor, nword, context, sep, sup, |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
593 | module, doHierarchy=True)) |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
594 | |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
595 | break |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
596 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
597 | # 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
|
598 | if prefix in module.classes: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
599 | prefixFound = True |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
600 | cl = module.classes[prefix] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
601 | comps = [] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
602 | 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
|
603 | if method.name == "__init__": |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
604 | continue |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
605 | 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
|
606 | # 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
|
607 | continue |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
608 | if doHierarchy or \ |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
609 | 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
|
610 | # determine icon type |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
611 | if method.isPrivate(): |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
612 | if doHierarchy: |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
613 | continue |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
614 | iconID = Editor.MethodPrivateID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
615 | elif method.isProtected(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
616 | iconID = Editor.MethodProtectedID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
617 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
618 | 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
|
619 | 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
|
620 | 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
|
621 | # determine icon type |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
622 | if attribute.isPrivate(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
623 | iconID = Editor.AttributePrivateID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
624 | elif attribute.isProtected(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
625 | iconID = Editor.AttributeProtectedID |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
626 | else: |
36
d4d279e10fa8
Fixed an issue assigning a wrong icon ID for public attributes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
35
diff
changeset
|
627 | 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
|
628 | 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
|
629 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
630 | if word != prefix: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
631 | 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
|
632 | ["{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
|
633 | 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
|
634 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
635 | 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
|
636 | ["{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
|
637 | 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
|
638 | |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
639 | 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
|
640 | 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
|
641 | if word == prefix: |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
642 | nword = sup |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
643 | else: |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
644 | nword = word |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
645 | completionsList.extend( |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
646 | self.__getDocumentCompletions( |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
647 | editor, nword, context, sep, sup, module, |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
648 | doHierarchy=True)) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
649 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
650 | if not prefixFound: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
651 | currentPos = editor.currentPosition() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
652 | if context: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
653 | word += sep |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
654 | |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
655 | if editor.isUtf8(): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
656 | sword = word.encode("utf-8") |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
657 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
658 | sword = word |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
659 | res = editor.findFirstTarget( |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
660 | sword, False, editor.autoCompletionCaseSensitivity(), |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
661 | 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
|
662 | while res: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
663 | start, length = editor.getFoundTarget() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
664 | pos = start + length |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
665 | if pos != currentPos: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
666 | if context: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
667 | completion = "" |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
668 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
669 | completion = word |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
670 | line, index = editor.lineIndexFromPosition(pos) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
671 | 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
|
672 | completion += curWord[len(completion):] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
673 | 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
|
674 | completionsList.append( |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
675 | "{0}?{1}".format( |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
676 | completion, self.__fromDocumentID)) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
677 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
678 | res = editor.findNextTarget() |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
679 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
680 | completionsList.sort() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
681 | return completionsList |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
682 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
683 | ########################### |
30
8f4d794d8ee0
Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
25
diff
changeset
|
684 | ## calltips methods below |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
685 | ########################### |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
686 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
687 | def __setCalltipsHook(self, editor): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
688 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
689 | Private method to set the calltip hook. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
690 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
691 | @param editor reference to the editor (QScintilla.Editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
692 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
693 | editor.setCallTipHook(self.calltips) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
694 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
695 | def __unsetCalltipsHook(self, editor): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
696 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
697 | Private method to unset the calltip hook. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
698 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
699 | @param editor reference to the editor (QScintilla.Editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
700 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
701 | editor.unsetCallTipHook() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
702 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
703 | def calltips(self, editor, pos, commas): |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
704 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
705 | Public method to return a list of calltips. |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
706 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
707 | @param editor reference to the editor (QScintilla.Editor) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
708 | @param pos position in the text for the calltip (integer) |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
709 | @param commas minimum number of commas contained in the calltip |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
710 | (integer) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
711 | @return list of possible calltips (list of strings) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
712 | """ |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
713 | language = editor.getLanguage() |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
714 | if language == "": |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
715 | return |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
716 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
717 | line, col = editor.lineIndexFromPosition(pos) |
18
b8ece0b784e8
Fixed a few unicode related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
718 | 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
|
719 | 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
|
720 | text = editor.text(line) |
18
b8ece0b784e8
Fixed a few unicode related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5
diff
changeset
|
721 | while col > 0 and \ |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
722 | not pat.match(text[col - 1]): |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
723 | col -= 1 |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
724 | word = editor.getWordLeft(line, col) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
725 | |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
726 | prefix = "" |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
727 | mod = None |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
728 | beg = editor.text(line)[:col] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
729 | col = len(beg) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
730 | wsep = editor.getLexer().autoCompletionWordSeparators() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
731 | if wsep: |
38
55f259fad55b
Fixed an issue in the latest code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
36
diff
changeset
|
732 | 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
|
733 | col -= 1 |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
734 | else: |
38
55f259fad55b
Fixed an issue in the latest code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
36
diff
changeset
|
735 | 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
|
736 | col -= 1 |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
737 | if col >= 0: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
738 | col -= 1 |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
739 | prefix = editor.getWordLeft(line, col) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
740 | if editor.isPy2File() or editor.isPy3File(): |
66
f57b151c9761
Modified the code to do lazy import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
65
diff
changeset
|
741 | from Utilities.ModuleParser import Module |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
742 | src = editor.text() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
743 | fn = editor.getFileName() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
744 | if fn is None: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
745 | fn = "" |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
746 | 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
|
747 | mod.scan(src) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
748 | |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
749 | apiCalltips = [] |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
750 | projectCalltips = [] |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
751 | documentCalltips = [] |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
752 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
753 | if self.__plugin.getPreferences("AutoCompletionSource") & AcsAPIs: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
754 | api = self.__apisManager.getAPIs(language) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
755 | 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
|
756 | apiCalltips = self.__getApiCalltips( |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
757 | api, word, commas, prefix, mod, editor) |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
758 | |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
759 | if self.__plugin.getPreferences("AutoCompletionSource") & AcsProject: |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
760 | 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
|
761 | projectCalltips = self.__getApiCalltips( |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
762 | 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
|
763 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
764 | 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
|
765 | documentCalltips = self.__getDocumentCalltips( |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
766 | word, prefix, mod, editor) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
767 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
768 | return sorted( |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
769 | set(apiCalltips) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
770 | .union(set(projectCalltips)) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
771 | .union(set(documentCalltips)) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
772 | ) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
773 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
774 | 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
|
775 | """ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
776 | 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
|
777 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
778 | @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
|
779 | @param word function to get calltips for (string) |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
780 | @param commas minimum number of commas contained in the calltip |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
781 | (integer) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
782 | @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
|
783 | @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
|
784 | @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
|
785 | @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
|
786 | """ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
787 | calltips = [] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
788 | 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
|
789 | line, col = editor.getCursorPosition() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
790 | 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
|
791 | if line >= cl.lineno and \ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
792 | (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
|
793 | for super in cl.super: |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
794 | calltips.extend(api.getCalltips( |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
795 | word, commas, super, None, |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
796 | self.__plugin.getPreferences( |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
797 | "CallTipsContextShown"), |
54
89d28458ff40
Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
51
diff
changeset
|
798 | followHierarchy=self.__plugin.getPreferences( |
89d28458ff40
Added support for auto-completions and calltips for sources compiled from form files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
51
diff
changeset
|
799 | "CallTipsFollowHierarchy"))) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
800 | break |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
801 | else: |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
802 | calltips = api.getCalltips( |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
803 | word, commas, self.__lastContext, self.__lastFullContext, |
2
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
804 | self.__plugin.getPreferences("CallTipsContextShown")) |
89cbc07f4bf0
First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
805 | |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
806 | return calltips |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
807 | |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
808 | def __getDocumentCalltips(self, word, prefix, module, editor, |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
809 | doHierarchy=False): |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
810 | """ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
811 | 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
|
812 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
813 | @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
|
814 | @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
|
815 | @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
|
816 | @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
|
817 | @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
|
818 | @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
|
819 | """ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
820 | calltips = [] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
821 | if module: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
822 | if prefix: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
823 | # 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
|
824 | sep = editor.getLexer().autoCompletionWordSeparators()[0] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
825 | if prefix in ["self", "cls"]: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
826 | line, col = editor.getCursorPosition() |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
827 | 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
|
828 | if line >= cl.lineno and \ |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
829 | (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
|
830 | if word in cl.methods: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
831 | method = cl.methods[word] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
832 | if hasattr(method, "modifier"): |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
833 | if prefix == "self" or \ |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
834 | (prefix == "cls" and |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
835 | method.modifier == method.Class): |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
836 | calltips.append( |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
837 | "{0}{1}{2}({3})".format( |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
838 | cl.name, |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
839 | sep, |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
840 | word, |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
841 | ', '.join(method.parameters[1:] |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
842 | ))) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
843 | else: |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
844 | # eric 5.1 cannot differentiate method |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
845 | # types |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
846 | 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
|
847 | cl.name, |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
848 | sep, |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
849 | word, |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
850 | ', '.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
|
851 | |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
852 | 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
|
853 | calltips.extend(self.__getDocumentCalltips( |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
854 | word, sup, module, editor, |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
855 | doHierarchy=True)) |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
856 | |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
857 | break |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
858 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
859 | if prefix in module.classes: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
860 | cl = module.classes[prefix] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
861 | if word in cl.methods: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
862 | 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
|
863 | if doHierarchy or \ |
84
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
864 | (hasattr(method, "modifier") and |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
865 | method.modifier == method.Class): |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
866 | # only eric 5.2 and newer can differentiate |
67197c1f11eb
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
76
diff
changeset
|
867 | # method types |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
868 | 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
|
869 | cl.name, |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
870 | sep, |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
871 | word, |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
872 | ', '.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
|
873 | |
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
874 | 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
|
875 | 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
|
876 | 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
|
877 | else: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
878 | # 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
|
879 | if word in module.functions: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
880 | fun = module.functions[word] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
881 | calltips.append("{0}({1})".format( |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
882 | word, |
39
7b6ca9397ecc
More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
38
diff
changeset
|
883 | ', '.join(fun.parameters))) |
32
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
884 | elif word in module.classes: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
885 | cl = module.classes[word] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
886 | if "__init__" in cl.methods: |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
887 | method = cl.methods["__init__"] |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
888 | calltips.append("{0}({1})".format( |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
889 | word, |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
890 | ', '.join(method.parameters[1:]))) |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
891 | |
68ef15fe34c3
Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
30
diff
changeset
|
892 | return calltips |