Jedi: integrated the Assistant Jedi plugin as a fixed part of eric. eric7

Sat, 11 Sep 2021 19:47:02 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 11 Sep 2021 19:47:02 +0200
branch
eric7
changeset 8593
1d66b6af60ed
parent 8592
ab8580937d4b
child 8594
f254ab0d42fa

Jedi: integrated the Assistant Jedi plugin as a fixed part of eric.

docs/changelog file | annotate | diff | comparison | revisions
eric7.epj file | annotate | diff | comparison | revisions
eric7/APIs/Python3/eric7.api file | annotate | diff | comparison | revisions
eric7/APIs/Python3/eric7.bas file | annotate | diff | comparison | revisions
eric7/Documentation/Help/source.qch file | annotate | diff | comparison | revisions
eric7/Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
eric7/Documentation/Source/eric7.JediInterface.AssistantJedi.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/eric7.JediInterface.JediClient.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/eric7.JediInterface.JediServer.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/eric7.Preferences.ConfigurationPages.EditorAutoCompletionJediPage.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/eric7.Preferences.ConfigurationPages.EditorCallTipsJediPage.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerJediPage.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/eric7.Preferences.__init__.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/index-eric7.JediInterface.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/index-eric7.Preferences.ConfigurationPages.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/index-eric7.html file | annotate | diff | comparison | revisions
eric7/JediInterface/AssistantJedi.py file | annotate | diff | comparison | revisions
eric7/JediInterface/JediClient.py file | annotate | diff | comparison | revisions
eric7/JediInterface/JediServer.py file | annotate | diff | comparison | revisions
eric7/JediInterface/__init__.py file | annotate | diff | comparison | revisions
eric7/Preferences/ConfigurationDialog.py file | annotate | diff | comparison | revisions
eric7/Preferences/ConfigurationPages/EditorAutoCompletionJediPage.py file | annotate | diff | comparison | revisions
eric7/Preferences/ConfigurationPages/EditorAutoCompletionJediPage.ui file | annotate | diff | comparison | revisions
eric7/Preferences/ConfigurationPages/EditorAutocompletionQScintillaPage.py file | annotate | diff | comparison | revisions
eric7/Preferences/ConfigurationPages/EditorCallTipsJediPage.py file | annotate | diff | comparison | revisions
eric7/Preferences/ConfigurationPages/EditorCallTipsJediPage.ui file | annotate | diff | comparison | revisions
eric7/Preferences/ConfigurationPages/EditorMouseClickHandlerJediPage.py file | annotate | diff | comparison | revisions
eric7/Preferences/ConfigurationPages/EditorMouseClickHandlerJediPage.ui file | annotate | diff | comparison | revisions
eric7/Preferences/ProgramsDialog.py file | annotate | diff | comparison | revisions
eric7/Preferences/__init__.py file | annotate | diff | comparison | revisions
eric7/UI/UserInterface.py file | annotate | diff | comparison | revisions
eric7/eric7.py file | annotate | diff | comparison | revisions
eric7/i18n/eric7_cs.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_de.qm file | annotate | diff | comparison | revisions
eric7/i18n/eric7_de.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_empty.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_en.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_es.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_fr.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_it.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_pt.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_ru.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_tr.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_zh_CN.ts file | annotate | diff | comparison | revisions
eric7/icons/breeze-dark/jedi.svg file | annotate | diff | comparison | revisions
eric7/icons/breeze-light/jedi.svg file | annotate | diff | comparison | revisions
scripts/install.py file | annotate | diff | comparison | revisions
setup.py file | annotate | diff | comparison | revisions
--- a/docs/changelog	Sat Sep 11 19:40:25 2021 +0200
+++ b/docs/changelog	Sat Sep 11 19:47:02 2021 +0200
@@ -12,6 +12,10 @@
      the file type 'Text'
   -- added code to move a breakpoint to a line actually creating some byte code
      (Python only)
+- Jedi
+  -- integrated the Assistant Jedi plugin as a fixed part of eric
+  -- added code to jump to references when clicked on a definition
+  -- added support for mouse hover help
 - Plugin Uninstall Dialog
   -- added capability to uninstall several plugins with one invocation of the
      dialog
--- a/eric7.epj	Sat Sep 11 19:40:25 2021 +0200
+++ b/eric7.epj	Sat Sep 11 19:47:02 2021 +0200
@@ -710,7 +710,10 @@
       "eric7/Plugins/WizardPlugins/EricMessageBoxWizard/EricMessageBoxWizardDialog.ui",
       "eric7/Plugins/WizardPlugins/FontDialogWizard/FontDialogOptionsDialog.ui",
       "eric7/WebBrowser/QtHelp/QtHelpDocumentationSettingsWidget.ui",
-      "eric7/WebBrowser/QtHelp/QtHelpDocumentationConfigurationDialog.ui"
+      "eric7/WebBrowser/QtHelp/QtHelpDocumentationConfigurationDialog.ui",
+      "eric7/Preferences/ConfigurationPages/EditorAutoCompletionJediPage.ui",
+      "eric7/Preferences/ConfigurationPages/EditorCallTipsJediPage.ui",
+      "eric7/Preferences/ConfigurationPages/EditorMouseClickHandlerJediPage.ui"
     ],
     "HASH": "df7daa8781250f7664e6ecaeaf1361fa2efd39ee",
     "IDLPARAMS": {
@@ -2273,7 +2276,14 @@
       "eric7/WebBrowser/QtHelp/QtHelpDocumentationConfigurationDialog.py",
       "eric7/EricWidgets/EricSpellCheckedTextEdit.py",
       "eric7/EricNetwork/EricNetworkIcon.py",
-      "eric7/EricWidgets/EricIconBar.py"
+      "eric7/EricWidgets/EricIconBar.py",
+      "eric7/JediInterface/__init__.py",
+      "eric7/JediInterface/AssistantJedi.py",
+      "eric7/JediInterface/JediClient.py",
+      "eric7/JediInterface/JediServer.py",
+      "eric7/Preferences/ConfigurationPages/EditorAutoCompletionJediPage.py",
+      "eric7/Preferences/ConfigurationPages/EditorCallTipsJediPage.py",
+      "eric7/Preferences/ConfigurationPages/EditorMouseClickHandlerJediPage.py"
     ],
     "SPELLEXCLUDES": "Dictionaries/excludes.dic",
     "SPELLLANGUAGE": "en_US",
--- a/eric7/APIs/Python3/eric7.api	Sat Sep 11 19:40:25 2021 +0200
+++ b/eric7/APIs/Python3/eric7.api	Sat Sep 11 19:47:02 2021 +0200
@@ -2345,6 +2345,24 @@
 eric7.IconEditor.IconEditorWindow.IconEditorWindow?1(fileName="", parent=None, fromEric=False, initShortcutsOnly=False, project=None)
 eric7.IconEditor.IconSizeDialog.IconSizeDialog.getData?4()
 eric7.IconEditor.IconSizeDialog.IconSizeDialog?1(width, height, parent=None)
+eric7.JediInterface.AssistantJedi.AssistantJedi?1(ui, viewManager, project)
+eric7.JediInterface.JediClient.JediClient.handleCall?4(method, params)
+eric7.JediInterface.JediClient.JediClient?1(host, port, idString)
+eric7.JediInterface.JediClient.SuppressedException?7
+eric7.JediInterface.JediClient.modulePath?7
+eric7.JediInterface.JediServer.JediServer.IdProject?7
+eric7.JediInterface.JediServer.JediServer.PictureIDs?7
+eric7.JediInterface.JediServer.JediServer.activate?4()
+eric7.JediInterface.JediServer.JediServer.deactivate?4()
+eric7.JediInterface.JediServer.JediServer.getCallTips?4(editor, pos, commas)
+eric7.JediInterface.JediServer.JediServer.gotoDefinition?4(editor)
+eric7.JediInterface.JediServer.JediServer.handleCall?4(method, params)
+eric7.JediInterface.JediServer.JediServer.handleNewConnection?4()
+eric7.JediInterface.JediServer.JediServer.hoverHelp?4(editor, line, index)
+eric7.JediInterface.JediServer.JediServer.isSupportedLanguage?4(language)
+eric7.JediInterface.JediServer.JediServer.requestCodeDocumentation?4(editor)
+eric7.JediInterface.JediServer.JediServer.requestCompletions?4(editor, context, acText)
+eric7.JediInterface.JediServer.JediServer?1(viewManager, project, ui)
 eric7.MicroPython.AddEditDevicesDialog.AddEditDevicesDialog.getDeviceDict?4()
 eric7.MicroPython.AddEditDevicesDialog.AddEditDevicesDialog.on_deviceTypeComboBox_currentIndexChanged?4(index)
 eric7.MicroPython.AddEditDevicesDialog.AddEditDevicesDialog.on_reportButton_clicked?4()
@@ -6585,12 +6603,18 @@
 eric7.Preferences.ConfigurationPages.EditorAPIsPage.EditorAPIsPage.setState?4(state)
 eric7.Preferences.ConfigurationPages.EditorAPIsPage.EditorAPIsPage?1()
 eric7.Preferences.ConfigurationPages.EditorAPIsPage.create?4(dlg)
+eric7.Preferences.ConfigurationPages.EditorAutoCompletionJediPage.EditorAutoCompletionJediPage.save?4()
+eric7.Preferences.ConfigurationPages.EditorAutoCompletionJediPage.EditorAutoCompletionJediPage?1()
+eric7.Preferences.ConfigurationPages.EditorAutoCompletionJediPage.create?4(dlg)
 eric7.Preferences.ConfigurationPages.EditorAutocompletionPage.EditorAutocompletionPage.save?4()
 eric7.Preferences.ConfigurationPages.EditorAutocompletionPage.EditorAutocompletionPage?1()
 eric7.Preferences.ConfigurationPages.EditorAutocompletionPage.create?4(dlg)
 eric7.Preferences.ConfigurationPages.EditorAutocompletionQScintillaPage.EditorAutocompletionQScintillaPage.save?4()
 eric7.Preferences.ConfigurationPages.EditorAutocompletionQScintillaPage.EditorAutocompletionQScintillaPage?1()
 eric7.Preferences.ConfigurationPages.EditorAutocompletionQScintillaPage.create?4(dlg)
+eric7.Preferences.ConfigurationPages.EditorCallTipsJediPage.EditorCallTipsJediPage.save?4()
+eric7.Preferences.ConfigurationPages.EditorCallTipsJediPage.EditorCallTipsJediPage?1()
+eric7.Preferences.ConfigurationPages.EditorCallTipsJediPage.create?4(dlg)
 eric7.Preferences.ConfigurationPages.EditorCalltipsPage.EditorCalltipsPage.save?4()
 eric7.Preferences.ConfigurationPages.EditorCalltipsPage.EditorCalltipsPage?1()
 eric7.Preferences.ConfigurationPages.EditorCalltipsPage.create?4(dlg)
@@ -6679,6 +6703,10 @@
 eric7.Preferences.ConfigurationPages.EditorLanguageTabIndentOverrideDialog.EditorLanguageTabIndentOverrideDialog.on_languageComboBox_currentIndexChanged?4(index)
 eric7.Preferences.ConfigurationPages.EditorLanguageTabIndentOverrideDialog.EditorLanguageTabIndentOverrideDialog.on_pygmentsLexerCombo_currentIndexChanged?4(index)
 eric7.Preferences.ConfigurationPages.EditorLanguageTabIndentOverrideDialog.EditorLanguageTabIndentOverrideDialog?1(*, editMode=False, languages=None, tabWidth=0, indentWidth=0, parent=None)
+eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerJediPage.EditorMouseClickHandlerJediPage.on_changeGotoButton_clicked?4()
+eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerJediPage.EditorMouseClickHandlerJediPage.save?4()
+eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerJediPage.EditorMouseClickHandlerJediPage?1()
+eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerJediPage.create?4(dlg)
 eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerPage.EditorMouseClickHandlerPage.save?4()
 eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerPage.EditorMouseClickHandlerPage?1()
 eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerPage.create?4(dlg)
@@ -6950,6 +6978,7 @@
 eric7.Preferences.Prefs.iconsDefaults?7
 eric7.Preferences.Prefs.initWebEngineSettingsDefaults?4()
 eric7.Preferences.Prefs.ircDefaults?7
+eric7.Preferences.Prefs.jediDefaults?7
 eric7.Preferences.Prefs.microPythonDefaults?7
 eric7.Preferences.Prefs.multiProjectDefaults?7
 eric7.Preferences.Prefs.pipDefaults?7
@@ -7067,6 +7096,7 @@
 eric7.Preferences.getIconEditor?4(key)
 eric7.Preferences.getIcons?4(key)
 eric7.Preferences.getIrc?4(key)
+eric7.Preferences.getJedi?4(key)
 eric7.Preferences.getMicroPython?4(key)
 eric7.Preferences.getMultiProject?4(key)
 eric7.Preferences.getPip?4(key)
@@ -7126,6 +7156,7 @@
 eric7.Preferences.setIconEditor?4(key, value)
 eric7.Preferences.setIcons?4(key, value)
 eric7.Preferences.setIrc?4(key, value)
+eric7.Preferences.setJedi?4(key, value)
 eric7.Preferences.setMicroPython?4(key, value)
 eric7.Preferences.setMultiProject?4(key, value)
 eric7.Preferences.setPip?4(key, value)
--- a/eric7/APIs/Python3/eric7.bas	Sat Sep 11 19:40:25 2021 +0200
+++ b/eric7/APIs/Python3/eric7.bas	Sat Sep 11 19:47:02 2021 +0200
@@ -26,6 +26,7 @@
 ApplicationPage ConfigurationPageBase Ui_ApplicationPage
 ArgumentsError RuntimeError
 ArrayResolver BaseResolver
+AssistantJedi QObject
 AssociationItem EricArrowItem
 AssociationPointRegion enum.Enum
 AssociationType enum.Enum
@@ -166,9 +167,11 @@
 Editor QsciScintillaCompat
 EditorAPIsPage ConfigurationPageBase Ui_EditorAPIsPage
 EditorAssembly QWidget
+EditorAutoCompletionJediPage ConfigurationPageBase Ui_EditorAutoCompletionJediPage
 EditorAutocompletionPage ConfigurationPageBase Ui_EditorAutocompletionPage
 EditorAutocompletionQScintillaPage ConfigurationPageBase Ui_EditorAutocompletionQScintillaPage
 EditorButtonsWidget QWidget
+EditorCallTipsJediPage ConfigurationPageBase Ui_EditorCallTipsJediPage
 EditorCalltipsPage ConfigurationPageBase Ui_EditorCalltipsPage
 EditorCalltipsQScintillaPage ConfigurationPageBase Ui_EditorCalltipsQScintillaPage
 EditorDocViewerPage ConfigurationPageBase Ui_EditorDocViewerPage
@@ -181,6 +184,7 @@
 EditorKeywordsPage ConfigurationPageBase Ui_EditorKeywordsPage
 EditorLanguageTabIndentOverrideDialog QDialog Ui_EditorLanguageTabIndentOverrideDialog
 EditorMarkerMap EricMapWidget
+EditorMouseClickHandlerJediPage ConfigurationPageBase Ui_EditorMouseClickHandlerJediPage
 EditorMouseClickHandlerPage ConfigurationPageBase Ui_EditorMouseClickHandlerPage
 EditorOutlineModel BrowserModel
 EditorOutlineView QTreeView
@@ -547,6 +551,8 @@
 IrcWidget QWidget Ui_IrcWidget
 JavaScriptIcon StatusBarIcon
 JavaScriptSettingsDialog QDialog Ui_JavaScriptSettingsDialog
+JediClient EricJsonClient
+JediServer EricJsonServer
 Largefiles HgExtension
 LargefilesProjectBrowserHelper HgExtensionProjectBrowserHelper
 LargefilesProjectHelper HgExtensionProjectHelper
Binary file eric7/Documentation/Help/source.qch has changed
--- a/eric7/Documentation/Help/source.qhp	Sat Sep 11 19:40:25 2021 +0200
+++ b/eric7/Documentation/Help/source.qhp	Sat Sep 11 19:47:02 2021 +0200
@@ -230,6 +230,11 @@
             <section title="eric7.IconEditor.IconEditorWindow" ref="eric7.IconEditor.IconEditorWindow.html" />
             <section title="eric7.IconEditor.IconSizeDialog" ref="eric7.IconEditor.IconSizeDialog.html" />
           </section>
+          <section title="eric7.JediInterface" ref="index-eric7.JediInterface.html">
+            <section title="eric7.JediInterface.AssistantJedi" ref="eric7.JediInterface.AssistantJedi.html" />
+            <section title="eric7.JediInterface.JediClient" ref="eric7.JediInterface.JediClient.html" />
+            <section title="eric7.JediInterface.JediServer" ref="eric7.JediInterface.JediServer.html" />
+          </section>
           <section title="eric7.MicroPython" ref="index-eric7.MicroPython.html">
             <section title="eric7.MicroPython.AddEditDevicesDialog" ref="eric7.MicroPython.AddEditDevicesDialog.html" />
             <section title="eric7.MicroPython.CircuitPythonDevices" ref="eric7.MicroPython.CircuitPythonDevices.html" />
@@ -763,8 +768,10 @@
               <section title="eric7.Preferences.ConfigurationPages.DebuggerPython3Page" ref="eric7.Preferences.ConfigurationPages.DebuggerPython3Page.html" />
               <section title="eric7.Preferences.ConfigurationPages.DiffColoursPage" ref="eric7.Preferences.ConfigurationPages.DiffColoursPage.html" />
               <section title="eric7.Preferences.ConfigurationPages.EditorAPIsPage" ref="eric7.Preferences.ConfigurationPages.EditorAPIsPage.html" />
+              <section title="eric7.Preferences.ConfigurationPages.EditorAutoCompletionJediPage" ref="eric7.Preferences.ConfigurationPages.EditorAutoCompletionJediPage.html" />
               <section title="eric7.Preferences.ConfigurationPages.EditorAutocompletionPage" ref="eric7.Preferences.ConfigurationPages.EditorAutocompletionPage.html" />
               <section title="eric7.Preferences.ConfigurationPages.EditorAutocompletionQScintillaPage" ref="eric7.Preferences.ConfigurationPages.EditorAutocompletionQScintillaPage.html" />
+              <section title="eric7.Preferences.ConfigurationPages.EditorCallTipsJediPage" ref="eric7.Preferences.ConfigurationPages.EditorCallTipsJediPage.html" />
               <section title="eric7.Preferences.ConfigurationPages.EditorCalltipsPage" ref="eric7.Preferences.ConfigurationPages.EditorCalltipsPage.html" />
               <section title="eric7.Preferences.ConfigurationPages.EditorCalltipsQScintillaPage" ref="eric7.Preferences.ConfigurationPages.EditorCalltipsQScintillaPage.html" />
               <section title="eric7.Preferences.ConfigurationPages.EditorDocViewerPage" ref="eric7.Preferences.ConfigurationPages.EditorDocViewerPage.html" />
@@ -776,6 +783,7 @@
               <section title="eric7.Preferences.ConfigurationPages.EditorHighlightingStylesSelectionDialog" ref="eric7.Preferences.ConfigurationPages.EditorHighlightingStylesSelectionDialog.html" />
               <section title="eric7.Preferences.ConfigurationPages.EditorKeywordsPage" ref="eric7.Preferences.ConfigurationPages.EditorKeywordsPage.html" />
               <section title="eric7.Preferences.ConfigurationPages.EditorLanguageTabIndentOverrideDialog" ref="eric7.Preferences.ConfigurationPages.EditorLanguageTabIndentOverrideDialog.html" />
+              <section title="eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerJediPage" ref="eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerJediPage.html" />
               <section title="eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerPage" ref="eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerPage.html" />
               <section title="eric7.Preferences.ConfigurationPages.EditorPropertiesPage" ref="eric7.Preferences.ConfigurationPages.EditorPropertiesPage.html" />
               <section title="eric7.Preferences.ConfigurationPages.EditorSearchPage" ref="eric7.Preferences.ConfigurationPages.EditorSearchPage.html" />
@@ -1796,6 +1804,22 @@
       <keyword name="ArrayResolver" id="ArrayResolver" ref="eric7.DebugClients.Python.DebugVariables.html#ArrayResolver" />
       <keyword name="ArrayResolver.getVariableList" id="ArrayResolver.getVariableList" ref="eric7.DebugClients.Python.DebugVariables.html#ArrayResolver.getVariableList" />
       <keyword name="ArrayResolver.resolve" id="ArrayResolver.resolve" ref="eric7.DebugClients.Python.DebugVariables.html#ArrayResolver.resolve" />
+      <keyword name="AssistantJedi" id="AssistantJedi" ref="eric7.JediInterface.AssistantJedi.html#AssistantJedi" />
+      <keyword name="AssistantJedi (Constructor)" id="AssistantJedi (Constructor)" ref="eric7.JediInterface.AssistantJedi.html#AssistantJedi.__init__" />
+      <keyword name="AssistantJedi (Module)" id="AssistantJedi (Module)" ref="eric7.JediInterface.AssistantJedi.html" />
+      <keyword name="AssistantJedi.__connectEditor" id="AssistantJedi.__connectEditor" ref="eric7.JediInterface.AssistantJedi.html#AssistantJedi.__connectEditor" />
+      <keyword name="AssistantJedi.__connectMouseClickHandler" id="AssistantJedi.__connectMouseClickHandler" ref="eric7.JediInterface.AssistantJedi.html#AssistantJedi.__connectMouseClickHandler" />
+      <keyword name="AssistantJedi.__determineLanguage" id="AssistantJedi.__determineLanguage" ref="eric7.JediInterface.AssistantJedi.html#AssistantJedi.__determineLanguage" />
+      <keyword name="AssistantJedi.__disconnectEditor" id="AssistantJedi.__disconnectEditor" ref="eric7.JediInterface.AssistantJedi.html#AssistantJedi.__disconnectEditor" />
+      <keyword name="AssistantJedi.__disconnectMouseClickHandler" id="AssistantJedi.__disconnectMouseClickHandler" ref="eric7.JediInterface.AssistantJedi.html#AssistantJedi.__disconnectMouseClickHandler" />
+      <keyword name="AssistantJedi.__editorClosed" id="AssistantJedi.__editorClosed" ref="eric7.JediInterface.AssistantJedi.html#AssistantJedi.__editorClosed" />
+      <keyword name="AssistantJedi.__editorLanguageChanged" id="AssistantJedi.__editorLanguageChanged" ref="eric7.JediInterface.AssistantJedi.html#AssistantJedi.__editorLanguageChanged" />
+      <keyword name="AssistantJedi.__editorOpened" id="AssistantJedi.__editorOpened" ref="eric7.JediInterface.AssistantJedi.html#AssistantJedi.__editorOpened" />
+      <keyword name="AssistantJedi.__preferencesChanged" id="AssistantJedi.__preferencesChanged" ref="eric7.JediInterface.AssistantJedi.html#AssistantJedi.__preferencesChanged" />
+      <keyword name="AssistantJedi.__setAutoCompletionHook" id="AssistantJedi.__setAutoCompletionHook" ref="eric7.JediInterface.AssistantJedi.html#AssistantJedi.__setAutoCompletionHook" />
+      <keyword name="AssistantJedi.__setCalltipsHook" id="AssistantJedi.__setCalltipsHook" ref="eric7.JediInterface.AssistantJedi.html#AssistantJedi.__setCalltipsHook" />
+      <keyword name="AssistantJedi.__unsetAutoCompletionHook" id="AssistantJedi.__unsetAutoCompletionHook" ref="eric7.JediInterface.AssistantJedi.html#AssistantJedi.__unsetAutoCompletionHook" />
+      <keyword name="AssistantJedi.__unsetCalltipsHook" id="AssistantJedi.__unsetCalltipsHook" ref="eric7.JediInterface.AssistantJedi.html#AssistantJedi.__unsetCalltipsHook" />
       <keyword name="AssociationItem" id="AssociationItem" ref="eric7.Graphics.AssociationItem.html#AssociationItem" />
       <keyword name="AssociationItem (Constructor)" id="AssociationItem (Constructor)" ref="eric7.Graphics.AssociationItem.html#AssociationItem.__init__" />
       <keyword name="AssociationItem (Module)" id="AssociationItem (Module)" ref="eric7.Graphics.AssociationItem.html" />
@@ -4393,6 +4417,10 @@
       <keyword name="EditorAssembly.__resetParseTimer" id="EditorAssembly.__resetParseTimer" ref="eric7.QScintilla.EditorAssembly.html#EditorAssembly.__resetParseTimer" />
       <keyword name="EditorAssembly.getEditor" id="EditorAssembly.getEditor" ref="eric7.QScintilla.EditorAssembly.html#EditorAssembly.getEditor" />
       <keyword name="EditorAssembly.shutdownTimer" id="EditorAssembly.shutdownTimer" ref="eric7.QScintilla.EditorAssembly.html#EditorAssembly.shutdownTimer" />
+      <keyword name="EditorAutoCompletionJediPage" id="EditorAutoCompletionJediPage" ref="eric7.Preferences.ConfigurationPages.EditorAutoCompletionJediPage.html#EditorAutoCompletionJediPage" />
+      <keyword name="EditorAutoCompletionJediPage (Constructor)" id="EditorAutoCompletionJediPage (Constructor)" ref="eric7.Preferences.ConfigurationPages.EditorAutoCompletionJediPage.html#EditorAutoCompletionJediPage.__init__" />
+      <keyword name="EditorAutoCompletionJediPage (Module)" id="EditorAutoCompletionJediPage (Module)" ref="eric7.Preferences.ConfigurationPages.EditorAutoCompletionJediPage.html" />
+      <keyword name="EditorAutoCompletionJediPage.save" id="EditorAutoCompletionJediPage.save" ref="eric7.Preferences.ConfigurationPages.EditorAutoCompletionJediPage.html#EditorAutoCompletionJediPage.save" />
       <keyword name="EditorAutocompletionPage" id="EditorAutocompletionPage" ref="eric7.Preferences.ConfigurationPages.EditorAutocompletionPage.html#EditorAutocompletionPage" />
       <keyword name="EditorAutocompletionPage (Constructor)" id="EditorAutocompletionPage (Constructor)" ref="eric7.Preferences.ConfigurationPages.EditorAutocompletionPage.html#EditorAutocompletionPage.__init__" />
       <keyword name="EditorAutocompletionPage (Module)" id="EditorAutocompletionPage (Module)" ref="eric7.Preferences.ConfigurationPages.EditorAutocompletionPage.html" />
@@ -4418,6 +4446,10 @@
       <keyword name="EditorButtonsWidget.__updateButtonStates" id="EditorButtonsWidget.__updateButtonStates" ref="eric7.QScintilla.EditorButtonsWidget.html#EditorButtonsWidget.__updateButtonStates" />
       <keyword name="EditorButtonsWidget.resizeEvent" id="EditorButtonsWidget.resizeEvent" ref="eric7.QScintilla.EditorButtonsWidget.html#EditorButtonsWidget.resizeEvent" />
       <keyword name="EditorButtonsWidget.show" id="EditorButtonsWidget.show" ref="eric7.QScintilla.EditorButtonsWidget.html#EditorButtonsWidget.show" />
+      <keyword name="EditorCallTipsJediPage" id="EditorCallTipsJediPage" ref="eric7.Preferences.ConfigurationPages.EditorCallTipsJediPage.html#EditorCallTipsJediPage" />
+      <keyword name="EditorCallTipsJediPage (Constructor)" id="EditorCallTipsJediPage (Constructor)" ref="eric7.Preferences.ConfigurationPages.EditorCallTipsJediPage.html#EditorCallTipsJediPage.__init__" />
+      <keyword name="EditorCallTipsJediPage (Module)" id="EditorCallTipsJediPage (Module)" ref="eric7.Preferences.ConfigurationPages.EditorCallTipsJediPage.html" />
+      <keyword name="EditorCallTipsJediPage.save" id="EditorCallTipsJediPage.save" ref="eric7.Preferences.ConfigurationPages.EditorCallTipsJediPage.html#EditorCallTipsJediPage.save" />
       <keyword name="EditorCalltipsPage" id="EditorCalltipsPage" ref="eric7.Preferences.ConfigurationPages.EditorCalltipsPage.html#EditorCalltipsPage" />
       <keyword name="EditorCalltipsPage (Constructor)" id="EditorCalltipsPage (Constructor)" ref="eric7.Preferences.ConfigurationPages.EditorCalltipsPage.html#EditorCalltipsPage.__init__" />
       <keyword name="EditorCalltipsPage (Module)" id="EditorCalltipsPage (Module)" ref="eric7.Preferences.ConfigurationPages.EditorCalltipsPage.html" />
@@ -4538,6 +4570,11 @@
       <keyword name="EditorMarkerMap.__drawIndicator" id="EditorMarkerMap.__drawIndicator" ref="eric7.QScintilla.EditorMarkerMap.html#EditorMarkerMap.__drawIndicator" />
       <keyword name="EditorMarkerMap._paintIt" id="EditorMarkerMap._paintIt" ref="eric7.QScintilla.EditorMarkerMap.html#EditorMarkerMap._paintIt" />
       <keyword name="EditorMarkerMap.initColors" id="EditorMarkerMap.initColors" ref="eric7.QScintilla.EditorMarkerMap.html#EditorMarkerMap.initColors" />
+      <keyword name="EditorMouseClickHandlerJediPage" id="EditorMouseClickHandlerJediPage" ref="eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerJediPage.html#EditorMouseClickHandlerJediPage" />
+      <keyword name="EditorMouseClickHandlerJediPage (Constructor)" id="EditorMouseClickHandlerJediPage (Constructor)" ref="eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerJediPage.html#EditorMouseClickHandlerJediPage.__init__" />
+      <keyword name="EditorMouseClickHandlerJediPage (Module)" id="EditorMouseClickHandlerJediPage (Module)" ref="eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerJediPage.html" />
+      <keyword name="EditorMouseClickHandlerJediPage.on_changeGotoButton_clicked" id="EditorMouseClickHandlerJediPage.on_changeGotoButton_clicked" ref="eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerJediPage.html#EditorMouseClickHandlerJediPage.on_changeGotoButton_clicked" />
+      <keyword name="EditorMouseClickHandlerJediPage.save" id="EditorMouseClickHandlerJediPage.save" ref="eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerJediPage.html#EditorMouseClickHandlerJediPage.save" />
       <keyword name="EditorMouseClickHandlerPage" id="EditorMouseClickHandlerPage" ref="eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerPage.html#EditorMouseClickHandlerPage" />
       <keyword name="EditorMouseClickHandlerPage (Constructor)" id="EditorMouseClickHandlerPage (Constructor)" ref="eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerPage.html#EditorMouseClickHandlerPage.__init__" />
       <keyword name="EditorMouseClickHandlerPage (Module)" id="EditorMouseClickHandlerPage (Module)" ref="eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerPage.html" />
@@ -9248,6 +9285,51 @@
       <keyword name="JavaScriptSettingsDialog (Constructor)" id="JavaScriptSettingsDialog (Constructor)" ref="eric7.WebBrowser.StatusBar.JavaScriptSettingsDialog.html#JavaScriptSettingsDialog.__init__" />
       <keyword name="JavaScriptSettingsDialog (Module)" id="JavaScriptSettingsDialog (Module)" ref="eric7.WebBrowser.StatusBar.JavaScriptSettingsDialog.html" />
       <keyword name="JavaScriptSettingsDialog.accept" id="JavaScriptSettingsDialog.accept" ref="eric7.WebBrowser.StatusBar.JavaScriptSettingsDialog.html#JavaScriptSettingsDialog.accept" />
