void ExtraCompiler::onEditorChanged(Core::IEditor *editor) { // Handle old editor if (d->lastEditor) { Core::IDocument *doc = d->lastEditor->document(); disconnect(doc, &Core::IDocument::contentsChanged, this, &ExtraCompiler::setDirty); if (d->dirty) { run(doc->contents()); d->dirty = false; } } if (editor && editor->document()->filePath() == d->source) { d->lastEditor = editor; d->updateIssues(); // Handle new editor connect(d->lastEditor->document(), &Core::IDocument::contentsChanged, this, &ExtraCompiler::setDirty); } else { d->lastEditor = 0; } }
void ExtraCompiler::onEditorAboutToClose(Core::IEditor *editor) { if (d->lastEditor != editor) return; // Oh no our editor is going to be closed // get the content first Core::IDocument *doc = d->lastEditor->document(); disconnect(doc, &Core::IDocument::contentsChanged, this, &ExtraCompiler::setDirty); if (d->dirty) { run(doc->contents()); d->dirty = false; } d->lastEditor = 0; }