QVector<TypeInfo> Process::getCompletions(const QString &filename, const QByteArray& ustart, const QByteArray& uend) { QStringList args; args << "-f=csv" << "autocomplete" << filename << QString("c") + QString::number(ustart.length()); QProcess p; p.start("gocode", args); if(!p.waitForStarted(TIMEOUT)) return QVector<TypeInfo>(); p.write(ustart); p.write(uend); p.closeWriteChannel(); if(!p.waitForFinished(TIMEOUT)) return QVector<TypeInfo>(); QStringList lines = QString(p.readAllStandardOutput()).split("\n"); QVector<TypeInfo> out; out.reserve(lines.size()); TypeInfo info; for(int i = 0, e = lines.size(); i < e; ++i) if(info.parseString(lines[i])) out.push_back(info); return out; }