├── .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 |
8 |
9 |
10 | Dark theme for Visual Studio Code
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | Install •
21 | Team •
22 | License
23 |
24 |
25 |
26 |
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 | | [](https://github.com/diego3g) | [](https://github.com/lukemorales) | [](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 |
--------------------------------------------------------------------------------