[gnome-builder] plugins/xml-pack: fix unindent on </



commit 1898c8f851df3fd65c9fb97f5f6140b52370baa0
Author: Christian Hergert <chergert redhat com>
Date:   Sat Jul 23 23:49:47 2022 -0700

    plugins/xml-pack: fix unindent on </
    
    This still requires fixes in GtkSourceView which I'm still preparing and
    testing for the corner cases.

 src/plugins/xml-pack/ide-xml-indenter.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)
---
diff --git a/src/plugins/xml-pack/ide-xml-indenter.c b/src/plugins/xml-pack/ide-xml-indenter.c
index 21c4e17ec..cc57ca6ab 100644
--- a/src/plugins/xml-pack/ide-xml-indenter.c
+++ b/src/plugins/xml-pack/ide-xml-indenter.c
@@ -272,6 +272,8 @@ ide_xml_indenter_indent_backward (IdeXmlIndenter *xml,
       (ch = text_iter_peek_prev_char (&tmp)) &&
       ((ch == ' ') || (ch == '\t')))
     {
+      GtkTextIter close_tag_begin = tmp;
+
       if (ch == '\t')
         {
           GtkTextBuffer *buffer = gtk_text_iter_get_buffer (iter);
@@ -292,8 +294,16 @@ ide_xml_indenter_indent_backward (IdeXmlIndenter *xml,
                   (ch != ' '))
                 return;
               count--;
+
               if (count == 0)
-                *iter = tmp;
+                {
+                  GtkTextBuffer *buffer = gtk_text_iter_get_buffer (iter);
+                  GtkTextMark *mark = gtk_text_buffer_create_mark (buffer, NULL, iter, FALSE);
+
+                  gtk_text_buffer_delete (buffer, &tmp, &close_tag_begin);
+                  gtk_text_buffer_get_iter_at_mark (buffer, iter, mark);
+                  gtk_text_buffer_delete_mark (buffer, mark);
+                }
             }
         }
     }
@@ -438,7 +448,6 @@ ide_xml_indenter_indent (GtkSourceIndenter *indenter,
       break;
 
     case IDE_XML_INDENT_ACTION_INDENT_BACKWARD:
-      // FIXME: can't confirm it works since this is never triggered
       ide_xml_indenter_indent_backward (xml, iter);
       break;
 


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