forked from qt-creator/qt-creator
Python: Use specialized document to check for pylsp
Change-Id: I9ea13df7fc04a4fe35d901da179b9c0ebaf57bb6 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -24,9 +24,11 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include "pythoneditor.h"
|
||||
|
||||
#include "pythonconstants.h"
|
||||
#include "pythonhighlighter.h"
|
||||
#include "pythonindenter.h"
|
||||
#include "pythonlanguageclient.h"
|
||||
#include "pythonsettings.h"
|
||||
#include "pythonutils.h"
|
||||
|
||||
@@ -102,6 +104,23 @@ static QWidget *createEditorWidget()
|
||||
return widget;
|
||||
}
|
||||
|
||||
class PythonDocument : public TextEditor::TextDocument
|
||||
{
|
||||
public:
|
||||
PythonDocument() : TextEditor::TextDocument(Constants::C_PYTHONEDITOR_ID) {}
|
||||
|
||||
void setFilePath(const Utils::FilePath &filePath) override
|
||||
{
|
||||
TextEditor::TextDocument::setFilePath(filePath);
|
||||
|
||||
const Utils::FilePath &python = detectPython(filePath);
|
||||
if (!python.exists())
|
||||
return;
|
||||
|
||||
PyLSConfigureAssistant::instance()->openDocumentWithPython(python, this);
|
||||
}
|
||||
};
|
||||
|
||||
PythonEditorFactory::PythonEditorFactory()
|
||||
{
|
||||
registerReplAction(this);
|
||||
@@ -116,7 +135,7 @@ PythonEditorFactory::PythonEditorFactory()
|
||||
| TextEditor::TextEditorActionHandler::UnCollapseAll
|
||||
| TextEditor::TextEditorActionHandler::FollowSymbolUnderCursor);
|
||||
|
||||
setDocumentCreator([] { return new TextEditor::TextDocument(Constants::C_PYTHONEDITOR_ID); });
|
||||
setDocumentCreator([]() { return new PythonDocument; });
|
||||
setEditorWidgetCreator(createEditorWidget);
|
||||
setIndenterCreator([](QTextDocument *doc) { return new PythonIndenter(doc); });
|
||||
setSyntaxHighlighterCreator([] { return new PythonHighlighter; });
|
||||
|
@@ -635,19 +635,6 @@ static void enablePythonLanguageServer(const FilePath &python,
|
||||
}
|
||||
}
|
||||
|
||||
void PyLSConfigureAssistant::documentOpened(Core::IDocument *document)
|
||||
{
|
||||
auto textDocument = qobject_cast<TextEditor::TextDocument *>(document);
|
||||
if (!textDocument || textDocument->mimeType() != Constants::C_PY_MIMETYPE)
|
||||
return;
|
||||
|
||||
const FilePath &python = detectPython(textDocument->filePath());
|
||||
if (!python.exists())
|
||||
return;
|
||||
|
||||
instance()->openDocumentWithPython(python, textDocument);
|
||||
}
|
||||
|
||||
void PyLSConfigureAssistant::openDocumentWithPython(const FilePath &python,
|
||||
TextEditor::TextDocument *document)
|
||||
{
|
||||
|
@@ -72,7 +72,6 @@ public:
|
||||
|
||||
static const LanguageClient::StdIOSettings *languageServerForPython(
|
||||
const Utils::FilePath &python);
|
||||
static void documentOpened(Core::IDocument *document);
|
||||
static void updateEditorInfoBars(const Utils::FilePath &python, LanguageClient::Client *client);
|
||||
|
||||
void openDocumentWithPython(const Utils::FilePath &python, TextEditor::TextDocument *document);
|
||||
|
@@ -111,9 +111,6 @@ void PythonPlugin::extensionsInitialized()
|
||||
Core::FileIconProvider::registerIconOverlayForSuffix(imageFile, "py");
|
||||
|
||||
TaskHub::addCategory(PythonErrorTaskCategory, "Python", true);
|
||||
|
||||
connect(Core::EditorManager::instance(), &Core::EditorManager::documentOpened,
|
||||
this, &PyLSConfigureAssistant::documentOpened);
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
|
Reference in New Issue
Block a user