void ActivationSequenceContextProcessor::goBackToStartOfName() { m_startOfNamePosition = findStartOfName(m_assistInterface, m_positionInDocument); if (m_startOfNamePosition != m_positionInDocument) m_textCursor.setPosition(m_startOfNamePosition); }
IAssistProposal *KeywordsCompletionAssistProcessor::perform(const IAssistInterface *interface) { m_interface.reset(interface); if (isInComment()) return 0; if (interface->reason() == IdleEditor && !acceptsIdleEditor()) return 0; if (m_startPosition == -1) m_startPosition = findStartOfName(); int nextCharPos = m_startPosition + m_word.length(); if (m_keywords.isFunction(m_word) && m_interface->characterAt(nextCharPos) == QLatin1Char('(')) { QStringList functionSymbols = m_keywords.argsForFunction(m_word); IFunctionHintProposalModel *model = new KeywordsFunctionHintModel(functionSymbols); IAssistProposal *proposal = new FunctionHintProposal(m_startPosition, model); return proposal; } else { QList<TextEditor::BasicProposalItem *> items; addWordsToProposalList(&items, m_keywords.variables(), m_variableIcon); addWordsToProposalList(&items, m_keywords.functions(), m_functionIcon); return new GenericProposal(m_startPosition, new BasicProposalItemListModel(items)); } }
bool KeywordsCompletionAssistProcessor::acceptsIdleEditor() { const int pos = m_interface->position(); QChar characterUnderCursor = m_interface->characterAt(pos); if (!characterUnderCursor.isLetterOrNumber()) { m_startPosition = findStartOfName(); if (pos - m_startPosition >= 3 && !isInComment()) return true; } return false; }