Add more sublime syntaxes
Also fix gutenberg serve that has been broken (not re-rendering content) for quite some time now.
This commit is contained in:
		
							parent
							
								
									d37ca10905
								
							
						
					
					
						commit
						6036927c19
					
				
							
								
								
									
										21
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,21 @@
 | 
			
		||||
[submodule "sublime_syntaxes/Packages"]
 | 
			
		||||
	path = sublime_syntaxes/Packages
 | 
			
		||||
	url = git@github.com:sublimehq/Packages.git
 | 
			
		||||
[submodule "sublime_syntaxes/sublimeassembly"]
 | 
			
		||||
	path = sublime_syntaxes/sublimeassembly
 | 
			
		||||
	url = https://github.com/Nessphoro/sublimeassembly.git
 | 
			
		||||
[submodule "sublime_syntaxes/LESS-sublime"]
 | 
			
		||||
	path = sublime_syntaxes/LESS-sublime
 | 
			
		||||
	url = https://github.com/danro/LESS-sublime.git
 | 
			
		||||
[submodule "sublime_syntaxes/TypeScript-Sublime-Plugin"]
 | 
			
		||||
	path = sublime_syntaxes/TypeScript-Sublime-Plugin
 | 
			
		||||
	url = https://github.com/Microsoft/TypeScript-Sublime-Plugin.git
 | 
			
		||||
[submodule "sublime_syntaxes/Handlebars"]
 | 
			
		||||
	path = sublime_syntaxes/Handlebars
 | 
			
		||||
	url = https://github.com/daaain/Handlebars.git
 | 
			
		||||
[submodule "sublime_syntaxes/Julia-sublime"]
 | 
			
		||||
	path = sublime_syntaxes/Julia-sublime
 | 
			
		||||
	url = https://github.com/JuliaEditorSupport/Julia-sublime.git
 | 
			
		||||
[submodule "sublime_syntaxes/Elm.tmLanguage"]
 | 
			
		||||
	path = sublime_syntaxes/Elm.tmLanguage
 | 
			
		||||
	url = https://github.com/elm-community/Elm.tmLanguage.git
 | 
			
		||||
							
								
								
									
										41
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								README.md
									
									
									
									
									
								
							@ -148,9 +148,6 @@ built-in:
 | 
			
		||||
- solarized-dark
 | 
			
		||||
- solarized-light
 | 
			
		||||
 | 
			
		||||
A gallery containing lots of themes at https://tmtheme-editor.herokuapp.com/#!/editor/theme/Agola%20Dark.
 | 
			
		||||
More themes can be easily added to gutenberg, just make a PR with the wanted theme.
 | 
			
		||||
 | 
			
		||||
### Internal links
 | 
			
		||||
You can have internal links in your markdown that will be replaced with the full URL when rendering.
 | 
			
		||||
To do so, use the normal markdown link syntax, start the link with `./` and point to the `.md` file you want
 | 
			
		||||
@ -207,3 +204,41 @@ In case of shortcodes with a body, the body will be passed as the `body` variabl
 | 
			
		||||
## Example sites
 | 
			
		||||
 | 
			
		||||