+      <keyword name="JediClient" id="JediClient" ref="eric7.JediInterface.JediClient.html#JediClient" />
+      <keyword name="JediClient (Constructor)" id="JediClient (Constructor)" ref="eric7.JediInterface.JediClient.html#JediClient.__init__" />
+      <keyword name="JediClient (Module)" id="JediClient (Module)" ref="eric7.JediInterface.JediClient.html" />
+      <keyword name="JediClient.__closeProject" id="JediClient.__closeProject" ref="eric7.JediInterface.JediClient.html#JediClient.__closeProject" />
+      <keyword name="JediClient.__completionFullName" id="JediClient.__completionFullName" ref="eric7.JediInterface.JediClient.html#JediClient.__completionFullName" />
+      <keyword name="JediClient.__completionType" id="JediClient.__completionType" ref="eric7.JediInterface.JediClient.html#JediClient.__completionType" />
+      <keyword name="JediClient.__extractParameters" id="JediClient.__extractParameters" ref="eric7.JediInterface.JediClient.html#JediClient.__extractParameters" />
+      <keyword name="JediClient.__getAssignment" id="JediClient.__getAssignment" ref="eric7.JediInterface.JediClient.html#JediClient.__getAssignment" />
+      <keyword name="JediClient.__getCallTips" id="JediClient.__getCallTips" ref="eric7.JediInterface.JediClient.html#JediClient.__getCallTips" />
+      <keyword name="JediClient.__getCompletions" id="JediClient.__getCompletions" ref="eric7.JediInterface.JediClient.html#JediClient.__getCompletions" />
+      <keyword name="JediClient.__getDocumentation" id="JediClient.__getDocumentation" ref="eric7.JediInterface.JediClient.html#JediClient.__getDocumentation" />
+      <keyword name="JediClient.__getHoverHelp" id="JediClient.__getHoverHelp" ref="eric7.JediInterface.JediClient.html#JediClient.__getHoverHelp" />
+      <keyword name="JediClient.__getReferences" id="JediClient.__getReferences" ref="eric7.JediInterface.JediClient.html#JediClient.__getReferences" />
+      <keyword name="JediClient.__handleError" id="JediClient.__handleError" ref="eric7.JediInterface.JediClient.html#JediClient.__handleError" />
+      <keyword name="JediClient.__openProject" id="JediClient.__openProject" ref="eric7.JediInterface.JediClient.html#JediClient.__openProject" />
+      <keyword name="JediClient.handleCall" id="JediClient.handleCall" ref="eric7.JediInterface.JediClient.html#JediClient.handleCall" />
+      <keyword name="JediInterface (Package)" id="JediInterface (Package)" ref="index-eric7.JediInterface.html" />
+      <keyword name="JediServer" id="JediServer" ref="eric7.JediInterface.JediServer.html#JediServer" />
+      <keyword name="JediServer (Constructor)" id="JediServer (Constructor)" ref="eric7.JediInterface.JediServer.html#JediServer.__init__" />
+      <keyword name="JediServer (Module)" id="JediServer (Module)" ref="eric7.JediInterface.JediServer.html" />
+      <keyword name="JediServer.__ensureActive" id="JediServer.__ensureActive" ref="eric7.JediInterface.JediServer.html#JediServer.__ensureActive" />
+      <keyword name="JediServer.__idString" id="JediServer.__idString" ref="eric7.JediInterface.JediServer.html#JediServer.__idString" />
+      <keyword name="JediServer.__interpreterForProject" id="JediServer.__interpreterForProject" ref="eric7.JediInterface.JediServer.html#JediServer.__interpreterForProject" />
+      <keyword name="JediServer.__prepareData" id="JediServer.__prepareData" ref="eric7.JediInterface.JediServer.html#JediServer.__prepareData" />
+      <keyword name="JediServer.__processCallTipsResult" id="JediServer.__processCallTipsResult" ref="eric7.JediInterface.JediServer.html#JediServer.__processCallTipsResult" />
+      <keyword name="JediServer.__processClientException" id="JediServer.__processClientException" ref="eric7.JediInterface.JediServer.html#JediServer.__processClientException" />
+      <keyword name="JediServer.__processCompletionsResult" id="JediServer.__processCompletionsResult" ref="eric7.JediInterface.JediServer.html#JediServer.__processCompletionsResult" />
+      <keyword name="JediServer.__processDocumentationResult" id="JediServer.__processDocumentationResult" ref="eric7.JediInterface.JediServer.html#JediServer.__processDocumentationResult" />
+      <keyword name="JediServer.__processGotoDefinitionResult" id="JediServer.__processGotoDefinitionResult" ref="eric7.JediInterface.JediServer.html#JediServer.__processGotoDefinitionResult" />
+      <keyword name="JediServer.__processGotoReferencesResult" id="JediServer.__processGotoReferencesResult" ref="eric7.JediInterface.JediServer.html#JediServer.__processGotoReferencesResult" />
+      <keyword name="JediServer.__processHoverHelpResult" id="JediServer.__processHoverHelpResult" ref="eric7.JediInterface.JediServer.html#JediServer.__processHoverHelpResult" />
+      <keyword name="JediServer.__projectClosed" id="JediServer.__projectClosed" ref="eric7.JediInterface.JediServer.html#JediServer.__projectClosed" />
+      <keyword name="JediServer.__projectOpened" id="JediServer.__projectOpened" ref="eric7.JediInterface.JediServer.html#JediServer.__projectOpened" />
+      <keyword name="JediServer.__startJediClient" id="JediServer.__startJediClient" ref="eric7.JediInterface.JediServer.html#JediServer.__startJediClient" />
+      <keyword name="JediServer.__updateEditorLanguageMapping" id="JediServer.__updateEditorLanguageMapping" ref="eric7.JediInterface.JediServer.html#JediServer.__updateEditorLanguageMapping" />
+      <keyword name="JediServer.activate" id="JediServer.activate" ref="eric7.JediInterface.JediServer.html#JediServer.activate" />
+      <keyword name="JediServer.deactivate" id="JediServer.deactivate" ref="eric7.JediInterface.JediServer.html#JediServer.deactivate" />
+      <keyword name="JediServer.getCallTips" id="JediServer.getCallTips" ref="eric7.JediInterface.JediServer.html#JediServer.getCallTips" />
+      <keyword name="JediServer.gotoDefinition" id="JediServer.gotoDefinition" ref="eric7.JediInterface.JediServer.html#JediServer.gotoDefinition" />
+      <keyword name="JediServer.handleCall" id="JediServer.handleCall" ref="eric7.JediInterface.JediServer.html#JediServer.handleCall" />
+      <keyword name="JediServer.handleNewConnection" id="JediServer.handleNewConnection" ref="eric7.JediInterface.JediServer.html#JediServer.handleNewConnection" />
+      <keyword name="JediServer.hoverHelp" id="JediServer.hoverHelp" ref="eric7.JediInterface.JediServer.html#JediServer.hoverHelp" />
+      <keyword name="JediServer.isSupportedLanguage" id="JediServer.isSupportedLanguage" ref="eric7.JediInterface.JediServer.html#JediServer.isSupportedLanguage" />
+      <keyword name="JediServer.requestCodeDocumentation" id="JediServer.requestCodeDocumentation" ref="eric7.JediInterface.JediServer.html#JediServer.requestCodeDocumentation" />
+      <keyword name="JediServer.requestCompletions" id="JediServer.requestCompletions" ref="eric7.JediInterface.JediServer.html#JediServer.requestCompletions" />
       <keyword name="KeySequenceTranslator (Module)" id="KeySequenceTranslator (Module)" ref="eric7.QScintilla.KeySequenceTranslator.html" />
       <keyword name="Largefiles" id="Largefiles" ref="eric7.Plugins.VcsPlugins.vcsMercurial.LargefilesExtension.largefiles.html#Largefiles" />
       <keyword name="Largefiles (Constructor)" id="Largefiles (Constructor)" ref="eric7.Plugins.VcsPlugins.vcsMercurial.LargefilesExtension.largefiles.html#Largefiles.__init__" />
@@ -17672,8 +17754,10 @@
       <keyword name="create" id="create" ref="eric7.Preferences.ConfigurationPages.DebuggerPython3Page.html#create" />
       <keyword name="create" id="create" ref="eric7.Preferences.ConfigurationPages.DiffColoursPage.html#create" />
       <keyword name="create" id="create" ref="eric7.Preferences.ConfigurationPages.EditorAPIsPage.html#create" />
+      <keyword name="create" id="create" ref="eric7.Preferences.ConfigurationPages.EditorAutoCompletionJediPage.html#create" />
       <keyword name="create" id="create" ref="eric7.Preferences.ConfigurationPages.EditorAutocompletionPage.html#create" />
       <keyword name="create" id="create" ref="eric7.Preferences.ConfigurationPages.EditorAutocompletionQScintillaPage.html#create" />
+      <keyword name="create" id="create" ref="eric7.Preferences.ConfigurationPages.EditorCallTipsJediPage.html#create" />
       <keyword name="create" id="create" ref="eric7.Preferences.ConfigurationPages.EditorCalltipsPage.html#create" />
       <keyword name="create" id="create" ref="eric7.Preferences.ConfigurationPages.EditorCalltipsQScintillaPage.html#create" />
       <keyword name="create" id="create" ref="eric7.Preferences.ConfigurationPages.EditorDocViewerPage.html#create" />
@@ -17683,6 +17767,7 @@
       <keyword name="create" id="create" ref="eric7.Preferences.ConfigurationPages.EditorHighlightersPage.html#create" />
       <keyword name="create" id="create" ref="eric7.Preferences.ConfigurationPages.EditorHighlightingStylesPage.html#create" />
       <keyword name="create" id="create" ref="eric7.Preferences.ConfigurationPages.EditorKeywordsPage.html#create" />
+      <keyword name="create" id="create" ref="eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerJediPage.html#create" />
       <keyword name="create" id="create" ref="eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerPage.html#create" />
       <keyword name="create" id="create" ref="eric7.Preferences.ConfigurationPages.EditorPropertiesPage.html#create" />
       <keyword name="create" id="create" ref="eric7.Preferences.ConfigurationPages.EditorSearchPage.html#create" />
@@ -18003,6 +18088,7 @@
       <keyword name="getInstallInfoFilePath" id="getInstallInfoFilePath" ref="eric7.Globals.__init__.html#getInstallInfoFilePath" />
       <keyword name="getIrc" id="getIrc" ref="eric7.Preferences.__init__.html#getIrc" />
       <keyword name="getJavascript" id="getJavascript" ref="eric7.WebBrowser.Tools.WebBrowserTools.html#getJavascript" />
+      <keyword name="getJedi" id="getJedi" ref="eric7.Preferences.__init__.html#getJedi" />
       <keyword name="getKeyUrl" id="getKeyUrl" ref="eric7.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.__init__.html#getKeyUrl" />
       <keyword name="getLanguageIcon" id="getLanguageIcon" ref="eric7.QScintilla.Lexers.__init__.html#getLanguageIcon" />
       <keyword name="getLexer" id="getLexer" ref="eric7.QScintilla.Lexers.__init__.html#getLexer" />
@@ -18438,6 +18524,7 @@
       <keyword name="setIconEditor" id="setIconEditor" ref="eric7.Preferences.__init__.html#setIconEditor" />
       <keyword name="setIcons" id="setIcons" ref="eric7.Preferences.__init__.html#setIcons" />
       <keyword name="setIrc" id="setIrc" ref="eric7.Preferences.__init__.html#setIrc" />
+      <keyword name="setJedi" id="setJedi" ref="eric7.Preferences.__init__.html#setJedi" />
       <keyword name="setLibraryPaths" id="setLibraryPaths" ref="eric7.Toolbox.Startup.html#setLibraryPaths" />
       <keyword name="setMicroPython" id="setMicroPython" ref="eric7.Preferences.__init__.html#setMicroPython" />
       <keyword name="setMultiProject" id="setMultiProject" ref="eric7.Preferences.__init__.html#setMultiProject" />
@@ -18783,6 +18870,9 @@
       <file>eric7.IconEditor.IconEditorPalette.html</file>
       <file>eric7.IconEditor.IconEditorWindow.html</file>
       <file>eric7.IconEditor.IconSizeDialog.html</file>
+      <file>eric7.JediInterface.AssistantJedi.html</file>
+      <file>eric7.JediInterface.JediClient.html</file>
+      <file>eric7.JediInterface.JediServer.html</file>
       <file>eric7.MicroPython.AddEditDevicesDialog.html</file>
       <file>eric7.MicroPython.CircuitPythonDevices.html</file>
       <file>eric7.MicroPython.ConnectionSelectionDialog.html</file>
@@ -19195,8 +19285,10 @@
       <file>eric7.Preferences.ConfigurationPages.DebuggerPython3Page.html</file>
       <file>eric7.Preferences.ConfigurationPages.DiffColoursPage.html</file>
       <file>eric7.Preferences.ConfigurationPages.EditorAPIsPage.html</file>
+      <file>eric7.Preferences.ConfigurationPages.EditorAutoCompletionJediPage.html</file>
       <file>eric7.Preferences.ConfigurationPages.EditorAutocompletionPage.html</file>
       <file>eric7.Preferences.ConfigurationPages.EditorAutocompletionQScintillaPage.html</file>
+      <file>eric7.Preferences.ConfigurationPages.EditorCallTipsJediPage.html</file>
       <file>eric7.Preferences.ConfigurationPages.EditorCalltipsPage.html</file>
       <file>eric7.Preferences.ConfigurationPages.EditorCalltipsQScintillaPage.html</file>
       <file>eric7.Preferences.ConfigurationPages.EditorDocViewerPage.html</file>
@@ -19208,6 +19300,7 @@
       <file>eric7.Preferences.ConfigurationPages.EditorHighlightingStylesSelectionDialog.html</file>
       <file>eric7.Preferences.ConfigurationPages.EditorKeywordsPage.html</file>
       <file>eric7.Preferences.ConfigurationPages.EditorLanguageTabIndentOverrideDialog.html</file>
+      <file>eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerJediPage.html</file>
       <file>eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerPage.html</file>
       <file>eric7.Preferences.ConfigurationPages.EditorPropertiesPage.html</file>
       <file>eric7.Preferences.ConfigurationPages.EditorSearchPage.html</file>
@@ -19727,6 +19820,7 @@
       <file>index-eric7.HexEdit.html</file>
       <file>index-eric7.IconEditor.cursors.html</file>
       <file>index-eric7.IconEditor.html</file>
+      <file>index-eric7.JediInterface.html</file>
       <file>index-eric7.MicroPython.html</file>
       <file>index-eric7.MultiProject.html</file>
       <file>index-eric7.Network.IRC.html</file>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Documentation/Source/eric7.JediInterface.AssistantJedi.html	Sat Sep 11 19:47:02 2021 +0200
@@ -0,0 +1,338 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric7.JediInterface.AssistantJedi</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body>
+<a NAME="top" ID="top"></a>
+<h1>eric7.JediInterface.AssistantJedi</h1>
+
+<p>
+Module implementing the Jedi assistant plug-in.
+</p>
+<h3>Global Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+
+<table>
+
+<tr>
+<td><a href="#AssistantJedi">AssistantJedi</a></td>
+<td>Class implementing the Jedi assistant interface.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr />
+<hr />
+<a NAME="AssistantJedi" ID="AssistantJedi"></a>
+<h2>AssistantJedi</h2>
+
+<p>
+    Class implementing the Jedi assistant interface.
+</p>
+<h3>Derived from</h3>
+QObject
+<h3>Class Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+
+<table>
+
+<tr>
+<td><a href="#AssistantJedi.__init__">AssistantJedi</a></td>
+<td>Constructor</td>
+</tr>
+<tr>
+<td><a href="#AssistantJedi.__connectEditor">__connectEditor</a></td>
+<td>Private method to connect an editor.</td>
+</tr>
+<tr>
+<td><a href="#AssistantJedi.__connectMouseClickHandler">__connectMouseClickHandler</a></td>
+<td>Private method to connect the mouse click handler to an editor.</td>
+</tr>
+<tr>
+<td><a href="#AssistantJedi.__determineLanguage">__determineLanguage</a></td>
+<td>Private method to determine the valid language strings.</td>
+</tr>
+<tr>
+<td><a href="#AssistantJedi.__disconnectEditor">__disconnectEditor</a></td>
+<td>Private method to disconnect an editor.</td>
+</tr>
+<tr>
+<td><a href="#AssistantJedi.__disconnectMouseClickHandler">__disconnectMouseClickHandler</a></td>
+<td>Private method to disconnect the mouse click handler from an editor.</td>
+</tr>
+<tr>
+<td><a href="#AssistantJedi.__editorClosed">__editorClosed</a></td>
+<td>Private slot called, when an editor was closed.</td>
+</tr>
+<tr>
+<td><a href="#AssistantJedi.__editorLanguageChanged">__editorLanguageChanged</a></td>
+<td>Private slot to handle the language change of an editor.</td>
+</tr>
+<tr>
+<td><a href="#AssistantJedi.__editorOpened">__editorOpened</a></td>
+<td>Private slot called, when a new editor was opened.</td>
+</tr>
+<tr>
+<td><a href="#AssistantJedi.__preferencesChanged">__preferencesChanged</a></td>
+<td>Private slot handling changes of the Disassembly viewer settings.</td>
+</tr>
+<tr>
+<td><a href="#AssistantJedi.__setAutoCompletionHook">__setAutoCompletionHook</a></td>
+<td>Private method to set the autocompletion hook.</td>
+</tr>
+<tr>
+<td><a href="#AssistantJedi.__setCalltipsHook">__setCalltipsHook</a></td>
+<td>Private method to set the calltip hook.</td>
+</tr>
+<tr>
+<td><a href="#AssistantJedi.__unsetAutoCompletionHook">__unsetAutoCompletionHook</a></td>
+<td>Private method to unset the autocompletion hook.</td>
+</tr>
+<tr>
+<td><a href="#AssistantJedi.__unsetCalltipsHook">__unsetCalltipsHook</a></td>
+<td>Private method to unset the calltip hook.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<a NAME="AssistantJedi.__init__" ID="AssistantJedi.__init__"></a>
+<h4>AssistantJedi (Constructor)</h4>
+<b>AssistantJedi</b>(<i>ui, viewManager, project</i>)
+
+<p>
+        Constructor
+</p>
+<dl>
+
+<dt><i>ui</i> (UserInterface)</dt>
+<dd>
+reference to the user interface object
+</dd>
+<dt><i>viewManager</i> (ViewManager)</dt>
+<dd>
+reference to the viewmanager object
+</dd>
+<dt><i>project</i> (Project)</dt>
+<dd>
+reference to the project object
+</dd>
+</dl>
+<a NAME="AssistantJedi.__connectEditor" ID="AssistantJedi.__connectEditor"></a>
+<h4>AssistantJedi.__connectEditor</h4>
+<b>__connectEditor</b>(<i>editor</i>)
+
+<p>
+        Private method to connect an editor.
+</p>
+<dl>
+
+<dt><i>editor</i> (Editor)</dt>
+<dd>
+reference to the editor
+</dd>
+</dl>
+<a NAME="AssistantJedi.__connectMouseClickHandler" ID="AssistantJedi.__connectMouseClickHandler"></a>
+<h4>AssistantJedi.__connectMouseClickHandler</h4>
+<b>__connectMouseClickHandler</b>(<i>editor</i>)
+
+<p>
+        Private method to connect the mouse click handler to an editor.
+</p>
+<dl>
+
+<dt><i>editor</i> (Editor)</dt>
+<dd>
+reference to the editor
+</dd>
+</dl>
+<a NAME="AssistantJedi.__determineLanguage" ID="AssistantJedi.__determineLanguage"></a>
+<h4>AssistantJedi.__determineLanguage</h4>
+<b>__determineLanguage</b>(<i></i>)
+
+<p>
+        Private method to determine the valid language strings.
+</p>
+<dl>
+<dt>Return:</dt>
+<dd>
+list of valid language strings
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+list of str
+</dd>
+</dl>
+<a NAME="AssistantJedi.__disconnectEditor" ID="AssistantJedi.__disconnectEditor"></a>
+<h4>AssistantJedi.__disconnectEditor</h4>
+<b>__disconnectEditor</b>(<i>editor</i>)
+
+<p>
+        Private method to disconnect an editor.
+</p>
+<dl>
+
+<dt><i>editor</i> (Editor)</dt>
+<dd>
+reference to the editor
+</dd>
+</dl>
+<a NAME="AssistantJedi.__disconnectMouseClickHandler" ID="AssistantJedi.__disconnectMouseClickHandler"></a>
+<h4>AssistantJedi.__disconnectMouseClickHandler</h4>
+<b>__disconnectMouseClickHandler</b>(<i>editor</i>)
+
+<p>
+        Private method to disconnect the mouse click handler from an editor.
+</p>
+<dl>
+
+<dt><i>editor</i> (Editor)</dt>
+<dd>
+reference to the editor
+</dd>
+</dl>
+<a NAME="AssistantJedi.__editorClosed" ID="AssistantJedi.__editorClosed"></a>
+<h4>AssistantJedi.__editorClosed</h4>
+<b>__editorClosed</b>(<i>editor</i>)
+
+<p>
+        Private slot called, when an editor was closed.
+</p>
+<dl>
+
+<dt><i>editor</i> (Editor)</dt>
+<dd>
+reference to the editor
+</dd>
+</dl>
+<a NAME="AssistantJedi.__editorLanguageChanged" ID="AssistantJedi.__editorLanguageChanged"></a>
+<h4>AssistantJedi.__editorLanguageChanged</h4>
+<b>__editorLanguageChanged</b>(<i>language</i>)
+
+<p>
+        Private slot to handle the language change of an editor.
+</p>
+<dl>
+
+<dt><i>language</i> (str)</dt>
+<dd>
+programming language of the editor
+</dd>
+</dl>
+<a NAME="AssistantJedi.__editorOpened" ID="AssistantJedi.__editorOpened"></a>
+<h4>AssistantJedi.__editorOpened</h4>
+<b>__editorOpened</b>(<i>editor</i>)
+
+<p>
+        Private slot called, when a new editor was opened.
+</p>
+<dl>
+
+<dt><i>editor</i> (Editor)</dt>
+<dd>
+reference to the new editor
+</dd>
+</dl>
+<a NAME="AssistantJedi.__preferencesChanged" ID="AssistantJedi.__preferencesChanged"></a>
+<h4>AssistantJedi.__preferencesChanged</h4>
+<b>__preferencesChanged</b>(<i></i>)
+
+<p>
+        Private slot handling changes of the Disassembly viewer settings.
+</p>
+<a NAME="AssistantJedi.__setAutoCompletionHook" ID="AssistantJedi.__setAutoCompletionHook"></a>
+<h4>AssistantJedi.__setAutoCompletionHook</h4>
+<b>__setAutoCompletionHook</b>(<i>editor</i>)
+
+<p>
+        Private method to set the autocompletion hook.
+</p>
+<dl>
+
+<dt><i>editor</i> (Editor)</dt>
+<dd>
+reference to the editor
+</dd>
+</dl>
+<a NAME="AssistantJedi.__setCalltipsHook" ID="AssistantJedi.__setCalltipsHook"></a>
+<h4>AssistantJedi.__setCalltipsHook</h4>
+<b>__setCalltipsHook</b>(<i>editor</i>)
+
+<p>
+        Private method to set the calltip hook.
+</p>
+<dl>
+
+<dt><i>editor</i> (Editor)</dt>
+<dd>
+reference to the editor
+</dd>
+</dl>
+<a NAME="AssistantJedi.__unsetAutoCompletionHook" ID="AssistantJedi.__unsetAutoCompletionHook"></a>
+<h4>AssistantJedi.__unsetAutoCompletionHook</h4>
+<b>__unsetAutoCompletionHook</b>(<i>editor</i>)
+
+<p>
+        Private method to unset the autocompletion hook.
+</p>
+<dl>
+
+<dt><i>editor</i> (Editor)</dt>
+<dd>
+reference to the editor
+</dd>
+</dl>
+<a NAME="AssistantJedi.__unsetCalltipsHook" ID="AssistantJedi.__unsetCalltipsHook"></a>
+<h4>AssistantJedi.__unsetCalltipsHook</h4>
+<b>__unsetCalltipsHook</b>(<i>editor</i>)
+
+<p>
+        Private method to unset the calltip hook.
+</p>
+<dl>
+
+<dt><i>editor</i> (Editor)</dt>
+<dd>
+reference to the editor
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Documentation/Source/eric7.JediInterface.JediClient.html	Sat Sep 11 19:47:02 2021 +0200
@@ -0,0 +1,395 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric7.JediInterface.JediClient</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body>
+<a NAME="top" ID="top"></a>
+<h1>eric7.JediInterface.JediClient</h1>
+
+<p>
+Module implementing the Jedi client of eric7.
+</p>
+<h3>Global Attributes</h3>
+
+<table>
+<tr><td>SuppressedException</td></tr><tr><td>modulePath</td></tr>
+</table>
+<h3>Classes</h3>
+
+<table>
+
+<tr>
+<td><a href="#JediClient">JediClient</a></td>
+<td>Class implementing the Jedi client of eric7.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr />
+<hr />
+<a NAME="JediClient" ID="JediClient"></a>
+<h2>JediClient</h2>
+
+<p>
+    Class implementing the Jedi client of eric7.
+</p>
+<h3>Derived from</h3>
+EricJsonClient
+<h3>Class Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+
+<table>
+
+<tr>
+<td><a href="#JediClient.__init__">JediClient</a></td>
+<td>Constructor</td>
+</tr>
+<tr>
+<td><a href="#JediClient.__closeProject">__closeProject</a></td>
+<td>Private method to save a jedi project's data.</td>
+</tr>
+<tr>
+<td><a href="#JediClient.__completionFullName">__completionFullName</a></td>
+<td>Private method to extract the full completion name.</td>
+</tr>
+<tr>
+<td><a href="#JediClient.__completionType">__completionType</a></td>
+<td>Private method to assemble the completion type depending on the visibility indicated by the completion name.</td>
+</tr>
+<tr>
+<td><a href="#JediClient.__extractParameters">__extractParameters</a></td>
+<td>Private method to extract the call parameter descriptions.</td>
+</tr>
+<tr>
+<td><a href="#JediClient.__getAssignment">__getAssignment</a></td>
+<td>Private method to get the place a parameter is defined.</td>
+</tr>
+<tr>
+<td><a href="#JediClient.__getCallTips">__getCallTips</a></td>
+<td>Private method to calculate possible calltips.</td>
+</tr>
+<tr>
+<td><a href="#JediClient.__getCompletions">__getCompletions</a></td>
+<td>Private method to calculate possible completions.</td>
+</tr>
+<tr>
+<td><a href="#JediClient.__getDocumentation">__getDocumentation</a></td>
+<td>Private method to get some source code documentation.</td>
+</tr>
+<tr>
+<td><a href="#JediClient.__getHoverHelp">__getHoverHelp</a></td>
+<td>Private method to get some source code documentation.</td>
+</tr>
+<tr>
+<td><a href="#JediClient.__getReferences">__getReferences</a></td>
+<td>Private method to get the places a parameter is referenced.</td>
+</tr>
+<tr>
+<td><a href="#JediClient.__handleError">__handleError</a></td>
+<td>Private method to process an error.</td>
+</tr>
+<tr>
+<td><a href="#JediClient.__openProject">__openProject</a></td>
+<td>Private method to create a jedi project and load its saved data.</td>
+</tr>
+<tr>
+<td><a href="#JediClient.handleCall">handleCall</a></td>
+<td>Public method to handle a method call from the server.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<a NAME="JediClient.__init__" ID="JediClient.__init__"></a>
+<h4>JediClient (Constructor)</h4>
+<b>JediClient</b>(<i>host, port, idString</i>)
+
+<p>
+        Constructor
+</p>
+<dl>
+
+<dt><i>host</i> (str)</dt>
+<dd>
+ip address the background service is listening
+</dd>
+<dt><i>port</i> (int)</dt>
+<dd>
+port of the background service
+</dd>
+<dt><i>idString</i> (str)</dt>
+<dd>
+assigned client id to be sent back to the server in
+            order to identify the connection
+</dd>
+</dl>
+<a NAME="JediClient.__closeProject" ID="JediClient.__closeProject"></a>
+<h4>JediClient.__closeProject</h4>
+<b>__closeProject</b>(<i>params</i>)
+
+<p>
+        Private method to save a jedi project's data.
+</p>
+<dl>
+
+<dt><i>params</i> (dict)</dt>
+<dd>
+dictionary containing the method parameters
+</dd>
+</dl>
+<a NAME="JediClient.__completionFullName" ID="JediClient.__completionFullName"></a>
+<h4>JediClient.__completionFullName</h4>
+<b>__completionFullName</b>(<i>completion</i>)
+
+<p>
+        Private method to extract the full completion name.
+</p>
+<dl>
+
+<dt><i>completion</i> (jedi.api.classes.Completion)</dt>
+<dd>
+reference to the completion object
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+full completion name
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<a NAME="JediClient.__completionType" ID="JediClient.__completionType"></a>
+<h4>JediClient.__completionType</h4>
+<b>__completionType</b>(<i>completion</i>)
+
+<p>
+        Private method to assemble the completion type depending on the
+        visibility indicated by the completion name.
+</p>
+<dl>
+
+<dt><i>completion</i> (jedi.api.classes.Completion)</dt>
+<dd>
+reference to the completion object
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+modified completion type
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<a NAME="JediClient.__extractParameters" ID="JediClient.__extractParameters"></a>
+<h4>JediClient.__extractParameters</h4>
+<b>__extractParameters</b>(<i>signature</i>)
+
+<p>
+        Private method to extract the call parameter descriptions.
+</p>
+<dl>
+
+<dt><i>signature</i> (object)</dt>
+<dd>
+a jedi signature object
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+a string with comma seperated parameter names and default
+            values
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<a NAME="JediClient.__getAssignment" ID="JediClient.__getAssignment"></a>
+<h4>JediClient.__getAssignment</h4>
+<b>__getAssignment</b>(<i>params</i>)
+
+<p>
+        Private method to get the place a parameter is defined.
+</p>
+<dl>
+
+<dt><i>params</i> (dict)</dt>
+<dd>
+dictionary containing the method parameters
+</dd>
+</dl>
+<a NAME="JediClient.__getCallTips" ID="JediClient.__getCallTips"></a>
+<h4>JediClient.__getCallTips</h4>
+<b>__getCallTips</b>(<i>params</i>)
+
+<p>
+        Private method to calculate possible calltips.
+</p>
+<dl>
+
+<dt><i>params</i> (dict)</dt>
+<dd>
+dictionary containing the method parameters
+</dd>
+</dl>
+<a NAME="JediClient.__getCompletions" ID="JediClient.__getCompletions"></a>
+<h4>JediClient.__getCompletions</h4>
+<b>__getCompletions</b>(<i>params</i>)
+
+<p>
+        Private method to calculate possible completions.
+</p>
+<dl>
+
+<dt><i>params</i> (dict)</dt>
+<dd>
+dictionary containing the method parameters
+</dd>
+</dl>
+<a NAME="JediClient.__getDocumentation" ID="JediClient.__getDocumentation"></a>
+<h4>JediClient.__getDocumentation</h4>
+<b>__getDocumentation</b>(<i>params</i>)
+
+<p>
+        Private method to get some source code documentation.
+</p>
+<dl>
+
+<dt><i>params</i> (dict)</dt>
+<dd>
+dictionary containing the method parameters
+</dd>
+</dl>
+<a NAME="JediClient.__getHoverHelp" ID="JediClient.__getHoverHelp"></a>
+<h4>JediClient.__getHoverHelp</h4>
+<b>__getHoverHelp</b>(<i>params</i>)
+
+<p>
+        Private method to get some source code documentation.
+</p>
+<dl>
+
+<dt><i>params</i> (dict)</dt>
+<dd>
+dictionary containing the method parameters
+</dd>
+</dl>
+<a NAME="JediClient.__getReferences" ID="JediClient.__getReferences"></a>
+<h4>JediClient.__getReferences</h4>
+<b>__getReferences</b>(<i>params</i>)
+
+<p>
+        Private method to get the places a parameter is referenced.
+</p>
+<dl>
+
+<dt><i>params</i> (dict)</dt>
+<dd>
+dictionary containing the method parameters
+</dd>
+</dl>
+<a NAME="JediClient.__handleError" ID="JediClient.__handleError"></a>
+<h4>JediClient.__handleError</h4>
+<b>__handleError</b>(<i>err</i>)
+
+<p>
+        Private method to process an error.
+</p>
+<dl>
+
+<dt><i>err</i> (Exception or Warning)</dt>
+<dd>
+exception object
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+dictionary containing the error information
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+dict
+</dd>
+</dl>
+<a NAME="JediClient.__openProject" ID="JediClient.__openProject"></a>
+<h4>JediClient.__openProject</h4>
+<b>__openProject</b>(<i>params</i>)
+
+<p>
+        Private method to create a jedi project and load its saved data.
+</p>
+<dl>
+
+<dt><i>params</i> (dict)</dt>
+<dd>
+dictionary containing the method parameters
+</dd>
+</dl>
+<a NAME="JediClient.handleCall" ID="JediClient.handleCall"></a>
+<h4>JediClient.handleCall</h4>
+<b>handleCall</b>(<i>method, params</i>)
+
+<p>
+        Public method to handle a method call from the server.
+</p>
+<dl>
+
+<dt><i>method</i> (str)</dt>
+<dd>
+requested method name
+</dd>
+<dt><i>params</i> (dict)</dt>
+<dd>
+dictionary with method specific parameters
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Documentation/Source/eric7.JediInterface.JediServer.html	Sat Sep 11 19:47:02 2021 +0200
@@ -0,0 +1,639 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric7.JediInterface.JediServer</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body>
+<a NAME="top" ID="top"></a>
+<h1>eric7.JediInterface.JediServer</h1>
+
+<p>
+Module implementing the autocompletion interface to jedi.
+</p>
+<h3>Global Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+
+<table>
+
+<tr>
+<td><a href="#JediServer">JediServer</a></td>
+<td>Class implementing the interface to the jedi library.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr />
+<hr />
+<a NAME="JediServer" ID="JediServer"></a>
+<h2>JediServer</h2>
+
+<p>
+    Class implementing the interface to the jedi library.
+</p>
+<h3>Derived from</h3>
+EricJsonServer
+<h3>Class Attributes</h3>
+
+<table>
+<tr><td>IdProject</td></tr><tr><td>PictureIDs</td></tr>
+</table>
+<h3>Class Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+
+<table>
+
+<tr>
+<td><a href="#JediServer.__init__">JediServer</a></td>
+<td>Constructor</td>
+</tr>
+<tr>
+<td><a href="#JediServer.__ensureActive">__ensureActive</a></td>
+<td>Private method to ensure, that the requested client is active.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.__idString">__idString</a></td>
+<td>Private method to determine the ID string for the back-end.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.__interpreterForProject">__interpreterForProject</a></td>
+<td>Private method to determine the interpreter for the current project and the environment to run it.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.__prepareData">__prepareData</a></td>
+<td>Private method to gather data about current cursor position.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.__processCallTipsResult">__processCallTipsResult</a></td>
+<td>Private method to process the calltips sent by the client.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.__processClientException">__processClientException</a></td>
+<td>Private method to handle exceptions of the refactoring client.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.__processCompletionsResult">__processCompletionsResult</a></td>
+<td>Private method to process the completions sent by the client.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.__processDocumentationResult">__processDocumentationResult</a></td>
+<td>Private method to process the documentation sent by the client.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.__processGotoDefinitionResult">__processGotoDefinitionResult</a></td>
+<td>Private method callback for the goto definition result.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.__processGotoReferencesResult">__processGotoReferencesResult</a></td>
+<td>Private method callback for the goto references result.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.__processHoverHelpResult">__processHoverHelpResult</a></td>
+<td>Private method callback for the goto definition result.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.__projectClosed">__projectClosed</a></td>
+<td>Private slot to handle the projectClosed signal.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.__projectOpened">__projectOpened</a></td>
+<td>Private slot to handle the projectOpened signal.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.__startJediClient">__startJediClient</a></td>
+<td>Private method to start the Jedi client with the given interpreter.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.__updateEditorLanguageMapping">__updateEditorLanguageMapping</a></td>
+<td>Private method to update the editor language to connection mapping.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.activate">activate</a></td>
+<td>Public method to activate the Jedi server.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.deactivate">deactivate</a></td>
+<td>Public method to deactivate the code assist server.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.getCallTips">getCallTips</a></td>
+<td>Public method to calculate calltips.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.gotoDefinition">gotoDefinition</a></td>
+<td>Public slot to find the definition for the word at the cursor position and go to it.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.handleCall">handleCall</a></td>
+<td>Public method to handle a method call from the client.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.handleNewConnection">handleNewConnection</a></td>
+<td>Public slot for new incoming connections from a client.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.hoverHelp">hoverHelp</a></td>
+<td>Public method to initiate the display of mouse hover help.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.isSupportedLanguage">isSupportedLanguage</a></td>
+<td>Public method to check, if the given language is supported.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.requestCodeDocumentation">requestCodeDocumentation</a></td>
+<td>Public method to request source code documentation for the given editor.</td>
+</tr>
+<tr>
+<td><a href="#JediServer.requestCompletions">requestCompletions</a></td>
+<td>Public method to request a list of possible completions.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<a NAME="JediServer.__init__" ID="JediServer.__init__"></a>
+<h4>JediServer (Constructor)</h4>
+<b>JediServer</b>(<i>viewManager, project, ui</i>)
+
+<p>
+        Constructor
+</p>
+<dl>
+
+<dt><i>viewManager</i> (ViewManager)</dt>
+<dd>
+reference to the viewmanager object
+</dd>
+<dt><i>project</i> (Project)</dt>
+<dd>
+reference to the project object
+</dd>
+<dt><i>ui</i> (UserInterface)</dt>
+<dd>
+reference to the user interface
+</dd>
+</dl>
+<a NAME="JediServer.__ensureActive" ID="JediServer.__ensureActive"></a>
+<h4>JediServer.__ensureActive</h4>
+<b>__ensureActive</b>(<i>idString</i>)
+
+<p>
+        Private method to ensure, that the requested client is active.
+</p>
+<p>
+        A non-active client will be started.
+</p>
+<dl>
+
+<dt><i>idString</i> (str)</dt>
+<dd>
+id of the client to be checked
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+flag indicating an active client
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl>
+<a NAME="JediServer.__idString" ID="JediServer.__idString"></a>
+<h4>JediServer.__idString</h4>
+<b>__idString</b>(<i>editor</i>)
+
+<p>
+        Private method to determine the ID string for the back-end.
+</p>
+<dl>
+
+<dt><i>editor</i> (Editor)</dt>
+<dd>
+reference to the editor to determine the ID string for
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+ID string
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<a NAME="JediServer.__interpreterForProject" ID="JediServer.__interpreterForProject"></a>
+<h4>JediServer.__interpreterForProject</h4>
+<b>__interpreterForProject</b>(<i></i>)
+
+<p>
+        Private method to determine the interpreter for the current project and
+        the environment to run it.
+</p>
+<dl>
+<dt>Return:</dt>
+<dd>
+tuple containing the interpreter of the current project and the
+            environment variables
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of (str, dict)
+</dd>
+</dl>
+<a NAME="JediServer.__prepareData" ID="JediServer.__prepareData"></a>
+<h4>JediServer.__prepareData</h4>
+<b>__prepareData</b>(<i>editor</i>)
+
+<p>
+        Private method to gather data about current cursor position.
+</p>
+<dl>
+
+<dt><i>editor</i> (Editor)</dt>
+<dd>
+reference to the editor object, that called this method
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+tuple of filename, line, index, source
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+tuple (str, int, int, str)
+</dd>
+</dl>
+<a NAME="JediServer.__processCallTipsResult" ID="JediServer.__processCallTipsResult"></a>
+<h4>JediServer.__processCallTipsResult</h4>
+<b>__processCallTipsResult</b>(<i>result</i>)
+
+<p>
+        Private method to process the calltips sent by the client.
+</p>
+<dl>
+
+<dt><i>result</i> (dict)</dt>
+<dd>
+dictionary containing the result sent by the client
+</dd>
+</dl>
+<a NAME="JediServer.__processClientException" ID="JediServer.__processClientException"></a>
+<h4>JediServer.__processClientException</h4>
+<b>__processClientException</b>(<i>params</i>)
+
+<p>
+        Private method to handle exceptions of the refactoring client.
+</p>
+<dl>
+
+<dt><i>params</i> (dict)</dt>
+<dd>
+dictionary containing the exception data
+</dd>
+</dl>
+<a NAME="JediServer.__processCompletionsResult" ID="JediServer.__processCompletionsResult"></a>
+<h4>JediServer.__processCompletionsResult</h4>
+<b>__processCompletionsResult</b>(<i>result</i>)
+
+<p>
+        Private method to process the completions sent by the client.
+</p>
+<dl>
+
+<dt><i>result</i> (dict)</dt>
+<dd>
+dictionary containing the result sent by the client
+</dd>
+</dl>
+<a NAME="JediServer.__processDocumentationResult" ID="JediServer.__processDocumentationResult"></a>
+<h4>JediServer.__processDocumentationResult</h4>
+<b>__processDocumentationResult</b>(<i>result</i>)
+
+<p>
+        Private method to process the documentation sent by the client.
+</p>
+<dl>
+
+<dt><i>result</i> (dict with keys 'name', 'module', 'argspec', 'docstring')</dt>
+<dd>
+dictionary containing the result sent by the client
+</dd>
+</dl>
+<a NAME="JediServer.__processGotoDefinitionResult" ID="JediServer.__processGotoDefinitionResult"></a>
+<h4>JediServer.__processGotoDefinitionResult</h4>
+<b>__processGotoDefinitionResult</b>(<i>result</i>)
+
+<p>
+        Private method callback for the goto definition result.
+</p>
+<dl>
+
+<dt><i>result</i> (dict)</dt>
+<dd>
+dictionary containing the result data
+</dd>
+</dl>
+<a NAME="JediServer.__processGotoReferencesResult" ID="JediServer.__processGotoReferencesResult"></a>
+<h4>JediServer.__processGotoReferencesResult</h4>
+<b>__processGotoReferencesResult</b>(<i>result</i>)
+
+<p>
+        Private method callback for the goto references result.
+</p>
+<dl>
+
+<dt><i>result</i> (dict)</dt>
+<dd>
+dictionary containing the result data
+</dd>
+</dl>
+<a NAME="JediServer.__processHoverHelpResult" ID="JediServer.__processHoverHelpResult"></a>
+<h4>JediServer.__processHoverHelpResult</h4>
+<b>__processHoverHelpResult</b>(<i>result</i>)
+
+<p>
+        Private method callback for the goto definition result.
+</p>
+<dl>
+
+<dt><i>result</i> (dict)</dt>
+<dd>
+dictionary containing the result data
+</dd>
+</dl>
+<a NAME="JediServer.__projectClosed" ID="JediServer.__projectClosed"></a>
+<h4>JediServer.__projectClosed</h4>
+<b>__projectClosed</b>(<i></i>)
+
+<p>
+        Private slot to handle the projectClosed signal.
+</p>
+<a NAME="JediServer.__projectOpened" ID="JediServer.__projectOpened"></a>
+<h4>JediServer.__projectOpened</h4>
+<b>__projectOpened</b>(<i></i>)
+
+<p>
+        Private slot to handle the projectOpened signal.
+</p>
+<a NAME="JediServer.__startJediClient" ID="JediServer.__startJediClient"></a>
+<h4>JediServer.__startJediClient</h4>
+<b>__startJediClient</b>(<i>interpreter, idString, clientEnv</i>)
+
+<p>
+        Private method to start the Jedi client with the given interpreter.
+</p>
+<dl>
+
+<dt><i>interpreter</i> (str)</dt>
+<dd>
+interpreter to be used for the Jedi client
+</dd>
+<dt><i>idString</i> (str)</dt>
+<dd>
+id of the client to be started
+</dd>
+<dt><i>clientEnv</i> (dict)</dt>
+<dd>
+dictionary with environment variables to run the
+            interpreter with
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+flag indicating a successful start of the client
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl>
+<a NAME="JediServer.__updateEditorLanguageMapping" ID="JediServer.__updateEditorLanguageMapping"></a>
+<h4>JediServer.__updateEditorLanguageMapping</h4>
+<b>__updateEditorLanguageMapping</b>(<i></i>)
+
+<p>
+        Private method to update the editor language to connection mapping.
+</p>
+<a NAME="JediServer.activate" ID="JediServer.activate"></a>
+<h4>JediServer.activate</h4>
+<b>activate</b>(<i></i>)
+
+<p>
+        Public method to activate the Jedi server.
+</p>
+<a NAME="JediServer.deactivate" ID="JediServer.deactivate"></a>
+<h4>JediServer.deactivate</h4>
+<b>deactivate</b>(<i></i>)
+
+<p>
+        Public method to deactivate the code assist server.
+</p>
+<a NAME="JediServer.getCallTips" ID="JediServer.getCallTips"></a>
+<h4>JediServer.getCallTips</h4>
+<b>getCallTips</b>(<i>editor, pos, commas</i>)
+
+<p>
+        Public method to calculate calltips.
+</p>
+<dl>
+
+<dt><i>editor</i> (Editor)</dt>
+<dd>
+reference to the editor object, that called this method
+</dd>
+<dt><i>pos</i> (int)</dt>
+<dd>
+position in the text for the calltip
+</dd>
+<dt><i>commas</i> (int)</dt>
+<dd>
+minimum number of commas contained in the calltip
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+list of possible calltips
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+list of str
+</dd>
+</dl>
+<a NAME="JediServer.gotoDefinition" ID="JediServer.gotoDefinition"></a>
+<h4>JediServer.gotoDefinition</h4>
+<b>gotoDefinition</b>(<i>editor</i>)
+
+<p>
+        Public slot to find the definition for the word at the cursor position
+        and go to it.
+</p>
+<p>
+        Note: This is executed upon a mouse click sequence.
+</p>
+<dl>
+
+<dt><i>editor</i> (Editor)</dt>
+<dd>
+reference to the calling editor
+</dd>
+</dl>
+<a NAME="JediServer.handleCall" ID="JediServer.handleCall"></a>
+<h4>JediServer.handleCall</h4>
+<b>handleCall</b>(<i>method, params</i>)
+
+<p>
+        Public method to handle a method call from the client.
+</p>
+<dl>
+
+<dt><i>method</i> (str)</dt>
+<dd>
+requested method name
+</dd>
+<dt><i>params</i> (dict)</dt>
+<dd>
+dictionary with method specific parameters
+</dd>
+</dl>
+<a NAME="JediServer.handleNewConnection" ID="JediServer.handleNewConnection"></a>
+<h4>JediServer.handleNewConnection</h4>
+<b>handleNewConnection</b>(<i></i>)
+
+<p>
+        Public slot for new incoming connections from a client.
+</p>
+<a NAME="JediServer.hoverHelp" ID="JediServer.hoverHelp"></a>
+<h4>JediServer.hoverHelp</h4>
+<b>hoverHelp</b>(<i>editor, line, index</i>)
+
+<p>
+        Public method to initiate the display of mouse hover help.
+</p>
+<dl>
+
+<dt><i>editor</i> (Editor)</dt>
+<dd>
+reference to the calling editor
+</dd>
+<dt><i>line</i> (int)</dt>
+<dd>
+line number (zero based)
+</dd>
+<dt><i>index</i> (int)</dt>
+<dd>
+index within the line (zero based)
+</dd>
+</dl>
+<a NAME="JediServer.isSupportedLanguage" ID="JediServer.isSupportedLanguage"></a>
+<h4>JediServer.isSupportedLanguage</h4>
+<b>isSupportedLanguage</b>(<i>language</i>)
+
+<p>
+        Public method to check, if the given language is supported.
+</p>
+<dl>
+
+<dt><i>language</i> (str)</dt>
+<dd>
+editor programming language to check
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+flag indicating the support status
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl>
+<a NAME="JediServer.requestCodeDocumentation" ID="JediServer.requestCodeDocumentation"></a>
+<h4>JediServer.requestCodeDocumentation</h4>
+<b>requestCodeDocumentation</b>(<i>editor</i>)
+
+<p>
+        Public method to request source code documentation for the given
+        editor.
+</p>
+<dl>
+
+<dt><i>editor</i> (Editor)</dt>
+<dd>
+reference to the editor to get source code documentation
+            for
+</dd>
+</dl>
+<a NAME="JediServer.requestCompletions" ID="JediServer.requestCompletions"></a>
+<h4>JediServer.requestCompletions</h4>
+<b>requestCompletions</b>(<i>editor, context, acText</i>)
+
+<p>
+        Public method to request a list of possible completions.
+</p>
+<dl>
+
+<dt><i>editor</i> (Editor)</dt>
+<dd>
+reference to the editor object, that called this method
+</dd>
+<dt><i>context</i> (bool)</dt>
+<dd>
+flag indicating to autocomplete a context
+</dd>
+<dt><i>acText</i> (str)</dt>
+<dd>
+text to be completed
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Documentation/Source/eric7.Preferences.ConfigurationPages.EditorAutoCompletionJediPage.html	Sat Sep 11 19:47:02 2021 +0200
@@ -0,0 +1,129 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric7.Preferences.ConfigurationPages.EditorAutoCompletionJediPage</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body>
+<a NAME="top" ID="top"></a>
+<h1>eric7.Preferences.ConfigurationPages.EditorAutoCompletionJediPage</h1>
+
+<p>
+Module implementing the Jedi Auto-completion configuration page.
+</p>
+<h3>Global Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+
+<table>
+
+<tr>
+<td><a href="#EditorAutoCompletionJediPage">EditorAutoCompletionJediPage</a></td>
+<td>Class implementing the Jedi Auto-completion configuration page.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+
+<table>
+
+<tr>
+<td><a href="#create">create</a></td>
+<td>Module function to create the configuration page.</td>
+</tr>
+</table>
+<hr />
+<hr />
+<a NAME="EditorAutoCompletionJediPage" ID="EditorAutoCompletionJediPage"></a>
+<h2>EditorAutoCompletionJediPage</h2>
+
+<p>
+    Class implementing the Jedi Auto-completion configuration page.
+</p>
+<h3>Derived from</h3>
+ConfigurationPageBase, Ui_EditorAutoCompletionJediPage
+<h3>Class Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+
+<table>
+
+<tr>
+<td><a href="#EditorAutoCompletionJediPage.__init__">EditorAutoCompletionJediPage</a></td>
+<td>Constructor</td>
+</tr>
+<tr>
+<td><a href="#EditorAutoCompletionJediPage.save">save</a></td>
+<td>Public slot to save the Jedi Auto-completion configuration.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<a NAME="EditorAutoCompletionJediPage.__init__" ID="EditorAutoCompletionJediPage.__init__"></a>
+<h4>EditorAutoCompletionJediPage (Constructor)</h4>
+<b>EditorAutoCompletionJediPage</b>(<i></i>)
+
+<p>
+        Constructor
+</p>
+<a NAME="EditorAutoCompletionJediPage.save" ID="EditorAutoCompletionJediPage.save"></a>
+<h4>EditorAutoCompletionJediPage.save</h4>
+<b>save</b>(<i></i>)
+
+<p>
+        Public slot to save the Jedi Auto-completion configuration.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="create" ID="create"></a>
+<h2>create</h2>
+<b>create</b>(<i>dlg</i>)
+
+<p>
+    Module function to create the configuration page.
+</p>
+<dl>
+
+<dt><i>dlg</i></dt>
+<dd>
+reference to the configuration dialog
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+reference to the instantiated page (ConfigurationPageBase)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Documentation/Source/eric7.Preferences.ConfigurationPages.EditorCallTipsJediPage.html	Sat Sep 11 19:47:02 2021 +0200
@@ -0,0 +1,129 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric7.Preferences.ConfigurationPages.EditorCallTipsJediPage</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body>
+<a NAME="top" ID="top"></a>
+<h1>eric7.Preferences.ConfigurationPages.EditorCallTipsJediPage</h1>
+
+<p>
+Module implementing the Jedi Calltips configuration page.
+</p>
+<h3>Global Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+
+<table>
+
+<tr>
+<td><a href="#EditorCallTipsJediPage">EditorCallTipsJediPage</a></td>
+<td>Class implementing the Jedi Calltips configuration page.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+
+<table>
+
+<tr>
+<td><a href="#create">create</a></td>
+<td>Module function to create the configuration page.</td>
+</tr>
+</table>
+<hr />
+<hr />
+<a NAME="EditorCallTipsJediPage" ID="EditorCallTipsJediPage"></a>
+<h2>EditorCallTipsJediPage</h2>
+
+<p>
+    Class implementing the Jedi Calltips configuration page.
+</p>
+<h3>Derived from</h3>
+ConfigurationPageBase, Ui_EditorCallTipsJediPage
+<h3>Class Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+
+<table>
+
+<tr>
+<td><a href="#EditorCallTipsJediPage.__init__">EditorCallTipsJediPage</a></td>
+<td>Constructor</td>
+</tr>
+<tr>
+<td><a href="#EditorCallTipsJediPage.save">save</a></td>
+<td>Public slot to save the Jedi Calltips configuration.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<a NAME="EditorCallTipsJediPage.__init__" ID="EditorCallTipsJediPage.__init__"></a>
+<h4>EditorCallTipsJediPage (Constructor)</h4>
+<b>EditorCallTipsJediPage</b>(<i></i>)
+
+<p>
+        Constructor
+</p>
+<a NAME="EditorCallTipsJediPage.save" ID="EditorCallTipsJediPage.save"></a>
+<h4>EditorCallTipsJediPage.save</h4>
+<b>save</b>(<i></i>)
+
+<p>
+        Public slot to save the Jedi Calltips configuration.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="create" ID="create"></a>
+<h2>create</h2>
+<b>create</b>(<i>dlg</i>)
+
+<p>
+    Module function to create the configuration page.
+</p>
+<dl>
+
+<dt><i>dlg</i></dt>
+<dd>
+reference to the configuration dialog
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+reference to the instantiated page (ConfigurationPageBase)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Documentation/Source/eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerJediPage.html	Sat Sep 11 19:47:02 2021 +0200
@@ -0,0 +1,140 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerJediPage</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body>
+<a NAME="top" ID="top"></a>
+<h1>eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerJediPage</h1>
+
+<p>
+Module implementing the Jedi Mouse Click Handler configuration page.
+</p>
+<h3>Global Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+
+<table>
+
+<tr>
+<td><a href="#EditorMouseClickHandlerJediPage">EditorMouseClickHandlerJediPage</a></td>
+<td>Class implementing the Jedi Mouse Click Handler configuration page.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+
+<table>
+
+<tr>
+<td><a href="#create">create</a></td>
+<td>Module function to create the configuration page.</td>
+</tr>
+</table>
+<hr />
+<hr />
+<a NAME="EditorMouseClickHandlerJediPage" ID="EditorMouseClickHandlerJediPage"></a>
+<h2>EditorMouseClickHandlerJediPage</h2>
+
+<p>
+    Class implementing the Jedi Mouse Click Handler configuration page.
+</p>
+<h3>Derived from</h3>
+ConfigurationPageBase, Ui_EditorMouseClickHandlerJediPage
+<h3>Class Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+
+<table>
+
+<tr>
+<td><a href="#EditorMouseClickHandlerJediPage.__init__">EditorMouseClickHandlerJediPage</a></td>
+<td>Constructor</td>
+</tr>
+<tr>
+<td><a href="#EditorMouseClickHandlerJediPage.on_changeGotoButton_clicked">on_changeGotoButton_clicked</a></td>
+<td>Private slot to change the 'goto' mouse click sequence.</td>
+</tr>
+<tr>
+<td><a href="#EditorMouseClickHandlerJediPage.save">save</a></td>
+<td>Public slot to save the Jedi Mouse Click Handler configuration.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<a NAME="EditorMouseClickHandlerJediPage.__init__" ID="EditorMouseClickHandlerJediPage.__init__"></a>
+<h4>EditorMouseClickHandlerJediPage (Constructor)</h4>
+<b>EditorMouseClickHandlerJediPage</b>(<i></i>)
+
+<p>
+        Constructor
+</p>
+<a NAME="EditorMouseClickHandlerJediPage.on_changeGotoButton_clicked" ID="EditorMouseClickHandlerJediPage.on_changeGotoButton_clicked"></a>
+<h4>EditorMouseClickHandlerJediPage.on_changeGotoButton_clicked</h4>
+<b>on_changeGotoButton_clicked</b>(<i></i>)
+
+<p>
+        Private slot to change the 'goto' mouse click sequence.
+</p>
+<a NAME="EditorMouseClickHandlerJediPage.save" ID="EditorMouseClickHandlerJediPage.save"></a>
+<h4>EditorMouseClickHandlerJediPage.save</h4>
+<b>save</b>(<i></i>)
+
+<p>
+        Public slot to save the Jedi Mouse Click Handler configuration.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="create" ID="create"></a>
+<h2>create</h2>
+<b>create</b>(<i>dlg</i>)
+
+<p>
+    Module function to create the configuration page.
+</p>
+<dl>
+
+<dt><i>dlg</i></dt>
+<dd>
+reference to the configuration dialog
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+reference to the instantiated page (ConfigurationPageBase)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/eric7/Documentation/Source/eric7.Preferences.__init__.html	Sat Sep 11 19:40:25 2021 +0200
+++ b/eric7/Documentation/Source/eric7.Preferences.__init__.html	Sat Sep 11 19:47:02 2021 +0200
@@ -158,6 +158,10 @@
 <td>Module function to retrieve the IRC related settings.</td>
 </tr>
 <tr>
