Merge remote branch 'origin/1.3'

Conflicts:
	doc/qtcreator.qdoc
	doc/qtcreator.qdocconf
	src/app/Info.plist
	src/plugins/bineditor/BinEditor.pluginspec
	src/plugins/bookmarks/Bookmarks.pluginspec
	src/plugins/cmakeprojectmanager/CMakeProjectManager.pluginspec
	src/plugins/coreplugin/Core.pluginspec
	src/plugins/coreplugin/coreconstants.h
	src/plugins/cpaster/CodePaster.pluginspec
	src/plugins/cppeditor/CppEditor.pluginspec
	src/plugins/cppeditor/cppeditor.cpp
	src/plugins/cpptools/CppTools.pluginspec
	src/plugins/cvs/CVS.pluginspec
	src/plugins/debugger/Debugger.pluginspec
	src/plugins/debugger/debuggeragents.cpp
	src/plugins/debugger/gdb/gdbengine.cpp
	src/plugins/designer/Designer.pluginspec
	src/plugins/fakevim/FakeVim.pluginspec
	src/plugins/find/Find.pluginspec
	src/plugins/genericprojectmanager/GenericProjectManager.pluginspec
	src/plugins/git/ScmGit.pluginspec
	src/plugins/helloworld/HelloWorld.pluginspec
	src/plugins/help/Help.pluginspec
	src/plugins/locator/Locator.pluginspec
	src/plugins/perforce/Perforce.pluginspec
	src/plugins/projectexplorer/ProjectExplorer.pluginspec
	src/plugins/qmleditor/QmlEditor.pluginspec
	src/plugins/qmleditor/idcollector.cpp
	src/plugins/qmleditor/idcollector.h
	src/plugins/qmleditor/parser/qmljsglobal_p.h
	src/plugins/qmleditor/qmlcodecompletion.cpp
	src/plugins/qmleditor/qmlcodeformatter.cpp
	src/plugins/qmleditor/qmlcodeformatter.h
	src/plugins/qmleditor/qmlexpressionundercursor.cpp
	src/plugins/qmleditor/qmllookupcontext.cpp
	src/plugins/qmleditor/qmlresolveexpression.cpp
	src/plugins/qmleditor/qmlsymbol.cpp
	src/plugins/qmleditor/qmlsymbol.h
	src/plugins/qmlprojectmanager/QmlProjectManager.pluginspec
	src/plugins/qt4projectmanager/Qt4ProjectManager.pluginspec
	src/plugins/qtscripteditor/QtScriptEditor.pluginspec
	src/plugins/regexp/RegExp.pluginspec
	src/plugins/resourceeditor/ResourceEditor.pluginspec
	src/plugins/snippets/Snippets.pluginspec
	src/plugins/subversion/Subversion.pluginspec
	src/plugins/texteditor/TextEditor.pluginspec
	src/plugins/vcsbase/VCSBase.pluginspec
	src/plugins/welcome/Welcome.pluginspec
	src/shared/qml/parser/qmljsast.cpp
	src/shared/qml/parser/qmljsast_p.h
	src/shared/qml/parser/qmljsastfwd_p.h
	src/shared/qml/parser/qmljsastvisitor.cpp
	src/shared/qml/parser/qmljsastvisitor_p.h
	src/shared/qml/parser/qmljsengine_p.cpp
	src/shared/qml/parser/qmljsengine_p.h
	src/shared/qml/parser/qmljsgrammar.cpp
	src/shared/qml/parser/qmljsgrammar_p.h
	src/shared/qml/parser/qmljslexer.cpp
	src/shared/qml/parser/qmljslexer_p.h
	src/shared/qml/parser/qmljsmemorypool_p.h
	src/shared/qml/parser/qmljsnodepool_p.h
	src/shared/qml/parser/qmljsparser.cpp
	src/shared/qml/parser/qmljsparser_p.h
This commit is contained in:
con
2010-01-12 18:02:04 +01:00
9 changed files with 296 additions and 186 deletions

2
dist/changes-1.3.1 vendored
View File

@@ -34,6 +34,8 @@ Debugging
* CDB: Fixed disassembler for 64 bit addresses * CDB: Fixed disassembler for 64 bit addresses
* Fixed finding the file for build issues when mingw32-make is used * Fixed finding the file for build issues when mingw32-make is used
* Ignore case of file name in breakpoint handling on Windows * Ignore case of file name in breakpoint handling on Windows
* Fixed problems with gdb timing out and debugging sessions unexpectedly finishing
* Improved startup time of gdb sessions by not asking for all files known to gdb
Help Help
* Don't switch to Help mode if help side bar is already visible * Don't switch to Help mode if help side bar is already visible

