├── .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 |
2 |
3 |
4 |
5 |
6 |
7 |
29 |
30 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # IDEA like light Theme
2 |
3 | [](https://marketplace.visualstudio.com/items?itemName=karsany.vscode-ideal-theme)
4 | [](https://marketplace.visualstudio.com/items?itemName=karsany.vscode-ideal-theme)
5 |
6 | ## Preview
7 |
8 | 
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 | }
--------------------------------------------------------------------------------