AssistantEric/Assistant.py

Sun, 17 Jan 2010 19:22:18 +0000

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 17 Jan 2010 19:22:18 +0000
changeset 2
89cbc07f4bf0
child 5
e1a56c9a9c9d
permissions
-rw-r--r--

First commit after porting to Python3.

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
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2008 - 2010 Detlev Offenbach <detlev@die-offenbachs.de>
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
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 from PyQt4.QtCore import *
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 from PyQt4.Qsci import QsciScintilla
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from E5Gui.E5Application import e5App
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 from .APIsManager import APIsManager, ApisNameProject
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 QScintilla.Editor import Editor
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 import Preferences
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 AcsAPIs = 0x0001
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 AcsDocument = 0x0002
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 AcsProject = 0x0004
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 AcsOther = 0x1000
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 class Assistant(QObject):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 Class implementing the autocompletion and calltips system.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 def __init__(self, plugin, parent = None):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 Constructor
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @param plugin reference to the plugin object
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @param parent parent (QObject)
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 QObject.__init__(self, parent)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 self.__plugin = plugin
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 self.__ui = parent
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 self.__project = e5App().getObject("Project")
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 self.__viewmanager = e5App().getObject("ViewManager")
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 self.__pluginManager = e5App().getObject("PluginManager")
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 self.__apisManager = APIsManager(self)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 self.__editors = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 self.__completingContext = False
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 self.__lastContext = None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.__lastFullContext = None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 self.__fromDocumentID = Editor.FromDocumentID
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 def activate(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 Public method to perform actions upon activation.
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 self.connect(self.__pluginManager, SIGNAL("shutdown()"),
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self.__shutdown)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 self.connect(self.__ui, SIGNAL('preferencesChanged'),
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 self.__preferencesChanged)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 self.connect(self.__viewmanager, SIGNAL("editorOpenedEd"),
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 self.__editorOpened)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 self.connect(self.__viewmanager, SIGNAL("editorClosedEd"),
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.__editorClosed)
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 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 self.disconnect(self.__pluginManager, SIGNAL("shutdown()"),
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 self.__shutdown)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 self.disconnect(self.__ui, SIGNAL('preferencesChanged'),
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 self.__preferencesChanged)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 self.disconnect(self.__viewmanager, SIGNAL("editorOpenedEd"),
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 self.__editorOpened)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 self.disconnect(self.__viewmanager, SIGNAL("editorClosedEd"),
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 self.__editorClosed)
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 self.__shutdown()
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 def __shutdown(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 Private slot to handle the shutdown signal.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 for editor in self.__editors[:]:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 self.__editorClosed(editor)
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 self.__apisManager.deactivate()
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 def setEnabled(self, key, enabled):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 Public method to enable or disable a feature.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 @param key feature to set (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 @param enabled flag indicating the status (boolean)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 for editor in self.__editors[:]:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 self.__editorClosed(editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 if enabled:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 for editor in self.__viewmanager.getOpenEditors():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 self.__editorOpened(editor)
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 def __editorOpened(self, 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 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
118
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 @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
120 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 if self.__plugin.getPreferences("AutoCompletionEnabled"):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 self.__setAutoCompletionHook(editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 if self.__plugin.getPreferences("CalltipsEnabled"):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 self.__setCalltipsHook(editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 self.connect(editor, SIGNAL("editorSaved"),
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 self.__apisManager.getAPIs(ApisNameProject).editorSaved)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 self.__editors.append(editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 # preload the api to give the manager a chance to prepare the database
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 language = editor.getLanguage()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 if language == "":
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 return
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 self.__apisManager.getAPIs(language)
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:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 self.disconnect(editor, SIGNAL("editorSaved"),
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 self.__apisManager.getAPIs(ApisNameProject).editorSaved)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 self.__editors.remove(editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 if editor.autoCompletionHook() == self.autocomplete:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 self.__unsetAutoCompletionHook(editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 if editor.callTipHook() == self.calltips:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 self.__unsetCalltipsHook(editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 def __preferencesChanged(self):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 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
153 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 self.__apisManager.reloadAPIs()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 def __getCharacter(self, pos, editor):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 Private method to get the character to the left of the current position
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 in the current line.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 @param pos position to get character at (integer)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 @param editor reference to the editor object to work with (QScintilla.Editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 @return requested character or "", if there are no more (string) and
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 the next position (i.e. pos - 1)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 if pos <= 0:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 return "", pos
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 pos -= 1
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 ch = editor.charAt(pos)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 # Don't go past the end of the previous line
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 if ch == '\n' or ch == '\r':
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 return "", pos
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 return ch, pos
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 #################################
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 ## autocompletion methods below
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 #################################
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 def __completionListSelected(self, id, txt):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 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
185
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 @param id the ID of the user list (should be 1) (integer)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 @param txt the selected text (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 from QScintilla.Editor import EditorAutoCompletionListID
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 editor = self.sender()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 if id == EditorAutoCompletionListID:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 lst = txt.split()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 if len(lst) > 1:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 txt = lst[0]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 self.__lastFullContext = lst[1][1:].split(")")[0]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 self.__lastFullContext = None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 if Preferences.getEditor("AutoCompletionReplaceWord"):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 editor.selectCurrentWord()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 editor.removeSelectedText()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 line, col = editor.getCursorPosition()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 line, col = editor.getCursorPosition()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 wLeft = editor.getWordLeft(line, col)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 if not txt.startswith(wLeft):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 editor.selectCurrentWord()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 editor.removeSelectedText()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 line, col = editor.getCursorPosition()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 elif wLeft:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 txt = txt[len(wLeft):]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 editor.insert(txt)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 editor.setCursorPosition(line, col + len(txt))
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 def __setAutoCompletionHook(self, editor):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 Private method to set the autocompletion hook.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 @param editor reference to the editor (QScintilla.Editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 self.connect(editor, SIGNAL('userListActivated(int, const QString)'),
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 self.__completionListSelected)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 editor.setAutoCompletionHook(self.autocomplete)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 def __unsetAutoCompletionHook(self, editor):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 Private method to unset the autocompletion hook.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 @param editor reference to the editor (QScintilla.Editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 editor.unsetAutoCompletionHook()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 self.disconnect(editor, SIGNAL('userListActivated(int, const QString)'),
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 self.__completionListSelected)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 def autocomplete(self, editor, context):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 Public method to determine the autocompletion proposals.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 @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
241 (QScintilla.Editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 @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
243 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 from QScintilla.Editor import EditorAutoCompletionListID
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 if editor.isListActive():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 editor.cancelList()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 language = editor.getLanguage()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 if language == "":
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 return
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 line, col = editor.getCursorPosition()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 self.__completingContext = context
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 apiCompletionsList = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 docCompletionsList = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 projectCompletionList = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 sep = ""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 if context:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 wc = editor.wordCharacters()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 text = editor.text(line)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 beg = text[:col]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 for wsep in editor.getLexer().autoCompletionWordSeparators():
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 if beg.endswith(wsep):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 sep = wsep
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 break
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 depth = 0
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 while col > 0 and text[col - 1] not in wc:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 ch = text[col - 1]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 if ch == ')':
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 depth = 1
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 # ignore everything back to the start of the
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 # corresponding parenthesis
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 col -= 1
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 while col > 0:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 ch = text[col - 1]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 if ch == ')':
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 depth += 1
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 elif ch == '(':
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 depth -= 1
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 if depth == 0:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285 break
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 col -= 1
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 elif ch == '(':
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 break
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 col -= 1
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 word = editor.getWordLeft(line, col)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 if context:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 self.__lastContext = word
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 self.__lastContext = None
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 if word:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 if self.__plugin.getPreferences("AutoCompletionSource") & AcsAPIs:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 api = self.__apisManager.getAPIs(language)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 apiCompletionsList = self.__getApiCompletions(api, word, context)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 if self.__plugin.getPreferences("AutoCompletionSource") & AcsProject:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 api = self.__apisManager.getAPIs(ApisNameProject)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 projectCompletionList = self.__getApiCompletions(api, word, context)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 if self.__plugin.getPreferences("AutoCompletionSource") & AcsDocument:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 docCompletionsList = \
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 self.getCompletionsFromDocument(editor, word, context, sep)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 completionsList = list(
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 set(apiCompletionsList)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312 .union(set(docCompletionsList))
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 .union(set(projectCompletionList))
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 )
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 if len(completionsList) > 0:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 completionsList.sort()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 editor.showUserList(EditorAutoCompletionListID, completionsList)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 def __getApiCompletions(self, api, word, context):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 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
323
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324 @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
325 @param word word (or wordpart) to complete (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326 @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
327 @return list of possible completions (list of strings)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329 completionsList = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 if api is not None:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331 if context:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332 completions = api.getCompletions(context = word)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 for completion in completions:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 entry = completion["completion"]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 if completion["pictureId"]:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 entry += "?{0}".format(completion["pictureId"])
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 if entry not in completionsList:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 completionsList.append(entry)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 completions = api.getCompletions(start = word)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 for completion in completions:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 if not completion["context"]:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 entry = completion["completion"]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 entry = "{0} ({1})".format(
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 completion["completion"],
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 completion["context"]
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 )
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349 if entry in completionsList:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350 completionsList.remove(entry)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
351 if completion["pictureId"]:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352 entry += "?{0}".format(completion["pictureId"])
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 cont = False
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 re = QRegExp(QRegExp.escape(entry) + "\?\d{,2}")
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 for comp in completionsList:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357 if re.exactMatch(comp):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358 cont = True
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 break
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 if cont:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 continue
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 if entry not in completionsList:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 completionsList.append(entry)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364 return completionsList
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 def getCompletionsFromDocument(self, editor, word, context, sep):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368 Public method to determine autocompletion proposals from the document.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 @param editor reference to the editor object (QScintilla.Editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371 @param word string to be completed (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372 @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
373 @param sep separator string (string)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374 @return list of possible completions (list of strings)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 currentPos = editor.currentPosition()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 completionsList = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 if context:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 word += sep
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 res = editor.findFirstTarget(word, False, editor.autoCompletionCaseSensitivity(),
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 False, begline = 0, begindex = 0, ws_ = True)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 while res:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384 start, length = editor.getFoundTarget()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 pos = start + length
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 if pos != currentPos:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 if context:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 completion = ""
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 else:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 completion = word
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391 ch = editor.charAt(pos)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 while editor.isWordCharacter(ch):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
393 completion += ch
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394 pos += 1
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
395 ch = editor.charAt(pos)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
396 if completion and completion not in completionsList:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
397 completionsList.append(
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
398 "{0}?{1}".format(completion, self.__fromDocumentID))
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
399
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
400 res = editor.findNextTarget()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
401
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
402 completionsList.sort()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
403 return completionsList
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
404
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
405 ###########################
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
406 ## calltips methods below
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
407 ###########################
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
409 def __setCalltipsHook(self, editor):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
410 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
411 Private method to set the calltip hook.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
412
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
413 @param editor reference to the editor (QScintilla.Editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
414 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415 editor.setCallTipHook(self.calltips)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
416
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
417 def __unsetCalltipsHook(self, editor):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419 Private method to unset the calltip hook.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
420
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
421 @param editor reference to the editor (QScintilla.Editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
422 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
423 editor.unsetCallTipHook()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
424
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
425 def calltips(self, editor, pos, commas):
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
426 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
427 Public method to return a list of calltips.
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
429 @param editor reference to the editor (QScintilla.Editor)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
430 @param pos position in the text for the calltip (integer)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431 @param commas minimum number of commas contained in the calltip (integer)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432 @return list of possible calltips (list of strings)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433 """
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
434 language = editor.getLanguage()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
435 if language == "":
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
436 return
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
438 line, col = editor.lineIndexFromPosition(pos)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
439 wc = editor.wordCharacters()
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440 text = editor.text(line)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
441 while col > 0 and text[col - 1] not in wc:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
442 col -= 1
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
443 word = editor.getWordLeft(line, col)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
444
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
445 apiCalltips = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
446 projectCalltips = []
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
448 if self.__plugin.getPreferences("AutoCompletionSource") & AcsAPIs:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
449 api = self.__apisManager.getAPIs(language)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
450 if api is not None:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
451 apiCalltips = api.getCalltips(word, commas, self.__lastContext,
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
452 self.__lastFullContext,
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
453 self.__plugin.getPreferences("CallTipsContextShown"))
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
454
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
455 if self.__plugin.getPreferences("AutoCompletionSource") & AcsProject:
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
456 api = self.__apisManager.getAPIs(ApisNameProject)
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457 projectCalltips = api.getCalltips(word, commas, self.__lastContext,
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458 self.__lastFullContext,
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
459 self.__plugin.getPreferences("CallTipsContextShown"))
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460
89cbc07f4bf0 First commit after porting to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
461 return sorted(set(apiCalltips).union(set(projectCalltips)))

eric ide

mercurial