From 62207dca1cfeae39b468e3c58c37133f8279bbb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Floru=C3=9F?= Date: Tue, 9 Aug 2022 17:19:08 +0200 Subject: [PATCH 1/2] Add `entity.name.type.zig` to `container_decl`. This way, unions, structs, enums, and error declarations get properly marked as types so that "go to definition" works properly in sublime text. --- Syntaxes/Zig.YAML-tmLanguage | 8 ++++---- Syntaxes/Zig.sublime-syntax | 8 ++++---- Syntaxes/Zig.tmLanguage | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Syntaxes/Zig.YAML-tmLanguage b/Syntaxes/Zig.YAML-tmLanguage index ccce12c..a72b1ce 100644 --- a/Syntaxes/Zig.YAML-tmLanguage +++ b/Syntaxes/Zig.YAML-tmLanguage @@ -80,16 +80,16 @@ repository: container_decl: patterns: - match: '\b(?!\d)([a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:extern|packed)?\b\s*(?:union)\s*[(\{])' - name: entity.name.union.zig + name: entity.name.type.zig entity.name.union.zig - match: '\b(?!\d)([a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:extern|packed)?\b\s*(?:struct)\s*[(\{])' - name: entity.name.struct.zig + name: entity.name.type.zig entity.name.struct.zig - match: '\b(?!\d)([a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:extern|packed)?\b\s*(?:enum)\s*[(\{])' - name: entity.name.enum.zig + name: entity.name.type.zig entity.name.enum.zig - match: '\b(?!\d)([a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:error)\s*[(\{])' - name: entity.name.error.zig + name: entity.name.type.zig entity.name.error.zig - match: '\b(error)(\.)([a-zA-Z_]\w*|@\".+\")' captures: diff --git a/Syntaxes/Zig.sublime-syntax b/Syntaxes/Zig.sublime-syntax index 1fa40fe..da99f59 100644 --- a/Syntaxes/Zig.sublime-syntax +++ b/Syntaxes/Zig.sublime-syntax @@ -69,13 +69,13 @@ contexts: scope: constant.numeric.float.hexadecimal.zig container_decl: - match: '\b(?!\d)([a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:extern|packed)?\b\s*(?:union)\s*[(\{])' - scope: entity.name.union.zig + scope: entity.name.type.zig entity.name.union.zig - match: '\b(?!\d)([a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:extern|packed)?\b\s*(?:struct)\s*[(\{])' - scope: entity.name.struct.zig + scope: entity.name.type.zig entity.name.struct.zig - match: '\b(?!\d)([a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:extern|packed)?\b\s*(?:enum)\s*[(\{])' - scope: entity.name.enum.zig + scope: entity.name.type.zig entity.name.enum.zig - match: '\b(?!\d)([a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:error)\s*[(\{])' - scope: entity.name.error.zig + scope: entity.name.type.zig entity.name.error.zig - match: '\b(error)(\.)([a-zA-Z_]\w*|@\".+\")' captures: 1: storage.type.error.zig diff --git a/Syntaxes/Zig.tmLanguage b/Syntaxes/Zig.tmLanguage index 5245d69..c62b9d8 100644 --- a/Syntaxes/Zig.tmLanguage +++ b/Syntaxes/Zig.tmLanguage @@ -194,25 +194,25 @@ match \b(?!\d)([a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:extern|packed)?\b\s*(?:union)\s*[(\{]) name - entity.name.union.zig + entity.name.type.zig entity.name.union.zig match \b(?!\d)([a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:extern|packed)?\b\s*(?:struct)\s*[(\{]) name - entity.name.struct.zig + entity.name.type.zig entity.name.struct.zig match \b(?!\d)([a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:extern|packed)?\b\s*(?:enum)\s*[(\{]) name - entity.name.enum.zig + entity.name.type.zig entity.name.enum.zig match \b(?!\d)([a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:error)\s*[(\{]) name - entity.name.error.zig + entity.name.type.zig entity.name.error.zig captures From d56e8bc20b74810b20a0a91ceef79f054e0fe0e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Floru=C3=9F?= Date: Tue, 9 Aug 2022 18:33:07 +0200 Subject: [PATCH 2/2] Treat general type match as storage.type instead of entity.name.type Otherwise sublime picks up simple usages of a type, such as Hello in `const foo = Hello.foo_value;`, as type declarations. --- Syntaxes/Zig.sublime-syntax | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Syntaxes/Zig.sublime-syntax b/Syntaxes/Zig.sublime-syntax index da99f59..5c9be2c 100644 --- a/Syntaxes/Zig.sublime-syntax +++ b/Syntaxes/Zig.sublime-syntax @@ -276,10 +276,10 @@ contexts: scope: variable.constant.zig - match: '\b[_a-zA-Z][_a-zA-Z0-9]*_t\b' - scope: entity.name.type.zig + scope: storage.type.zig - match: '\b[A-Z][a-zA-Z0-9]*\b' - scope: entity.name.type.zig + scope: storage.type.zig - match: '\b[_a-zA-Z][_a-zA-Z0-9]*\b' scope: variable.zig