[anjuta-extras] scintilla: bgo#610371 - Scite adds a trailing white space after pressing enter for aligning variable



commit 901edc9c6451d7b7a1d0d9dfa7436d780128bf23
Author: SÃbastien Granjoux <seb sfo free fr>
Date:   Sat Oct 1 09:05:18 2011 +0200

    scintilla: bgo#610371 - Scite adds a trailing white space after pressing enter for aligning variables

 plugins/scintilla/text_editor.c |   39 +++++++++++++++++++++++++++++++++++++--
 1 files changed, 37 insertions(+), 2 deletions(-)
---
diff --git a/plugins/scintilla/text_editor.c b/plugins/scintilla/text_editor.c
index 62f0c6a..0c54c42 100644
--- a/plugins/scintilla/text_editor.c
+++ b/plugins/scintilla/text_editor.c
@@ -1588,6 +1588,42 @@ load_from_file (TextEditor *te, gchar *uri, gchar **err)
 	return TRUE;
 }
 
+static void
+strip_trailing_space (gchar *data, gsize *size)
+{
+	gchar *space;
+	gsize len;
+
+	/* Search first trailing space */
+	for (len = 0;;len++)
+	{
+		while ((len != *size) && (data[len] != ' ') && (data[len] != '\t')) len++;
+		if (len == *size) break;
+		space = &data[len];
+		while ((len != *size) && ((data[len] == ' ') || (data[len] == '\t'))) len++;
+		if ((len == *size) || (data[len] == '\n') || (data[len] == '\r'))
+		{
+			gchar *strip = space;
+
+			/* Search next trailing space */
+			for (;;)
+			{
+				while ((len != *size) && (data[len] != ' ') && (data[len] != '\t')) *strip++ = data[len++];
+				if (len == *size) break;
+				space = &data[len];
+				while ((len != *size) && ((data[len] == ' ') || (data[len] == '\t'))) *strip++ = data[len++];
+				if ((len == *size) || (data[len] == '\n') || (data[len] == '\r')) 
+				{
+					strip -= (&data[len] - space);
+				}
+			}
+			*size -= (&data[len] - strip);
+			break;
+		}
+	}
+	
+}
+
 static gboolean
 save_to_file (TextEditor *te, gchar *uri, GError **error)
 {
@@ -1655,8 +1691,7 @@ save_to_file (TextEditor *te, gchar *uri, GError **error)
 											STRIP_TRAILING_SPACES);
 		if (strip)
 		{
-			while (size > 0 && isspace(data[size - 1]))
-				-- size;
+			strip_trailing_space (data, &size);
 		}
 		if ((size > 1) && ('\n' != data[size-1]))
 		{



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]