File diff suppressed because it is too large Load Diff

View File

@@ -493,12 +493,11 @@ Bookmark *BookmarkManager::bookmarkForIndex(QModelIndex index)
bool BookmarkManager::gotoBookmark(Bookmark* bookmark) bool BookmarkManager::gotoBookmark(Bookmark* bookmark)
{ {
if (!TextEditor::BaseTextEditor::openEditorAt(bookmark->filePath(), bookmark->lineNumber())) { using namespace TextEditor;
// Could not open editor if (ITextEditor *editor = BaseTextEditor::openEditorAt(bookmark->filePath(), bookmark->lineNumber()))
return (editor->currentLine() == bookmark->lineNumber());
return false; return false;
} }
return true;
}
void BookmarkManager::nextInDocument() void BookmarkManager::nextInDocument()
{ {

View File

@@ -1515,10 +1515,17 @@ void CppCodeCompletion::completions(QList<TextEditor::CompletionItem> *completio
} }
const QRegExp regExp(keyRegExp); const QRegExp regExp(keyRegExp);
const bool hasKey = !key.isEmpty();
foreach (TextEditor::CompletionItem item, m_completions) { foreach (TextEditor::CompletionItem item, m_completions) {
if (regExp.indexIn(item.text) == 0) { if (regExp.indexIn(item.text) == 0) {
item.relevance = (key.length() > 0 && if (hasKey) {
item.text.startsWith(key, Qt::CaseInsensitive)) ? 1 : 0; if (item.text.startsWith(key, Qt::CaseSensitive)) {
item.relevance = 2;
} else if (m_caseSensitivity == Qt::CaseInsensitive
&& item.text.startsWith(key, Qt::CaseInsensitive)) {
item.relevance = 1;
}
}
(*completions) << item; (*completions) << item;
} }
} }

View File

@@ -833,7 +833,6 @@ int GdbEngine::commandTimeoutTime() const
void GdbEngine::commandTimeout() void GdbEngine::commandTimeout()
{ {
qDebug("TIMEOUT");
QList<int> keys = m_cookieForToken.keys(); QList<int> keys = m_cookieForToken.keys();
qSort(keys); qSort(keys);
bool killIt = false; bool killIt = false;
@@ -851,10 +850,10 @@ void GdbEngine::commandTimeout()
debugMessage(_("TIMED OUT WAITING FOR GDB REPLY. COMMANDS STILL IN PROGRESS:")); debugMessage(_("TIMED OUT WAITING FOR GDB REPLY. COMMANDS STILL IN PROGRESS:"));
int timeOut = m_commandTimer->interval(); int timeOut = m_commandTimer->interval();
//m_commandTimer->stop(); //m_commandTimer->stop();
QString msg = tr("The gdb process has not produced any response " const QString msg = tr("The gdb process has not responded "
"to a command within %1 seconds. This may been it is stuck " "to a command within %1 seconds. This could mean it is stuck "
"in an endless loop or taking longer than expected to perform " "in an endless loop or taking longer than expected to perform "
"the operation it was reqested.\nYou have a choice of waiting " "the operation.\nYou can choose between waiting "
"longer or abort debugging.").arg(timeOut / 1000); "longer or abort debugging.").arg(timeOut / 1000);
QMessageBox *mb = showMessageBox(QMessageBox::Critical, QMessageBox *mb = showMessageBox(QMessageBox::Critical,
tr("Gdb not responding"), msg, tr("Gdb not responding"), msg,
@@ -3453,6 +3452,17 @@ void GdbEngine::handleDebuggingHelperValue2(const GdbResponse &response)
WatchData data = response.cookie.value<WatchData>(); WatchData data = response.cookie.value<WatchData>();
QTC_ASSERT(data.isValid(), return); QTC_ASSERT(data.isValid(), return);
// The real dumper might have aborted without giving any answers.
// Remove traces of the question, too.
if (m_cookieForToken.contains(response.token - 1)) {
m_cookieForToken.remove(response.token - 1);
debugMessage(_("DETECTING LOST COMMAND %1").arg(response.token - 1));
--m_pendingRequests;
data.setError(WatchData::msgNotInScope());
insertData(data);
return;
}
//qDebug() << "CUSTOM VALUE RESULT:" << response.toString(); //qDebug() << "CUSTOM VALUE RESULT:" << response.toString();
//qDebug() << "FOR DATA:" << data.toString() << response.resultClass; //qDebug() << "FOR DATA:" << data.toString() << response.resultClass;
if (response.resultClass != GdbResultDone) { if (response.resultClass != GdbResultDone) {

View File

@@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>397</width> <width>480</width>
<height>322</height> <height>371</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
@@ -37,7 +37,7 @@
</widget> </widget>
</item> </item>
<item row="0" column="1"> <item row="0" column="1">
<widget class="Utils::PathChooser" name="gdbLocationChooser" native="true"/> <widget class="Utils::PathChooser" name="gdbLocationChooser"/>
</item> </item>
<item row="1" column="0"> <item row="1" column="0">
<widget class="QLabel" name="labelEnvironment"> <widget class="QLabel" name="labelEnvironment">
@@ -63,7 +63,7 @@
</widget> </widget>
</item> </item>
<item row="2" column="1"> <item row="2" column="1">
<widget class="Utils::PathChooser" name="scriptFileChooser" native="true"/> <widget class="Utils::PathChooser" name="scriptFileChooser"/>
</item> </item>
<item row="3" column="0" colspan="2"> <item row="3" column="0" colspan="2">
<widget class="QCheckBox" name="checkBoxUsePreciseBreakpoints"> <widget class="QCheckBox" name="checkBoxUsePreciseBreakpoints">
@@ -88,11 +88,11 @@ name in different directories.</string>
<item row="4" column="1"> <item row="4" column="1">
<widget class="QSpinBox" name="spinBoxGdbWatchdogTimeout"> <widget class="QSpinBox" name="spinBoxGdbWatchdogTimeout">
<property name="toolTip"> <property name="toolTip">
<string>This is the number of second Qt Creator will wait before <string>This is the number of seconds Qt Creator will wait before
it terminates non-reacting gdb process. The default value of 20 seconds it terminates non-responsive gdb process. The default value of 20 seconds
should be sufficient for most applications, but there are situations when should be sufficient for most applications, but there are situations when
loading big libraries or listing source files takes much longer than that loading big libraries or listing source files takes much longer than that
on slow machines. In this case the value should be increased.</string> on slow machines. In this case, the value should be increased.</string>
</property> </property>
<property name="layoutDirection"> <property name="layoutDirection">
<enum>Qt::LeftToRight</enum> <enum>Qt::LeftToRight</enum>

View File

@@ -3634,11 +3634,11 @@ QString BaseTextEditor::autoComplete(QTextCursor &cursor, const QString &textToI
const QString brackets = QLatin1String("[]"); const QString brackets = QLatin1String("[]");
if (parentheses.contains(character) || brackets.contains(character)) { if (parentheses.contains(character) || brackets.contains(character)) {
QTextCursor tmp= cursor; QTextCursor tmp= cursor;
TextEditor::TextBlockUserData::findPreviousBlockOpenParenthesis(&tmp); bool foundBlockStart = TextEditor::TextBlockUserData::findPreviousBlockOpenParenthesis(&tmp);
int blockStart = tmp.isNull() ? 0 : tmp.position(); int blockStart = foundBlockStart ? tmp.position() : 0;
tmp = cursor; tmp = cursor;
TextEditor::TextBlockUserData::findNextBlockClosingParenthesis(&tmp); bool foundBlockEnd = TextEditor::TextBlockUserData::findNextBlockClosingParenthesis(&tmp);
int blockEnd = tmp.isNull() ? (cursor.document()->characterCount()-1) : tmp.position(); int blockEnd = foundBlockEnd ? tmp.position() : (cursor.document()->characterCount() - 1);
const QChar openChar = parentheses.contains(character) ? QLatin1Char('(') : QLatin1Char('['); const QChar openChar = parentheses.contains(character) ? QLatin1Char('(') : QLatin1Char('[');
const QChar closeChar = parentheses.contains(character) ? QLatin1Char(')') : QLatin1Char(']'); const QChar closeChar = parentheses.contains(character) ? QLatin1Char(')') : QLatin1Char(']');

View File

@@ -72,7 +72,12 @@ void BaseTextMark::editorOpened(Core::IEditor *editor)
if (m_markableInterface == 0) { // We aren't added to something if (m_markableInterface == 0) { // We aren't added to something
m_markableInterface = textEditor->markableInterface(); m_markableInterface = textEditor->markableInterface();
m_internalMark = new InternalMark(this); m_internalMark = new InternalMark(this);
m_markableInterface->addMark(m_internalMark, m_line);
if (!m_markableInterface->addMark(m_internalMark, m_line)) {
delete m_internalMark;
m_internalMark = 0;
m_markableInterface = 0;
}
} }
} }
} }