+<td><a href="#getJedi">getJedi</a></td>
+<td>Function to retrieve the Jedi Assistant related settings.</td>
+</tr>
+<tr>
 <td><a href="#getMicroPython">getMicroPython</a></td>
 <td>Module function to retrieve the MicroPython related settings.</td>
 </tr>
@@ -394,8 +398,12 @@
 <td>Module function to store the IRC related settings.</td>
 </tr>
 <tr>
+<td><a href="#setJedi">setJedi</a></td>
+<td>Public method to store the various refactoring settings.</td>
+</tr>
+<tr>
 <td><a href="#setMicroPython">setMicroPython</a></td>
-<td>Module function to store the pip MicroPython settings.</td>
+<td>Module function to store the MicroPython settings.</td>
 </tr>
 <tr>
 <td><a href="#setMultiProject">setMultiProject</a></td>
@@ -527,7 +535,7 @@
 <h3>Class Attributes</h3>
 
 <table>
-<tr><td>condaDefaults</td></tr><tr><td>cooperationDefaults</td></tr><tr><td>corbaDefaults</td></tr><tr><td>debuggerDefaults</td></tr><tr><td>diffColourDefaults</td></tr><tr><td>docuViewerDefaults</td></tr><tr><td>editorColourDefaults</td></tr><tr><td>editorDefaults</td></tr><tr><td>editorExporterDefaults</td></tr><tr><td>editorOtherFontsDefaults</td></tr><tr><td>editorTypingDefaults</td></tr><tr><td>geometryDefaults</td></tr><tr><td>graphicsDefaults</td></tr><tr><td>helpDefaults</td></tr><tr><td>hexEditorDefaults</td></tr><tr><td>iconEditorDefaults</td></tr><tr><td>iconsDefaults</td></tr><tr><td>ircDefaults</td></tr><tr><td>microPythonDefaults</td></tr><tr><td>multiProjectDefaults</td></tr><tr><td>pipDefaults</td></tr><tr><td>pluginManagerDefaults</td></tr><tr><td>printerDefaults</td></tr><tr><td>projectBrowserColourDefaults</td></tr><tr><td>projectBrowserFlagsDefaults</td></tr><tr><td>projectDefaults</td></tr><tr><td>protobufDefaults</td></tr><tr><td>pyflakesDefaults</td></tr><tr><td>pythonDefaults</td></tr><tr><td>qtDefaults</td></tr><tr><td>resetLayout</td></tr><tr><td>shellDefaults</td></tr><tr><td>sysDefaults</td></tr><tr><td>tasksDefaults</td></tr><tr><td>templatesDefaults</td></tr><tr><td>trayStarterDefaults</td></tr><tr><td>uiDefaults</td></tr><tr><td>userDefaults</td></tr><tr><td>varDefaults</td></tr><tr><td>vcsDefaults</td></tr><tr><td>webBrowserDefaults</td></tr><tr><td>webEngineSettingsIntitialized</td></tr>
+<tr><td>condaDefaults</td></tr><tr><td>cooperationDefaults</td></tr><tr><td>corbaDefaults</td></tr><tr><td>debuggerDefaults</td></tr><tr><td>diffColourDefaults</td></tr><tr><td>docuViewerDefaults</td></tr><tr><td>editorColourDefaults</td></tr><tr><td>editorDefaults</td></tr><tr><td>editorExporterDefaults</td></tr><tr><td>editorOtherFontsDefaults</td></tr><tr><td>editorTypingDefaults</td></tr><tr><td>geometryDefaults</td></tr><tr><td>graphicsDefaults</td></tr><tr><td>helpDefaults</td></tr><tr><td>hexEditorDefaults</td></tr><tr><td>iconEditorDefaults</td></tr><tr><td>iconsDefaults</td></tr><tr><td>ircDefaults</td></tr><tr><td>jediDefaults</td></tr><tr><td>microPythonDefaults</td></tr><tr><td>multiProjectDefaults</td></tr><tr><td>pipDefaults</td></tr><tr><td>pluginManagerDefaults</td></tr><tr><td>printerDefaults</td></tr><tr><td>projectBrowserColourDefaults</td></tr><tr><td>projectBrowserFlagsDefaults</td></tr><tr><td>projectDefaults</td></tr><tr><td>protobufDefaults</td></tr><tr><td>pyflakesDefaults</td></tr><tr><td>pythonDefaults</td></tr><tr><td>qtDefaults</td></tr><tr><td>resetLayout</td></tr><tr><td>shellDefaults</td></tr><tr><td>sysDefaults</td></tr><tr><td>tasksDefaults</td></tr><tr><td>templatesDefaults</td></tr><tr><td>trayStarterDefaults</td></tr><tr><td>uiDefaults</td></tr><tr><td>userDefaults</td></tr><tr><td>varDefaults</td></tr><tr><td>vcsDefaults</td></tr><tr><td>webBrowserDefaults</td></tr><tr><td>webEngineSettingsIntitialized</td></tr>
 </table>
 <h3>Class Methods</h3>
 
@@ -1153,6 +1161,35 @@
 <div align="right"><a href="#top">Up</a></div>
 <hr />
 <hr />
+<a NAME="getJedi" ID="getJedi"></a>
+<h2>getJedi</h2>
+<b>getJedi</b>(<i>key</i>)
+
+<p>
+    Function to retrieve the Jedi Assistant related settings.
+</p>
+<dl>
+
+<dt><i>key</i> (str)</dt>
+<dd>
+the key of the value to get
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+the requested jedi assistant setting
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+Any
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
 <a NAME="getMicroPython" ID="getMicroPython"></a>
 <h2>getMicroPython</h2>
 <b>getMicroPython</b>(<i>key</i>)
@@ -2342,12 +2379,33 @@
 <div align="right"><a href="#top">Up</a></div>
 <hr />
 <hr />
+<a NAME="setJedi" ID="setJedi"></a>
+<h2>setJedi</h2>
+<b>setJedi</b>(<i>key, value</i>)
+
+<p>
+    Public method to store the various refactoring settings.
+</p>
+<dl>
+
+<dt><i>key</i> (str)</dt>
+<dd>
+the key of the setting to be set
+</dd>
+<dt><i>value</i> (Any)</dt>
+<dd>
+the value to be set
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
 <a NAME="setMicroPython" ID="setMicroPython"></a>
 <h2>setMicroPython</h2>
 <b>setMicroPython</b>(<i>key, value</i>)
 
 <p>
