From 4c2daa90ce558c3b4287edc97127471486a411d9 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Fri, 29 Nov 2013 11:25:47 +0100 Subject: C++: Fix highlighting for lines with predefined macros This adds definitions for the macros __FILE__, __LINE__, __DATE__ and __TIME__ on demand. As a side effect, this also introduces highlighting for the uses of these macros. Task-number: QTCREATORBUG-8036 Change-Id: Ib7546c7d45d2eecbc50c7883fc684e3497154405 Reviewed-by: Erik Verbruggen Reviewed-by: Eike Ziller Reviewed-by: hjk --- src/plugins/cppeditor/cppeditor.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/plugins/cppeditor/cppeditor.cpp') diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index 63d5bc2e5b..740269efed 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -797,10 +797,12 @@ const Macro *CPPEditorWidget::findCanonicalMacro(const QTextCursor &cursor, Docu if (const Macro *macro = doc->findMacroDefinitionAt(line)) { QTextCursor macroCursor = cursor; const QByteArray name = identifierUnderCursor(¯oCursor).toLatin1(); - if (macro->name() == name) + if (macro->name() == name && !macro->isPredefined()) return macro; } else if (const Document::MacroUse *use = doc->findMacroUseAt(cursor.position())) { - return &use->macro(); + const Macro ¯o = use->macro(); + if (!macro.isPredefined()) + return ¯o; } return 0; -- cgit v1.2.1 From 796fcaf1d288267e93baba3d01927957c684758f Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Mon, 2 Dec 2013 15:47:36 +0100 Subject: Revert "C++: Fix highlighting for lines with predefined macros" This takes too much memory. For qtcreator.pro the numbers are as follows: Patch applied: ~ 1600MB (RES) Patch reverted: ~ 510MB (RES) This reverts commit 4c2daa90ce558c3b4287edc97127471486a411d9. Task-number: QTCREATORBUG-10973 Change-Id: I843bd7c1ea4a26a1ec55ddc14c2a34a98d040922 Reviewed-by: hjk Reviewed-by: Robert Loehning Reviewed-by: Eike Ziller Reviewed-by: Orgad Shaneh Reviewed-by: Erik Verbruggen --- src/plugins/cppeditor/cppeditor.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src/plugins/cppeditor/cppeditor.cpp') diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index 740269efed..63d5bc2e5b 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -797,12 +797,10 @@ const Macro *CPPEditorWidget::findCanonicalMacro(const QTextCursor &cursor, Docu if (const Macro *macro = doc->findMacroDefinitionAt(line)) { QTextCursor macroCursor = cursor; const QByteArray name = identifierUnderCursor(¯oCursor).toLatin1(); - if (macro->name() == name && !macro->isPredefined()) + if (macro->name() == name) return macro; } else if (const Document::MacroUse *use = doc->findMacroUseAt(cursor.position())) { - const Macro ¯o = use->macro(); - if (!macro.isPredefined()) - return ¯o; + return &use->macro(); } return 0; -- cgit v1.2.1 From 44d254b37bd700e576fa7e0860c061b9e37da5aa Mon Sep 17 00:00:00 2001 From: David Schulz Date: Thu, 17 Oct 2013 14:52:26 +0200 Subject: CppEditor: Visual hint for changed preprocessor directives. Change-Id: I3c3ae623beab55259179aaf0613d2bc5aaad1c28 Reviewed-by: Nikolai Kosjar --- src/plugins/cppeditor/cppeditor.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/plugins/cppeditor/cppeditor.cpp') diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index 63d5bc2e5b..e490c4fbe3 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -717,6 +717,9 @@ void CPPEditorWidget::setMimeType(const QString &mt) = m_modelManager->cppEditorSupport(editor())->snapshotUpdater(); updater->setEditorDefines(additionalDirectives); + m_preprocessorButton->setProperty("highlightWidget", !additionalDirectives.trimmed().isEmpty()); + m_preprocessorButton->update(); + BaseTextEditorWidget::setMimeType(mt); setObjCEnabled(mt == QLatin1String(CppTools::Constants::OBJECTIVE_C_SOURCE_MIMETYPE) || mt == QLatin1String(CppTools::Constants::OBJECTIVE_CPP_SOURCE_MIMETYPE)); @@ -1990,8 +1993,12 @@ void CPPEditorWidget::showPreProcessorWidget() if (preProcessorDialog.exec() == QDialog::Accepted) { QSharedPointer updater = m_modelManager->cppEditorSupport(editor())->snapshotUpdater(); - updater->setEditorDefines(preProcessorDialog.additionalPreProcessorDirectives().toUtf8()); + const QString &additionals = preProcessorDialog.additionalPreProcessorDirectives(); + updater->setEditorDefines(additionals.toUtf8()); updater->update(m_modelManager->workingCopy()); + + m_preprocessorButton->setProperty("highlightWidget", !additionals.trimmed().isEmpty()); + m_preprocessorButton->update(); } } -- cgit v1.2.1