[gnome-builder] auto-indent: fix indentation after "} else\n"



commit f53667cad9607b30baf2d0652d769ad1fe2ff903
Author: Christian Hergert <christian hergert me>
Date:   Wed Oct 15 18:26:05 2014 -0700

    auto-indent: fix indentation after "} else\n"

 src/editor/gb-source-auto-indenter-c.c |   43 +++++++++++++++++---------------
 1 files changed, 23 insertions(+), 20 deletions(-)
---
diff --git a/src/editor/gb-source-auto-indenter-c.c b/src/editor/gb-source-auto-indenter-c.c
index e52d99b..023e1cf 100644
--- a/src/editor/gb-source-auto-indenter-c.c
+++ b/src/editor/gb-source-auto-indenter-c.c
@@ -103,6 +103,26 @@ non_space_predicate (gunichar ch,
 }
 
 static gboolean
+line_is_whitespace_until (GtkTextIter *iter)
+{
+  GtkTextIter cur;
+
+  gtk_text_buffer_get_iter_at_line (gtk_text_iter_get_buffer (iter),
+                                    &cur,
+                                    gtk_text_iter_get_line (iter));
+
+  for (;
+       gtk_text_iter_compare (&cur, iter) < 0;
+       gtk_text_iter_forward_char (&cur))
+    {
+      if (!g_unichar_isspace (gtk_text_iter_get_char (&cur)))
+        return FALSE;
+    }
+
+  return TRUE;
+}
+
+static gboolean
 backward_find_keyword (GtkTextIter *iter,
                        const gchar *keyword,
                        GtkTextIter *limit)
@@ -571,6 +591,9 @@ gb_source_auto_indenter_c_indent (GbSourceAutoIndenterC *c,
     {
       guint offset;
 
+      if (!line_is_whitespace_until (&match_begin))
+        backward_to_line_first_char (&match_begin);
+
       offset = gtk_text_iter_get_line_offset (&match_begin);
       build_indent (c, offset + priv->scope_indent, iter, str);
       GOTO (cleanup);
@@ -612,26 +635,6 @@ cleanup:
   RETURN (ret);
 }
 
-static gboolean
-line_is_whitespace_until (GtkTextIter *iter)
-{
-  GtkTextIter cur;
-
-  gtk_text_buffer_get_iter_at_line (gtk_text_iter_get_buffer (iter),
-                                    &cur,
-                                    gtk_text_iter_get_line (iter));
-
-  for (;
-       gtk_text_iter_compare (&cur, iter) < 0;
-       gtk_text_iter_forward_char (&cur))
-    {
-      if (!g_unichar_isspace (gtk_text_iter_get_char (&cur)))
-        return FALSE;
-    }
-
-  return TRUE;
-}
-
 static gchar *
 maybe_close_comment (GbSourceAutoIndenterC *c,
                      GtkTextIter           *begin,


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