diff --git a/.github/actions/spell-check/excludes.txt b/.github/actions/spell-check/excludes.txt
index 111e57704b..bc08eed6e4 100644
--- a/.github/actions/spell-check/excludes.txt
+++ b/.github/actions/spell-check/excludes.txt
@@ -1,8 +1,10 @@
# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-excludes
(?:^|/)monacoSRC/
+(?:^|/)MonacoPreviewHandler/customLanguages/
(?:^|/)MonacoPreviewHandler/monaco_languages.json
(?:^|/)MonacoPreviewHandler/index.html
(?:^|/)MonacoPreviewHandler/generateLanguagesJson.html
+(?:^|/)MonacoPreviewHandler/monacoSpecialLanguages.js
(?:^|/)(?i)COPYRIGHT
(?:^|/)(?i)LICEN[CS]E
(?:^|/)package(?:-lock)\.json$
diff --git a/.github/actions/spell-check/expect.txt b/.github/actions/spell-check/expect.txt
index e79c49ca67..672aca904a 100644
--- a/.github/actions/spell-check/expect.txt
+++ b/.github/actions/spell-check/expect.txt
@@ -2213,6 +2213,7 @@ wdp
wdupenv
weakme
webcam
+webserver
webpage
website
webview
diff --git a/doc/devdocs/modules/powerpreview/monaco/readme.md b/doc/devdocs/modules/powerpreview/monaco/readme.md
index c14a616acb..93bbf743c9 100644
--- a/doc/devdocs/modules/powerpreview/monaco/readme.md
+++ b/doc/devdocs/modules/powerpreview/monaco/readme.md
@@ -17,6 +17,8 @@ Developer preview is based on [Microsofts Monaco Editor](https://microsoft.githu
After you updated monaco editor or adding a new language you should update the [`monaco_languages.json`](/src/modules/previewpane/MonacoPreviewHandler/monaco_languages.json) file.
+You have to run the file on a local webserver!
+
1. Build monaco in debug mode.
2. Open [generateLanguagesJson.html](/src/modules/previewpane/MonacoPreviewHandler/generateLanguagesJson.html) in a browser.
3. Replace the old JSON file.
diff --git a/installer/PowerToysSetup/Product.wxs b/installer/PowerToysSetup/Product.wxs
index a6f06f8051..f3cf340007 100644
--- a/installer/PowerToysSetup/Product.wxs
+++ b/installer/PowerToysSetup/Product.wxs
@@ -38,7 +38,7 @@
-
+
@@ -394,6 +394,7 @@
+
@@ -877,6 +878,11 @@
+
+
+
+
+
@@ -1044,8 +1050,9 @@
-
+
+
diff --git a/src/modules/previewpane/MonacoPreviewHandler/MonacoPreviewHandler.csproj b/src/modules/previewpane/MonacoPreviewHandler/MonacoPreviewHandler.csproj
index 613c66d1bb..ea62061dd4 100644
--- a/src/modules/previewpane/MonacoPreviewHandler/MonacoPreviewHandler.csproj
+++ b/src/modules/previewpane/MonacoPreviewHandler/MonacoPreviewHandler.csproj
@@ -14,9 +14,9 @@
Microsoft.PowerToys.PreviewHandler.Monaco
- net6.0-windows10.0.18362.0
+ net6.0-windows10.0.18362.0
true
- $(SolutionDir)$(Platform)\$(Configuration)\obj\$(AssemblyName)\
+ $(SolutionDir)$(Platform)\$(Configuration)\obj\$(AssemblyName)\
PowerToys.MonacoPreviewHandler
@@ -39,18 +39,18 @@
-
-
- True
- True
- Resources.resx
-
+
+
+ True
+ True
+ Resources.resx
+
-
+
@@ -63,20 +63,32 @@
-
- Always
-
+
+ Always
+
-
- Always
-
+
+ Always
+
-
- Always
-
+
+ Always
+
+
+
+
+
+ Always
+
+
+
+
+
+ Always
+
diff --git a/src/modules/previewpane/MonacoPreviewHandler/customLanguages/reg.js b/src/modules/previewpane/MonacoPreviewHandler/customLanguages/reg.js
new file mode 100644
index 0000000000..671f4a36bd
--- /dev/null
+++ b/src/modules/previewpane/MonacoPreviewHandler/customLanguages/reg.js
@@ -0,0 +1,42 @@
+export function regDefinition() {
+ return {
+ tokenPostfix: '.reg',
+ tokenizer: {
+ root: [
+ // Header (case sensitive)
+ [/Windows Registry Editor Version 5.00/, 'comment'],
+ [/REGEDIT4/, 'comment'],
+ // Comments
+ [/;.*/, "comment"],
+ // Keys
+ [/\[\-.*\]/, 'invalid'],
+ [/\\.*[^\]]/, 'keyword'],
+ // Values
+ [/@/, "keyword"],
+ [/\".*\"=\-/, "invalid"],
+ [/\".*\"(?=\=)/, "keyword"],
+ [/\".*\"(?!\=)/, 'string'],
+ [/hex\({0,1}[0-9,a,b]\)|hex|dword(?=\:)/, "type"],
+ [/[0-9,a-f,A-F][0-9,a-f,A-F],*/, 'string'],
+ // Hive names (case in-sensitive)
+ [/HKEY_CLASSES_ROOT/, 'type'],
+ [/HKEY_LOCAL_MACHINE/, 'type'],
+ [/HKEY_USERS/, 'type'],
+ [/HKEY_CURRENT_USER/, 'type'],
+ [/HKEY_PERFORMANCE_DATA/, 'type'],
+ [/HKEY_DYN_DATA/, 'type'],
+ [/hkey_classes_root/, 'type'],
+ [/hkey_local_machine/, 'type'],
+ [/hkey_users/, 'type'],
+ [/hkey_current_user/, 'type'],
+ [/hkey_performance_data/, 'type'],
+ [/hkey_dyn_data/, 'type'],
+ // Symbols (For better contrast on hc-black)
+ [/=/, 'delimiter'],
+ [/\[/, 'delimiter'],
+ [/]/, 'delimiter'],
+ [/:/, 'delimiter'],
+ ]
+ }
+ }
+};
\ No newline at end of file
diff --git a/src/modules/previewpane/MonacoPreviewHandler/generateLanguagesJson.html b/src/modules/previewpane/MonacoPreviewHandler/generateLanguagesJson.html
index cafc09648c..09d074cc44 100644
--- a/src/modules/previewpane/MonacoPreviewHandler/generateLanguagesJson.html
+++ b/src/modules/previewpane/MonacoPreviewHandler/generateLanguagesJson.html
@@ -1,30 +1,32 @@
-
-
- Monaco Preview Handler monaco_languages.json generator
-
-
+
+
-
-
-
-
+ document.body.removeChild(element);
+ }
+ require.config({ paths: { vs: 'monacoSRC/min/vs' } });
+ require(['vs/editor/editor.main'], async function () {
+ await registerAdditionalLanguages(monaco);
+ download("monaco_languages.json", "{\"list\":"+ JSON.stringify(monaco.languages.getLanguages())+"}");
+ });
+
+
+
+
+