├── .editorconfig ├── .github ├── CODEOWNERS └── workflows │ ├── create-release.yml │ └── deploy.yml ├── .gitignore ├── .prettierrc.toml ├── .vscode ├── launch.json └── settings.json ├── .vscodeignore ├── INSTALL.md ├── LICENSE.md ├── README.md ├── constants └── index.js ├── icon.png ├── jsconfig.json ├── package-lock.json ├── package.json ├── scripts ├── build.js ├── generate.js └── lint.js └── src └── omni.yml /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | end_of_line = lf 3 | 4 | [*.yml] 5 | indent_style = space 6 | indent_size = 2 7 | 8 | [*.md] 9 | trim_trailing_whitespace = false -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # Learn how to add code owners here: 2 | # https://help.github.com/en/articles/about-code-owners 3 | 4 | * @diego3g @lukemorales 5 | .github/* @jpedroschmitz 6 | *.md @jpedroschmitz 7 | -------------------------------------------------------------------------------- /.github/workflows/create-release.yml: -------------------------------------------------------------------------------- 1 | name: Create Release 2 | 3 | on: 4 | push: 5 | tags: 6 | - 'v*' 7 | 8 | jobs: 9 | release: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v2 13 | 14 | - uses: actions/setup-node@v1 15 | 16 | - run: npm install && mkdir -p ./bin 17 | 18 | - run: npm run package 19 | 20 | - uses: actions/create-release@v1 21 | id: create_release 22 | env: 23 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 24 | with: 25 | tag_name: ${{ github.ref }} 26 | release_name: ${{ github.ref }} 27 | draft: true 28 | 29 | - uses: actions/upload-release-asset@v1 30 | env: 31 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 32 | with: 33 | upload_url: ${{ steps.create_release.outputs.upload_url }} 34 | asset_path: ./bin/omni.vsix 35 | asset_name: omni.vsix 36 | asset_content_type: application/octet-stream -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy Release 2 | 3 | on: 4 | release: 5 | types: 6 | - published 7 | 8 | jobs: 9 | deploy: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v2 13 | - uses: actions/setup-node@v1 14 | - run: npm install 15 | - env: 16 | VSCE_PUBLISHER_TOKEN: ${{ secrets.VSCE_PUBLISHER_TOKEN }} 17 | run: npm run vsce-publish -- -p $VSCE_PUBLISHER_TOKEN -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | /theme/ 3 | /tests/ 4 | bin/ 5 | .idea 6 | -------------------------------------------------------------------------------- /.prettierrc.toml: -------------------------------------------------------------------------------- 1 | printWidth = 80 2 | singleQuote = true 3 | tabWidth = 4 4 | trailingComma = 'all' 5 | 6 | [[overrides]] 7 | files = '*.js' 8 | [overrides.options] 9 | trailingComma = 'es5' 10 | 11 | [[overrides]] 12 | files = '*.{yml,yaml}' 13 | [overrides.options] 14 | tabWidth = 2 15 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that launches the extension inside a new window 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | { 6 | "version": "0.2.0", 7 | "configurations": [ 8 | { 9 | "name": "Launch Theme", 10 | "type": "extensionHost", 11 | "request": "launch", 12 | "runtimeExecutable": "${execPath}", 13 | "preLaunchTask": "npm: build", 14 | "args": [ 15 | "--extensionDevelopmentPath=${workspaceFolder}", 16 | "--disable-extensions", 17 | "${file}" 18 | ] 19 | }, 20 | { 21 | "name": "Launch Theme (with extensions)", 22 | "type": "extensionHost", 23 | "request": "launch", 24 | "runtimeExecutable": "${execPath}", 25 | "preLaunchTask": "npm: build", 26 | "args": ["--extensionDevelopmentPath=${workspaceFolder}", "${file}"] 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.trimTrailingWhitespace": true, 3 | "[yaml]": { 4 | "editor.renderWhitespace": "boundary", 5 | "editor.formatOnSave": false 6 | }, 7 | "terminal.integrated.inheritEnv": true, 8 | "terminal.integrated.shell.osx": "/bin/bash" 9 | } 10 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .github/** 2 | .vscode/** 3 | bin/** 4 | node_modules/** 5 | scripts/** 6 | src/** 7 | tests/** 8 | .editorconfig 9 | .prettierrc.toml 10 | generate.js 11 | jsconfig.json 12 | known_issues.md 13 | -------------------------------------------------------------------------------- /INSTALL.md: -------------------------------------------------------------------------------- 1 | ### [Visual Studio Code](https://code.visualstudio.com/) 2 | 3 | #### Install using Command Palette 4 | 5 | 1. Go to `View -> Command Palette` or press `Ctrl+Shift+P`; 6 | 2. Then enter `Install Extension`; 7 | 3. Write `Omni`; 8 | 4. Select it or press `Enter` to install. 9 | 10 | #### Install using Git 11 | 12 | If you are a git user, you can install the theme and keep up to date by cloning the repo: 13 | 14 | $ git clone https://github.com/getomni/visual-studio-code.git ~/.vscode/extensions/theme-omni 15 | $ cd ~/.vscode/extensions/theme-omni 16 | $ npm install 17 | $ npm run build 18 | 19 | #### Activating theme 20 | 21 | Run Visual Studio Code. The Omni theme will be available from `File -> Preferences -> Color Theme` dropdown menu. 22 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2021 Omni Theme 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 |
3 | Omni Logo 4 |
5 | Omni for Visual Studio Code 6 |
7 |

8 | 9 |

10 | Dark theme for Visual Studio Code 11 |

12 | 13 |

14 | PRs welcome! 15 | 16 | License 17 |

18 | 19 |

20 | Install • 21 | Team • 22 | License 23 |

24 | 25 |

26 | Omni screnshoot for Visual Studio Code 27 |

