diff --git a/blueprintcompiler/completions.py b/blueprintcompiler/completions.py index 81dd03d..a1090e8 100644 --- a/blueprintcompiler/completions.py +++ b/blueprintcompiler/completions.py @@ -212,8 +212,7 @@ def namespace(ctx: CompletionContext): language.BracketedTypeName, ], matches=[ - [(TokenType.IDENT, None), (TokenType.OP, "."), (TokenType.IDENT, None)], - [(TokenType.IDENT, None), (TokenType.OP, ".")], + [TokenType.IDENT, "."], ], ) def object_completer(ctx: CompletionContext): @@ -301,9 +300,9 @@ def property_completer(ctx: CompletionContext): @completer( applies_in=[language.Property, language.A11yProperty], matches=[ - [(TokenType.IDENT, None), (TokenType.OP, ":")], - [(TokenType.PUNCTUATION, ",")], - [(TokenType.PUNCTUATION, "[")], + [TokenType.IDENT, ":"], + [","], + ["["], ], ) def prop_value_completer(ctx: CompletionContext): @@ -424,7 +423,7 @@ def template_completer(_ctx: CompletionContext): @completer( applies_in=[language.ObjectContent, language.ChildType], - matches=[[(TokenType.PUNCTUATION, "[")]], + matches=[["["]], applies_in_subclass=[("Gtk", "Dialog"), ("Gtk", "InfoBar")], ) def response_id_completer(ctx: CompletionContext): @@ -438,7 +437,7 @@ def response_id_completer(ctx: CompletionContext): @completer( [language.ChildAnnotation, language.ExtResponse], - [[(TokenType.IDENT, "action"), (TokenType.IDENT, "response"), (TokenType.OP, "=")]], + [["action", "response", "="]], ) def complete_response_id(ctx: CompletionContext): gir = ctx.ast_node.root.gir @@ -457,16 +456,16 @@ def complete_response_id(ctx: CompletionContext): [language.ChildAnnotation, language.ExtResponse], [ [ - (TokenType.IDENT, "action"), - (TokenType.IDENT, "response"), - (TokenType.OP, "="), - (TokenType.IDENT, None), + "action", + "response", + "=", + TokenType.IDENT, ], [ - (TokenType.IDENT, "action"), - (TokenType.IDENT, "response"), - (TokenType.OP, "="), - (TokenType.NUMBER, None), + "action", + "response", + "=", + TokenType.NUMBER, ], ], ) diff --git a/blueprintcompiler/completions_utils.py b/blueprintcompiler/completions_utils.py index 970d429..911f5c4 100644 --- a/blueprintcompiler/completions_utils.py +++ b/blueprintcompiler/completions_utils.py @@ -53,11 +53,11 @@ class CompletionContext: new_statement_patterns = [ - [(TokenType.PUNCTUATION, "{")], - [(TokenType.PUNCTUATION, "}")], - [(TokenType.PUNCTUATION, "]")], - [(TokenType.PUNCTUATION, ";")], - [(TokenType.OP, "<")], + ["{"], + ["}"], + ["]"], + [";"], + ["<"], ] @@ -101,9 +101,13 @@ def completer(applies_in: T.List, matches: T.List = [], applies_in_subclass=None if len(pattern) <= len(prev_tokens): for i in range(0, len(pattern)): - type, value = pattern[i] + if isinstance(pattern[i], str): + type, value = None, pattern[i] + elif isinstance(pattern[i], TokenType): + type, value = pattern[i], None + token = prev_tokens[i - len(pattern)] - if token.type != type or ( + if (type is not None and token.type != type) or ( value is not None and str(token) != value ): break diff --git a/blueprintcompiler/language/gobject_signal.py b/blueprintcompiler/language/gobject_signal.py index b6afb09..34269d2 100644 --- a/blueprintcompiler/language/gobject_signal.py +++ b/blueprintcompiler/language/gobject_signal.py @@ -251,7 +251,7 @@ def decompile_signal( @completer( [Signal], - [[(TokenType.PUNCTUATION, "(")]], + [["("]], ) def signal_object_completer(ctx: CompletionContext): yield from get_object_id_completions(ctx) diff --git a/blueprintcompiler/language/gtk_scale.py b/blueprintcompiler/language/gtk_scale.py index 5dc49d8..70de692 100644 --- a/blueprintcompiler/language/gtk_scale.py +++ b/blueprintcompiler/language/gtk_scale.py @@ -153,7 +153,7 @@ def complete_mark(_ctx: CompletionContext): @completer( applies_in=[ExtScaleMark], - matches=[[(TokenType.NUMBER, None), (TokenType.PUNCTUATION, ",")]], + matches=[[TokenType.NUMBER, ","]], ) def complete_mark_position(ctx: CompletionContext): gir = ctx.ast_node.root.gir