From cbc328e2d7a2378bed9fbf6be30e03295fe8944b Mon Sep 17 00:00:00 2001 From: Francois Ferrand <thetypz@gmail.com> Date: Tue, 13 Mar 2012 15:13:05 +0100 Subject: [PATCH] CppEditor: fix indentation of auto-completed comments. Fix indentation of auto-completed Doxygen comments, as well as auto- leading characters from the block, to make it work with both spaces and tabs. Change-Id: I6c1c1665675cc25e01983e6d39b472f1b1c9683e Reviewed-by: Leandro Melo <leandro.melo@nokia.com> --- src/plugins/cppeditor/cppeditor.cpp | 5 ++++- src/plugins/cpptools/doxygengenerator.cpp | 12 +++--------- src/plugins/cpptools/doxygengenerator.h | 2 +- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index e6149b9bacd..1e7a3b891a7 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -2381,7 +2381,10 @@ bool CPPEditorWidget::handleDocumentationComment(QKeyEvent *e) if (followinPos == text.length() || text.at(followinPos) != QLatin1Char('*')) { QString newLine(QLatin1Char('\n')); - newLine.append(QString(offset, QLatin1Char(' '))); + QTextCursor c(cursor); + c.movePosition(QTextCursor::StartOfBlock); + c.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, offset); + newLine.append(c.selectedText()); if (text.at(offset) == QLatin1Char('/')) { newLine.append(QLatin1String(" *")); } else { diff --git a/src/plugins/cpptools/doxygengenerator.cpp b/src/plugins/cpptools/doxygengenerator.cpp index fe48422344e..5737192bf10 100644 --- a/src/plugins/cpptools/doxygengenerator.cpp +++ b/src/plugins/cpptools/doxygengenerator.cpp @@ -56,7 +56,6 @@ DoxygenGenerator::DoxygenGenerator() , m_generateBrief(true) , m_startComment(true) , m_style(QtStyle) - , m_commentOffset(0) {} void DoxygenGenerator::setStyle(DocumentationStyle style) @@ -308,16 +307,11 @@ void DoxygenGenerator::assignCommentOffset(QTextCursor cursor) cursor.setPosition(cursor.anchor()); } - m_commentOffset = cursor.positionInBlock(); + cursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); + m_commentOffset = cursor.selectedText(); } QString DoxygenGenerator::offsetString() const { - // Note: Currently we don't indent comments, but simply preserve them in the original - // relative positions. What we do here is just to make sure that such positions are correct, - // although they might still be wrong from an indentation point of view (for instance, - // using spaces instead of tabs). Therefore, the content generated should still have - // the indentation strings fixed. - - return QString(m_commentOffset, QLatin1Char(' ')); + return m_commentOffset; } diff --git a/src/plugins/cpptools/doxygengenerator.h b/src/plugins/cpptools/doxygengenerator.h index a9d1cfbfa4d..77b6db8504e 100644 --- a/src/plugins/cpptools/doxygengenerator.h +++ b/src/plugins/cpptools/doxygengenerator.h @@ -95,7 +95,7 @@ private: bool m_startComment; DocumentationStyle m_style; CPlusPlus::Overview m_printer; - int m_commentOffset; + QString m_commentOffset; }; } // CppTools -- GitLab