28 | 29 | ## Install 30 | 31 | All instructions can be found at [INSTALL.md](./INSTALL.md). 32 | 33 | ## Team 34 | 35 | This theme is maintained by the following person(s) and a bunch of [awesome contributors](https://github.com/getomni/visual-studio-code/graphs/contributors). 36 | 37 | | [![Diego Fernandes](https://github.com/diego3g.png?size=100)](https://github.com/diego3g) | [![Luke Morales](https://github.com/lukemorales.png?size=100)](https://github.com/lukemorales) | [![João Pedro Schmitz](https://github.com/jpedroschmitz.png?size=100)](https://github.com/jpedroschmitz) | 38 | | ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | 39 | | [Diego Fernandes](https://github.com/diego3g) | [Luke Morales](https://github.com/lukemorales) | [João Pedro](https://github.com/jpedroschmitz) | 40 | 41 | ## License 42 | 43 | [MIT License](./LICENSE.md) 44 | -------------------------------------------------------------------------------- /constants/index.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | 3 | module.exports = { 4 | THEME_DIR: path.join(__dirname, '..', 'theme'), 5 | THEME_COLOR_REFERENCE_URL: 'https://code.visualstudio.com/api/references/theme-color', 6 | NOT_THEME_KEYS: [ 7 | 'workbench.colorCustomizations', 8 | 'editor.tokenColorCustomizations', 9 | ], 10 | }; 11 | -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getomni/visual-studio-code/ba964925b6661543b1855379fa95868a44a2945b/icon.png -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "module": "commonjs", 5 | "strict": true, 6 | "noImplicitAny": true, 7 | "strictNullChecks": true, 8 | "strictFunctionTypes": true, 9 | "strictBindCallApply": true, 10 | "strictPropertyInitialization": true, 11 | "noImplicitThis": true, 12 | "alwaysStrict": true, 13 | "noUnusedLocals": true, 14 | "noUnusedParameters": true, 15 | "noImplicitReturns": true, 16 | "noFallthroughCasesInSwitch": true, 17 | "forceConsistentCasingInFileNames": true 18 | }, 19 | "include": [ 20 | "scripts/**/*" 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "theme-omni", 3 | "version": "1.0.10", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@types/node": { 8 | "version": "13.13.4", 9 | "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.4.tgz", 10 | "integrity": "sha512-x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA==", 11 | "dev": true 12 | }, 13 | "ansi-styles": { 14 | "version": "3.2.1", 15 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 16 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 17 | "dev": true, 18 | "requires": { 19 | "color-convert": "^1.9.0" 20 | } 21 | }, 22 | "argparse": { 23 | "version": "1.0.10", 24 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 25 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 26 | "dev": true, 27 | "requires": { 28 | "sprintf-js": "~1.0.2" 29 | } 30 | }, 31 | "azure-devops-node-api": { 32 | "version": "7.2.0", 33 | "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-7.2.0.tgz", 34 | "integrity": "sha512-pMfGJ6gAQ7LRKTHgiRF+8iaUUeGAI0c8puLaqHLc7B8AR7W6GJLozK9RFeUHFjEGybC9/EB3r67WPd7e46zQ8w==", 35 | "dev": true, 36 | "requires": { 37 | "os": "0.1.1", 38 | "tunnel": "0.0.4", 39 | "typed-rest-client": "1.2.0", 40 | "underscore": "1.8.3" 41 | } 42 | }, 43 | "balanced-match": { 44 | "version": "1.0.0", 45 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 46 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 47 | "dev": true 48 | }, 49 | "boolbase": { 50 | "version": "1.0.0", 51 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 52 | "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", 53 | "dev": true 54 | }, 55 | "brace-expansion": { 56 | "version": "1.1.11", 57 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 58 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 59 | "dev": true, 60 | "requires": { 61 | "balanced-match": "^1.0.0", 62 | "concat-map": "0.0.1" 63 | } 64 | }, 65 | "buffer-crc32": { 66 | "version": "0.2.13", 67 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 68 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", 69 | "dev": true 70 | }, 71 | "chalk": { 72 | "version": "2.4.2", 73 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 74 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 75 | "dev": true, 76 | "requires": { 77 | "ansi-styles": "^3.2.1", 78 | "escape-string-regexp": "^1.0.5", 79 | "supports-color": "^5.3.0" 80 | } 81 | }, 82 | "cheerio": { 83 | "version": "1.0.0-rc.3", 84 | "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", 85 | "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", 86 | "dev": true, 87 | "requires": { 88 | "css-select": "~1.2.0", 89 | "dom-serializer": "~0.1.1", 90 | "entities": "~1.1.1", 91 | "htmlparser2": "^3.9.1", 92 | "lodash": "^4.15.0", 93 | "parse5": "^3.0.1" 94 | } 95 | }, 96 | "color-convert": { 97 | "version": "1.9.3", 98 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 99 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 100 | "dev": true, 101 | "requires": { 102 | "color-name": "1.1.3" 103 | } 104 | }, 105 | "color-name": { 106 | "version": "1.1.3", 107 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 108 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 109 | "dev": true 110 | }, 111 | "commander": { 112 | "version": "2.20.3", 113 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 114 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 115 | "dev": true 116 | }, 117 | "concat-map": { 118 | "version": "0.0.1", 119 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 120 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 121 | "dev": true 122 | }, 123 | "css-select": { 124 | "version": "1.2.0", 125 | "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", 126 | "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", 127 | "dev": true, 128 | "requires": { 129 | "boolbase": "~1.0.0", 130 | "css-what": "2.1", 131 | "domutils": "1.5.1", 132 | "nth-check": "~1.0.1" 133 | } 134 | }, 135 | "css-what": { 136 | "version": "2.1.3", 137 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", 138 | "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", 139 | "dev": true 140 | }, 141 | "denodeify": { 142 | "version": "1.2.1", 143 | "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", 144 | "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=", 145 | "dev": true 146 | }, 147 | "dom-serializer": { 148 | "version": "0.1.1", 149 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", 150 | "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", 151 | "dev": true, 152 | "requires": { 153 | "domelementtype": "^1.3.0", 154 | "entities": "^1.1.1" 155 | } 156 | }, 157 | "domelementtype": { 158 | "version": "1.3.1", 159 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", 160 | "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", 161 | "dev": true 162 | }, 163 | "domhandler": { 164 | "version": "2.4.2", 165 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", 166 | "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", 167 | "dev": true, 168 | "requires": { 169 | "domelementtype": "1" 170 | } 171 | }, 172 | "domutils": { 173 | "version": "1.5.1", 174 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", 175 | "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", 176 | "dev": true, 177 | "requires": { 178 | "dom-serializer": "0", 179 | "domelementtype": "1" 180 | } 181 | }, 182 | "entities": { 183 | "version": "1.1.2", 184 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", 185 | "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", 186 | "dev": true 187 | }, 188 | "escape-string-regexp": { 189 | "version": "1.0.5", 190 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 191 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 192 | "dev": true 193 | }, 194 | "esprima": { 195 | "version": "4.0.1", 196 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 197 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 198 | "dev": true 199 | }, 200 | "fd-slicer": { 201 | "version": "1.1.0", 202 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 203 | "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", 204 | "dev": true, 205 | "requires": { 206 | "pend": "~1.2.0" 207 | } 208 | }, 209 | "fs.realpath": { 210 | "version": "1.0.0", 211 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 212 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 213 | "dev": true 214 | }, 215 | "glob": { 216 | "version": "7.1.6", 217 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 218 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 219 | "dev": true, 220 | "requires": { 221 | "fs.realpath": "^1.0.0", 222 | "inflight": "^1.0.4", 223 | "inherits": "2", 224 | "minimatch": "^3.0.4", 225 | "once": "^1.3.0", 226 | "path-is-absolute": "^1.0.0" 227 | } 228 | }, 229 | "has-flag": { 230 | "version": "3.0.0", 231 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 232 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 233 | "dev": true 234 | }, 235 | "htmlparser2": { 236 | "version": "3.10.1", 237 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", 238 | "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", 239 | "dev": true, 240 | "requires": { 241 | "domelementtype": "^1.3.1", 242 | "domhandler": "^2.3.0", 243 | "domutils": "^1.5.1", 244 | "entities": "^1.1.1", 245 | "inherits": "^2.0.1", 246 | "readable-stream": "^3.1.1" 247 | } 248 | }, 249 | "inflight": { 250 | "version": "1.0.6", 251 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 252 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 253 | "dev": true, 254 | "requires": { 255 | "once": "^1.3.0", 256 | "wrappy": "1" 257 | } 258 | }, 259 | "inherits": { 260 | "version": "2.0.4", 261 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 262 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 263 | "dev": true 264 | }, 265 | "js-yaml": { 266 | "version": "3.13.1", 267 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 268 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 269 | "dev": true, 270 | "requires": { 271 | "argparse": "^1.0.7", 272 | "esprima": "^4.0.0" 273 | } 274 | }, 275 | "leven": { 276 | "version": "3.1.0", 277 | "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", 278 | "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", 279 | "dev": true 280 | }, 281 | "linkify-it": { 282 | "version": "2.2.0", 283 | "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", 284 | "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", 285 | "dev": true, 286 | "requires": { 287 | "uc.micro": "^1.0.1" 288 | } 289 | }, 290 | "lodash": { 291 | "version": "4.17.21", 292 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 293 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 294 | "dev": true 295 | }, 296 | "markdown-it": { 297 | "version": "10.0.0", 298 | "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", 299 | "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", 300 | "dev": true, 301 | "requires": { 302 | "argparse": "^1.0.7", 303 | "entities": "~2.0.0", 304 | "linkify-it": "^2.0.0", 305 | "mdurl": "^1.0.1", 306 | "uc.micro": "^1.0.5" 307 | }, 308 | "dependencies": { 309 | "entities": { 310 | "version": "2.0.0", 311 | "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", 312 | "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", 313 | "dev": true 314 | } 315 | } 316 | }, 317 | "mdurl": { 318 | "version": "1.0.1", 319 | "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", 320 | "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", 321 | "dev": true 322 | }, 323 | "mime": { 324 | "version": "1.6.0", 325 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 326 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 327 | "dev": true 328 | }, 329 | "minimatch": { 330 | "version": "3.0.4", 331 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 332 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 333 | "dev": true, 334 | "requires": { 335 | "brace-expansion": "^1.1.7" 336 | } 337 | }, 338 | "mute-stream": { 339 | "version": "0.0.8", 340 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 341 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", 342 | "dev": true 343 | }, 344 | "nth-check": { 345 | "version": "1.0.2", 346 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", 347 | "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", 348 | "dev": true, 349 | "requires": { 350 | "boolbase": "~1.0.0" 351 | } 352 | }, 353 | "once": { 354 | "version": "1.4.0", 355 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 356 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 357 | "dev": true, 358 | "requires": { 359 | "wrappy": "1" 360 | } 361 | }, 362 | "os": { 363 | "version": "0.1.1", 364 | "resolved": "https://registry.npmjs.org/os/-/os-0.1.1.tgz", 365 | "integrity": "sha1-IIhF6J4ZOtTZcUdLk5R3NqVtE/M=", 366 | "dev": true 367 | }, 368 | "os-homedir": { 369 | "version": "1.0.2", 370 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 371 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 372 | "dev": true 373 | }, 374 | "os-tmpdir": { 375 | "version": "1.0.2", 376 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 377 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 378 | "dev": true 379 | }, 380 | "osenv": { 381 | "version": "0.1.5", 382 | "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", 383 | "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", 384 | "dev": true, 385 | "requires": { 386 | "os-homedir": "^1.0.0", 387 | "os-tmpdir": "^1.0.0" 388 | } 389 | }, 390 | "parse-semver": { 391 | "version": "1.1.1", 392 | "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", 393 | "integrity": "sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg=", 394 | "dev": true, 395 | "requires": { 396 | "semver": "^5.1.0" 397 | } 398 | }, 399 | "parse5": { 400 | "version": "3.0.3", 401 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", 402 | "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", 403 | "dev": true, 404 | "requires": { 405 | "@types/node": "*" 406 | } 407 | }, 408 | "path-is-absolute": { 409 | "version": "1.0.1", 410 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 411 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 412 | "dev": true 413 | }, 414 | "pend": { 415 | "version": "1.2.0", 416 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 417 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", 418 | "dev": true 419 | }, 420 | "prettier": { 421 | "version": "1.19.1", 422 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", 423 | "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", 424 | "dev": true 425 | }, 426 | "read": { 427 | "version": "1.0.7", 428 | "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", 429 | "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", 430 | "dev": true, 431 | "requires": { 432 | "mute-stream": "~0.0.4" 433 | } 434 | }, 435 | "readable-stream": { 436 | "version": "3.6.0", 437 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 438 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 439 | "dev": true, 440 | "requires": { 441 | "inherits": "^2.0.3", 442 | "string_decoder": "^1.1.1", 443 | "util-deprecate": "^1.0.1" 444 | } 445 | }, 446 | "safe-buffer": { 447 | "version": "5.2.0", 448 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", 449 | "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", 450 | "dev": true 451 | }, 452 | "semver": { 453 | "version": "5.7.1", 454 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 455 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 456 | "dev": true 457 | }, 458 | "sprintf-js": { 459 | "version": "1.0.3", 460 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 461 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 462 | "dev": true 463 | }, 464 | "string_decoder": { 465 | "version": "1.3.0", 466 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 467 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 468 | "dev": true, 469 | "requires": { 470 | "safe-buffer": "~5.2.0" 471 | } 472 | }, 473 | "supports-color": { 474 | "version": "5.5.0", 475 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 476 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 477 | "dev": true, 478 | "requires": { 479 | "has-flag": "^3.0.0" 480 | } 481 | }, 482 | "tinycolor2": { 483 | "version": "1.4.1", 484 | "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", 485 | "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=", 486 | "dev": true 487 | }, 488 | "tmp": { 489 | "version": "0.0.29", 490 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.29.tgz", 491 | "integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=", 492 | "dev": true, 493 | "requires": { 494 | "os-tmpdir": "~1.0.1" 495 | } 496 | }, 497 | "tunnel": { 498 | "version": "0.0.4", 499 | "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.4.tgz", 500 | "integrity": "sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM=", 501 | "dev": true 502 | }, 503 | "typed-rest-client": { 504 | "version": "1.2.0", 505 | "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.2.0.tgz", 506 | "integrity": "sha512-FrUshzZ1yxH8YwGR29PWWnfksLEILbWJydU7zfIRkyH7kAEzB62uMAl2WY6EyolWpLpVHeJGgQm45/MaruaHpw==", 507 | "dev": true, 508 | "requires": { 509 | "tunnel": "0.0.4", 510 | "underscore": "1.8.3" 511 | } 512 | }, 513 | "uc.micro": { 514 | "version": "1.0.6", 515 | "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", 516 | "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", 517 | "dev": true 518 | }, 519 | "underscore": { 520 | "version": "1.8.3", 521 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", 522 | "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", 523 | "dev": true 524 | }, 525 | "url-join": { 526 | "version": "1.1.0", 527 | "resolved": "https://registry.npmjs.org/url-join/-/url-join-1.1.0.tgz", 528 | "integrity": "sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg=", 529 | "dev": true 530 | }, 531 | "util-deprecate": { 532 | "version": "1.0.2", 533 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 534 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 535 | "dev": true 536 | }, 537 | "vsce": { 538 | "version": "1.75.0", 539 | "resolved": "https://registry.npmjs.org/vsce/-/vsce-1.75.0.tgz", 540 | "integrity": "sha512-qyAQTmolxKWc9bV1z0yBTSH4WEIWhDueBJMKB0GUFD6lM4MiaU1zJ9BtzekUORZu094YeNSKz0RmVVuxfqPq0g==", 541 | "dev": true, 542 | "requires": { 543 | "azure-devops-node-api": "^7.2.0", 544 | "chalk": "^2.4.2", 545 | "cheerio": "^1.0.0-rc.1", 546 | "commander": "^2.8.1", 547 | "denodeify": "^1.2.1", 548 | "glob": "^7.0.6", 549 | "leven": "^3.1.0", 550 | "lodash": "^4.17.15", 551 | "markdown-it": "^10.0.0", 552 | "mime": "^1.3.4", 553 | "minimatch": "^3.0.3", 554 | "osenv": "^0.1.3", 555 | "parse-semver": "^1.1.1", 556 | "read": "^1.0.7", 557 | "semver": "^5.1.0", 558 | "tmp": "0.0.29", 559 | "typed-rest-client": "1.2.0", 560 | "url-join": "^1.1.0", 561 | "yauzl": "^2.3.1", 562 | "yazl": "^2.2.2" 563 | } 564 | }, 565 | "wrappy": { 566 | "version": "1.0.2", 567 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 568 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 569 | "dev": true 570 | }, 571 | "yauzl": { 572 | "version": "2.10.0", 573 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 574 | "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", 575 | "dev": true, 576 | "requires": { 577 | "buffer-crc32": "~0.2.3", 578 | "fd-slicer": "~1.1.0" 579 | } 580 | }, 581 | "yazl": { 582 | "version": "2.5.1", 583 | "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", 584 | "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", 585 | "dev": true, 586 | "requires": { 587 | "buffer-crc32": "~0.2.3" 588 | } 589 | } 590 | } 591 | } 592 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "theme-omni", 3 | "version": "1.0.12", 4 | "displayName": "Omni Theme", 5 | "homepage": "https://github.com/getomni/omni", 6 | "description": "Dark theme created by Rocketseat 🚀", 7 | "publisher": "rocketseat", 8 | "license": "MIT", 9 | "scripts": { 10 | "build": "node ./scripts/build.js", 11 | "lint": "node ./scripts/lint.js", 12 | "package": "vsce package -o ./bin/omni.vsix", 13 | "vscode:prepublish": "npm run build", 14 | "vsce-publish": "vsce publish" 15 | }, 16 | "maintainers": [ 17 | "Diego Fernandes ", 18 | "Luke Morales ", 19 | "João Pedro Schmitz " 20 | ], 21 | "repository": { 22 | "type": "git", 23 | "url": "https://github.com/getomni/visual-studio-code.git" 24 | }, 25 | "bugs": { 26 | "url": "https://github.com/getomni/visual-studio-code/issues" 27 | }, 28 | "engines": { 29 | "vscode": "^1.13.0" 30 | }, 31 | "categories": [ 32 | "Themes" 33 | ], 34 | "keywords": [ 35 | "omni", 36 | "rocketseat", 37 | "theme", 38 | "color-theme" 39 | ], 40 | "icon": "icon.png", 41 | "galleryBanner": { 42 | "color": "#17181A", 43 | "theme": "dark" 44 | }, 45 | "contributes": { 46 | "themes": [ 47 | { 48 | "label": "Omni", 49 | "uiTheme": "vs-dark", 50 | "path": "./theme/omni.json" 51 | } 52 | ] 53 | }, 54 | "devDependencies": { 55 | "js-yaml": "^3.13.1", 56 | "prettier": "^1.19.1", 57 | "tinycolor2": "^1.4.1", 58 | "vsce": "^1.75.0" 59 | }, 60 | "__metadata": { 61 | "id": "4e44877c-1c8d-4f9c-ba86-1372d0fbeeb1", 62 | "publisherDisplayName": "Omni", 63 | "publisherId": "fbb3d024-f8f2-460c-bdb5-99552f6d8c4b" 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /scripts/build.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const path = require('path'); 3 | const generate = require('./generate'); 4 | 5 | const THEME_DIR = path.join(__dirname, '..', 'theme'); 6 | 7 | if (!fs.existsSync(THEME_DIR)) { 8 | fs.mkdirSync(THEME_DIR); 9 | } 10 | 11 | module.exports = async () => { 12 | const { base } = await generate(); 13 | 14 | return Promise.all([ 15 | fs.promises.writeFile( 16 | path.join(THEME_DIR, 'omni.json'), 17 | JSON.stringify(base, null, 4) 18 | ), 19 | ]); 20 | }; 21 | 22 | if (require.main === module) { 23 | module.exports(); 24 | } 25 | -------------------------------------------------------------------------------- /scripts/generate.js: -------------------------------------------------------------------------------- 1 | const { readFile } = require('fs').promises; 2 | const { join } = require('path'); 3 | const { Type, Schema, load } = require('js-yaml'); 4 | 5 | /** 6 | * @typedef {Object} TokenColor - Textmate token color. 7 | * @prop {string} [name] - Optional name. 8 | * @prop {string[]} scope - Array of scopes. 9 | * @prop {Record<'foreground'|'background'|'fontStyle',string|undefined>} settings - Textmate token settings. 10 | * Note: fontStyle is a space-separated list of any of `italic`, `bold`, `underline`. 11 | */ 12 | 13 | /** 14 | * @typedef {Object} Theme - Parsed theme object. 15 | * @prop {Record<'base'|'ansi'|'brightOther'|'other', string[]>} omni - Omni color variables. 16 | * @prop {Record} colors - VSCode color mapping. 17 | * @prop {TokenColor[]} tokenColors - Textmate token colors. 18 | */ 19 | 20 | /** 21 | * @typedef {(yamlContent: string, yamlObj: Theme) => Theme} ThemeTransform 22 | */ 23 | 24 | const withAlphaType = new Type('!alpha', { 25 | kind: 'sequence', 26 | construct: ([hexRGB, alpha]) => hexRGB + alpha, 27 | represent: ([hexRGB, alpha]) => hexRGB + alpha, 28 | }); 29 | 30 | const schema = Schema.create([withAlphaType]); 31 | 32 | module.exports = async () => { 33 | const yamlFile = await readFile( 34 | join(__dirname, '..', 'src', 'omni.yml'), 35 | 'utf-8' 36 | ); 37 | 38 | /** @type {Theme} */ 39 | const base = load(yamlFile, { schema }); 40 | 41 | // Remove nulls and other falsy values from colors 42 | for (const key of Object.keys(base.colors)) { 43 | if (!base.colors[key]) { 44 | delete base.colors[key]; 45 | } 46 | } 47 | 48 | return { 49 | base, 50 | }; 51 | }; 52 | -------------------------------------------------------------------------------- /scripts/lint.js: -------------------------------------------------------------------------------- 1 | const https = require('https'); 2 | 3 | const generate = require('./generate'); 4 | const { THEME_COLOR_REFERENCE_URL, NOT_THEME_KEYS } = require('../constants'); 5 | 6 | const get = url => 7 | new Promise((resolve, reject) => { 8 | https.get(url, res => { 9 | let body = ''; 10 | res.setEncoding('utf8'); 11 | res.on('data', data => (body += data)); 12 | res.on('end', () => resolve(body)); 13 | res.on('error', reject); 14 | }); 15 | }); 16 | 17 | async function scrapeThemeAvailableKeys() { 18 | const data = await get(THEME_COLOR_REFERENCE_URL); 19 | 20 | const matches = data.match(new RegExp('.+?', 'g')); 21 | 22 | if (!matches) { 23 | throw new Error( 24 | "Couldn't find any matches with ..., maybe docs have chaged?" 25 | ); 26 | } 27 | 28 | return [...matches] 29 | .map(key => key.replace('', '').replace('', '')) 30 | .filter(key => !/ /.test(key)) // Remove if contains spaces 31 | .filter(key => !/#.../.test(key)) // Remove if is a hex color 32 | .filter(key => !/"/.test(key)) // Remove if contains quotes 33 | .filter(key => key.length > 4) // Remove if it's very small 34 | .filter(key => !NOT_THEME_KEYS.includes(key)) // Remove if its in the blacklist 35 | .sort(); 36 | } 37 | 38 | (async () => { 39 | const availableKeys = await scrapeThemeAvailableKeys(); 40 | const { base } = await generate(); 41 | 42 | for (const key of Object.keys(base.colors)) { 43 | if (!availableKeys.includes(key)) { 44 | console.warn(`Unsupported key "${key}", probably deprecated?`); 45 | } 46 | } 47 | 48 | for (const key of availableKeys) { 49 | if (!Object.keys(base.colors).includes(key)) { 50 | console.warn(`Missing key "${key}" in theme`); 51 | } 52 | } 53 | })().catch(console.error); 54 | -------------------------------------------------------------------------------- /src/omni.yml: -------------------------------------------------------------------------------- 1 | name: Omni 2 | author: Rocketseat 3 | maintainers: 4 | - Diego Fernandes 5 | - Luke Morales 6 | - João Pedro Schmitz 7 | semanticClass: theme.omni 8 | omni: 9 | base: 10 | - &BG '#191622' 11 | - &FG '#E1E1E6' 12 | - &SELECTION '#41414D' 13 | - &COMMENT '#5A4B81' 14 | - &CYAN '#988bc7' 15 | - &GREEN '#67e480' 16 | - &ORANGE '#E89E64' 17 | - &PINK '#FF79C6' 18 | - &PURPLE '#78D1E1' 19 | - &RED '#E96379' 20 | - &YELLOW '#e7de79' 21 | ansi: 22 | - &COLOR0 '#201B2D' 23 | - &COLOR1 '#FF79C6' 24 | - &COLOR3 '#e7de79' 25 | - &COLOR2 '#67e480' 26 | - &COLOR4 '#78D1E1' 27 | - &COLOR5 '#988bc7' 28 | - &COLOR6 '#A1EFE4' 29 | - &COLOR7 '#E1E1E6' 30 | - &COLOR8 '#626483' 31 | - &COLOR9 '#ed4556' 32 | - &COLOR11 '#e7de79' 33 | - &COLOR10 '#00F769' 34 | - &COLOR12 '#78D1E1' 35 | - &COLOR13 '#988bc7' 36 | - &COLOR14 '#A4FFFF' 37 | - &COLOR15 '#F7F7FB' 38 | brightOther: 39 | # Temporary (awaiting fix) 40 | - &TEMP_QUOTES '#e7de79' 41 | - &TEMP_PROPERTY_QUOTES '#7159C1' 42 | other: 43 | - &LineHighlight '#44475A75' 44 | - &NonText '#FFFFFF1A' 45 | - &WHITE '#E1E1E6' 46 | - &TAB_DROP_BG '#44475A70' 47 | # UI Variants 48 | - &BGLighter '#252131' 49 | - &BGLight '#201B2D' # HSV (230 , 25.71, 27.45) 50 | - &BGDark '#13111B' # HSV (234.55, 25 , 17.25) 51 | - &BGDarker '#15121E' # HSV (234.55, 25 , 13 ) 52 | 53 | # User Interface (more info: https://code.visualstudio.com/docs/getstarted/theme-color-reference) 54 | colors: 55 | 56 | # Integrated Terminal Colors 57 | terminal.background: *BG 58 | terminal.foreground: *FG 59 | terminal.ansiBrightBlack: *COLOR8 60 | terminal.ansiBrightRed: *COLOR9 61 | terminal.ansiBrightGreen: *COLOR10 62 | terminal.ansiBrightYellow: *COLOR11 63 | terminal.ansiBrightBlue: *COLOR12 64 | terminal.ansiBrightMagenta: *COLOR13 65 | terminal.ansiBrightCyan: *COLOR14 66 | terminal.ansiBrightWhite: *COLOR15 67 | terminal.ansiBlack: *COLOR0 68 | terminal.ansiRed: *COLOR1 69 | terminal.ansiGreen: *COLOR2 70 | terminal.ansiYellow: *COLOR3 71 | terminal.ansiBlue: *COLOR4 72 | terminal.ansiMagenta: *COLOR5 73 | terminal.ansiCyan: *COLOR6 74 | terminal.ansiWhite: *COLOR7 75 | terminal.selectionBackground: !alpha [*COMMENT, 45] 76 | terminalCursor.background: *COLOR0 77 | terminalCursor.foreground: *FG 78 | 79 | # Contrast Colors 80 | contrastBorder: *BGDarker # An extra border around elements to separate them from others for greater contrast 81 | contrastActiveBorder: # An extra border around active elements to separate them from others for greater contrast 82 | 83 | # Base Colors 84 | focusBorder: *COMMENT # Overall border color for focused elements. This color is only used if not overridden by a component 85 | foreground: *FG # Overall foreground color. This color is only used if not overridden by a component 86 | widget.shadow: # Shadow color of widgets such as Find/Replace inside the editor 87 | selection.background: *PURPLE # Background color of text selections in the workbench (for input fields or text areas, does not apply to selections within the editor and the terminal) 88 | errorForeground: *RED # Overall foreground color for error messages (this color is only used if not overridden by a component) 89 | 90 | # Button Control 91 | button.background: *SELECTION # Button background color 92 | button.foreground: *FG # Button foreground color 93 | button.hoverBackground: # Button background color when hovering 94 | 95 | # Dropdown Control 96 | dropdown.background: *BGLight # Dropdown background 97 | dropdown.border: *BGDarker # Dropdown border 98 | dropdown.foreground: *FG # Dropdown foreground 99 | 100 | # Input Control 101 | input.background: *BG # Input box background 102 | input.foreground: *FG # Input box foreground 103 | input.border: *BGDarker # Input box border 104 | input.placeholderForeground: *COMMENT # Input box foreground color for placeholder text 105 | inputOption.activeBorder: *PURPLE # Border color of activated options in input fields 106 | inputValidation.infoForeground: # Input validation foreground color for information severity 107 | inputValidation.infoBackground: # Input validation background color for information severity 108 | inputValidation.infoBorder: *PINK # Input validation border color for information severity 109 | inputValidation.warningForeground: # Input validation foreground color for warning severity 110 | inputValidation.warningBackground: # Input validation background color for information warning 111 | inputValidation.warningBorder: *ORANGE # Input validation border color for warning severity 112 | inputValidation.errorForeground: # Input validation foreground color for error severity 113 | inputValidation.errorBackground: # Input validation background color for error severity 114 | inputValidation.errorBorder: *RED # Input validation border color for error severity 115 | 116 | # Scroll Bar Control 117 | scrollbar.shadow: # Scroll Bar shadow to indicate that the view is scrolled 118 | scrollbarSlider.activeBackground: # Slider background color when active 119 | scrollbarSlider.background: # Slider background color 120 | scrollbarSlider.hoverBackground: # Slider background color when hovering 121 | 122 | # Badge 123 | badge.foreground: *FG # Badge foreground color 124 | badge.background: *SELECTION # Badge background color 125 | 126 | # Progress Bar 127 | progressBar.background: *PINK # Background color of the progress bar shown for long running operations 128 | 129 | # List & Trees 130 | list.activeSelectionBackground: !alpha [*SELECTION, 60] # List/Tree background color for the selected item when the list/tree is active 131 | list.activeSelectionForeground: *FG # List/Tree foreground color for the selected item when the list/tree is active 132 | list.dropBackground: *SELECTION # List/Tree drag and drop background when moving items around using the mouse 133 | list.focusBackground: *LineHighlight # List/Tree background color for the focused item when the list/tree is active 134 | list.highlightForeground: *CYAN # List/Tree foreground color of the match highlights when searching inside the list/tree 135 | list.hoverBackground: !alpha [*SELECTION, 65] # List/Tree background when hovering over items using the mouse 136 | list.inactiveSelectionBackground: !alpha [*SELECTION, 40] # List/Tree background color for the selected item when the list/tree is inactive 137 | list.inactiveSelectionForeground: # List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not 138 | list.warningForeground: *ORANGE # Color of warning decorations in the explorer 139 | list.errorForeground: *RED # Color of error decorations in the explorer 140 | list.hoverForeground: # List/Tree foreground when hovering over items using the mouse 141 | list.focusForeground: # List/Tree foreground color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not 142 | 143 | # Activity Bar 144 | activityBar.background: *BGLight # Activity Bar background color 145 | activityBar.inactiveForeground: *COMMENT # Activity bar item foreground color when it is inactive 146 | activityBar.dropBackground: # Drag and drop feedback color for the Activity Bar items 147 | activityBar.foreground: *FG # Activity bar foreground color (for example used for the icons) 148 | activityBar.border: # Activity Bar border color with the Side Bar 149 | activityBar.activeBorder: !alpha [*PINK, 80] # Activity Bar indicator color 150 | activityBar.activeBackground: !alpha [*SELECTION, 40] # Activity Bar indicator background color 151 | activityBarBadge.background: *PINK # Activity notification badge background color 152 | activityBarBadge.foreground: *BG # Activity notification badge foreground color 153 | 154 | # Side Bar 155 | sideBar.background: *BGDark # Side Bar background color 156 | sideBar.foreground: # Side Bar foreground color. The Side Bar is the container for views like Explorer and Search 157 | sideBar.border: # Side Bar border color on the side separating the editor 158 | sideBarTitle.foreground: *FG # Side Bar title foreground color 159 | sideBarSectionHeader.background: *BG # Side Bar section header background color 160 | sideBarSectionHeader.foreground: # Side Bar section header foreground color 161 | sideBarSectionHeader.border: *BGDarker # Side bar section header border color 162 | 163 | # Editor Group & Tabs 164 | editorGroup.background: # Background color of an editor group. The background color shows up when dragging editor groups around 165 | editorGroup.border: *SELECTION # Color to separate multiple editor groups from each other 166 | editorGroup.dropBackground: *TAB_DROP_BG # Background color when dragging editors around 167 | editorGroupHeader.noTabsBackground: # Background color of the editor group title header when Tabs are disabled 168 | editorGroupHeader.tabsBackground: *BGDarker # Background color of the Tabs container 169 | editorGroupHeader.tabsBorder: # Border color of the editor group title header when tabs are enabled. Editor groups are the containers of editors 170 | tab.activeBackground: *BG # Active Tab background color 171 | tab.activeForeground: *FG # Active Tab foreground color in an active group 172 | tab.border: *BGDarker # Border to separate Tabs from each other 173 | tab.activeBorderTop: !alpha [*PINK, 80] # A border drawn to the top of the active tab 174 | tab.activeBorder: # A border drawn to the bottom of the active tab 175 | tab.unfocusedActiveBorder: # A border drawn to the bottom of the active tab in an editor group that is not focused 176 | tab.inactiveBackground: *BGDark # Inactive Tab background color 177 | tab.inactiveForeground: *COMMENT # Inactive Tab foreground color in an active group 178 | tab.unfocusedActiveForeground: # Active tab foreground color in an inactive editor group 179 | tab.unfocusedInactiveForeground: # Inactive tab foreground color in an inactive editor group 180 | 181 | # Editor Colors 182 | editor.foreground: *FG 183 | editor.background: *BG 184 | editorLineNumber.foreground: *COMMENT 185 | editorCursor.foreground: 186 | 187 | editor.selectionBackground: *SELECTION # Color of the editor selection 188 | editor.selectionHighlightBackground: *BGLighter # Color for regions with the same content as the selection 189 | editor.inactiveSelectionBackground: # Color of the selection in an inactive editor 190 | editor.foldBackground: *BGDark # Background color for folded ranges 191 | 192 | editor.wordHighlightBackground: !alpha [ *CYAN, 50 ] # Background color of a symbol during read-access, for example when reading a variable 193 | editor.wordHighlightStrongBackground: !alpha [ *GREEN, 50 ] # Background color of a symbol during write-access, for example when writing to a variable 194 | 195 | editor.findMatchBackground: !alpha [ *ORANGE, 80 ] 196 | editor.findMatchHighlightBackground: !alpha [ *WHITE, 40 ] # Color of the other search matches 197 | editor.findRangeHighlightBackground: *LineHighlight # Color the range limiting the search 198 | 199 | editor.hoverHighlightBackground: *BGDarker # Highlight below the word for which a hover is shown 200 | 201 | editor.lineHighlightBackground: *BGLight # Background color for the highlight of line at the cursor position 202 | editor.lineHighlightBorder: *BG # Background color for the border around the line at the cursor position 203 | 204 | editorLink.activeForeground: *CYAN # Color of active links 205 | editor.rangeHighlightBackground: !alpha [ *PURPLE, 15 ] # Background color of highlighted ranges, like by Quick Open and Find features 206 | 207 | editor.snippetTabstopHighlightBackground: *BG # Highlight background color of a snippet tabstop 208 | editor.snippetTabstopHighlightBorder: *COMMENT # Highlight border color of a snippet tabstop 209 | editor.snippetFinalTabstopHighlightBackground: *BG # Highlight background color of the final tabstop of a snippet 210 | editor.snippetFinalTabstopHighlightBorder: *GREEN # Highlight border color of the final tabstop of a snippet 211 | 212 | editorWhitespace.foreground: *NonText # Color of whitespace characters in the editor 213 | editorIndentGuide.background: *NonText # Color of the editor indentation guides 214 | editorIndentGuide.activeBackground: !alpha [ *WHITE, 45] # Color of the active indentation guide 215 | editorRuler.foreground: *NonText # Color of the editor rulers 216 | 217 | editorCodeLens.foreground: *COMMENT # Foreground color of an editor CodeLens 218 | 219 | # NOTE: These are not set because they tend to be highly contested from 220 | # person to person. Thus, setting these is probably better suited 221 | # for workbench.colorCustomizations in User Settings 222 | editorBracketMatch.background: # Background color behind matching brackets 223 | editorBracketMatch.border: # Color for matching brackets boxes 224 | 225 | editorOverviewRuler.border: *BGDarker # Color of the overview ruler border 226 | editorOverviewRuler.findMatchForeground: 227 | editorOverviewRuler.rangeHighlightForeground: 228 | editorOverviewRuler.selectionHighlightForeground: *ORANGE 229 | editorOverviewRuler.wordHighlightForeground: *CYAN 230 | editorOverviewRuler.wordHighlightStrongForeground: *GREEN 231 | editorOverviewRuler.modifiedForeground: !alpha [ *CYAN, 80 ] 232 | editorOverviewRuler.addedForeground: !alpha [ *GREEN, 80 ] 233 | editorOverviewRuler.deletedForeground: !alpha [ *RED, 80 ] 234 | editorOverviewRuler.errorForeground: !alpha [ *RED, 80 ] 235 | editorOverviewRuler.warningForeground: !alpha [ *ORANGE, 80 ] 236 | editorOverviewRuler.infoForeground: !alpha [ *CYAN, 80 ] 237 | 238 | editorError.foreground: *RED # Foreground color of error squigglies in the editor 239 | editorError.border: # Border color of error squigglies in the editor 240 | editorWarning.foreground: *CYAN # Foreground color of warning squigglies in the editor 241 | editorWarning.border: # Border color of warning squigglies in the editor 242 | 243 | editorGutter.background: # Background color of the editor gutter 244 | editorGutter.modifiedBackground: !alpha [ *CYAN, 80 ] # Editor gutter background color for lines that are modified 245 | editorGutter.addedBackground: !alpha [ *GREEN, 80 ] # Editor gutter background color for lines that are added 246 | editorGutter.deletedBackground: !alpha [ *RED, 80 ] # Editor gutter background color for lines that are deleted 247 | 248 | # Explorer Colors 249 | gitDecoration.modifiedResourceForeground: *CYAN 250 | gitDecoration.deletedResourceForeground: *RED 251 | gitDecoration.untrackedResourceForeground: *GREEN 252 | gitDecoration.ignoredResourceForeground: *COMMENT 253 | gitDecoration.conflictingResourceForeground: *ORANGE 254 | 255 | # Diff Editor Colors 256 | diffEditor.insertedTextBackground: !alpha [ *GREEN, 20 ] # Background color for inserted text 257 | diffEditor.insertedTextBorder: # Outline color for inserted text 258 | diffEditor.removedTextBackground: !alpha [ *RED, 50 ] # Background color for removed text 259 | diffEditor.removedTextBorder: # Outline color for removed text 260 | 261 | # Editor Widget Colors 262 | editorWidget.background: *BGDark # Background color of editor widgets, such as Find/Replace 263 | editorWidgetBorder: # Border color of the editor widget unless the widget does not contain a border or defines its own border color 264 | 265 | editorSuggestWidget.background: *BGDark # Background color of the suggestion widget 266 | editorSuggestWidget.border: # Border color of the suggestion widget 267 | editorSuggestWidget.foreground: *FG # Foreground color of the suggestion widget 268 | editorSuggestWidget.highlightForeground: # Color of the match highlights in the suggestion widget 269 | editorSuggestWidget.selectedBackground: *SELECTION # Background color of the selected entry in the suggestion widget 270 | 271 | editorHoverWidget.background: *BG # Background color of the editor hover 272 | editorHoverWidget.border: *COMMENT # Border color of the editor hover 273 | 274 | debugExceptionWidget.background: # Exception widget background color 275 | debugExceptionWidget.border: # Exception widget border color 276 | 277 | editorMarkerNavigation.background: *BGDark # Editor marker navigation widget background 278 | editorMarkerNavigationError.background: # Editor marker navigation widget error color 279 | editorMarkerNavigationWarning.background: # Editor marker navigation widget warning color 280 | 281 | # Peek View Colors 282 | peekView.border: *SELECTION # Color of the peek view borders and arrow 283 | peekViewEditor.background: *BG # Background color of the peek view editor 284 | peekViewEditorGutter.background: # Background color of the gutter in the peek view editor 285 | peekViewEditor.matchHighlightBackground: !alpha [ *YELLOW, 80 ] # Match highlight color in the peek view editor 286 | peekViewResult.background: *BGDark # Background color of the peek view result list 287 | peekViewResult.fileForeground: *FG # Foreground color for file nodes in the peek view result list 288 | peekViewResult.lineForeground: *FG # Foreground color for line nodes in the peek view result list 289 | peekViewResult.matchHighlightBackground: !alpha [ *YELLOW, 80 ] # Match highlight color in the peek view result list 290 | peekViewResult.selectionBackground: *SELECTION # Background color of the selected entry in the peek view result list 291 | peekViewResult.selectionForeground: *FG # Foreground color of the selected entry in the peek view result list 292 | peekViewTitle.background: *BGDarker # Background color of the peek view title area 293 | peekViewTitleDescription.foreground: *COMMENT # Color of the peek view title info 294 | peekViewTitleLabel.foreground: *FG # Color of the peek view title 295 | 296 | # Merge Conflicts 297 | merge.currentHeaderBackground: !alpha [ *GREEN, 90 ] # Current header background in inline merge conflicts 298 | merge.currentContentBackground: # Current content background in inline merge conflicts 299 | merge.incomingHeaderBackground: !alpha [ *PURPLE, 90 ] # Incoming header background in inline merge conflicts 300 | merge.incomingContentBackground: # Incoming content background in inline merge conflicts 301 | merge.border: # Border color on headers and the splitter in inline merge conflicts 302 | editorOverviewRuler.currentContentForeground: *GREEN # Current overview ruler foreground for inline merge conflicts 303 | editorOverviewRuler.incomingContentForeground: *PURPLE # Incoming overview ruler foreground for inline merge conflicts 304 | 305 | # Panel Colors 306 | panel.background: *BG # Panel background color 307 | panel.border: *PINK # Panel border color on the top separating to the editor 308 | panelTitle.activeBorder: *PINK # Border color for the active panel title 309 | panelTitle.activeForeground: *FG # Title color for the active panel 310 | panelTitle.inactiveForeground: !alpha [*FG, 80] # Title color for the inactive panel 311 | 312 | # Status Bar Colors 313 | statusBar.background: *BGDarker # Standard Status Bar background color 314 | statusBar.foreground: *FG # Status Bar foreground color 315 | statusBar.debuggingBackground: *RED # Status Bar background color when a program is being debugged 316 | statusBar.debuggingForeground: *BGDarker # Status Bar foreground color when a program is being debugged 317 | statusBar.noFolderBackground: *BGDarker # Status Bar foreground color when no folder is opened 318 | statusBar.noFolderForeground: *FG # Status Bar background color when no folder is opened 319 | statusBarItem.activeBackground: # Status Bar item background color when clicking 320 | statusBarItem.hoverBackground: # Status Bar item background color when hovering 321 | statusBarItem.prominentBackground: *RED # Status Bar prominent items background color. Prominent items stand out from other Status Bar entries to indicate importance 322 | statusBarItem.prominentHoverBackground: *ORANGE # Status Bar prominent items background color when hovering. Prominent items stand out from other Status Bar entries to indicate importance 323 | statusBarItem.remoteForeground: *FG # Background color for the remote indicator on the status bar 324 | statusBarItem.remoteBackground: *PURPLE # Foreground color for the remote indicator on the status bar 325 | statusBar.border: 326 | 327 | # Title Bar Colors (MacOS Only) 328 | titleBar.activeBackground: *BGDark # Title Bar background when the window is active 329 | titleBar.activeForeground: *FG # Title Bar foreground when the window is active 330 | titleBar.inactiveBackground: *BGDarker # Title Bar background when the window is inactive 331 | titleBar.inactiveForeground: *COMMENT # Title Bar foreground when the window is inactive 332 | 333 | # Notification Dialog Colors 334 | notification.background: *BG # Notifications background color 335 | notification.foreground: *FG # Notifications foreground color 336 | notification.buttonBackground: *SELECTION 337 | notification.buttonForeground: *FG 338 | notification.buttonHoverBackground: *LineHighlight 339 | notification.errorBackground: *RED 340 | notification.errorForeground: *FG 341 | notification.infoBackground: *CYAN 342 | notification.infoForeground: *BG 343 | notification.warningBackground: *ORANGE 344 | notification.warningForeground: *BG 345 | 346 | # Extensions 347 | extensionButton.prominentForeground: *FG # Extension view button foreground color (for example Install button) 348 | extensionButton.prominentBackground: !alpha [ *GREEN, 90 ] # Extension view button background color 349 | extensionButton.prominentHoverBackground: !alpha [ *GREEN, 60 ] # Extension view button background hover color 350 | 351 | # Quick Picker 352 | pickerGroup.border: *PURPLE # Quick picker (Quick Open) color for grouping borders 353 | pickerGroup.foreground: *CYAN # Quick picker (Quick Open) color for grouping labels 354 | 355 | # Debug 356 | debugToolBar.background: *BGDark # Debug toolbar background color 357 | 358 | # Welcome Page 359 | welcomePage.buttonBackground: # Background color for the buttons on the Welcome page 360 | welcomePage.buttonHoverBackground: # Hover background color for the buttons on the Welcome page 361 | walkThrough.embeddedEditorBackground: *BGDark # Background color for the embedded editors on the Interactive Playground 362 | 363 | # Setting Editor 364 | settings.headerForeground: *FG # The foreground color for a section header or active title 365 | settings.modifiedItemForeground: *ORANGE # The foreground color for a the modified setting indicator 366 | settings.modifiedItemIndicator: *ORANGE # The color of the line that indicates a modified setting 367 | settings.inactiveSelectedItemBorder: # The color of the selected setting row border, when the settings list does not have focus 368 | settings.dropdownBackground: *BGDark # Dropdown background 369 | settings.dropdownForeground: *FG # Dropdown foreground 370 | settings.dropdownBorder: *BGDarker # Dropdown border 371 | settings.checkboxBackground: *BGDark # Checkbox background 372 | settings.checkboxForeground: *FG # Checkbox foreground 373 | settings.checkboxBorder: *BGDarker # Checkbox border 374 | settings.textInputBackground: *BGDark # Text input box background 375 | settings.textInputForeground: *FG # Text input box foreground 376 | settings.textInputBorder: *BGDarker # Text input box border 377 | settings.numberInputBackground: *BGDark # Number input box background 378 | settings.numberInputForeground: *FG # Number input box foreground 379 | settings.numberInputBorder: *BGDarker # Number input box border 380 | 381 | # Breadcrumbs 382 | breadcrumb.foreground: *COMMENT # Color of breadcrumb items 383 | breadcrumb.background: *BG 384 | breadcrumb.focusForeground: *FG # Color of focused breadcrumb items 385 | breadcrumb.activeSelectionForeground: *FG # Color of selected breadcrumb items 386 | breadcrumbPicker.background: *BGDarker # Background color of breadcrumb item picker 387 | 388 | # Misc 389 | menu.separatorBackground: # Color of a separator menu item in menus 390 | 391 | listFilterWidget.background: *BGLight # Background color of the type filter widget in lists and trees. 392 | listFilterWidget.outline: *BGLighter # Outline color of the type filter widget in lists and trees. 393 | listFilterWidget.noMatchesOutline: *RED # Outline color of the type filter widget in lists and trees, when there are no matches. 394 | 395 | # Syntaxes 396 | tokenColors: 397 | 398 | # ============================================================================= 399 | # General 400 | # ============================================================================= 401 | 402 | - scope: 403 | - emphasis 404 | settings: 405 | fontStyle: italic 406 | - scope: 407 | - strong 408 | settings: 409 | fontStyle: bold 410 | - scope: 411 | - header 412 | settings: 413 | foreground: *PURPLE 414 | - scope: 415 | - source 416 | settings: 417 | foreground: *FG 418 | 419 | # Diffs 420 | # ====== 421 | - scope: 422 | - meta.diff 423 | - meta.diff.header 424 | settings: 425 | foreground: *COMMENT 426 | - scope: 427 | - markup.inserted 428 | settings: 429 | foreground: *GREEN 430 | - scope: 431 | - markup.deleted 432 | settings: 433 | foreground: *RED 434 | - scope: 435 | - markup.changed 436 | settings: 437 | foreground: *ORANGE 438 | - scope: 439 | - invalid 440 | settings: 441 | foreground: *RED 442 | fontStyle: underline italic 443 | - scope: 444 | - invalid.deprecated 445 | settings: 446 | foreground: *FG 447 | fontStyle: underline italic 448 | - scope: 449 | - entity.name.filename 450 | settings: 451 | foreground: *YELLOW 452 | - scope: 453 | - markup.error 454 | settings: 455 | foreground: *RED 456 | 457 | # Markdown / RST / Prose 458 | # ====================== 459 | 460 | - name: Underlined markup 461 | scope: 462 | - markup.underline 463 | settings: 464 | fontStyle: underline 465 | 466 | - name: Bold markup 467 | scope: 468 | - markup.bold 469 | settings: 470 | fontStyle: bold 471 | foreground: *ORANGE 472 | 473 | - name: Markup headings 474 | scope: 475 | - markup.heading 476 | settings: 477 | fontStyle: bold 478 | foreground: *PURPLE 479 | 480 | - name: Markup italic 481 | scope: 482 | - markup.italic 483 | settings: 484 | foreground: *YELLOW 485 | fontStyle: italic 486 | 487 | - name: Bullets, lists (prose) 488 | scope: 489 | - beginning.punctuation.definition.list.markdown 490 | - beginning.punctuation.definition.quote.markdown 491 | - punctuation.definition.link.restructuredtext 492 | settings: 493 | foreground: *CYAN 494 | 495 | - name: Inline code (prose) 496 | scope: 497 | - markup.inline.raw 498 | - markup.raw.restructuredtext 499 | settings: 500 | foreground: *GREEN 501 | 502 | - name: Links (prose) 503 | scope: 504 | - markup.underline.link 505 | - markup.underline.link.image 506 | settings: 507 | foreground: *CYAN 508 | 509 | - name: Link text, image alt text (prose) 510 | scope: 511 | - meta.link.reference.def.restructuredtext 512 | - punctuation.definition.directive.restructuredtext 513 | - string.other.link.description 514 | - string.other.link.title 515 | settings: 516 | foreground: *PINK 517 | 518 | - name: Blockquotes (prose) 519 | scope: 520 | - entity.name.directive.restructuredtext 521 | - markup.quote 522 | settings: 523 | foreground: *YELLOW 524 | fontStyle: italic 525 | 526 | - name: Horizontal rule (prose) 527 | scope: 528 | - meta.separator.markdown 529 | settings: 530 | foreground: *COMMENT 531 | 532 | - name: Code blocks 533 | scope: 534 | - fenced_code.block.language 535 | - markup.raw.inner.restructuredtext 536 | - markup.fenced_code.block.markdown punctuation.definition.markdown 537 | settings: 538 | foreground: *GREEN 539 | 540 | - name: Prose constants 541 | scope: 542 | - punctuation.definition.constant.restructuredtext 543 | settings: 544 | foreground: *PURPLE 545 | 546 | - name: Braces in markdown headings 547 | scope: 548 | - markup.heading.markdown punctuation.definition.string.begin 549 | - markup.heading.markdown punctuation.definition.string.end 550 | settings: 551 | foreground: *PURPLE 552 | 553 | - name: Braces in markdown paragraphs 554 | scope: 555 | - meta.paragraph.markdown punctuation.definition.string.begin 556 | - meta.paragraph.markdown punctuation.definition.string.end 557 | settings: 558 | foreground: *FG 559 | 560 | - name: Braces in markdown blockquotes 561 | scope: 562 | - markup.quote.markdown meta.paragraph.markdown punctuation.definition.string.begin 563 | - markup.quote.markdown meta.paragraph.markdown punctuation.definition.string.end 564 | settings: 565 | foreground: *YELLOW 566 | 567 | # ============================================================================= 568 | # Classes 569 | # ============================================================================= 570 | 571 | - name: User-defined class names 572 | scope: 573 | - entity.name.type.class 574 | - entity.name.class 575 | settings: 576 | foreground: *CYAN 577 | fontStyle: normal 578 | 579 | - name: this, super, self, etc. 580 | scope: 581 | - keyword.expressions-and-types.swift 582 | - keyword.other.this 583 | - variable.language 584 | - variable.language punctuation.definition.variable.php # the "$" symbol in $this 585 | - variable.other.readwrite.instance.ruby # ruby's "@" instance symbol 586 | - variable.parameter.function.language.special # Special words as parameters 587 | settings: 588 | foreground: *PURPLE 589 | fontStyle: italic 590 | 591 | - name: Inherited classes 592 | scope: 593 | - entity.other.inherited-class 594 | settings: 595 | fontStyle: italic 596 | foreground: *CYAN 597 | 598 | # ============================================================================= 599 | # Comments 600 | # ============================================================================= 601 | 602 | - name: Comments 603 | scope: 604 | - comment 605 | - punctuation.definition.comment 606 | - unused.comment 607 | - wildcard.comment 608 | settings: 609 | foreground: *COMMENT 610 | 611 | - name: JSDoc-style keywords 612 | scope: 613 | - comment keyword.codetag.notation 614 | - comment.block.documentation keyword 615 | - comment.block.documentation storage.type.class 616 | settings: 617 | foreground: *PINK 618 | 619 | - name: JSDoc-style types 620 | scope: 621 | - comment.block.documentation entity.name.type 622 | settings: 623 | foreground: *CYAN 624 | fontStyle: italic 625 | 626 | - name: JSDoc-style type brackets 627 | scope: 628 | - comment.block.documentation entity.name.type punctuation.definition.bracket 629 | settings: 630 | foreground: *CYAN 631 | 632 | - name: JSDoc-style comment parameters 633 | scope: 634 | - comment.block.documentation variable 635 | settings: 636 | foreground: *ORANGE 637 | fontStyle: italic 638 | 639 | # ============================================================================= 640 | # Constants 641 | # ============================================================================= 642 | 643 | - name: Constants 644 | scope: 645 | - constant 646 | - variable.other.constant 647 | settings: 648 | foreground: *PURPLE 649 | 650 | - name: Constant escape sequences 651 | scope: 652 | - constant.character.escape 653 | - constant.character.string.escape 654 | - constant.regexp 655 | settings: 656 | foreground: *PINK 657 | 658 | # ============================================================================= 659 | # Entities 660 | # ============================================================================= 661 | 662 | - name: HTML tags 663 | scope: 664 | - entity.name.tag 665 | settings: 666 | foreground: *PINK 667 | 668 | - name: CSS attribute parent selectors ('&') 669 | scope: 670 | - entity.other.attribute-name.parent-selector 671 | settings: 672 | foreground: *PINK 673 | 674 | - name: CSS ID 675 | scope: 676 | - entity.other.attribute-name.id 677 | settings: 678 | foreground: *YELLOW 679 | fontStyle: italic 680 | 681 | - name: HTML/CSS attribute names 682 | scope: 683 | - entity.other.attribute-name 684 | settings: 685 | foreground: *GREEN 686 | fontStyle: italic 687 | 688 | - name: Tag inline source 689 | scope: 690 | - meta.tag.inline source 691 | settings: 692 | foreground: *YELLOW 693 | 694 | # ============================================================================= 695 | # Functions/Methods 696 | # ============================================================================= 697 | 698 | - name: Function names 699 | scope: 700 | - entity.name.function 701 | - meta.function-call.generic 702 | - meta.function-call.object 703 | - meta.function-call.php 704 | - meta.function-call.static 705 | - meta.method-call.java meta.method 706 | - meta.method.groovy 707 | - support.function.any-method.lua 708 | - keyword.operator.function.infix 709 | settings: 710 | foreground: *GREEN 711 | 712 | - name: Function parameters 713 | scope: 714 | - entity.name.variable.parameter 715 | - meta.at-rule.function variable # Sass function params 716 | - meta.at-rule.mixin variable # Sass mixin params 717 | - meta.function.arguments variable.other.php 718 | - meta.selectionset.graphql meta.arguments.graphql variable.arguments.graphql 719 | - variable.parameter 720 | settings: 721 | fontStyle: italic 722 | foreground: *ORANGE 723 | 724 | - name: Decorators 725 | scope: 726 | - meta.decorator variable.other.readwrite 727 | - meta.decorator variable.other.property 728 | settings: 729 | foreground: *GREEN 730 | fontStyle: italic 731 | 732 | - name: Decorator Objects 733 | scope: 734 | - meta.decorator variable.other.object 735 | settings: 736 | foreground: *GREEN 737 | 738 | # ============================================================================= 739 | # Keywords 740 | # ============================================================================= 741 | 742 | - name: Keywords 743 | scope: 744 | - keyword 745 | - punctuation.definition.keyword 746 | settings: 747 | foreground: *PINK 748 | 749 | - name: Keyword "new" 750 | scope: 751 | - keyword.control.new 752 | - keyword.operator.new 753 | settings: 754 | fontStyle: bold 755 | 756 | - name: Generic selectors (CSS/SCSS/Less/Stylus) 757 | scope: 758 | - meta.selector 759 | settings: 760 | foreground: *PINK 761 | 762 | # ============================================================================= 763 | # Language Built-ins 764 | # ============================================================================= 765 | 766 | - name: Language Built-ins 767 | scope: 768 | - support 769 | settings: 770 | fontStyle: italic 771 | foreground: *CYAN 772 | 773 | - name: Built-in magic functions and constants 774 | scope: 775 | - support.function.magic 776 | - support.variable 777 | - variable.other.predefined 778 | settings: 779 | fontStyle: regular 780 | foreground: *PURPLE 781 | 782 | - name: Built-in functions / properties 783 | scope: 784 | - support.function 785 | - support.type.property-name 786 | settings: 787 | fontStyle: regular 788 | 789 | # ============================================================================= 790 | # Punctuation 791 | # ============================================================================= 792 | 793 | - name: Separators (key/value, namespace, inheritance, pointer, hash, slice, etc) 794 | scope: 795 | - constant.other.symbol.hashkey punctuation.definition.constant.ruby 796 | - entity.other.attribute-name.placeholder punctuation # Sass placeholder `%` symbols 797 | - entity.other.attribute-name.pseudo-class punctuation 798 | - entity.other.attribute-name.pseudo-element punctuation 799 | - meta.group.double.toml 800 | - meta.group.toml 801 | - meta.object-binding-pattern-variable punctuation.destructuring 802 | - punctuation.colon.graphql 803 | - punctuation.definition.block.scalar.folded.yaml 804 | - punctuation.definition.block.scalar.literal.yaml 805 | - punctuation.definition.block.sequence.item.yaml 806 | - punctuation.definition.entity.other.inherited-class 807 | - punctuation.function.swift 808 | - punctuation.separator.dictionary.key-value 809 | - punctuation.separator.hash 810 | - punctuation.separator.inheritance 811 | - punctuation.separator.key-value 812 | - punctuation.separator.key-value.mapping.yaml 813 | - punctuation.separator.namespace 814 | - punctuation.separator.pointer-access 815 | - punctuation.separator.slice 816 | - string.unquoted.heredoc punctuation.definition.string 817 | - support.other.chomping-indicator.yaml 818 | - punctuation.separator.annotation 819 | settings: 820 | foreground: *PINK 821 | 822 | - name: Brackets, braces, parens, etc. 823 | scope: 824 | - keyword.operator.other.powershell # Commas 825 | - keyword.other.statement-separator.powershell 826 | - meta.brace.round 827 | - meta.function-call punctuation 828 | - punctuation.definition.arguments.begin 829 | - punctuation.definition.arguments.end 830 | - punctuation.definition.entity.begin 831 | - punctuation.definition.entity.end 832 | - punctuation.definition.tag.cs # HTML tags in comments 833 | - punctuation.definition.type.begin 834 | - punctuation.definition.type.end 835 | - punctuation.section.scope.begin 836 | - punctuation.section.scope.end 837 | - storage.type.generic.java 838 | - string.template meta.brace 839 | - string.template punctuation.accessor 840 | settings: 841 | foreground: *FG 842 | 843 | - name: Variable interpolation operators 844 | scope: 845 | - meta.string-contents.quoted.double punctuation.definition.variable 846 | - punctuation.definition.interpolation.begin 847 | - punctuation.definition.interpolation.end 848 | - punctuation.definition.template-expression.begin 849 | - punctuation.definition.template-expression.end 850 | - punctuation.section.embedded.begin 851 | - punctuation.section.embedded.coffee 852 | - punctuation.section.embedded.end 853 | - punctuation.section.embedded.end source.php # PHP edge case 854 | - punctuation.section.embedded.end source.ruby # Issue with ruby's tmLanguage 855 | - punctuation.definition.variable.makefile 856 | settings: 857 | foreground: *PINK 858 | 859 | # ============================================================================= 860 | # Serializable / Config Langages 861 | # ============================================================================= 862 | 863 | - name: Keys (serializable languages) 864 | scope: 865 | - entity.name.function.target.makefile 866 | - entity.name.section.toml 867 | - entity.name.tag.yaml 868 | - variable.other.key.toml 869 | settings: 870 | foreground: *CYAN 871 | 872 | - name: Dates / timestamps (serializable languages) 873 | scope: 874 | - constant.other.date 875 | - constant.other.timestamp 876 | settings: 877 | foreground: *ORANGE 878 | 879 | - name: YAML aliases 880 | scope: 881 | - variable.other.alias.yaml 882 | settings: 883 | fontStyle: italic underline 884 | foreground: *GREEN 885 | 886 | # ============================================================================= 887 | # Storage 888 | # ============================================================================= 889 | 890 | - name: Storage 891 | scope: 892 | - storage 893 | - meta.implementation storage.type.objc 894 | - meta.interface-or-protocol storage.type.objc 895 | - source.groovy storage.type.def 896 | settings: 897 | fontStyle: regular 898 | foreground: *PINK 899 | 900 | - name: Types 901 | scope: 902 | - entity.name.type 903 | - keyword.primitive-datatypes.swift 904 | - keyword.type.cs 905 | - meta.protocol-list.objc 906 | - meta.return-type.objc 907 | - source.go storage.type 908 | - source.groovy storage.type 909 | - source.java storage.type 910 | - source.powershell entity.other.attribute-name 911 | - storage.class.std.rust 912 | - storage.type.attribute.swift 913 | - storage.type.c 914 | - storage.type.core.rust 915 | - storage.type.cs 916 | - storage.type.groovy 917 | - storage.type.objc 918 | - storage.type.php 919 | - storage.type.haskell 920 | - storage.type.ocaml 921 | settings: 922 | fontStyle: italic 923 | foreground: *CYAN 924 | 925 | - name: Generics, templates, and mapped type declarations 926 | scope: 927 | - entity.name.type.type-parameter 928 | - meta.indexer.mappedtype.declaration entity.name.type # Mapped type declarations 929 | - meta.type.parameters entity.name.type # Generic type declarations 930 | settings: 931 | foreground: *ORANGE 932 | 933 | - name: Modifiers 934 | scope: 935 | - storage.modifier 936 | settings: 937 | foreground: *PINK 938 | 939 | # ============================================================================= 940 | # RegExp 941 | # ============================================================================= 942 | 943 | - name: RegExp string 944 | scope: 945 | - string.regexp 946 | - constant.other.character-class.set.regexp 947 | - constant.character.escape.backslash.regexp 948 | settings: 949 | foreground: *YELLOW 950 | 951 | - name: Non-capture operators 952 | scope: 953 | # NOTE: The scope name is a misnomer. It is actually non-capture operators 954 | - punctuation.definition.group.capture.regexp 955 | settings: 956 | foreground: *PINK 957 | 958 | - name: RegExp start and end characters 959 | scope: 960 | - string.regexp punctuation.definition.string.begin 961 | - string.regexp punctuation.definition.string.end 962 | settings: 963 | foreground: *RED 964 | 965 | - name: Character group 966 | scope: 967 | - punctuation.definition.character-class.regexp 968 | settings: 969 | foreground: *CYAN 970 | 971 | - name: Capture groups 972 | scope: 973 | - punctuation.definition.group.regexp 974 | settings: 975 | foreground: *ORANGE 976 | 977 | - name: Assertion operators 978 | scope: 979 | - punctuation.definition.group.assertion.regexp 980 | - keyword.operator.negation.regexp 981 | settings: 982 | foreground: *RED 983 | 984 | - name: Positive lookaheads 985 | scope: 986 | - meta.assertion.look-ahead.regexp 987 | settings: 988 | foreground: *GREEN 989 | 990 | 991 | # ============================================================================= 992 | # Strings 993 | # ============================================================================= 994 | 995 | - name: Strings 996 | scope: 997 | - string 998 | settings: 999 | foreground: *YELLOW 1000 | 1001 | - name: String quotes (temporary vscode fix) 1002 | scope: 1003 | # NOTE: This is a temporary fix for VSCode expand selection. 1004 | # See (https://github.com/Microsoft/vscode/issues/4795) 1005 | - punctuation.definition.string.begin 1006 | - punctuation.definition.string.end 1007 | settings: 1008 | foreground: *TEMP_QUOTES 1009 | 1010 | - name: Property quotes (temporary vscode fix) 1011 | scope: 1012 | # NOTE: Same as above 1013 | - punctuation.support.type.property-name.begin 1014 | - punctuation.support.type.property-name.end 1015 | settings: 1016 | foreground: *TEMP_PROPERTY_QUOTES 1017 | 1018 | - name: Docstrings 1019 | scope: 1020 | - string.quoted.docstring.multi 1021 | - string.quoted.docstring.multi.python punctuation.definition.string.begin 1022 | - string.quoted.docstring.multi.python punctuation.definition.string.end 1023 | - string.quoted.docstring.multi.python constant.character.escape 1024 | settings: 1025 | foreground: *COMMENT 1026 | 1027 | # ============================================================================= 1028 | # Variables 1029 | # ============================================================================= 1030 | 1031 | - name: Variables and object properties 1032 | scope: 1033 | - variable 1034 | - constant.other.key.perl # Perl edge case 1035 | - support.variable.property # Object properties 1036 | - variable.other.constant.js # Fix incorrect highlighting of pseudo-constants in js, jsx 1037 | - variable.other.constant.ts # Fixes incorrect highlighting of pseudo-constants in ts 1038 | - variable.other.constant.tsx # Fixes incorrect highlighting of pseudo-constants in tsx 1039 | settings: 1040 | foreground: *FG 1041 | 1042 | - name: Destructuring / aliasing reference name (LHS) 1043 | scope: 1044 | - meta.import variable.other.readwrite # Module import aliasing (real name) 1045 | - meta.object-binding-pattern-variable variable.object.property # Object destructuring property 1046 | - meta.variable.assignment.destructured.object.coffee variable # Object destructuring property (coffeescript) 1047 | settings: 1048 | fontStyle: italic 1049 | foreground: *ORANGE 1050 | 1051 | - name: Destructuring / aliasing variable name (RHS) 1052 | scope: 1053 | - meta.import variable.other.readwrite.alias # Module import aliasing (alias name) 1054 | - meta.export variable.other.readwrite.alias # Module import aliasing (alias name) 1055 | - meta.variable.assignment.destructured.object.coffee variable variable # Object destructuring variable (coffeescript) 1056 | settings: 1057 | fontStyle: normal 1058 | foreground: *FG 1059 | 1060 | # ============================================================================= 1061 | # Language Extensions / Edge Cases 1062 | # ============================================================================= 1063 | 1064 | # GraphQL 1065 | # ======= 1066 | - name: GraphQL keys 1067 | scope: 1068 | - meta.selectionset.graphql variable 1069 | settings: 1070 | foreground: *YELLOW 1071 | 1072 | - name: GraphQL function arguments 1073 | scope: 1074 | - meta.selectionset.graphql meta.arguments variable 1075 | settings: 1076 | foreground: *FG 1077 | 1078 | - name: GraphQL fragment name (definition) 1079 | scope: 1080 | - entity.name.fragment.graphql 1081 | - variable.fragment.graphql 1082 | settings: 1083 | foreground: *CYAN 1084 | 1085 | # Edge Cases 1086 | # ========== 1087 | - name: Edge cases (foreground color resets) 1088 | scope: 1089 | - constant.other.symbol.hashkey.ruby # Ruby hash keys 1090 | - keyword.operator.dereference.java # Java dot access 1091 | - keyword.operator.navigation.groovy # groovy dot access 1092 | - meta.scope.for-loop.shell punctuation.definition.string.begin 1093 | - meta.scope.for-loop.shell punctuation.definition.string.end 1094 | - meta.scope.for-loop.shell string 1095 | - storage.modifier.import # Java / Groovy imports 1096 | - punctuation.section.embedded.begin.tsx 1097 | - punctuation.section.embedded.end.tsx 1098 | - punctuation.section.embedded.begin.jsx 1099 | - punctuation.section.embedded.end.jsx 1100 | - punctuation.separator.list.comma.css # Commas separating selectors in CSS 1101 | - constant.language.empty-list.haskell 1102 | settings: 1103 | foreground: *FG 1104 | 1105 | # This is set to conform to the standard of coloring langage constants purple. 1106 | # In this case, this colors "$?", "$@", "$*", "$1", etc.. 1107 | - name: Shell variables prefixed with "$" (edge case) 1108 | scope: 1109 | - source.shell variable.other 1110 | settings: 1111 | foreground: *PURPLE 1112 | 1113 | - name: Powershell constants mistakenly scoped to `support`, rather than `constant` (edge) 1114 | scope: 1115 | - support.constant 1116 | settings: 1117 | fontStyle: normal 1118 | foreground: *PURPLE 1119 | 1120 | - name: Makefile prerequisite names 1121 | scope: 1122 | - meta.scope.prerequisites.makefile 1123 | settings: 1124 | foreground: *YELLOW 1125 | 1126 | - name: SCSS attibute selector strings 1127 | scope: 1128 | - meta.attribute-selector.scss 1129 | settings: 1130 | foreground: *YELLOW 1131 | 1132 | - name: SCSS attribute selector brackets 1133 | scope: 1134 | - punctuation.definition.attribute-selector.end.bracket.square.scss 1135 | - punctuation.definition.attribute-selector.begin.bracket.square.scss 1136 | settings: 1137 | foreground: *FG 1138 | 1139 | - name: Haskell Pragmas 1140 | scope: 1141 | - meta.preprocessor.haskell 1142 | settings: 1143 | foreground: *COMMENT 1144 | --------------------------------------------------------------------------------