@ 261105.1

260808.1.1 · 938e0847dc900866de7418030e788a1835648826

#189 highlight svelte block keywords with a nested syntax definition

reading declarations

Changes to langDefs/inc_svelteblock.lang. All files

langDefs/inc_svelteblock.lang

new file mode 100644@@ -0,0 +1,51 @@++Description="Svelte template block (nested in svelte.lang)"++Categories = {"markup", "script"}++Digits=[[ (?:0x)[0-9a-fA-F]+|(?:0b)[01]+|(?:0o)[0-8]+|\d*[\.]?\d+(?:[eE][\-\+]\d+)?[lLuU]* ]]++Keywords={+  -- the sigil belongs to the block marker: {#if, {:else, {/each, {@render+  { Id=1,+    Regex=[[[#:\/@]\w+]],+    Group=0,+  },+  -- block keywords plus the javascript ones an expression may contain+  { Id=1,+    List={"if", "else", "each", "as", "await", "then", "catch", "key", "snippet",+        "html", "const", "debug", "render", "attach",+        "break", "class", "continue", "default", "delete", "export", "extends",+        "finally", "instanceof", "import", "in", "new", "of", "from", "return",+        "super", "switch", "this", "throw", "try", "typeof", "var", "let",+        "function", "yield", "static", "true", "false", "null", "do", "for", "while",+    },+  },+  { Id=2,+    List={"boolean", "undefined", "void"},+  },+  { Id=4,+    Regex=[[(\w+)(\s*[:=]\s*function)?\s*\(]],+    Group=1+  },+}++Strings={+  Delimiter=[["|'|`]],+  Interpolation=[[ \$\{[^}]+\} ]],+  Escape = [=[ \\u\{?[[:xdigit:]]{4,6}\}?|\\\d{3}|\\x[[:xdigit:]]{2}|\\[ntvbrfa\\\?'\"] ]=]+}++IgnoreCase=false++Comments={+  { Block=false,+    Delimiter= { [[\/\/]] },+  },+  { Block=true,+    Nested=false,+    Delimiter= { [[\/\*]],[[\*\/]],}+  }+}++Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\:|\?|\&|<|>|\!|\=|\/|\*|\%|\+|\-|\~|\||\.]]