From 08e4c30eb17bac2e4c00fd747901c8fff23b221d Mon Sep 17 00:00:00 2001
From: mae <qt-info@nokia.com>
Date: Fri, 26 Mar 2010 14:28:26 +0100
Subject: [PATCH] Improve (un)comment selection in C++ style

The patch makes the algorithm ignore empty (i.e. only whitespace)
blocks similar to emacs.
---
 src/libs/utils/uncommentselection.cpp | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/libs/utils/uncommentselection.cpp b/src/libs/utils/uncommentselection.cpp
index 3ceef801a84..a5da088da95 100644
--- a/src/libs/utils/uncommentselection.cpp
+++ b/src/libs/utils/uncommentselection.cpp
@@ -110,8 +110,8 @@ void Utils::unCommentSelection(QPlainTextEdit *edit)
         endBlock = endBlock.next();
         doCppStyleUncomment = true;
         for (QTextBlock block = startBlock; block != endBlock; block = block.next()) {
-            QString text = block.text();
-            if (!text.trimmed().startsWith(QLatin1String("//"))) {
+            QString text = block.text().trimmed();
+            if (!text.isEmpty() && !text.startsWith(QLatin1String("//"))) {
                 doCppStyleUncomment = false;
                 break;
             }
@@ -133,8 +133,14 @@ void Utils::unCommentSelection(QPlainTextEdit *edit)
                     ++i;
                 }
             } else {
-                cursor.setPosition(block.position());
-                cursor.insertText(QLatin1String("//"));
+                QString text = block.text();
+                foreach(QChar c, text) {
+                    if (!c.isSpace()) {
+                        cursor.setPosition(block.position());
+                        cursor.insertText(QLatin1String("//"));
+                        break;
+                    }
+                }
             }
         }
     }
-- 
GitLab