├── .gitignore ├── preview.png ├── .vscodeignore ├── .gitattributes ├── demo ├── css.css ├── elm.elm ├── yml.yml ├── pug.pug ├── json.json ├── html.html ├── python.py ├── clojurescript.cljs ├── issue-91.jsx ├── issue-91.tsx ├── react.js ├── clojure.clj ├── checkbox_with_label.test.js ├── vuedemo.vue ├── ruby.rb ├── statelessfunctionalreact.js ├── js.js ├── tsx.tsx ├── php.php ├── typescript.ts └── powershell.ps1 ├── CHANGELOG.md ├── .vscode └── launch.json ├── package.json ├── README.md ├── vsc-extension-quickstart.md └── themes └── ideal-color-theme.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | *.vsix 3 | -------------------------------------------------------------------------------- /preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karsany/vscode-ideal-theme/HEAD/preview.png -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .vscode-test/** 3 | .gitignore 4 | vsc-extension-quickstart.md 5 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set default behavior to automatically normalize line endings. 2 | * text=auto 3 | 4 | -------------------------------------------------------------------------------- /demo/css.css: -------------------------------------------------------------------------------- 1 | .someClass { 2 | font-family: serif; 3 | } 4 | 5 | #someID { 6 | background: yellow; 7 | } 8 | 9 | main { 10 | margin-top: 20px; 11 | } 12 | -------------------------------------------------------------------------------- /demo/elm.elm: -------------------------------------------------------------------------------- 1 | main : Program Never Model Msg 2 | main = 3 | program 4 | { init = init 5 | , view = view 6 | , update = update 7 | , subscriptions = subscriptions 8 | } -------------------------------------------------------------------------------- /demo/yml.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "6" 4 | install: 5 | - npm install 6 | script: 7 | - npm test 8 | after_script: 9 | - npm run coveralls 10 | notifications: 11 | email: 12 | on_success: never 13 | on_failure: always 14 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | All notable changes to the "idea-theme" extension will be documented in this file. 3 | 4 | Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file. 5 | 6 | ## [Unreleased] 7 | - Initial release 8 | -------------------------------------------------------------------------------- /demo/pug.pug: -------------------------------------------------------------------------------- 1 | 2 | html(lang="en") 3 | 4 | head 5 | meta(charset="UTF-8") 6 | meta(name="viewport", content="width=device-width, initial-scale=1.0") 7 | meta(http-equiv="X-UA-Compatible", content="ie=edge") 8 | title Document 9 | 10 | body 11 | h1 Pug 12 | -------------------------------------------------------------------------------- /demo/json.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "es6": true, 4 | "mocha": true, 5 | "node": true 6 | }, 7 | "extends": "eslint:recommended", 8 | "rules": { 9 | "indent": ["error", 2], 10 | "linebreak-style": ["error", "unix"], 11 | "quotes": ["error", "single"], 12 | "semi": ["error", "always"] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /demo/html.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Document 9 | 10 | 11 | 12 |
Tacos Tacos
13 | 14 |

Tacos tacos tacos

15 | 16 | 17 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /demo/python.py: -------------------------------------------------------------------------------- 1 | from collections import deque 2 | 3 | def topo(G, ind=None, Q=[1]): 4 | if ind == None: 5 | ind = [0] * (len(G) + 1) #this is a comment 6 | for u in G: 7 | for v in G[u]: 8 | ind[v] += 1 9 | Q = deque() 10 | for i in G: 11 | if ind[i] == 0: 12 | Q.append(i) 13 | if len(Q) == 0: 14 | return 15 | v = Q.popleft() 16 | print(v) 17 | for w in G[v]: 18 | ind[w] -= 1 19 | if ind[w] == 0: 20 | Q.append(w) 21 | topo(G, ind, Q) -------------------------------------------------------------------------------- /.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 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vscode-ideal-theme", 3 | "displayName": "IDEA like light Theme", 4 | "description": "", 5 | "version": "0.0.3", 6 | "publisher": "karsany", 7 | "preview": true, 8 | "repository": { 9 | "url": "https://github.com/karsany/vscode-ideal-theme" 10 | }, 11 | "engines": { 12 | "vscode": "^1.28.0" 13 | }, 14 | "categories": [ 15 | "Themes" 16 | ], 17 | "contributes": { 18 | "themes": [ 19 | { 20 | "label": "IDEA like light Theme", 21 | "uiTheme": "vs", 22 | "path": "./themes/ideal-color-theme.json" 23 | } 24 | ] 25 | } 26 | } -------------------------------------------------------------------------------- /demo/clojurescript.cljs: -------------------------------------------------------------------------------- 1 | (ns hello.world.clojurescript 2 | (:require [reagent.core :as r]) 3 | 4 | (def counter (r/atom 0)) 5 | (def text-component-style {:background-color :grey 6 | :border "1px solid black" 7 | :padding "5px"}) 8 | 9 | (defn counter-clicked [] 10 | (.log js/console "You clicked the counter component.") 11 | (swap! counter inc)) 12 | 13 | (defn text-counter [text] 14 | [:div {:on-click counter-clicked 15 | :style text-component-style}) 16 | (str text @counter]) 17 | 18 | (defn main-component [] 19 | [:div 20 | [:p {:style {:color :red}} "Hello world! Click the element below:"] 21 | [text-counter "Clicked: "]]) 22 | -------------------------------------------------------------------------------- /demo/issue-91.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import calculate from '../logic/calculate' 3 | import './App.css' 4 | import ButtonPanel from './ButtonPanel' 5 | import Display from './Display' 6 | 7 | class App extends React.Component { 8 | constructor(props) { 9 | super(props) 10 | this.state = { 11 | total: null 12 | } 13 | } 14 | 15 | handleClick = buttonName => { 16 | this.setState(calculate(this.state, buttonName)) 17 | } 18 | 19 | render() { 20 | return ( 21 |
22 | Tacos 23 | 24 | 25 |
26 | ) 27 | } 28 | } 29 | export default App 30 | -------------------------------------------------------------------------------- /demo/issue-91.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import calculate from '../logic/calculate' 3 | import './App.css' 4 | import ButtonPanel from './ButtonPanel' 5 | import Display from './Display' 6 | 7 | class App extends React.Component { 8 | constructor(props) { 9 | super(props) 10 | this.state = { 11 | total: null 12 | } 13 | } 14 | 15 | handleClick = buttonName => { 16 | this.setState(calculate(this.state, buttonName)) 17 | } 18 | 19 | render() { 20 | return ( 21 |
22 | Tacos 23 | 24 | 25 |
26 | ) 27 | } 28 | } 29 | export default App 30 | -------------------------------------------------------------------------------- /demo/react.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import calculate from '../logic/calculate' 3 | import './App.css' 4 | import ButtonPanel from './ButtonPanel' 5 | import Display from './Display' 6 | 7 | class App extends React.Component { 8 | constructor(props) { 9 | super(props) 10 | this.state = { 11 | total: null, 12 | next: null, 13 | operation: null 14 | } 15 | } 16 | 17 | handleClick = buttonName => { 18 | this.setState(calculate(this.state, buttonName)) 19 | } 20 | 21 | render() { 22 | return ( 23 |
24 | Tacos 25 | 26 | 27 |
28 | ) 29 | } 30 | } 31 | export default App 32 | -------------------------------------------------------------------------------- /demo/clojure.clj: -------------------------------------------------------------------------------- 1 | (ns hello.world.clojure) 2 | 3 | (defn sum [& numbers] 4 | (if (empty? numbers) 5 | 0 6 | (reduce + 0 numbers))) 7 | 8 | (defn print-name [{:keys [first last age]}] 9 | (println (str "Your name is " first " " last " and you are " age " years old."))) 10 | 11 | (defn set-age [person new-age] 12 | (assoc person :age new-age)) 13 | 14 | (defn hello-world [] 15 | (let [john {:first "John" :last "Smith" :age 65} 16 | jack {:first "Jack" :last "Road" :age 76} 17 | george {:first "George" :last "Way" :age 23} 18 | george-junior (assoc george :age 6) 19 | all-persons [john jack george george-junior]] 20 | 21 | (doseq [person all-persons] 22 | (print-name person)) 23 | 24 | (println (str "Total age is: " (apply sum (map :age all-persons)))))) 25 | 26 | (hello-world) 27 | -------------------------------------------------------------------------------- /demo/checkbox_with_label.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom' 3 | import * as TestUtils from 'react-dom/test-utils' 4 | import CheckboxWithLabel from '../CheckboxWithLabel' 5 | 6 | it('CheckboxWithLabel changes the text after click', () => { 7 | // Render a checkbox with label in the document 8 | const checkbox = TestUtils.renderIntoDocument( 9 | 10 | ) 11 | 12 | const checkboxNode = ReactDOM.findDOMNode(checkbox) 13 | 14 | // Verify that it's Off by default 15 | expect(checkboxNode.textContent).toEqual('Off') 16 | 17 | // Simulate a click and verify that it is now On 18 | TestUtils.Simulate.change( 19 | TestUtils.findRenderedDOMComponentWithTag(checkbox, 'input') 20 | ) 21 | expect(checkboxNode.textContent).toEqual('On') 22 | }) 23 | -------------------------------------------------------------------------------- /demo/vuedemo.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 29 | 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # IDEA like light Theme 2 | 3 | [![Version](https://vsmarketplacebadge.apphb.com/version/karsany.vscode-ideal-theme.svg)](https://marketplace.visualstudio.com/items?itemName=karsany.vscode-ideal-theme) 4 | [![Installs](https://vsmarketplacebadge.apphb.com/installs/karsany.vscode-ideal-theme.svg)](https://marketplace.visualstudio.com/items?itemName=karsany.vscode-ideal-theme) 5 | 6 | ## Preview 7 | 8 | ![Preview](preview.png) 9 | 10 | ## Installation 11 | 12 | 1. Launch Visual Studio Code 13 | 2. Choose __Extensions__ from menu 14 | 3. Search for `IDEA like light Theme` 15 | 4. Click __Install__ to install it 16 | 5. Click __Reload__ to reload the Code 17 | 6. From the menu bar click: Code > Preferences > Color Theme > __IDEA like light Theme__ 18 | 19 | ## Misc 20 | 21 | Thanks for the demo directory to [Night Owl Theme](https://github.com/sdras/night-owl-vscode-theme) 22 | 23 | **Enjoy!** 24 | -------------------------------------------------------------------------------- /demo/ruby.rb: -------------------------------------------------------------------------------- 1 | module ExampleModule 2 | class ExampleClass::ScopeResolution < NewScope::Operator 3 | 4 | def initialize(options) 5 | @@class_var = options[:class] 6 | @instance_var = options[:instance] 7 | end 8 | 9 | def method 10 | puts 'doing stuff' 11 | yield if block_given? 12 | other_method(:arg) 13 | end 14 | 15 | def self.class_method 16 | return "I am a class method!" 17 | end 18 | 19 | private 20 | 21 | def other_method(*args) 22 | puts 'doing other stuff #{42}' 23 | end 24 | 25 | def self.private 26 | [1, 2, 3].each do |item| 27 | puts item 28 | end 29 | end 30 | 31 | private_class_method :private 32 | end 33 | end 34 | 35 | ExampleModule::ExampleClass::ScopeResolution 36 | example_instance = ExampleModule::ExampleClass::ScopeResolution.new(:arg) 37 | 38 | example_instance.method(:arg) do 39 | puts 'yielding in block!' 40 | end -------------------------------------------------------------------------------- /demo/statelessfunctionalreact.js: -------------------------------------------------------------------------------- 1 | // I use this syntax when my component fits on one line 2 | const ListItem = props =>
  • {props.item.name}
  • 3 | 4 | // I use this when my component has no logic outside JSX 5 | const List = ({ items }) => ( 6 | 7 | ) 8 | 9 | // I use this when the component needs logic outside JSX. 10 | const Body = props => { 11 | let items = transformItems(props.rawItems) 12 | return ( 13 |
    14 |

    {props.header}

    15 | 16 |
    17 | ) 18 | } 19 | 20 | // This is equivalent to the last example 21 | function Page(props, context) { 22 | return ( 23 |
    24 | 25 |
    26 | ) 27 | } 28 | // propTypes and contextTypes are supported 29 | Page.propTypes = { 30 | rawItems: React.PropTypes.array.isRequired 31 | } 32 | -------------------------------------------------------------------------------- /demo/js.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | class Sale { 3 | constructor(price) { 4 | ;[this.decoratorsList, this.price] = [[], price] 5 | } 6 | 7 | decorate(decorator) { 8 | if (!Sale[decorator]) throw new Error(`decorator not exist: ${decorator}`) 9 | this.decoratorsList.push(Sale[decorator]) 10 | } 11 | 12 | getPrice() { 13 | for (let decorator of this.decoratorsList) { 14 | this.price = decorator(this.price) 15 | } 16 | return this.price.toFixed(2) 17 | } 18 | 19 | static quebec(price) { 20 | // this is a comment 21 | return price + price * 7.5 / 100 22 | } 23 | 24 | static fedtax(price) { 25 | return price + price * 5 / 100 26 | } 27 | } 28 | 29 | let sale = new Sale(100) 30 | sale.decorate('fedtax') 31 | sale.decorate('quebec') 32 | console.log(sale.getPrice()) //112.88 33 | 34 | getPrice() 35 | 36 | //deeply nested 37 | 38 | async function asyncCall() { 39 | var result = await resolveAfter2Seconds(); 40 | } 41 | 42 | for (let i=0; i <10; i++) { 43 | continue; 44 | } 45 | 46 | if (true) {} 47 | 48 | while (true) {} 49 | 50 | switch(2) { 51 | case 2: 52 | break; 53 | default: 54 | break; 55 | } -------------------------------------------------------------------------------- /demo/tsx.tsx: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, OnDestroy } from '@angular/core' 2 | import { Person, SearchService } from '../shared' 3 | import { ActivatedRoute } from '@angular/router' 4 | import { Subscription } from 'rxjs' 5 | 6 | @Component({ 7 | selector: 'app-search', 8 | templateUrl: './search.component.html', 9 | styleUrls: ['./search.component.css'] 10 | }) 11 | export class SearchComponent implements OnInit, OnDestroy { 12 | query: string 13 | searchResults: Array 14 | sub: Subscription 15 | 16 | constructor( 17 | private searchService: SearchService, 18 | private route: ActivatedRoute 19 | ) {} 20 | 21 | ngOnInit() { 22 | this.sub = this.route.params.subscribe(params => { 23 | if (params['term']) { 24 | this.query = decodeURIComponent(params['term']) 25 | this.search() 26 | } 27 | }) 28 | } 29 | 30 | search(): void { 31 | this.searchService.search(this.query).subscribe( 32 | (data: any) => { 33 | this.searchResults = data 34 | }, 35 | error => console.log(error) 36 | ) 37 | } 38 | 39 | ngOnDestroy() { 40 | if (this.sub) { 41 | this.sub.unsubscribe() 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /demo/php.php: -------------------------------------------------------------------------------- 1 | pdo = new PDO($GLOBALS['db_dsn'], $GLOBALS['db_username'], $GLOBALS['db_password']); 11 | $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 12 | $this->pdo->query("CREATE TABLE hello (what VARCHAR(50) NOT NULL)"); 13 | } 14 | public function tearDown() 15 | { 16 | $this->pdo->query("DROP TABLE hello"); 17 | } 18 | public function testHelloWorld() 19 | { 20 | $helloWorld = new HelloWorld($this->pdo); 21 | $this->assertEquals('Hello World', $helloWorld->hello()); 22 | } 23 | public function testHello() 24 | { 25 | $helloWorld = new HelloWorld($this->pdo); 26 | $this->assertEquals('Hello Bar', $helloWorld->hello('Bar')); 27 | } 28 | public function testWhat() 29 | { 30 | $helloWorld = new HelloWorld($this->pdo); 31 | $this->assertFalse($helloWorld->what()); 32 | $helloWorld->hello('Bar'); 33 | $this->assertEquals('Bar', $helloWorld->what()); 34 | } 35 | } 36 | ?> -------------------------------------------------------------------------------- /demo/typescript.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, OnDestroy } from '@angular/core' 2 | import { Person, SearchService } from '../shared' 3 | import { ActivatedRoute } from '@angular/router' 4 | import { Subscription } from 'rxjs' 5 | 6 | @Component({ 7 | selector: 'app-search', 8 | templateUrl: './search.component.html', 9 | styleUrls: ['./search.component.css'] 10 | }) 11 | export class SearchComponent implements OnInit, OnDestroy { 12 | query: string 13 | searchResults: Array 14 | sub: Subscription 15 | 16 | constructor( 17 | private searchService: SearchService, 18 | private route: ActivatedRoute 19 | ) {} 20 | 21 | ngOnInit() { 22 | this.sub = this.route.params.subscribe(params => { 23 | if (params['term']) { 24 | this.query = decodeURIComponent(params['term']) 25 | this.search() 26 | } 27 | }) 28 | } 29 | 30 | search(): void { 31 | this.searchService.search(this.query).subscribe( 32 | (data: any) => { 33 | this.searchResults = data 34 | }, 35 | error => console.log(error) 36 | ) 37 | } 38 | 39 | ngOnDestroy() { 40 | if (this.sub) { 41 | this.sub.unsubscribe() 42 | } 43 | } 44 | } 45 | 46 | async function asyncCall() { 47 | var result = await resolveAfter2Seconds(); 48 | } 49 | 50 | for (let i=0; i <10; i++) { 51 | continue; 52 | } 53 | 54 | if (true) {} 55 | 56 | while (true) {} 57 | 58 | switch(2) { 59 | case 2: 60 | break; 61 | default: 62 | break; 63 | } -------------------------------------------------------------------------------- /vsc-extension-quickstart.md: -------------------------------------------------------------------------------- 1 | # Welcome to your VS Code Extension 2 | 3 | ## What's in the folder 4 | * This folder contains all of the files necessary for your color theme extension. 5 | * `package.json` - this is the manifest file that defines the location of the theme file. 6 | and specifies the base theme of the theme. 7 | * `themes/Idea Theme-color-theme.json` - the color theme definition file. 8 | 9 | ## Get up and running straight away 10 | * Press `F5` to open a new window with your extension loaded. 11 | * Open `File > Preferences > Color Themes` and pick your color theme. 12 | * Open a file that has a language associated. The languages' configured grammar will tokenize the text and assign 'scopes' to the tokens. To examine these scopes, invoke the `Inspect TM Scopes` command from the Commmand Palette (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) . 13 | 14 | ## Make changes 15 | * You can relaunch the extension from the debug toolbar after making changes to the files listed above. 16 | * You can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes. 17 | * When editing workbench colors, it's easiest to test the colors in the settings under `workbench.colorCustomizations` and `workbench.tokenColorCustomizations`. When done, run the `Generate Color Theme From Current Settings` command to generate an updated content for the color theme definition file. 18 | 19 | ## Adopt your theme to Visual Studio Code 20 | * The token colorization is done based on standard TextMate themes. Colors are matched against one or more scopes. 21 | To learn more about scopes and how they're used, check out the [theme](https://code.visualstudio.com/docs/extensions/themes-snippets-colorizers#_adding-a-new-color-theme) documentation. 22 | 23 | ## Install your extension 24 | * To start using your extension with Visual Studio Code copy it into the `/.vscode/extensions` folder and restart Code. 25 | * To share your extension with the world, read on https://code.visualstudio.com/docs about publishing an extension. 26 | -------------------------------------------------------------------------------- /demo/powershell.ps1: -------------------------------------------------------------------------------- 1 | <# 2 | .SYNOPSIS 3 | Provisions a example powershell function 4 | .EXAMPLE 5 | PS C:\> .\powershell.ps1 -Argument1 "hola soy un texto" 6 | #> 7 | [CmdletBinding()] 8 | param( 9 | [Parameter(Mandatory = $true, HelpMessage = "This argument is required")] 10 | [String] 11 | $textParameter 12 | ) 13 | 14 | try { 15 | #almost every function is called like this: 16 | Write-Host "Initializing example function" 17 | Write-Host "The parameter is " $textParameter -ForegroundColor Red 18 | 19 | #this are variables 20 | $customArray = @( 21 | @{ 22 | Id = 1; 23 | Value = "I'm an option"; 24 | }, 25 | @{ 26 | Id = 2; 27 | Value = "Option No. 2"; 28 | } 29 | ) 30 | 31 | foreach ($option in $customArray) { 32 | Write-Host "Iterating options:" $option.Value 33 | } 34 | 35 | $collectionWithItems = New-Object System.Collections.ArrayList 36 | $temp = New-Object System.Object 37 | $temp | Add-Member -MemberType NoteProperty -Name "Title" -Value "Custom Object Title 1" 38 | $temp | Add-Member -MemberType NoteProperty -Name "Subject" -Value "Delegación del plan de acción [Folio_PlandeAccion]" 39 | $temp | Add-Member -MemberType NoteProperty -Name "Body" -Value "
    This s a note example, with lots of text
    40 |

     
    41 |
    It happens to be in html format, but is just text the property couldnt't know
    42 |

     
    43 |
    It's up for the one who uses me to render me correctly. Or not.
    " 44 | $collectionWithItems.Add($temp) | Out-Null 45 | Write-Host "My collection has" $collectionWithItems.Count "item(s)" -ForegroundColor Green 46 | 47 | #Calling some other scripts. Sometimes its nice to have a "master" script and call subscripts with other functions / actions 48 | .\otherscript.ps1 "Parameter ?" 49 | .\thisonewithoutparams.ps1 50 | 51 | #little bit of SharePoint *the original issue* :D 52 | $web = Get-SPWeb http://mysharepointsite 53 | $list = $web.Lists["ListName"] 54 | $query = New-Object Microsoft.SharePoint.SPQuery 55 | $query.Query= "CAMLQuery here" 56 | $query.ViewFields= "" 57 | $query.ViewFieldsOnly= $true 58 | $listitems = $list.GetItems($query); 59 | foreach($item in $listitems) { 60 | if($item -ne $null) { 61 | Write-Host "There is an elmeent in the list, id" $item.ID 62 | } 63 | } 64 | } 65 | catch { 66 | Write-Host -ForegroundColor Red "Exception Type: $($_.Exception.GetType().FullName)" 67 | Write-Host -ForegroundColor Red "Exception Message: $($_.Exception.Message)" 68 | } 69 | -------------------------------------------------------------------------------- /themes/ideal-color-theme.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "IDEA like light Theme", 3 | "type": "light", 4 | "colors": { 5 | "editor.background": "#ffffff", 6 | "editor.foreground": "#000000", 7 | "tab.inactiveBackground": "#d4d4d4", 8 | "tab.inactiveForeground": "#333333", 9 | "tab.activeBorder": "#c0c0c0", 10 | "tab.border": "#c0c0c0", 11 | "sideBar.background": "#ffffff", 12 | "sideBar.foreground": "#000000", 13 | "sideBar.border": "#c0c0c0", 14 | "sideBarSectionHeader.background": "#d4d4d4", 15 | "editorGutter.background": "#f0f0f0", 16 | "editorLineNumber.foreground": "#c1c1c1", 17 | "editor.lineHighlightBackground": "#fffae3", 18 | "editor.selectionHighlightBackground": "#F6EBBC", 19 | "activityBar.background": "#f2f2f2", 20 | "activityBar.foreground": "#000000", 21 | "activityBar.border": "#bcbcbc", 22 | "statusBar.background": "#f2f2f2", 23 | "statusBar.foreground": "#000000", 24 | "statusBar.border": "#c0c0c0" 25 | }, 26 | "tokenColors": [ 27 | { 28 | "settings": { 29 | "foreground": "#333333ff", 30 | "background": "#f5f5f5ff" 31 | } 32 | }, 33 | { 34 | "name": "Comments", 35 | "scope": [ 36 | "comment", 37 | "punctuation.definition.comment" 38 | ], 39 | "settings": { 40 | "fontStyle": "italic", 41 | "foreground": "#AAAAAA" 42 | } 43 | }, 44 | { 45 | "name": "Comments: Preprocessor", 46 | "scope": "comment.block.preprocessor", 47 | "settings": { 48 | "fontStyle": "", 49 | "foreground": "#AAAAAA" 50 | } 51 | }, 52 | { 53 | "name": "Comments: Documentation", 54 | "scope": [ 55 | "comment.documentation", 56 | "comment.block.documentation" 57 | ], 58 | "settings": { 59 | "foreground": "#448C27" 60 | } 61 | }, 62 | { 63 | "name": "Invalid - Deprecated", 64 | "scope": "invalid.deprecated", 65 | "settings": { 66 | "background": "#96000014" 67 | } 68 | }, 69 | { 70 | "name": "Invalid - Illegal", 71 | "scope": "invalid.illegal", 72 | "settings": { 73 | "background": "#96000014", 74 | "foreground": "#ff0000" 75 | } 76 | }, 77 | { 78 | "name": "Operators", 79 | "scope": "keyword.operator", 80 | "settings": { 81 | "foreground": "#777777" 82 | } 83 | }, 84 | { 85 | "name": "Keywords", 86 | "scope": [ 87 | "keyword", 88 | "storage" 89 | ], 90 | "settings": { 91 | "foreground": "#000088", 92 | "fontStyle": "bold" 93 | } 94 | }, 95 | { 96 | "name": "Types", 97 | "scope": [ 98 | "storage.type", 99 | "support.type" 100 | ], 101 | "settings": { 102 | "foreground": "#000000", 103 | "fontStyle": "" 104 | } 105 | }, 106 | { 107 | "name": "Language Constants", 108 | "scope": [ 109 | "constant.language", 110 | "support.constant", 111 | "variable.language" 112 | ], 113 | "settings": { 114 | "foreground": "#AB6526" 115 | } 116 | }, 117 | { 118 | "name": "Variables", 119 | "scope": [ 120 | "variable", 121 | "support.variable" 122 | ], 123 | "settings": { 124 | "foreground": "#880088", 125 | "fontStyle": "bold" 126 | } 127 | }, 128 | { 129 | "name": "Functions", 130 | "scope": [ 131 | "entity.name.function", 132 | "support.function" 133 | ], 134 | "settings": { 135 | "foreground": "#000000" 136 | } 137 | }, 138 | { 139 | "name": "Classes", 140 | "scope": [ 141 | "entity.name.type", 142 | "entity.other.inherited-class", 143 | "support.class" 144 | ], 145 | "settings": { 146 | "foreground": "#000000" 147 | } 148 | }, 149 | { 150 | "name": "Exceptions", 151 | "scope": "entity.name.exception", 152 | "settings": { 153 | "foreground": "#660000" 154 | } 155 | }, 156 | { 157 | "name": "Sections", 158 | "scope": "entity.name.section", 159 | "settings": { 160 | "fontStyle": "bold" 161 | } 162 | }, 163 | { 164 | "name": "Numbers, Characters", 165 | "scope": [ 166 | "constant.numeric", 167 | "constant.character", 168 | "constant" 169 | ], 170 | "settings": { 171 | "foreground": "#AB6526" 172 | } 173 | }, 174 | { 175 | "name": "Strings", 176 | "scope": "string", 177 | "settings": { 178 | "foreground": "#008800", 179 | "fontStyle": "bold" 180 | } 181 | }, 182 | { 183 | "name": "Strings: Escape Sequences", 184 | "scope": "constant.character.escape", 185 | "settings": { 186 | "foreground": "#777777" 187 | } 188 | }, 189 | { 190 | "name": "Strings: Regular Expressions", 191 | "scope": "string.regexp", 192 | "settings": { 193 | "foreground": "#4B83CD" 194 | } 195 | }, 196 | { 197 | "name": "Strings: Symbols", 198 | "scope": "constant.other.symbol", 199 | "settings": { 200 | "foreground": "#AB6526" 201 | } 202 | }, 203 | { 204 | "name": "Punctuation", 205 | "scope": "punctuation", 206 | "settings": { 207 | "foreground": "#777777" 208 | } 209 | }, 210 | { 211 | "name": "Embedded Source", 212 | "scope": [ 213 | "string source", 214 | "text source" 215 | ], 216 | "settings": { 217 | "foreground": "#000000" 218 | } 219 | }, 220 | { 221 | "name": "HTML: Doctype Declaration", 222 | "scope": [ 223 | "meta.tag.sgml.doctype", 224 | "meta.tag.sgml.doctype string", 225 | "meta.tag.sgml.doctype entity.name.tag", 226 | "meta.tag.sgml punctuation.definition.tag.html" 227 | ], 228 | "settings": { 229 | "foreground": "#AAAAAA" 230 | } 231 | }, 232 | { 233 | "name": "HTML: Tags", 234 | "scope": [ 235 | "meta.tag", 236 | "punctuation.definition.tag.html", 237 | "punctuation.definition.tag.begin.html", 238 | "punctuation.definition.tag.end.html" 239 | ], 240 | "settings": { 241 | "foreground": "#2E2A2E" 242 | } 243 | }, 244 | { 245 | "name": "HTML: Tag Names", 246 | "scope": "entity.name.tag", 247 | "settings": { 248 | "foreground": "#1C4C8F", 249 | "fontStyle": "bold", 250 | } 251 | }, 252 | { 253 | "name": "HTML: Attribute Names", 254 | "scope": [ 255 | "meta.tag entity.other.attribute-name", 256 | "entity.other.attribute-name.html" 257 | ], 258 | "settings": { 259 | // "fontStyle": "italic", 260 | "foreground": "#0058D7" 261 | } 262 | }, 263 | { 264 | "name": "HTML: Attribute Values", 265 | "scope": "string.quoted.double.html", 266 | "settings": { 267 | "fontStyle": "", 268 | } 269 | }, 270 | { 271 | "name": "HTML: Css styles in html tags", 272 | "scope": "source.css", 273 | "settings": { 274 | "fontStyle": "", 275 | } 276 | }, 277 | { 278 | "name": "HTML: Entities", 279 | "scope": [ 280 | "constant.character.entity", 281 | "punctuation.definition.entity" 282 | ], 283 | "settings": { 284 | "foreground": "#AB6526" 285 | } 286 | }, 287 | { 288 | "name": "CSS: Selectors", 289 | "scope": [ 290 | "meta.selector", 291 | "meta.selector entity", 292 | "meta.selector entity punctuation", 293 | "entity.name.tag.css" 294 | ], 295 | "settings": { 296 | "foreground": "#7A3E9D" 297 | } 298 | }, 299 | { 300 | "name": "CSS: Property Names", 301 | "scope": [ 302 | "meta.property-name", 303 | "support.type.property-name" 304 | ], 305 | "settings": { 306 | "foreground": "#AB6526" 307 | } 308 | }, 309 | { 310 | "name": "CSS: Property Values", 311 | "scope": [ 312 | "meta.property-value", 313 | "meta.property-value constant.other", 314 | "support.constant.property-value" 315 | ], 316 | "settings": { 317 | "foreground": "#448C27" 318 | } 319 | }, 320 | { 321 | "name": "CSS: Important Keyword", 322 | "scope": "keyword.other.important", 323 | "settings": { 324 | "fontStyle": "bold" 325 | } 326 | }, 327 | { 328 | "name": "Markup: Changed", 329 | "scope": "markup.changed", 330 | "settings": { 331 | "background": "#FFFFDD", 332 | "foreground": "#000000" 333 | } 334 | }, 335 | { 336 | "name": "Markup: Deletion", 337 | "scope": "markup.deleted", 338 | "settings": { 339 | "background": "#FFDDDD", 340 | "foreground": "#000000" 341 | } 342 | }, 343 | { 344 | "name": "Markup: Emphasis", 345 | "scope": "markup.italic", 346 | "settings": { 347 | "fontStyle": "italic" 348 | } 349 | }, 350 | { 351 | "name": "Markup: Error", 352 | "scope": "markup.error", 353 | "settings": { 354 | "background": "#96000014", 355 | "foreground": "#660000" 356 | } 357 | }, 358 | { 359 | "name": "Markup: Insertion", 360 | "scope": "markup.inserted", 361 | "settings": { 362 | "background": "#DDFFDD", 363 | "foreground": "#000000" 364 | } 365 | }, 366 | { 367 | "name": "Markup: Link", 368 | "scope": "meta.link", 369 | "settings": { 370 | "foreground": "#4B83CD" 371 | } 372 | }, 373 | { 374 | "name": "Markup: Output", 375 | "scope": [ 376 | "markup.output", 377 | "markup.raw" 378 | ], 379 | "settings": { 380 | "foreground": "#777777" 381 | } 382 | }, 383 | { 384 | "name": "Markup: Prompt", 385 | "scope": "markup.prompt", 386 | "settings": { 387 | "foreground": "#777777" 388 | } 389 | }, 390 | { 391 | "name": "Markup: Heading", 392 | "scope": "markup.heading", 393 | "settings": { 394 | "foreground": "#AA3731" 395 | } 396 | }, 397 | { 398 | "name": "Markup: Strong", 399 | "scope": "markup.bold", 400 | "settings": { 401 | "fontStyle": "bold" 402 | } 403 | }, 404 | { 405 | "name": "Markup: Traceback", 406 | "scope": "markup.traceback", 407 | "settings": { 408 | "foreground": "#660000" 409 | } 410 | }, 411 | { 412 | "name": "Markup: Underline", 413 | "scope": "markup.underline", 414 | "settings": { 415 | "fontStyle": "underline" 416 | } 417 | }, 418 | { 419 | "name": "Markup Quote", 420 | "scope": "markup.quote", 421 | "settings": { 422 | "foreground": "#7A3E9D" 423 | } 424 | }, 425 | { 426 | "name": "Markup Lists", 427 | "scope": "markup.list", 428 | "settings": { 429 | "foreground": "#4B83CD" 430 | } 431 | }, 432 | { 433 | "name": "Markup Styling", 434 | "scope": [ 435 | "markup.bold", 436 | "markup.italic" 437 | ], 438 | "settings": { 439 | "foreground": "#448C27" 440 | } 441 | }, 442 | { 443 | "name": "Markup Inline", 444 | "scope": "markup.inline.raw", 445 | "settings": { 446 | "fontStyle": "", 447 | "foreground": "#AB6526" 448 | } 449 | }, 450 | { 451 | "name": "Extra: Diff Range", 452 | "scope": [ 453 | "meta.diff.range", 454 | "meta.diff.index", 455 | "meta.separator" 456 | ], 457 | "settings": { 458 | "background": "#DDDDFF", 459 | "foreground": "#434343" 460 | } 461 | }, 462 | { 463 | "name": "Extra: Diff From", 464 | "scope": "meta.diff.header.from-file", 465 | "settings": { 466 | "background": "#FFDDDD", 467 | "foreground": "#434343" 468 | } 469 | }, 470 | { 471 | "name": "Extra: Diff To", 472 | "scope": "meta.diff.header.to-file", 473 | "settings": { 474 | "background": "#DDFFDD", 475 | "foreground": "#434343" 476 | } 477 | }, 478 | // javscript 479 | { 480 | "name": "Object keys, TS grammar specific", 481 | "scope": [ 482 | "meta.object-literal.key", 483 | "meta.object-literal.key entity.name.function" 484 | ], 485 | "settings": { 486 | "foreground": "#862F95" 487 | } 488 | }, 489 | { 490 | "name": "this.self", 491 | "scope": "variable.language", 492 | "settings": { 493 | "foreground": "#0042B6", 494 | "fontStyle": "bold" 495 | } 496 | }, 497 | { 498 | "name": "variable other object js", 499 | "scope": "variable.other.object.js", 500 | "settings": { 501 | "foreground": "#008D90", 502 | "fontStyle": "" 503 | } 504 | }, 505 | { 506 | "name": "variable.other.object.property.js", 507 | "scope": "variable.other.object.property.js", 508 | "settings": { 509 | "fontStyle": "" 510 | } 511 | }, 512 | { 513 | "name": "variable.other.readwrite.js", 514 | "scope": "variable.other.readwrite.js", 515 | "settings": { 516 | "fontStyle": "" 517 | } 518 | }, 519 | { 520 | "name": "variable.other.property.js", 521 | "scope": "variable.other.property.js", 522 | "settings": { 523 | "fontStyle": "" 524 | } 525 | }, 526 | { 527 | "name": "string.quoted.double.js", 528 | "scope": "string.quoted.double.js", 529 | "settings": { 530 | "fontStyle": "" 531 | } 532 | }, 533 | { 534 | "name": "string.quoted.single.js", 535 | "scope": "string.quoted.single.js", 536 | "settings": { 537 | "fontStyle": "" 538 | } 539 | }, 540 | { 541 | "name": "entity.name.function.js", 542 | "scope": "entity.name.function.js", 543 | "settings": { 544 | "foreground": "#862F95", 545 | //"fontStyle": "bold" 546 | } 547 | }, 548 | { 549 | "name": "entity.name.function.js", 550 | "scope": [ 551 | "support.class.console.js", 552 | "meta.function-call.js", 553 | "meta.block.js", 554 | "meta.function.expression.js", 555 | "meta.block.js", 556 | "meta.method.declaration.js", 557 | "meta.objectliteral.js", 558 | ], 559 | "settings": { 560 | "foreground": "#862F95", 561 | //"fontStyle": "bold" 562 | } 563 | }, 564 | { 565 | "name": "entity.name.function.js", 566 | "scope": "entity.name.function.js", 567 | "settings": { 568 | "foreground": "#7D7840", 569 | } 570 | }, 571 | { 572 | "name": "variable.parameter.js", 573 | "scope": "variable.parameter.js", 574 | "settings": { 575 | "foreground": "#000000", 576 | "fontStyle": "" 577 | } 578 | }, 579 | { 580 | "name": "keyword.operator.expression.delete.js", 581 | "scope": "keyword.operator.expression.delete.js", 582 | "settings": { 583 | "foreground": "#0042B6", 584 | "fontStyle": "" 585 | } 586 | }, 587 | { 588 | "name": "constant.language ", 589 | "scope": "constant.language ", 590 | "settings": { 591 | "foreground": "#0042B6", 592 | "fontStyle": "" 593 | } 594 | }, 595 | { 596 | "name": "storage.type.function.js", 597 | "scope": "storage.type.function.js", 598 | "settings": { 599 | "foreground": "#0042B6", 600 | "fontStyle": "" 601 | } 602 | }, 603 | { 604 | "name": "storage.type.js", 605 | "scope": "storage.type.js", 606 | "settings": { 607 | "foreground": "#0042B6", 608 | "fontStyle": "bold" 609 | } 610 | }, 611 | ] 612 | } --------------------------------------------------------------------------------