chore: import upstream snapshot with attribution
Spell checking / Check Spelling (push) Has been cancelled
Spell checking / Update PR (push) Has been cancelled
Publish Dev Docs Website / build (push) Failing after 1s
Publish Dev Docs Website / deploy (push) Has been skipped
Spell checking / Report (Push) (push) Has been cancelled
Spell checking / Report (PR) (push) Has been cancelled
Spell checking / Check Spelling (push) Has been cancelled
Spell checking / Update PR (push) Has been cancelled
Publish Dev Docs Website / build (push) Failing after 1s
Publish Dev Docs Website / deploy (push) Has been skipped
Spell checking / Report (Push) (push) Has been cancelled
Spell checking / Report (PR) (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
# Monaco Editor in PowerToys
|
||||
|
||||
## Overview
|
||||
|
||||
Monaco is the text editor that powers Visual Studio Code. In PowerToys, Monaco is integrated as a component to provide advanced text editing capabilities with features like syntax highlighting, line numbering, and intelligent code editing.
|
||||
|
||||
## Where Monaco is Used in PowerToys
|
||||
|
||||
Monaco is primarily used in:
|
||||
- Registry Preview module - For editing registry files
|
||||
- File Preview handlers - For syntax highlighting when previewing code files
|
||||
- Peek module - For preview a file
|
||||
|
||||
## Technical Implementation
|
||||
|
||||
Monaco is embedded into PowerToys' WinUI 3 applications using WebView2. This integration allows PowerToys to leverage Monaco's web-based capabilities within desktop applications.
|
||||
|
||||
### Directory Structure
|
||||
|
||||
The Monaco editor files are located in the relevant module directories. For example, in Registry Preview, Monaco files are bundled with the application resources.
|
||||
|
||||
## Versioning and Updates
|
||||
|
||||
### Current Version
|
||||
|
||||
The current Monaco version can be found in the `loader.js` file, specifically in the variable named `versionMonaco`.
|
||||
|
||||
### Update Process
|
||||
|
||||
Updating Monaco requires several steps:
|
||||
|
||||
1. Download the latest version of Monaco
|
||||
2. Replace/override the main folder with the new version
|
||||
3. Generate the new Monaco language JSON file
|
||||
4. Override the existing JSON file
|
||||
|
||||
For detailed step-by-step instructions, see the [FilePreviewCommon documentation](FilePreviewCommon.md#update-monaco-editor).
|
||||
|
||||
#### Estimated Time for Update
|
||||
|
||||
The Monaco update process typically takes approximately 30 minutes.
|
||||
|
||||
#### Reference PRs
|
||||
|
||||
When updating Monaco, you can refer to previous Monaco update PRs as examples, as they mostly involve copy-pasting the Monaco source code with minor adjustments.
|
||||
|
||||
## Customizing Monaco
|
||||
|
||||
### Adding New Language Definitions
|
||||
|
||||
Monaco can be customized to support new language definitions for syntax highlighting:
|
||||
|
||||
1. Identify the language you want to add
|
||||
2. Create or modify the appropriate language definition files
|
||||
3. Update the Monaco configuration to recognize the new language
|
||||
|
||||
For detailed instructions on adding language definitions, see the [FilePreviewCommon documentation](FilePreviewCommon.md#add-a-new-language-definition).
|
||||
|
||||
### Adding File Extensions to Existing Languages
|
||||
|
||||
To make Monaco handle additional file extensions using existing language definitions:
|
||||
|
||||
1. Locate the language mapping configuration
|
||||
2. Add the new file extension to the appropriate language entry
|
||||
3. Update the file extension registry
|
||||
|
||||
For detailed instructions on adding file extensions, see the [FilePreviewCommon documentation](FilePreviewCommon.md#add-a-new-file-extension-to-an-existing-language).
|
||||
|
||||
Example: If Monaco processes TXT files and you want it to preview LOG files the same way, you can add LOG extensions to the TXT language definition.
|
||||
|
||||
## Installer Handling
|
||||
|
||||
Monaco source files are managed via a script (`Generate-Monaco-wxs.ps1`) that:
|
||||
1. Automatically generates the installer manifest to include all Monaco files
|
||||
2. Avoids manually listing all Monaco files in the installer configuration
|
||||
|
||||
This approach simplifies maintenance and updates of the Monaco editor within PowerToys.
|
||||
Reference in New Issue
Block a user