diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d52a8f..1d243d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,28 +6,41 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p ## [Unreleased] +### Added + +- `stripIndent` language config option + +### Fixed + +- Markdown indentation ([#13](https://github.com/harrydowning/yaml-embedded-languages/issues/13)) +- Highlighting for new YAML grammar + +### Changed + +- Fully generated `package.json` to be partially generated + ## [0.4.0] - 2024-08-18 ### Added -- Option to specify language name in `yaml-embedded-languages.include` config. +- Option to specify language name in `yaml-embedded-languages.include` config ### Fixed -- Correct language names (Issue [#12](https://github.com/harrydowning/yaml-embedded-languages/issues/12)) +- Built-in language names ([#12](https://github.com/harrydowning/yaml-embedded-languages/issues/12)) ## [0.3.3] - 2024-07-06 ### Changed -- Only update extension files on version update +- Extension to generate files on update - Doc formatting and links ## [0.3.2] - 2024-07-06 ### Fixed -- User languages reset on extension update (Issue [#24](https://github.com/harrydowning/yaml-embedded-languages/issues/24)) +- User languages reset on extension update ([#24](https://github.com/harrydowning/yaml-embedded-languages/issues/24)) - User language override precedence ## [0.3.1] - 2024-06-29 @@ -40,19 +53,19 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p ### Added -- Support for Power Fx (Issue [#17](https://github.com/harrydowning/yaml-embedded-languages/issues/17)) +- Support for Power Fx ([#17](https://github.com/harrydowning/yaml-embedded-languages/issues/17)) ## [0.2.0] - 2023-07-29 ### Added -- Issue [#9](https://github.com/harrydowning/yaml-embedded-languages/issues/9) +- Support for GitHub Actions ([#9](https://github.com/harrydowning/yaml-embedded-languages/issues/9)) - `CONTRIBUTING.md` documentation - `-dev` flag on `extension.js` ### Fixed -- Issue [#7](https://github.com/harrydowning/yaml-embedded-languages/issues/7) +- Path separators on macOS ([#7](https://github.com/harrydowning/yaml-embedded-languages/issues/7)) ### Changed diff --git a/extension.js b/extension.js index 90d5713..2aa6ce4 100644 --- a/extension.js +++ b/extension.js @@ -43,7 +43,10 @@ const LANGUAGES = { latex: "text.tex", lua: "source.lua", makefile: "source.makefile", - markdown: "text.html.markdown", + markdown: { + scopeName: "text.html.markdown", + stripIndent: true, + }, objc: { name: "objective-c", scopeName: "source.objc", @@ -149,7 +152,7 @@ const getPatterns = (languages) => { const getRepository = (languages) => { const entries = Object.entries(languages); return Object.fromEntries( - entries.map(([id, { scopeName }]) => [ + entries.map(([id, { scopeName, stripIndent }]) => [ `${id}-${REPOSITORY_SUFFIX}`, { begin: `(?i)(?:(\\|)|(>))([1-9])?([-+])?[ \t]+(#[ \t]*(?:${id})[ \t]*\\n)`, @@ -184,6 +187,7 @@ const getRepository = (languages) => { { begin: "(?>^|\\G)([ ]+)(?! )", end: "^(?!\\1|\\s*$)", + while: stripIndent ? "\\1" : undefined, name: `${LANGUAGE_SCOPE_PREFIX}.${id}`, patterns: [{ include: scopeName }], }, @@ -221,14 +225,20 @@ const write = (filename, data) => { const normalizeLanguages = (languages) => { const normalizedLanguages = {}; for (const id in languages) { - const language = languages[id]; + let language = languages[id]; if (typeof language === "string") { + language = { scopeName: language }; + } + + if ( + typeof language === "object" && + typeof language.scopeName === "string" + ) { normalizedLanguages[id] = { - name: id, - scopeName: language, + name: language.name || id, + scopeName: language.scopeName, + stripIndent: language.stripIndent || false, }; - } else { - normalizedLanguages[id] = language; } } return normalizedLanguages; diff --git a/syntaxes/injection.json b/syntaxes/injection.json index 7aead36..bd3c5dc 100644 --- a/syntaxes/injection.json +++ b/syntaxes/injection.json @@ -178,7 +178,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.c", "patterns": [ @@ -222,7 +222,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.clojure", "patterns": [ @@ -266,7 +266,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.coffee", "patterns": [ @@ -310,7 +310,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.cpp", "patterns": [ @@ -354,7 +354,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.c\\+\\+", "patterns": [ @@ -398,7 +398,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.csharp", "patterns": [ @@ -442,7 +442,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.css", "patterns": [ @@ -486,7 +486,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.diff", "patterns": [ @@ -530,7 +530,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.dockerfile", "patterns": [ @@ -574,7 +574,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.dosbatch", "patterns": [ @@ -618,7 +618,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.fsharp", "patterns": [ @@ -662,7 +662,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.go", "patterns": [ @@ -706,7 +706,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.groovy", "patterns": [ @@ -750,7 +750,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.html", "patterns": [ @@ -794,7 +794,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.java", "patterns": [ @@ -838,7 +838,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.javascript", "patterns": [ @@ -882,7 +882,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.js", "patterns": [ @@ -926,7 +926,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.json", "patterns": [ @@ -970,7 +970,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.tex", "patterns": [ @@ -1014,7 +1014,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.latex", "patterns": [ @@ -1058,7 +1058,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.lua", "patterns": [ @@ -1102,7 +1102,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.makefile", "patterns": [ @@ -1146,8 +1146,9 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", + "while": "\\1", "name": "meta.embedded.inline.markdown", "patterns": [ { @@ -1190,7 +1191,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.objc", "patterns": [ @@ -1234,7 +1235,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.perl", "patterns": [ @@ -1278,7 +1279,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.pip", "patterns": [ @@ -1322,7 +1323,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.requirements", "patterns": [ @@ -1366,7 +1367,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.powerfx", "patterns": [ @@ -1410,7 +1411,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.powershell", "patterns": [ @@ -1454,7 +1455,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.properties", "patterns": [ @@ -1498,7 +1499,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.python", "patterns": [ @@ -1542,7 +1543,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.py", "patterns": [ @@ -1586,7 +1587,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.r", "patterns": [ @@ -1630,7 +1631,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.regex", "patterns": [ @@ -1674,7 +1675,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.ruby", "patterns": [ @@ -1718,7 +1719,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.rust", "patterns": [ @@ -1762,7 +1763,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.scss", "patterns": [ @@ -1806,7 +1807,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.shaderlab", "patterns": [ @@ -1850,7 +1851,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.shell", "patterns": [ @@ -1894,7 +1895,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.slim", "patterns": [ @@ -1938,7 +1939,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.sql", "patterns": [ @@ -1982,7 +1983,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.swift", "patterns": [ @@ -2026,7 +2027,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.typescript", "patterns": [ @@ -2070,7 +2071,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.ts", "patterns": [ @@ -2114,7 +2115,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.tsx", "patterns": [ @@ -2158,7 +2159,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.xml", "patterns": [ @@ -2202,7 +2203,7 @@ "end": "^(?=\\S)|(?!\\G)", "patterns": [ { - "begin": "^([ ]+)(?! )", + "begin": "(?>^|\\G)([ ]+)(?! )", "end": "^(?!\\1|\\s*$)", "name": "meta.embedded.inline.yaml", "patterns": [