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…
Reference in a new issue