From 1c60ae10399d3e194b6b0a30abd12c96279fbce3 Mon Sep 17 00:00:00 2001 From: Leandro Melo Date: Fri, 20 May 2011 12:29:40 +0200 Subject: [PATCH] Completion: Ignore non identifiers when matching proposals Since now we reduced the idle editor time for showing completions, some things started to be a bit annoying. This fix changes the prefix from the proposal to include only letters, digits, and the underscore. Yes, technically they are not allways identifiers in a generic sense, but it should be enough for our purpose. Now, you should not receive a proposal 'foo:' when you have already typed 'foo' in QML, for example. Change-Id: Ica92182a34636598faedb067d0527e37ca6fee89 Reviewed-on: http://codereview.qt.nokia.com/46 Reviewed-by: Roberto Raggi --- .../texteditor/codeassist/basicproposalitemlistmodel.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/plugins/texteditor/codeassist/basicproposalitemlistmodel.cpp b/src/plugins/texteditor/codeassist/basicproposalitemlistmodel.cpp index ae34da69f63..76a752896ab 100644 --- a/src/plugins/texteditor/codeassist/basicproposalitemlistmodel.cpp +++ b/src/plugins/texteditor/codeassist/basicproposalitemlistmodel.cpp @@ -241,6 +241,14 @@ QString BasicProposalItemListModel::proposalPrefix() const // Compute common prefix QString firstKey = m_currentItems.first()->text(); + int ignore = 0; + for (int i = firstKey.length() - 1; i >= 0; --i, ++ignore) { + const QChar &c = firstKey.at(i); + if (c.isLetterOrNumber() || c == QLatin1Char('_')) + break; + } + if (ignore) + firstKey.chop(ignore); QString lastKey = m_currentItems.last()->text(); const int length = qMin(firstKey.length(), lastKey.length()); firstKey.truncate(length);