├── .gitignore ├── .prettierignore ├── images ├── icon.png └── screenshot.png ├── .husky └── pre-commit ├── .gitattributes ├── .vscodeignore ├── demo ├── json.json ├── svg.svg ├── sql.sql ├── toml.toml ├── yaml.yml ├── cpp.cpp ├── bash.sh ├── html.html ├── css.css ├── react.jsx ├── react.js ├── python.py ├── markdown.md ├── react.tsx ├── graphql.graphql ├── sass.scss ├── javascript.js └── typescript.ts ├── .github └── workflows │ └── nodejs.yml ├── .vscode └── launch.json ├── LICENSE ├── package.json ├── CHANGELOG.md ├── README.md └── themes └── Atomize-color-theme.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | *.vsix 3 | *.log 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | /.vscode 2 | /node_modules 3 | package-lock.json 4 | -------------------------------------------------------------------------------- /images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emroussel/atomize/HEAD/images/icon.png -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx lint-staged 5 | -------------------------------------------------------------------------------- /images/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emroussel/atomize/HEAD/images/screenshot.png -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set default behavior to automatically normalize line endings. 2 | * text=auto 3 | 4 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .github/** 2 | .vscode/** 3 | .vscode-test/** 4 | .gitignore 5 | vsc-extension-quickstart.md 6 | *.log 7 | .DS_Store 8 | demo 9 | -------------------------------------------------------------------------------- /demo/json.json: -------------------------------------------------------------------------------- 1 | { 2 | "string": "string", 3 | "number": 3, 4 | "float": 3.1415926535, 5 | "boolean": true, 6 | "null": null, 7 | "object": { 8 | "key": "value", 9 | "url": "https://github.com/emroussel/atomize" 10 | }, 11 | "array": ["1", "2", "3"] 12 | } 13 | -------------------------------------------------------------------------------- /demo/svg.svg: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /.github/workflows/nodejs.yml: -------------------------------------------------------------------------------- 1 | name: Node.js CI 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | branches: 9 | - "**" 10 | 11 | jobs: 12 | lint: 13 | runs-on: ubuntu-latest 14 | 15 | strategy: 16 | matrix: 17 | node-version: [16.x] 18 | 19 | steps: 20 | - uses: actions/checkout@v2 21 | - name: Use Node.js ${{ matrix.node-version }} 22 | uses: actions/setup-node@v1 23 | with: 24 | node-version: ${{ matrix.node-version }} 25 | - run: npm install 26 | - run: npm run lint 27 | env: 28 | CI: true 29 | -------------------------------------------------------------------------------- /demo/sql.sql: -------------------------------------------------------------------------------- 1 | -- SQL comment 2 | /* Other SQL comment */ 3 | 4 | CREATE DATABASE db; 5 | 6 | create table `table`( 7 | some_int int not null, 8 | some_bigint bigint default 0, 9 | some_string varchar(100), 10 | some_date date default getdate(), 11 | some_boolean boolean, 12 | constraint some_pk primary key (some_int) 13 | ); 14 | 15 | select * from db.table_name as t where t.id = 1 or t.name = "name"; 16 | 17 | select a, b, c, d, e, f, g from table_name where (a + b - c) * d / e % f = g; 18 | 19 | select table_name.some_name 20 | from table_name 21 | left join other_table on other_table.table_id = table_name.id 22 | group by table_name.id; 23 | -------------------------------------------------------------------------------- /.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": "Extension", 10 | "type": "extensionHost", 11 | "request": "launch", 12 | "runtimeExecutable": "${execPath}", 13 | "args": [ 14 | "--extensionDevelopmentPath=${workspaceFolder}" 15 | ] 16 | } 17 | ] 18 | } -------------------------------------------------------------------------------- /demo/toml.toml: -------------------------------------------------------------------------------- 1 | string = "string" 2 | stringSingleQuote = 'string' 3 | number = 1 4 | float = 3.1415926535 5 | boolean = true 6 | date = 1979-05-27T07:32:00-08:00 7 | scientificNotation = 1e+12 8 | multiLineString = ''' 9 | String with 10 | multiple lines 11 | ''' 12 | 13 | [table] 14 | key = "value" 15 | url = "https://github.com/emroussel/atomize" 16 | 17 | [table.with.dots] 18 | key = "value" 19 | 20 | array = ["1", "2", "3"] 21 | 22 | # This is a comment 23 | [[array-of-tables]] 24 | key = "value" 25 | 26 | [[other-array-of-tables]] 27 | key = "value" 28 | 29 | [other-array-of-tables.table] 30 | key = "value" 31 | 32 | [[other-array-of-tables.tables]] 33 | key = "value" 34 | -------------------------------------------------------------------------------- /demo/yaml.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # This is a comment 3 | string: "string" 4 | stringWithoutQuote: string 5 | number: 123 6 | float: 3.1415926535 7 | scientificNotation: 1e+12 8 | nan: .NAN 9 | boolean: true 10 | booleanAsOn: on 11 | empty: null 12 | list: 13 | - something 14 | - 1 15 | - something else 16 | singleLineList: [1, 2, 3, "string"] 17 | object: 18 | property: "" 19 | singleLineObject: { property: "" } 20 | "string/as/key": value 21 | key1: > 22 | long string 23 | on multiple 24 | lines 25 | key2: >- 26 | long string 27 | on multiple 28 | lines 29 | key3: >+ 30 | long string 31 | on multiple 32 | lines 33 | key4: | 34 | long string 35 | on multiple 36 | lines 37 | key5: |- 38 | long string 39 | on multiple 40 | lines 41 | key6: |+ 42 | long string 43 | on multiple 44 | lines 45 | -------------------------------------------------------------------------------- /demo/cpp.cpp: -------------------------------------------------------------------------------- 1 | // Comment 2 | /* Comment again */ 3 | 4 | #include "some_file" 5 | 6 | using namespace std; 7 | 8 | class Line { 9 | public: 10 | void setLength( double len ); 11 | double getLength( void ); 12 | Line(double len); 13 | 14 | private: 15 | double length; 16 | }; 17 | 18 | Line::Line( double len) { 19 | cout << "Object is being created, length = " << len << endl; 20 | length = len; 21 | } 22 | void Line::setLength( double len ) { 23 | length = len; 24 | } 25 | double Line::getLength( void ) { 26 | return length; 27 | } 28 | 29 | int main() 30 | { 31 | std::string s0 ("Initial string"); 32 | printf("log") 33 | return 0; 34 | } 35 | 36 | std::string do_something ( std::string inval ) 37 | { 38 | std::string return_val; 39 | return return_val; 40 | } 41 | -------------------------------------------------------------------------------- /demo/bash.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | someFunction () { 6 | echo "param: $1" 7 | } 8 | 9 | someFunction "a param" 10 | 11 | PS3='Select option: ' 12 | options=("1" "2") 13 | select opt in "${options[@]}" 14 | do 15 | case $opt in 16 | "1") 17 | OPTION="one" 18 | break 19 | ;; 20 | "2") 21 | OPTION="two" 22 | break 23 | ;; 24 | *) echo "invalid option $REPLY";; 25 | esac 26 | done 27 | 28 | while true; do 29 | read -p "Enter your name: " NAME 30 | 31 | if [[ -z "${NAME// }" ]] 32 | then 33 | echo "Error: please enter a non-empty name" 34 | elif [[ $NAME =~ ^[a-z] ]] 35 | then 36 | echo "Error: name should start with an uppercase letter" 37 | else 38 | break; 39 | fi 40 | done 41 | 42 | SOME_DIR=src/some_dir 43 | 44 | mkdir -p "$SOME_DIR" 45 | 46 | cat > "${SOME_DIR}/somefile.txt" << EOL 47 | I am a file 48 | EOL 49 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Emmanuel Roussel 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 | -------------------------------------------------------------------------------- /demo/html.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |{count}
16 | 19 |{count}
51 | 54 |{count}
16 | 19 |{count}
51 | 54 |{count}
20 | 23 |{count}
54 | 57 |
8 |
9 | To get the icons in the screenshot above and an experience closer to Atom, check out my [Atom Icons theme](https://github.com/emroussel/atom-icons).
10 |
11 | **Note that if you want the same syntax highlighting as Atom One Dark, you will need to turn off semantic highlighting in your VS Code settings:**
12 |
13 | ```json
14 | "editor.semanticHighlighting.enabled": false
15 | ```
16 |
17 | ## Contribution
18 |
19 | I have mostly used this theme with JavaScript and other web technologies.
20 |
21 | If you'd like me to add support for other languages, or notice a bug/discrepancy with Atom's One Dark theme, feel free to open an issue or pull request on this repo.
22 |
23 | When contributing changes, make sure that there is an example of those changes in a file in `/demo`. Files in that folder are used for manually testing syntax highlighting changes. It's not meant to be functional code (although it should be syntaxically correct) but instead to showcase different code patterns of languages supported by this theme. To make sure changes don't break existing highlighting, open and glance at these files in VS Code.
24 |
25 | ## Motivation
26 |
27 | I've always loved the UI and UX of Atom, but prefer the speed and reliability of VS Code. After looking for a while, I couldn't find any VS Code theme that accurately replicated Atom One Dark's interface and syntax highlighting, so I made this one.
28 |
29 | ## Next steps
30 |
31 | Here are some settings I use to make VS Code more minimalistic, so that I can focus on what's important. It also makes the experience more similar to Atom.
32 |
33 | ```json
34 | {
35 | "breadcrumbs.enabled": false,
36 | "editor.cursorBlinking": "blink",
37 | "editor.folding": false,
38 | "editor.hideCursorInOverviewRuler": true,
39 | "editor.minimap.enabled": false,
40 | "editor.occurrencesHighlight": false,
41 | "editor.renderIndentGuides": false,
42 | "editor.roundedSelection": false,
43 | "editor.selectionHighlight": false,
44 | "editor.scrollBeyondLastLine": false,
45 | "explorer.decorations.colors": false,
46 | "explorer.openEditors.visible": 0,
47 | "window.zoomLevel": 0,
48 | "workbench.activityBar.visible": false,
49 | "workbench.editor.showIcons": false,
50 | "workbench.startupEditor": "none",
51 | "workbench.tree.renderIndentGuides": "none"
52 | }
53 | ```
54 |
55 | **Note:** This will hide the activity bar, so you will need to memorize a few shortcuts (they will be different if you changed the defaults):
56 |
57 | - Show explorer: ⇧+ ⌘ + E
58 | - Show search: ⇧+ ⌘ + F
59 | - Show extensions: ⇧+ ⌘ + X
60 |
61 | I also use [Subtle Match Brackets](https://marketplace.visualstudio.com/items?itemName=rafamel.subtle-brackets) instead of the default bracket matcher to get a better experience:
62 |
63 | ```json
64 | {
65 | "editor.matchBrackets": "never",
66 | "subtleBrackets.style": {
67 | "borderWidth": "1px",
68 | "borderColor": "#528BFF"
69 | }
70 | }
71 | ```
72 |
73 | And if you would like keyword highlighting in comments, I use [TODO Highlight](https://marketplace.visualstudio.com/items?itemName=wayou.vscode-todo-highlight) with these settings to get Atom's colors:
74 |
75 | ```json
76 | {
77 | "todohighlight.keywords": [
78 | {
79 | "text": "TODO:",
80 | "color": "#C678DD",
81 | "backgroundColor": "transparent"
82 | },
83 | {
84 | "text": "NOTE:",
85 | "color": "#C678DD",
86 | "backgroundColor": "transparent"
87 | },
88 | {
89 | "text": "FIXME:",
90 | "color": "#C678DD",
91 | "backgroundColor": "transparent"
92 | }
93 | ]
94 | }
95 | ```
96 |
97 | ## Credits
98 |
99 | This theme is heavily inspired from Atom's [One Dark Syntax theme](https://github.com/atom/one-dark-syntax).
100 |
101 | ## License
102 |
103 | MIT
104 |
--------------------------------------------------------------------------------
/themes/Atomize-color-theme.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Atomize",
3 | "type": "dark",
4 | "colors": {
5 | // Activity bar
6 | "activityBar.background": "#21252B",
7 | "activityBar.border": "#181A1F",
8 | "activityBar.dropBorder": "#D6D9DF",
9 | "activityBar.foreground": "#D6D9DF",
10 | "activityBarBadge.background": "#4D78CC",
11 | "activityBarBadge.foreground": "#FFFFFF",
12 |
13 | // Badge
14 | "badge.background": "#4D78CC",
15 | "badge.foreground": "#FFFFFF",
16 |
17 | // Base colors
18 | "errorForeground": "#FF6347",
19 | "focusBorder": "#5387F5",
20 | "foreground": "#ABB2BF",
21 | "selection.background": "#9DA5B4",
22 | "widget.shadow": "#181A1FFF",
23 |
24 | // Button
25 | "button.background": "#4D78CC",
26 | "button.foreground": "#FFFFFF",
27 | "button.hoverBackground": "#6187D2",
28 |
29 | // Debug exception widget
30 | "debugExceptionWidget.background": "#252830",
31 | "debugExceptionWidget.border": "#181A1F",
32 |
33 | // Dropdown
34 | "dropdown.background": "#1E2127",
35 | "dropdown.listBackground": "#1E2127",
36 | "dropdown.border": "#181A1F",
37 | "dropdown.foreground": "#D7DAE0",
38 |
39 | // Editor
40 | "editor.background": "#282C34",
41 | "editor.findMatchBackground": "#314166",
42 | "editor.findMatchHighlightBackground": "#518FFF36",
43 | "editor.findMatchBorder": "#518FFF",
44 | "editor.findMatchHighlightBorder": "#FFFFFF00",
45 | "editor.findRangeHighlightBackground": "#518FFF36",
46 | "editor.findRangeHighlightBorder": "#FFFFFF00",
47 | "editor.foreground": "#ABB2BF",
48 | "editor.hoverHighlightBackground": "#3A3F4BA6",
49 | "editor.inactiveSelectionBackground": "#3E4452",
50 | "editor.lineHighlightBackground": "#99BBFF0A",
51 | "editor.lineHighlightBorder": "#FFFFFF00",
52 | "editor.rangeHighlightBackground": "#FFFFFF00",
53 | "editor.selectionBackground": "#4B5365A6",
54 | "editor.selectionHighlightBackground": "#4B5365A6",
55 | "editor.wordHighlightBackground": "#3E4452",
56 | "editor.wordHighlightStrongBackground": "#518FFF36",
57 | "editorBracketHighlight.foreground1": "#ABB2BF",
58 | "editorBracketHighlight.foreground2": "#B556BD",
59 | "editorBracketHighlight.foreground3": "#4082DD",
60 | "editorBracketHighlight.foreground4": "#739E61",
61 | "editorBracketHighlight.foreground5": "#BE5046",
62 | "editorBracketHighlight.foreground6": "#C6A753",
63 | "editorBracketHighlight.unexpectedBracket.foreground": "#FF6347",
64 | "editorBracketMatch.background": "#282C34",
65 | "editorBracketMatch.border": "#518FFF",
66 | "editorCodeLens.foreground": "#9DA5B4",
67 | "editorCursor.foreground": "#528BFF",
68 | "editorError.foreground": "#FF6347",
69 | "editorGroup.border": "#181A1F",
70 | "editorGroup.dropBackground": "#4B4B4B4D",
71 | "editorGroup.emptyBackground": "#282C34",
72 | "editorGroupHeader.noTabsBackground": "#21252B",
73 | "editorGroupHeader.tabsBackground": "#21252B",
74 | "editorGroupHeader.tabsBorder": "#181A1F",
75 | "editorGutter.modifiedBackground": "#E0C285",
76 | "editorGutter.addedBackground": "#43D08A",
77 | "editorGutter.deletedBackground": "#FF6347",
78 | "editorHoverWidget.background": "#252830",
79 | "editorHoverWidget.border": "#181A1F",
80 | "editorIndentGuide.background": "#333840",
81 | "editorIndentGuide.activeBackground": "#333840",
82 | "editorLineNumber.foreground": "#4B5365",
83 | "editorLineNumber.activeForeground": "#777D88",
84 | "editorMarkerNavigation.background": "#21252B",
85 | "editorMarkerNavigationError.background": "#FF6347",
86 | "editorOverviewRuler.addedForeground": "#43D08A88",
87 | "editorOverviewRuler.bracketMatchForeground": "#FFFFFF00",
88 | "editorOverviewRuler.border": "#FFFFFF00",
89 | "editorOverviewRuler.deletedForeground": "#FF634788",
90 | "editorOverviewRuler.errorForeground": "#FF6347",
91 | "editorOverviewRuler.findMatchForeground": "#6B727E",
92 | "editorOverviewRuler.infoForeground": "#FFFFFF00",
93 | "editorOverviewRuler.modifiedForeground": "#E0C28588",
94 | "editorOverviewRuler.rangeHighlightForeground": "#FFFFFF00",
95 | "editorOverviewRuler.selectionHighlightForeground": "#6B727E",
96 | "editorOverviewRuler.warningForeground": "#E0C285",
97 | "editorOverviewRuler.wordHighlightForeground": "#FFFFFF00",
98 | "editorOverviewRuler.wordHighlightStrongForeground": "#FFFFFF00",
99 | "editorRuler.foreground": "#383D45",
100 | "editorSuggestWidget.background": "#252830",
101 | "editorSuggestWidget.border": "#181A1F",
102 | "editorSuggestWidget.foreground": "#9DA5B4",
103 | "editorSuggestWidget.highlightForeground": "#D8D9DB",
104 | "editorSuggestWidget.selectedBackground": "#3A3F4B",
105 | "editorWarning.foreground": "#E0C285",
106 | "editorWhitespace.foreground": "#3C4047",
107 | "editorWidget.background": "#21252B",
108 | "editorWidget.border": "#373D48",
109 |
110 | // Extension button
111 | "extensionButton.prominentBackground": "#4D78CC",
112 | "extensionButton.prominentForeground": "#FFFFFF",
113 | "extensionButton.prominentHoverBackground": "#6187D2",
114 |
115 | // Diff editor
116 | "diffEditor.insertedTextBackground": "#43D08A22",
117 | "diffEditor.removedTextBackground": "#FF634722",
118 |
119 | // Git
120 | "gitDecoration.ignoredResourceForeground": "#9DA5B499",
121 | "gitDecoration.addedResourceForeground": "#43D08A",
122 | "gitDecoration.modifiedResourceForeground": "#E0C285",
123 | "gitDecoration.deletedResourceForeground": "#FF6347",
124 | "gitlens.trailingLineForegroundColor": "#5C6370",
125 |
126 | // Inputs
127 | "input.background": "#1B1D23BF",
128 | "input.border": "#181A1F",
129 | "input.foreground": "#D7DAE0",
130 | "input.placeholderForeground": "#6B727E",
131 | "inputOption.activeBorder": "#5387F5",
132 | "inputValidation.errorBackground": "#312426",
133 | "inputValidation.errorBorder": "#FF6347",
134 | "inputValidation.errorForeground": "#D7DAE0",
135 | "inputValidation.infoBackground": "#21252B",
136 | "inputValidation.infoBorder": "#5387F5",
137 | "inputValidation.infoForeground": "#D7DAE0",
138 | "inputValidation.warningBackground": "#21252B",
139 | "inputValidation.warningBorder": "#E0C285",
140 | "inputValidation.warningForeground": "#D7DAE0",
141 |
142 | // Lists
143 | "list.activeSelectionBackground": "#4D78CC",
144 | "list.activeSelectionForeground": "#FFFFFF",
145 | "list.dropBackground": "#2F333D",
146 | "list.errorForeground": "#FF6347",
147 | "list.focusBackground": "#3A3F4B",
148 | "quickInputList.focusBackground": "#3A3F4B",
149 | "list.focusForeground": "#D7DAE0",
150 | "list.highlightForeground": "#739CF5",
151 | "list.hoverBackground": "#2F333D",
152 | "list.hoverForeground": "#9DA5B4",
153 | "list.inactiveSelectionBackground": "#3A3F4B",
154 | "list.inactiveSelectionForeground": "#D7DAE0",
155 | "listFilterWidget.background": "#282C34",
156 | "listFilterWidget.outline": "#181A1F",
157 | "listFilterWidget.noMatchesOutline": "#FF6347",
158 |
159 | // Notifications
160 | "notificationCenter.border": "#181A1F",
161 | "notificationCenterHeader.background": "#21252B",
162 | "notificationCenterHeader.foreground": "#D7DAE0",
163 | "notificationToast.border": "#181A1F",
164 | "notifications.background": "#21252B",
165 | "notifications.border": "#181A1F",
166 |
167 | // Panel
168 | "panel.background": "#21252B",
169 | "panel.border": "#181A1F",
170 | "panel.dropBorder": "#4B4B4B4D",
171 | "panelTitle.activeBorder": "#5387F5",
172 | "panelTitle.activeForeground": "#D7DAE0",
173 | "panelTitle.inactiveForeground": "#6B727E",
174 |
175 | // Peek view
176 | "peekView.border": "#181A1F",
177 | "peekViewEditor.background": "#282C34",
178 | "peekViewEditor.matchHighlightBackground": "#518FFF36",
179 | "peekViewEditorGutter.background": "#282C34",
180 | "peekViewResult.background": "#21252B",
181 | "peekViewResult.fileForeground": "#BDC0C7",
182 | "peekViewResult.lineForeground": "#BDC0C7",
183 | "peekViewResult.matchHighlightBackground": "#41537C",
184 | "peekViewResult.selectionBackground": "#4D78CC",
185 | "peekViewResult.selectionForeground": "#FFFFFF",
186 | "peekViewTitle.background": "#21252B",
187 | "peekViewTitleDescription.foreground": "#A0A8B9",
188 | "peekViewTitleLabel.foreground": "#D7DAE0",
189 |
190 | // Quick picker (Quick Open)
191 | "pickerGroup.border": "#3B4048",
192 | "pickerGroup.foreground": "#9DA5B4",
193 |
194 | // Progress bar
195 | "progressBar.background": "#4D78CC",
196 |
197 | // Settings editor
198 | "settings.checkboxBackground": "#1E2127",
199 | "settings.checkboxBorder": "#181A1F",
200 | "settings.dropdownBackground": "#1E2127",
201 | "settings.dropdownBorder": "#181A1F",
202 | "settings.dropdownForeground": "#D7DAE0",
203 | "settings.headerForeground": "#D7DAE0",
204 | "settings.modifiedItemIndicator": "#E0C285",
205 | "settings.numberInputBackground": "#1E2127",
206 | "settings.numberInputBorder": "#181A1F",
207 | "settings.numberInputForeground": "#D7DAE0",
208 | "settings.textInputBackground": "#1E2127",
209 | "settings.textInputBorder": "#181A1F",
210 | "settings.textInputForeground": "#D7DAE0",
211 |
212 | // Scrollbar
213 | "scrollbar.shadow": "#FFFFFF00",
214 | "scrollbarSlider.activeBackground": "#4C5366",
215 | "scrollbarSlider.background": "#4C536688",
216 | "scrollbarSlider.hoverBackground": "#4C536688",
217 |
218 | // Side bar
219 | "sideBar.background": "#21252B",
220 | "sideBar.foreground": "#9DA5B4",
221 | "sideBar.border": "#181A1F",
222 | "sideBarTitle.foreground": "#D7DAE0",
223 | "sideBarSectionHeader.background": "#333842",
224 | "sideBarSectionHeader.foreground": "#D7DAE0",
225 |
226 | // Status bar
227 | "statusBar.background": "#21252B",
228 | "statusBar.foreground": "#9DA5B4",
229 | "statusBar.border": "#181A1F",
230 | "statusBar.debuggingBackground": "#FF634788",
231 | "statusBar.debuggingForeground": "#FFFFFF",
232 | "statusBar.debuggingBorder": "#181A1F",
233 | "statusBar.noFolderForeground": "#9DA5B4",
234 | "statusBar.noFolderBackground": "#21252B",
235 | "statusBar.noFolderBorder": "#181A1F",
236 | "statusBarItem.activeBackground": "#2F333D",
237 | "statusBarItem.hoverBackground": "#2F333D",
238 | "statusBarItem.prominentBackground": "#21252B",
239 | "statusBarItem.prominentHoverBackground": "#2F333D",
240 | "statusBarItem.remoteBackground": "#21252B",
241 | "statusBarItem.remoteForeground": "#9DA5B4",
242 |
243 | // Tabs
244 | "tab.activeBackground": "#282C34",
245 | "tab.activeBorder": "#282C34",
246 | "tab.activeForeground": "#D7DAE0",
247 | "tab.border": "#181A1F",
248 | "tab.inactiveBackground": "#21252B",
249 | "tab.inactiveForeground": "#6B727E",
250 | "tab.unfocusedActiveBorder": "#282C34",
251 | "tab.unfocusedActiveForeground": "#D7DAE0",
252 | "tab.unfocusedInactiveForeground": "#6B727E",
253 |
254 | // Text
255 | "textBlockQuote.background": "#3A3F4BA6",
256 | "textBlockQuote.border": "#6B727E",
257 | "textCodeBlock.background": "#32373F",
258 | "textLink.activeForeground": "#769FEF",
259 | "textLink.foreground": "#6494ED",
260 | "textPreformat.foreground": "#D7DAE0",
261 |
262 | // Title bar (macOS only)
263 | "titleBar.activeBackground": "#21252B",
264 | "titleBar.activeForeground": "#D7DAE0",
265 | "titleBar.inactiveBackground": "#21252B",
266 | "titleBar.inactiveForeground": "#696F7A",
267 | "titleBar.border": "#181A1F"
268 | },
269 | "tokenColors": [
270 | // General
271 | {
272 | "name": "Comment",
273 | "scope": ["comment", "punctuation.definition.comment"],
274 | "settings": {
275 | "fontStyle": "italic",
276 | "foreground": "#5C6370"
277 | }
278 | },
279 | {
280 | "name": "Keyword",
281 | "scope": [
282 | "keyword",
283 | "storage",
284 | "variable.language.super",
285 | "variable.language.this",
286 | "variable.language.special"
287 | ],
288 | "settings": {
289 | "foreground": "#C678DD"
290 | }
291 | },
292 | {
293 | "name": "String",
294 | "scope": ["string", "punctuation.definition.string"],
295 | "settings": {
296 | "foreground": "#98C379"
297 | }
298 | },
299 | {
300 | "name": "Constant",
301 | "scope": [
302 | "constant",
303 | "keyword.other.unit",
304 | "variable.other.constant",
305 | "variable.other.enummember"
306 | ],
307 | "settings": {
308 | "foreground": "#D19A66"
309 | }
310 | },
311 | {
312 | "name": "Function",
313 | "scope": [
314 | "entity.name.function",
315 | "support.function",
316 | "punctuation.definition.decorator",
317 | "punctuation.decorator",
318 | "meta.function-call.generic"
319 | ],
320 | "settings": {
321 | "foreground": "#61AFEF"
322 | }
323 | },
324 | {
325 | "name": "Class",
326 | "scope": [
327 | "entity.name.type",
328 | "entity.other.inherited-class",
329 | "support.class"
330 | ],
331 | "settings": {
332 | "foreground": "#E5C07B"
333 | }
334 | },
335 | {
336 | "name": "Type",
337 | "scope": [
338 | "meta.type.annotation",
339 | "meta.type.parameters",
340 | "support.type.primitive",
341 | "support.type.builtin",
342 | "support.type.exception"
343 | ],
344 | "settings": {
345 | "foreground": "#E5C07B"
346 | }
347 | },
348 | {
349 | "name": "Operator",
350 | "scope": [
351 | "punctuation.accessor",
352 | "keyword.operator.logical",
353 | "keyword.operator.comparison",
354 | "keyword.operator.increment",
355 | "keyword.operator.decrement",
356 | "keyword.operator.assignment",
357 | "keyword.operator.relational",
358 | "keyword.operator.ternary",
359 | "keyword.operator.arithmetic",
360 | "keyword.operator.rest",
361 | "keyword.operator.spread",
362 | "keyword.operator.type",
363 | "keyword.operator.optional",
364 | "keyword.operator.combinator",
365 | "keyword.operator.pattern",
366 | "keyword.operator.or",
367 | "keyword.operator.quantifier",
368 | "keyword.operator.bitwise"
369 | ],
370 | "settings": {
371 | "foreground": "#56B6C2"
372 | }
373 | },
374 | {
375 | "name": "Ponctuation",
376 | "scope": [
377 | "punctuation",
378 | "keyword.operator.type.annotation",
379 | "meta.brace"
380 | ],
381 | "settings": {
382 | "foreground": "#ABB2BF"
383 | }
384 | },
385 | {
386 | "name": "Variable",
387 | "scope": ["variable", "entity.name", "support.variable"],
388 | "settings": {
389 | "foreground": "#E06C75"
390 | }
391 | },
392 | {
393 | "name": "Object key",
394 | "scope": ["meta.object-literal.key"],
395 | "settings": {
396 | "foreground": "#98C379"
397 | }
398 | },
399 |
400 | // C++
401 | {
402 | "name": "C++ Keywords",
403 | "scope": [
404 | "punctuation.definition.directive.cpp",
405 | "keyword.other.using.directive.cpp"
406 | ],
407 | "settings": {
408 | "foreground": "#C678DD"
409 | }
410 | },
411 | {
412 | "name": "C++ Scopes",
413 | "scope": [
414 | "entity.name.scope-resolution.parameter.cpp",
415 | "entity.name.scope-resolution.cpp",
416 | "entity.name.scope-resolution.function.call.cpp",
417 | "entity.name.scope-resolution.template.call.cpp",
418 | "entity.name.scope-resolution.function.definition.cpp"
419 | ],
420 | "settings": {
421 | "foreground": "#E5C07B"
422 | }
423 | },
424 |
425 | // CSS/SASS
426 | {
427 | "name": "CSS/SASS keyword",
428 | "scope": [
429 | "punctuation.definition.keyword.css",
430 | "punctuation.definition.keyword.scss",
431 | "keyword.operator.logical.and.media.css",
432 | "keyword.operator.logical.and.media.scss",
433 | "keyword.operator.logical.scss"
434 | ],
435 | "settings": {
436 | "foreground": "#C678DD"
437 | }
438 | },
439 | {
440 | "name": "CSS/SASS constant",
441 | "scope": [
442 | "support.constant.property-value.css",
443 | "support.constant.vendored.property-value.css",
444 | "support.constant.color.w3c-standard-color-name.css",
445 | "support.constant.font-name.css",
446 | "punctuation.definition.constant.css",
447 | "entity.other.attribute-name.css",
448 | "entity.other.attribute-name.attribute.scss"
449 | ],
450 | "settings": {
451 | "foreground": "#D19A66"
452 | }
453 | },
454 | {
455 | "name": "CSS/SASS operator",
456 | "scope": ["keyword.operator.css", "keyword.operator.scss"],
457 | "settings": {
458 | "foreground": "#56B6C2"
459 | }
460 | },
461 | {
462 | "name": "CSS/SASS id + class",
463 | "scope": [
464 | "entity.other.attribute-name.class.css",
465 | "entity.other.attribute-name.id.css"
466 | ],
467 | "settings": {
468 | "foreground": "#E06C75"
469 | }
470 | },
471 | {
472 | "name": "CSS/SASS pseudo",
473 | "scope": [
474 | "entity.other.attribute-name.pseudo-element.css",
475 | "entity.other.attribute-name.pseudo-class.css"
476 | ],
477 | "settings": {
478 | "foreground": "#E5C07B"
479 | }
480 | },
481 | {
482 | "name": "CSS/SASS variable",
483 | "scope": ["meta.property-value.css"],
484 | "settings": {
485 | "foreground": "#E06C75"
486 | }
487 | },
488 | {
489 | "name": "CSS/SASS key",
490 | "scope": [
491 | "support.type.map.key.scss",
492 | "entity.other.keyframe-offset.css",
493 | "meta.property-name.css",
494 | "entity.other.attribute-name.scss",
495 | "support.type.property-name.media.css"
496 | ],
497 | "settings": {
498 | "foreground": "#98C379"
499 | }
500 | },
501 | {
502 | "name": "CSS/SASS string",
503 | "scope": ["meta.attribute-selector.scss"],
504 | "settings": {
505 | "foreground": "#98C379"
506 | }
507 | },
508 | {
509 | "name": "CSS/SASS punctuation",
510 | "scope": ["variable.parameter.url.css", "variable.parameter.url.scss"],
511 | "settings": {
512 | "foreground": "#ABB2BF"
513 | }
514 | },
515 |
516 | // GraphQL
517 | {
518 | "name": "GraphQL comment",
519 | "scope": ["punctuation.whitespace.comment"],
520 | "settings": {
521 | "fontStyle": "italic",
522 | "foreground": "#5C6370"
523 | }
524 | },
525 | {
526 | "name": "GraphQL type",
527 | "scope": [
528 | "support.type.graphql",
529 | "support.type.location.graphql",
530 | "support.type.enum.graphql",
531 | "entity.scalar.graphql"
532 | ],
533 | "settings": {
534 | "foreground": "#E5C07B"
535 | }
536 | },
537 | {
538 | "name": "GraphQL operator",
539 | "scope": [
540 | "punctuation.or.graphql",
541 | "keyword.operator.nulltype.graphql",
542 | "punctuation.assignment.graphql"
543 | ],
544 | "settings": {
545 | "foreground": "#56B6C2"
546 | }
547 | },
548 |
549 | // HTML/XML
550 | {
551 | "name": "HTML/XML attribute",
552 | "scope": [
553 | "entity.other.attribute-name.html",
554 | "entity.other.attribute-name.localname.xml",
555 | "entity.other.attribute-name.namespace.xml"
556 | ],
557 | "settings": {
558 | "fontStyle": "italic",
559 | "foreground": "#D19A66"
560 | }
561 | },
562 |
563 | // JS/TS
564 | {
565 | "name": "JSX attribute",
566 | "scope": [
567 | "entity.other.attribute-name.js",
568 | "entity.other.attribute-name.tsx"
569 | ],
570 | "settings": {
571 | "fontStyle": "italic",
572 | "foreground": "#D19A66"
573 | }
574 | },
575 | {
576 | "name": "JS built-ins",
577 | "scope": [
578 | "support.constant.json.js",
579 | "support.constant.json.jsx",
580 | "support.constant.json.ts",
581 | "support.constant.json.tsx",
582 | "support.constant.math.js",
583 | "support.constant.math.jsx",
584 | "support.constant.math.ts",
585 | "support.constant.math.tsx"
586 | ],
587 | "settings": {
588 | "foreground": "#E5C07B"
589 | }
590 | },
591 | {
592 | "name": "JS modules",
593 | "scope": [
594 | "support.type.object.module.js",
595 | "support.type.object.module.jsx",
596 | "support.type.object.module.ts",
597 | "support.type.object.module.tsx"
598 | ],
599 | "settings": {
600 | "foreground": "#51B4C3"
601 | }
602 | },
603 | {
604 | "name": "JSX bracket",
605 | "scope": [
606 | "punctuation.section.embedded.begin.js",
607 | "punctuation.section.embedded.begin.tsx",
608 | "punctuation.section.embedded.end.js",
609 | "punctuation.section.embedded.end.tsx"
610 | ],
611 | "settings": {
612 | "foreground": "#BE5046"
613 | }
614 | },
615 | {
616 | "name": "JS constants",
617 | "scope": [
618 | "variable.other.constant.js",
619 | "variable.other.constant.jsx",
620 | "variable.other.constant.ts",
621 | "variable.other.constant.tsx"
622 | ],
623 | "settings": {
624 | "foreground": "#E06C75"
625 | }
626 | },
627 |
628 | // JSON
629 | {
630 | "name": "JSON key",
631 | "scope": [
632 | "string.json",
633 | "punctuation.support.type.property-name.begin.json",
634 | "punctuation.support.type.property-name.end.json"
635 | ],
636 | "settings": {
637 | "foreground": "#E06C75"
638 | }
639 | },
640 |
641 | // Markdown
642 | {
643 | "name": "Markdown heading",
644 | "scope": ["punctuation.definition.heading.markdown"],
645 | "settings": {
646 | "foreground": "#E06C75"
647 | }
648 | },
649 | {
650 | "name": "Markdown italic",
651 | "scope": [
652 | "markup.italic.markdown",
653 | "punctuation.definition.italic.markdown"
654 | ],
655 | "settings": {
656 | "fontStyle": "italic",
657 | "foreground": "#C678DD"
658 | }
659 | },
660 | {
661 | "name": "Markdown bold",
662 | "scope": ["markup.bold.markdown", "punctuation.definition.bold.markdown"],
663 | "settings": {
664 | "fontStyle": "bold",
665 | "foreground": "#D19A66"
666 | }
667 | },
668 | {
669 | "name": "Markdown string",
670 | "scope": [
671 | "punctuation.definition.raw.markdown",
672 | "markup.inline.raw.string.markdown",
673 | "punctuation.definition.markdown",
674 | "fenced_code.block.language.markdown"
675 | ],
676 | "settings": {
677 | "foreground": "#98C379"
678 | }
679 | },
680 | {
681 | "name": "Markdown list",
682 | "scope": ["punctuation.definition.list.begin.markdown"],
683 | "settings": {
684 | "foreground": "#E06C75"
685 | }
686 | },
687 | {
688 | "name": "Markdown blockquote",
689 | "scope": [
690 | "markup.quote.markdown",
691 | "punctuation.definition.quote.begin.markdown"
692 | ],
693 | "settings": {
694 | "fontStyle": "italic"
695 | }
696 | },
697 | {
698 | "name": "Markdown links",
699 | "scope": [
700 | "markup.underline.link.markdown",
701 | "markup.underline.link.image.markdown"
702 | ],
703 | "settings": {
704 | "foreground": "#56B6C2"
705 | }
706 | },
707 | {
708 | "name": "Markdown code block language",
709 | "scope": ["fenced_code.block.language.markdown"],
710 | "settings": {
711 | "fontStyle": "italic"
712 | }
713 | },
714 |
715 | // Python
716 | {
717 | "name": "Python operator",
718 | "scope": [
719 | "keyword.operator.python",
720 | "keyword.operator.unpacking.arguments.python",
721 | "punctuation.separator.period.python"
722 | ],
723 | "settings": {
724 | "foreground": "#56B6C2"
725 | }
726 | },
727 | {
728 | "name": "Python keyword",
729 | "scope": ["keyword.operator.logical.python"],
730 | "settings": {
731 | "foreground": "#C678DD"
732 | }
733 | },
734 | {
735 | "name": "Python type",
736 | "scope": ["support.type.python"],
737 | "settings": {
738 | "foreground": "#E5C07B"
739 | }
740 | },
741 | {
742 | "name": "Python source",
743 | "scope": ["source.python"],
744 | "settings": {
745 | "foreground": "#E06C75"
746 | }
747 | },
748 |
749 | // Regex
750 |
751 | // SQL
752 | {
753 | "name": "SQL names",
754 | "scope": [
755 | "constant.other.table-name.sql",
756 | "constant.other.database-name.sql"
757 | ],
758 | "settings": {
759 | "foreground": "#ABB2BF"
760 | }
761 | },
762 | {
763 | "name": "SQL math",
764 | "scope": ["keyword.operator.math.sql", "keyword.operator.star.sql"],
765 | "settings": {
766 | "foreground": "#56B6C2"
767 | }
768 | },
769 |
770 | // Toml
771 | {
772 | "name": "Toml key",
773 | "scope": [
774 | "keyword.key.toml",
775 | "entity.other.attribute-name.table.toml",
776 | "entity.other.attribute-name.table.array.toml"
777 | ],
778 | "settings": {
779 | "foreground": "#E06C75"
780 | }
781 | },
782 |
783 | // Yaml
784 | {
785 | "name": "Yaml string multi line",
786 | "scope": [
787 | "keyword.control.flow.block-scalar.folded.yaml",
788 | "keyword.control.flow.block-scalar.literal.yaml",
789 | "storage.modifier.chomping-indicator.yaml"
790 | ],
791 | "settings": {
792 | "foreground": "#56B6C2"
793 | }
794 | }
795 | ]
796 | }
797 |
--------------------------------------------------------------------------------