Skip to content

Instantly share code, notes, and snippets.

@Ismael-VC
Last active September 15, 2022 06:59
Show Gist options
  • Save Ismael-VC/8894c0739085c01da0b9c03f0dfccea8 to your computer and use it in GitHub Desktop.
Save Ismael-VC/8894c0739085c01da0b9c03f0dfccea8 to your computer and use it in GitHub Desktop.
Uxntal Sublime Text 4 Syntax Definition and Color Scheme for Material Theme Dark.
{
"name": "Uxntal Material Color Scheme",
"variables": {
"pink": "#f07178",
"green": "#c3e88d",
"dark_green": "#009688",
"blue": "#82aaff",
"pale_blue": "#B2CCD6",
"aqua": "#7af8ca",
"red": "rgb(255,83,112)",
"purple": "#c792ea",
"violet": "#BB80B3",
"yellow": "#ffcb6b",
"orange": "#f78c6c",
"orange2": "#FF9800",
"cyan": " #89ddff",
"white": "#eeffff",
"red2": "#ff5370",
"gray": "#546e7a",
"brown": "#AB7967"
},
"rules":
[
{"scope": "tal.opcode.stack", "foreground": "var(red)", "font_style": "italic bold"},
{"scope": "tal.opcode.memory", "foreground": "var(red)", "font_style": "italic bold"},
{"scope": "tal.opcode.logic", "foreground": "var(red)", "font_style": "italic bold"},
{"scope": "tal.opcode.arithmetic", "foreground": "var(red)", "font_style": "italic bold"},
{"scope": "tal.label", "foreground": "var(blue)", "font_style": "bold"},
{"scope": "tal.sublabel", "foreground": "var(cyan)", "font_style": "bold"},
{"scope": "tal.addressing.zero-page", "foreground": "var(orange)", "font_style": "italic"},
{"scope": "tal.addressing.absolute", "foreground": "var(purple)", "font_style": "italic"},
{"scope": "tal.addressing.relative", "foreground": "var(violet)", "font_style": "italic"},
{"scope": "tal.addressing.raw", "foreground": "var(aqua)", "font_style": "italic"},
{"scope": "tal.padding.absolute", "foreground": "var(pink)", "font_style": "bold"},
{"scope": "tal.padding.relative", "foreground": "var(pink)", "font_style": "bold"},
{"scope": "tal.number.short.raw", "foreground": "var(orange2)"},
{"scope": "tal.number.short.literal", "foreground": "var(yellow)"},
{"scope": "tal.number.byte.raw", "foreground": "var(orange2)"},
{"scope": "tal.number.byte.literal", "foreground": "var(yellow)"},
{"scope": "tal.string", "foreground": "var(green)"},
{"scope": "tal.comment", "foreground": "var(gray)"},
{"scope": "tal.include", "foreground": "var(brown)", "font_style": "underline"},
{"scope": "tal.delimiter", "foreground": "var(pale_blue)"},
{"scope": "tal.macro.definition", "foreground": "var(white)"},
{"scope": "tal.macro.delimiter", "foreground": "var(white)"},
{"scope": "tal.macro.invocation", "foreground": "var(white)"}
]
}
%YAML 1.2
---
# See http://www.sublimetext.com/docs/3/syntax.html
name: Uxntal Material Syntax Definition
scopeName: tal.
fileTypes: [tal]
file_extensions:
- tal
scope: source.tal
contexts:
main:
- include: comments
- include: single_quoted_string
# OPCODES
# stack
- match: '\s*BRK2?r?k?r?2?r?k?\s+'
scope: tal.opcode.stack
pop: true
- match: '\s*INC2?r?k?r?2?r?k?\s+'
scope: tal.opcode.stack
pop: true
- match: '\s*LIT2?r?k?r?2?r?k?\s+'
scope: tal.opcode.stack
pop: true
- match: '\s*POP2?r?k?r?2?r?k?\s+'
scope: tal.opcode.stack
pop: true
- match: '\s*NIP2?r?k?r?2?r?k?\s+'
scope: tal.opcode.stack
pop: true
- match: '\s*SWP2?r?k?r?2?r?k?\s+'
scope: tal.opcode.stack
pop: true
- match: '\s*ROT2?r?k?r?2?r?k?\s+'
scope: tal.opcode.stack
pop: true
- match: '\s*DUP2?r?k?r?2?r?k?\s+'
scope: tal.opcode.stack
pop: true
- match: '\s*OVR2?r?k?r?2?r?k?\s+'
scope: tal.opcode.stack
pop: true
# memory
- match: '\s*LDZ2?r?k?r?2?r?k?\s+'
scope: tal.opcode.memory
pop: true
- match: '\s*STZ2?r?k?r?2?r?k?\s+'
scope: tal.opcode.memory
pop: true
- match: '\s*LDR2?r?k?r?2?r?k?\s+'
scope: tal.opcode.memory
pop: true
- match: '\s*STR2?r?k?r?2?r?k?\s+'
scope: tal.opcode.memory
pop: true
- match: '\s*LDA2?r?k?r?2?r?k?\s+'
scope: tal.opcode.memory
pop: true
- match: '\s*STA2?r?k?r?2?r?k?\s+'
scope: tal.opcode.memory
pop: true
- match: '\s*DEI2?r?k?r?2?r?k?\s+'
scope: tal.opcode.memory
pop: true
- match: '\s*DEO2?r?k?r?2?r?k?\s+'
scope: tal.opcode.memory
pop: true
# logic
- match: '\s*EQU2?r?k?r?2?r?k?\s+'
scope: tal.opcode.logic
pop: true
- match: '\s*NEQ2?r?k?r?2?r?k?\s+'
scope: tal.opcode.logic
pop: true
- match: '\s*GTH2?r?k?r?2?r?k?\s+'
scope: tal.opcode.logic
pop: true
- match: '\s*LTH2?r?k?r?2?r?k?\s+'
scope: tal.opcode.logic
pop: true
- match: '\s*JMP2?r?k?r?2?r?k?\s+'
scope: tal.opcode.logic
pop: true
- match: '\s*JCN2?r?k?r?2?r?k?\s+'
scope: tal.opcode.logic
pop: true
- match: '\s*JSR2?r?k?r?2?r?k?\s+'
scope: tal.opcode.logic
pop: true
- match: '\s*STH2?r?k?r?2?r?k?\s+'
scope: tal.opcode.logic
pop: true
# arithmetic
- match: '\s*ADD2?r?k?r?2?r?k?\s+'
scope: tal.opcode.arithmetic
pop: true
- match: '\s*SUB2?r?k?r?2?r?k?\s+'
scope: tal.opcode.arithmetic
pop: true
- match: '\s*MUL2?r?k?r?2?r?k?\s+'
scope: tal.opcode.arithmetic
pop: true
- match: '\s*DIV2?r?k?r?2?r?k?\s+'
scope: tal.opcode.arithmetic
pop: true
- match: '\s*AND2?r?k?r?2?r?k?\s+'
scope: tal.opcode.arithmetic
pop: true
- match: '\s*ORA2?r?k?r?2?r?k?\s+'
scope: tal.opcode.arithmetic
pop: true
- match: '\s*EOR2?r?k?r?2?r?k?\s+'
scope: tal.opcode.arithmetic
pop: true
- match: '\s*SFT2?r?k?r?2?r?k?\s+'
scope: tal.opcode.arithmetic
pop: true
# label
- match: '\s*\@(\S+)'
scope: tal.label
pop: true
# sublabel
- match: '\s*\&(\S+)'
scope: tal.sublabel
pop: true
# include
- match: '\s*~(\S+)'
scope: tal.include
pop: true
# padding
- match: '\s*\$(\S+)'
scope: tal.padding.relative
pop: true
- match: '\s*\|(\S+)'
scope: tal.padding.absolute
pop: true
# Addressing
- match: '\s*\.(\S+\/?\S+)' # zero-page
scope: tal.addressing.zero-page
pop: true
- match: '\s*\,(\S+\/?\S+)' # relative
scope: tal.addressing.relative
pop: true
- match: '\s*\;(\S+\/?\S+)' # absolute
scope: tal.addressing.absolute
pop: true
- match: '\s*\:(\S+\/?\S+)' # raw
scope: tal.addressing.raw
pop: true
# macros
- match: '\s*%\S+'
scope: tal.macro.definition
pop: true
# blocks
- match: '\s*\{\s+'
scope: tal.macro.delimiter
pop: true
- match: '\s*%\s+'
scope: invalid
pop: true
- match: '\s*:\s+'
scope: invalid
pop: true
- match: '\s*,\s+'
scope: invalid
pop: true
- match: '\s*@\s+'
scope: invalid
pop: true
- match: '\s*#\s+'
scope: invalid
pop: true
- match: '\s*\}\s+'
scope: tal.macro.delimiter
pop: true
- match: '\S+\}\S*'
scope: invalid
pop: true
- match: '\s*\[\s+'
scope: tal.delimiter
pop: true
- match: '\S*\[\S+'
scope: invalid
pop: true
- match: '\s*\]\s+'
scope: tal.delimiter
pop: true
- match: '\S+\]\S*'
scope: invalid
pop: true
# numbers
- match: '\s*[0-9|a-f]{4}\s+'
scope: tal.number.short.raw
pop: true
- match: '\s*[0-9|a-f]{2}\s+'
scope: tal.number.byte.raw
pop: true
- match: '\s*#[0-9|a-f]{4}\s+'
scope: tal.number.short.literal
pop: true
- match: '\s*#[0-9|a-f]{2}\s+'
scope: tal.number.byte.literal
pop: true
# strings
- match: '\s*(\"\S+)\s+'
scope: tal.string
pop: true
- match: '\S*(\"\S+)\S+'
pop: true
scope: invalid
- match: "'"
scope: deprecated
push: single_quoted_string
pop: true
# macro invocation
- match: '[^\#]+?'
scope: macro.invocation
pop: true
comment:
- match: '\s*\('
scope: tal.comment
push:
- meta_scope: tal.comment
- match: '\)\s+'
pop: true
- include: comment-nested
comment-nested:
- match: '\('
scope: tal.comment
push:
- meta_scope: tal.comment
- match: '\)'
pop: true
- include: comment-nested
comments:
- include: comment
- include: comment-nested
single_quoted_string:
- meta_scope: deprecated
- match: '\\.'
scope: deprecated
- match: "'"
scope: deprecated
pop: true
@Ismael-VC
Copy link
Author

Ismael-VC commented Sep 15, 2022

Instructions

  1. Install Material Theme.
  2. Save tal.sublime-syntax in Sublime Text Packages directory.
  3. Save Material-Theme.sublime-color-scheme in Packages/Material Theme/schemes.
  4. Add this to the user Preferences.sublime-settings configuration file:
{
...
    "theme": "Material-Theme.sublime-theme",
    "color_scheme": "Packages/Material Theme/schemes/Material-Theme.tmTheme",
...
}

Screen Shot 2022-09-15 at 1 58 40

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment