AssistantEric/Assistant.py

Mon, 27 Mar 2017 19:27:58 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 27 Mar 2017 19:27:58 +0200
changeset 136
5cfe53b474a9
parent 135
08cb4f36ad47
child 140
a0ea7418d433
permissions
-rw-r--r--

Fixed some code style issues.

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
135
08cb4f36ad47 Updated copyright for 2017.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 132
diff changeset
3 # Copyright (c) 2008 - 2017 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
97
6226cdaea3ad Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
16 from PyQt5.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
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
126 try:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
127 language = editor.getApiLanguage()
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
128 except AttributeError:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
129 # backward compatibility
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
130 language = editor.apiLanguage
119
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
131 if language:
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
132 projectType = self.__getProjectType(editor)
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
133 self.__apisManager.getAPIs(language, projectType=projectType)
2
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 def __editorClosed(self, 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 Private slot called, when an editor was closed.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 @param editor reference to the editor (QScintilla.Editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 if editor in self.__editors:
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
142 editor.editorSaved.disconnect(
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
143 self.__apisManager.getAPIs(ApisNameProject).editorSaved)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 self.__editors.remove(editor)
119
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
145 try:
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
146 if editor.getCompletionListHook("Assistant"):
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
147 self.__unsetAutoCompletionHook(editor)
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
148 except AttributeError:
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
149 # old interface (before 6.1.0)
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
150 if editor.autoCompletionHook() == self.autocomplete:
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
151 self.__unsetAutoCompletionHook(editor)
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
152 try:
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
153 if editor.getCallTipHook("Assistant"):
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
154 self.__unsetCalltipsHook(editor)
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
155 except AttributeError:
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
156 # old interface (before 6.1.0)
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
157 if editor.callTipHook() == self.calltips:
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
158 self.__unsetCalltipsHook(editor)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 def __preferencesChanged(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 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
163 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 self.__apisManager.reloadAPIs()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
166 def __getProjectType(self, editor):
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
167 """
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
168 Private method to determine the project type to be used.
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
169
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
170 @param editor reference to the editor to check
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
171 @type Editor
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
172 @return project type
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
173 @rtype str
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
174 """
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
175 filename = editor.getFileName()
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
176 if self.__project.isOpen() and filename and \
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
177 self.__project.isProjectFile(filename):
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
178 projectType = self.__project.getProjectType()
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
179 else:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
180 projectType = ""
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
181
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
182 return projectType
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
183
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 #################################
119
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
185 ## auto-completion methods below
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 #################################
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
188 def __completionListSelected(self, userListId, txt):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 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
191
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
192 @param userListId the ID of the user list (should be 1) (integer)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 @param txt the selected text (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 from QScintilla.Editor import EditorAutoCompletionListID
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 editor = self.sender()
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
198 if userListId == EditorAutoCompletionListID:
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 lst = txt.split()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 if len(lst) > 1:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 txt = lst[0]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 self.__lastFullContext = lst[1][1:].split(")")[0]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 self.__lastFullContext = None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 if Preferences.getEditor("AutoCompletionReplaceWord"):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 editor.selectCurrentWord()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 editor.removeSelectedText()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 line, col = editor.getCursorPosition()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 line, col = editor.getCursorPosition()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 wLeft = editor.getWordLeft(line, col)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 if not txt.startswith(wLeft):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 editor.selectCurrentWord()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 editor.removeSelectedText()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 line, col = editor.getCursorPosition()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 elif wLeft:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 txt = txt[len(wLeft):]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 editor.insert(txt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 editor.setCursorPosition(line, col + len(txt))
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
222 def __recordSelectedContext(self, userListId, txt):
119
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
223 """
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
224 Private slot to handle the selection from the completion list to
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
225 record the selected completion context.
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
226
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
227 @param userListId the ID of the user list (should be 1) (integer)
119
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
228 @param txt the selected text (string)
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
229 """
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
230 from QScintilla.Editor import EditorAutoCompletionListID
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
231
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
232 if userListId == EditorAutoCompletionListID:
119
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
233 lst = txt.split()
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
234 if len(lst) > 1:
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
235 self.__lastFullContext = lst[1][1:].split(")")[0]
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
236 else:
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
237 self.__lastFullContext = None
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
238
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 def __setAutoCompletionHook(self, editor):
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 Private method to set the autocompletion hook.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 @param editor reference to the editor (QScintilla.Editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 """
119
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
245 try:
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
246 editor.userListActivated.connect(self.__recordSelectedContext)
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
247 editor.addCompletionListHook("Assistant", self.getCompletionsList)
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
248 except AttributeError:
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
249 # old interface (before 6.1.0)
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
250 editor.userListActivated.connect(self.__completionListSelected)
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
251 editor.setAutoCompletionHook(self.autocomplete)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 def __unsetAutoCompletionHook(self, editor):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 Private method to unset the autocompletion hook.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 @param editor reference to the editor (QScintilla.Editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 """
119
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
259 try:
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
260 editor.userListActivated.disconnect(self.__recordSelectedContext)
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
261 editor.removeCompletionListHook("Assistant")
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
262 except AttributeError:
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
263 # old interface (before 6.1.0)
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
264 editor.unsetAutoCompletionHook()
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
265 editor.userListActivated.disconnect(self.__completionListSelected)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 def autocomplete(self, editor, context):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 Public method to determine the autocompletion proposals.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 @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
272 (QScintilla.Editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 @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
274 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 from QScintilla.Editor import EditorAutoCompletionListID
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 if editor.isListActive():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 editor.cancelList()
116
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
279
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
280 completionsList = self.getCompletionsList(editor, context)
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
281 if len(completionsList) > 0:
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
282 completionsList.sort()
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
283 editor.showUserList(EditorAutoCompletionListID,
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
284 completionsList)
118
67d952a9036e Corrected a whitespace error.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 116
diff changeset
285
116
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
286 def getCompletionsList(self, editor, context):
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
287 """
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
288 Public method to get a list of possible completions.
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
289
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
290 @param editor reference to the editor object, that called this method
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
291 (QScintilla.Editor)
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
292 @param context flag indicating to autocomplete a context (boolean)
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
293 @return list of possible completions (list of strings)
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
294 """
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
295 try:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
296 language = editor.getApiLanguage()
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
297 except AttributeError:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
298 # backward compatibility
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
299 language = editor.apiLanguage
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
300
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
301 completeFromDocumentOnly = False
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
302 if language in ["", "Guessed"] or language.startswith("Pygments|"):
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
303 if self.__plugin.getPreferences("AutoCompletionSource") & \
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
304 AcsDocument:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
305 completeFromDocumentOnly = True
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
306 else:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
307 return []
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
308
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
309 projectType = self.__getProjectType(editor)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 line, col = editor.getCursorPosition()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312 self.__completingContext = context
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 sep = ""
132
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
314 if language and context:
18
b8ece0b784e8 Fixed a few unicode related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
315 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
316 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
317 text = editor.text(line)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 beg = text[:col]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 for wsep in editor.getLexer().autoCompletionWordSeparators():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 if beg.endswith(wsep):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 sep = wsep
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 break
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325 depth = 0
18
b8ece0b784e8 Fixed a few unicode related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
326 while col > 0 and \
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
327 not pat.match(text[col - 1]):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 ch = text[col - 1]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329 if ch == ')':
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 depth = 1
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
332 # 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
333 # corresponding parenthesis
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 col -= 1
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 while col > 0:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 ch = text[col - 1]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 if ch == ')':
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 depth += 1
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 elif ch == '(':
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 depth -= 1
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 if depth == 0:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 break
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 col -= 1
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344 elif ch == '(':
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 break
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 col -= 1
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 word = editor.getWordLeft(line, col)
41
333735b1a460 Corrected the context completion.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
349 if context and not sep:
333735b1a460 Corrected the context completion.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
350 # no separator was found -> no context completion
333735b1a460 Corrected the context completion.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 39
diff changeset
351 context = False
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352 if context:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 self.__lastContext = word
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 self.__lastContext = None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
357 prefix = ""
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
358 mod = None
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
359 if context:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
360 beg = beg[:col + 1]
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
361 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
362 beg = editor.text(line)[:col]
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
363 col = len(beg)
132
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
364 if language:
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
365 wseps = editor.getLexer().autoCompletionWordSeparators()
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
366 else:
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
367 wseps = []
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
368 if wseps:
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
369 wseps.append(" ")
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
370 if col > 0 and beg[col - 1] in wseps:
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
371 col -= 1
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
372 else:
132
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
373 while col > 0 and beg[col - 1] not in wseps:
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
374 col -= 1
51
b70595b49b3e Fixed a bug causing a traceback.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
375 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
376 col -= 1
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
377 prefix = editor.getWordLeft(line, col)
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
378 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
379 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
380 src = editor.text()
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
381 fn = editor.getFileName()
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
382 if fn is None:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
383 fn = ""
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
384 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
385 mod.scan(src)
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
386
42
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
387 importCompletion = False
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
388 if editor.isPy2File() or editor.isPy3File():
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
389 # 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
390 maxLines = 10
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
391 text = editor.text(line).strip()
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
392 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
393 line -= 1
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
394 textm1 = editor.text(line).strip()
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
395 if not textm1.endswith("\\"):
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
396 break
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
397 text = textm1[:-1] + text
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
398 maxLines -= 1
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
399 if text.startswith("from"):
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
400 tokens = text.split()
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
401 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
402 importCompletion = True
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
403 prefix = tokens[1]
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
404 col = len(prefix) - 1
132
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
405 wseps = editor.getLexer().autoCompletionWordSeparators()
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
406 while col >= 0 and prefix[col] not in wseps:
42
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
407 col -= 1
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
408 if col >= 0:
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
409 prefix = prefix[col + 1:]
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
410 if word == tokens[2]:
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
411 word = ""
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
412
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
413 if word or importCompletion:
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
414 completionsList = self.__getCompletions(
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
415 word, context, prefix, language, projectType, mod, editor,
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
416 importCompletion, completeFromDocumentOnly, sep)
46
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
417 if len(completionsList) == 0 and prefix:
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
418 # 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
419 completionsList = self.__getCompletions(
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
420 word, context, "", language, projectType, mod, editor,
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
421 importCompletion, completeFromDocumentOnly, sep)
116
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
422 return completionsList
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
423
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
424 return []
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
425
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
426 def __getCompletions(self, word, context, prefix, language, projectType,
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
427 module, editor, importCompletion, documentOnly, sep):
46
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
428 """
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
429 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
430
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
431 @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
432 @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
433 @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
434 @param language programming language of the source (string)
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
435 @param projectType type of the project (string)
46
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
436 @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
437 @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
438 @param importCompletion flag indicating an import completion (boolean)
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
439 @param documentOnly flag indicating to complete from the document only
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
440 (boolean)
46
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
441 @param sep separator string (string)
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
442 @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
443 """
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
444 apiCompletionsList = []
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
445 docCompletionsList = []
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
446 projectCompletionList = []
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
447
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
448 if not documentOnly:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
449 if self.__plugin.getPreferences("AutoCompletionSource") & AcsAPIs:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
450 api = self.__apisManager.getAPIs(
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
451 language, projectType=projectType)
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
452 apiCompletionsList = self.__getApiCompletions(
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
453 api, word, context, prefix, module, editor)
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
454
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
455 if self.__plugin.getPreferences("AutoCompletionSource") & \
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
456 AcsProject:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
457 api = self.__apisManager.getAPIs(ApisNameProject)
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
458 projectCompletionList = self.__getApiCompletions(
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
459 api, word, context, prefix, module, editor)
46
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
460
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
461 if self.__plugin.getPreferences("AutoCompletionSource") & AcsDocument \
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
462 and not importCompletion:
46
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
463 docCompletionsList = self.__getDocumentCompletions(
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
464 editor, word, context, sep, prefix, module)
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
465
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
466 completionsList = list(
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
467 set(apiCompletionsList)
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
468 .union(set(docCompletionsList))
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
469 .union(set(projectCompletionList))
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
470 )
46
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
471 return completionsList
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
472
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
473 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
474 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475 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
476
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
477 @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
478 @param word word (or wordpart) to complete (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
479 @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
480 @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
481 @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
482 @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
483 @return list of possible completions (list of strings)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
485 completionsList = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
486 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
487 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
488 line, col = editor.getCursorPosition()
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
489 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
490 if line >= cl.lineno and \
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
491 (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
492 completions = []
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
493 for superClass in cl.super:
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
494 if prefix == word:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
495 completions.extend(
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
496 api.getCompletions(
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
497 context=superClass,
121
edad4b3132fd Fixed a few source code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
498 followHierarchy=self.__plugin
edad4b3132fd Fixed a few source code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
499 .getPreferences(
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
500 "AutoCompletionFollowHierarchy"
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
501 )
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
502 )
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
503 )
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
504 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
505 completions.extend(
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
506 api.getCompletions(
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
507 start=word, context=superClass,
121
edad4b3132fd Fixed a few source code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
508 followHierarchy=self.__plugin
edad4b3132fd Fixed a few source code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 119
diff changeset
509 .getPreferences(
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
510 "AutoCompletionFollowHierarchy"
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
511 )
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
512 )
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
513 )
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
514 for completion in completions:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
515 if not completion["context"]:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
516 entry = completion["completion"]
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
517 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
518 entry = "{0} ({1})".format(
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
519 completion["completion"],
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
520 completion["context"]
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
521 )
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
522 if entry in completionsList:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
523 completionsList.remove(entry)
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
524 if completion["pictureId"]:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
525 entry += "?{0}".format(completion["pictureId"])
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
526 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
527 cont = False
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
528 re = QRegExp(
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
529 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
530 for comp in completionsList:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
531 if re.exactMatch(comp):
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
532 cont = True
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
533 break
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
534 if cont:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
535 continue
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
536 if entry not in completionsList:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
537 completionsList.append(entry)
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
538
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
539 break
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
540 elif context:
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
541 completions = api.getCompletions(context=word)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
542 for completion in completions:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
543 entry = completion["completion"]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
544 if completion["pictureId"]:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
545 entry += "?{0}".format(completion["pictureId"])
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
546 if entry not in completionsList:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
547 completionsList.append(entry)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
548 else:
42
2489ae0286ef Added Python from import completion function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 41
diff changeset
549 if prefix:
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
550 completions = api.getCompletions(
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
551 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
552 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
553 # 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
554 completions = api.getCompletions(start=word)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
555 for completion in completions:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
556 if not completion["context"]:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
557 entry = completion["completion"]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
558 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
559 entry = "{0} ({1})".format(
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
560 completion["completion"],
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
561 completion["context"]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
562 )
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
563 if entry in completionsList:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
564 completionsList.remove(entry)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
565 if completion["pictureId"]:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
566 entry += "?{0}".format(completion["pictureId"])
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
567 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
568 cont = False
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
569 re = QRegExp(QRegExp.escape(entry) + "\?\d{,2}")
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
570 for comp in completionsList:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
571 if re.exactMatch(comp):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
572 cont = True
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
573 break
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
574 if cont:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
575 continue
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
576 if entry not in completionsList:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
577 completionsList.append(entry)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
578 return completionsList
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
579
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
580 def __getDocumentCompletions(self, editor, word, context, sep, prefix,
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
581 module, doHierarchy=False):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
582 """
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
583 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
584
46
5e928f308f55 Refined the autocompletion function even further.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
585 @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
586 @param word string to be completed (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
587 @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
588 @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
589 @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
590 @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
591 @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
592 @return list of possible completions (list of strings)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
593 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
594 completionsList = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
595
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
596 prefixFound = False
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
597 if prefix and module:
66
f57b151c9761 Modified the code to do lazy import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 65
diff changeset
598 from QScintilla.Editor import Editor
f57b151c9761 Modified the code to do lazy import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 65
diff changeset
599
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
600 line, col = editor.getCursorPosition()
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
601 if prefix in ["cls", "self"]:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
602 prefixFound = True
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
603 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
604 if line >= cl.lineno and \
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
605 (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
606 comps = []
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
607 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
608 if method.name == "__init__":
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
609 continue
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():
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
612 iconID = Editor.MethodPrivateID
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
613 elif method.isProtected():
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
614 iconID = Editor.MethodProtectedID
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
615 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
616 iconID = Editor.MethodID
98
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
617 if (prefix == "cls" and
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
618 method.modifier == method.Class) or \
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
619 prefix == "self":
35
6b706b02c2dd Small enhancement to the autocompletions change in order to show context for document derived completions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
620 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
621 if prefix != "cls":
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
622 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
623 # determine icon type
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
624 if attribute.isPrivate():
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
625 iconID = Editor.AttributePrivateID
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
626 elif attribute.isProtected():
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
627 iconID = Editor.AttributeProtectedID
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
628 else:
36
d4d279e10fa8 Fixed an issue assigning a wrong icon ID for public attributes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
629 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
630 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
631 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
632 # determine icon type
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
633 if attribute.isPrivate():
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
634 iconID = Editor.AttributePrivateID
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
635 elif attribute.isProtected():
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
636 iconID = Editor.AttributeProtectedID
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
637 else:
36
d4d279e10fa8 Fixed an issue assigning a wrong icon ID for public attributes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
638 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
639 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
640
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
641 if word != prefix:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
642 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
643 ["{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
644 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
645 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
646 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
647 ["{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
648 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
649
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
650 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
651 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
652 if word == prefix:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
653 nword = sup
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
654 else:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
655 nword = word
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
656 completionsList.extend(
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
657 self.__getDocumentCompletions(
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
658 editor, nword, context, sep, sup,
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
659 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
660
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
661 break
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
662 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
663 # 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
664 if prefix in module.classes:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
665 prefixFound = True
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
666 cl = module.classes[prefix]
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
667 comps = []
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
668 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
669 if method.name == "__init__":
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
670 continue
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
671 if doHierarchy or \
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
672 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
673 # determine icon type
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
674 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
675 if doHierarchy:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
676 continue
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
677 iconID = Editor.MethodPrivateID
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
678 elif method.isProtected():
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
679 iconID = Editor.MethodProtectedID
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
680 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
681 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
682 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
683 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
684 # determine icon type
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
685 if attribute.isPrivate():
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
686 iconID = Editor.AttributePrivateID
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
687 elif attribute.isProtected():
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
688 iconID = Editor.AttributeProtectedID
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
689 else:
36
d4d279e10fa8 Fixed an issue assigning a wrong icon ID for public attributes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
690 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
691 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
692
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
693 if word != prefix:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
694 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
695 ["{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
696 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
697 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
698 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
699 ["{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
700 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
701
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
702 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
703 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
704 if word == prefix:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
705 nword = sup
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
706 else:
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
707 nword = word
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
708 completionsList.extend(
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
709 self.__getDocumentCompletions(
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
710 editor, nword, context, sep, sup, module,
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
711 doHierarchy=True))
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
712
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
713 if not prefixFound:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
714 currentPos = editor.currentPosition()
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
715 if context:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
716 word += sep
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
717
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
718 if editor.isUtf8():
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
719 sword = word.encode("utf-8")
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
720 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
721 sword = word
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
722 res = editor.findFirstTarget(
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
723 sword, False, editor.autoCompletionCaseSensitivity(),
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
724 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
725 while res:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
726 start, length = editor.getFoundTarget()
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
727 pos = start + length
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
728 if pos != currentPos:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
729 if context:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
730 completion = ""
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
731 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
732 completion = word
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
733 line, index = editor.lineIndexFromPosition(pos)
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
734 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
735 completion += curWord[len(completion):]
107
728fde5bfdb1 Fixed a little annoying bug and some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
736 if completion and completion not in completionsList and \
728fde5bfdb1 Fixed a little annoying bug and some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 106
diff changeset
737 completion != word:
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
738 completionsList.append(
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
739 "{0}?{1}".format(
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
740 completion, self.__fromDocumentID))
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
741
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
742 res = editor.findNextTarget()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
743
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
744 completionsList.sort()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
745 return completionsList
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
746
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
747 ###########################
30
8f4d794d8ee0 Dropped support for eric 5.0.x.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 25
diff changeset
748 ## calltips methods below
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
749 ###########################
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
750
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
751 def __setCalltipsHook(self, editor):
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 Private method to set the calltip hook.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
754
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
755 @param editor reference to the editor (QScintilla.Editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
756 """
119
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
757 try:
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
758 editor.addCallTipHook("Assistant", self.calltips)
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
759 except AttributeError:
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
760 # old interface (before 6.1.0)
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
761 editor.setCallTipHook(self.calltips)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
762
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
763 def __unsetCalltipsHook(self, editor):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
764 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
765 Private method to unset the calltip hook.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
766
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
767 @param editor reference to the editor (QScintilla.Editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
768 """
119
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
769 try:
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
770 editor.removeCallTipHook("Assistant")
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
771 except AttributeError:
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
772 # old interface (before 6.1.0)
263a95431e41 Adapted to the extended Editor API as of eric 6.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 118
diff changeset
773 editor.unsetCallTipHook()
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
774
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
775 def calltips(self, editor, pos, commas):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
776 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
777 Public method to return a list of calltips.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
778
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
779 @param editor reference to the editor (QScintilla.Editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
780 @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
781 @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
782 (integer)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
783 @return list of possible calltips (list of strings)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
784 """
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
785 try:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
786 language = editor.getApiLanguage()
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
787 except AttributeError:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
788 # backward compatibility
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
789 language = editor.apiLanguage
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
790
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
791 completeFromDocumentOnly = False
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
792 if language in ["", "Guessed"] or language.startswith("Pygments|"):
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
793 if self.__plugin.getPreferences("AutoCompletionSource") & \
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
794 AcsDocument:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
795 completeFromDocumentOnly = True
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
796 else:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
797 return []
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
798
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
799 projectType = self.__getProjectType(editor)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
800
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
801 line, col = editor.lineIndexFromPosition(pos)
18
b8ece0b784e8 Fixed a few unicode related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
802 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
803 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
804 text = editor.text(line)
18
b8ece0b784e8 Fixed a few unicode related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
805 while col > 0 and \
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
806 not pat.match(text[col - 1]):
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
807 col -= 1
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
808 word = editor.getWordLeft(line, col)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
809
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
810 prefix = ""
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
811 mod = None
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
812 beg = editor.text(line)[:col]
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
813 col = len(beg)
132
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
814 if language:
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
815 wseps = editor.getLexer().autoCompletionWordSeparators()
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
816 else:
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
817 wseps = []
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
818 if wseps:
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
819 if col > 0 and beg[col - 1] in wseps:
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
820 col -= 1
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
821 else:
132
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
822 while col > 0 and beg[col - 1] not in wseps + [" ", "\t"]:
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
823 col -= 1
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
824 if col >= 0:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
825 col -= 1
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
826 prefix = editor.getWordLeft(line, col)
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
827 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
828 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
829 src = editor.text()
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
830 fn = editor.getFileName()
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
831 if fn is None:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
832 fn = ""
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
833 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
834 mod.scan(src)
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
835
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
836 apiCalltips = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
837 projectCalltips = []
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
838 documentCalltips = []
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
839
131
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
840 if not completeFromDocumentOnly:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
841 if self.__plugin.getPreferences("AutoCompletionSource") & AcsAPIs:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
842 api = self.__apisManager.getAPIs(
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
843 language, projectType=projectType)
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
844 if api is not None:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
845 apiCalltips = self.__getApiCalltips(
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
846 api, word, commas, prefix, mod, editor)
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
847
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
848 if self.__plugin.getPreferences("AutoCompletionSource") & \
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
849 AcsProject:
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
850 api = self.__apisManager.getAPIs(ApisNameProject)
7d868e8e1cfb Added support for project type specific API configurations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 122
diff changeset
851 projectCalltips = self.__getApiCalltips(
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
852 api, word, commas, prefix, mod, editor)
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
853
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
854 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
855 documentCalltips = self.__getDocumentCalltips(
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
856 word, prefix, mod, editor)
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
857
116
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
858 return list(sorted(
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
859 set(apiCalltips)
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
860 .union(set(projectCalltips))
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
861 .union(set(documentCalltips))
116
a109c6b8ac77 Fixed a bug and made the method to get a list of completions publicly available.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 107
diff changeset
862 ))
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
863
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
864 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
865 """
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
866 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
867
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
868 @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
869 @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
870 @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
871 (integer)
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
872 @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
873 @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
874 @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
875 @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
876 """
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
877 calltips = []
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
878 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
879 line, col = editor.getCursorPosition()
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
880 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
881 if line >= cl.lineno and \
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
882 (cl.endlineno == -1 or line <= cl.endlineno):
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
883 for superClass in cl.super:
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
884 calltips.extend(api.getCalltips(
136
5cfe53b474a9 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 135
diff changeset
885 word, commas, superClass, None,
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
886 self.__plugin.getPreferences(
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
887 "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
888 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
889 "CallTipsFollowHierarchy")))
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
890 break
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
891 else:
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
892 calltips = api.getCalltips(
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
893 word, commas, self.__lastContext, self.__lastFullContext,
2
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
894 self.__plugin.getPreferences("CallTipsContextShown"))
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
895
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
896 return calltips
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
897
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
898 def __getDocumentCalltips(self, word, prefix, module, editor,
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
899 doHierarchy=False):
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
900 """
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
901 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
902
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
903 @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
904 @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
905 @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
906 @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
907 @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
908 @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
909 """
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
910 calltips = []
132
eb12cd27384f Fixed an issue dealing with source documents without a recodnized lexer language.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 131
diff changeset
911 if module and bool(editor.getLexer()):
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
912 if prefix:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
913 # 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
914 sep = editor.getLexer().autoCompletionWordSeparators()[0]
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
915 if prefix in ["self", "cls"]:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
916 line, col = editor.getCursorPosition()
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
917 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
918 if line >= cl.lineno and \
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
919 (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
920 if word in cl.methods:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
921 method = cl.methods[word]
98
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
922 if prefix == "self" or \
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
923 (prefix == "cls" and
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
924 method.modifier == method.Class):
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
925 calltips.append(
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
926 "{0}{1}{2}({3})".format(
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
927 cl.name,
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
928 sep,
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
929 word,
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
930 ', '.join(method.parameters[1:]
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
931 )))
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
932
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
933 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
934 calltips.extend(self.__getDocumentCalltips(
84
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
935 word, sup, module, editor,
67197c1f11eb Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 76
diff changeset
936 doHierarchy=True))
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
937
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
938 break
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
939 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
940 if prefix in module.classes:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
941 cl = module.classes[prefix]
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
942 if word in cl.methods:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
943 method = cl.methods[word]
98
9c331ebb4b8c Removed some code dealing with early eric5 versions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 97
diff changeset
944 if doHierarchy or method.modifier == method.Class:
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
945 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
946 cl.name,
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
947 sep,
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
948 word,
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
949 ', '.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
950
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
951 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
952 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
953 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
954 else:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
955 # 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
956 if word in module.functions:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
957 fun = module.functions[word]
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
958 calltips.append("{0}({1})".format(
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
959 word,
39
7b6ca9397ecc More improvements of auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
960 ', '.join(fun.parameters)))
32
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
961 elif word in module.classes:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
962 cl = module.classes[word]
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
963 if "__init__" in cl.methods:
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
964 method = cl.methods["__init__"]
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
965 calltips.append("{0}({1})".format(
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
966 word,
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
967 ', '.join(method.parameters[1:])))
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
968
68ef15fe34c3 Improved auto-completions and calltips for Python sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
969 return calltips

eric ide

mercurial