Skip to content

Commit

Permalink
fix: User language bugs [release] (#25)
Browse files Browse the repository at this point in the history
  • Loading branch information
harrydowning authored Jul 5, 2024
1 parent 4782977 commit df77f69
Show file tree
Hide file tree
Showing 5 changed files with 390 additions and 70 deletions.
10 changes: 9 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,13 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p

## [Unreleased]

## [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 language override precedence

## [0.3.1] - 2024-06-29

### Fixed
Expand Down Expand Up @@ -53,7 +60,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p

- Highlighting support for 40 languages in YAML block-scalars

[unreleased]: https://github.com/harrydowning/yaml-embedded-languages/compare/v0.3.1...HEAD
[unreleased]: https://github.com/harrydowning/yaml-embedded-languages/compare/v0.3.2...HEAD
[0.3.2]: https://github.com/harrydowning/yaml-embedded-languages/compare/v0.3.1...v0.3.2
[0.3.1]: https://github.com/harrydowning/yaml-embedded-languages/compare/v0.3.0...v0.3.1
[0.3.0]: https://github.com/harrydowning/yaml-embedded-languages/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/harrydowning/yaml-embedded-languages/compare/v0.1.0...v0.2.0
Expand Down
96 changes: 60 additions & 36 deletions extension.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
const devFlag = process.argv?.[2] == "-dev";
const vscode = devFlag ? null : require("vscode");
const DEV_MODE = process.argv?.[2] == "-dev";
const vscode = DEV_MODE ? null : require("vscode");
const fs = require("fs");

const NAME = "yaml-embedded-languages";
const VERSION = "0.3.1";
const VERSION = "0.3.2";
const DISPLAY_NAME = "YAML Embedded Languages";
const INJECTION_PATH = "./syntaxes/injection.json";
const SCOPE_NAME = `${NAME}.injection`;
Expand All @@ -16,7 +16,8 @@ const LANGUAGES = {
c: "source.c",
clojure: "source.clojure",
coffee: "source.coffee",
"cpp|c\\+\\+": "source.cpp",
cpp: "source.cpp",
"c\\+\\+": "source.cpp",
csharp: "source.csharp",
css: "source.css",
diff: "source.diff",
Expand All @@ -27,19 +28,23 @@ const LANGUAGES = {
groovy: "source.groovy",
html: "text.html.derivative",
java: "source.java",
"javascript|js": "source.js",
javascript: "source.js",
js: "source.js",
json: "source.json",
"tex|latex": "text.tex",
tex: "text.tex",
latex: "text.tex",
lua: "source.lua",
makefile: "source.makefile",
markdown: "text.html.markdown",
objc: "source.objc",
perl: "source.perl",
"pip|requirements": "source.pip-requirements",
pip: "source.pip-requirements",
requirements: "source.pip-requirements",
powerfx: "source.js",
powershell: "source.powershell",
properties: "source.properties",
"python|py": "source.python",
python: "source.python",
py: "source.python",
r: "source.r",
regex: "source.regexp.python",
ruby: "source.ruby",
Expand All @@ -50,7 +55,8 @@ const LANGUAGES = {
slim: "source.slim",
sql: "source.sql",
swift: "source.swift",
"typescript|ts": "source.ts",
typescript: "source.ts",
ts: "source.ts",
tsx: "source.tsx",
xml: "text.xml",
yaml: "source.yaml",
Expand Down Expand Up @@ -179,50 +185,68 @@ const getInjectionJson = (languages) => ({
});

const write = (filename, data) => {
return fs.writeFile(filename, data, (err) => {
if (err) return console.log(err);
console.log(`File '${filename}' saved.`);
});
const fileData = fs.readFileSync(filename).toString();

if (fileData === data) {
return false;
}

try {
fs.writeFileSync(filename, data);
} catch (err) {
console.error(err);
return false;
}

console.log(`File '${filename}' saved.`);
return true;
};

const generateFiles = (languages = LANGUAGES) => {
const packageJson = JSON.stringify(getPackageJson(languages), null, 2);
const injectionJson = JSON.stringify(getInjectionJson(languages), null, 2);

const packageJsonPromise = write(`${__dirname}/package.json`, packageJson);
const injectionJsonPromise = write(
`${__dirname}/syntaxes/injection.json`,
injectionJson,
return (
write(`${__dirname}/package.json`, packageJson) |
write(`${__dirname}/syntaxes/injection.json`, injectionJson)
);
return Promise.all([packageJsonPromise, injectionJsonPromise]);
};

function activate(context) {
const updateExtension = () => {
const settings = vscode.workspace.getConfiguration(NAME);
const includeLanguages = settings[SUB_INCLUDE_CONFIG];
const allLanguages = { ...LANGUAGES, ...includeLanguages };

const filesChanged = generateFiles(allLanguages);

if (filesChanged) {
const message = `Reload window to allow changes to take effect?`;
const items = ["Yes", "No"];
vscode.window.showInformationMessage(message, ...items).then((item) => {
if (item === items[0]) {
vscode.commands.executeCommand("workbench.action.reloadWindow");
}
});
}
};

const activate = (context) => {
updateExtension();

let disposable = vscode.workspace.onDidChangeConfiguration((event) => {
if (event.affectsConfiguration(INCLUDE_CONFIG)) {
const settings = vscode.workspace.getConfiguration(NAME);
const includeLanguages = settings[SUB_INCLUDE_CONFIG];
const allLanguages = { ...includeLanguages, ...LANGUAGES };

generateFiles(allLanguages).then((resultArray) => {
const message = `Reload window to allow changes to take effect?`;
const positive = "Yes";
vscode.window
.showInformationMessage(message, positive, "No")
.then((response) => {
if (response === positive)
vscode.commands.executeCommand("workbench.action.reloadWindow");
});
});
updateExtension();
}
});

context.subscriptions.push(disposable);
}
};

function deactivate() {}
const deactivate = () => {};

if (devFlag) generateFiles(LANGUAGES);
if (DEV_MODE) {
generateFiles(LANGUAGES);
}

module.exports = {
activate,
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 13 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "yaml-embedded-languages",
"version": "0.3.1",
"version": "0.3.2",
"displayName": "YAML Embedded Languages",
"description": "Support for syntax highlighting within YAML block-scalars.",
"icon": "images/icon.png",
Expand Down Expand Up @@ -38,7 +38,8 @@
"meta.embedded.inline.c": "c",
"meta.embedded.inline.clojure": "clojure",
"meta.embedded.inline.coffee": "coffee",
"meta.embedded.inline.cpp|c\\+\\+": "cpp|c\\+\\+",
"meta.embedded.inline.cpp": "cpp",
"meta.embedded.inline.c\\+\\+": "c\\+\\+",
"meta.embedded.inline.csharp": "csharp",
"meta.embedded.inline.css": "css",
"meta.embedded.inline.diff": "diff",
Expand All @@ -49,19 +50,23 @@
"meta.embedded.inline.groovy": "groovy",
"meta.embedded.inline.html": "html",
"meta.embedded.inline.java": "java",
"meta.embedded.inline.javascript|js": "javascript|js",
"meta.embedded.inline.javascript": "javascript",
"meta.embedded.inline.js": "js",
"meta.embedded.inline.json": "json",
"meta.embedded.inline.tex|latex": "tex|latex",
"meta.embedded.inline.tex": "tex",
"meta.embedded.inline.latex": "latex",
"meta.embedded.inline.lua": "lua",
"meta.embedded.inline.makefile": "makefile",
"meta.embedded.inline.markdown": "markdown",
"meta.embedded.inline.objc": "objc",
"meta.embedded.inline.perl": "perl",
"meta.embedded.inline.pip|requirements": "pip|requirements",
"meta.embedded.inline.pip": "pip",
"meta.embedded.inline.requirements": "requirements",
"meta.embedded.inline.powerfx": "powerfx",
"meta.embedded.inline.powershell": "powershell",
"meta.embedded.inline.properties": "properties",
"meta.embedded.inline.python|py": "python|py",
"meta.embedded.inline.python": "python",
"meta.embedded.inline.py": "py",
"meta.embedded.inline.r": "r",
"meta.embedded.inline.regex": "regex",
"meta.embedded.inline.ruby": "ruby",
Expand All @@ -72,7 +77,8 @@
"meta.embedded.inline.slim": "slim",
"meta.embedded.inline.sql": "sql",
"meta.embedded.inline.swift": "swift",
"meta.embedded.inline.typescript|ts": "typescript|ts",
"meta.embedded.inline.typescript": "typescript",
"meta.embedded.inline.ts": "ts",
"meta.embedded.inline.tsx": "tsx",
"meta.embedded.inline.xml": "xml",
"meta.embedded.inline.yaml": "yaml"
Expand Down
Loading

0 comments on commit df77f69

Please sign in to comment.