├── .vscode └── launch.json ├── .vscodeignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── images └── icon.png ├── package.json ├── preview.png └── themes └── snazzy-operator-color-theme.json /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that launches the extension inside a new window 2 | { 3 | "version": "0.1.0", 4 | "configurations": [ 5 | { 6 | "name": "Launch Extension", 7 | "type": "extensionHost", 8 | "request": "launch", 9 | "runtimeExecutable": "${execPath}", 10 | "args": ["--extensionDevelopmentPath=${workspaceRoot}" ] 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .gitignore 2 | .vscodeignore 3 | .DS_Store 4 | sample.jpg 5 | *.vsix 6 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | All notable changes to the "snazzy-operator" extension will be documented in this file. 3 | 4 | ## 1.1.2 5 | - Better consistency with title bar and activity bar 6 | - Update screenshot 7 | 8 | ## 1.1.0 9 | - Updated MacOS titlebar colour 10 | - Updated statusBar colours for different states 11 | 12 | ## 1.0.0 13 | - Initial release 14 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Aaron Thomas 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 | # VS Code Snazzy Operator 2 | 3 | [![](http://vsmarketplacebadge.apphb.com/version/aaronthomas.vscode-snazzy-operator.svg)](https://marketplace.visualstudio.com/items/aaronthomas.vscode-snazzy-operator) 4 | 5 | A VS Code theme based on [hyper-snazzy](https://github.com/sindresorhus/hyper-snazzy) and optimised for use with the [Operator Mono](https://www.typography.com/fonts/operator/overview/) font. 6 | 7 | ## Installation 8 | 9 | The theme is available on the [VS Marketplace](https://marketplace.visualstudio.com/items?itemName=aaronthomas.vscode-snazzy-operator) and can be installed in VS Code via Quick Open (⌘P) by running: 10 | 11 | ``` 12 | ext install vscode-snazzy-operator 13 | ``` 14 | 15 | Alternatively it can be found using the Extensions search feature (⇧⌘X). 16 | 17 | ## Screenshot 18 | ![snazzy-operator](https://raw.githubusercontent.com/aaronthomas/vscode-snazzy-operator/master/preview.png) 19 | 20 | ## Credits 21 | * [vscode-snazzy](https://github.com/alexanderbast/vscode-snazzy) 22 | * [hyper-snazzy](https://github.com/sindresorhus/hyper-snazzy) 23 | -------------------------------------------------------------------------------- /images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronthomas/vscode-snazzy-operator/abb460c2592862b4fea6d6cf7a53a077dbc5b15b/images/icon.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vscode-snazzy-operator", 3 | "displayName": "Snazzy Operator", 4 | "description": "Based on hyper-snazzy and optimised for Operator Mono", 5 | "version": "1.1.3", 6 | "publisher": "aaronthomas", 7 | "license": "MIT", 8 | "bugs": { 9 | "url": "https://github.com/aaronthomas/vscode-snazzy-operator/issues" 10 | }, 11 | "homepage": "https://github.com/aaronthomas/vscode-snazzy-operator", 12 | "repository": { 13 | "type": "git", 14 | "url": "https://github.com/aaronthomas/vscode-snazzy-operator" 15 | }, 16 | "engines": { 17 | "vscode": "^1.12.0" 18 | }, 19 | "categories": [ 20 | "Themes" 21 | ], 22 | "icon": "images/icon.png", 23 | "contributes": { 24 | "themes": [ 25 | { 26 | "label": "Snazzy Operator", 27 | "uiTheme": "vs-dark", 28 | "path": "./themes/snazzy-operator-color-theme.json" 29 | } 30 | ] 31 | }, 32 | "keywords": [ 33 | "theme", 34 | "snazzy", 35 | "operator", 36 | "operator mono", 37 | "snazzy theme" 38 | ] 39 | } 40 | -------------------------------------------------------------------------------- /preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronthomas/vscode-snazzy-operator/abb460c2592862b4fea6d6cf7a53a077dbc5b15b/preview.png -------------------------------------------------------------------------------- /themes/snazzy-operator-color-theme.json: -------------------------------------------------------------------------------- 1 | { 2 | "tokenColors": [ 3 | { 4 | "name": "Global settings", 5 | "settings": { 6 | "background": "#282a36", 7 | "foreground": "#eff0eb" 8 | } 9 | }, 10 | { 11 | "name": "Strong", 12 | "scope": "strong, markup.bold", 13 | "settings": { 14 | "fontStyle": "bold" 15 | } 16 | }, 17 | { 18 | "name": "Emphasis", 19 | "scope": "emphasis, markup.italic", 20 | "settings": { 21 | "fontStyle": "italic" 22 | } 23 | }, 24 | { 25 | "name": "Underline", 26 | "scope": "markup.underline", 27 | "settings": { 28 | "fontStyle": "underline" 29 | } 30 | }, 31 | { 32 | "name": "Comment", 33 | "scope": "comment, punctuation.definition.comment, string.quoted.docstring", 34 | "settings": { 35 | "foreground": "#616263", 36 | "fontStyle": "italic" 37 | } 38 | }, 39 | { 40 | "name": "Storage", 41 | "scope": "storage.type", 42 | "settings": { 43 | "foreground": "#f3f99d" 44 | } 45 | }, 46 | { 47 | "name": "Type", 48 | "scope": "storage.type.primitive, support.type, entity.name.type, keyword.type, keyword.other.unit", 49 | "settings": { 50 | "foreground": "#9aedfe" 51 | } 52 | }, 53 | { 54 | "name": "String", 55 | "scope": "string, meta.structure.dictionary.json string.quoted.double.json", 56 | "settings": { 57 | "foreground": "#5af78e" 58 | } 59 | }, 60 | { 61 | "name": "Boolean", 62 | "scope": "constant.language.boolean", 63 | "settings": { 64 | "foreground": "#5af78e" 65 | } 66 | }, 67 | { 68 | "name": "Number", 69 | "scope": "constant.numeric, support.constant", 70 | "settings": { 71 | "foreground": "#5af78e" 72 | } 73 | }, 74 | { 75 | "name": "Null", 76 | "scope": "constant.language.null", 77 | "settings": { 78 | "foreground": "#5af78e" 79 | } 80 | }, 81 | { 82 | "name": "Undefined", 83 | "scope": "constant.language.undefined", 84 | "settings": { 85 | "foreground": "#5af78e" 86 | } 87 | }, 88 | { 89 | "name": "Function definition", 90 | "scope": "meta.function entity.name.function", 91 | "settings": { 92 | "foreground": "#57c7ff" 93 | } 94 | }, 95 | { 96 | "name": "Function call", 97 | "scope": "entity.name.function, meta.function-call, support.function, keyword.other.special-method, meta.require, variable.language.super, keyword.other.get, keyword.other.set", 98 | "settings": { 99 | "foreground": "#57c7ff" 100 | } 101 | }, 102 | { 103 | "name": "Identifier", 104 | "scope": "variable, support.variable, support.class, support.constant, meta.definition.variable entity.name.function", 105 | "settings": { 106 | "foreground": "#eff0eb" 107 | } 108 | }, 109 | { 110 | "name": "Constants", 111 | "scope": "variable.other.constant.property", 112 | "settings": { 113 | "foreground": "#f3f99d" 114 | } 115 | }, 116 | { 117 | "name": "Class", 118 | "scope": "entity.name.type.class", 119 | "settings": { 120 | "foreground": "#ff5c57" 121 | } 122 | }, 123 | { 124 | "name": "Inherited class", 125 | "scope": "entity.other.inherited-class entity.name.type.module", 126 | "settings": { 127 | "foreground": "#ff5c57", 128 | "fontStyle": "italic" 129 | } 130 | }, 131 | { 132 | "name": "Class variable", 133 | "scope": "variable.object.property", 134 | "settings": { 135 | "foreground": "#f3f99d" 136 | } 137 | }, 138 | { 139 | "name": "Function argument", 140 | "scope": "variable.parameter", 141 | "settings": { 142 | "fontStyle": "italic" 143 | } 144 | }, 145 | { 146 | "name": "Class method", 147 | "scope": "meta.definition.method entity.name.function", 148 | "settings": { 149 | "foreground": "#f3f99d" 150 | } 151 | }, 152 | { 153 | "name": "Keyword", 154 | "scope": "keyword, modifier, storage.modifier, support.type.object, constant.language, variable.language.this, variable.language.special.self", 155 | "settings": { 156 | "foreground": "#ff6ac1" 157 | } 158 | }, 159 | { 160 | "name": "Storage Modifier [e.g. class, extends, static] (JS", 161 | "scope": "storage.modifier, storage.type.class.js, variable.language.this, variable.language.this.js", 162 | "settings": { 163 | "fontStyle": "italic" 164 | } 165 | }, 166 | { 167 | "name": "Modules", 168 | "scope": "support.module, support.node", 169 | "settings": { 170 | "foreground": "#ff5c57", 171 | "fontStyle": "italic" 172 | } 173 | }, 174 | { 175 | "name": "Template expression", 176 | "scope": "template.expression.begin, template.expression.end", 177 | "settings": { 178 | "foreground": "#ff6ac1" 179 | } 180 | }, 181 | { 182 | "name": "Exception", 183 | "scope": "support.type.exception", 184 | "settings": { 185 | "foreground": "#f3f99d" 186 | } 187 | }, 188 | { 189 | "name": "Diff insertion", 190 | "scope": "markup.inserted.diff, meta.diff.header.to-file", 191 | "settings": { 192 | "foreground": "#5af78e", 193 | "background": "#616263" 194 | } 195 | }, 196 | { 197 | "name": "Diff deletion", 198 | "scope": "markup.deleted.diff, meta.diff.header.from-file", 199 | "settings": { 200 | "foreground": "#ff5c57", 201 | "background": "#616263" 202 | } 203 | }, 204 | { 205 | "name": "C# class", 206 | "scope": "source.cs meta.class.identifier storage.type", 207 | "settings": { 208 | "foreground": "#ff5c57" 209 | } 210 | }, 211 | { 212 | "name": "C# class method", 213 | "scope": "source.cs meta.method.identifier entity.name.function", 214 | "settings": { 215 | "foreground": "#f3f99d" 216 | } 217 | }, 218 | { 219 | "name": "C# method call", 220 | "scope": "source.cs meta.method-call meta.method, source.cs entity.name.function", 221 | "settings": { 222 | "foreground": "#57c7ff" 223 | } 224 | }, 225 | { 226 | "name": "C# type", 227 | "scope": "source.cs storage.type", 228 | "settings": { 229 | "foreground": "#f3f99d" 230 | } 231 | }, 232 | { 233 | "name": "C# return type", 234 | "scope": "source.cs meta.method.return-type", 235 | "settings": { 236 | "foreground": "#9aedfe" 237 | } 238 | }, 239 | { 240 | "name": "C# preprocessor", 241 | "scope": "source.cs meta.preprocessor", 242 | "settings": { 243 | "foreground": "#616263" 244 | } 245 | }, 246 | { 247 | "name": "C# namespace", 248 | "scope": "source.cs entity.name.type.namespace", 249 | "settings": { 250 | "foreground": "#eff0eb" 251 | } 252 | }, 253 | { 254 | "name": "CSS class", 255 | "scope": "entity.other.attribute-name.class", 256 | "settings": { 257 | "foreground": "#9aedfe" 258 | } 259 | }, 260 | { 261 | "name": "CSS id", 262 | "scope": "entity.other.attribute-name.id", 263 | "settings": { 264 | "foreground": "#9aedfe" 265 | } 266 | }, 267 | { 268 | "name": "CSS tag", 269 | "scope": "source.css entity.name.tag", 270 | "settings": { 271 | "foreground": "#f3f99d" 272 | } 273 | }, 274 | { 275 | "name": "CSS property", 276 | "scope": "source.css support.type.property-name", 277 | "settings": { 278 | "foreground": "#ff5c57" 279 | } 280 | }, 281 | { 282 | "name": "HTML tag outer", 283 | "scope": "meta.tag, punctuation.definition.tag", 284 | "settings": { 285 | "foreground": "#eff0eb" 286 | } 287 | }, 288 | { 289 | "name": "HTML tag inner", 290 | "scope": "entity.name.tag", 291 | "settings": { 292 | "foreground": "#ff5c57" 293 | } 294 | }, 295 | { 296 | "name": "HTML tag attribute", 297 | "scope": "entity.other.attribute-name", 298 | "settings": { 299 | "foreground": "#f3f99d", 300 | "fontStyle": "italic" 301 | } 302 | }, 303 | { 304 | "name": "HTML tag expression", 305 | "scope": "punctuation.section.embedded", 306 | "settings": { 307 | "foreground": "#ff5c57" 308 | } 309 | }, 310 | { 311 | "name": "INI property name", 312 | "scope": "keyword.other.definition.ini", 313 | "settings": { 314 | "foreground": "#ff5c57" 315 | } 316 | }, 317 | { 318 | "name": "INI section title", 319 | "scope": "entity.name.section.group-title.ini", 320 | "settings": { 321 | "foreground": "#57c7ff" 322 | } 323 | }, 324 | { 325 | "name": "Java package & import", 326 | "scope": "source.java storage.modifier.package, source.java storage.modifier.import", 327 | "settings": { 328 | "foreground": "#eff0eb" 329 | } 330 | }, 331 | { 332 | "name": "Java annotation", 333 | "scope": "source.java storage.type.annotation", 334 | "settings": { 335 | "foreground": "#ff5c57", 336 | "fontStyle": "italic" 337 | } 338 | }, 339 | { 340 | "name": "Java method call", 341 | "scope": "source.java meta.method-call meta.method", 342 | "settings": { 343 | "foreground": "#57c7ff" 344 | } 345 | }, 346 | { 347 | "name": "Java inner-class variable", 348 | "scope": "source.java meta.method-call meta.inner-class meta.method", 349 | "settings": { 350 | "foreground": "#eff0eb" 351 | } 352 | }, 353 | { 354 | "name": "Java inner-class method call", 355 | "scope": "source.java meta.method-call meta.inner-class meta.method meta.method-call meta.method", 356 | "settings": { 357 | "foreground": "#57c7ff" 358 | } 359 | }, 360 | { 361 | "name": "Java inner-class method", 362 | "scope": "source.java meta.definition.variable entity.name.function", 363 | "settings": { 364 | "foreground": "#57c7ff" 365 | } 366 | }, 367 | { 368 | "name": "Java null", 369 | "scope": "source.java constant.language", 370 | "settings": { 371 | "foreground": "#5af78e" 372 | } 373 | }, 374 | { 375 | "name": "Async", 376 | "scope": "source.js storage.modifier.async", 377 | "settings": { 378 | "foreground": "#ff6ac1" 379 | } 380 | }, 381 | { 382 | "name": "JSON key", 383 | "scope": "meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json", 384 | "settings": { 385 | "foreground": "#ff5c57" 386 | } 387 | }, 388 | { 389 | "name": "JSON constant", 390 | "scope": "constant.language.json", 391 | "settings": { 392 | "foreground": "#ff6ac1" 393 | } 394 | }, 395 | { 396 | "name": "Markdown heading", 397 | "scope": "markup.heading", 398 | "settings": { 399 | "foreground": "#57c7ff" 400 | } 401 | }, 402 | { 403 | "name": "Markdown link text", 404 | "scope": "text.html.markdown meta.link.inline, meta.link.reference, markup.underline.link.image", 405 | "settings": { 406 | "foreground": "#ff5c57" 407 | } 408 | }, 409 | { 410 | "name": "Markdown block quote", 411 | "scope": "text.html.markdown markup.quote", 412 | "settings": { 413 | "foreground": "#9aedfe" 414 | } 415 | }, 416 | { 417 | "name": "Markdown list item", 418 | "scope": "text.html.markdown beginning.punctuation.definition.list", 419 | "settings": { 420 | "foreground": "#f3f99d" 421 | } 422 | }, 423 | { 424 | "name": "Markdown code", 425 | "scope": "text.html.markdown markup.inline.raw", 426 | "settings": { 427 | "foreground": "#ff6ac1" 428 | } 429 | }, 430 | { 431 | "name": "Markdown italic", 432 | "scope": "markup.italic", 433 | "settings": { 434 | "foreground": "#ff5c57", 435 | "fontStyle": "italic" 436 | } 437 | }, 438 | { 439 | "name": "Markdown bold", 440 | "scope": "markup.bold", 441 | "settings": { 442 | "foreground": "#ff5c57", 443 | "fontStyle": "bold" 444 | } 445 | }, 446 | { 447 | "name": "Markdown bold italic", 448 | "scope": "markup.bold markup.italic, markup.italic markup.bold", 449 | "settings": { 450 | "foreground": "#ff5c57", 451 | "fontStyle": "italic bold" 452 | } 453 | }, 454 | { 455 | "name": "Python import *", 456 | "scope": "source.python keyword.operator.arithmetic", 457 | "settings": { 458 | "foreground": "#eff0eb" 459 | } 460 | }, 461 | { 462 | "name": "Python def", 463 | "scope": "source.python meta.function storage.type.function", 464 | "settings": { 465 | "foreground": "#ff6ac1" 466 | } 467 | }, 468 | { 469 | "name": "Python function arguments", 470 | "scope": "source.python meta.function-call.arguments", 471 | "settings": { 472 | "foreground": "#eff0eb" 473 | } 474 | }, 475 | { 476 | "name": "Python function decorators", 477 | "scope": "source.python meta.function entity.name.function.decorator", 478 | "settings": { 479 | "foreground": "#ff5c57" 480 | } 481 | }, 482 | { 483 | "name": "Python True & False & None", 484 | "scope": "source.python constant.language", 485 | "settings": { 486 | "foreground": "#5af78e" 487 | } 488 | }, 489 | { 490 | "name": "YAML key", 491 | "scope": "entity.name.tag.yaml", 492 | "settings": { 493 | "foreground": "#ff5c57" 494 | } 495 | } 496 | ], 497 | "colors": { 498 | "foreground": "#eff0eb", 499 | "editorLink.activeForeground": "#ff5c57", 500 | "editor.background": "#282a36", 501 | "editorCursor.foreground": "#97979b", 502 | "editor.findMatchHighlightBackground": "#54555e", 503 | "editor.findRangeHighlightBackground": "#54555e", 504 | "editor.foreground": "#eff0eb", 505 | "editor.hoverHighlightBackground": "#54555e", 506 | "editorIndentGuide.background": "#616263", 507 | "editor.lineHighlightBackground": "#2C2F3D", 508 | "editorLineNumber.foreground": "#616263", 509 | "editor.rangeHighlightBackground": "#54555e", 510 | "editor.selectionHighlightBackground": "#54555e", 511 | "editorWhitespace.foreground": "#616263", 512 | "editor.wordHighlightBackground": "#54555e", 513 | "editor.wordHighlightStrongBackground": "#54555e", 514 | "peekView.border": "#5af78e", 515 | "peekViewEditor.background": "#282a36", 516 | "list.activeSelectionBackground": "#54555e", 517 | "list.hoverBackground": "#54555e", 518 | "statusBar.background": "#2E313D", 519 | "statusBar.foreground": "#6C6E75", 520 | "statusBar.debuggingBackground": "#6C6E75", 521 | "statusBar.noFolderBackground": "#6C6E75", 522 | "terminal.ansiBlack": "#282a36", 523 | "terminal.ansiBlue": "#57c7ff", 524 | "terminal.ansiBrightBlack": "#282a36", 525 | "terminal.ansiBrightBlue": "#57c7ff", 526 | "terminal.ansiBrightCyan": "#9aedfe", 527 | "terminal.ansiBrightGreen": "#5af78e", 528 | "terminal.ansiBrightMagenta": "#ff6ac1", 529 | "terminal.ansiBrightRed": "#ff5c57", 530 | "terminal.ansiBrightWhite": "#eff0eb", 531 | "terminal.ansiBrightYellow": "#f3f99d", 532 | "terminal.ansiCyan": "#9aedfe", 533 | "terminal.ansiGreen": "#5af78e", 534 | "terminal.ansiMagenta": "#ff6ac1", 535 | "terminal.ansiRed": "#ff5c57", 536 | "terminal.ansiWhite": "#eff0eb", 537 | "terminal.ansiYellow": "#f3f99d", 538 | "activityBar.background": "#282a36", 539 | "sideBar.background": "#2C2F3D", 540 | "tab.inactiveBackground": "#2C2F3D", 541 | "tab.activeBackground": "#232631", 542 | "editorGroup.dropBackground": "#232631", 543 | "editorGroupHeader.tabsBackground": "#232631", 544 | "titleBar.activeBackground": "#282a36" 545 | } 546 | } 547 | --------------------------------------------------------------------------------