-    Module function to store the pip MicroPython settings.
+    Module function to store the MicroPython settings.
 </p>
 <dl>
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Documentation/Source/index-eric7.JediInterface.html	Sat Sep 11 19:47:02 2021 +0200
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric7.JediInterface</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body>
+<h1>eric7.JediInterface</h1>
+
+<p>
+Package implementing the jedi assistant interface.
+</p>
+<p>
+This package implements just the interface for the eric7 IDE. The
+underlying functionality is provided by the jedi library
+(<a href="https://github.com/davidhalter/jedi">
+https://github.com/davidhalter/jedi</a>).
+</p>
+
+
+<h3>Modules</h3>
+<table>
+
+<tr>
+<td><a href="eric7.JediInterface.AssistantJedi.html">AssistantJedi</a></td>
+<td>Module implementing the Jedi assistant plug-in.</td>
+</tr>
+<tr>
+<td><a href="eric7.JediInterface.JediClient.html">JediClient</a></td>
+<td>Module implementing the Jedi client of eric7.</td>
+</tr>
+<tr>
+<td><a href="eric7.JediInterface.JediServer.html">JediServer</a></td>
+<td>Module implementing the autocompletion interface to jedi.</td>
+</tr>
+</table>
+</body></html>
\ No newline at end of file
--- a/eric7/Documentation/Source/index-eric7.Preferences.ConfigurationPages.html	Sat Sep 11 19:40:25 2021 +0200
+++ b/eric7/Documentation/Source/index-eric7.Preferences.ConfigurationPages.html	Sat Sep 11 19:47:02 2021 +0200
@@ -66,6 +66,10 @@
 <td>Module implementing the Editor APIs configuration page.</td>
 </tr>
 <tr>
+<td><a href="eric7.Preferences.ConfigurationPages.EditorAutoCompletionJediPage.html">EditorAutoCompletionJediPage</a></td>
+<td>Module implementing the Jedi Auto-completion configuration page.</td>
+</tr>
+<tr>
 <td><a href="eric7.Preferences.ConfigurationPages.EditorAutocompletionPage.html">EditorAutocompletionPage</a></td>
 <td>Module implementing the Editor Autocompletion configuration page.</td>
 </tr>
@@ -74,6 +78,10 @@
 <td>Module implementing the QScintilla Autocompletion configuration page.</td>
 </tr>
 <tr>
+<td><a href="eric7.Preferences.ConfigurationPages.EditorCallTipsJediPage.html">EditorCallTipsJediPage</a></td>
+<td>Module implementing the Jedi Calltips configuration page.</td>
+</tr>
+<tr>
 <td><a href="eric7.Preferences.ConfigurationPages.EditorCalltipsPage.html">EditorCalltipsPage</a></td>
 <td>Module implementing the Editor Calltips configuration page.</td>
 </tr>
@@ -118,6 +126,10 @@
 <td>Module implementing a dialog to set the tab and indentation width override for a language.</td>
 </tr>
 <tr>
+<td><a href="eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerJediPage.html">EditorMouseClickHandlerJediPage</a></td>
+<td>Module implementing the Jedi Mouse Click Handler configuration page.</td>
+</tr>
+<tr>
 <td><a href="eric7.Preferences.ConfigurationPages.EditorMouseClickHandlerPage.html">EditorMouseClickHandlerPage</a></td>
 <td>Module implementing the Editor Mouse Click Handlers configuration page.</td>
 </tr>
--- a/eric7/Documentation/Source/index-eric7.html	Sat Sep 11 19:40:25 2021 +0200
+++ b/eric7/Documentation/Source/index-eric7.html	Sat Sep 11 19:47:02 2021 +0200
@@ -101,6 +101,10 @@
 <td>Package implementing the icon editor tool.</td>
 </tr>
 <tr>
+<td><a href="index-eric7.JediInterface.html">JediInterface</a></td>
+<td>Package implementing the jedi assistant interface.</td>
+</tr>
+<tr>
 <td><a href="index-eric7.MicroPython.html">MicroPython</a></td>
 <td>Package implementing an interface to MicroPython devices like esp32.</td>
 </tr>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/JediInterface/AssistantJedi.py	Sat Sep 11 19:47:02 2021 +0200
@@ -0,0 +1,196 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2015 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the Jedi assistant plug-in.
+"""
+
+from PyQt6.QtCore import pyqtSlot, QObject
+
+import Preferences
+
+
+class AssistantJedi(QObject):
+    """
+    Class implementing the Jedi assistant interface.
+    """
+    def __init__(self, ui, viewManager, project):
+        """
+        Constructor
+        
+        @param ui reference to the user interface object
+        @type UserInterface
+        @param viewManager reference to the viewmanager object
+        @type ViewManager
+        @param project reference to the project object
+        @type Project
+        """
+        super().__init__(ui)
+        self.__ui = ui
+        self.__vm = viewManager
+        
+        self.__jediServer = None
+        self.__editors = []
+        
+        from .JediServer import JediServer
+        self.__jediServer = JediServer(self.__vm, project, self.__ui)
+        self.__jediServer.activate()
+        
+        self.__ui.preferencesChanged.connect(self.__preferencesChanged)
+        
+        self.__vm.editorOpenedEd.connect(self.__editorOpened)
+        self.__vm.editorClosedEd.connect(self.__editorClosed)
+    
+    @pyqtSlot()
+    def __preferencesChanged(self):
+        """
+        Private slot handling changes of the Disassembly viewer settings.
+        """
+        for editor in self.__editors:
+            self.__disconnectMouseClickHandler(editor)
+            self.__connectMouseClickHandler(editor)
+    
+    def __determineLanguage(self):
+        """
+        Private method to determine the valid language strings.
+        
+        @return list of valid language strings
+        @rtype list of str
+        """
+        return ["Python3", "MicroPython",
+                "Pygments|Python", "Pygments|Python 2.x",
+                "Cython"]
+    
+    def __editorOpened(self, editor):
+        """
+        Private slot called, when a new editor was opened.
+        
+        @param editor reference to the new editor
+        @type Editor
+        """
+        languages = self.__determineLanguage()
+        
+        if editor.getLanguage() in languages:
+            self.__connectEditor(editor)
+        
+        editor.languageChanged.connect(self.__editorLanguageChanged)
+        self.__editors.append(editor)
+    
+    def __editorClosed(self, editor):
+        """
+        Private slot called, when an editor was closed.
+        
+        @param editor reference to the editor
+        @type Editor
+        """
+        if editor in self.__editors:
+            editor.languageChanged.disconnect(self.__editorLanguageChanged)
+            self.__disconnectEditor(editor)
+            self.__editors.remove(editor)
+    
+    def __editorLanguageChanged(self, language):
+        """
+        Private slot to handle the language change of an editor.
+        
+        @param language programming language of the editor
+        @type str
+        """
+        editor = self.sender()
+        languages = self.__determineLanguage()
+        
+        self.__disconnectEditor(editor)
+        if language in languages:
+            self.__connectEditor(editor)
+    
+    def __connectEditor(self, editor):
+        """
+        Private method to connect an editor.
+        
+        @param editor reference to the editor
+        @type Editor
+        """
+        self.__setAutoCompletionHook(editor)
+        self.__setCalltipsHook(editor)
+        
+        self.__connectMouseClickHandler(editor)
+        
+        editor.registerMouseHoverHelpFunction(
+            self.__jediServer.hoverHelp)
+    
+    def __disconnectEditor(self, editor):
+        """
+        Private method to disconnect an editor.
+        
+        @param editor reference to the editor
+        @type Editor
+        """
+        self.__unsetAutoCompletionHook(editor)
+        self.__unsetCalltipsHook(editor)
+        
+        self.__disconnectMouseClickHandler(editor)
+        
+        editor.unregisterMouseHoverHelpFunction(
+            self.__jediServer.hoverHelp)
+    
+    def __connectMouseClickHandler(self, editor):
+        """
+        Private method to connect the mouse click handler to an editor.
+        
+        @param editor reference to the editor
+        @type Editor
+        """
+        if Preferences.getJedi("MouseClickGotoButton"):
+            editor.setMouseClickHandler(
+                "jedi",
+                Preferences.getJedi("MouseClickGotoModifiers"),
+                Preferences.getJedi("MouseClickGotoButton"),
+                self.__jediServer.gotoDefinition
+            )
+    
+    def __disconnectMouseClickHandler(self, editor):
+        """
+        Private method to disconnect the mouse click handler from an editor.
+        
+        @param editor reference to the editor
+        @type Editor
+        """
+        editor.removeMouseClickHandlers("jedi")
+    
+    def __setAutoCompletionHook(self, editor):
+        """
+        Private method to set the autocompletion hook.
+        
+        @param editor reference to the editor
+        @type Editor
+        """
+        editor.addCompletionListHook(
+            "jedi", self.__jediServer.requestCompletions, True)
+    
+    def __unsetAutoCompletionHook(self, editor):
+        """
+        Private method to unset the autocompletion hook.
+        
+        @param editor reference to the editor
+        @type Editor
+        """
+        editor.removeCompletionListHook("jedi")
+    
+    def __setCalltipsHook(self, editor):
+        """
+        Private method to set the calltip hook.
+        
+        @param editor reference to the editor
+        @type Editor
+        """
+        editor.addCallTipHook("jedi", self.__jediServer.getCallTips)
+    
+    def __unsetCalltipsHook(self, editor):
+        """
+        Private method to unset the calltip hook.
+        
+        @param editor reference to the editor
+        @type Editor
+        """
+        editor.removeCallTipHook("jedi")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/JediInterface/JediClient.py	Sat Sep 11 19:47:02 2021 +0200
@@ -0,0 +1,418 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2017 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the Jedi client of eric7.
+"""
+
+import sys
+
+SuppressedException = Exception
+
+modulePath = sys.argv[-1]   # it is always the last parameter
+sys.path.insert(1, modulePath)
+
+try:
+    import jedi
+except ImportError:
+    sys.exit(42)
+
+from eric7.EricNetwork.EricJsonClient import EricJsonClient
+
+
+class JediClient(EricJsonClient):
+    """
+    Class implementing the Jedi client of eric7.
+    """
+    def __init__(self, host, port, idString):
+        """
+        Constructor
+        
+        @param host ip address the background service is listening
+        @type str
+        @param port port of the background service
+        @type int
+        @param idString assigned client id to be sent back to the server in
+            order to identify the connection
+        @type str
+        """
+        super().__init__(host, port, idString)
+        
+        # TODO: add additional methods for these topics
+        #       - rename variable
+        #       - extract function
+        #       - extract variable
+        #       - inline variable
+        self.__methodMapping = {
+            "openProject": self.__openProject,
+            "closeProject": self.__closeProject,
+            
+            "getCompletions": self.__getCompletions,
+            "getCallTips": self.__getCallTips,
+            "getDocumentation": self.__getDocumentation,
+            "hoverHelp": self.__getHoverHelp,
+            "gotoDefinition": self.__getAssignment,
+            "gotoReferences": self.__getReferences,
+        }
+        
+        self.__id = idString
+        
+        self.__project = None
+    
+    def handleCall(self, method, params):
+        """
+        Public method to handle a method call from the server.
+        
+        @param method requested method name
+        @type str
+        @param params dictionary with method specific parameters
+        @type dict
+        """
+        self.__methodMapping[method](params)
+    
+    def __handleError(self, err):
+        """
+        Private method to process an error.
+        
+        @param err exception object
+        @type Exception or Warning
+        @return dictionary containing the error information
+        @rtype dict
+        """
+        error = str(type(err)).split()[-1]
+        error = error[1:-2].split('.')[-1]
+        errorDict = {
+            "Error": error,
+            "ErrorString": str(err),
+        }
+        
+        return errorDict
+    
+    def __openProject(self, params):
+        """
+        Private method to create a jedi project and load its saved data.
+        
+        @param params dictionary containing the method parameters
+        @type dict
+        """
+        projectPath = params["ProjectPath"]
+        self.__project = jedi.Project(projectPath)
+    
+    def __closeProject(self, params):
+        """
+        Private method to save a jedi project's data.
+        
+        @param params dictionary containing the method parameters
+        @type dict
+        """
+        if self.__project is not None:
+            self.__project.save()
+    
+    def __completionType(self, completion):
+        """
+        Private method to assemble the completion type depending on the
+        visibility indicated by the completion name.
+        
+        @param completion reference to the completion object
+        @type jedi.api.classes.Completion
+        @return modified completion type
+        @rtype str
+        """
+        if completion.name.startswith('__'):
+            compType = '__' + completion.type
+        elif completion.name.startswith('_'):
+            compType = '_' + completion.type
+        else:
+            compType = completion.type
+        
+        return compType
+    
+    def __completionFullName(self, completion):
+        """
+        Private method to extract the full completion name.
+        
+        @param completion reference to the completion object
+        @type jedi.api.classes.Completion
+        @return full completion name
+        @rtype str
+        """
+        fullName = completion.full_name
+        fullName = (
+            fullName.replace("__main__", completion.module_name)
+            if fullName else
+            completion.module_name
+        )
+        
+        return fullName
+    
+    def __getCompletions(self, params):
+        """
+        Private method to calculate possible completions.
+        
+        @param params dictionary containing the method parameters
+        @type dict
+        """
+        filename = params["FileName"]
+        source = params["Source"]
+        line = params["Line"]
+        index = params["Index"]
+        fuzzy = params["Fuzzy"]
+        
+        errorDict = {}
+        response = []
+        
+        script = jedi.Script(source, path=filename, project=self.__project)
+        
+        try:
+            completions = script.complete(line, index, fuzzy=fuzzy)
+            response = [
+                {
+                    'ModulePath': str(completion.module_path),
+                    'Name': completion.name,
+                    'FullName': self.__completionFullName(completion),
+                    'CompletionType': self.__completionType(completion),
+                } for completion in completions
+                if not (completion.name.startswith("__") and
+                        completion.name.endswith("__"))
+            ]
+        except SuppressedException as err:
+            errorDict = self.__handleError(err)
+        
+        result = {
+            "Completions": response,
+            "CompletionText": params["CompletionText"],
+            "FileName": filename,
+        }
+        result.update(errorDict)
+        
+        self.sendJson("CompletionsResult", result)
+    
+    def __getCallTips(self, params):
+        """
+        Private method to calculate possible calltips.
+        
+        @param params dictionary containing the method parameters
+        @type dict
+        """
+        filename = params["FileName"]
+        source = params["Source"]
+        line = params["Line"]
+        index = params["Index"]
+        
+        errorDict = {}
+        calltips = []
+        
+        script = jedi.Script(source, path=filename, project=self.__project)
+        
+        try:
+            signatures = script.get_signatures(line, index)
+            for signature in signatures:
+                name = signature.name
+                params = self.__extractParameters(signature)
+                calltips.append("{0}{1}".format(name, params))
+        except SuppressedException as err:
+            errorDict = self.__handleError(err)
+        
+        result = {
+            "CallTips": calltips,
+        }
+        result.update(errorDict)
+        
+        self.sendJson("CallTipsResult", result)
+
+    def __extractParameters(self, signature):
+        """
+        Private method to extract the call parameter descriptions.
+        
+        @param signature a jedi signature object
+        @type object
+        @return a string with comma seperated parameter names and default
+            values
+        @rtype str
+        """
+        try:
+            params = ", ".join([param.description.split('param ', 1)[-1]
+                                for param in signature.params])
+            return "({0})".format(params)
+        except AttributeError:
+            # Empty strings as argspec suppress display of "definition"
+            return ' '
+    
+    def __getDocumentation(self, params):
+        """
+        Private method to get some source code documentation.
+        
+        @param params dictionary containing the method parameters
+        @type dict
+        """
+        filename = params["FileName"]
+        source = params["Source"]
+        line = params["Line"]
+        index = params["Index"]
+        
+        errorDict = {}
+        docu = {}
+        
+        script = jedi.Script(source, path=filename, project=self.__project)
+        
+        try:
+            definitions = script.infer(line, index)
+            definition = definitions[0]     # use the first one only
+            docu = {
+                "name": definition.full_name,
+                "module": definition.module_name,
+                "argspec": self.__extractParameters(definition),
+                "docstring": definition.docstring(),
+            }
+        except SuppressedException as err:
+            errorDict = self.__handleError(err)
+        
+        result = {
+            "DocumentationDict": docu,
+        }
+        result.update(errorDict)
+        
+        self.sendJson("DocumentationResult", result)
+    
+    def __getHoverHelp(self, params):
+        """
+        Private method to get some source code documentation.
+        
+        @param params dictionary containing the method parameters
+        @type dict
+        """
+        filename = params["FileName"]
+        source = params["Source"]
+        line = params["Line"]
+        index = params["Index"]
+        uid = params["Uuid"]
+        
+        script = jedi.Script(source, path=filename, project=self.__project)
+
+        errorDict = {}
+        helpText = ""
+        
+        try:
+            helpText = script.help(line, index)[0].docstring()
+        except SuppressedException as err:
+            errorDict = self.__handleError(err)
+        
+        result = {
+            "Line": line,
+            "Index": index,
+            "HoverHelp": helpText,
+            "Uuid": uid,
+        }
+        result.update(errorDict)
+        
+        self.sendJson("HoverHelpResult", result)
+    
+    def __getAssignment(self, params):
+        """
+        Private method to get the place a parameter is defined.
+        
+        @param params dictionary containing the method parameters
+        @type dict
+        """
+        filename = params["FileName"]
+        source = params["Source"]
+        line = params["Line"]
+        index = params["Index"]
+        uid = params["Uuid"]
+        
+        errorDict = {}
+        gotoDefinition = {}
+        
+        script = jedi.Script(source, path=filename, project=self.__project)
+        
+        try:
+            assignments = script.goto(
+                line, index, follow_imports=True, follow_builtin_imports=True)
+            for assignment in assignments:
+                if bool(assignment.module_path):
+                    # TODO: call __getReferences if
+                    #       assignment.module_path == filename and
+                    #       assignment.line == line
+                    gotoDefinition = {
+                        'ModulePath': str(assignment.module_path),
+                        'Line': (0 if assignment.line is None else
+                                 assignment.line),
+                        'Column': assignment.column,
+                    }
+                break
+        except SuppressedException as err:
+            errorDict = self.__handleError(err)
+        
+        result = {
+            "GotoDefinitionDict": gotoDefinition,
+            "Uuid": uid,
+        }
+        result.update(errorDict)
+        
+        self.sendJson("GotoDefinitionResult", result)
+    
+    def __getReferences(self, params):
+        """
+        Private method to get the places a parameter is referenced.
+        
+        @param params dictionary containing the method parameters
+        @type dict
+        """
+        filename = params["FileName"]
+        source = params["Source"]
+        line = params["Line"]
+        index = params["Index"]
+        uid = params["Uuid"]
+        
+        errorDict = {}
+        gotoReferences = []
+        
+        script = jedi.Script(source, path=filename, project=self.__project)
+        
+        try:
+            references = script.get_references(line, index,
+                                               include_builtins=False)
+            for reference in references:
+                if bool(reference.module_path):
+                    if (
+                        reference.line == line and
+                        str(reference.module_path) == filename
+                    ):
+                        continue
+                    gotoReferences.append({
+                        'ModulePath': str(reference.module_path),
+                        'Line': (0 if reference.line is None else
+                                 reference.line),
+                        'Column': reference.column,
+                        'Code': reference.get_line_code(),
+                    })
+        except SuppressedException as err:
+            errorDict = self.__handleError(err)
+        
+        result = {
+            "GotoReferencesList": gotoReferences,
+            "Uuid": uid,
+        }
+        result.update(errorDict)
+        
+        self.sendJson("GotoReferencesResult", result)
+
+
+if __name__ == '__main__':
+    if len(sys.argv) != 5:
+        print('Host, port, id and module path parameters are missing.'
+              ' Abort.')
+        sys.exit(1)
+    
+    host, port, idString = sys.argv[1:-1]
+    
+    client = JediClient(host, int(port), idString)
+    # Start the main loop
+    client.run()
+    
+    sys.exit(0)
+
+#
+# eflag: noqa = M801
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/JediInterface/JediServer.py	Sat Sep 11 19:47:02 2021 +0200
@@ -0,0 +1,735 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2015 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the autocompletion interface to jedi.
+"""
+
+import contextlib
+import os
+import uuid
+
+from PyQt6.QtCore import pyqtSlot, QCoreApplication, QTimer
+
+from EricWidgets.EricApplication import ericApp
+
+from EricNetwork.EricJsonServer import EricJsonServer
+
+from QScintilla.Editor import Editor
+
+import Preferences
+import Globals
+
+
+class JediServer(EricJsonServer):
+    """
+    Class implementing the interface to the jedi library.
+    """
+    IdProject = "Project"
+    
+    PictureIDs = {
+        "class": "?{0}".format(Editor.ClassID),
+        "_class": "?{0}".format(Editor.ClassProtectedID),
+        "__class": "?{0}".format(Editor.ClassPrivateID),
+        "instance": "?{0}".format(Editor.ClassID),
+        "_instance": "?{0}".format(Editor.ClassProtectedID),
+        "__instance": "?{0}".format(Editor.ClassPrivateID),
+        "function": "?{0}".format(Editor.MethodID),
+        "_function": "?{0}".format(Editor.MethodProtectedID),
+        "__function": "?{0}".format(Editor.MethodPrivateID),
+        "module": "?{0}".format(Editor.ModuleID),
+        "_module": "?{0}".format(Editor.ModuleID),
+        "__module": "?{0}".format(Editor.ModuleID),
+        "param": "?{0}".format(Editor.AttributeID),
+        "_param": "?{0}".format(Editor.AttributeProtectedID),
+        "__param": "?{0}".format(Editor.AttributePrivateID),
+        "statement": "?{0}".format(Editor.AttributeID),
+        "_statement": "?{0}".format(Editor.AttributeProtectedID),
+        "__statement": "?{0}".format(Editor.AttributePrivateID),
+        "import": "",
+        "None": "",
+    }
+    
+    def __init__(self, viewManager, project, ui):
+        """
+        Constructor
+        
+        @param viewManager reference to the viewmanager object
+        @type ViewManager
+        @param project reference to the project object
+        @type Project
+        @param ui reference to the user interface
+        @type UserInterface
+        """
+        super().__init__(
+            "JediServer", multiplex=True, parent=ui)
+        
+        self.__ui = ui
+        self.__vm = viewManager
+        self.__ericProject = project
+        
+        self.__editorLanguageMapping = {}
+        
+        self.__documentationViewer = None
+        
+        # attributes to store the resuls of the client side
+        self.__completions = None
+        self.__calltips = None
+        
+        self.__methodMapping = {
+            "CompletionsResult": self.__processCompletionsResult,
+            "CallTipsResult": self.__processCallTipsResult,
+            "DocumentationResult": self.__processDocumentationResult,
+            "HoverHelpResult": self.__processHoverHelpResult,
+            "GotoDefinitionResult": self.__processGotoDefinitionResult,
+            "GotoReferencesResult": self.__processGotoReferencesResult,
+            
+            "ClientException": self.__processClientException,
+        }
+        
+        # temporary store for editor references indexed by Uuid
+        self.__editors = {}
+        
+        # Python 3
+        self.__ensureActive("Python3")
+    
+    def __updateEditorLanguageMapping(self):
+        """
+        Private method to update the editor language to connection mapping.
+        """
+        self.__editorLanguageMapping = {}
+        for name in self.connectionNames():
+            if name == "Python3":
+                self.__editorLanguageMapping.update({
+                    "Python3": "Python3",
+                    "MicroPython": "Python3",
+                    "Pygments|Python": "Python3",
+                    "Pygments|Python 2.x": "Python3",
+                    "Cython": "Python3",
+                })
+    
+    def isSupportedLanguage(self, language):
+        """
+        Public method to check, if the given language is supported.
+        
+        @param language editor programming language to check
+        @type str
+        @return flag indicating the support status
+        @rtype bool
+        """
+        return language in self.__editorLanguageMapping
+    
+    def __idString(self, editor):
+        """
+        Private method to determine the ID string for the back-end.
+        
+        @param editor reference to the editor to determine the ID string for
+        @type Editor
+        @return ID string
+        @rtype str
+        """
+        idString = ""
+        
+        language = editor.getLanguage()
+        if (
+            self.__ericProject.isOpen() and
+            self.__ericProject.getProjectLanguage() == language
+        ):
+            filename = editor.getFileName()
+            if self.__ericProject.isProjectSource(filename):
+                idString = JediServer.IdProject
+        
+        if not idString and language in self.__editorLanguageMapping:
+            idString = self.__editorLanguageMapping[language]
+        
+        return idString
+    
+    def __prepareData(self, editor):
+        """
+        Private method to gather data about current cursor position.
+        
+        @param editor reference to the editor object, that called this method
+        @type Editor
+        @return tuple of filename, line, index, source
+        @rtype tuple (str, int, int, str)
+        """
+        filename = editor.getFileName()
+        line, index = editor.getCursorPosition()
+        line += 1       # jedi line numbers are 1 based
+        source = editor.text()
+        return filename, line, index, source
+    
+    def requestCompletions(self, editor, context, acText):
+        """
+        Public method to request a list of possible completions.
+        
+        @param editor reference to the editor object, that called this method
+        @type Editor
+        @param context flag indicating to autocomplete a context
+        @type bool
+        @param acText text to be completed
+        @type str
+        """
+        if not Preferences.getJedi("JediCompletionsEnabled"):
+            return
+        
+        idString = self.__idString(editor)
+        if not idString:
+            return
+        
+        filename, line, index, source = self.__prepareData(editor)
+        fuzzy = Preferences.getJedi("JediFuzzyCompletionsEnabled")
+        
+        self.__ensureActive(idString)
+        
+        self.sendJson("getCompletions", {
+            "FileName": filename,
+            "Source": source,
+            "Line": line,
+            "Index": index,
+            "Fuzzy": fuzzy,
+            "CompletionText": acText,
+        }, idString=idString)
+    
+    def __processCompletionsResult(self, result):
+        """
+        Private method to process the completions sent by the client.
+        
+        @param result dictionary containing the result sent by the client
+        @type dict
+        """
+        names = []
+        for completion in result["Completions"]:
+            name = completion['Name']
+            context = completion['FullName']
+            if context.endswith(".{0}".format(name)):
+                context = context.rsplit(".", 1)[0]
+            if context:
+                name = "{0} ({1})".format(name, context)
+            
+            name += JediServer.PictureIDs.get(completion['CompletionType'], '')
+            names.append(name)
+        
+        if "Error" not in result:
+            editor = self.__vm.getOpenEditor(result["FileName"])
+            if editor is not None:
+                editor.completionsListReady(names,
+                                            result["CompletionText"])
+    
+    def getCallTips(self, editor, pos, commas):
+        """
+        Public method to calculate calltips.
+        
+        @param editor reference to the editor object, that called this method
+        @type Editor
+        @param pos position in the text for the calltip
+        @type int
+        @param commas minimum number of commas contained in the calltip
+        @type int
+        @return list of possible calltips
+        @rtype list of str
+        """
+        if not Preferences.getJedi("JediCalltipsEnabled"):
+            return []
+        
+        # reset the calltips buffer
+        self.__calltips = None
+        
+        idString = self.__idString(editor)
+        if not idString:
+            return []
+        
+        filename, line, index, source = self.__prepareData(editor)
+        
+        self.__ensureActive(idString)
+        self.sendJson("getCallTips", {
+            "FileName": filename,
+            "Source": source,
+            "Line": line,
+            "Index": index,
+        }, idString=idString)
+        
+        # emulate the synchronous behaviour
+        timer = QTimer()
+        timer.setSingleShot(True)
+        timer.start(5000)           # 5s timeout
+        while self.__calltips is None and timer.isActive():
+            QCoreApplication.processEvents()
+        
+        return [] if self.__calltips is None else self.__calltips
+    
+    def __processCallTipsResult(self, result):
+        """
+        Private method to process the calltips sent by the client.
+        
+        @param result dictionary containing the result sent by the client
+        @type dict
+        """
+        if "Error" in result:
+            self.__calltips = []
+        else:
+            self.__calltips = result["CallTips"]
+    
+    def requestCodeDocumentation(self, editor):
+        """
+        Public method to request source code documentation for the given
+        editor.
+        
+        @param editor reference to the editor to get source code documentation
+            for
+        @type Editor
+        """
+        if self.__documentationViewer is None:
+            return
+        
+        idString = self.__idString(editor)
+        
+        if not idString:
+            language = editor.getLanguage()
+            warning = (
+                self.tr("Language <b>{0}</b> is not supported.")
+                .format(language)
+            )
+            self.__documentationViewer.documentationReady(
+                warning, isWarning=True)
+            return
+        
+        filename, line, index, source = self.__prepareData(editor)
+        sourceLines = source.splitlines()
+        # Correct index if cursor is standing after an opening bracket
+        if line > 0 and index > 0 and sourceLines[line - 1][index - 1] == '(':
+            index -= 1
+        
+        self.__ensureActive(idString)
+        self.sendJson("getDocumentation", {
+            "FileName": filename,
+            "Source": source,
+            "Line": line,
+            "Index": index,
+        }, idString=idString)
+    
+    def __processDocumentationResult(self, result):
+        """
+        Private method to process the documentation sent by the client.
+        
+        @param result dictionary containing the result sent by the client
+        @type dict with keys 'name', 'module', 'argspec', 'docstring'
+        """
+        if self.__documentationViewer is None:
+            return
+    
+        docu = None
+        
+        if "Error" not in result:
+            docu = result["DocumentationDict"]
+            docu["note"] = (
+                self.tr("Present in <i>{0}</i> module")
+                .format(docu["module"]))
+        
+        if docu is None:
+            msg = self.tr("No documentation available.")
+            self.__documentationViewer.documentationReady(
+                msg, isDocWarning=True)
+        else:
+            self.__documentationViewer.documentationReady(docu)
+    
+    def gotoDefinition(self, editor):
+        """
+        Public slot to find the definition for the word at the cursor position
+        and go to it.
+        
+        Note: This is executed upon a mouse click sequence.
+        
+        @param editor reference to the calling editor
+        @type Editor
+        """
+        if not Preferences.getJedi("MouseClickEnabled"):
+            return
+        
+        idString = self.__idString(editor)
+        if not idString:
+            return
+        
+        filename, line, index, source = self.__prepareData(editor)
+        
+        self.__ensureActive(idString)
+        
+        euuid = str(uuid.uuid4())
+        self.__editors[euuid] = editor
+        
+        self.sendJson("gotoDefinition", {
+            "FileName": filename,
+            "Source": source,
+            "Line": line,
+            "Index": index,
+            "Uuid": euuid,
+        }, idString=idString)
+    
+    def __processGotoDefinitionResult(self, result):
+        """
+        Private method callback for the goto definition result.
+        
+        @param result dictionary containing the result data
+        @type dict
+        """
+        euuid = result["Uuid"]
+        if "Error" not in result:
+            # ignore errors silently
+            location = result["GotoDefinitionDict"]
+            if location:
+                try:
+                    editor = self.__editors[euuid]
+                except KeyError:
+                    editor = None
+                
+                if (
+                    editor is not None and
+                    editor.getFileName() == location["ModulePath"] and
+                    editor.getCursorPosition()[0] + 1 == location["Line"]
+                ):
+                    # this was a click onto the definition line
+                    # -> get references
+                    idString = self.__idString(editor)
+                    filename, line, index, source = self.__prepareData(editor)
+                    self.sendJson("gotoReferences", {
+                        "FileName": filename,
+                        "Source": source,
+                        "Line": line,
+                        "Index": index,
+                        "Uuid": euuid,
+                    }, idString=idString)
+                    return
+                
+                self.__vm.openSourceFile(location["ModulePath"],
+                                         location["Line"],
+                                         addNext=True)
+            else:
+                ericApp().getObject("UserInterface").statusBar().showMessage(
+                    self.tr('Jedi: No definition found'), 5000)
+        
+        with contextlib.suppress(KeyError):
+            del self.__editors[euuid]
+    
+    def __processGotoReferencesResult(self, result):
+        """
+        Private method callback for the goto references result.
+        
+        @param result dictionary containing the result data
+        @type dict
+        """
+        euuid = result["Uuid"]
+        with contextlib.suppress(ImportError):
+            from QScintilla.Editor import ReferenceItem
+            
+            if "Error" not in result:
+                # ignore errors silently
+                references = result["GotoReferencesList"]
+                if references:
+                    try:
+                        editor = self.__editors[euuid]
+                    except KeyError:
+                        editor = None
+                    if editor is not None:
+                        referenceItemsList = [
+                            ReferenceItem(
+                                modulePath=ref["ModulePath"],
+                                codeLine=ref["Code"],
+                                line=ref["Line"],
+                                column=ref["Column"],
+                            ) for ref in references
+                        ]
+                        editor.gotoReferenceHandler(referenceItemsList)
+        
+        with contextlib.suppress(KeyError):
+            del self.__editors[euuid]
+    
+    def hoverHelp(self, editor, line, index):
+        """
+        Public method to initiate the display of mouse hover help.
+        
+        @param editor reference to the calling editor
+        @type Editor
+        @param line line number (zero based)
+        @type int
+        @param index index within the line (zero based)
+        @type int
+        """
+        idString = self.__idString(editor)
+        if not idString:
+            return
+        
+        filename = editor.getFileName()
+        line += 1       # jedi line numbers are 1 based
+        source = editor.text()
+        
+        self.__ensureActive(idString)
+        
+        euuid = str(uuid.uuid4())
+        self.__editors[euuid] = editor
+        
+        self.sendJson("hoverHelp", {
+            "FileName": filename,
+            "Source": source,
+            "Line": line,
+            "Index": index,
+            "Uuid": euuid,
+        }, idString=idString)
+    
+    def __processHoverHelpResult(self, result):
+        """
+        Private method callback for the goto definition result.
+        
+        @param result dictionary containing the result data
+        @type dict
+        """
+        euuid = result["Uuid"]
+        if "Error" not in result:
+            # ignore errors silently
+            helpText = result["HoverHelp"]
+            if helpText:
+                with contextlib.suppress(KeyError):
+                    self.__editors[euuid].showMouseHoverHelpData(
+                        result["Line"] - 1,
+                        result["Index"],
+                        helpText
+                    )
+            else:
+                ericApp().getObject("UserInterface").statusBar().showMessage(
+                    self.tr('Jedi: No mouse hover help found'), 5000)
+        
+        with contextlib.suppress(KeyError):
+            del self.__editors[euuid]
+    
+    #######################################################################
+    ## Methods below handle the network connection
+    #######################################################################
+    
+    def handleCall(self, method, params):
+        """
+        Public method to handle a method call from the client.
+        
+        @param method requested method name
+        @type str
+        @param params dictionary with method specific parameters
+        @type dict
+        """
+        self.__methodMapping[method](params)
+    
+    def __processClientException(self, params):
+        """
+        Private method to handle exceptions of the refactoring client.
+        
+        @param params dictionary containing the exception data
+        @type dict
+        """
+        if params["ExceptionType"] == "ProtocolError":
+            self.__ui.appendToStderr(
+                self.tr("The data received from the Jedi server could not be"
+                        " decoded. Please report this issue with the received"
+                        " data to the eric bugs email address.\n"
+                        "Error: {0}\n"
+                        "Data:\n{1}\n").format(
+                    params["ExceptionValue"],
+                    params["ProtocolData"]))
+        else:
+            self.__ui.appendToStderr(
+                self.tr("An exception happened in the Jedi client. Please"
+                        " report it to the eric bugs email address.\n"
+                        "Exception: {0}\n"
+                        "Value: {1}\n"
+                        "Traceback: {2}\n").format(
+                    params["ExceptionType"],
+                    params["ExceptionValue"],
+                    params["Traceback"]))
+    
+    def __startJediClient(self, interpreter, idString, clientEnv):
+        """
+        Private method to start the Jedi client with the given interpreter.
+        
+        @param interpreter interpreter to be used for the Jedi client
+        @type str
+        @param idString id of the client to be started
+        @type str
+        @param clientEnv dictionary with environment variables to run the
+            interpreter with
+        @type dict
+        @return flag indicating a successful start of the client
+        @rtype bool
+        """
+        ok = False
+        
+        if interpreter:
+            client = os.path.join(os.path.dirname(__file__),
+                                  "JediClient.py")
+            ok, exitCode = self.startClient(
+                interpreter, client,
+                [Globals.getPythonLibraryDirectory()],
+                idString=idString, environment=clientEnv)
+            if not ok:
+                if exitCode == 42:
+                    self.__ui.appendToStderr("JediServer: " + self.tr(
+                        "The jedi and/or parso library is not installed.\n"
+                    ))
+                else:
+                    self.__ui.appendToStderr("JediServer: " + self.tr(
+                        "'{0}' is not supported because the configured"
+                        " interpreter could not be started.\n"
+                    ).format(idString))
+        else:
+            self.__ui.appendToStderr("JediServer: " + self.tr(
+                "'{0}' is not supported because no suitable interpreter is"
+                " configured.\n"
+            ).format(idString))
+        
+        return ok
+    
+    def __ensureActive(self, idString):
+        """
+        Private method to ensure, that the requested client is active.
+        
+        A non-active client will be started.
+        
+        @param idString id of the client to be checked
+        @type str
+        @return flag indicating an active client
+        @rtype bool
+        """
+        ok = idString in self.connectionNames()
+        if not ok:
+            # client is not running
+            if idString == JediServer.IdProject:
+                interpreter, clientEnv = self.__interpreterForProject()
+            else:
+                interpreter = ""
+                venvName = ""
+                clientEnv = os.environ.copy()
+                if "PATH" in clientEnv:
+                    clientEnv["PATH"] = self.__ui.getOriginalPathString()
+                # new code using virtual environments
+                venvManager = ericApp().getObject("VirtualEnvManager")
+                if idString == "Python3":
+                    venvName = Preferences.getDebugger("Python3VirtualEnv")
+                    if not venvName:
+                        venvName, _ = venvManager.getDefaultEnvironment()
+                if venvName:
+                    interpreter = venvManager.getVirtualenvInterpreter(
+                        venvName)
+                    execPath = venvManager.getVirtualenvExecPath(venvName)
+                    
+                    # build a suitable environment
+                    if execPath:
+                        if "PATH" in clientEnv:
+                            clientEnv["PATH"] = os.pathsep.join(
+                                [execPath, clientEnv["PATH"]])
+                        else:
+                            clientEnv["PATH"] = execPath
+            if interpreter:
+                ok = self.__startJediClient(interpreter, idString, clientEnv)
+            else:
+                ok = False
+        return ok
+    
+    def __interpreterForProject(self):
+        """
+        Private method to determine the interpreter for the current project and
+        the environment to run it.
+        
+        @return tuple containing the interpreter of the current project and the
+            environment variables
+        @rtype tuple of (str, dict)
+        """
+        projectLanguage = self.__ericProject.getProjectLanguage()
+        interpreter = ""
+        clientEnv = os.environ.copy()
+        if "PATH" in clientEnv:
+            clientEnv["PATH"] = self.__ui.getOriginalPathString()
+        
+        if (projectLanguage.startswith("Python") or
+                projectLanguage == "MicroPython"):
+            # new code using virtual environments
+            venvManager = ericApp().getObject("VirtualEnvManager")
+            
+            # get virtual environment from project first
+            venvName = self.__ericProject.getDebugProperty("VIRTUALENV")
+            if not venvName:
+                # get it from debugger settings next
+                if projectLanguage in ("Python3", "MicroPython", "Cython"):
+                    venvName = Preferences.getDebugger("Python3VirtualEnv")
+                    if not venvName:
+                        venvName, _ = venvManager.getDefaultEnvironment()
+                else:
+                    venvName = ""
+            if venvName:
+                interpreter = venvManager.getVirtualenvInterpreter(
+                    venvName)
+                execPath = venvManager.getVirtualenvExecPath(venvName)
+                
+                # build a suitable environment
+                if execPath:
+                    if "PATH" in clientEnv:
+                        clientEnv["PATH"] = os.pathsep.join(
+                            [execPath, clientEnv["PATH"]])
+                    else:
+                        clientEnv["PATH"] = execPath
+        
+        return interpreter, clientEnv
+    
+    @pyqtSlot()
+    def handleNewConnection(self):
+        """
+        Public slot for new incoming connections from a client.
+        """
+        super().handleNewConnection()
+        
+        self.__updateEditorLanguageMapping()
+    
+    def activate(self):
+        """
+        Public method to activate the Jedi server.
+        """
+        self.__documentationViewer = self.__ui.documentationViewer()
+        if self.__documentationViewer is not None:
+            self.__documentationViewer.registerProvider(
+                "jedi", self.tr("Jedi"), self.requestCodeDocumentation,
+                self.isSupportedLanguage)
+        
+        self.__ericProject.projectOpened.connect(self.__projectOpened)
+        self.__ericProject.projectClosed.connect(self.__projectClosed)
+    
+    def deactivate(self):
+        """
+        Public method to deactivate the code assist server.
+        """
+        """
+        Public method to shut down the code assist server.
+        """
+        if self.__documentationViewer is not None:
+            self.__documentationViewer.unregisterProvider("jedi")
+        
+        with contextlib.suppress(TypeError):
+            self.__ericProject.projectOpened.disconnect(self.__projectOpened)
+            self.__ericProject.projectClosed.disconnect(self.__projectClosed)
+        
+        self.stopAllClients()
+    
+    @pyqtSlot()
+    def __projectOpened(self):
+        """
+        Private slot to handle the projectOpened signal.
+        """
+        self.__ensureActive(JediServer.IdProject)
+        self.sendJson("openProject", {
+            "ProjectPath": self.__ericProject.getProjectPath(),
+        }, idString=JediServer.IdProject)
+    
+    @pyqtSlot()
+    def __projectClosed(self):
+        """
+        Private slot to handle the projectClosed signal.
+        """
+        self.__ensureActive(JediServer.IdProject)
+        self.sendJson("closeProject", {}, idString=JediServer.IdProject)
+        
+        self.stopClient(idString=JediServer.IdProject)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/JediInterface/__init__.py	Sat Sep 11 19:47:02 2021 +0200
@@ -0,0 +1,13 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Package implementing the jedi assistant interface.
+
+This package implements just the interface for the eric7 IDE. The
+underlying functionality is provided by the jedi library
+(<a href="https://github.com/davidhalter/jedi">
+https://github.com/davidhalter/jedi</a>).
+"""
--- a/eric7/Preferences/ConfigurationDialog.py	Sat Sep 11 19:40:25 2021 +0200
+++ b/eric7/Preferences/ConfigurationDialog.py	Sat Sep 11 19:47:02 2021 +0200
@@ -239,20 +239,6 @@
                 "editorAPIsPage":
                 [self.tr("APIs"), "preferences-api",
                  "EditorAPIsPage", "0editorPage", None],
-                "editorAutocompletionPage":
-                [self.tr("Autocompletion"),
-                 "preferences-autocompletion",
-                 "EditorAutocompletionPage", "0editorPage", None],
-                "editorAutocompletionQScintillaPage":
-                [self.tr("QScintilla"), "qscintilla",
-                 "EditorAutocompletionQScintillaPage",
-                 "editorAutocompletionPage", None],
-                "editorCalltipsPage":
-                [self.tr("Calltips"), "preferences-calltips",
-                 "EditorCalltipsPage", "0editorPage", None],
-                "editorCalltipsQScintillaPage":
-                [self.tr("QScintilla"), "qscintilla",
-                 "EditorCalltipsQScintillaPage", "editorCalltipsPage", None],
                 "editorDocViewerPage":
                 [self.tr("Documentation Viewer"), "codeDocuViewer",
                  "EditorDocViewerPage", "0editorPage", None],
@@ -283,6 +269,31 @@
                 [self.tr("Exporters"), "preferences-exporters",
                  "EditorExportersPage", "0editorPage", None],
                 
+                # TODO: change eric Assistant and rope
+                "1editorAutocompletionPage":
+                [self.tr("Autocompletion"),
+                 "preferences-autocompletion",
+                 "EditorAutocompletionPage", "0editorPage", None],
+                "editorAutocompletionQScintillaPage":
+                [self.tr("QScintilla"), "qscintilla",
+                 "EditorAutocompletionQScintillaPage",
+                 "1editorAutocompletionPage", None],
+                "editorAutocompletionJediPage":
+                [self.tr("Jedi"), "jedi",
+                 "EditorAutoCompletionJediPage",
+                 "1editorAutocompletionPage", None],
+                
+                # TODO: change eric Assistant and rope
+                "1editorCalltipsPage":
+                [self.tr("Calltips"), "preferences-calltips",
+                 "EditorCalltipsPage", "0editorPage", None],
+                "editorCalltipsQScintillaPage":
+                [self.tr("QScintilla"), "qscintilla",
+                 "EditorCalltipsQScintillaPage", "1editorCalltipsPage", None],
+                "editorCalltipsJediPage":
+                [self.tr("Jedi"), "jedi",
+                 "EditorCallTipsJediPage", "1editorCalltipsPage", None],
+                
                 "1editorLexerPage":
                 [self.tr("Highlighters"),
                  "preferences-highlighting-styles",
@@ -306,6 +317,10 @@
                 [self.tr("Mouse Click Handlers"),
                  "preferences-mouse-click-handler",
                  "EditorMouseClickHandlerPage", "0editorPage", None],
+                "editorMouseClickHandlerJediPage":
+                [self.tr("Jedi"), "jedi",
+                 "EditorMouseClickHandlerJediPage",
+                 "1editorMouseClickHandlers", None],
                 
                 "0helpPage":
                 [self.tr("Help"), "preferences-help",
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Preferences/ConfigurationPages/EditorAutoCompletionJediPage.py	Sat Sep 11 19:47:02 2021 +0200
@@ -0,0 +1,57 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2015 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the Jedi Auto-completion configuration page.
+"""
+
+from Preferences.ConfigurationPages.ConfigurationPageBase import (
+    ConfigurationPageBase
+)
+from .Ui_EditorAutoCompletionJediPage import Ui_EditorAutoCompletionJediPage
+
+import Preferences
+
+
+class EditorAutoCompletionJediPage(ConfigurationPageBase,
+                                   Ui_EditorAutoCompletionJediPage):
+    """
+    Class implementing the Jedi Auto-completion configuration page.
+    """
+    def __init__(self):
+        """
+        Constructor
+        """
+        super().__init__()
+        self.setupUi(self)
+        self.setObjectName("EditorAutoCompletionJediPage")
+        
+        # set initial values
+        self.jediAutocompletionCheckBox.setChecked(
+            Preferences.getJedi("JediCompletionsEnabled"))
+        self.jediFuzzyAutocompletionCheckBox.setChecked(
+            Preferences.getJedi("JediFuzzyCompletionsEnabled"))
+    
+    def save(self):
+        """
+        Public slot to save the Jedi Auto-completion configuration.
+        """
+        Preferences.setJedi(
+            "JediCompletionsEnabled",
+            self.jediAutocompletionCheckBox.isChecked())
+        Preferences.setJedi(
+            "JediFuzzyCompletionsEnabled",
+            self.jediFuzzyAutocompletionCheckBox.isChecked())
+
+
+def create(dlg):
+    """
+    Module function to create the configuration page.
+    
+    @param dlg reference to the configuration dialog
+    @return reference to the instantiated page (ConfigurationPageBase)
+    """
+    page = EditorAutoCompletionJediPage()
+    return page
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Preferences/ConfigurationPages/EditorAutoCompletionJediPage.ui	Sat Sep 11 19:47:02 2021 +0200
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>EditorAutoCompletionJediPage</class>
+ <widget class="QWidget" name="EditorAutoCompletionJediPage">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QLabel" name="headerLabel">
+     <property name="text">
+      <string>&lt;b&gt;Configure Jedi Completion&lt;/b&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="Line" name="line15">
+     <property name="frameShape">
+      <enum>QFrame::HLine</enum>
+     </property>
+     <property name="frameShadow">
+      <enum>QFrame::Sunken</enum>
+     </property>
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QCheckBox" name="jediAutocompletionCheckBox">
+     <property name="toolTip">
+      <string>Select, whether the jedi autocompletion support shall be enabled.</string>
+     </property>
+     <property name="text">
+      <string>Enable autocompletion</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QCheckBox" name="jediFuzzyAutocompletionCheckBox">
+     <property name="enabled">
+      <bool>false</bool>
+     </property>
+     <property name="text">
+      <string>Enable fuzzy completion</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>161</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>jediAutocompletionCheckBox</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>jediFuzzyAutocompletionCheckBox</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>86</x>
+     <y>52</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>103</x>
+     <y>88</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
--- a/eric7/Preferences/ConfigurationPages/EditorAutocompletionQScintillaPage.py	Sat Sep 11 19:40:25 2021 +0200
+++ b/eric7/Preferences/ConfigurationPages/EditorAutocompletionQScintillaPage.py	Sat Sep 11 19:47:02 2021 +0200
@@ -66,7 +66,7 @@
             Preferences.setEditor(
                 "AutoCompletionSource",
                 QsciScintilla.AutoCompletionSource.AcsAll)
-    
+
 
 def create(dlg):
     """
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Preferences/ConfigurationPages/EditorCallTipsJediPage.py	Sat Sep 11 19:47:02 2021 +0200
@@ -0,0 +1,50 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2015 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the Jedi Calltips configuration page.
+"""
+
+from Preferences.ConfigurationPages.ConfigurationPageBase import (
+    ConfigurationPageBase
+)
+from .Ui_EditorCallTipsJediPage import Ui_EditorCallTipsJediPage
+
+import Preferences
+
+
+class EditorCallTipsJediPage(ConfigurationPageBase, Ui_EditorCallTipsJediPage):
+    """
+    Class implementing the Jedi Calltips configuration page.
+    """
+    def __init__(self):
+        """
+        Constructor
+        """
+        super().__init__()
+        self.setupUi(self)
+        self.setObjectName("EditorCallTipsJediPage")
+        
+        # set initial values
+        self.jediCalltipsCheckBox.setChecked(
+            Preferences.getJedi("JediCalltipsEnabled"))
+        
+    def save(self):
+        """
+        Public slot to save the Jedi Calltips configuration.
+        """
+        Preferences.setJedi(
+            "JediCalltipsEnabled", self.jediCalltipsCheckBox.isChecked())
+
+
+def create(dlg):
+    """
+    Module function to create the configuration page.
+    
+    @param dlg reference to the configuration dialog
+    @return reference to the instantiated page (ConfigurationPageBase)
+    """
+    page = EditorCallTipsJediPage()
+    return page
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Preferences/ConfigurationPages/EditorCallTipsJediPage.ui	Sat Sep 11 19:47:02 2021 +0200
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>EditorCallTipsJediPage</class>
+ <widget class="QWidget" name="EditorCallTipsJediPage">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QLabel" name="headerLabel">
+     <property name="text">
+      <string>&lt;b&gt;Configure Jedi Calltips&lt;/b&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="Line" name="line15">
+     <property name="frameShape">
+      <enum>QFrame::HLine</enum>
+     </property>
+     <property name="frameShadow">
+      <enum>QFrame::Sunken</enum>
+     </property>
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QCheckBox" name="jediCalltipsCheckBox">
+     <property name="toolTip">
+      <string>Select, whether the jedi calltip support shall be enabled.</string>
+     </property>
+     <property name="text">
+      <string>Enable calltip</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>220</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Preferences/ConfigurationPages/EditorMouseClickHandlerJediPage.py	Sat Sep 11 19:47:02 2021 +0200
@@ -0,0 +1,85 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2015 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the Jedi Mouse Click Handler configuration page.
+"""
+
+from PyQt6.QtCore import pyqtSlot
+from PyQt6.QtWidgets import QDialog
+
+from Preferences.ConfigurationPages.ConfigurationPageBase import (
+    ConfigurationPageBase
+)
+
+from .Ui_EditorMouseClickHandlerJediPage import (
+    Ui_EditorMouseClickHandlerJediPage
+)
+
+from Utilities import MouseUtilities
+
+import Preferences
+from Preferences.MouseClickDialog import MouseClickDialog
+
+
+class EditorMouseClickHandlerJediPage(ConfigurationPageBase,
+                                      Ui_EditorMouseClickHandlerJediPage):
+    """
+    Class implementing the Jedi Mouse Click Handler configuration page.
+    """
+    def __init__(self):
+        """
+        Constructor
+        """
+        super().__init__()
+        self.setupUi(self)
+        self.setObjectName("MouseClickHandlerJediPage")
+        
+        # set initial values
+        self.__modifiers = {
+            "goto": (
+                Preferences.getJedi("MouseClickGotoModifiers"),
+                Preferences.getJedi("MouseClickGotoButton")
+            )
+        }
+        
+        self.jediClickHandlerCheckBox.setChecked(
+            Preferences.getJedi("MouseClickEnabled"))
+        self.gotoClickEdit.setText(MouseUtilities.MouseButtonModifier2String(
+            *self.__modifiers["goto"]))
+    
+    def save(self):
+        """
+        Public slot to save the Jedi Mouse Click Handler configuration.
+        """
+        Preferences.setJedi(
+            "MouseClickEnabled", self.jediClickHandlerCheckBox.isChecked())
+        Preferences.setJedi(
+            "MouseClickGotoModifiers", self.__modifiers["goto"][0])
+        Preferences.setJedi(
+            "MouseClickGotoButton", self.__modifiers["goto"][1])
+    
+    @pyqtSlot()
+    def on_changeGotoButton_clicked(self):
+        """
+        Private slot to change the 'goto' mouse click sequence.
+        """
+        dlg = MouseClickDialog(*self.__modifiers["goto"])
+        if dlg.exec() == QDialog.DialogCode.Accepted:
+            self.__modifiers["goto"] = dlg.getClick()
+            self.gotoClickEdit.setText(
+                MouseUtilities.MouseButtonModifier2String(
+                    *self.__modifiers["goto"]))
+
+
+def create(dlg):
+    """
+    Module function to create the configuration page.
+    
+    @param dlg reference to the configuration dialog
+    @return reference to the instantiated page (ConfigurationPageBase)
+    """
+    page = EditorMouseClickHandlerJediPage()
+    return page
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Preferences/ConfigurationPages/EditorMouseClickHandlerJediPage.ui	Sat Sep 11 19:47:02 2021 +0200
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>EditorMouseClickHandlerJediPage</class>
+ <widget class="QWidget" name="EditorMouseClickHandlerJediPage">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QLabel" name="headerLabel">
+     <property name="text">
+      <string>&lt;b&gt;Configure Jedi Mouse Click Handler Support&lt;/b&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="Line" name="line15">
+     <property name="frameShape">
+      <enum>QFrame::HLine</enum>
+     </property>
+     <property name="frameShadow">
+      <enum>QFrame::Sunken</enum>
+     </property>
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QCheckBox" name="jediClickHandlerCheckBox">
+     <property name="toolTip">
+      <string>Select, whether the jedi mouse click handler support shall be enabled.</string>
+     </property>
+     <property name="text">
+      <string>Enable Mouse Click Handler</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="groupBox">
+     <property name="title">
+      <string>Go To Definition</string>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout">
+      <item>
+       <widget class="QLabel" name="label">
+        <property name="text">
+         <string>Click Sequence:</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLineEdit" name="gotoClickEdit">
+        <property name="focusPolicy">
+         <enum>Qt::NoFocus</enum>
+        </property>
+        <property name="toolTip">
+         <string>Shows the mouse click sequence</string>
+        </property>
+        <property name="readOnly">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QPushButton" name="changeGotoButton">
+        <property name="toolTip">
+         <string>Press to open a dialog to configure the mouse click sequence</string>
+        </property>
+        <property name="text">
+         <string>Change...</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>147</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
--- a/eric7/Preferences/ProgramsDialog.py	Sat Sep 11 19:40:25 2021 +0200
+++ b/eric7/Preferences/ProgramsDialog.py	Sat Sep 11 19:47:02 2021 +0200
@@ -297,7 +297,24 @@
                 self.tr("MicroPython - PyBoard Flasher"), exe, '--version',
                 'dfu-util', -1)
             
-            # 10. do the plugin related programs
+            # 10. do the jedi related entries
+            try:
+                import jedi
+                try:
+                    text = os.pathdirname(jedi.__file__)
+                except AttributeError:
+                    text = "jedi"
+                try:
+                    version = jedi.__version__
+                except AttributeError:
+                    version = self.tr("(unknown)")
+            except (ImportError, AttributeError, OSError):
+                text = "jedi"
+                version = ""
+            self.__createEntry(
+                self.tr("Code Assistant - Jedi"), text, version)
+            
+            # 11. do the plugin related programs
             pm = ericApp().getObject("PluginManager")
             for info in pm.getPluginExeDisplayData():
                 if info["programEntry"]:
--- a/eric7/Preferences/__init__.py	Sat Sep 11 19:40:25 2021 +0200
+++ b/eric7/Preferences/__init__.py	Sat Sep 11 19:47:02 2021 +0200
@@ -1506,6 +1506,18 @@
         "DisViewerLabeledColor": QColor(Qt.GlobalColor.darkGreen),
         "DisViewerExpandCodeInfoDetails": False,
     }
+    
+    # defaults for the jedi interface
+    jediDefaults = {
+        "JediCompletionsEnabled": True,
+        "JediFuzzyCompletionsEnabled": False,
+        
+        "JediCalltipsEnabled": True,
+        
+        "MouseClickEnabled": True,
+        "MouseClickGotoModifiers": Qt.KeyboardModifier.ControlModifier,
+        "MouseClickGotoButton": Qt.MouseButton.LeftButton,
+    }
 
 
 def readToolGroups():
@@ -3481,7 +3493,7 @@
 
 def setMicroPython(key, value):
     """
-    Module function to store the pip MicroPython settings.
+    Module function to store the MicroPython settings.
     
     @param key the key of the setting to be set
     @param value the value to be set
@@ -3496,6 +3508,37 @@
             value)
 
 
+def getJedi(key):
+    """
+    Function to retrieve the Jedi Assistant related settings.
+    
+    @param key the key of the value to get
+    @type str
+    @return the requested jedi assistant setting
+    @rtype Any
+    """
+    if key in ["JediCompletionsEnabled", "JediFuzzyCompletionsEnabled",
+               "JediCalltipsEnabled", "MouseClickEnabled"]:
+        return toBool(Prefs.settings.value(
+            "AssistantJedi/" + key, Prefs.jediDefaults[key]))
+    else:
+        return Prefs.settings.value(
+            "AssistantJedi/" + key, Prefs.jediDefaults[key])
+
+
+def setJedi(key, value):
+    """
+    Public method to store the various refactoring settings.
+    
+    @param key the key of the setting to be set
+    @type str
+    @param value the value to be set
+    @type Any
+    """
+    Prefs.settings.setValue(
+        "AssistantJedi/" + key, value)
+
+
 def getGeometry(key):
     """
     Module function to retrieve the display geometry.
--- a/eric7/UI/UserInterface.py	Sat Sep 11 19:40:25 2021 +0200
+++ b/eric7/UI/UserInterface.py	Sat Sep 11 19:47:02 2021 +0200
@@ -927,6 +927,12 @@
         else:
             logging.debug("Numbers Viewer disabled")
             self.numbersViewer = None
+        
+        # Create the Jedi Assistant
+        logging.debug("Creating Jedi Assistant...")
+        from JediInterface.AssistantJedi import AssistantJedi
+        self.jediAssistant = AssistantJedi(
+            self, self.viewmanager, self.project)
     
     def __createLayout(self):
         """
--- a/eric7/eric7.py	Sat Sep 11 19:40:25 2021 +0200
+++ b/eric7/eric7.py	Sat Sep 11 19:47:02 2021 +0200
@@ -422,7 +422,6 @@
 #
 # Generic TODOs:
 #
-# TODO: convert the Jedi plugin to a fixed part of eric
 # TODO: add an embedded help viewer based on QWebEngineView (right side)
 # TODO: make VCS status an embedded view (left side)
 # TODO: add a VCS diff view in the central area (view manager) (?)
--- a/eric7/i18n/eric7_cs.ts	Sat Sep 11 19:40:25 2021 +0200
+++ b/eric7/i18n/eric7_cs.ts	Sat Sep 11 19:47:02 2021 +0200
@@ -6038,7 +6038,7 @@
       <translation>Grafika</translation>
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="435" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="450" />
       <location filename="../Preferences/ConfigurationDialog.py" line="163" />
       <source>Hex Editor</source>
       <translation type="unfinished" />
@@ -6069,7 +6069,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="382" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="397" />
       <location filename="../Preferences/ConfigurationDialog.py" line="181" />
       <source>Network</source>
       <translation>Síť</translation>
@@ -6090,7 +6090,7 @@
       <translation>Plugin Manažer</translation>
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="385" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="400" />
       <location filename="../Preferences/ConfigurationDialog.py" line="195" />
       <source>Printer</source>
       <translation>Tiskárna</translation>
@@ -6111,7 +6111,7 @@
       <translation>Qt</translation>
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="388" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="403" />
       <location filename="../Preferences/ConfigurationDialog.py" line="207" />
       <source>Security</source>
       <translation type="unfinished">Bezpečnost</translation>
@@ -6132,7 +6132,7 @@
       <translation>Šablony</translation>
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="422" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="437" />
       <location filename="../Preferences/ConfigurationDialog.py" line="219" />
       <source>Tray Starter</source>
       <translation type="unfinished" />
@@ -6148,7 +6148,7 @@
       <translation>Debugger</translation>
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="260" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="246" />
       <location filename="../Preferences/ConfigurationDialog.py" line="230" />
       <source>General</source>
       <translation>Hlavní</translation>
@@ -6170,182 +6170,189 @@
     </message>
     <message>
       <location filename="../Preferences/ConfigurationDialog.py" line="243" />
-      <source>Autocompletion</source>
-      <translation>Autodoplňování</translation>
-    </message>
-    <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="254" />
-      <location filename="../Preferences/ConfigurationDialog.py" line="247" />
-      <source>QScintilla</source>
-      <translation>QScintilla</translation>
-    </message>
-    <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="251" />
-      <source>Calltips</source>
-      <translation>Rychlé tipy</translation>
-    </message>
-    <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="257" />
       <source>Documentation Viewer</source>
       <translation type="unfinished" />
     </message>
     <message>
+      <location filename="../Preferences/ConfigurationDialog.py" line="249" />
+      <source>Filehandling</source>
+      <translation>Manažer souborů</translation>
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationDialog.py" line="253" />
+      <source>Searching</source>
+      <translation>Vyhledávání</translation>
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationDialog.py" line="423" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="376" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="256" />
+      <source>Spell checking</source>
+      <translation>Kontrola pravopisu</translation>
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationDialog.py" line="260" />
+      <source>Style</source>
+      <translation>Styl</translation>
+    </message>
+    <message>
       <location filename="../Preferences/ConfigurationDialog.py" line="263" />
-      <source>Filehandling</source>
-      <translation>Manažer souborů</translation>
-    </message>
-    <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="267" />
-      <source>Searching</source>
-      <translation>Vyhledávání</translation>
-    </message>
-    <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="408" />
-      <location filename="../Preferences/ConfigurationDialog.py" line="361" />
-      <location filename="../Preferences/ConfigurationDialog.py" line="270" />
-      <source>Spell checking</source>
-      <translation>Kontrola pravopisu</translation>
+      <source>Code Checkers</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationDialog.py" line="266" />
+      <source>Typing</source>
+      <translation>Psaní</translation>
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationDialog.py" line="269" />
+      <source>Exporters</source>
+      <translation>Exportery</translation>
     </message>
     <message>
       <location filename="../Preferences/ConfigurationDialog.py" line="274" />
-      <source>Style</source>
-      <translation>Styl</translation>
-    </message>
-    <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="277" />
-      <source>Code Checkers</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="280" />
-      <source>Typing</source>
-      <translation>Psaní</translation>
-    </message>
-    <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="283" />
-      <source>Exporters</source>
-      <translation>Exportery</translation>
-    </message>
-    <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="287" />
-      <source>Highlighters</source>
-      <translation>Zvýrazňovače</translation>
+      <source>Autocompletion</source>
+      <translation>Autodoplňování</translation>
     </message>
     <message>
       <location filename="../Preferences/ConfigurationDialog.py" line="291" />
-      <source>Filetype Associations</source>
-      <translation>Asociace typů souborů</translation>
-    </message>
-    <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="295" />
-      <source>Styles</source>
-      <translation>Styly</translation>
-    </message>
-    <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="299" />
-      <source>Keywords</source>
-      <translation>Klíčová slova</translation>
+      <location filename="../Preferences/ConfigurationDialog.py" line="278" />
+      <source>QScintilla</source>
+      <translation>QScintilla</translation>
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationDialog.py" line="321" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="294" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="282" />
+      <source>Jedi</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationDialog.py" line="288" />
+      <source>Calltips</source>
+      <translation>Rychlé tipy</translation>
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationDialog.py" line="298" />
+      <source>Highlighters</source>
+      <translation>Zvýrazňovače</translation>
     </message>
     <message>
       <location filename="../Preferences/ConfigurationDialog.py" line="302" />
-      <source>Properties</source>
-      <translation>Nastavení</translation>
+      <source>Filetype Associations</source>
+      <translation>Asociace typů souborů</translation>
     </message>
     <message>
       <location filename="../Preferences/ConfigurationDialog.py" line="306" />
+      <source>Styles</source>
+      <translation>Styly</translation>
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationDialog.py" line="310" />
+      <source>Keywords</source>
+      <translation>Klíčová slova</translation>
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationDialog.py" line="313" />
+      <source>Properties</source>
+      <translation>Nastavení</translation>
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationDialog.py" line="317" />
       <source>Mouse Click Handlers</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="311" />
-      <source>Help</source>
-      <translation>Nápověda</translation>
-    </message>
-    <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="392" />
-      <location filename="../Preferences/ConfigurationDialog.py" line="314" />
-      <source>Help Documentation</source>
-      <translation>Dokumenty nápovědy</translation>
-    </message>
-    <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="318" />
-      <source>Help Viewers</source>
-      <translation>Prohlížeče nápovědy</translation>
-    </message>
-    <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="329" />
-      <location filename="../Preferences/ConfigurationDialog.py" line="323" />
-      <source>Project</source>
-      <translation>Projekt</translation>
-    </message>
-    <message>
       <location filename="../Preferences/ConfigurationDialog.py" line="326" />
+      <source>Help</source>
+      <translation>Nápověda</translation>
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationDialog.py" line="407" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="329" />
+      <source>Help Documentation</source>
+      <translation>Dokumenty nápovědy</translation>
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationDialog.py" line="333" />
+      <source>Help Viewers</source>
+      <translation>Prohlížeče nápovědy</translation>
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationDialog.py" line="344" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="338" />
+      <source>Project</source>
+      <translation>Projekt</translation>
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationDialog.py" line="341" />
       <source>Project Viewer</source>
       <translation>Prohlížeč projektu</translation>
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="332" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="347" />
       <source>Multiproject</source>
       <translation>Multiprojekt</translation>
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="379" />
-      <location filename="../Preferences/ConfigurationDialog.py" line="340" />
-      <location filename="../Preferences/ConfigurationDialog.py" line="337" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="394" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="355" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="352" />
       <source>Interface</source>
       <translation>Interface</translation>
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="343" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="358" />
       <source>Viewmanager</source>
       <translation>Viewmanager</translation>
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="349" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="364" />
       <source>Web Browser</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="397" />
-      <location filename="../Preferences/ConfigurationDialog.py" line="352" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="412" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="367" />
       <source>Appearance</source>
       <translation>Vzhled</translation>
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="400" />
-      <location filename="../Preferences/ConfigurationDialog.py" line="355" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="415" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="370" />
       <source>eric Web Browser</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="404" />
-      <location filename="../Preferences/ConfigurationDialog.py" line="358" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="419" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="373" />
       <source>VirusTotal Interface</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="513" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="528" />
       <source>Enter search text...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="587" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="602" />
       <source>Preferences</source>
       <translation>Předvolby</translation>
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="594" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="609" />
       <source>Please select an entry of the list 
 to display the configuration page.</source>
       <translation>Pro zobrazení strany s konfigurací vyberte položku ze seznamu.</translation>
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="669" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="684" />
       <source>Configuration Page Error</source>
       <translation>Chyba na straně konfigurace</translation>
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationDialog.py" line="670" />
+      <location filename="../Preferences/ConfigurationDialog.py" line="685" />
       <source>&lt;p&gt;The configuration page &lt;b&gt;{0}&lt;/b&gt; could not be loaded.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Konfigurační stranu &lt;b&gt;{0}&lt;/b&gt; nelze načíst.&lt;/p&gt;</translation>
     </message>
@@ -11959,6 +11966,29 @@
     </message>
   </context>
   <context>
+    <name>EditorAutoCompletionJediPage</name>
+    <message>
+      <location filename="../Preferences/ConfigurationPages/EditorAutoCompletionJediPage.ui" line="0" />
+      <source>&lt;b&gt;Configure Jedi Completion&lt;/b&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationPages/EditorAutoCompletionJediPage.ui" line="0" />
+      <source>Select, whether the jedi autocompletion support shall be enabled.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationPages/EditorAutoCompletionJediPage.ui" line="0" />
+      <source>Enable autocompletion</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationPages/EditorAutoCompletionJediPage.ui" line="0" />
+      <source>Enable fuzzy completion</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>EditorAutocompletionPage</name>
     <message>
       <location filename="../Preferences/ConfigurationPages/EditorAutocompletionPage.ui" line="0" />
@@ -12299,6 +12329,24 @@
     </message>
   </context>
   <context>
+    <name>EditorCallTipsJediPage</name>
+    <message>
+      <location filename="../Preferences/ConfigurationPages/EditorCallTipsJediPage.ui" line="0" />
+      <source>&lt;b&gt;Configure Jedi Calltips&lt;/b&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationPages/EditorCallTipsJediPage.ui" line="0" />
+      <source>Select, whether the jedi calltip support shall be enabled.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationPages/EditorCallTipsJediPage.ui" line="0" />
+      <source>Enable calltip</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>EditorCalltipsPage</name>
     <message>
       <location filename="../Preferences/ConfigurationPages/EditorCalltipsPage.py" line="31" />
@@ -13949,6 +13997,49 @@
     </message>
   </context>
   <context>
+    <name>EditorMouseClickHandlerJediPage</name>
+    <message>
+      <location filename="../Preferences/ConfigurationPages/EditorMouseClickHandlerJediPage.ui" line="0" />
+      <source>&lt;b&gt;Configure Jedi Mouse Click Handler Support&lt;/b&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationPages/EditorMouseClickHandlerJediPage.ui" line="0" />
+      <source>Select, whether the jedi mouse click handler support shall be enabled.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationPages/EditorMouseClickHandlerJediPage.ui" line="0" />
+      <source>Enable Mouse Click Handler</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationPages/EditorMouseClickHandlerJediPage.ui" line="0" />
+      <source>Go To Definition</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationPages/EditorMouseClickHandlerJediPage.ui" line="0" />
+      <source>Click Sequence:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationPages/EditorMouseClickHandlerJediPage.ui" line="0" />
+      <source>Shows the mouse click sequence</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationPages/EditorMouseClickHandlerJediPage.ui" line="0" />
+      <source>Press to open a dialog to configure the mouse click sequence</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationPages/EditorMouseClickHandlerJediPage.ui" line="0" />
+      <source>Change...</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>EditorMouseClickHandlerPage</name>
     <message>
       <location filename="../Preferences/ConfigurationPages/EditorMouseClickHandlerPage.ui" line="0" />
@@ -45337,6 +45428,75 @@
     </message>
   </context>
   <context>
+    <name>JediServer</name>
+    <message>
+      <location filename="../JediInterface/JediServer.py" line="292" />
+      <source>Language &lt;b&gt;{0}&lt;/b&gt; is not supported.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../JediInterface/JediServer.py" line="328" />
+      <source>Present in &lt;i&gt;{0}&lt;/i&gt; module</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../JediInterface/JediServer.py" line="332" />
+      <source>No documentation available.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../JediInterface/JediServer.py" line="410" />
+      <source>Jedi: No definition found</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../JediInterface/JediServer.py" line="500" />
+      <source>Jedi: No mouse hover help found</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../JediInterface/JediServer.py" line="529" />
+      <source>The data received from the Jedi server could not be decoded. Please report this issue with the received data to the eric bugs email address.
+Error: {0}
+Data:
+{1}
+</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../JediInterface/JediServer.py" line="538" />
+      <source>An exception happened in the Jedi client. Please report it to the eric bugs email address.
+Exception: {0}
+Value: {1}
+Traceback: {2}
+</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../JediInterface/JediServer.py" line="572" />
+      <source>The jedi and/or parso library is not installed.
+</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../JediInterface/JediServer.py" line="576" />
+      <source>'{0}' is not supported because the configured interpreter could not be started.
+</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../JediInterface/JediServer.py" line="581" />
+      <source>'{0}' is not supported because no suitable interpreter is configured.
+</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../JediInterface/JediServer.py" line="695" />
+      <source>Jedi</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>Largefiles</name>
     <message>
       <location filename="../Plugins/VcsPlugins/vcsMercurial/LargefilesExtension/largefiles.py" line="69" />
@@ -55331,18 +55491,18 @@
   <context>
     <name>Preferences</name>
     <message>
-      <location filename="../Preferences/__init__.py" line="1635" />
+      <location filename="../Preferences/__init__.py" line="1647" />
       <source>Export Preferences</source>
       <translation>Předvolby exportu</translation>
     </message>
     <message>
-      <location filename="../Preferences/__init__.py" line="1663" />
-      <location filename="../Preferences/__init__.py" line="1637" />
+      <location filename="../Preferences/__init__.py" line="1675" />
+      <location filename="../Preferences/__init__.py" line="1649" />
       <source>Properties File (*.ini);;All Files (*)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Preferences/__init__.py" line="1661" />
+      <location filename="../Preferences/__init__.py" line="1673" />
       <source>Import Preferences</source>
       <translation>Předvolby importu</translation>
     </message>
@@ -55807,9 +55967,10 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Preferences/ProgramsDialog.py" line="435" />
-      <location filename="../Preferences/ProgramsDialog.py" line="432" />
-      <location filename="../Preferences/ProgramsDialog.py" line="414" />
+      <location filename="../Preferences/ProgramsDialog.py" line="452" />
+      <location filename="../Preferences/ProgramsDialog.py" line="449" />
+      <location filename="../Preferences/ProgramsDialog.py" line="431" />
+      <location filename="../Preferences/ProgramsDialog.py" line="310" />
       <location filename="../Preferences/ProgramsDialog.py" line="276" />
       <location filename="../Preferences/ProgramsDialog.py" line="259" />
       <source>(unknown)</source>
@@ -55841,24 +56002,29 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Preferences/ProgramsDialog.py" line="370" />
+      <location filename="../Preferences/ProgramsDialog.py" line="315" />
+      <source>Code Assistant - Jedi</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Preferences/ProgramsDialog.py" line="387" />
       <source>(not configured)</source>
       <translation>(nezkonfigurováno)</translation>
     </message>
     <message>
-      <location filename="../Preferences/ProgramsDialog.py" line="400" />
+      <location filename="../Preferences/ProgramsDialog.py" line="417" />
       <source>(module not found)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Preferences/ProgramsDialog.py" line="438" />
+      <location filename="../Preferences/ProgramsDialog.py" line="455" />
       <source>(not executable)</source>
       <translation>(nevykonavatelný)</translation>
     </message>
     <message>
-      <location filename="../Preferences/ProgramsDialog.py" line="482" />
-      <location filename="../Preferences/ProgramsDialog.py" line="453" />
-      <location filename="../Preferences/ProgramsDialog.py" line="450" />
+      <location filename="../Preferences/ProgramsDialog.py" line="499" />
+      <location filename="../Preferences/ProgramsDialog.py" line="470" />
+      <location filename="../Preferences/ProgramsDialog.py" line="467" />
       <source>(not found)</source>
       <translation>(nenalezeno)</translation>
     </message>
@@ -80279,28 +80445,28 @@
   <context>
     <name>Translator</name>
     <message>
-      <location filename="../Plugins/UiExtensionPlugins/Translator/Translator.py" line="63" />
-      <location filename="../Plugins/UiExtensionPlugins/Translator/Translator.py" line="60" />
-      <source>Translator</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
+      <location filename="../Plugins/UiExtensionPlugins/Translator/Translator.py" line="67" />
       <location filename="../Plugins/UiExtensionPlugins/Translator/Translator.py" line="64" />
-      <source>T&amp;ranslator</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/UiExtensionPlugins/Translator/Translator.py" line="65" />
-      <source>Alt+Shift+R</source>
+      <source>Translator</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/UiExtensionPlugins/Translator/Translator.py" line="68" />
+      <source>T&amp;ranslator</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/UiExtensionPlugins/Translator/Translator.py" line="69" />
+      <source>Alt+Shift+R</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/UiExtensionPlugins/Translator/Translator.py" line="72" />
       <source>Switch the input focus to the Translator window.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/UiExtensionPlugins/Translator/Translator.py" line="70" />
+      <location filename="../Plugins/UiExtensionPlugins/Translator/Translator.py" line="74" />
       <source>&lt;b&gt;Activate Translator&lt;/b&gt;&lt;p&gt;This switches the input focus to the Translator window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
@@ -82740,2374 +82906,2374 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1914" />
-      <location filename="../UI/UserInterface.py" line="992" />
+      <location filename="../UI/UserInterface.py" line="1919" />
+      <location filename="../UI/UserInterface.py" line="998" />
       <source>Left Toolbox</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1939" />
-      <location filename="../UI/UserInterface.py" line="1000" />
+      <location filename="../UI/UserInterface.py" line="1944" />
+      <location filename="../UI/UserInterface.py" line="1006" />
       <source>Horizontal Toolbox</source>
       <translation>Vodorovná nástrojová lišta</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1926" />
-      <location filename="../UI/UserInterface.py" line="1008" />
+      <location filename="../UI/UserInterface.py" line="1931" />
+      <location filename="../UI/UserInterface.py" line="1014" />
       <source>Right Toolbox</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1772" />
-      <location filename="../UI/UserInterface.py" line="1146" />
-      <location filename="../UI/UserInterface.py" line="1016" />
+      <location filename="../UI/UserInterface.py" line="1777" />
+      <location filename="../UI/UserInterface.py" line="1151" />
+      <location filename="../UI/UserInterface.py" line="1022" />
       <source>Project-Viewer</source>
       <translation>Prohlížeč projektu</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1789" />
-      <location filename="../UI/UserInterface.py" line="1151" />
-      <location filename="../UI/UserInterface.py" line="1020" />
+      <location filename="../UI/UserInterface.py" line="1794" />
+      <location filename="../UI/UserInterface.py" line="1156" />
+      <location filename="../UI/UserInterface.py" line="1026" />
       <source>Multiproject-Viewer</source>
       <translation>Prohlížeč multiprojektu</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1896" />
-      <location filename="../UI/UserInterface.py" line="1157" />
-      <location filename="../UI/UserInterface.py" line="1025" />
+      <location filename="../UI/UserInterface.py" line="1901" />
+      <location filename="../UI/UserInterface.py" line="1162" />
+      <location filename="../UI/UserInterface.py" line="1031" />
       <source>Template-Viewer</source>
       <translation>Prohlížeč šablon</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1842" />
-      <location filename="../UI/UserInterface.py" line="1163" />
-      <location filename="../UI/UserInterface.py" line="1030" />
+      <location filename="../UI/UserInterface.py" line="1847" />
+      <location filename="../UI/UserInterface.py" line="1168" />
+      <location filename="../UI/UserInterface.py" line="1036" />
       <source>File-Browser</source>
       <translation>Browser souborů</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1169" />
-      <location filename="../UI/UserInterface.py" line="1035" />
+      <location filename="../UI/UserInterface.py" line="1174" />
+      <location filename="../UI/UserInterface.py" line="1041" />
       <source>Symbols</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2071" />
-      <location filename="../UI/UserInterface.py" line="2070" />
-      <location filename="../UI/UserInterface.py" line="1179" />
-      <location filename="../UI/UserInterface.py" line="1044" />
+      <location filename="../UI/UserInterface.py" line="2076" />
+      <location filename="../UI/UserInterface.py" line="2075" />
+      <location filename="../UI/UserInterface.py" line="1184" />
+      <location filename="../UI/UserInterface.py" line="1050" />
       <source>Code Documentation Viewer</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1807" />
-      <location filename="../UI/UserInterface.py" line="1183" />
-      <location filename="../UI/UserInterface.py" line="1048" />
+      <location filename="../UI/UserInterface.py" line="1812" />
+      <location filename="../UI/UserInterface.py" line="1188" />
+      <location filename="../UI/UserInterface.py" line="1054" />
       <source>Debug-Viewer</source>
       <translation>Prohlížeč debugeru</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2091" />
-      <location filename="../UI/UserInterface.py" line="2090" />
-      <location filename="../UI/UserInterface.py" line="1188" />
-      <location filename="../UI/UserInterface.py" line="1053" />
+      <location filename="../UI/UserInterface.py" line="2096" />
+      <location filename="../UI/UserInterface.py" line="2095" />
+      <location filename="../UI/UserInterface.py" line="1193" />
+      <location filename="../UI/UserInterface.py" line="1059" />
       <source>PyPI</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2109" />
-      <location filename="../UI/UserInterface.py" line="2108" />
-      <location filename="../UI/UserInterface.py" line="1193" />
-      <location filename="../UI/UserInterface.py" line="1058" />
+      <location filename="../UI/UserInterface.py" line="2114" />
+      <location filename="../UI/UserInterface.py" line="2113" />
+      <location filename="../UI/UserInterface.py" line="1198" />
+      <location filename="../UI/UserInterface.py" line="1064" />
       <source>Conda</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1198" />
-      <location filename="../UI/UserInterface.py" line="1063" />
+      <location filename="../UI/UserInterface.py" line="1203" />
+      <location filename="../UI/UserInterface.py" line="1069" />
       <source>Cooperation</source>
       <translation>Spolupráce</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2014" />
-      <location filename="../UI/UserInterface.py" line="1203" />
-      <location filename="../UI/UserInterface.py" line="1068" />
+      <location filename="../UI/UserInterface.py" line="2019" />
+      <location filename="../UI/UserInterface.py" line="1208" />
+      <location filename="../UI/UserInterface.py" line="1074" />
       <source>IRC</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2127" />
-      <location filename="../UI/UserInterface.py" line="2126" />
-      <location filename="../UI/UserInterface.py" line="1209" />
-      <location filename="../UI/UserInterface.py" line="1073" />
+      <location filename="../UI/UserInterface.py" line="2132" />
+      <location filename="../UI/UserInterface.py" line="2131" />
+      <location filename="../UI/UserInterface.py" line="1214" />
+      <location filename="../UI/UserInterface.py" line="1079" />
       <source>MicroPython</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1877" />
-      <location filename="../UI/UserInterface.py" line="1217" />
-      <location filename="../UI/UserInterface.py" line="1081" />
+      <location filename="../UI/UserInterface.py" line="1882" />
+      <location filename="../UI/UserInterface.py" line="1222" />
+      <location filename="../UI/UserInterface.py" line="1087" />
       <source>Task-Viewer</source>
       <translation>Prohlížeč úloh</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1859" />
-      <location filename="../UI/UserInterface.py" line="1221" />
-      <location filename="../UI/UserInterface.py" line="1085" />
+      <location filename="../UI/UserInterface.py" line="1864" />
+      <location filename="../UI/UserInterface.py" line="1226" />
+      <location filename="../UI/UserInterface.py" line="1091" />
       <source>Log-Viewer</source>
       <translation>Prohlížeč logu</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1226" />
-      <location filename="../UI/UserInterface.py" line="1090" />
+      <location filename="../UI/UserInterface.py" line="1231" />
+      <location filename="../UI/UserInterface.py" line="1096" />
       <source>Numbers</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1825" />
-      <location filename="../UI/UserInterface.py" line="1241" />
-      <location filename="../UI/UserInterface.py" line="1105" />
+      <location filename="../UI/UserInterface.py" line="1830" />
+      <location filename="../UI/UserInterface.py" line="1246" />
+      <location filename="../UI/UserInterface.py" line="1111" />
       <source>Shell</source>
       <translation />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1626" />
+      <location filename="../UI/UserInterface.py" line="1631" />
       <source>{0} - Passive Mode</source>
       <translation>{0} - Pasivní mód</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1633" />
-      <location filename="../UI/UserInterface.py" line="1629" />
+      <location filename="../UI/UserInterface.py" line="1638" />
+      <location filename="../UI/UserInterface.py" line="1634" />
       <source>{0} - {1} - Passive Mode</source>
       <translation>{0} - {1} - pasivní mód</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1637" />
+      <location filename="../UI/UserInterface.py" line="1642" />
       <source>{0} - {1} - {2} - Passive Mode</source>
       <translation>{0} - {1} - {2} - pasivní mód</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1660" />
-      <source>Quit</source>
-      <translation>Konec</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1662" />
-      <source>&amp;Quit</source>
-      <translation>&amp;Konec</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1663" />
-      <source>Ctrl+Q</source>
-      <comment>File|Quit</comment>
-      <translation />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1665" />
+      <source>Quit</source>
+      <translation>Konec</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1667" />
+      <source>&amp;Quit</source>
+      <translation>&amp;Konec</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1668" />
+      <source>Ctrl+Q</source>
+      <comment>File|Quit</comment>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1670" />
       <source>Quit the IDE</source>
       <translation>Ukončit IDE</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1666" />
+      <location filename="../UI/UserInterface.py" line="1671" />
       <source>&lt;b&gt;Quit the IDE&lt;/b&gt;&lt;p&gt;This quits the IDE. Any unsaved changes may be saved first. Any Python program being debugged will be stopped and the preferences will be written to disc.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Ukončit IDE&lt;/b&gt;&lt;p&gt;Ukončí se IDE. Nejdříve by se měly uložit neuložené změny. Python programy běžící v debug procesu budou ukončeny a nastavení budou uložena.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1679" />
-      <location filename="../UI/UserInterface.py" line="1677" />
+      <location filename="../UI/UserInterface.py" line="1684" />
+      <location filename="../UI/UserInterface.py" line="1682" />
       <source>Restart</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1680" />
+      <location filename="../UI/UserInterface.py" line="1685" />
       <source>Ctrl+Shift+Q</source>
       <comment>File|Quit</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1682" />
+      <location filename="../UI/UserInterface.py" line="1687" />
       <source>Restart the IDE</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1683" />
+      <location filename="../UI/UserInterface.py" line="1688" />
       <source>&lt;b&gt;Restart the IDE&lt;/b&gt;&lt;p&gt;This restarts the IDE. Any unsaved changes may be saved first. Any Python program being debugged will be stopped and the preferences will be written to disc.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1696" />
-      <location filename="../UI/UserInterface.py" line="1693" />
+      <location filename="../UI/UserInterface.py" line="1701" />
+      <location filename="../UI/UserInterface.py" line="1698" />
       <source>Save session</source>
       <translation>Uložit relaci</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1694" />
+      <location filename="../UI/UserInterface.py" line="1699" />
       <source>Save session...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1697" />
+      <location filename="../UI/UserInterface.py" line="1702" />
       <source>&lt;b&gt;Save session...&lt;/b&gt;&lt;p&gt;This saves the current session to disk. A dialog is opened to select the file name.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6695" />
-      <location filename="../UI/UserInterface.py" line="1709" />
-      <location filename="../UI/UserInterface.py" line="1706" />
+      <location filename="../UI/UserInterface.py" line="6700" />
+      <location filename="../UI/UserInterface.py" line="1714" />
+      <location filename="../UI/UserInterface.py" line="1711" />
       <source>Load session</source>
       <translation type="unfinished">Načíst relaci</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1707" />
+      <location filename="../UI/UserInterface.py" line="1712" />
       <source>Load session...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1710" />
+      <location filename="../UI/UserInterface.py" line="1715" />
       <source>&lt;b&gt;Load session...&lt;/b&gt;&lt;p&gt;This loads a session saved to disk previously. A dialog is opened to select the file name.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1719" />
-      <source>New Window</source>
-      <translation type="unfinished">Nové okno</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1721" />
-      <source>New &amp;Window</source>
-      <translation type="unfinished">&amp;Nové okno</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1722" />
-      <source>Ctrl+Shift+N</source>
-      <comment>File|New Window</comment>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1724" />
-      <source>Open a new eric instance</source>
-      <translation type="unfinished" />
+      <source>New Window</source>
+      <translation type="unfinished">Nové okno</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1726" />
+      <source>New &amp;Window</source>
+      <translation type="unfinished">&amp;Nové okno</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1727" />
+      <source>Ctrl+Shift+N</source>
+      <comment>File|New Window</comment>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1729" />
+      <source>Open a new eric instance</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1731" />
       <source>&lt;b&gt;New Window&lt;/b&gt;&lt;p&gt;This opens a new instance of the eric IDE.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1740" />
-      <location filename="../UI/UserInterface.py" line="1738" />
-      <source>Edit Profile</source>
-      <translation>Editační profil</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1743" />
-      <source>Activate the edit view profile</source>
-      <translation>Aktivovat profil editace</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1745" />
+      <location filename="../UI/UserInterface.py" line="1743" />
+      <source>Edit Profile</source>
+      <translation>Editační profil</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1748" />
+      <source>Activate the edit view profile</source>
+      <translation>Aktivovat profil editace</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1750" />
       <source>&lt;b&gt;Edit Profile&lt;/b&gt;&lt;p&gt;Activate the "Edit View Profile". Windows being shown, if this profile is active, may be configured with the "View Profile Configuration" dialog.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Editační profil&lt;/b&gt;&lt;p&gt;Aktivování skupiny 'Editační profil'. Okna, která se v tomto profilu zobrazí lze nastavit v dialogu 'Konfigurace profilu pohledů'.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1757" />
-      <location filename="../UI/UserInterface.py" line="1755" />
-      <source>Debug Profile</source>
-      <translation>Debugovací profil</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1761" />
-      <source>Activate the debug view profile</source>
-      <translation>Aktivovat debugovací profil</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1762" />
+      <location filename="../UI/UserInterface.py" line="1760" />
+      <source>Debug Profile</source>
+      <translation>Debugovací profil</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1766" />
+      <source>Activate the debug view profile</source>
+      <translation>Aktivovat debugovací profil</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1767" />
       <source>&lt;b&gt;Debug Profile&lt;/b&gt;&lt;p&gt;Activate the "Debug View Profile". Windows being shown, if this profile is active, may be configured with the "View Profile Configuration" dialog.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Debugovací profil&lt;/b&gt;&lt;p&gt;Aktivování skupiny 'Debugovací profil'. Okna, která se v tomto profilu zobrazí lze nastavit v dialogu 'Konfigurace profilu pohledů'.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1773" />
+      <location filename="../UI/UserInterface.py" line="1778" />
       <source>&amp;Project-Viewer</source>
       <translation>Prohlížeč &amp;projektu</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1774" />
-      <source>Alt+Shift+P</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1777" />
-      <source>Switch the input focus to the Project-Viewer window.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1779" />
+      <source>Alt+Shift+P</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1782" />
+      <source>Switch the input focus to the Project-Viewer window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1784" />
       <source>&lt;b&gt;Activate Project-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Project-Viewer window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1790" />
+      <location filename="../UI/UserInterface.py" line="1795" />
       <source>&amp;Multiproject-Viewer</source>
       <translation>Prohlížeč &amp;multiprojektu</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1791" />
-      <source>Alt+Shift+M</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1794" />
-      <source>Switch the input focus to the Multiproject-Viewer window.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1796" />
+      <source>Alt+Shift+M</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1799" />
+      <source>Switch the input focus to the Multiproject-Viewer window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1801" />
       <source>&lt;b&gt;Activate Multiproject-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Multiproject-Viewer window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1808" />
+      <location filename="../UI/UserInterface.py" line="1813" />
       <source>&amp;Debug-Viewer</source>
       <translation>Prohlížeč &amp;debugeru</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1809" />
-      <source>Alt+Shift+D</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1812" />
-      <source>Switch the input focus to the Debug-Viewer window.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1814" />
+      <source>Alt+Shift+D</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1817" />
+      <source>Switch the input focus to the Debug-Viewer window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1819" />
       <source>&lt;b&gt;Activate Debug-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Debug-Viewer window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1826" />
+      <location filename="../UI/UserInterface.py" line="1831" />
       <source>&amp;Shell</source>
       <translation>&amp;Shell</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1827" />
-      <source>Alt+Shift+S</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1830" />
-      <source>Switch the input focus to the Shell window.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1832" />
+      <source>Alt+Shift+S</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1835" />
+      <source>Switch the input focus to the Shell window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1837" />
       <source>&lt;b&gt;Activate Shell&lt;/b&gt;&lt;p&gt;This switches the input focus to the Shell window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1843" />
+      <location filename="../UI/UserInterface.py" line="1848" />
       <source>&amp;File-Browser</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1844" />
-      <source>Alt+Shift+F</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1847" />
-      <source>Switch the input focus to the File-Browser window.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1849" />
+      <source>Alt+Shift+F</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1852" />
+      <source>Switch the input focus to the File-Browser window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1854" />
       <source>&lt;b&gt;Activate File-Browser&lt;/b&gt;&lt;p&gt;This switches the input focus to the File-Browser window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1860" />
+      <location filename="../UI/UserInterface.py" line="1865" />
       <source>Lo&amp;g-Viewer</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1861" />
-      <source>Alt+Shift+G</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1864" />
-      <source>Switch the input focus to the Log-Viewer window.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1866" />
+      <source>Alt+Shift+G</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1869" />
+      <source>Switch the input focus to the Log-Viewer window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1871" />
       <source>&lt;b&gt;Activate Log-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Log-Viewer window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1878" />
+      <location filename="../UI/UserInterface.py" line="1883" />
       <source>&amp;Task-Viewer</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1879" />
-      <source>Alt+Shift+T</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1882" />
-      <source>Switch the input focus to the Task-Viewer window.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1884" />
+      <source>Alt+Shift+T</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1887" />
+      <source>Switch the input focus to the Task-Viewer window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1889" />
       <source>&lt;b&gt;Activate Task-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Task-Viewer window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1897" />
+      <location filename="../UI/UserInterface.py" line="1902" />
       <source>Templ&amp;ate-Viewer</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1898" />
-      <source>Alt+Shift+A</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1901" />
-      <source>Switch the input focus to the Template-Viewer window.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1903" />
+      <source>Alt+Shift+A</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1906" />
+      <source>Switch the input focus to the Template-Viewer window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1908" />
       <source>&lt;b&gt;Activate Template-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Template-Viewer window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1915" />
+      <location filename="../UI/UserInterface.py" line="1920" />
       <source>&amp;Left Toolbox</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1916" />
+      <location filename="../UI/UserInterface.py" line="1921" />
       <source>Toggle the Left Toolbox window</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1917" />
+      <location filename="../UI/UserInterface.py" line="1922" />
       <source>&lt;b&gt;Toggle the Left Toolbox window&lt;/b&gt;&lt;p&gt;If the Left Toolbox window is hidden then display it. If it is displayed then close it.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1927" />
+      <location filename="../UI/UserInterface.py" line="1932" />
       <source>&amp;Right Toolbox</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1929" />
+      <location filename="../UI/UserInterface.py" line="1934" />
       <source>Toggle the Right Toolbox window</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1930" />
+      <location filename="../UI/UserInterface.py" line="1935" />
       <source>&lt;b&gt;Toggle the Right Toolbox window&lt;/b&gt;&lt;p&gt;If the Right Toolbox window is hidden then display it. If it is displayed then close it.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1940" />
+      <location filename="../UI/UserInterface.py" line="1945" />
       <source>&amp;Horizontal Toolbox</source>
       <translation>&amp;Horizontální lista nástrojů</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1942" />
+      <location filename="../UI/UserInterface.py" line="1947" />
       <source>Toggle the Horizontal Toolbox window</source>
       <translation>Přepnout na vodorovnou lištu nástrojů</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1944" />
+      <location filename="../UI/UserInterface.py" line="1949" />
       <source>&lt;b&gt;Toggle the Horizontal Toolbox window&lt;/b&gt;&lt;p&gt;If the Horizontal Toolbox window is hidden then display it. If it is displayed then close it.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Přepnout vodorovnou nástrojovou lištu&lt;/b&gt;&lt;p&gt;Pokud je vodorovná nástrojová lišta skryta, tak se zobrazí. Je-li zobrazena, skryje se.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1953" />
+      <location filename="../UI/UserInterface.py" line="1958" />
       <source>Left Sidebar</source>
       <translation>Levé menu</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1954" />
+      <location filename="../UI/UserInterface.py" line="1959" />
       <source>&amp;Left Sidebar</source>
       <translation>&amp;Levé menu</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1956" />
+      <location filename="../UI/UserInterface.py" line="1961" />
       <source>Toggle the left sidebar window</source>
       <translation>Přepnout okno levého menu</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1957" />
+      <location filename="../UI/UserInterface.py" line="1962" />
       <source>&lt;b&gt;Toggle the left sidebar window&lt;/b&gt;&lt;p&gt;If the left sidebar window is hidden then display it. If it is displayed then close it.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Přepnout okno levého menu&lt;/b&gt;&lt;p&gt;Je-li okno levého menu skryto, tak se zobrazí. Je-li zobrazeno, skryje se.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1966" />
-      <source>Right Sidebar</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1967" />
-      <source>&amp;Right Sidebar</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1969" />
-      <source>Toggle the right sidebar window</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1971" />
+      <source>Right Sidebar</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1972" />
+      <source>&amp;Right Sidebar</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1974" />
+      <source>Toggle the right sidebar window</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1976" />
       <source>&lt;b&gt;Toggle the right sidebar window&lt;/b&gt;&lt;p&gt;If the right sidebar window is hidden then display it. If it is displayed then close it.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1980" />
-      <source>Bottom Sidebar</source>
-      <translation>Dolní menu</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1981" />
-      <source>&amp;Bottom Sidebar</source>
-      <translation>&amp;Dolní menu</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1983" />
-      <source>Toggle the bottom sidebar window</source>
-      <translation>Přepnout okno dolního menu</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1985" />
+      <source>Bottom Sidebar</source>
+      <translation>Dolní menu</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1986" />
+      <source>&amp;Bottom Sidebar</source>
+      <translation>&amp;Dolní menu</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1988" />
+      <source>Toggle the bottom sidebar window</source>
+      <translation>Přepnout okno dolního menu</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1990" />
       <source>&lt;b&gt;Toggle the bottom sidebar window&lt;/b&gt;&lt;p&gt;If the bottom sidebar window is hidden then display it. If it is displayed then close it.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Přepnout okno dolního menu&lt;/b&gt;&lt;p&gt;Je-li okno dolního menu skryto, tak se zobrazí. Je-li zobrazeno, skryje se.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1995" />
-      <source>Cooperation-Viewer</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1996" />
-      <source>Co&amp;operation-Viewer</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1997" />
-      <source>Alt+Shift+O</source>
-      <translation />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2000" />
-      <source>Switch the input focus to the Cooperation-Viewer window.</source>
+      <source>Cooperation-Viewer</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2001" />
+      <source>Co&amp;operation-Viewer</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2002" />
+      <source>Alt+Shift+O</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2005" />
+      <source>Switch the input focus to the Cooperation-Viewer window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2007" />
       <source>&lt;b&gt;Activate Cooperation-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Cooperation-Viewer window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2015" />
+      <location filename="../UI/UserInterface.py" line="2020" />
       <source>&amp;IRC</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2016" />
-      <source>Ctrl+Alt+Shift+I</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2019" />
-      <source>Switch the input focus to the IRC window.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2021" />
+      <source>Ctrl+Alt+Shift+I</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2024" />
+      <source>Switch the input focus to the IRC window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2026" />
       <source>&lt;b&gt;Activate IRC&lt;/b&gt;&lt;p&gt;This switches the input focus to the IRC window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2032" />
-      <source>Symbols-Viewer</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2033" />
-      <source>S&amp;ymbols-Viewer</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2034" />
-      <source>Alt+Shift+Y</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2037" />
-      <source>Switch the input focus to the Symbols-Viewer window.</source>
+      <source>Symbols-Viewer</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2038" />
+      <source>S&amp;ymbols-Viewer</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2039" />
+      <source>Alt+Shift+Y</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2042" />
+      <source>Switch the input focus to the Symbols-Viewer window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2044" />
       <source>&lt;b&gt;Activate Symbols-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Symbols-Viewer window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2051" />
-      <source>Numbers-Viewer</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2052" />
-      <source>Num&amp;bers-Viewer</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2053" />
-      <source>Alt+Shift+B</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2056" />
-      <source>Switch the input focus to the Numbers-Viewer window.</source>
+      <source>Numbers-Viewer</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2057" />
+      <source>Num&amp;bers-Viewer</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2058" />
+      <source>Alt+Shift+B</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2061" />
+      <source>Switch the input focus to the Numbers-Viewer window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2063" />
       <source>&lt;b&gt;Activate Numbers-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Numbers-Viewer window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2072" />
+      <location filename="../UI/UserInterface.py" line="2077" />
       <source>Ctrl+Alt+Shift+D</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2075" />
+      <location filename="../UI/UserInterface.py" line="2080" />
       <source>Switch the input focus to the Code Documentation Viewer window.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2078" />
+      <location filename="../UI/UserInterface.py" line="2083" />
       <source>&lt;b&gt;Code Documentation Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Code Documentation Viewer window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2092" />
-      <source>Ctrl+Alt+Shift+P</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2095" />
-      <source>Switch the input focus to the PyPI window.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2097" />
+      <source>Ctrl+Alt+Shift+P</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2100" />
+      <source>Switch the input focus to the PyPI window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2102" />
       <source>&lt;b&gt;PyPI&lt;/b&gt;&lt;p&gt;This switches the input focus to the PyPI window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2110" />
-      <source>Ctrl+Alt+Shift+C</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2113" />
-      <source>Switch the input focus to the Conda window.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2115" />
+      <source>Ctrl+Alt+Shift+C</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2118" />
+      <source>Switch the input focus to the Conda window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2120" />
       <source>&lt;b&gt;Conda&lt;/b&gt;&lt;p&gt;This switches the input focus to the Conda window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2128" />
-      <source>Ctrl+Alt+Shift+M</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2131" />
-      <source>Switch the input focus to the MicroPython window.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2133" />
+      <source>Ctrl+Alt+Shift+M</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2136" />
+      <source>Switch the input focus to the MicroPython window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2138" />
       <source>&lt;b&gt;MicroPython&lt;/b&gt;&lt;p&gt;This switches the input focus to the MicroPython window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2144" />
-      <source>What's This?</source>
-      <translation>Co je to?</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2146" />
-      <source>&amp;What's This?</source>
-      <translation>&amp;Co je to?</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2147" />
-      <source>Shift+F1</source>
-      <translation />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2149" />
+      <source>What's This?</source>
+      <translation>Co je to?</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2151" />
+      <source>&amp;What's This?</source>
+      <translation>&amp;Co je to?</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2152" />
+      <source>Shift+F1</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2154" />
       <source>Context sensitive help</source>
       <translation>Kontextově senzitivní nápověda</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2150" />
+      <location filename="../UI/UserInterface.py" line="2155" />
       <source>&lt;b&gt;Display context sensitive help&lt;/b&gt;&lt;p&gt;In What's This? mode, the mouse cursor shows an arrow with a question mark, and you can click on the interface elements to get a short description of what they do and how to use them. In dialogs, this feature can be accessed using the context help button in the titlebar.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Zobrazit kontextově senzitivní nápovědu&lt;/b&gt;&lt;p&gt;V režimu "Co je to?" se nad různými prvky aplikace u kurzoru zobrazí otazník. Když pak kliknete na tyto prvky, zobrazí se krátký popis co daný prvek znamená a jak jej použít. V dialogových oknech se tato funkce spustí tlačítkem kontextové nápovědy na horní liště.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2162" />
-      <source>Helpviewer</source>
-      <translation>Prohlížeč nápovědy</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2164" />
-      <source>&amp;Helpviewer...</source>
-      <translation>Pro&amp;hlížeč nápovědy...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2165" />
-      <source>F1</source>
-      <translation />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2167" />
-      <source>Open the helpviewer window</source>
-      <translation>Otevřít okno prohlížeče nápovědy</translation>
+      <source>Helpviewer</source>
+      <translation>Prohlížeč nápovědy</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2169" />
+      <source>&amp;Helpviewer...</source>
+      <translation>Pro&amp;hlížeč nápovědy...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2170" />
+      <source>F1</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2172" />
+      <source>Open the helpviewer window</source>
+      <translation>Otevřít okno prohlížeče nápovědy</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2174" />
       <source>&lt;b&gt;Helpviewer&lt;/b&gt;&lt;p&gt;Display the eric web browser. This window will show HTML help files and help from Qt help collections. It has the capability to navigate to links, set bookmarks, print the displayed help and some more features. You may use it to browse the internet as well&lt;/p&gt;&lt;p&gt;If called with a word selected, this word is search in the Qt help collection.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2188" />
-      <source>Show Versions</source>
-      <translation>Zobrazit verze</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2189" />
-      <source>Show &amp;Versions</source>
-      <translation>Zobrazit &amp;verze</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2191" />
-      <source>Display version information</source>
-      <translation>Zobrazit informace o verzích</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2193" />
+      <source>Show Versions</source>
+      <translation>Zobrazit verze</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2194" />
+      <source>Show &amp;Versions</source>
+      <translation>Zobrazit &amp;verze</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2196" />
+      <source>Display version information</source>
+      <translation>Zobrazit informace o verzích</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2198" />
       <source>&lt;b&gt;Show Versions&lt;/b&gt;&lt;p&gt;Display version information.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Zobrazit verze&lt;/b&gt;&lt;p&gt;Zobrazí informace o verzích.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2203" />
-      <location filename="../UI/UserInterface.py" line="2201" />
+      <location filename="../UI/UserInterface.py" line="2208" />
+      <location filename="../UI/UserInterface.py" line="2206" />
       <source>Check for Updates</source>
       <translation>Zjistit aktualizace</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2202" />
+      <location filename="../UI/UserInterface.py" line="2207" />
       <source>Check for &amp;Updates...</source>
       <translation>Zjistit akt&amp;ualizace...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2204" />
+      <location filename="../UI/UserInterface.py" line="2209" />
       <source>&lt;b&gt;Check for Updates...&lt;/b&gt;&lt;p&gt;Checks the internet for updates of eric.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2212" />
-      <source>Show downloadable versions</source>
-      <translation>Zobrazit verze ke stažení</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2213" />
-      <source>Show &amp;downloadable versions...</source>
-      <translation>Zobrazit verze pro &amp;download...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2216" />
-      <source>Show the versions available for download</source>
-      <translation>Zobrazit dostupné verze ke stažení</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2217" />
+      <source>Show downloadable versions</source>
+      <translation>Zobrazit verze ke stažení</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2218" />
+      <source>Show &amp;downloadable versions...</source>
+      <translation>Zobrazit verze pro &amp;download...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2221" />
+      <source>Show the versions available for download</source>
+      <translation>Zobrazit dostupné verze ke stažení</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2222" />
       <source>&lt;b&gt;Show downloadable versions...&lt;/b&gt;&lt;p&gt;Shows the eric versions available for download from the internet.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2230" />
-      <location filename="../UI/UserInterface.py" line="2227" />
+      <location filename="../UI/UserInterface.py" line="2235" />
+      <location filename="../UI/UserInterface.py" line="2232" />
       <source>Show Error Log</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2228" />
+      <location filename="../UI/UserInterface.py" line="2233" />
       <source>Show Error &amp;Log...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2231" />
+      <location filename="../UI/UserInterface.py" line="2236" />
       <source>&lt;b&gt;Show Error Log...&lt;/b&gt;&lt;p&gt;Opens a dialog showing the most recent error log.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2239" />
-      <source>Show Install Info</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2240" />
-      <source>Show Install &amp;Info...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2242" />
-      <source>Show Installation Information</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2244" />
+      <source>Show Install Info</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2245" />
+      <source>Show Install &amp;Info...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2247" />
+      <source>Show Installation Information</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2249" />
       <source>&lt;b&gt;Show Install Info...&lt;/b&gt;&lt;p&gt;Opens a dialog showing some information about the installation process.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3843" />
-      <location filename="../UI/UserInterface.py" line="2253" />
+      <location filename="../UI/UserInterface.py" line="3848" />
+      <location filename="../UI/UserInterface.py" line="2258" />
       <source>Report Bug</source>
       <translation>Reportovat Bugy</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2254" />
+      <location filename="../UI/UserInterface.py" line="2259" />
       <source>Report &amp;Bug...</source>
       <translation>Reportovat &amp;Bugy...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2256" />
+      <location filename="../UI/UserInterface.py" line="2261" />
       <source>Report a bug</source>
       <translation>Reportovat bug</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2257" />
+      <location filename="../UI/UserInterface.py" line="2262" />
       <source>&lt;b&gt;Report Bug...&lt;/b&gt;&lt;p&gt;Opens a dialog to report a bug.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Reportovat bug...&lt;/b&gt;&lt;p&gt;Otevře se dialog pro reportování bugu.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2265" />
-      <source>Request Feature</source>
-      <translation>Požadavek na vlastnost</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2266" />
-      <source>Request &amp;Feature...</source>
-      <translation>&amp;Požadavek na vlastnost...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2268" />
-      <source>Send a feature request</source>
-      <translation>Poslat požadavek na vlastnost</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2270" />
+      <source>Request Feature</source>
+      <translation>Požadavek na vlastnost</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2271" />
+      <source>Request &amp;Feature...</source>
+      <translation>&amp;Požadavek na vlastnost...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2273" />
+      <source>Send a feature request</source>
+      <translation>Poslat požadavek na vlastnost</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2275" />
       <source>&lt;b&gt;Request Feature...&lt;/b&gt;&lt;p&gt;Opens a dialog to send a feature request.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Požadavek na vlastnost...&lt;/b&gt;&lt;p&gt;Otevře dialog pro odeslání požadavku.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3388" />
-      <location filename="../UI/UserInterface.py" line="3365" />
-      <location filename="../UI/UserInterface.py" line="2280" />
+      <location filename="../UI/UserInterface.py" line="3393" />
+      <location filename="../UI/UserInterface.py" line="3370" />
+      <location filename="../UI/UserInterface.py" line="2285" />
       <source>Unittest</source>
       <translation />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2282" />
+      <location filename="../UI/UserInterface.py" line="2287" />
       <source>&amp;Unittest...</source>
       <translation>&amp;Unittest...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2284" />
+      <location filename="../UI/UserInterface.py" line="2289" />
       <source>Start unittest dialog</source>
       <translation>Otevřít dialog unittestu</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2285" />
+      <location filename="../UI/UserInterface.py" line="2290" />
       <source>&lt;b&gt;Unittest&lt;/b&gt;&lt;p&gt;Perform unit tests. The dialog gives you the ability to select and run a unittest suite.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Unittest&lt;/b&gt;&lt;p&gt;Provést unittesty. V dialogovém okně se nastaví který test se má provést.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2294" />
-      <source>Unittest Restart</source>
-      <translation>Restart unittestu</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2296" />
-      <source>&amp;Restart Unittest...</source>
-      <translation>&amp;Restart unittestu...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2298" />
-      <source>Restart last unittest</source>
-      <translation>Restart posledního unittestu</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2299" />
+      <source>Unittest Restart</source>
+      <translation>Restart unittestu</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2301" />
+      <source>&amp;Restart Unittest...</source>
+      <translation>&amp;Restart unittestu...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2303" />
+      <source>Restart last unittest</source>
+      <translation>Restart posledního unittestu</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2304" />
       <source>&lt;b&gt;Restart Unittest&lt;/b&gt;&lt;p&gt;Restart the unittest performed last.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Restart unittestu&lt;/b&gt;&lt;p&gt;Restartuje se poslední provedený unittest.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2308" />
+      <location filename="../UI/UserInterface.py" line="2313" />
       <source>Unittest Rerun Failed</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2310" />
+      <location filename="../UI/UserInterface.py" line="2315" />
       <source>Rerun Failed Tests...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2312" />
+      <location filename="../UI/UserInterface.py" line="2317" />
       <source>Rerun failed tests of the last run</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2314" />
+      <location filename="../UI/UserInterface.py" line="2319" />
       <source>&lt;b&gt;Rerun Failed Tests&lt;/b&gt;&lt;p&gt;Rerun all tests that failed during the last unittest run.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2324" />
+      <location filename="../UI/UserInterface.py" line="2329" />
       <source>Unittest Script</source>
       <translation />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2326" />
+      <location filename="../UI/UserInterface.py" line="2331" />
       <source>Unittest &amp;Script...</source>
       <translation>Unittest &amp;Script...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2328" />
+      <location filename="../UI/UserInterface.py" line="2333" />
       <source>Run unittest with current script</source>
       <translation>Spustit unittest s aktuálním skriptem</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2330" />
+      <location filename="../UI/UserInterface.py" line="2335" />
       <source>&lt;b&gt;Unittest Script&lt;/b&gt;&lt;p&gt;Run unittest with current script.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Unittest Script&lt;/b&gt;&lt;p&gt;Spustit unittest s aktuálním skriptem.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2339" />
+      <location filename="../UI/UserInterface.py" line="2344" />
       <source>Unittest Project</source>
       <translation>Unittest Projekt</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2341" />
+      <location filename="../UI/UserInterface.py" line="2346" />
       <source>Unittest &amp;Project...</source>
       <translation>Unittest &amp;Projekt...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2343" />
+      <location filename="../UI/UserInterface.py" line="2348" />
       <source>Run unittest with current project</source>
       <translation>Spustit unittest s aktuálním projektem</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2345" />
+      <location filename="../UI/UserInterface.py" line="2350" />
       <source>&lt;b&gt;Unittest Project&lt;/b&gt;&lt;p&gt;Run unittest with current project.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Unittest projekt&lt;/b&gt;&lt;p&gt;Spustit unittest s aktuálním projektem.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2366" />
-      <source>Qt-Designer</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2368" />
-      <source>Qt-&amp;Designer...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2370" />
-      <source>Start Qt-Designer</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2371" />
+      <source>Qt-Designer</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2373" />
+      <source>Qt-&amp;Designer...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2375" />
+      <source>Start Qt-Designer</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2376" />
       <source>&lt;b&gt;Qt-Designer&lt;/b&gt;&lt;p&gt;Start Qt-Designer.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2392" />
-      <source>Qt-Linguist</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2394" />
-      <source>Qt-&amp;Linguist...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2396" />
-      <source>Start Qt-Linguist</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2397" />
+      <source>Qt-Linguist</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2399" />
+      <source>Qt-&amp;Linguist...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2401" />
+      <source>Start Qt-Linguist</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2402" />
       <source>&lt;b&gt;Qt-Linguist&lt;/b&gt;&lt;p&gt;Start Qt-Linguist.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2407" />
-      <source>UI Previewer</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2409" />
-      <source>&amp;UI Previewer...</source>
-      <translation>&amp;UI Previewer...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2411" />
-      <source>Start the UI Previewer</source>
-      <translation>Spustit UI Previewer</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2412" />
+      <source>UI Previewer</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2414" />
+      <source>&amp;UI Previewer...</source>
+      <translation>&amp;UI Previewer...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2416" />
+      <source>Start the UI Previewer</source>
+      <translation>Spustit UI Previewer</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2417" />
       <source>&lt;b&gt;UI Previewer&lt;/b&gt;&lt;p&gt;Start the UI Previewer.&lt;/p&gt;</source>
       <translation>&lt;b&gt;UI Previewer&lt;/b&gt;&lt;p&gt;Spustit UI Previewer.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2420" />
+      <location filename="../UI/UserInterface.py" line="2425" />
       <source>Translations Previewer</source>
       <translation>Náhled překladů</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2422" />
+      <location filename="../UI/UserInterface.py" line="2427" />
       <source>&amp;Translations Previewer...</source>
       <translation>Náhled &amp;překladů...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2424" />
+      <location filename="../UI/UserInterface.py" line="2429" />
       <source>Start the Translations Previewer</source>
       <translation>Spustit Previewer překladů</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2426" />
+      <location filename="../UI/UserInterface.py" line="2431" />
       <source>&lt;b&gt;Translations Previewer&lt;/b&gt;&lt;p&gt;Start the Translations Previewer.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Previewer překladů&lt;/b&gt;&lt;p&gt;Spustit Previewer překladů.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2434" />
-      <source>Compare Files</source>
-      <translation>Porovnat soubory</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2436" />
-      <source>&amp;Compare Files...</source>
-      <translation>&amp;Porovnat soubory...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2451" />
-      <location filename="../UI/UserInterface.py" line="2438" />
-      <source>Compare two files</source>
-      <translation>Porovnat dva soubory</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2439" />
+      <source>Compare Files</source>
+      <translation>Porovnat soubory</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2441" />
+      <source>&amp;Compare Files...</source>
+      <translation>&amp;Porovnat soubory...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2456" />
+      <location filename="../UI/UserInterface.py" line="2443" />
+      <source>Compare two files</source>
+      <translation>Porovnat dva soubory</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2444" />
       <source>&lt;b&gt;Compare Files&lt;/b&gt;&lt;p&gt;Open a dialog to compare two files.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Porovnat soubory&lt;/b&gt;&lt;p&gt;Otevře dialog pro porovnání dvou souborů.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2447" />
-      <source>Compare Files side by side</source>
-      <translation>Porovnat soubory stranu proti straně</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2449" />
-      <source>Compare &amp;Files side by side...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2452" />
+      <source>Compare Files side by side</source>
+      <translation>Porovnat soubory stranu proti straně</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2454" />
+      <source>Compare &amp;Files side by side...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2457" />
       <source>&lt;b&gt;Compare Files side by side&lt;/b&gt;&lt;p&gt;Open a dialog to compare two files and show the result side by side.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Porovnat soubory stranu proti straně&lt;/b&gt;&lt;p&gt;Otevře dialog pro porovnání souborů a zobrazení rozdílů strany proti straně.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2461" />
-      <source>SQL Browser</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2463" />
-      <source>SQL &amp;Browser...</source>
-      <translation>SQL &amp;Browser...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2465" />
-      <source>Browse a SQL database</source>
-      <translation>Procházet SQL databázi</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2466" />
+      <source>SQL Browser</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2468" />
+      <source>SQL &amp;Browser...</source>
+      <translation>SQL &amp;Browser...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2470" />
+      <source>Browse a SQL database</source>
+      <translation>Procházet SQL databázi</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2471" />
       <source>&lt;b&gt;SQL Browser&lt;/b&gt;&lt;p&gt;Browse a SQL database.&lt;/p&gt;</source>
       <translation>&lt;b&gt;SQL Browser&lt;/b&gt;&lt;p&gt;Procházet SQL databázi.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2478" />
-      <location filename="../UI/UserInterface.py" line="2474" />
+      <location filename="../UI/UserInterface.py" line="2483" />
+      <location filename="../UI/UserInterface.py" line="2479" />
       <source>Mini Editor</source>
       <translation />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2476" />
+      <location filename="../UI/UserInterface.py" line="2481" />
       <source>Mini &amp;Editor...</source>
       <translation>Mini &amp;Editor...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2479" />
+      <location filename="../UI/UserInterface.py" line="2484" />
       <source>&lt;b&gt;Mini Editor&lt;/b&gt;&lt;p&gt;Open a dialog with a simplified editor.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Mini editor&lt;/b&gt;&lt;p&gt;Otevře se okno s jednoduchým editorem&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2487" />
+      <location filename="../UI/UserInterface.py" line="2492" />
       <source>Hex Editor</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2489" />
+      <location filename="../UI/UserInterface.py" line="2494" />
       <source>&amp;Hex Editor...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2491" />
+      <location filename="../UI/UserInterface.py" line="2496" />
       <source>Start the eric Hex Editor</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2493" />
+      <location filename="../UI/UserInterface.py" line="2498" />
       <source>&lt;b&gt;Hex Editor&lt;/b&gt;&lt;p&gt;Starts the eric Hex Editor for viewing or editing binary files.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2502" />
+      <location filename="../UI/UserInterface.py" line="2507" />
       <source>eric Web Browser</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2504" />
+      <location filename="../UI/UserInterface.py" line="2509" />
       <source>eric &amp;Web Browser...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2506" />
+      <location filename="../UI/UserInterface.py" line="2511" />
       <source>Start the eric Web Browser</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2508" />
+      <location filename="../UI/UserInterface.py" line="2513" />
       <source>&lt;b&gt;eric Web Browser&lt;/b&gt;&lt;p&gt;Browse the Internet with the eric Web Browser.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2516" />
+      <location filename="../UI/UserInterface.py" line="2521" />
       <source>Icon Editor</source>
       <translation>Editor ikon</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2518" />
+      <location filename="../UI/UserInterface.py" line="2523" />
       <source>&amp;Icon Editor...</source>
       <translation>Editor &amp;ikon...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2520" />
+      <location filename="../UI/UserInterface.py" line="2525" />
       <source>Start the eric Icon Editor</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2522" />
+      <location filename="../UI/UserInterface.py" line="2527" />
       <source>&lt;b&gt;Icon Editor&lt;/b&gt;&lt;p&gt;Starts the eric Icon Editor for editing simple icons.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2530" />
+      <location filename="../UI/UserInterface.py" line="2535" />
       <source>Snapshot</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2532" />
+      <location filename="../UI/UserInterface.py" line="2537" />
       <source>&amp;Snapshot...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2534" />
+      <location filename="../UI/UserInterface.py" line="2539" />
       <source>Take snapshots of a screen region</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2536" />
+      <location filename="../UI/UserInterface.py" line="2541" />
       <source>&lt;b&gt;Snapshot&lt;/b&gt;&lt;p&gt;This opens a dialog to take snapshots of a screen region.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2545" />
+      <location filename="../UI/UserInterface.py" line="2550" />
       <source>Preferences</source>
       <translation>Nastavení</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2547" />
+      <location filename="../UI/UserInterface.py" line="2552" />
       <source>&amp;Preferences...</source>
       <translation>Na&amp;stavení...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2549" />
+      <location filename="../UI/UserInterface.py" line="2554" />
       <source>Set the prefered configuration</source>
       <translation>Nastavení konfigurace</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2551" />
+      <location filename="../UI/UserInterface.py" line="2556" />
       <source>&lt;b&gt;Preferences&lt;/b&gt;&lt;p&gt;Set the configuration items of the application with your prefered values.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Nastavení&lt;/b&gt;&lt;p&gt;Upravit konfiguraci aplikace podle požadavků uživatele.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2561" />
+      <location filename="../UI/UserInterface.py" line="2566" />
       <source>Export Preferences</source>
       <translation>Exportovat předvolby</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2563" />
+      <location filename="../UI/UserInterface.py" line="2568" />
       <source>E&amp;xport Preferences...</source>
       <translation>E&amp;xportovat předvolby...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2565" />
+      <location filename="../UI/UserInterface.py" line="2570" />
       <source>Export the current configuration</source>
       <translation>Export aktuální konfigurace</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2567" />
+      <location filename="../UI/UserInterface.py" line="2572" />
       <source>&lt;b&gt;Export Preferences&lt;/b&gt;&lt;p&gt;Export the current configuration to a file.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Export předvoleb&lt;/b&gt;&lt;p&gt;Export aktuální konfigurace do souboru.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2575" />
+      <location filename="../UI/UserInterface.py" line="2580" />
       <source>Import Preferences</source>
       <translation>Import předvoleb</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2577" />
+      <location filename="../UI/UserInterface.py" line="2582" />
       <source>I&amp;mport Preferences...</source>
       <translation>I&amp;mport předvoleb...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2579" />
+      <location filename="../UI/UserInterface.py" line="2584" />
       <source>Import a previously exported configuration</source>
       <translation>Import dříve exportované konfigurace</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2581" />
+      <location filename="../UI/UserInterface.py" line="2586" />
       <source>&lt;b&gt;Import Preferences&lt;/b&gt;&lt;p&gt;Import a previously exported configuration.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Import předvoleb&lt;/b&gt;&lt;p&gt;Import dříve exportované konfigurace.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2589" />
-      <source>Reload APIs</source>
-      <translation>Obnovit API</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2590" />
-      <source>Reload &amp;APIs</source>
-      <translation>Obnovit &amp;API</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2592" />
-      <source>Reload the API information</source>
-      <translation>Obnovit API nastavení</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2594" />
+      <source>Reload APIs</source>
+      <translation>Obnovit API</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2595" />
+      <source>Reload &amp;APIs</source>
+      <translation>Obnovit &amp;API</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2597" />
+      <source>Reload the API information</source>
+      <translation>Obnovit API nastavení</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2599" />
       <source>&lt;b&gt;Reload APIs&lt;/b&gt;&lt;p&gt;Reload the API information.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Obnovit API&lt;/b&gt;&lt;p&gt;Obnovit API nastavení.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2606" />
-      <location filename="../UI/UserInterface.py" line="2602" />
+      <location filename="../UI/UserInterface.py" line="2611" />
+      <location filename="../UI/UserInterface.py" line="2607" />
       <source>Show external tools</source>
       <translation>Zobrazit externí nástroje</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2604" />
+      <location filename="../UI/UserInterface.py" line="2609" />
       <source>Show external &amp;tools</source>
       <translation>Zobrazit externí nás&amp;troje</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2608" />
+      <location filename="../UI/UserInterface.py" line="2613" />
       <source>&lt;b&gt;Show external tools&lt;/b&gt;&lt;p&gt;Opens a dialog to show the path and versions of all extenal tools used by eric.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2618" />
+      <location filename="../UI/UserInterface.py" line="2623" />
       <source>View Profiles</source>
       <translation>Profily pohledů</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2620" />
+      <location filename="../UI/UserInterface.py" line="2625" />
       <source>&amp;View Profiles...</source>
       <translation>Profily &amp;pohledů...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2622" />
+      <location filename="../UI/UserInterface.py" line="2627" />
       <source>Configure view profiles</source>
       <translation>Konfigurace profilů pohledů</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2624" />
+      <location filename="../UI/UserInterface.py" line="2629" />
       <source>&lt;b&gt;View Profiles&lt;/b&gt;&lt;p&gt;Configure the view profiles. With this dialog you may set the visibility of the various windows for the predetermined view profiles.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Profily pohledů&lt;/b&gt;&lt;p&gt;Konfigurace profilu pohledů. V tomto dialogu můžete nastavit zobrazování různých typů pohledů - editačních oken.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2635" />
-      <source>Toolbars</source>
-      <translation>Lišty nástrojů</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2637" />
-      <source>Tool&amp;bars...</source>
-      <translation>&amp;Lišty nástrojů...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2639" />
-      <source>Configure toolbars</source>
-      <translation>Konfigurace lišt nástrojů</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2640" />
+      <source>Toolbars</source>
+      <translation>Lišty nástrojů</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2642" />
+      <source>Tool&amp;bars...</source>
+      <translation>&amp;Lišty nástrojů...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2644" />
+      <source>Configure toolbars</source>
+      <translation>Konfigurace lišt nástrojů</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2645" />
       <source>&lt;b&gt;Toolbars&lt;/b&gt;&lt;p&gt;Configure the toolbars. With this dialog you may change the actions shown on the various toolbars and define your own toolbars.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Listy nástrojů&lt;/b&gt;&lt;p&gt;Konfigurace lišt nástrojů. S tímto dialogem můžete změnit akce zobrazené v různých nástrojových lištách nebo definovat své vlastní nástrojové lišty.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2650" />
+      <location filename="../UI/UserInterface.py" line="2655" />
       <source>Keyboard Shortcuts</source>
       <translation>Klávesové zkratky</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2652" />
+      <location filename="../UI/UserInterface.py" line="2657" />
       <source>Keyboard &amp;Shortcuts...</source>
       <translation>Klávesové &amp;zkratky...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2654" />
+      <location filename="../UI/UserInterface.py" line="2659" />
       <source>Set the keyboard shortcuts</source>
       <translation>Nastavení klávesových zkratek</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2656" />
+      <location filename="../UI/UserInterface.py" line="2661" />
       <source>&lt;b&gt;Keyboard Shortcuts&lt;/b&gt;&lt;p&gt;Set the keyboard shortcuts of the application with your prefered values.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Klávesové zkratky&lt;/b&gt;&lt;p&gt;Nastavení klávesových zkratek aplikace podle zvyklostí uživatele.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6371" />
-      <location filename="../UI/UserInterface.py" line="6353" />
-      <location filename="../UI/UserInterface.py" line="2665" />
+      <location filename="../UI/UserInterface.py" line="6376" />
+      <location filename="../UI/UserInterface.py" line="6358" />
+      <location filename="../UI/UserInterface.py" line="2670" />
       <source>Export Keyboard Shortcuts</source>
       <translation>Exportovat klávesové zkratky</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2667" />
+      <location filename="../UI/UserInterface.py" line="2672" />
       <source>&amp;Export Keyboard Shortcuts...</source>
       <translation>&amp;Exportovat klávesové zkratky...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2669" />
+      <location filename="../UI/UserInterface.py" line="2674" />
       <source>Export the keyboard shortcuts</source>
       <translation>Export klávesových zkratek</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2671" />
+      <location filename="../UI/UserInterface.py" line="2676" />
       <source>&lt;b&gt;Export Keyboard Shortcuts&lt;/b&gt;&lt;p&gt;Export the keyboard shortcuts of the application.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Export klávesových zkratek&lt;/b&gt;&lt;p&gt;Exportují se klávesové zkratky z aplikace.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6388" />
-      <location filename="../UI/UserInterface.py" line="2679" />
+      <location filename="../UI/UserInterface.py" line="6393" />
+      <location filename="../UI/UserInterface.py" line="2684" />
       <source>Import Keyboard Shortcuts</source>
       <translation>Import klávesových zkratek</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2681" />
+      <location filename="../UI/UserInterface.py" line="2686" />
       <source>&amp;Import Keyboard Shortcuts...</source>
       <translation>&amp;Import klávesových zkratek...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2683" />
+      <location filename="../UI/UserInterface.py" line="2688" />
       <source>Import the keyboard shortcuts</source>
       <translation>Import klávesových zkratek</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2685" />
+      <location filename="../UI/UserInterface.py" line="2690" />
       <source>&lt;b&gt;Import Keyboard Shortcuts&lt;/b&gt;&lt;p&gt;Import the keyboard shortcuts of the application.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Import klávesových zkratek&lt;/b&gt;&lt;p&gt;Do aplikace se importují klávesové zkratky.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2694" />
+      <location filename="../UI/UserInterface.py" line="2699" />
       <source>Manage SSL Certificates</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2696" />
+      <location filename="../UI/UserInterface.py" line="2701" />
       <source>Manage SSL Certificates...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2698" />
+      <location filename="../UI/UserInterface.py" line="2703" />
       <source>Manage the saved SSL certificates</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2700" />
+      <location filename="../UI/UserInterface.py" line="2705" />
       <source>&lt;b&gt;Manage SSL Certificates...&lt;/b&gt;&lt;p&gt;Opens a dialog to manage the saved SSL certificates.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2710" />
+      <location filename="../UI/UserInterface.py" line="2715" />
       <source>Edit Message Filters</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2712" />
+      <location filename="../UI/UserInterface.py" line="2717" />
       <source>Edit Message Filters...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2714" />
+      <location filename="../UI/UserInterface.py" line="2719" />
       <source>Edit the message filters used to suppress unwanted messages</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2716" />
+      <location filename="../UI/UserInterface.py" line="2721" />
       <source>&lt;b&gt;Edit Message Filters&lt;/b&gt;&lt;p&gt;Opens a dialog to edit the message filters used to suppress unwanted messages been shown in an error window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
+      <location filename="../UI/UserInterface.py" line="2737" />
+      <location filename="../UI/UserInterface.py" line="2734" />
       <location filename="../UI/UserInterface.py" line="2732" />
-      <location filename="../UI/UserInterface.py" line="2729" />
-      <location filename="../UI/UserInterface.py" line="2727" />
       <source>Clear private data</source>
       <translation type="unfinished">Smazat soukromá data</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2734" />
+      <location filename="../UI/UserInterface.py" line="2739" />
       <source>&lt;b&gt;Clear private data&lt;/b&gt;&lt;p&gt;Clears the private data like the various list of recently opened files, projects or multi projects.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2745" />
-      <location filename="../UI/UserInterface.py" line="2744" />
+      <location filename="../UI/UserInterface.py" line="2750" />
+      <location filename="../UI/UserInterface.py" line="2749" />
       <source>Activate current editor</source>
       <translation>Aktivovat aktuální editor</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2746" />
+      <location filename="../UI/UserInterface.py" line="2751" />
       <source>Alt+Shift+E</source>
       <translation />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2755" />
-      <location filename="../UI/UserInterface.py" line="2754" />
+      <location filename="../UI/UserInterface.py" line="2760" />
+      <location filename="../UI/UserInterface.py" line="2759" />
       <source>Show next</source>
       <translation>Zobrazit další</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2756" />
+      <location filename="../UI/UserInterface.py" line="2761" />
       <source>Ctrl+Alt+Tab</source>
       <translation />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2764" />
-      <location filename="../UI/UserInterface.py" line="2763" />
+      <location filename="../UI/UserInterface.py" line="2769" />
+      <location filename="../UI/UserInterface.py" line="2768" />
       <source>Show previous</source>
       <translation>Zobrazit předchozí</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2765" />
+      <location filename="../UI/UserInterface.py" line="2770" />
       <source>Shift+Ctrl+Alt+Tab</source>
       <translation />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2773" />
-      <location filename="../UI/UserInterface.py" line="2772" />
+      <location filename="../UI/UserInterface.py" line="2778" />
+      <location filename="../UI/UserInterface.py" line="2777" />
       <source>Switch between tabs</source>
       <translation>Přepnout mezi taby</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2774" />
+      <location filename="../UI/UserInterface.py" line="2779" />
       <source>Ctrl+1</source>
       <translation />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2781" />
+      <location filename="../UI/UserInterface.py" line="2786" />
       <source>Plugin Infos</source>
       <translation>Plugin Infa</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2783" />
+      <location filename="../UI/UserInterface.py" line="2788" />
       <source>&amp;Plugin Infos...</source>
       <translation>&amp;Plugin Infa...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2784" />
+      <location filename="../UI/UserInterface.py" line="2789" />
       <source>Show Plugin Infos</source>
       <translation>Zobrazit Plugin infa</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2785" />
+      <location filename="../UI/UserInterface.py" line="2790" />
       <source>&lt;b&gt;Plugin Infos...&lt;/b&gt;&lt;p&gt;This opens a dialog, that show some information about loaded plugins.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Plugin Infa&lt;/b&gt;&lt;p&gt;Otevře dialog, který zobrazí informace o načtených pluginech.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2798" />
-      <location filename="../UI/UserInterface.py" line="2794" />
+      <location filename="../UI/UserInterface.py" line="2803" />
+      <location filename="../UI/UserInterface.py" line="2799" />
       <source>Install Plugins</source>
       <translation>Instalovat pluginy</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2796" />
+      <location filename="../UI/UserInterface.py" line="2801" />
       <source>&amp;Install Plugins...</source>
       <translation>&amp;Instalovat pluginy...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2799" />
+      <location filename="../UI/UserInterface.py" line="2804" />
       <source>&lt;b&gt;Install Plugins...&lt;/b&gt;&lt;p&gt;This opens a dialog to install or update plugins.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Instalovat pluginy...&lt;/b&gt;&lt;p&gt;Otevře dialog pro instalaci nebo aktualizaci pluginů.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2811" />
-      <location filename="../UI/UserInterface.py" line="2807" />
+      <location filename="../UI/UserInterface.py" line="2816" />
+      <location filename="../UI/UserInterface.py" line="2812" />
       <source>Uninstall Plugin</source>
       <translation>Odinstalovat plugin</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2809" />
+      <location filename="../UI/UserInterface.py" line="2814" />
       <source>&amp;Uninstall Plugin...</source>
       <translation>&amp;Odinstalovat plugin...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2812" />
+      <location filename="../UI/UserInterface.py" line="2817" />
       <source>&lt;b&gt;Uninstall Plugin...&lt;/b&gt;&lt;p&gt;This opens a dialog to uninstall a plugin.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Odinstalovat plugin...&lt;/b&gt;&lt;p&gt;Otevře dialog pro odinstalaci pluginu.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2820" />
+      <location filename="../UI/UserInterface.py" line="2825" />
       <source>Plugin Repository</source>
       <translation>Repozitář pluginů</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2822" />
+      <location filename="../UI/UserInterface.py" line="2827" />
       <source>Plugin &amp;Repository...</source>
       <translation>&amp;Repozitář pluginů...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2824" />
+      <location filename="../UI/UserInterface.py" line="2829" />
       <source>Show Plugins available for download</source>
       <translation>Zobrazit pluginy dostupné ke stažení</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2826" />
+      <location filename="../UI/UserInterface.py" line="2831" />
       <source>&lt;b&gt;Plugin Repository...&lt;/b&gt;&lt;p&gt;This opens a dialog, that shows a list of plugins available on the Internet.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Repozitář pluginů...&lt;/b&gt;&lt;p&gt;Otevře se dialog, který zobrazí seznam pluginů dostupných ke stažení přes internet.&lt;/p&gt;</translation>
     </message>
     <message>
+      <location filename="../UI/UserInterface.py" line="2845" />
       <location filename="../UI/UserInterface.py" line="2840" />
-      <location filename="../UI/UserInterface.py" line="2835" />
       <source>Virtualenv Manager</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2837" />
-      <source>&amp;Virtualenv Manager...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2842" />
+      <source>&amp;Virtualenv Manager...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2847" />
       <source>&lt;b&gt;Virtualenv Manager&lt;/b&gt;&lt;p&gt;This opens a dialog to manage the defined Python virtual environments.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
+      <location filename="../UI/UserInterface.py" line="2862" />
       <location filename="../UI/UserInterface.py" line="2857" />
-      <location filename="../UI/UserInterface.py" line="2852" />
       <source>Virtualenv Configurator</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2854" />
-      <source>Virtualenv &amp;Configurator...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2859" />
+      <source>Virtualenv &amp;Configurator...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2864" />
       <source>&lt;b&gt;Virtualenv Configurator&lt;/b&gt;&lt;p&gt;This opens a dialog for entering all the parameters needed to create a Python virtual environment using virtualenv or pyvenv.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2887" />
-      <location filename="../UI/UserInterface.py" line="2886" />
+      <location filename="../UI/UserInterface.py" line="2892" />
+      <location filename="../UI/UserInterface.py" line="2891" />
       <source>Qt5 Documentation</source>
       <translation type="unfinished">Qt4 dokumentace {5 ?}</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2889" />
+      <location filename="../UI/UserInterface.py" line="2894" />
       <source>Open Qt5 Documentation</source>
       <translation type="unfinished">Otevřít Qt4 dokumentaci {5 ?}</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2890" />
+      <location filename="../UI/UserInterface.py" line="2895" />
       <source>&lt;b&gt;Qt5 Documentation&lt;/b&gt;&lt;p&gt;Display the Qt5 Documentation. Dependent upon your settings, this will either show the help in Eric's internal help viewer/web browser, or execute a web browser or Qt Assistant. &lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2902" />
-      <location filename="../UI/UserInterface.py" line="2901" />
+      <location filename="../UI/UserInterface.py" line="2907" />
+      <location filename="../UI/UserInterface.py" line="2906" />
       <source>Qt6 Documentation</source>
       <translation type="unfinished">Qt4 dokumentace {6 ?}</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2904" />
+      <location filename="../UI/UserInterface.py" line="2909" />
       <source>Open Qt6 Documentation</source>
       <translation type="unfinished">Otevřít Qt4 dokumentaci {6 ?}</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2905" />
+      <location filename="../UI/UserInterface.py" line="2910" />
       <source>&lt;b&gt;Qt6 Documentation&lt;/b&gt;&lt;p&gt;Display the Qt6 Documentation. Dependent upon your settings, this will either show the help in Eric's internal help viewer/web browser, or execute a web browser or Qt Assistant. &lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2917" />
-      <location filename="../UI/UserInterface.py" line="2916" />
+      <location filename="../UI/UserInterface.py" line="2922" />
+      <location filename="../UI/UserInterface.py" line="2921" />
       <source>PyQt5 Documentation</source>
       <translation type="unfinished">PyQt4 dokumentace {5 ?}</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2919" />
+      <location filename="../UI/UserInterface.py" line="2924" />
       <source>Open PyQt5 Documentation</source>
       <translation type="unfinished">Otevřít PyQt4 dokumentaci {5 ?}</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2921" />
+      <location filename="../UI/UserInterface.py" line="2926" />
       <source>&lt;b&gt;PyQt5 Documentation&lt;/b&gt;&lt;p&gt;Display the PyQt5 Documentation. Dependent upon your settings, this will either show the help in Eric's internal help viewer/web browser, or execute a web browser or Qt Assistant. &lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2934" />
-      <location filename="../UI/UserInterface.py" line="2933" />
+      <location filename="../UI/UserInterface.py" line="2939" />
+      <location filename="../UI/UserInterface.py" line="2938" />
       <source>PyQt6 Documentation</source>
       <translation type="unfinished">PyQt4 dokumentace {6 ?}</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2936" />
+      <location filename="../UI/UserInterface.py" line="2941" />
       <source>Open PyQt6 Documentation</source>
       <translation type="unfinished">Otevřít PyQt4 dokumentaci {6 ?}</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2938" />
+      <location filename="../UI/UserInterface.py" line="2943" />
       <source>&lt;b&gt;PyQt6 Documentation&lt;/b&gt;&lt;p&gt;Display the PyQt6 Documentation. Dependent upon your settings, this will either show the help in Eric's internal help viewer/web browser, or execute a web browser or Qt Assistant. &lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2956" />
-      <location filename="../UI/UserInterface.py" line="2955" />
+      <location filename="../UI/UserInterface.py" line="2961" />
+      <location filename="../UI/UserInterface.py" line="2960" />
       <source>Python 3 Documentation</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2958" />
+      <location filename="../UI/UserInterface.py" line="2963" />
       <source>Open Python 3 Documentation</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2960" />
+      <location filename="../UI/UserInterface.py" line="2965" />
       <source>&lt;b&gt;Python 3 Documentation&lt;/b&gt;&lt;p&gt;Display the Python 3 documentation. If no documentation directory is configured, the location of the Python 3 documentation is assumed to be the doc directory underneath the location of the Python 3 executable on Windows and &lt;i&gt;/usr/share/doc/packages/python/html&lt;/i&gt; on Unix. Set PYTHON3DOCDIR in your environment to override this.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2978" />
-      <location filename="../UI/UserInterface.py" line="2977" />
+      <location filename="../UI/UserInterface.py" line="2983" />
+      <location filename="../UI/UserInterface.py" line="2982" />
       <source>Eric API Documentation</source>
       <translation>Eric API dokumentace</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2980" />
+      <location filename="../UI/UserInterface.py" line="2985" />
       <source>Open Eric API Documentation</source>
       <translation>Otevřít Eric API dokumentaci</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2982" />
+      <location filename="../UI/UserInterface.py" line="2987" />
       <source>&lt;b&gt;Eric API Documentation&lt;/b&gt;&lt;p&gt;Display the Eric API documentation. The location for the documentation is the Documentation/Source subdirectory of the eric installation directory.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2999" />
-      <location filename="../UI/UserInterface.py" line="2998" />
+      <location filename="../UI/UserInterface.py" line="3004" />
+      <location filename="../UI/UserInterface.py" line="3003" />
       <source>PySide2 Documentation</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3001" />
+      <location filename="../UI/UserInterface.py" line="3006" />
       <source>Open PySide2 Documentation</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3003" />
+      <location filename="../UI/UserInterface.py" line="3008" />
       <source>&lt;b&gt;PySide2 Documentation&lt;/b&gt;&lt;p&gt;Display the PySide2 Documentation. Dependent upon your settings, this will either show the help in Eric's internal help viewer/web browser, or execute a web browser or Qt Assistant. &lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3019" />
-      <location filename="../UI/UserInterface.py" line="3018" />
+      <location filename="../UI/UserInterface.py" line="3024" />
+      <location filename="../UI/UserInterface.py" line="3023" />
       <source>PySide6 Documentation</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3021" />
+      <location filename="../UI/UserInterface.py" line="3026" />
       <source>Open PySide6 Documentation</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3023" />
+      <location filename="../UI/UserInterface.py" line="3028" />
       <source>&lt;b&gt;PySide6 Documentation&lt;/b&gt;&lt;p&gt;Display the PySide6 Documentation. Dependent upon your settings, this will either show the help in Eric's internal help viewer/web browser, or execute a web browser or Qt Assistant. &lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3125" />
+      <location filename="../UI/UserInterface.py" line="3130" />
       <source>E&amp;xtras</source>
       <translation>E&amp;xtra funkce</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3135" />
+      <location filename="../UI/UserInterface.py" line="3140" />
       <source>Wi&amp;zards</source>
       <translation>&amp;Průvodci</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3162" />
+      <location filename="../UI/UserInterface.py" line="3167" />
       <source>P&amp;lugins</source>
       <translation>P&amp;luginy</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3172" />
+      <location filename="../UI/UserInterface.py" line="3177" />
       <source>Configure...</source>
       <translation>Konfigurovat...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3181" />
+      <location filename="../UI/UserInterface.py" line="3186" />
       <source>&amp;Unittest</source>
       <translation>&amp;Unittest</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3198" />
+      <location filename="../UI/UserInterface.py" line="3203" />
       <source>Select Tool Group</source>
       <translation>Vybrat skupinu nástrojů</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3209" />
+      <location filename="../UI/UserInterface.py" line="3214" />
       <source>Se&amp;ttings</source>
       <translation>Nas&amp;tavení</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3239" />
+      <location filename="../UI/UserInterface.py" line="3244" />
       <source>&amp;Window</source>
       <translation>O&amp;kno</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3248" />
+      <location filename="../UI/UserInterface.py" line="3253" />
       <source>&amp;Windows</source>
       <translation type="unfinished">&amp;Windows</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3252" />
+      <location filename="../UI/UserInterface.py" line="3257" />
       <source>Central Park</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3255" />
+      <location filename="../UI/UserInterface.py" line="3260" />
       <source>Left Side</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3267" />
+      <location filename="../UI/UserInterface.py" line="3272" />
       <source>Bottom Side</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3274" />
+      <location filename="../UI/UserInterface.py" line="3279" />
       <source>Right Side</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3294" />
+      <location filename="../UI/UserInterface.py" line="3299" />
       <source>Plug-ins</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3301" />
+      <location filename="../UI/UserInterface.py" line="3306" />
       <source>&amp;Toolbars</source>
       <translation>&amp;Toolbary</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3314" />
+      <location filename="../UI/UserInterface.py" line="3319" />
       <source>&amp;Help</source>
       <translation>&amp;Nápověda</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3387" />
-      <location filename="../UI/UserInterface.py" line="3364" />
-      <source>Tools</source>
-      <translation>Nástroje</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="3389" />
-      <location filename="../UI/UserInterface.py" line="3368" />
-      <source>Settings</source>
-      <translation>Nastavení</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="5246" />
-      <location filename="../UI/UserInterface.py" line="3390" />
-      <location filename="../UI/UserInterface.py" line="3369" />
-      <source>Help</source>
-      <translation>Nápověda</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="3391" />
-      <location filename="../UI/UserInterface.py" line="3370" />
-      <source>Profiles</source>
-      <translation>Profily</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="3392" />
-      <location filename="../UI/UserInterface.py" line="3371" />
+      <location filename="../UI/UserInterface.py" line="3369" />
+      <source>Tools</source>
+      <translation>Nástroje</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="3394" />
+      <location filename="../UI/UserInterface.py" line="3373" />
+      <source>Settings</source>
+      <translation>Nastavení</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="5251" />
+      <location filename="../UI/UserInterface.py" line="3395" />
+      <location filename="../UI/UserInterface.py" line="3374" />
+      <source>Help</source>
+      <translation>Nápověda</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="3396" />
+      <location filename="../UI/UserInterface.py" line="3375" />
+      <source>Profiles</source>
+      <translation>Profily</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="3397" />
+      <location filename="../UI/UserInterface.py" line="3376" />
       <source>Plugins</source>
       <translation>Pluginy</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3557" />
+      <location filename="../UI/UserInterface.py" line="3562" />
       <source>&lt;p&gt;This part of the status bar displays the current editors language.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Tato část status baru zobrazuje aktuální jazyk editoru.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3564" />
+      <location filename="../UI/UserInterface.py" line="3569" />
       <source>&lt;p&gt;This part of the status bar displays the current editors encoding.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Tato část status baru zobrazuje aktuální kódování editorů.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3571" />
+      <location filename="../UI/UserInterface.py" line="3576" />
       <source>&lt;p&gt;This part of the status bar displays the current editors eol setting.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Tato část status baru zobrazuje eol nastavení v aktuálním editoru.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3578" />
+      <location filename="../UI/UserInterface.py" line="3583" />
       <source>&lt;p&gt;This part of the status bar displays an indication of the current editors files writability.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Tato část status baru zobrazuje indikátor práva zápisu editoru do souboru.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3585" />
+      <location filename="../UI/UserInterface.py" line="3590" />
       <source>&lt;p&gt;This part of the status bar displays the line number of the current editor.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Tato část status baru zobrazuje číslo řádku v aktuálním editoru.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3592" />
+      <location filename="../UI/UserInterface.py" line="3597" />
       <source>&lt;p&gt;This part of the status bar displays the cursor position of the current editor.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Tato část status baru zobrazuje pozici kurzoru v aktuálním editoru.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3603" />
+      <location filename="../UI/UserInterface.py" line="3608" />
       <source>&lt;p&gt;This part of the status bar allows zooming the current editor or shell.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3668" />
-      <location filename="../UI/UserInterface.py" line="3628" />
+      <location filename="../UI/UserInterface.py" line="3673" />
+      <location filename="../UI/UserInterface.py" line="3633" />
       <source>External Tools/{0}</source>
       <translation>Externí nástroje/{0}</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3774" />
+      <location filename="../UI/UserInterface.py" line="3779" />
       <source>&lt;h2&gt;Version Numbers&lt;/h2&gt;&lt;table&gt;</source>
       <translation type="unfinished">&lt;h3&gt;Čísla verzí&lt;/h3&gt;&lt;table&gt; {2&gt;?} {2&gt;?}</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7354" />
-      <location filename="../UI/UserInterface.py" line="3810" />
+      <location filename="../UI/UserInterface.py" line="7359" />
+      <location filename="../UI/UserInterface.py" line="3815" />
       <source>&lt;/table&gt;</source>
       <translation>&lt;/table&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3844" />
+      <location filename="../UI/UserInterface.py" line="3849" />
       <source>Email address or mail server address is empty. Please configure your Email settings in the Preferences Dialog.</source>
       <translation>Emailová adresa nebo mail server adresa jsou prázdné. Prosím, nastavte váš email v dialogovém okně Nastavení.</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="4155" />
+      <location filename="../UI/UserInterface.py" line="4160" />
       <source>Restart application</source>
       <translation>Restartovat aplikaci</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="4156" />
+      <location filename="../UI/UserInterface.py" line="4161" />
       <source>The application needs to be restarted. Do it now?</source>
       <translation>Aplikace potřebuje restartovat. Má se provést nyní?</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="4190" />
+      <location filename="../UI/UserInterface.py" line="4195" />
       <source>&amp;Builtin Tools</source>
       <translation>&amp;Vestavěné nástroje</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="4207" />
+      <location filename="../UI/UserInterface.py" line="4212" />
       <source>&amp;Plugin Tools</source>
       <translation>&amp;Plugin nástroje</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="4210" />
+      <location filename="../UI/UserInterface.py" line="4215" />
       <source>&amp;User Tools</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="4236" />
+      <location filename="../UI/UserInterface.py" line="4241" />
       <source>Configure Tool Groups ...</source>
       <translation>Konfigurace Skupin nástrojů...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="4240" />
+      <location filename="../UI/UserInterface.py" line="4245" />
       <source>Configure current Tool Group ...</source>
       <translation>Konfigurace aktuální skupiny nástrojů...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="4281" />
-      <location filename="../UI/UserInterface.py" line="4261" />
+      <location filename="../UI/UserInterface.py" line="4286" />
+      <location filename="../UI/UserInterface.py" line="4266" />
       <source>No User Tools Configured</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="4354" />
+      <location filename="../UI/UserInterface.py" line="4359" />
       <source>&amp;Show all</source>
       <translation>&amp;Zobrazit vše</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="4356" />
+      <location filename="../UI/UserInterface.py" line="4361" />
       <source>&amp;Hide all</source>
       <translation>&amp;Skrýt vše</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5374" />
-      <location filename="../UI/UserInterface.py" line="5364" />
-      <location filename="../UI/UserInterface.py" line="5317" />
-      <location filename="../UI/UserInterface.py" line="5308" />
-      <location filename="../UI/UserInterface.py" line="5147" />
-      <location filename="../UI/UserInterface.py" line="5138" />
-      <location filename="../UI/UserInterface.py" line="5077" />
-      <location filename="../UI/UserInterface.py" line="5068" />
+      <location filename="../UI/UserInterface.py" line="5379" />
+      <location filename="../UI/UserInterface.py" line="5369" />
+      <location filename="../UI/UserInterface.py" line="5322" />
+      <location filename="../UI/UserInterface.py" line="5313" />
+      <location filename="../UI/UserInterface.py" line="5152" />
+      <location filename="../UI/UserInterface.py" line="5143" />
+      <location filename="../UI/UserInterface.py" line="5082" />
+      <location filename="../UI/UserInterface.py" line="5073" />
       <source>Problem</source>
       <translation>Problém</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5375" />
-      <location filename="../UI/UserInterface.py" line="5365" />
-      <location filename="../UI/UserInterface.py" line="5318" />
-      <location filename="../UI/UserInterface.py" line="5309" />
-      <location filename="../UI/UserInterface.py" line="5148" />
-      <location filename="../UI/UserInterface.py" line="5139" />
-      <location filename="../UI/UserInterface.py" line="5078" />
-      <location filename="../UI/UserInterface.py" line="5069" />
+      <location filename="../UI/UserInterface.py" line="5380" />
+      <location filename="../UI/UserInterface.py" line="5370" />
+      <location filename="../UI/UserInterface.py" line="5323" />
+      <location filename="../UI/UserInterface.py" line="5314" />
+      <location filename="../UI/UserInterface.py" line="5153" />
+      <location filename="../UI/UserInterface.py" line="5144" />
+      <location filename="../UI/UserInterface.py" line="5083" />
+      <location filename="../UI/UserInterface.py" line="5074" />
       <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; does not exist or is zero length.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Soubor &lt;b&gt;{0}&lt;/b&gt; neexistuje nebo má nulovou délku.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5582" />
-      <location filename="../UI/UserInterface.py" line="5495" />
-      <location filename="../UI/UserInterface.py" line="5410" />
-      <location filename="../UI/UserInterface.py" line="5387" />
-      <location filename="../UI/UserInterface.py" line="5330" />
-      <location filename="../UI/UserInterface.py" line="5280" />
-      <location filename="../UI/UserInterface.py" line="5260" />
-      <location filename="../UI/UserInterface.py" line="5222" />
-      <location filename="../UI/UserInterface.py" line="5213" />
-      <location filename="../UI/UserInterface.py" line="5178" />
-      <location filename="../UI/UserInterface.py" line="5169" />
-      <location filename="../UI/UserInterface.py" line="5108" />
-      <location filename="../UI/UserInterface.py" line="5099" />
+      <location filename="../UI/UserInterface.py" line="5587" />
+      <location filename="../UI/UserInterface.py" line="5500" />
+      <location filename="../UI/UserInterface.py" line="5415" />
+      <location filename="../UI/UserInterface.py" line="5392" />
+      <location filename="../UI/UserInterface.py" line="5335" />
+      <location filename="../UI/UserInterface.py" line="5285" />
+      <location filename="../UI/UserInterface.py" line="5265" />
+      <location filename="../UI/UserInterface.py" line="5227" />
+      <location filename="../UI/UserInterface.py" line="5218" />
+      <location filename="../UI/UserInterface.py" line="5183" />
+      <location filename="../UI/UserInterface.py" line="5174" />
+      <location filename="../UI/UserInterface.py" line="5113" />
+      <location filename="../UI/UserInterface.py" line="5104" />
       <source>Process Generation Error</source>
       <translation>Chyba v procesu generování</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5100" />
+      <location filename="../UI/UserInterface.py" line="5105" />
       <source>&lt;p&gt;Could not start Qt-Designer.&lt;br&gt;Ensure that it is available as &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Nemohu spustit Qt-Designer.&lt;br&gt;Ověřte jestli je dostupný jako &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5109" />
+      <location filename="../UI/UserInterface.py" line="5114" />
       <source>&lt;p&gt;Could not find the Qt-Designer executable.&lt;br&gt;Ensure that it is installed and optionally configured on the Qt configuration page.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5170" />
+      <location filename="../UI/UserInterface.py" line="5175" />
       <source>&lt;p&gt;Could not start Qt-Linguist.&lt;br&gt;Ensure that it is available as &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Nemohu spustit Qt-Linguist.&lt;br&gt;Ověřte jestli je dostupný jako &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5179" />
+      <location filename="../UI/UserInterface.py" line="5184" />
       <source>&lt;p&gt;Could not find the Qt-Linguist executable.&lt;br&gt;Ensure that it is installed and optionally configured on the Qt configuration page.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5214" />
+      <location filename="../UI/UserInterface.py" line="5219" />
       <source>&lt;p&gt;Could not start Qt-Assistant.&lt;br&gt;Ensure that it is available as &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Nemohu spustit Qt-Assistant.&lt;br&gt;Ověřte jestli je dostupný jako &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5223" />
+      <location filename="../UI/UserInterface.py" line="5228" />
       <source>&lt;p&gt;Could not find the Qt-Assistant executable.&lt;br&gt;Ensure that it is installed and optionally configured on the Qt configuration page.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5247" />
+      <location filename="../UI/UserInterface.py" line="5252" />
       <source>Currently no custom viewer is selected. Please use the preferences dialog to specify one.</source>
       <translation>Aktuálně není vybrán žádný prohlížeč. Prosím otevřete Nastavení a nějaký vyberte.</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5261" />
+      <location filename="../UI/UserInterface.py" line="5266" />
       <source>&lt;p&gt;Could not start custom viewer.&lt;br&gt;Ensure that it is available as &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Nemohu spustit aktuální prohlížeč.&lt;br&gt;Ověřte jestli je dostupný jako &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5281" />
+      <location filename="../UI/UserInterface.py" line="5286" />
       <source>&lt;p&gt;Could not start the help viewer.&lt;br&gt;Ensure that it is available as &lt;b&gt;hh&lt;/b&gt;.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Nemohu spustit prohlížeč nápovědy.&lt;br&gt;Ověřte jestli je dostupný jako &lt;b&gt;hh&lt;/b&gt;.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5331" />
+      <location filename="../UI/UserInterface.py" line="5336" />
       <source>&lt;p&gt;Could not start UI Previewer.&lt;br&gt;Ensure that it is available as &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Nemohu spustit UI Previewer.&lt;br&gt;Ověřte jestli je dostupný jako &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5388" />
+      <location filename="../UI/UserInterface.py" line="5393" />
       <source>&lt;p&gt;Could not start Translation Previewer.&lt;br&gt;Ensure that it is available as &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Nemohu spustit Previewer překladů.&lt;br&gt;Ověřte jestli je dostupný jako &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5411" />
+      <location filename="../UI/UserInterface.py" line="5416" />
       <source>&lt;p&gt;Could not start SQL Browser.&lt;br&gt;Ensure that it is available as &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Nelze spustit SQL Browser.&lt;br&gt;Ujistěte se, že je dostupný jako &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5496" />
+      <location filename="../UI/UserInterface.py" line="5501" />
       <source>&lt;p&gt;Could not start Snapshot tool.&lt;br&gt;Ensure that it is available as &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5527" />
-      <location filename="../UI/UserInterface.py" line="5518" />
+      <location filename="../UI/UserInterface.py" line="5532" />
+      <location filename="../UI/UserInterface.py" line="5523" />
       <source>External Tools</source>
       <translation>Externí nástroje</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5519" />
+      <location filename="../UI/UserInterface.py" line="5524" />
       <source>No tool entry found for external tool '{0}' in tool group '{1}'.</source>
       <translation>V externím nástroji  '{0}' ve skupině '{1}' nebyl záznam nástroje nalezen.</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5528" />
+      <location filename="../UI/UserInterface.py" line="5533" />
       <source>No toolgroup entry '{0}' found.</source>
       <translation>Skupina nástrojů '{0}' nenalezena. </translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5564" />
+      <location filename="../UI/UserInterface.py" line="5569" />
       <source>Starting process '{0} {1}'.
 </source>
       <translation>Spouštím proces '{0} {1}'.
 </translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5583" />
+      <location filename="../UI/UserInterface.py" line="5588" />
       <source>&lt;p&gt;Could not start the tool entry &lt;b&gt;{0}&lt;/b&gt;.&lt;br&gt;Ensure that it is available as &lt;b&gt;{1}&lt;/b&gt;.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Nemohu spustit příkaz &lt;b&gt;{0}&lt;/b&gt;&lt;br&gt;Ověřte jestli je dostupný jako &lt;b&gt;{1}&lt;/b&gt;. &lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5658" />
+      <location filename="../UI/UserInterface.py" line="5663" />
       <source>Process '{0}' has exited.
 </source>
       <translation>Proces '{0}' byl ukončen.
 </translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5922" />
-      <location filename="../UI/UserInterface.py" line="5866" />
-      <location filename="../UI/UserInterface.py" line="5827" />
-      <location filename="../UI/UserInterface.py" line="5761" />
-      <location filename="../UI/UserInterface.py" line="5701" />
+      <location filename="../UI/UserInterface.py" line="5927" />
+      <location filename="../UI/UserInterface.py" line="5871" />
+      <location filename="../UI/UserInterface.py" line="5832" />
+      <location filename="../UI/UserInterface.py" line="5766" />
+      <location filename="../UI/UserInterface.py" line="5706" />
       <source>Documentation Missing</source>
       <translation>Dokumentace chybí</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5923" />
-      <location filename="../UI/UserInterface.py" line="5867" />
-      <location filename="../UI/UserInterface.py" line="5828" />
-      <location filename="../UI/UserInterface.py" line="5762" />
-      <location filename="../UI/UserInterface.py" line="5702" />
+      <location filename="../UI/UserInterface.py" line="5928" />
+      <location filename="../UI/UserInterface.py" line="5872" />
+      <location filename="../UI/UserInterface.py" line="5833" />
+      <location filename="../UI/UserInterface.py" line="5767" />
+      <location filename="../UI/UserInterface.py" line="5707" />
       <source>&lt;p&gt;The documentation starting point "&lt;b&gt;{0}&lt;/b&gt;" could not be found.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Adresář dokumentace "&lt;b&gt;{0}&lt;/b&gt;" nebyl nalezen.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5905" />
-      <location filename="../UI/UserInterface.py" line="5800" />
+      <location filename="../UI/UserInterface.py" line="5910" />
+      <location filename="../UI/UserInterface.py" line="5805" />
       <source>Documentation</source>
       <translation>Dokumentace</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5801" />
+      <location filename="../UI/UserInterface.py" line="5806" />
       <source>&lt;p&gt;The PyQt{0} documentation starting point has not been configured.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5906" />
+      <location filename="../UI/UserInterface.py" line="5911" />
       <source>&lt;p&gt;The PySide{0} documentation starting point has not been configured.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6082" />
-      <location filename="../UI/UserInterface.py" line="6018" />
+      <location filename="../UI/UserInterface.py" line="6087" />
+      <location filename="../UI/UserInterface.py" line="6023" />
       <source>Start Web Browser</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6019" />
+      <location filename="../UI/UserInterface.py" line="6024" />
       <source>The eric web browser could not be started.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6083" />
+      <location filename="../UI/UserInterface.py" line="6088" />
       <source>&lt;p&gt;The eric web browser is not started.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6125" />
+      <location filename="../UI/UserInterface.py" line="6130" />
       <source>Open Browser</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6126" />
+      <location filename="../UI/UserInterface.py" line="6131" />
       <source>Could not start a web browser</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6355" />
+      <location filename="../UI/UserInterface.py" line="6360" />
       <source>Keyboard Shortcuts File (*.ekj)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6372" />
+      <location filename="../UI/UserInterface.py" line="6377" />
       <source>&lt;p&gt;The keyboard shortcuts file &lt;b&gt;{0}&lt;/b&gt; exists already. Overwrite it?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6390" />
+      <location filename="../UI/UserInterface.py" line="6395" />
       <source>Keyboard Shortcuts File (*.ekj);;XML Keyboard shortcut file (*.e4k)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6582" />
+      <location filename="../UI/UserInterface.py" line="6587" />
       <source>Read Tasks</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6583" />
+      <location filename="../UI/UserInterface.py" line="6588" />
       <source>&lt;p&gt;The tasks file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Soubor s úlohami &lt;b&gt;{0}&lt;/b&gt; nelze načíst.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6630" />
+      <location filename="../UI/UserInterface.py" line="6635" />
       <source>Read Session</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6658" />
-      <location filename="../UI/UserInterface.py" line="6631" />
+      <location filename="../UI/UserInterface.py" line="6663" />
+      <location filename="../UI/UserInterface.py" line="6636" />
       <source>&lt;p&gt;The session file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Soubor relace session &lt;b&gt;{0}&lt;/b&gt; nelze přečíst.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6657" />
+      <location filename="../UI/UserInterface.py" line="6662" />
       <source>Read session</source>
       <translation>Načíst relaci</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6673" />
+      <location filename="../UI/UserInterface.py" line="6678" />
       <source>Save Session</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6675" />
+      <location filename="../UI/UserInterface.py" line="6680" />
       <source>eric Session Files (*.esj)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6697" />
+      <location filename="../UI/UserInterface.py" line="6702" />
       <source>eric Session Files (*.esj);;eric XML Session Files (*.e5s)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6745" />
+      <location filename="../UI/UserInterface.py" line="6750" />
       <source>Crash Session found!</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6746" />
+      <location filename="../UI/UserInterface.py" line="6751" />
       <source>A session file of a crashed session was found. Shall this session be restored?</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6951" />
+      <location filename="../UI/UserInterface.py" line="6956" />
       <source>Drop Error</source>
       <translation>Zahodit chybu</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6952" />
+      <location filename="../UI/UserInterface.py" line="6957" />
       <source>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; is not a file.&lt;/p&gt;</source>
       <translation>&lt;p&gt;&lt;b&gt;{0}&lt;/b&gt; není soubor.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7128" />
+      <location filename="../UI/UserInterface.py" line="7133" />
       <source>&amp;Cancel</source>
       <translation>&amp;Zrušit</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7130" />
+      <location filename="../UI/UserInterface.py" line="7135" />
       <source>%v/%m</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7132" />
-      <source>Version Check</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="7137" />
+      <source>Version Check</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="7142" />
       <source>Trying host {0}</source>
       <translation>Zkouším host {0}</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7206" />
-      <location filename="../UI/UserInterface.py" line="7199" />
-      <location filename="../UI/UserInterface.py" line="7150" />
+      <location filename="../UI/UserInterface.py" line="7211" />
+      <location filename="../UI/UserInterface.py" line="7204" />
+      <location filename="../UI/UserInterface.py" line="7155" />
       <source>Error getting versions information</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7151" />
+      <location filename="../UI/UserInterface.py" line="7156" />
       <source>The versions information cannot not be downloaded because the Internet is &lt;b&gt;not reachable&lt;/b&gt;. Please try again later.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7200" />
+      <location filename="../UI/UserInterface.py" line="7205" />
       <source>The versions information could not be downloaded. Please go online and try again.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7207" />
+      <location filename="../UI/UserInterface.py" line="7212" />
       <source>The versions information could not be downloaded for the last 7 days. Please go online and try again.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7298" />
-      <location filename="../UI/UserInterface.py" line="7264" />
+      <location filename="../UI/UserInterface.py" line="7303" />
+      <location filename="../UI/UserInterface.py" line="7269" />
       <source>Update available</source>
       <translation>Byla nalezena aktualizace</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7299" />
-      <location filename="../UI/UserInterface.py" line="7265" />
+      <location filename="../UI/UserInterface.py" line="7304" />
+      <location filename="../UI/UserInterface.py" line="7270" />
       <source>The update to &lt;b&gt;{0}&lt;/b&gt; of eric is available at &lt;b&gt;{1}&lt;/b&gt;. Would you like to get it?</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7286" />
-      <location filename="../UI/UserInterface.py" line="7276" />
+      <location filename="../UI/UserInterface.py" line="7291" />
+      <location filename="../UI/UserInterface.py" line="7281" />
       <source>Update Check</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7277" />
+      <location filename="../UI/UserInterface.py" line="7282" />
       <source>You are using a snapshot release of eric. A more up-to-date stable release might be available.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7287" />
+      <location filename="../UI/UserInterface.py" line="7292" />
       <source>You installed eric directly from the source code. There is no possibility to check for the availability of an update.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7310" />
+      <location filename="../UI/UserInterface.py" line="7315" />
       <source>eric is up to date</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7311" />
+      <location filename="../UI/UserInterface.py" line="7316" />
       <source>You are using the latest version of eric</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7317" />
+      <location filename="../UI/UserInterface.py" line="7322" />
       <source>Error during updates check</source>
       <translation>Chyba během zjišťování aktualizací</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7318" />
+      <location filename="../UI/UserInterface.py" line="7323" />
       <source>Could not perform updates check.</source>
       <translation>Kontrolu updatů nelze provést.</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7339" />
+      <location filename="../UI/UserInterface.py" line="7344" />
       <source>&lt;h3&gt;Available versions&lt;/h3&gt;&lt;table&gt;</source>
       <translation>&lt;h3&gt;Dostupné verze&lt;/h3&gt;&lt;table&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7405" />
-      <location filename="../UI/UserInterface.py" line="7394" />
+      <location filename="../UI/UserInterface.py" line="7410" />
+      <location filename="../UI/UserInterface.py" line="7399" />
       <source>First time usage</source>
       <translation>Spuštěno poprvé</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7395" />
+      <location filename="../UI/UserInterface.py" line="7400" />
       <source>eric7 has not been configured yet but an eric6 configuration was found. Shall this be imported?</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7406" />
+      <location filename="../UI/UserInterface.py" line="7411" />
       <source>eric has not been configured yet. The configuration dialog will be started.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7426" />
+      <location filename="../UI/UserInterface.py" line="7431" />
       <source>Select Workspace Directory</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7603" />
+      <location filename="../UI/UserInterface.py" line="7608" />
       <source>Unsaved Data Detected</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7604" />
+      <location filename="../UI/UserInterface.py" line="7609" />
       <source>Some editors contain unsaved data. Shall these be saved?</source>
       <translation type="unfinished" />
     </message>
Binary file eric7/i18n/eric7_de.qm has changed
--- a/eric7/i18n/eric7_de.ts	Sat Sep 11 19:40:25 2021 +0200
+++ b/eric7/i18n/eric7_de.ts	Sat Sep 11 19:47:02 2021 +0200
@@ -1,14382 +1,14473 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.1" language="de_DE">
-<context>
+  <context>
     <name>AboutDialog</name>
     <message>
-        <location filename="../Plugins/AboutPlugin/AboutDialog.py" line="23"/>
-        <source>&lt;p&gt;{0} is an Integrated Development Environment for the Python programming language. It is written using the PyQt Python bindings for the Qt GUI toolkit and the QScintilla editor widget.&lt;/p&gt;&lt;p&gt;For more information see &lt;a href=&quot;{1}&quot;&gt;{1}&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Please send bug reports to &lt;a href=&quot;mailto:{2}&quot;&gt;{2}&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;To request a new feature please send an email to &lt;a href=&quot;mailto:{3}&quot;&gt;{3}&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;{0} uses third party software which is copyrighted by its respective copyright holder. For details see the copyright notice of the individual package.&lt;/p&gt;</source>
-        <translation>&lt;p&gt;{0} ist eine integrierte Entwicklungsumgebung für die Python-Programmiersprache. Sie wurde unter Verwendung der PyQt-Python-Bindings für das Qt-GUI-Toolkit und unter Verwendung des QScintilla-Editor-Widgets erstellt.&lt;/p&gt;&lt;p&gt;Weitergehende Informationen erhalten Sie unter &lt;a href=&quot;{1}&quot;&gt;{1}&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Bitte senden Sie Fehlerberichte an &lt;a href=&quot;mailto:{2}&quot;&gt;{2}&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Um eine neue Funktion anzufragen, senden Sie bitte eine E-Mail an &lt;a href=&quot;mailto:{3}&quot;&gt;{3}&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;{0} benutzt Fremdsoftware, deren Copyright bei den entsprechenden Copyrighthaltern liegt. Details können der Copyrightnotiz des entsprechenden Paketes entnommen werden.&lt;/p&gt;</translation>
-    </message>
-    <message>
-        <location filename="../Plugins/AboutPlugin/AboutDialog.ui" line="0"/>
-        <source>About Eric</source>
-        <translation>Über Eric</translation>
-    </message>
-    <message>
-        <location filename="../Plugins/AboutPlugin/AboutDialog.ui" line="0"/>
-        <source>&amp;About</source>
-        <translation>Ü&amp;ber</translation>
-    </message>
-    <message>
-        <location filename="../Plugins/AboutPlugin/AboutDialog.ui" line="0"/>
-        <source>A&amp;uthors</source>
-        <translation>&amp;Autoren</translation>
-    </message>
-    <message>
-        <location filename="../Plugins/AboutPlugin/AboutDialog.ui" line="0"/>
-        <source>&amp;Thanks To</source>
-        <translation>&amp;Dank</translation>
-    </message>
-    <message>
-        <location filename="../Plugins/AboutPlugin/AboutDialog.ui" line="0"/>
-        <source>&amp;License Agreement</source>
-        <translation>&amp;Lizenzvereinbarung</translation>
-    </message>
-</context>
-<context>
+      <location filename="../Plugins/AboutPlugin/AboutDialog.py" line="23" />
+      <source>&lt;p&gt;{0} is an Integrated Development Environment for the Python programming language. It is written using the PyQt Python bindings for the Qt GUI toolkit and the QScintilla editor widget.&lt;/p&gt;&lt;p&gt;For more information see &lt;a href="{1}"&gt;{1}&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Please send bug reports to &lt;a href="mailto:{2}"&gt;{2}&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;To request a new feature please send an email to &lt;a href="mailto:{3}"&gt;{3}&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;{0} uses third party software which is copyrighted by its respective copyright holder. For details see the copyright notice of the individual package.&lt;/p&gt;</source>
+      <translation>&lt;p&gt;{0} ist eine integrierte Entwicklungsumgebung für die Python-Programmiersprache. Sie wurde unter Verwendung der PyQt-Python-Bindings für das Qt-GUI-Toolkit und unter Verwendung des QScintilla-Editor-Widgets erstellt.&lt;/p&gt;&lt;p&gt;Weitergehende Informationen erhalten Sie unter &lt;a href="{1}"&gt;{1}&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Bitte senden Sie Fehlerberichte an &lt;a href="mailto:{2}"&gt;{2}&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Um eine neue Funktion anzufragen, senden Sie bitte eine E-Mail an &lt;a href="mailto:{3}"&gt;{3}&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;{0} benutzt Fremdsoftware, deren Copyright bei den entsprechenden Copyrighthaltern liegt. Details können der Copyrightnotiz des entsprechenden Paketes entnommen werden.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/AboutPlugin/AboutDialog.ui" line="0" />
+      <source>About Eric</source>
+      <translation>Über Eric</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/AboutPlugin/AboutDialog.ui" line="0" />
+      <source>&amp;About</source>
+      <translation>Ü&amp;ber</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/AboutPlugin/AboutDialog.ui" line="0" />
+      <source>A&amp;uthors</source>
+      <translation>&amp;Autoren</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/AboutPlugin/AboutDialog.ui" line="0" />
+      <source>&amp;Thanks To</source>
+      <translation>&amp;Dank</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/AboutPlugin/AboutDialog.ui" line="0" />
+      <source>&amp;License Agreement</source>
+      <translation>&amp;Lizenzvereinbarung</translation>
+    </message>
+  </context>
+  <context>
     <name>AboutPlugin</name>
     <message>
-        <location filename="../Plugins/PluginAbout.py" line="79"/>
-        <source>About {0}</source>
-        <translation>Über {0}</translation>
-    </message>
-    <message>
-        <location filename="../Plugins/PluginAbout.py" line="81"/>
-        <source>&amp;About {0}</source>
-        <translation>&amp;Über {0}</translation>
-    </message>
-    <message>
-        <location filename="../Plugins/PluginAbout.py" line="83"/>
-        <source>Display information about this software</source>
-        <translation>Zeigt Informationen zu diesem Programm an</translation>
-    </message>
-    <message>
-        <location filename="../Plugins/PluginAbout.py" line="85"/>
-        <source>&lt;b&gt;About {0}&lt;/b&gt;&lt;p&gt;Display some information about this software.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Über {0}&lt;/b&gt;&lt;p&gt;Zeige Informationen über dieses Programm an.&lt;/p&gt;</translation>
-    </message>
-    <message>
-        <location filename="../Plugins/PluginAbout.py" line="94"/>
-        <source>About Qt</source>
-        <translation>Über Qt</translation>
-    </message>
-    <message>
-        <location filename="../Plugins/PluginAbout.py" line="96"/>
-        <source>About &amp;Qt</source>
-        <translation>Über &amp;Qt</translation>
-    </message>
-    <message>
-        <location filename="../Plugins/PluginAbout.py" line="98"/>
-        <source>Display information about the Qt toolkit</source>
-        <translation>Zeige Informationen über das Qt-Toolkit an</translation>
-    </message>
-    <message>
-        <location filename="../Plugins/PluginAbout.py" line="99"/>
-        <source>&lt;b&gt;About Qt&lt;/b&gt;&lt;p&gt;Display some information about the Qt toolkit.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Über Qt&lt;/b&gt;&lt;p&gt;Zeige Informationen über das Qt-Toolkit an.&lt;/p&gt;</translation>
-    </message>
-</context>
-<context>
+      <location filename="../Plugins/PluginAbout.py" line="79" />
+      <source>About {0}</source>
+      <translation>Über {0}</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/PluginAbout.py" line="81" />
+      <source>&amp;About {0}</source>
+      <translation>&amp;Über {0}</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/PluginAbout.py" line="83" />
+      <source>Display information about this software</source>
+      <translation>Zeigt Informationen zu diesem Programm an</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/PluginAbout.py" line="85" />
+      <source>&lt;b&gt;About {0}&lt;/b&gt;&lt;p&gt;Display some information about this software.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Über {0}&lt;/b&gt;&lt;p&gt;Zeige Informationen über dieses Programm an.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/PluginAbout.py" line="94" />
+      <source>About Qt</source>
+      <translation>Über Qt</translation>