- [vincent.is](https://vincent.is): https://gitlab.com/Keats/vincent.is
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Adding syntax highlighting languages and themes
 | 
			
		||||
### Adding a syntax
 | 
			
		||||
Syntax highlighting depends on submodules so ensure you load them first:
 | 
			
		||||
```bash
 | 
			
		||||
$ git submodule update --init 
 | 
			
		||||
```
 | 
			
		||||
Gutenberg only works with syntaxes in the `.sublime-syntax` format. If your syntax
 | 
			
		||||
is in `.tmLanguage` format, open it in Sublime Text and convert it to `sublime-syntax` by clicking on
 | 
			
		||||
Tools > Developer > New Syntax from ... and put it at the root of `sublime_syntaxes`.
 | 
			
		||||
 | 
			
		||||
You can also add a submodule to the repository of the wanted syntax:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
$ cd sublime_syntaxes
 | 
			
		||||
$ git submodule add https://github.com/elm-community/Elm.tmLanguage.git
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Note that you can also only copy manually the updated syntax definition file but this means
 | 
			
		||||
Gutenberg won't be able to automatically update it.
 | 
			
		||||
 | 
			
		||||
And finally from the root of the repository run the following command:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
$ cargo run --example generate_sublime synpack sublime_syntaxes sublime_syntaxes/newlines.packdump sublime_syntaxes/nonewlines.packdump
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Adding a theme
 | 
			
		||||
A gallery containing lots of themes at https://tmtheme-editor.herokuapp.com/#!/editor/theme/Agola%20Dark.
 | 
			
		||||
More themes can be easily added to gutenberg, just make a PR with the wanted theme added in the `sublime_themes` directory
 | 
			
		||||
and run the following command from the repository root:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
$ cargo run --example generate_sublime themepack sublime_themes sublime_themes/all.themedump
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
You should see the list of themes being added.
 | 
			
		||||
 | 
			
		||||
@ -9,19 +9,18 @@ use syntect::dumps::*;
 | 
			
		||||
use std::env;
 | 
			
		||||
 | 
			
		||||
fn usage_and_exit() -> ! {
 | 
			
		||||
    println!("USAGE: gendata synpack source-dir newlines.packdump nonewlines.packdump\n
 | 
			
		||||
              gendata themepack source-dir themepack.themedump");
 | 
			
		||||
    println!("USAGE: cargo run --example generate_sublime synpack source-dir newlines.packdump nonewlines.packdump\n
 | 
			
		||||
              cargo run --example generate_sublime themepack source-dir themepack.themedump");
 | 
			
		||||
    ::std::process::exit(2);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Not an example of Gutenberg but is used to generate the theme and syntax dump
 | 
			
		||||
// used for syntax highlighting.
 | 
			
		||||
// Check README for more details
 | 
			
		||||
fn main() {
 | 
			
		||||
 | 
			
		||||
    let mut a = env::args().skip(1);
 | 
			
		||||
    match (a.next(), a.next(), a.next(), a.next()) {
 | 
			
		||||
        (Some(ref cmd),
 | 
			
		||||
         Some(ref package_dir),
 | 
			
		||||
         Some(ref packpath_newlines),
 | 
			
		||||
         Some(ref packpath_nonewlines)) if cmd == "synpack" => {
 | 
			
		||||
    let mut args = env::args().skip(1);
 | 
			
		||||
    match (args.next(), args.next(), args.next(), args.next()) {
 | 
			
		||||
        (Some(ref cmd), Some(ref package_dir), Some(ref packpath_newlines), Some(ref packpath_nonewlines)) if cmd == "synpack" => {
 | 
			
		||||
            let mut ps = SyntaxSet::new();
 | 
			
		||||
            ps.load_plain_text_syntax();
 | 
			
		||||
            ps.load_syntaxes(package_dir, true).unwrap();
 | 
			
		||||
@ -31,9 +30,8 @@ fn main() {
 | 
			
		||||
            ps.load_plain_text_syntax();
 | 
			
		||||
            ps.load_syntaxes(package_dir, false).unwrap();
 | 
			
		||||
            dump_to_file(&ps, packpath_nonewlines).unwrap();
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        (Some(ref s), Some(ref theme_dir), Some(ref packpath), None) if s == "themepack" => {
 | 
			
		||||
        },
 | 
			
		||||
        (Some(ref cmd), Some(ref theme_dir), Some(ref packpath), None) if cmd == "themepack" => {
 | 
			
		||||
            let ts = ThemeSet::load_from_folder(theme_dir).unwrap();
 | 
			
		||||
            for path in ts.themes.keys() {
 | 
			
		||||
                println!("{:?}", path);
 | 
			
		||||
@ -18,7 +18,7 @@ use errors::{Result, ResultExt};
 | 
			
		||||
 | 
			
		||||
// We need to put those in a struct to impl Send and sync
 | 
			
		||||
pub struct Setup {
 | 
			
		||||
    syntax_set: SyntaxSet,
 | 
			
		||||
    pub syntax_set: SyntaxSet,
 | 
			
		||||
    pub theme_set: ThemeSet,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -28,7 +28,11 @@ unsafe impl Sync for Setup {}
 | 
			
		||||
lazy_static!{
 | 
			
		||||
    static ref SHORTCODE_RE: Regex = Regex::new(r#"\{(?:%|\{)\s+([[:alnum:]]+?)\(([[:alnum:]]+?="?.+?"?)\)\s+(?:%|\})\}"#).unwrap();
 | 
			
		||||
    pub static ref SETUP: Setup = Setup {
 | 
			
		||||
        syntax_set: SyntaxSet::load_defaults_newlines(),
 | 
			
		||||
        syntax_set: {
 | 
			
		||||
            let mut ps: SyntaxSet = from_binary(include_bytes!("../sublime_syntaxes/newlines.packdump"));
 | 
			
		||||
            ps.link_syntaxes();
 | 
			
		||||
            ps
 | 
			
		||||
        },
 | 
			
		||||
        theme_set: from_binary(include_bytes!("../sublime_themes/all.themedump"))
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										19
									
								
								src/site.rs
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								src/site.rs
									
									
									
									
									
								
							@ -70,6 +70,7 @@ pub struct Site {
 | 
			
		||||
    static_path: PathBuf,
 | 
			
		||||
    pub tags: HashMap<String, Vec<PathBuf>>,
 | 
			
		||||
    pub categories: HashMap<String, Vec<PathBuf>>,
 | 
			
		||||
    pub permalinks: HashMap<String, String>,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl Site {
 | 
			
		||||
@ -96,6 +97,7 @@ impl Site {
 | 
			
		||||
            static_path: path.join("static"),
 | 
			
		||||
            tags: HashMap::new(),
 | 
			
		||||
            categories: HashMap::new(),
 | 
			
		||||
            permalinks: HashMap::new(),
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        Ok(site)
 | 
			
		||||
@ -146,6 +148,7 @@ impl Site {
 | 
			
		||||
            page.render_markdown(&permalinks, &self.tera, &self.config)?;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        self.permalinks = permalinks;
 | 
			
		||||
        self.populate_sections();
 | 
			
		||||
        self.populate_tags_and_categories();
 | 
			
		||||
 | 
			
		||||
@ -166,6 +169,14 @@ impl Site {
 | 
			
		||||
        Ok(())
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Called in serve, add a page again updating permalinks and its content
 | 
			
		||||
    fn add_page_and_render(&mut self, path: &Path) -> Result<()> {
 | 
			
		||||
        self.add_page(path)?;
 | 
			
		||||
        let mut page = self.pages.get_mut(path).unwrap();
 | 
			
		||||
        self.permalinks.insert(page.relative_path.clone(), page.permalink.clone());
 | 
			
		||||
        page.render_markdown(&self.permalinks, &self.tera, &self.config)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Find out the direct subsections of each subsection if there are some
 | 
			
		||||
    /// as well as the pages for each section
 | 
			
		||||
    fn populate_sections(&mut self) {
 | 
			
		||||
@ -272,15 +283,17 @@ impl Site {
 | 
			
		||||
                    self.add_section(path)?;
 | 
			
		||||
                } else {
 | 
			
		||||
                    // probably just an update so just re-parse that page
 | 
			
		||||
                    self.add_page(path)?;
 | 
			
		||||
                    self.add_page_and_render(path)?;
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                // new file?
 | 
			
		||||
                self.add_page(path)?;
 | 
			
		||||
                self.add_page_and_render(path)?;
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            // File doesn't exist -> a deletion so we remove it from
 | 
			
		||||
            // File doesn't exist -> a deletion so we remove it from everything
 | 
			
		||||
            let relative_path = self.pages[path].relative_path.clone();
 | 
			
		||||
            self.pages.remove(path);
 | 
			
		||||
            self.permalinks.remove(&relative_path);
 | 
			
		||||
        }
 | 
			
		||||
        self.populate_sections();
 | 
			
		||||
        self.populate_tags_and_categories();
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										67
									
								
								sublime_syntaxes/Assembly x86.sublime-syntax
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								sublime_syntaxes/Assembly x86.sublime-syntax
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,67 @@
 | 
			
		||||
%YAML 1.2
 | 
			
		||||
---
 | 
			
		||||
# http://www.sublimetext.com/docs/3/syntax.html
 | 
			
		||||
name: Assembly x86 (NASM)
 | 
			
		||||
file_extensions:
 | 
			
		||||
  - asm
 | 
			
		||||
  - inc
 | 
			
		||||
scope: source.assembly
 | 
			
		||||
contexts:
 | 
			
		||||
  main:
 | 
			
		||||
    - match: \b(?i)(v)?(aaa|aad|aam|aas|adc|add|addpd|addps|addsd|addss|addsubpd|addsubps|aesdec|aesdeclast|aesenc|aesenclast|aesimc|aeskeygenassist|and|andpd|andps|andnpd|andnps|arpl|blendpd|bmi|blendps|blendvpd|blendvps|bound|bsf|bsr|bswap|bt|btc|btr|bts|cbw|cwde|cdqe|clc|cld|cflush|clts|cmc|cmov(n?e|ge?|ae?|le?|be?|n?o|n?z)|cmp|cmppd|cmpps|cmps|cnpsb|cmpsw|cmpsd|cmpsq|cmpss|cmpxchg|cmpxchg8b|cmpxchg16b|comisd|comiss|cpuid|crc32|cvtdq2pd|cvtdq2ps|cvtpd2dq|cvtpd2pi|cvtpd2ps|cvtpi2pd|cvtpi2ps|cvtps2dq|cvtps2pd|cvtps2pi|cvtsd2si|cvtsd2ss|cvts2sd|cvtsi2ss|cvtss2sd|cvtss2si|cvttpd2dq|cvtpd2pi|cvttps2dq|cvttps2pi|cvttps2dq|cvttps2pi|cvttsd2si|cvttss2si|cwd|cdq|cqo|daa|das|dec|div|divpd|divps|divsd|divss|dppd|dpps|emms|enter|extractps|f2xm1|fabs|fadd|faddp|fiadd|fbld|fbstp|fchs|fclex|fnclex|fcmov(n?e|ge?|ae?|le?|be?|n?o|n?z)|fcom|fcmop|fcompp|fcomi|fcomip|fucomi|fucomip|fcos|fdecstp|fdiv|fdivp|fidiv|fdivr|fdivrp|fidivr|ffree|ficom|ficomp|fild|fincstp|finit|fnint|fist|fistp|fisttp|fld|fld1|fldl2t|fldl2e|fldpi|fldlg2|fldln2|fldz|fldcw|fldenv|fmul|fmulp|fimul|fnop|fpatan|fprem|fprem1|fptan|frndint|frstor|fsave|fnsave|fscale|fsin|fsincos|fsqrt|fst|fstp|fstcw|fnstcw|fstenv|fnstenv|fsts(w?)|fnstsw|fsub|fsubp|fisub|fsubr|fsubrp|fisubr|ftst|fucom|fucomp|fucompp|fxam|fxch|fxrstor|fxsave|fxtract|fyl2x|fyl2xp1|haddpd|haddps|husbpd|hsubps|idiv|imul|in|inc|ins|insb|insw|insd|insertps|int|into|invd|invlpg|invpcid|iret|iretd|iretq|lahf|lar|lddqu|ldmxcsr|lds|les|lfs|lgs|lss|lea|leave|lfence|lgdt|lidt|llgdt|lmsw|lock|lods|lodsb|lodsw|lodsd|lodsq|lsl|ltr|maskmovdqu|maskmovq|maxpd|maxps|maxsd|maxss|mfence|minpd|minps|minsd|minss|monitor|mov|movapd|movaps|movbe|movd|movq|movddup|movdqa|movdqu|movq2q|movhlps|movhpd|movhps|movlhps|movlpd|movlps|movmskpd|movmskps|movntdqa|movntdq|movnti|movntpd|movntps|movntq|movq|movq2dq|movs|movsb|movsw|movsd|movsq|movsd|movshdup|movsldup|movss|movsx|movsxd|movupd|movups|movzx|mpsadbw|mul|mulpd|mulps|mulsd|mulss|mwait|neg|not|or|orpd|orps|out|outs|outsb|outsw|outsd|pabsb|pabsw|pabsd|packsswb|packssdw|packusdw|packuswb|paddb|paddw|paddd|paddq|paddsb|paddsw|paddusb|paddusw|palignr|pand|pandn|pause|pavgb|pavgw|pblendvb|pblendw|pclmulqdq|pcmpeqb|pcmpeqw|pcmpeqd|pcmpeqq|pcmpestri|pcmpestrm|pcmptb|pcmptgw|pcmpgtd|pcmpgtq|pcmpistri|pcmpisrm|pdep|pext|pextrb|pextrd|pextrq|pextrw|phaddw|phaddd|phaddsw|phinposuw|phsubw|phsubd|phsubsw|pinsrb|pinsrd|pinsrq|pinsrw|pmaddubsw|pmadddwd|pmaxsb|pmaxsd|pmaxsw|pmaxsw|pmaxub|pmaxud|pmaxuw|pminsb|pminsd|pminsw|pminub|pminud|pminuw|pmovmskb|pmovsx|pmovzx|pmuldq|pmulhrsw|pmulhuw|pmulhw|pmulld|pmullw|pmuludw|pop|popa|popad|popcnt|popf|popfd|popfq|por|prefetch|psadbw|pshufb|pshufd|pshufhw|pshuflw|pshufw|psignb|psignw|psignd|pslldq|psllw|pslld|psllq|psraw|psrad|psrldq|psrlw|psrld|psrlq|psubb|psubw|psubd|psubq|psubsb|psubsw|psubusb|psubusw|test|ptest|punpckhbw|punpckhwd|punpckhdq|punpckhddq|punpcklbw|punpcklwd|punpckldq|punpckldqd|push|pusha|pushad|pushf|pushfd|pxor|prcl|rcr|rol|ror|rcpps|rcpss|rdfsbase|rdgsbase|rdmsr|rdpmc|rdrand|rdtsc|rdtscp|rep|repe|repz|repne|repnz|roundpd|roundps|roundsd|roundss|rsm|rsqrps|rsqrtss|sahf|sal|sar|shl|shr|sbb|scas|scasb|scasw|scasd|set(n?e|ge?|ae?|le?|be?|n?o|n?z)|sfence|sgdt|shld|shrd|shufpd|shufps|sidt|sldt|smsw|sqrtpd|sqrtps|sqrtsd|sqrtss|stc|std|stmxcsr|stos|stosb|stosw|stosd|stosq|str|sub|subpd|subps|subsd|subss|swapgs|syscall|sysenter|sysexit|sysret|teset|ucomisd|ucomiss|ud2|unpckhpd|unpckhps|unpcklpd|unpcklps|vbroadcast|vcvtph2ps|vcvtp2sph|verr|verw|vextractf128|vinsertf128|vmaskmov|vpermilpd|vpermilps|vperm2f128|vtestpd|vzeroall|vzeroupper|wait|fwait|wbinvd|wrfsbase|wrgsbase|wrmsr|xadd|xchg|xgetbv|xlat|xlatb|xor|xorpd|xorps|xrstor|xsave|xsaveopt|xsetbv|lzcnt|extrq|insertq|movntsd|movntss|vfmaddpd|vfmaddps|vfmaddsd|vfmaddss|vfmaddsubbpd|vfmaddsubps|vfmsubaddpd|vfmsubaddps|vfmsubpd|vfmsubps|vfmsubsd|vfnmaddpd|vfnmaddps|vfnmaddsd|vfnmaddss|vfnmsubpd|vfnmusbps|vfnmusbsd|vfnmusbss|vbroadcastss|vbroadcastsd|vbroadcastf128|vmaskmovps|vmaskmovpd|cvt|xor|cli|sti|hlt|nop|lock|wait|enter|leave|ret|loop(n?e|n?z)?|call|j(mp|n?e|n?ge?|n?ae?|le?|be?|n?o|n?z|n?c|n?p|n?b))\b
 | 
			
		||||
      scope: keyword.control.assembly
 | 
			
		||||
    - match: '\b(?i)(RBP|EBP|BP|CS|DS|ES|FS|GS|SS|RAX|EAX|RBX|EBX|RCX|ECX|RDX|EDX|RIP|EIP|IP|RSP|ESP|SP|RSI|ESI|SI|RDI|EDI|DI|RFLAGS|EFLAGS|FLAGS|R(8|9|10|11|12|13|14|15)(d|w|b)?|(Y|X)MM([0-9]|10|11|12|13|14|15)|(A|B|C|D)(X|H|L)|CR[0-4]|DR[0-7]|TR6|TR7|EFER)\b'
 | 
			
		||||
      scope: variable.parameter.register.assembly
 | 
			
		||||
    - match: '\b[0-9]+\b'
 | 
			
		||||
      scope: constant.character.decimal.assembly
 | 
			
		||||
    - match: '\b(0x)(?i)[A-F0-9]+\b'
 | 
			
		||||
      scope: constant.character.hexadecimal.assembly
 | 
			
		||||
    - match: '\b(?i)[A-F0-9]+h\b'
 | 
			
		||||
      scope: constant.character.hexadecimal.assembly
 | 
			
		||||
    - match: \b(?i)(0|1)+b\b
 | 
			
		||||
      scope: constant.character.binary.assembly
 | 
			
		||||
    - match: ("|').*?("|')
 | 
			
		||||
      scope: string.assembly
 | 
			
		||||
    - match: '^\['
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: support.function.directive.assembly
 | 
			
		||||
        - match: '\]'
 | 
			
		||||
          pop: true
 | 
			
		||||
    - match: "(^struc) ([_a-zA-Z][_a-zA-Z0-9]*)"
 | 
			
		||||
      scope: support.function.directive.assembly
 | 
			
		||||
      captures:
 | 
			
		||||
        2: entity.name.function.assembly
 | 
			
		||||
    - match: ^endstruc
 | 
			
		||||
      scope: support.function.directive.assembly
 | 
			
		||||
    - match: "^%macro ([_a-zA-Z][_a-zA-Z0-9]*) ([0-9]+)"
 | 
			
		||||
      scope: support.function.directive.assembly
 | 
			
		||||
      captures:
 | 
			
		||||
        1: entity.name.function.assembly
 | 
			
		||||
        2: constant.character.assembly
 | 
			
		||||
    - match: ^%endmacro
 | 
			
		||||
      scope: support.function.directive.assembly
 | 
			
		||||
    - match: ^%comment
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: comment.assembly
 | 
			
		||||
        - match: ^%endcomment
 | 
			
		||||
          pop: true
 | 
			
		||||
    - match: '\s*(?i)(%define|%ifndef|%xdefine|%idefine|%undef|%assign|%defstr|%strcat|%strlen|%substr|%00|%0|%rotate|%rep|%endrep|%include|\$\$|\$|%unmacro|%if|%elif|%else|%endif|%(el)?ifdef|%(el)?ifmacro|%(el)?ifctx|%(el)?ifidn|%(el)?ifidni|%(el)?ifid|%(el)?ifnum|%(el)?ifstr|%(el)?iftoken|%(el)?ifempty|%(el)?ifenv|%pathsearch|%depend|%use|%push|%pop|%repl|%arg|%stacksize|%local|%error|%warning|%fatal|%line|%!|%comment|%endcomment|__NASM_VERSION_ID__|__NASM_VER__|__FILE__|__LINE__|__BITS__|__OUTPUT_FORMAT__|__DATE__|__TIME__|__DATE_NUM__|_TIME__NUM__|__UTC_DATE__|__UTC_TIME__|__UTC_DATE_NUM__|__UTC_TIME_NUM__|__POSIX_TIME__|__PASS__|ISTRUC|AT|IEND|BITS 16|BITS 32|BITS 64|USE16|USE32|__SECT__|ABSOLUTE|EXTERN|GLOBAL|COMMON|CPU|FLOAT)\b ?([_a-zA-Z][_a-zA-Z0-9]*)?'
 | 
			
		||||
      captures:
 | 
			
		||||
        1: support.function.directive.assembly
 | 
			
		||||
        13: entity.name.function.assembly
 | 
			
		||||
    - match: \b(?i)(d(b|w|d|q|t|o|y)|res(b|w|d|q|t|o)|equ|times|align|alignb|sectalign|section|ptr|byte|word|dword|qword|incbin|)\b
 | 
			
		||||
      scope: support.function.directive.assembly
 | 
			
		||||
    - match: (\s)*;.*$
 | 
			
		||||
      scope: comment.assembly
 | 
			
		||||
    - match: '(,|\[|\]|\+|\-|\*)'
 | 
			
		||||
      scope: source.assembly
 | 
			
		||||
    - match: '^\s*%%(.-[;])+?:$'
 | 
			
		||||
      scope: entity.name.function.assembly
 | 
			
		||||
    - match: '^\s*%\$(.-[;])+?:$'
 | 
			
		||||
      scope: entity.name.function.assembly
 | 
			
		||||
    - match: '^\.?(.-[;])+?:$'
 | 
			
		||||
      scope: entity.name.function.assembly
 | 
			
		||||
    - match: '^\.?(.-[;])+?\b'
 | 
			
		||||
      scope: entity.name.function.assembly
 | 
			
		||||
    - match: .+?
 | 
			
		||||
      scope: entity.name.function.assembly
 | 
			
		||||
							
								
								
									
										200
									
								
								sublime_syntaxes/Elm.sublime-syntax
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										200
									
								
								sublime_syntaxes/Elm.sublime-syntax
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,200 @@
 | 
			
		||||
%YAML 1.2
 | 
			
		||||
---
 | 
			
		||||
# http://www.sublimetext.com/docs/3/syntax.html
 | 
			
		||||
name: Elm
 | 
			
		||||
file_extensions:
 | 
			
		||||
  - elm
 | 
			
		||||
scope: source.elm
 | 
			
		||||
contexts:
 | 
			
		||||
  main:
 | 
			
		||||
    - match: "(`)[a-zA-Z_']*?(`)"
 | 
			
		||||
      scope: keyword.operator.function.infix.elm
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.entity.elm
 | 
			
		||||
        2: punctuation.definition.entity.elm
 | 
			
		||||
    - match: \(\)
 | 
			
		||||
      scope: constant.language.unit.elm
 | 
			
		||||
    - match: ^\b((effect|port)\s+)?(module)\s+
 | 
			
		||||
      captures:
 | 
			
		||||
        1: keyword.other.elm
 | 
			
		||||
        3: keyword.other.elm
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: meta.declaration.module.elm
 | 
			
		||||
        - match: $|;
 | 
			
		||||
          captures:
 | 
			
		||||
            1: keyword.other.elm
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: module_name
 | 
			
		||||
        - match: '(where)\s*\{'
 | 
			
		||||
          captures:
 | 
			
		||||
            1: keyword.other.elm
 | 
			
		||||
          push:
 | 
			
		||||
            - match: '\}'
 | 
			
		||||
              pop: true
 | 
			
		||||
            - include: type_signature
 | 
			
		||||
        - match: (exposing)
 | 
			
		||||
          scope: keyword.other.elm
 | 
			
		||||
        - include: module_exports
 | 
			
		||||
        - match: (where)
 | 
			
		||||
          scope: keyword.other.elm
 | 
			
		||||
        - match: "[a-z]+"
 | 
			
		||||
          scope: invalid
 | 
			
		||||
    - match: ^\b(import)\s+((open)\s+)?
 | 
			
		||||
      captures:
 | 
			
		||||
        1: keyword.other.elm
 | 
			
		||||
        3: invalid
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: meta.import.elm
 | 
			
		||||
        - match: ($|;)
 | 
			
		||||
          pop: true
 | 
			
		||||
        - match: (as|exposing)
 | 
			
		||||
          scope: keyword.import.elm
 | 
			
		||||
        - include: module_name
 | 
			
		||||
        - include: module_exports
 | 
			
		||||
    - match: '(\[)(glsl)(\|)'
 | 
			
		||||
      captures:
 | 
			
		||||
        1: keyword.other.elm
 | 
			
		||||
        2: support.function.prelude.elm
 | 
			
		||||
        3: keyword.other.elm
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: entity.glsl.elm
 | 
			
		||||
        - match: '(\|\])'
 | 
			
		||||
          captures:
 | 
			
		||||
            1: keyword.other.elm
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: scope:source.glsl
 | 
			
		||||
    - match: \b(type alias|type|case|of|let|in|as)\s+
 | 
			
		||||
      scope: keyword.other.elm
 | 
			
		||||
    - match: \b(if|then|else)\s+
 | 
			
		||||
      scope: keyword.control.elm
 | 
			
		||||
    - match: '\b([0-9]+\.[0-9]+([eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+)\b'
 | 
			
		||||
      comment: Floats are always decimal
 | 
			
		||||
      scope: constant.numeric.float.elm
 | 
			
		||||
    - match: '\b([0-9]+)\b'
 | 
			
		||||
      scope: constant.numeric.elm
 | 
			
		||||
    - match: '"""'
 | 
			
		||||
      captures:
 | 
			
		||||
        0: punctuation.definition.string.begin.elm
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: string.quoted.double.elm
 | 
			
		||||
        - match: '"""'
 | 
			
		||||
          captures:
 | 
			
		||||
            0: punctuation.definition.string.end.elm
 | 
			
		||||
          pop: true
 | 
			
		||||
        - match: '\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\''\&])'
 | 
			
		||||
          scope: constant.character.escape.elm
 | 
			
		||||
        - match: '\^[A-Z@\[\]\\\^_]'
 | 
			
		||||
          scope: constant.character.escape.control.elm
 | 
			
		||||
    - match: '"'
 | 
			
		||||
      captures:
 | 
			
		||||
        0: punctuation.definition.string.begin.elm
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: string.quoted.double.elm
 | 
			
		||||
        - match: '"'
 | 
			
		||||
          captures:
 | 
			
		||||
            0: punctuation.definition.string.end.elm
 | 
			
		||||
          pop: true
 | 
			
		||||
        - match: '\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\"''\&])'
 | 
			
		||||
          scope: constant.character.escape.elm
 | 
			
		||||
        - match: '\^[A-Z@\[\]\\\^_]'
 | 
			
		||||
          scope: constant.character.escape.control.elm
 | 
			
		||||
    - match: |-
 | 
			
		||||
        (?x)
 | 
			
		||||
        (')
 | 
			
		||||
        (?:
 | 
			
		||||
          [\ -\[\]-~]               # Basic Char
 | 
			
		||||
          | (\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE
 | 
			
		||||
            |DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS
 | 
			
		||||
            |US|SP|DEL|[abfnrtv\\\"'\&]))   # Escapes
 | 
			
		||||
          | (\^[A-Z@\[\]\\\^_])           # Control Chars
 | 
			
		||||
        )
 | 
			
		||||
        (')
 | 
			
		||||
      scope: string.quoted.single.elm
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.string.begin.elm
 | 
			
		||||
        2: constant.character.escape.elm
 | 
			
		||||
        3: punctuation.definition.string.end.elm
 | 
			
		||||
    - match: '^(port\s+)?([a-z_][a-zA-Z0-9_'']*|\([|!%$+\-.,=</>]+\))\s*((:)([:]+)?)'
 | 
			
		||||
      captures:
 | 
			
		||||
        1: keyword.other.port.elm
 | 
			
		||||
        2: entity.name.function.elm
 | 
			
		||||
        4: keyword.other.colon.elm
 | 
			
		||||
        5: invalid
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: meta.function.type-declaration.elm
 | 
			
		||||
        - match: $\n?
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: type_signature
 | 
			
		||||
    - match: \bport\s+
 | 
			
		||||
      scope: keyword.other.port.elm
 | 
			
		||||
    - match: '\b[A-Z]\w*\b'
 | 
			
		||||
      scope: constant.other.elm
 | 
			
		||||
    - include: comments
 | 
			
		||||
    - match: '^[a-z][A-Za-z0-9_'']*\s+'
 | 
			
		||||
      scope: entity.name.function.elm
 | 
			
		||||
    - include: infix_op
 | 
			
		||||
    - match: '[|!%$?~+:\-.=</>&\\*^]+'
 | 
			
		||||
      scope: keyword.operator.elm
 | 
			
		||||
    - match: '([\[\]\{\},])'
 | 
			
		||||
      scope: constant.language.delimiter.elm
 | 
			
		||||
      captures:
 | 
			
		||||
        1: support.function.delimiter.elm
 | 
			
		||||
    - match: '([\(\)])'
 | 
			
		||||
      scope: keyword.other.parenthesis.elm
 | 
			
		||||
  block_comment:
 | 
			
		||||
    - match: '\{-(?!#)'
 | 
			
		||||
      captures:
 | 
			
		||||
        0: punctuation.definition.comment.elm
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: comment.block.elm
 | 
			
		||||
        - include: block_comment
 | 
			
		||||
        - match: '-\}'
 | 
			
		||||
          captures:
 | 
			
		||||
            0: punctuation.definition.comment.elm
 | 
			
		||||
          pop: true
 | 
			
		||||
  comments:
 | 
			
		||||
    - match: (--).*$\n?
 | 
			
		||||
      scope: comment.line.double-dash.elm
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.comment.elm
 | 
			
		||||
    - include: block_comment
 | 
			
		||||
  infix_op:
 | 
			
		||||
    - match: '(\([|!%$+:\-.=</>]+\)|\(,+\))'
 | 
			
		||||
      scope: entity.name.function.infix.elm
 | 
			
		||||
  module_exports:
 | 
			
		||||
    - match: \(
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: meta.declaration.exports.elm
 | 
			
		||||
        - match: \)
 | 
			
		||||
          pop: true
 | 
			
		||||
        - match: '\b[a-z][a-zA-Z_''0-9]*'
 | 
			
		||||
          scope: entity.name.function.elm
 | 
			
		||||
        - match: '\b[A-Z][A-Za-z_''0-9]*'
 | 
			
		||||
          scope: storage.type.elm
 | 
			
		||||
        - match: ","
 | 
			
		||||
          scope: punctuation.separator.comma.elm
 | 
			
		||||
        - include: infix_op
 | 
			
		||||
        - match: \(.*?\)
 | 
			
		||||
          comment: So named because I don't know what to call this.
 | 
			
		||||
          scope: meta.other.unknown.elm
 | 
			
		||||
  module_name:
 | 
			
		||||
    - match: "[A-Z][A-Za-z._']*"
 | 
			
		||||
      scope: support.other.module.elm
 | 
			
		||||
  type_signature:
 | 
			
		||||
    - match: '\(\s*([A-Z][A-Za-z]*)\s+([a-z][A-Za-z_'']*)\)\s*(=>)'
 | 
			
		||||
      scope: meta.class-constraint.elm
 | 
			
		||||
      captures:
 | 
			
		||||
        1: entity.other.inherited-class.elm
 | 
			
		||||
        2: variable.other.generic-type.elm
 | 
			
		||||
        3: keyword.other.big-arrow.elm
 | 
			
		||||
    - match: "->"
 | 
			
		||||
      scope: keyword.other.arrow.elm
 | 
			
		||||
    - match: "=>"
 | 
			
		||||
      scope: keyword.other.big-arrow.elm
 | 
			
		||||
    - match: '\b[a-z][a-zA-Z0-9_'']*\b'
 | 
			
		||||
      scope: variable.other.generic-type.elm
 | 
			
		||||
    - match: '\b[A-Z][a-zA-Z0-9_'']*\b'
 | 
			
		||||
      scope: storage.type.elm
 | 
			
		||||
    - match: \(\)
 | 
			
		||||
      scope: support.constant.unit.elm
 | 
			
		||||
    - include: comments
 | 
			
		||||
							
								
								
									
										1
									
								
								sublime_syntaxes/Elm.tmLanguage
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
								
									
									
								
							
						
						
									
										1
									
								
								sublime_syntaxes/Elm.tmLanguage
									
									
									
									
									
										Submodule
									
								
							@ -0,0 +1 @@
 | 
			
		||||
Subproject commit 195e71c6a70beadea428f684a073aec425a65a81
 | 
			
		||||
							
								
								
									
										1
									
								
								sublime_syntaxes/Handlebars
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
								
									
									
								
							
						
						
									
										1
									
								
								sublime_syntaxes/Handlebars
									
									
									
									
									
										Submodule
									
								
							@ -0,0 +1 @@
 | 
			
		||||
Subproject commit 63c28f7aa9360681451779164f40d80f2e70a9cc
 | 
			
		||||
							
								
								
									
										473
									
								
								sublime_syntaxes/Handlebars.sublime-syntax
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										473
									
								
								sublime_syntaxes/Handlebars.sublime-syntax
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,473 @@
 | 
			
		||||
%YAML 1.2
 | 
			
		||||
---
 | 
			
		||||
# http://www.sublimetext.com/docs/3/syntax.html
 | 
			
		||||
name: Handlebars
 | 
			
		||||
file_extensions:
 | 
			
		||||
  - handlebars
 | 
			
		||||
  - handlebars.html
 | 
			
		||||
  - hbr
 | 
			
		||||
  - hbrs
 | 
			
		||||
  - hbs
 | 
			
		||||
  - hdbs
 | 
			
		||||
  - hjs
 | 
			
		||||
  - mu
 | 
			
		||||
  - mustache
 | 
			
		||||
  - rac
 | 
			
		||||
  - stache
 | 
			
		||||
  - template
 | 
			
		||||
  - tmpl
 | 
			
		||||
scope: text.html.handlebars
 | 
			
		||||
contexts:
 | 
			
		||||
  main:
 | 
			
		||||
    - include: yfm
 | 
			
		||||
    - include: extends
 | 
			
		||||
    - include: block_comments
 | 
			
		||||
    - include: comments
 | 
			
		||||
    - include: block_helper
 | 
			
		||||
    - include: end_block
 | 
			
		||||
    - include: else_token
 | 
			
		||||
    - include: partial_and_var
 | 
			
		||||
    - include: inline_script
 | 
			
		||||
    - include: html_tags
 | 
			
		||||
    - include: scope:text.html.basic
 | 
			
		||||
  block_comments:
 | 
			
		||||
    - match: '\{\{!--'
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: comment.block.handlebars
 | 
			
		||||
        - match: '--\}\}'
 | 
			
		||||
          pop: true
 | 
			
		||||
        - match: '@\w*'
 | 
			
		||||
          scope: keyword.annotation.handlebars
 | 
			
		||||
        - include: comments
 | 
			
		||||
    - match: <!--
 | 
			
		||||
      captures:
 | 
			
		||||
        0: punctuation.definition.comment.html
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: comment.block.html
 | 
			
		||||
        - match: '-{2,3}\s*>'
 | 
			
		||||
          captures:
 | 
			
		||||
            0: punctuation.definition.comment.html
 | 
			
		||||
          pop: true
 | 
			
		||||
        - match: "--"
 | 
			
		||||
          scope: invalid.illegal.bad-comments-or-CDATA.html
 | 
			
		||||
  block_helper:
 | 
			
		||||
    - match: '(\{\{~?\#)([-a-zA-Z0-9_\./>]+)\s?(@?[-a-zA-Z0-9_\./]+)*\s?(@?[-a-zA-Z0-9_\./]+)*\s?(@?[-a-zA-Z0-9_\./]+)*'
 | 
			
		||||
      captures:
 | 
			
		||||
        1: support.constant.handlebars
 | 
			
		||||
        2: support.constant.handlebars
 | 
			
		||||
        3: variable.parameter.handlebars
 | 
			
		||||
        4: support.constant.handlebars
 | 
			
		||||
        5: variable.parameter.handlebars
 | 
			
		||||
        6: support.constant.handlebars
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: meta.function.block.start.handlebars
 | 
			
		||||
        - match: '(~?\}\})'
 | 
			
		||||
          captures:
 | 
			
		||||
            1: support.constant.handlebars
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: string
 | 
			
		||||
        - include: handlebars_attribute
 | 
			
		||||
  comments:
 | 
			
		||||
    - match: '\{\{!'
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: comment.block.handlebars
 | 
			
		||||
        - match: '\}\}'
 | 
			
		||||
          pop: true
 | 
			
		||||
        - match: '@\w*'
 | 
			
		||||
          scope: keyword.annotation.handlebars
 | 
			
		||||
        - include: comments
 | 
			
		||||
    - match: <!--
 | 
			
		||||
      captures:
 | 
			
		||||
        0: punctuation.definition.comment.html
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: comment.block.html
 | 
			
		||||
        - match: '-{2,3}\s*>'
 | 
			
		||||
          captures:
 | 
			
		||||
            0: punctuation.definition.comment.html
 | 
			
		||||
          pop: true
 | 
			
		||||
        - match: "--"
 | 
			
		||||
          scope: invalid.illegal.bad-comments-or-CDATA.html
 | 
			
		||||
  else_token:
 | 
			
		||||
    - match: '(\{\{~?else)(@?\s(if)\s([-a-zA-Z0-9_\./]+))?'
 | 
			
		||||
      captures:
 | 
			
		||||
        1: support.constant.handlebars
 | 
			
		||||
        3: support.constant.handlebars
 | 
			
		||||
        4: variable.parameter.handlebars
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: meta.function.inline.else.handlebars
 | 
			
		||||
        - match: '(~?\}\}\}*)'
 | 
			
		||||
          captures:
 | 
			
		||||
            1: support.constant.handlebars
 | 
			
		||||
          pop: true
 | 
			
		||||
  end_block:
 | 
			
		||||
    - match: '(\{\{~?/)([a-zA-Z0-9/_\.-]+)\s*'
 | 
			
		||||
      captures:
 | 
			
		||||
        1: support.constant.handlebars
 | 
			
		||||
        2: support.constant.handlebars
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: meta.function.block.end.handlebars
 | 
			
		||||
        - match: '(~?\}\})'
 | 
			
		||||
          captures:
 | 
			
		||||
            1: support.constant.handlebars
 | 
			
		||||
          pop: true
 | 
			
		||||
  entities:
 | 
			
		||||
    - match: "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)"
 | 
			
		||||
      scope: constant.character.entity.html
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.entity.html
 | 
			
		||||
        3: punctuation.definition.entity.html
 | 
			
		||||
    - match: "&"
 | 
			
		||||
      scope: invalid.illegal.bad-ampersand.html
 | 
			
		||||
  escaped-double-quote:
 | 
			
		||||
    - match: \\"
 | 
			
		||||
      scope: constant.character.escape.js
 | 
			
		||||
  escaped-single-quote:
 | 
			
		||||
    - match: \\'
 | 
			
		||||
      scope: constant.character.escape.js
 | 
			
		||||
  extends:
 | 
			
		||||
    - match: '(\{\{!<)\s([-a-zA-Z0-9_\./]+)'
 | 
			
		||||
      captures:
 | 
			
		||||
        1: support.function.handlebars
 | 
			
		||||
        2: support.class.handlebars
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: meta.preprocessor.handlebars
 | 
			
		||||
        - match: '(\}\})'
 | 
			
		||||
          captures:
 | 
			
		||||
            1: support.function.handlebars
 | 
			
		||||
          pop: true
 | 
			
		||||
  handlebars_attribute:
 | 
			
		||||
    - include: handlebars_attribute_name
 | 
			
		||||
    - include: handlebars_attribute_value
 | 
			
		||||
  handlebars_attribute_name:
 | 
			
		||||
    - match: '\b([-a-zA-Z0-9_\.]+)\b='
 | 
			
		||||
      captures:
 | 
			
		||||
        1: variable.parameter.handlebars
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: entity.other.attribute-name.handlebars
 | 
			
		||||
        - match: (?='|"|)
 | 
			
		||||
          captures:
 | 
			
		||||
            1: variable.parameter.handlebars
 | 
			
		||||
          pop: true
 | 
			
		||||
  handlebars_attribute_value:
 | 
			
		||||
    - match: '([-a-zA-Z0-9_\./]+)\b'
 | 
			
		||||
      captures:
 | 
			
		||||
        1: variable.parameter.handlebars
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: entity.other.attribute-value.handlebars
 | 
			
		||||
        - match: ('|"|)
 | 
			
		||||
          captures:
 | 
			
		||||
            1: variable.parameter.handlebars
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: string
 | 
			
		||||
  html_tags:
 | 
			
		||||
    - match: '(<)([a-zA-Z0-9:-]+)(?=[^>]*></\2>)'
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.tag.html
 | 
			
		||||
        2: entity.name.tag.html
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: meta.tag.any.html
 | 
			
		||||
        - match: (>(<)/)(\2)(>)
 | 
			
		||||
          captures:
 | 
			
		||||
            1: punctuation.definition.tag.html
 | 
			
		||||
            2: meta.scope.between-tag-pair.html
 | 
			
		||||
            3: entity.name.tag.html
 | 
			
		||||
            4: punctuation.definition.tag.html
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: tag-stuff
 | 
			
		||||
    - match: (<\?)(xml)
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.tag.html
 | 
			
		||||
        2: entity.name.tag.xml.html
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: meta.tag.preprocessor.xml.html
 | 
			
		||||
        - match: (\?>)
 | 
			
		||||
          captures:
 | 
			
		||||
            1: punctuation.definition.tag.html
 | 
			
		||||
            2: entity.name.tag.xml.html
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: tag_generic_attribute
 | 
			
		||||
        - include: string
 | 
			
		||||
    - match: <!--
 | 
			
		||||
      captures:
 | 
			
		||||
        0: punctuation.definition.comment.html
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: comment.block.html
 | 
			
		||||
        - match: '--\s*>'
 | 
			
		||||
          captures:
 | 
			
		||||
            0: punctuation.definition.comment.html
 | 
			
		||||
          pop: true
 | 
			
		||||
        - match: "--"
 | 
			
		||||
          scope: invalid.illegal.bad-comments-or-CDATA.html
 | 
			
		||||
    - match: <!
 | 
			
		||||
      captures:
 | 
			
		||||
        0: punctuation.definition.tag.html
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: meta.tag.sgml.html
 | 
			
		||||
        - match: ">"
 | 
			
		||||
          captures:
 | 
			
		||||
            0: punctuation.definition.tag.html
 | 
			
		||||
          pop: true
 | 
			
		||||
        - match: (DOCTYPE|doctype)
 | 
			
		||||
          captures:
 | 
			
		||||
            1: entity.name.tag.doctype.html
 | 
			
		||||
          push:
 | 
			
		||||
            - meta_scope: meta.tag.sgml.doctype.html
 | 
			
		||||
            - match: (?=>)
 | 
			
		||||
              captures:
 | 
			
		||||
                1: entity.name.tag.doctype.html
 | 
			
		||||
              pop: true
 | 
			
		||||
            - match: '"[^">]*"'
 | 
			
		||||
              scope: string.quoted.double.doctype.identifiers-and-DTDs.html
 | 
			
		||||
        - match: '\[CDATA\['
 | 
			
		||||
          push:
 | 
			
		||||
            - meta_scope: constant.other.inline-data.html
 | 
			
		||||
            - match: "]](?=>)"
 | 
			
		||||
              pop: true
 | 
			
		||||
        - match: (\s*)(?!--|>)\S(\s*)
 | 
			
		||||
          scope: invalid.illegal.bad-comments-or-CDATA.html
 | 
			
		||||
    - match: '(?:^\s+)?(<)((?i:style))\b(?![^>]*/>)'
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.tag.html
 | 
			
		||||
        2: entity.name.tag.style.html
 | 
			
		||||
        3: punctuation.definition.tag.html
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: source.css.embedded.html
 | 
			
		||||
        - match: (</)((?i:style))(>)(?:\s*\n)?
 | 
			
		||||
          captures:
 | 
			
		||||
            1: punctuation.definition.tag.html
 | 
			
		||||
            2: entity.name.tag.style.html
 | 
			
		||||
            3: punctuation.definition.tag.html
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: tag-stuff
 | 
			
		||||
        - match: (>)
 | 
			
		||||
          captures:
 | 
			
		||||
            1: punctuation.definition.tag.html
 | 
			
		||||
          push:
 | 
			
		||||
            - match: (?=</(?i:style))
 | 
			
		||||
              pop: true
 | 
			
		||||
            - include: scope:source.css
 | 
			
		||||
    - match: '(?:^\s+)?(<)((?i:script))\b(?![^>]*/>)'
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.tag.html
 | 
			
		||||
        2: entity.name.tag.script.html
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: source.js.embedded.html
 | 
			
		||||
        - match: (?<=</(script|SCRIPT))(>)(?:\s*\n)?
 | 
			
		||||
          captures:
 | 
			
		||||
            2: punctuation.definition.tag.html
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: tag-stuff
 | 
			
		||||
        - match: (?<!</(?:script|SCRIPT))(>)
 | 
			
		||||
          captures:
 | 
			
		||||
            1: punctuation.definition.tag.html
 | 
			
		||||
            2: entity.name.tag.script.html
 | 
			
		||||
          push:
 | 
			
		||||
            - match: (</)((?i:script))
 | 
			
		||||
              captures:
 | 
			
		||||
                1: punctuation.definition.tag.html
 | 
			
		||||
                2: entity.name.tag.script.html
 | 
			
		||||
              pop: true
 | 
			
		||||
            - match: (//).*?((?=</script)|$\n?)
 | 
			
		||||
              scope: comment.line.double-slash.js
 | 
			
		||||
              captures:
 | 
			
		||||
                1: punctuation.definition.comment.js
 | 
			
		||||
            - match: /\*
 | 
			
		||||
              captures:
 | 
			
		||||
                0: punctuation.definition.comment.js
 | 
			
		||||
              push:
 | 
			
		||||
                - meta_scope: comment.block.js
 | 
			
		||||
                - match: \*/|(?=</script)
 | 
			
		||||
                  captures:
 | 
			
		||||
                    0: punctuation.definition.comment.js
 | 
			
		||||
                  pop: true
 | 
			
		||||
            - include: scope:source.js
 | 
			
		||||
    - match: (</?)((?i:body|head|html)\b)
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.tag.html
 | 
			
		||||
        2: entity.name.tag.structure.any.html
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: meta.tag.structure.any.html
 | 
			
		||||
        - match: (>)
 | 
			
		||||
          captures:
 | 
			
		||||
            1: punctuation.definition.tag.html
 | 
			
		||||
            2: entity.name.tag.structure.any.html
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: tag-stuff
 | 
			
		||||
    - match: (</?)((?i:address|blockquote|dd|div|header|section|footer|aside|nav|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)\b)
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.tag.html
 | 
			
		||||
        2: entity.name.tag.block.any.html
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: meta.tag.block.any.html
 | 
			
		||||
        - match: (>)
 | 
			
		||||
          captures:
 | 
			
		||||
            1: punctuation.definition.tag.html
 | 
			
		||||
            2: entity.name.tag.block.any.html
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: tag-stuff
 | 
			
		||||
    - match: (</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\b)
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.tag.html
 | 
			
		||||
        2: entity.name.tag.inline.any.html
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: meta.tag.inline.any.html
 | 
			
		||||
        - match: "((?: ?/)?>)"
 | 
			
		||||
          captures:
 | 
			
		||||
            1: punctuation.definition.tag.html
 | 
			
		||||
            2: entity.name.tag.inline.any.html
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: tag-stuff
 | 
			
		||||
    - match: "(</?)([a-zA-Z0-9:-]+)"
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.tag.html
 | 
			
		||||
        2: entity.name.tag.other.html
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: meta.tag.other.html
 | 
			
		||||
        - match: (>)
 | 
			
		||||
          captures:
 | 
			
		||||
            1: punctuation.definition.tag.html
 | 
			
		||||
            2: entity.name.tag.other.html
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: tag-stuff
 | 
			
		||||
    - match: "(</?)([a-zA-Z0-9{}:-]+)"
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.tag.html
 | 
			
		||||
        2: entity.name.tag.tokenised.html
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: meta.tag.tokenised.html
 | 
			
		||||
        - match: (>)
 | 
			
		||||
          captures:
 | 
			
		||||
            1: punctuation.definition.tag.html
 | 
			
		||||
            2: entity.name.tag.tokenised.html
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: tag-stuff
 | 
			
		||||
    - include: entities
 | 
			
		||||
    - match: <>
 | 
			
		||||
      scope: invalid.illegal.incomplete.html
 | 
			
		||||
    - match: <
 | 
			
		||||
      scope: invalid.illegal.bad-angle-bracket.html
 | 
			
		||||
  inline_script:
 | 
			
		||||
    - match: '(?:^\s+)?(<)((?i:script))\b(?:.*(type)=(["''](?:text/x-handlebars-template|text/x-handlebars|text/template|x-tmpl-handlebars)["'']))(?![^>]*/>)'
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.tag.html
 | 
			
		||||
        2: entity.name.tag.script.html
 | 
			
		||||
        3: entity.other.attribute-name.html
 | 
			
		||||
        4: string.quoted.double.html
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: source.handlebars.embedded.html
 | 
			
		||||
        - match: (?<=</(script|SCRIPT))(>)(?:\s*\n)?
 | 
			
		||||
          captures:
 | 
			
		||||
            2: punctuation.definition.tag.html
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: tag-stuff
 | 
			
		||||
        - match: (?<!</(?:script|SCRIPT))(>)
 | 
			
		||||
          captures:
 | 
			
		||||
            1: punctuation.definition.tag.html
 | 
			
		||||
            2: entity.name.tag.script.html
 | 
			
		||||
          push:
 | 
			
		||||
            - match: (</)((?i:script))
 | 
			
		||||
              captures:
 | 
			
		||||
                1: punctuation.definition.tag.html
 | 
			
		||||
                2: entity.name.tag.script.html
 | 
			
		||||
              pop: true
 | 
			
		||||
            - include: block_comments
 | 
			
		||||
            - include: comments
 | 
			
		||||
            - include: block_helper
 | 
			
		||||
            - include: end_block
 | 
			
		||||
            - include: else_token
 | 
			
		||||
            - include: partial_and_var
 | 
			
		||||
            - include: html_tags
 | 
			
		||||
            - include: scope:text.html.basic
 | 
			
		||||
  partial_and_var:
 | 
			
		||||
    - match: '(\{\{~?\{*(>|!<)*)\s*(@?[-a-zA-Z0-9$_\./]+)*'
 | 
			
		||||
      captures:
 | 
			
		||||
        1: support.constant.handlebars
 | 
			
		||||
        3: variable.parameter.handlebars
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: meta.function.inline.other.handlebars
 | 
			
		||||
        - match: '(~?\}\}\}*)'
 | 
			
		||||
          captures:
 | 
			
		||||
            1: support.constant.handlebars
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: string
 | 
			
		||||
        - include: handlebars_attribute
 | 
			
		||||
  string:
 | 
			
		||||
    - include: string-single-quoted
 | 
			
		||||
    - include: string-double-quoted
 | 
			
		||||
  string-double-quoted:
 | 
			
		||||
    - match: '"'
 | 
			
		||||
      captures:
 | 
			
		||||
        0: punctuation.definition.string.begin.html
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: string.quoted.double.handlebars
 | 
			
		||||
        - match: '"'
 | 
			
		||||
          captures:
 | 
			
		||||
            0: punctuation.definition.string.end.html
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: escaped-double-quote
 | 
			
		||||
        - include: block_comments
 | 
			
		||||
        - include: comments
 | 
			
		||||
        - include: block_helper
 | 
			
		||||
        - include: else_token
 | 
			
		||||
        - include: end_block
 | 
			
		||||
        - include: partial_and_var
 | 
			
		||||
  string-single-quoted:
 | 
			
		||||
    - match: "'"
 | 
			
		||||
      captures:
 | 
			
		||||
        0: punctuation.definition.string.begin.html
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: string.quoted.single.handlebars
 | 
			
		||||
        - match: "'"
 | 
			
		||||
          captures:
 | 
			
		||||
            0: punctuation.definition.string.end.html
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: escaped-single-quote
 | 
			
		||||
        - include: block_comments
 | 
			
		||||
        - include: comments
 | 
			
		||||
        - include: block_helper
 | 
			
		||||
        - include: else_token
 | 
			
		||||
        - include: end_block
 | 
			
		||||
        - include: partial_and_var
 | 
			
		||||
  tag-stuff:
 | 
			
		||||
    - include: tag_id_attribute
 | 
			
		||||
    - include: tag_generic_attribute
 | 
			
		||||
    - include: string
 | 
			
		||||
    - include: block_comments
 | 
			
		||||
    - include: comments
 | 
			
		||||
    - include: block_helper
 | 
			
		||||
    - include: end_block
 | 
			
		||||
    - include: else_token
 | 
			
		||||
    - include: partial_and_var
 | 
			
		||||
  tag_generic_attribute:
 | 
			
		||||
    - match: '\b([a-zA-Z0-9_-]+)\b\s*(=)'
 | 
			
		||||
      captures:
 | 
			
		||||
        1: entity.other.attribute-name.generic.html
 | 
			
		||||
        2: punctuation.separator.key-value.html
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: entity.other.attribute-name.html
 | 
			
		||||
        - match: (?<='|"|)
 | 
			
		||||
          captures:
 | 
			
		||||
            1: entity.other.attribute-name.generic.html
 | 
			
		||||
            2: punctuation.separator.key-value.html
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: string
 | 
			
		||||
  tag_id_attribute:
 | 
			
		||||
    - match: \b(id)\b\s*(=)
 | 
			
		||||
      captures:
 | 
			
		||||
        1: entity.other.attribute-name.id.html
 | 
			
		||||
        2: punctuation.separator.key-value.html
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: meta.attribute-with-value.id.html
 | 
			
		||||
        - match: (?<='|"|)
 | 
			
		||||
          captures:
 | 
			
		||||
            1: entity.other.attribute-name.id.html
 | 
			
		||||
            2: punctuation.separator.key-value.html
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: string
 | 
			
		||||
  yfm:
 | 
			
		||||
    - match: (?<!\s)---\n$
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: markup.raw.yaml.front-matter
 | 
			
		||||
        - match: ^---\s
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: scope:source.yaml
 | 
			
		||||
							
								
								
									
										1
									
								
								sublime_syntaxes/Julia-sublime
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
								
									
									
								
							
						
						
									
										1
									
								
								sublime_syntaxes/Julia-sublime
									
									
									
									
									
										Submodule
									
								
							@ -0,0 +1 @@
 | 
			
		||||
Subproject commit 206a35b4697afd2545dec6f1f6747c4dc2201fbf
 | 
			
		||||
							
								
								
									
										1
									
								
								sublime_syntaxes/LESS-sublime
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
								
									
									
								
							
						
						
									
										1
									
								
								sublime_syntaxes/LESS-sublime
									
									
									
									
									
										Submodule
									
								
							@ -0,0 +1 @@
 | 
			
		||||
Subproject commit ebd4a2f049fb61686664a68c8d0f34d83292e07e
 | 
			
		||||
							
								
								
									
										326
									
								
								sublime_syntaxes/LESS.sublime-syntax
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										326
									
								
								sublime_syntaxes/LESS.sublime-syntax
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,326 @@
 | 
			
		||||
%YAML 1.2
 | 
			
		||||
---
 | 
			
		||||
# http://www.sublimetext.com/docs/3/syntax.html
 | 
			
		||||
name: LESS
 | 
			
		||||
comment: LESS
 | 
			
		||||
file_extensions:
 | 
			
		||||
  - less
 | 
			
		||||
scope: source.less
 | 
			
		||||
contexts:
 | 
			
		||||
  main:
 | 
			
		||||
    - include: comment-block
 | 
			
		||||
    - include: comment-line
 | 
			
		||||
    - include: less-at-rules
 | 
			
		||||
    - include: less-declarations
 | 
			
		||||
    - include: less-variables
 | 
			
		||||
    - include: less-functions
 | 
			
		||||
    - include: string-double
 | 
			
		||||
    - include: string-single
 | 
			
		||||
    - include: selector
 | 
			
		||||
    - include: rule-list
 | 
			
		||||
    - include: less-operators
 | 
			
		||||
    - include: less-parameters
 | 
			
		||||
    - include: numeric-values
 | 
			
		||||
  color-values:
 | 
			
		||||
    - match: \b(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)\b
 | 
			
		||||
      comment: http://www.w3.org/TR/CSS21/syndata.html#value-def-color
 | 
			
		||||
      scope: support.constant.color.w3c-standard-color-name.css
 | 
			
		||||
    - match: \b(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato|turquoise|violet|wheat|whitesmoke|yellowgreen)\b
 | 
			
		||||
      comment: "These colours are mostly recognised but will not validate. ref: http://www.w3schools.com/css/css_colornames.asp"
 | 
			
		||||
      scope: support.constant.color.non-standard
 | 
			
		||||
    - match: (hsla?|rgba?)\s*(\()
 | 
			
		||||
      captures:
 | 
			
		||||
        1: support.function.misc.css
 | 
			
		||||
        2: punctuation.section.function.css
 | 
			
		||||
      push:
 | 
			
		||||
        - match: (\))
 | 
			
		||||
          captures:
 | 
			
		||||
            1: punctuation.section.function.css
 | 
			
		||||
          pop: true
 | 
			
		||||
        - match: '(?x)\b(0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\s*,\s*){2}(0*((1?[0-9]{1,2})|(2([0-4][0-9]|5[0-5])))\b)(\s*,\s*((0?\.[0-9]+)|[0-1]))?'
 | 
			
		||||
          scope: constant.other.color.rgb-value.css
 | 
			
		||||
        - match: '\b([0-9]{1,2}|100)\s*%,\s*([0-9]{1,2}|100)\s*%,\s*([0-9]{1,2}|100)\s*%'
 | 
			
		||||
          scope: constant.other.color.rgb-percentage.css
 | 
			
		||||
        - include: numeric-values
 | 
			
		||||
  comment-block:
 | 
			
		||||
    - match: /\*
 | 
			
		||||
      captures:
 | 
			
		||||
        0: punctuation.definition.comment.css
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: comment.block.css
 | 
			
		||||
        - match: \*/
 | 
			
		||||
          captures:
 | 
			
		||||
            0: punctuation.definition.comment.css
 | 
			
		||||
          pop: true
 | 
			
		||||
  comment-line:
 | 
			
		||||
    - match: //
 | 
			
		||||
      captures:
 | 
			
		||||
        0: punctuation.definition.comment.css
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: comment.line.double-slash.less
 | 
			
		||||
        - match: $\n?
 | 
			
		||||
          captures:
 | 
			
		||||
            0: punctuation.definition.comment.css
 | 
			
		||||
          pop: true
 | 
			
		||||
  less-at-rules:
 | 
			
		||||
    - match: ^\s*((@)(?:-(?:webkit|moz|o)-)?(charset|import|namespace|media|page|font-face|keyframes|supports|document)\b)
 | 
			
		||||
      scope: meta.at-rule.css
 | 
			
		||||
      captures:
 | 
			
		||||
        1: keyword.control.at-rule.css
 | 
			
		||||
        2: punctuation.definition.keyword.css
 | 
			
		||||
  less-data-uri:
 | 
			
		||||
    - match: (url)(\()(data:)
 | 
			
		||||
      captures:
 | 
			
		||||
        1: support.function.misc.css
 | 
			
		||||
        2: punctuation.section.function.css
 | 
			
		||||
        3: parameter.less.data-uri comment markup.raw
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_content_scope: parameter.less.data-uri comment markup.raw
 | 
			
		||||
        - match: (\))
 | 
			
		||||
          captures:
 | 
			
		||||
            1: punctuation.section.function.css
 | 
			
		||||
          pop: true
 | 
			
		||||
    - match: (url)(\()("data:)
 | 
			
		||||
      captures:
 | 
			
		||||
        1: support.function.misc.css
 | 
			
		||||
        2: punctuation.section.function.css
 | 
			
		||||
        3: parameter.less.data-uri comment markup.raw
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_content_scope: parameter.less.data-uri comment markup.raw
 | 
			
		||||
        - match: (?<=")(\))
 | 
			
		||||
          captures:
 | 
			
		||||
            1: punctuation.section.function.css
 | 
			
		||||
          pop: true
 | 
			
		||||
    - match: (url)(\()('data:)
 | 
			
		||||
      captures:
 | 
			
		||||
        1: support.function.misc.css
 | 
			
		||||
        2: punctuation.section.function.css
 | 
			
		||||
        3: parameter.less.data-uri comment markup.raw
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_content_scope: parameter.less.data-uri comment markup.raw
 | 
			
		||||
        - match: (?<=\')(\))
 | 
			
		||||
          captures:
 | 
			
		||||
            1: punctuation.section.function.css
 | 
			
		||||
          pop: true
 | 
			
		||||
  less-declarations:
 | 
			
		||||
    - match: '(?>@[a-zA-Z0-9_-][\w-]*+)(?!:)'
 | 
			
		||||
      scope: variable.other.less
 | 
			
		||||
    - match: '@[a-zA-Z0-9_-][\w-]*'
 | 
			
		||||
      scope: variable.declaration.less
 | 
			
		||||
  less-functions:
 | 
			
		||||
    - match: '([%a-zA-Z\-\_\d]*)(?=\()'
 | 
			
		||||
      scope: support.function.less
 | 
			
		||||
    - match: '([\.#](?![0-9])[a-zA-Z0-9_-]+(?=\())'
 | 
			
		||||
      captures:
 | 
			
		||||
        1: entity.other.attribute-name.class.css entity.other.less.mixin
 | 
			
		||||
  less-operators:
 | 
			
		||||
    - match: /|!important|$|%|&|\*|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|(?<!\()/=|%=|\+=|\-=|&=|when\b|and\b|not\b
 | 
			
		||||
      scope: keyword.operator.less
 | 
			
		||||
  less-parameters:
 | 
			
		||||
    - match: '\(|(}\s*,)'
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: parameter.less
 | 
			
		||||
        - match: '\)|{'
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: color-values
 | 
			
		||||
        - include: less-parameters
 | 
			
		||||
        - include: less-functions
 | 
			
		||||
        - include: numeric-values
 | 
			
		||||
        - include: string-double
 | 
			
		||||
        - include: string-single
 | 
			
		||||
        - include: less-variables
 | 
			
		||||
        - match: '(?:\:/)?[\/\.a-zA-Z0-9_\-]*'
 | 
			
		||||
          scope: variable.parameter.misc.css
 | 
			
		||||
        - include: less-operators
 | 
			
		||||
  less-variables:
 | 
			
		||||
    - match: '@[a-zA-Z0-9_-][\w-]*'
 | 
			
		||||
      scope: variable.other.less
 | 
			
		||||
    - match: '@{[a-zA-Z0-9_-][\w-]*}'
 | 
			
		||||
      scope: variable.interpolation.less
 | 
			
		||||
    - match: "`"
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: comment markup.raw
 | 
			
		||||
        - match: "`"
 | 
			
		||||
          pop: true
 | 
			
		||||
    - match: (~)`
 | 
			
		||||
      captures:
 | 
			
		||||
        1: keyword.operator.less
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: comment markup.raw
 | 
			
		||||
        - match: "`"
 | 
			
		||||
          pop: true
 | 
			
		||||
    - match: (~)"
 | 
			
		||||
      captures:
 | 
			
		||||
        1: keyword.operator.less
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: string.quoted.double.css comment markup.raw
 | 
			
		||||
        - match: '"'
 | 
			
		||||
          pop: true
 | 
			
		||||
    - match: (~)'
 | 
			
		||||
      captures:
 | 
			
		||||
        1: keyword.operator.less
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: string.quoted.single.css comment markup.raw
 | 
			
		||||
        - match: "'"
 | 
			
		||||
          pop: true
 | 
			
		||||
  numeric-values:
 | 
			
		||||
    - match: '(#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\b'
 | 
			
		||||
      scope: constant.other.color.rgb-value.css
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.constant.css
 | 
			
		||||
    - match: '(?x)(?:-|\+)?(?:(?:[0-9]+(?:\.[0-9]+)?)|(?:\.[0-9]+))((?:px|pt|ch|cm|mm|in|r?em|ex|pc|deg|g?rad|dpi|dpcm|ms|s)\b|%)?'
 | 
			
		||||
      scope: constant.numeric.css
 | 
			
		||||
      captures:
 | 
			
		||||
        1: keyword.other.unit.css
 | 
			
		||||
  property-names:
 | 
			
		||||
    - match: "(?<![-a-z])(?=[-a-z])"
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: support.type.property-name.css
 | 
			
		||||
        - match: "$|(?![-a-z])"
 | 
			
		||||
          pop: true
 | 
			
		||||
        - match: \b(word)\b
 | 
			
		||||
          scope: support.type.property-name.css
 | 
			
		||||
  property-values:
 | 
			
		||||
    - include: less-variables
 | 
			
		||||
    - include: less-data-uri
 | 
			
		||||
    - include: less-functions
 | 
			
		||||
    - include: less-operators
 | 
			
		||||
    - include: color-values
 | 
			
		||||
    - include: numeric-values
 | 
			
		||||
    - include: less-parameters
 | 
			
		||||
    - match: \b(absolute|all(-scroll)?|always|subpixel-antialiased|antialiased|armenian|auto|avoid|baseline|below|bidi-override|block|bold|bolder|border-box|both|bottom|break-all|break-word|capitalize|center|char|circle|cjk-ideographic|content-box|col-resize|collapse|crosshair|dashed|decimal-leading-zero|decimal|default|disabled|disc|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ellipsis|fixed|geometricPrecision|georgian|groove|hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|inactive|inherit|inline-block|inline|inset|inside|inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|keep-all|left|lighter|line-edge|line-through|line|list-item|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|nw-resize|none|normal|not-allowed|nowrap|oblique|optimize(Legibility|Quality|Speed)|outset|outside|overline|pointer|pre(-(wrap|line))?|progress|relative|repeat-x|repeat-y|repeat|right|ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|solid|square|static|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table|tb-rl|text-bottom|text-top|textfield|text|thick|thin|top|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|vertical(-(ideographic|text))?|visible(Painted|Fill|Stroke)?|w-resize|wait|whitespace|zero|smaller|larger|((xx?-)?(small|large))|painted|fill|stroke)\b
 | 
			
		||||
      scope: support.constant.property-value.css
 | 
			
		||||
    - include: selector
 | 
			
		||||
    - match: (\b(?i:arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace)\b)
 | 
			
		||||
      scope: support.constant.font-name.css
 | 
			
		||||
    - include: string-double
 | 
			
		||||
    - include: string-single
 | 
			
		||||
    - match: (rect)\s*(\()
 | 
			
		||||
      captures:
 | 
			
		||||
        1: support.function.misc.css
 | 
			
		||||
        2: punctuation.section.function.css
 | 
			
		||||
      push:
 | 
			
		||||
        - match: (\))
 | 
			
		||||
          captures:
 | 
			
		||||
            1: punctuation.section.function.css
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: numeric-values
 | 
			
		||||
    - match: (format|local|url|attr|counter|counters)\s*(\()
 | 
			
		||||
      captures:
 | 
			
		||||
        1: support.function.misc.css
 | 
			
		||||
        2: punctuation.section.function.css
 | 
			
		||||
      push:
 | 
			
		||||
        - match: (\))
 | 
			
		||||
          captures:
 | 
			
		||||
            1: punctuation.section.function.css
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: string-single
 | 
			
		||||
        - include: string-double
 | 
			
		||||
        - match: '[^''") \t]+'
 | 
			
		||||
          scope: variable.parameter.misc.css
 | 
			
		||||
    - match: \!\s*important
 | 
			
		||||
      scope: keyword.other.important.css
 | 
			
		||||
  rule-list:
 | 
			
		||||
    - include: comment-block
 | 
			
		||||
    - include: comment-line
 | 
			
		||||
    - include: selector
 | 
			
		||||
    - include: property-names
 | 
			
		||||
    - match: (:)\s*
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.separator.key-value.css
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: meta.property-value.css
 | 
			
		||||
        - match: '\s*(;|(?=[{}]))'
 | 
			
		||||
          captures:
 | 
			
		||||
            1: punctuation.terminator.rule.css
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: property-values
 | 
			
		||||
  selector:
 | 
			
		||||
    - match: '\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|samp|script|section|select|small|span|strike|strong|style|sub|summary|sup|svg|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\b'
 | 
			
		||||
      scope: entity.name.tag.css, keyword.control.html.elements
 | 
			
		||||
    - match: '(\.)-?[a-zA-Z_][a-zA-Z0-9_-]*'
 | 
			
		||||
      scope: entity.other.attribute-name.class.css
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.entity.css
 | 
			
		||||
    - match: "(#)-?[a-zA-Z_][a-zA-Z0-9_-]*"
 | 
			
		||||
      scope: entity.other.attribute-name.id.css
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.entity.css
 | 
			
		||||
    - match: \*
 | 
			
		||||
      scope: entity.name.tag.wildcard.css
 | 
			
		||||
    - match: (:+)((first|last|only)-child|(first|last|only)-of-type|empty|root|target|first-letter|first-line|first|left|right|lang)\b
 | 
			
		||||
      scope: entity.other.attribute-name.pseudo-class.css
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.entity.css
 | 
			
		||||
    - match: (:)(extend)\b
 | 
			
		||||
      scope: entity.other.attribute-name.pseudo-class.less
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.entity.css
 | 
			
		||||
    - match: (:)(checked|enabled|default|disabled|indeterminate|invalid|optional|required|valid)\b
 | 
			
		||||
      scope: entity.other.attribute-name.pseudo-class.ui-state.css
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.entity.css
 | 
			
		||||
    - match: ((:)not)(\()
 | 
			
		||||
      captures:
 | 
			
		||||
        1: entity.other.attribute-name.pseudo-class.css
 | 
			
		||||
        2: punctuation.definition.entity.css
 | 
			
		||||
        3: punctuation.section.function.css
 | 
			
		||||
      push:
 | 
			
		||||
        - match: \)
 | 
			
		||||
          captures:
 | 
			
		||||
            0: punctuation.section.function.css
 | 
			
		||||
          pop: true
 | 
			
		||||
        - include: selector
 | 
			
		||||
    - match: ((:)nth-(?:(?:last-)?child|(?:last-)?of-type))(\()
 | 
			
		||||
      captures:
 | 
			
		||||
        1: entity.other.attribute-name.pseudo-class.css
 | 
			
		||||
        2: punctuation.definition.entity.css
 | 
			
		||||
        3: punctuation.section.function.css
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_content_scope: constant.numeric.css
 | 
			
		||||
        - match: (\))
 | 
			
		||||
          captures:
 | 
			
		||||
            1: punctuation.section.function.css
 | 
			
		||||
          pop: true
 | 
			
		||||
    - match: (:+)(?:-(?:webkit|moz|o)-)?(after|before|selection|scrollbar|placeholder|input-placeholder)\b
 | 
			
		||||
      scope: entity.other.attribute-name.pseudo-element.css
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.entity.css
 | 
			
		||||
    - match: (:+)(?:-(?:webkit|moz|o)-)?(active|hover|link|visited|focus-inner|focus)\b
 | 
			
		||||
      scope: entity.other.attribute-name.pseudo-class.css
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.entity.css
 | 
			
		||||
    - match: '(?i)(\[)\s*(-?[_a-z\\[[:^ascii:]]][_a-z0-9\-\\[[:^ascii:]]]*)(?:\s*([~|^$*]?=)\s*(?:(-?[_a-z\\[[:^ascii:]]][_a-z0-9\-\\[[:^ascii:]]]*)|((?>([''"])(?:[^\\]|\\.)*?(\6)))))?\s*(\])'
 | 
			
		||||
      scope: meta.attribute-selector.css
 | 
			
		||||
      captures:
 | 
			
		||||
        1: punctuation.definition.entity.css
 | 
			
		||||
        2: entity.other.attribute-name.attribute.css
 | 
			
		||||
        3: punctuation.separator.operator.css
 | 
			
		||||
        4: string.unquoted.attribute-value.css
 | 
			
		||||
        5: string.quoted.double.attribute-value.css
 | 
			
		||||
        6: punctuation.definition.string.begin.css
 | 
			
		||||
        7: punctuation.definition.string.end.css
 | 
			
		||||
  string-double:
 | 
			
		||||
    - match: '"'
 | 
			
		||||
      captures:
 | 
			
		||||
        0: punctuation.definition.string.begin.css
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: string.quoted.double.css
 | 
			
		||||
        - match: '"'
 | 
			
		||||
          captures:
 | 
			
		||||
            0: punctuation.definition.string.end.css
 | 
			
		||||
          pop: true
 | 
			
		||||
        - match: \\.
 | 
			
		||||
          scope: constant.character.escape.css
 | 
			
		||||
  string-single:
 | 
			
		||||
    - match: "'"
 | 
			
		||||
      captures:
 | 
			
		||||
        0: punctuation.definition.string.begin.css
 | 
			
		||||
      push:
 | 
			
		||||
        - meta_scope: string.quoted.single.css
 | 
			
		||||
        - match: "'"
 | 
			
		||||
          captures:
 | 
			
		||||
            0: punctuation.definition.string.end.css
 | 
			
		||||
          pop: true
 | 
			
		||||
        - match: \\.
 | 
			
		||||
          scope: constant.character.escape.css
 | 
			
		||||
							
								
								
									
										1
									
								
								sublime_syntaxes/Packages
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
								
									
									
								
							
						
						
									
										1
									
								
								sublime_syntaxes/Packages
									
									
									
									
									
										Submodule
									
								
							@ -0,0 +1 @@
 | 
			
		||||
Subproject commit 31d287243975662ec95c346c6adacef2e63c10ef
 | 
			
		||||
							
								
								
									
										1
									
								
								sublime_syntaxes/TypeScript-Sublime-Plugin
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
								
									
									
								
							
						
						
									
										1
									
								
								sublime_syntaxes/TypeScript-Sublime-Plugin
									
									
									
									
									
										Submodule
									
								
							@ -0,0 +1 @@
 | 
			
		||||
Subproject commit eb57cebd62d0c2ea2c17d222c8c1c3cefa40f31b
 | 
			
		||||
							
								
								
									
										2140
									
								
								sublime_syntaxes/TypeScript.sublime-syntax
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2140
									
								
								sublime_syntaxes/TypeScript.sublime-syntax
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2289
									
								
								sublime_syntaxes/TypeScriptReact.sublime-syntax
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2289
									
								
								sublime_syntaxes/TypeScriptReact.sublime-syntax
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								sublime_syntaxes/newlines.packdump
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								sublime_syntaxes/newlines.packdump
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								sublime_syntaxes/nonewlines.packdump
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								sublime_syntaxes/nonewlines.packdump
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										1
									
								
								sublime_syntaxes/sublimeassembly
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
								
									
									
								
							
						
						
									
										1
									
								
								sublime_syntaxes/sublimeassembly
									
									
									
									
									
										Submodule
									
								
							@ -0,0 +1 @@
 | 
			
		||||
Subproject commit 41f2b92d326d35c3a9261da4f99a43b4ad7f07e8
 | 
			
		||||
@ -7,7 +7,7 @@
 | 
			
		||||
      <meta name="description" content="{{ config.description }}">
 | 
			
		||||
      <meta name="author" content="{{ config.extra.author.name }}">
 | 
			
		||||
      <link href="https://fonts.googleapis.com/css?family=Fira+Mono|Fira+Sans|Merriweather" rel="stylesheet">
 | 
			
		||||
      <link href="site.css" rel="stylesheet">
 | 
			
		||||
      <link href="{{ config.base_url }}/site.css" rel="stylesheet">
 | 
			
		||||
      <title>{{ config.title }}</title>
 | 
			
		||||
    </head>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user