[gtksourceview] Bracket matching: fix bug with '(' ')' in C



commit 63faf76e1a4d8ecf6e4b3568e015b34c7d62a476
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Sun Oct 25 15:26:07 2015 +0100

    Bracket matching: fix bug with '('  ')' in C
    
    The string context class is applied to single chars in C. A single char
    can be considered as a string of length 1. Some languages don't make the
    distinction between 'a' and "a". Also, if possible it's better to not
    have a proliferation of context classes.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=756537

 data/language-specs/c.lang |    2 +-
 tests/test-buffer.c        |    4 ++++
 2 files changed, 5 insertions(+), 1 deletions(-)
---
diff --git a/data/language-specs/c.lang b/data/language-specs/c.lang
index b9b6868..e332a38 100644
--- a/data/language-specs/c.lang
+++ b/data/language-specs/c.lang
@@ -136,7 +136,7 @@
       </include>
     </context>
 
-    <context id="char" style-ref="char">
+    <context id="char" style-ref="char" class="string">
       <match>L?'(\%{escaped-character}|.)'</match>
     </context>
 
diff --git a/tests/test-buffer.c b/tests/test-buffer.c
index 07d5727..59d1597 100644
--- a/tests/test-buffer.c
+++ b/tests/test-buffer.c
@@ -404,6 +404,10 @@ test_bracket_matching (void)
        do_test_bracket_matching (buffer, "/*(*/\"a\"/*)*/", 2, -1, -1, GTK_SOURCE_BRACKET_MATCH_NOT_FOUND);
        do_test_bracket_matching (buffer, "/*(*/\"a\"/*)*/", 10, -1, -1, GTK_SOURCE_BRACKET_MATCH_NOT_FOUND);
 
+       /* Single char in C */
+       do_test_bracket_matching (buffer, "'(' ')'", 1, -1, -1, GTK_SOURCE_BRACKET_MATCH_NOT_FOUND);
+       do_test_bracket_matching (buffer, "'(' ')'", 5, -1, -1, GTK_SOURCE_BRACKET_MATCH_NOT_FOUND);
+
        g_object_unref (buffer);
 
        /* Test setting the property and a specific tag table. There was a


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