diff --git a/grammars/rgbasm.cson b/grammars/rgbasm.cson index 2fb053a..956bd45 100644 --- a/grammars/rgbasm.cson +++ b/grammars/rgbasm.cson @@ -1,4 +1,7 @@ -'fileTypes': [ +# Syntax Highlighting for the RGBDS toolchain + +scopeName: 'source.rgbasm' +fileTypes: [ # http://www.devrs.com/gb/files/guide.txt 'z80' 'inc' @@ -6,143 +9,177 @@ 'gb.s' 's' ] -'name': 'RGBDS Assembly' -'scopeName': 'source.asm.rgbasm' -'patterns': [ - { - 'captures': - '2': - 'name': 'variable.language.register.8-bit.rgbasm' - 'match': '(,|\\s*)?(?>?|\\&|\\||\\^|(!|=|<|>)=|!' + name: 'keyword.operator.rgbasm' + } + ##### LABELS + # global labels with colored colons + { + captures: + 1: name: 'entity.name.function.label.rgbasm' + 2: name: 'keyword.operator.label.scope.rgbasm' + 3: name: 'entity.name.function.label.rgbasm' + match: '^([a-zA-Z_][a-zA-Z0-9_\\@]*?)(\\.)?([a-zA-Z_][a-zA-Z0-9_\\@]*?)?(::?)?\\s+' + } + # local labels with colored colons + { + captures: + 1: name: 'keyword.operator.label.scope.rgbasm' + 2: name: 'entity.name.function.label.rgbasm' + match: '^(\\.)([a-zA-Z_][a-zA-Z0-9_\\@]*?)(:)?\\s+' + } + # # global labels + # { + # captures: + # 1: name: 'entity.name.function.label.rgbasm' + # 2: name: 'entity.name.function.label.rgbasm' + # match: '^([a-zA-Z_][a-zA-Z0-9_\\@\\.]*?)(::?)?\\s+' + # } + # # local labels + # { + # captures: + # 1: name: 'entity.name.function.label.rgbasm' + # 2: name: 'entity.name.function.label.rgbasm' + # match: '^(\\.[a-zA-Z_][a-zA-Z0-9_\\@]*?)(:)?\\s+' + # } + ##### INLINE LABELS + # # inline labels in [] + # { + # captures: + # 2: name: 'entity.name.function.label.rgbasm' + # match: '(\\[)(.*?)(\\])' + # } + ##### WARNING: This is buggy and will cause illegal labels to highlight + # # other inline labels + # { + # match: '(?!^)\\b(\\.?[a-zA-Z_][a-zA-Z0-9_\\@]*)\\b' + # name: 'entity.name.function.label.rgbasm' + # } + ]