Compare commits
10 Commits
v0.112.2-p
...
v0.111.4-p
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5d7604f100 | ||
|
|
e296c53d32 | ||
|
|
477a2a4f1b | ||
|
|
e986a93535 | ||
|
|
acb90ba336 | ||
|
|
6780e80bf7 | ||
|
|
7e17603059 | ||
|
|
d2c0c4eac4 | ||
|
|
80469283ee | ||
|
|
463901820c |
45
.github/workflows/release_actions.yml
vendored
@@ -6,27 +6,26 @@ jobs:
|
||||
discord_release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Get release URL
|
||||
id: get-release-url
|
||||
run: |
|
||||
if [ "${{ github.event.release.prerelease }}" == "true" ]; then
|
||||
URL="https://zed.dev/releases/preview/latest"
|
||||
else
|
||||
URL="https://zed.dev/releases/stable/latest"
|
||||
fi
|
||||
echo "::set-output name=URL::$URL"
|
||||
- name: Get content
|
||||
uses: 2428392/gh-truncate-string-action@v1.3.0
|
||||
id: get-content
|
||||
with:
|
||||
stringToTruncate: |
|
||||
📣 Zed [${{ github.event.release.tag_name }}](${{ steps.get-release-url.outputs.URL }}) was just released!
|
||||
- name: Get release URL
|
||||
id: get-release-url
|
||||
run: |
|
||||
if [ "${{ github.event.release.prerelease }}" == "true" ]; then
|
||||
URL="https://zed.dev/releases/preview/latest"
|
||||
else
|
||||
URL="https://zed.dev/releases/stable/latest"
|
||||
fi
|
||||
echo "::set-output name=URL::$URL"
|
||||
- name: Get content
|
||||
uses: 2428392/gh-truncate-string-action@v1.2.0
|
||||
id: get-content
|
||||
with:
|
||||
stringToTruncate: |
|
||||
📣 Zed [${{ github.event.release.tag_name }}](${{ steps.get-release-url.outputs.URL }}) was just released!
|
||||
|
||||
${{ github.event.release.body }}
|
||||
maxLength: 2000
|
||||
truncationSymbol: "..."
|
||||
- name: Discord Webhook Action
|
||||
uses: tsickert/discord-webhook@v5.3.0
|
||||
with:
|
||||
webhook-url: ${{ secrets.DISCORD_WEBHOOK_URL }}
|
||||
content: ${{ steps.get-content.outputs.string }}
|
||||
${{ github.event.release.body }}
|
||||
maxLength: 2000
|
||||
- name: Discord Webhook Action
|
||||
uses: tsickert/discord-webhook@v5.3.0
|
||||
with:
|
||||
webhook-url: ${{ secrets.DISCORD_WEBHOOK_URL }}
|
||||
content: ${{ steps.get-content.outputs.string }}
|
||||
|
||||
296
Cargo.lock
generated
@@ -1169,7 +1169,7 @@ dependencies = [
|
||||
"futures 0.3.28",
|
||||
"gpui2",
|
||||
"language2",
|
||||
"live_kit_client2",
|
||||
"live_kit_client",
|
||||
"log",
|
||||
"media",
|
||||
"postage",
|
||||
@@ -1347,43 +1347,6 @@ dependencies = [
|
||||
"uuid 1.4.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "channel2"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"client2",
|
||||
"clock",
|
||||
"collections",
|
||||
"db2",
|
||||
"feature_flags2",
|
||||
"futures 0.3.28",
|
||||
"gpui2",
|
||||
"image",
|
||||
"language2",
|
||||
"lazy_static",
|
||||
"log",
|
||||
"parking_lot 0.11.2",
|
||||
"postage",
|
||||
"rand 0.8.5",
|
||||
"rpc2",
|
||||
"schemars",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"settings2",
|
||||
"smallvec",
|
||||
"smol",
|
||||
"sum_tree",
|
||||
"tempfile",
|
||||
"text",
|
||||
"thiserror",
|
||||
"time",
|
||||
"tiny_http",
|
||||
"url",
|
||||
"util",
|
||||
"uuid 1.4.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "chrono"
|
||||
version = "0.4.31"
|
||||
@@ -1578,12 +1541,13 @@ dependencies = [
|
||||
"schemars",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"settings",
|
||||
"settings2",
|
||||
"smol",
|
||||
"sum_tree",
|
||||
"sysinfo",
|
||||
"tempfile",
|
||||
"text2",
|
||||
"text",
|
||||
"thiserror",
|
||||
"time",
|
||||
"tiny_http",
|
||||
@@ -1639,7 +1603,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "collab"
|
||||
version = "0.28.0"
|
||||
version = "0.27.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
@@ -1903,6 +1867,7 @@ dependencies = [
|
||||
"async-tar",
|
||||
"clock",
|
||||
"collections",
|
||||
"context_menu",
|
||||
"fs",
|
||||
"futures 0.3.28",
|
||||
"gpui2",
|
||||
@@ -2660,60 +2625,6 @@ dependencies = [
|
||||
"workspace",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "editor2"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"anyhow",
|
||||
"client2",
|
||||
"clock",
|
||||
"collections",
|
||||
"convert_case 0.6.0",
|
||||
"copilot2",
|
||||
"ctor",
|
||||
"db2",
|
||||
"drag_and_drop",
|
||||
"env_logger 0.9.3",
|
||||
"futures 0.3.28",
|
||||
"fuzzy2",
|
||||
"git3",
|
||||
"gpui2",
|
||||
"indoc",
|
||||
"itertools 0.10.5",
|
||||
"language2",
|
||||
"lazy_static",
|
||||
"log",
|
||||
"lsp2",
|
||||
"multi_buffer2",
|
||||
"ordered-float 2.10.0",
|
||||
"parking_lot 0.11.2",
|
||||
"postage",
|
||||
"project2",
|
||||
"rand 0.8.5",
|
||||
"rich_text2",
|
||||
"rpc2",
|
||||
"schemars",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
"settings2",
|
||||
"smallvec",
|
||||
"smol",
|
||||
"snippet",
|
||||
"sqlez",
|
||||
"sum_tree",
|
||||
"text2",
|
||||
"theme2",
|
||||
"tree-sitter",
|
||||
"tree-sitter-html",
|
||||
"tree-sitter-rust",
|
||||
"tree-sitter-typescript",
|
||||
"unindent",
|
||||
"util",
|
||||
"workspace2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "either"
|
||||
version = "1.9.0"
|
||||
@@ -3171,7 +3082,7 @@ dependencies = [
|
||||
"smol",
|
||||
"sum_tree",
|
||||
"tempfile",
|
||||
"text2",
|
||||
"text",
|
||||
"time",
|
||||
"util",
|
||||
]
|
||||
@@ -3463,26 +3374,6 @@ dependencies = [
|
||||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "git3"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
"clock",
|
||||
"collections",
|
||||
"futures 0.3.28",
|
||||
"git2",
|
||||
"lazy_static",
|
||||
"log",
|
||||
"parking_lot 0.11.2",
|
||||
"smol",
|
||||
"sum_tree",
|
||||
"text2",
|
||||
"unindent",
|
||||
"util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "glob"
|
||||
version = "0.3.1"
|
||||
@@ -3529,23 +3420,6 @@ dependencies = [
|
||||
"workspace",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "go_to_line2"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"editor2",
|
||||
"gpui2",
|
||||
"menu2",
|
||||
"postage",
|
||||
"serde",
|
||||
"settings2",
|
||||
"text2",
|
||||
"theme2",
|
||||
"ui2",
|
||||
"util",
|
||||
"workspace2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gpui"
|
||||
version = "0.1.0"
|
||||
@@ -3633,6 +3507,7 @@ dependencies = [
|
||||
"foreign-types",
|
||||
"futures 0.3.28",
|
||||
"gpui2_macros",
|
||||
"gpui_macros",
|
||||
"image",
|
||||
"itertools 0.10.5",
|
||||
"lazy_static",
|
||||
@@ -4340,7 +4215,7 @@ dependencies = [
|
||||
"settings2",
|
||||
"shellexpand",
|
||||
"util",
|
||||
"workspace2",
|
||||
"workspace",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -4473,7 +4348,7 @@ dependencies = [
|
||||
"env_logger 0.9.3",
|
||||
"futures 0.3.28",
|
||||
"fuzzy2",
|
||||
"git3",
|
||||
"git",
|
||||
"globset",
|
||||
"gpui2",
|
||||
"indoc",
|
||||
@@ -4482,7 +4357,6 @@ dependencies = [
|
||||
"lsp2",
|
||||
"parking_lot 0.11.2",
|
||||
"postage",
|
||||
"pulldown-cmark",
|
||||
"rand 0.8.5",
|
||||
"regex",
|
||||
"rpc2",
|
||||
@@ -4495,7 +4369,7 @@ dependencies = [
|
||||
"smallvec",
|
||||
"smol",
|
||||
"sum_tree",
|
||||
"text2",
|
||||
"text",
|
||||
"theme2",
|
||||
"tree-sitter",
|
||||
"tree-sitter-elixir",
|
||||
@@ -4717,39 +4591,6 @@ dependencies = [
|
||||
"simplelog",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "live_kit_client2"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-broadcast",
|
||||
"async-trait",
|
||||
"block",
|
||||
"byteorder",
|
||||
"bytes 1.5.0",
|
||||
"cocoa",
|
||||
"collections",
|
||||
"core-foundation",
|
||||
"core-graphics",
|
||||
"foreign-types",
|
||||
"futures 0.3.28",
|
||||
"gpui2",
|
||||
"hmac 0.12.1",
|
||||
"jwt",
|
||||
"live_kit_server",
|
||||
"log",
|
||||
"media",
|
||||
"nanoid",
|
||||
"objc",
|
||||
"parking_lot 0.11.2",
|
||||
"postage",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
"sha2 0.10.7",
|
||||
"simplelog",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "live_kit_server"
|
||||
version = "0.1.0"
|
||||
@@ -5210,7 +5051,7 @@ dependencies = [
|
||||
"ctor",
|
||||
"env_logger 0.9.3",
|
||||
"futures 0.3.28",
|
||||
"git3",
|
||||
"git",
|
||||
"gpui2",
|
||||
"indoc",
|
||||
"itertools 0.10.5",
|
||||
@@ -5224,7 +5065,7 @@ dependencies = [
|
||||
"project2",
|
||||
"pulldown-cmark",
|
||||
"rand 0.8.5",
|
||||
"rich_text2",
|
||||
"rich_text",
|
||||
"schemars",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
@@ -5233,7 +5074,7 @@ dependencies = [
|
||||
"smol",
|
||||
"snippet",
|
||||
"sum_tree",
|
||||
"text2",
|
||||
"text",
|
||||
"theme2",
|
||||
"tree-sitter",
|
||||
"tree-sitter-html",
|
||||
@@ -6413,8 +6254,8 @@ dependencies = [
|
||||
"fsevent",
|
||||
"futures 0.3.28",
|
||||
"fuzzy2",
|
||||
"git",
|
||||
"git2",
|
||||
"git3",
|
||||
"globset",
|
||||
"gpui2",
|
||||
"ignore",
|
||||
@@ -6442,7 +6283,7 @@ dependencies = [
|
||||
"sum_tree",
|
||||
"tempdir",
|
||||
"terminal2",
|
||||
"text2",
|
||||
"text",
|
||||
"thiserror",
|
||||
"toml 0.5.11",
|
||||
"unindent",
|
||||
@@ -7056,24 +6897,6 @@ dependencies = [
|
||||
"util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rich_text2"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"collections",
|
||||
"futures 0.3.28",
|
||||
"gpui2",
|
||||
"language2",
|
||||
"lazy_static",
|
||||
"pulldown-cmark",
|
||||
"smallvec",
|
||||
"smol",
|
||||
"sum_tree",
|
||||
"theme2",
|
||||
"util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ring"
|
||||
version = "0.16.20"
|
||||
@@ -7941,6 +7764,7 @@ dependencies = [
|
||||
"anyhow",
|
||||
"collections",
|
||||
"feature_flags2",
|
||||
"fs",
|
||||
"fs2",
|
||||
"futures 0.3.28",
|
||||
"gpui2",
|
||||
@@ -8950,29 +8774,6 @@ dependencies = [
|
||||
"util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "text2"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"clock",
|
||||
"collections",
|
||||
"ctor",
|
||||
"digest 0.9.0",
|
||||
"env_logger 0.9.3",
|
||||
"gpui2",
|
||||
"lazy_static",
|
||||
"log",
|
||||
"parking_lot 0.11.2",
|
||||
"postage",
|
||||
"rand 0.8.5",
|
||||
"regex",
|
||||
"rope",
|
||||
"smallvec",
|
||||
"sum_tree",
|
||||
"util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "textwrap"
|
||||
version = "0.16.0"
|
||||
@@ -9002,10 +8803,9 @@ name = "theme2"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"fs2",
|
||||
"fs",
|
||||
"gpui2",
|
||||
"indexmap 1.9.3",
|
||||
"itertools 0.11.0",
|
||||
"parking_lot 0.11.2",
|
||||
"refineable",
|
||||
"schemars",
|
||||
@@ -9015,22 +8815,6 @@ dependencies = [
|
||||
"settings2",
|
||||
"toml 0.5.11",
|
||||
"util",
|
||||
"uuid 1.4.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "theme_importer"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"convert_case 0.6.0",
|
||||
"gpui2",
|
||||
"log",
|
||||
"rust-embed",
|
||||
"serde",
|
||||
"simplelog",
|
||||
"theme2",
|
||||
"uuid 1.4.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -9850,7 +9634,6 @@ dependencies = [
|
||||
"itertools 0.11.0",
|
||||
"rand 0.8.5",
|
||||
"serde",
|
||||
"settings2",
|
||||
"smallvec",
|
||||
"strum",
|
||||
"theme2",
|
||||
@@ -10960,44 +10743,6 @@ dependencies = [
|
||||
"uuid 1.4.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "workspace2"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-recursion 1.0.5",
|
||||
"bincode",
|
||||
"call2",
|
||||
"client2",
|
||||
"collections",
|
||||
"db2",
|
||||
"env_logger 0.9.3",
|
||||
"fs2",
|
||||
"futures 0.3.28",
|
||||
"gpui2",
|
||||
"indoc",
|
||||
"install_cli2",
|
||||
"itertools 0.10.5",
|
||||
"language2",
|
||||
"lazy_static",
|
||||
"log",
|
||||
"node_runtime",
|
||||
"parking_lot 0.11.2",
|
||||
"postage",
|
||||
"project2",
|
||||
"schemars",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
"settings2",
|
||||
"smallvec",
|
||||
"terminal2",
|
||||
"theme2",
|
||||
"ui2",
|
||||
"util",
|
||||
"uuid 1.4.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ws2_32-sys"
|
||||
version = "0.2.1"
|
||||
@@ -11078,7 +10823,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zed"
|
||||
version = "0.112.2"
|
||||
version = "0.111.4"
|
||||
dependencies = [
|
||||
"activity_indicator",
|
||||
"ai",
|
||||
@@ -11235,14 +10980,12 @@ dependencies = [
|
||||
"copilot2",
|
||||
"ctor",
|
||||
"db2",
|
||||
"editor2",
|
||||
"env_logger 0.9.3",
|
||||
"feature_flags2",
|
||||
"fs2",
|
||||
"fsevent",
|
||||
"futures 0.3.28",
|
||||
"fuzzy",
|
||||
"go_to_line2",
|
||||
"gpui2",
|
||||
"ignore",
|
||||
"image",
|
||||
@@ -11277,7 +11020,7 @@ dependencies = [
|
||||
"smol",
|
||||
"sum_tree",
|
||||
"tempdir",
|
||||
"text2",
|
||||
"text",
|
||||
"theme2",
|
||||
"thiserror",
|
||||
"tiny_http",
|
||||
@@ -11315,7 +11058,6 @@ dependencies = [
|
||||
"urlencoding",
|
||||
"util",
|
||||
"uuid 1.4.1",
|
||||
"workspace2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
||||
@@ -10,7 +10,6 @@ members = [
|
||||
"crates/call",
|
||||
"crates/call2",
|
||||
"crates/channel",
|
||||
"crates/channel2",
|
||||
"crates/cli",
|
||||
"crates/client",
|
||||
"crates/client2",
|
||||
@@ -42,7 +41,6 @@ members = [
|
||||
"crates/fuzzy2",
|
||||
"crates/git",
|
||||
"crates/go_to_line",
|
||||
"crates/go_to_line2",
|
||||
"crates/gpui",
|
||||
"crates/gpui_macros",
|
||||
"crates/gpui2",
|
||||
@@ -95,14 +93,13 @@ members = [
|
||||
"crates/text",
|
||||
"crates/theme",
|
||||
"crates/theme2",
|
||||
"crates/theme_importer",
|
||||
"crates/theme_selector",
|
||||
"crates/ui2",
|
||||
"crates/util",
|
||||
"crates/semantic_index",
|
||||
"crates/vim",
|
||||
"crates/vcs_menu",
|
||||
"crates/workspace2",
|
||||
"crates/workspace",
|
||||
"crates/welcome",
|
||||
"crates/xtask",
|
||||
"crates/zed",
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-at-sign"><circle cx="12" cy="12" r="4"/><path d="M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8"/></svg>
|
||||
|
Before Width: | Height: | Size: 300 B |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bell-off"><path d="M8.7 3A6 6 0 0 1 18 8a21.3 21.3 0 0 0 .6 5"/><path d="M17 17H3s3-2 3-9a4.67 4.67 0 0 1 .3-1.7"/><path d="M10.3 21a1.94 1.94 0 0 0 3.4 0"/><path d="m2 2 20 20"/></svg>
|
||||
|
Before Width: | Height: | Size: 387 B |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bell-ring"><path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9"/><path d="M10.3 21a1.94 1.94 0 0 0 3.4 0"/><path d="M4 2C2.8 3.7 2 5.7 2 8"/><path d="M22 8c0-2.3-.8-4.3-2-6"/></svg>
|
||||
|
Before Width: | Height: | Size: 382 B |
@@ -1 +1,8 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-bell"><path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9"/><path d="M10.3 21a1.94 1.94 0 0 0 3.4 0"/></svg>
|
||||
<svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M8.60124 1.25086C8.60124 1.75459 8.26278 2.17927 7.80087 2.30989C10.1459 2.4647 12 4.41582 12 6.79999V10.25C12 11.0563 12.0329 11.7074 12.7236 12.0528C12.931 12.1565 13.0399 12.3892 12.9866 12.6149C12.9333 12.8406 12.7319 13 12.5 13H8.16144C8.36904 13.1832 8.49997 13.4513 8.49997 13.75C8.49997 14.3023 8.05226 14.75 7.49997 14.75C6.94769 14.75 6.49997 14.3023 6.49997 13.75C6.49997 13.4513 6.63091 13.1832 6.83851 13H2.49999C2.2681 13 2.06664 12.8406 2.01336 12.6149C1.96009 12.3892 2.06897 12.1565 2.27638 12.0528C2.96708 11.7074 2.99999 11.0563 2.99999 10.25V6.79999C2.99999 4.41537 4.85481 2.46396 7.20042 2.3098C6.73867 2.17908 6.40036 1.75448 6.40036 1.25086C6.40036 0.643104 6.89304 0.150421 7.5008 0.150421C8.10855 0.150421 8.60124 0.643104 8.60124 1.25086ZM7.49999 3.29999C5.56699 3.29999 3.99999 4.86699 3.99999 6.79999V10.25L4.00002 10.3009C4.0005 10.7463 4.00121 11.4084 3.69929 12H11.3007C10.9988 11.4084 10.9995 10.7463 11 10.3009L11 10.25V6.79999C11 4.86699 9.43299 3.29999 7.49999 3.29999Z"
|
||||
fill="currentColor"
|
||||
/>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 309 B After Width: | Height: | Size: 1.2 KiB |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-minus"><path d="M5 12h14"/></svg>
|
||||
|
Before Width: | Height: | Size: 229 B |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mail-open"><path d="M21.2 8.4c.5.38.8.97.8 1.6v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V10a2 2 0 0 1 .8-1.6l8-6a2 2 0 0 1 2.4 0l8 6Z"/><path d="m22 10-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 10"/></svg>
|
||||
|
Before Width: | Height: | Size: 390 B |
@@ -1,7 +0,0 @@
|
||||
Copyright (c) 2017 eliverlara@gmail.com
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
@@ -1,369 +0,0 @@
|
||||
{
|
||||
"name": "Andromeda Bordered",
|
||||
"type": "dark",
|
||||
"colors": {
|
||||
"focusBorder": "#746f77",
|
||||
"foreground": "#D5CED9",
|
||||
"widget.shadow": "#14151A",
|
||||
"selection.background": "#746f77",
|
||||
"errorForeground": "#FC644D",
|
||||
|
||||
"button.background": "#00e8c5cc",
|
||||
"button.hoverBackground": "#07d4b6cc",
|
||||
|
||||
"dropdown.background": "#2b303b",
|
||||
"dropdown.border": "#363c49",
|
||||
|
||||
"input.background": "#2b303b",
|
||||
"input.placeholderForeground": "#746f77",
|
||||
"inputOption.activeBorder": "#C668BA",
|
||||
"inputValidation.errorBackground": "#D65343",
|
||||
"inputValidation.errorBorder": "#D65343",
|
||||
"inputValidation.infoBackground": "#3A6395",
|
||||
"inputValidation.infoBorder": "#3A6395",
|
||||
"inputValidation.warningBackground": "#DE9237",
|
||||
"inputValidation.warningBorder": "#DE9237",
|
||||
|
||||
"scrollbar.shadow": "#23262E",
|
||||
"scrollbarSlider.activeBackground": "#3A3F4CCC",
|
||||
"scrollbarSlider.background": "#3A3F4C77",
|
||||
"scrollbarSlider.hoverBackground": "#3A3F4CAA",
|
||||
|
||||
"badge.background": "#00b0ff",
|
||||
"badge.foreground": "#20232B",
|
||||
|
||||
"progressBar.background": "#C668BA",
|
||||
|
||||
"list.activeSelectionBackground": "#23262E",
|
||||
"list.activeSelectionForeground": "#00e8c6",
|
||||
"list.dropBackground": "#3a404e",
|
||||
"list.focusBackground": "#282b35",
|
||||
"list.focusForeground": "#eee",
|
||||
"list.hoverBackground": "#23262E",
|
||||
"list.hoverForeground": "#eee",
|
||||
"list.inactiveSelectionBackground": "#23262E",
|
||||
"list.inactiveSelectionForeground": "#00e8c6",
|
||||
|
||||
"activityBar.background": "#20232B",
|
||||
"activityBar.dropBackground": "#3a404e",
|
||||
"activityBar.foreground": "#BAAFC0",
|
||||
"activityBarBadge.background": "#00b0ff",
|
||||
"activityBarBadge.foreground": "#20232B",
|
||||
"activityBar.border": "#1B1D23",
|
||||
|
||||
"sideBar.background": "#23262E",
|
||||
"sideBarSectionHeader.background": "#23262E",
|
||||
"sideBarTitle.foreground": "#00e8c6",
|
||||
"sideBar.foreground": "#999999",
|
||||
"sideBar.border": "#1B1D23",
|
||||
|
||||
"editorGroup.background": "#23262E",
|
||||
"editorGroup.dropBackground": "#495061d7",
|
||||
"editorGroupHeader.tabsBackground": "#23262E",
|
||||
"tab.activeBackground": "#262A33",
|
||||
"tab.inactiveBackground": "#23262E",
|
||||
"tab.activeForeground": "#00e8c6",
|
||||
"tab.inactiveForeground": "#746f77",
|
||||
|
||||
"editor.background": "#262A33",
|
||||
"editor.foreground": "#D5CED9",
|
||||
"editorLineNumber.foreground": "#746f77",
|
||||
"editorCursor.foreground": "#FFF",
|
||||
"editor.selectionBackground": "#3D4352",
|
||||
"editor.selectionHighlightBackground": "#4F435580",
|
||||
"editor.wordHighlightBackground": "#4F4355",
|
||||
"editor.wordHighlightStrongBackground": "#db45a280",
|
||||
"editor.findMatchBackground": "#f39d1256",
|
||||
"editor.findMatchHighlightBackground": "#59b8b377",
|
||||
"editor.findMatchBorder": "#f39d12b6",
|
||||
"editor.hoverHighlightBackground": "#373941",
|
||||
"editor.lineHighlightBackground": "#2e323d",
|
||||
"editor.lineHighlightBorder": "#2e323d",
|
||||
"editorLink.activeForeground": "#3B79C7",
|
||||
"editor.rangeHighlightBackground": "#372F3C",
|
||||
"editorWhitespace.foreground": "#333844",
|
||||
"editorIndentGuide.background": "#333844",
|
||||
"editorIndentGuide.activeBackground": "#585C66",
|
||||
"editorRuler.foreground": "#4F4355",
|
||||
"editorCodeLens.foreground": "#746f77",
|
||||
"editorBracketMatch.background": "#746f77",
|
||||
"editorBracketMatch.border": "#746f77",
|
||||
"editorOverviewRuler.border": "#1B1D23",
|
||||
"editorError.foreground": "#FC644D",
|
||||
"editorWarning.foreground": "#FF9F2E",
|
||||
"editorGutter.modifiedBackground": "#5BC0EBBB",
|
||||
"editorGutter.addedBackground": "#9BC53DBB",
|
||||
"editorGutter.deletedBackground": "#FC644DBB",
|
||||
|
||||
"diffEditor.insertedTextBackground": "#29BF1220",
|
||||
"diffEditor.removedTextBackground": "#F21B3F20",
|
||||
|
||||
"editorWidget.background": "#20232A",
|
||||
"editorSuggestWidget.background": "#20232A",
|
||||
"editorSuggestWidget.border": "#372F3C",
|
||||
"editorSuggestWidget.selectedBackground": "#373941",
|
||||
"editorHoverWidget.background": "#373941",
|
||||
"editorHoverWidget.border": "#00e8c5cc",
|
||||
"debugExceptionWidget.background": "#FF9F2E60",
|
||||
"debugExceptionWidget.border": "#FF9F2E60",
|
||||
|
||||
"minimapSlider.background": "#58607460",
|
||||
"minimapSlider.hoverBackground": "#60698060",
|
||||
"minimapSlider.activeBackground": "#60698060",
|
||||
|
||||
"peekView.border": "#23262E",
|
||||
"peekViewEditor.background": "#1A1C22",
|
||||
"peekViewEditor.matchHighlightBackground": "#FF9F2E60",
|
||||
"peekViewResult.background": "#1A1C22",
|
||||
"peekViewResult.matchHighlightBackground": "#FF9F2E60",
|
||||
"peekViewResult.selectionBackground": "#23262E",
|
||||
"peekViewTitle.background": "#1A1C22",
|
||||
"peekViewTitleDescription.foreground": "#746f77",
|
||||
|
||||
"merge.currentHeaderBackground": "#F92672",
|
||||
"merge.currentContentBackground": "#F9267240",
|
||||
"merge.incomingHeaderBackground": "#3B79C7BB",
|
||||
"merge.incomingContentBackground": "#3B79C740",
|
||||
|
||||
"panel.background": "#23262E",
|
||||
"panel.border": "#1B1D23",
|
||||
"panelTitle.activeBorder": "#23262E",
|
||||
"panelTitle.inactiveForeground": "#746f77",
|
||||
|
||||
"statusBar.background": "#23262E",
|
||||
"statusBar.debuggingBackground": "#FC644D",
|
||||
"statusBar.noFolderBackground": "#23262E",
|
||||
"statusBarItem.activeBackground": "#00e8c5cc",
|
||||
"statusBarItem.hoverBackground": "#07d4b5b0",
|
||||
"statusBarItem.prominentBackground": "#07d4b5b0",
|
||||
"statusBarItem.prominentHoverBackground": "#00e8c5cc",
|
||||
|
||||
"terminal.ansiRed":"#ee5d43",
|
||||
"terminal.ansiGreen":"#96E072",
|
||||
"terminal.ansiYellow":"#FFE66D",
|
||||
"terminal.ansiBlue":"#7cb7ff",
|
||||
"terminal.ansiMagenta":"#ff00aa",
|
||||
"terminal.ansiCyan":"#00e8c6",
|
||||
"terminal.ansiBrightRed":"#ee5d43",
|
||||
"terminal.ansiBrightGreen":"#96E072",
|
||||
"terminal.ansiBrightYellow":"#FFE66D",
|
||||
"terminal.ansiBrightBlue":"#7cb7ff",
|
||||
"terminal.ansiBrightMagenta":"#ff00aa",
|
||||
"terminal.ansiBrightCyan":"#00e8c6",
|
||||
"terminalCursor.background": "#23262E",
|
||||
"terminalCursor.foreground": "#FFE66D",
|
||||
|
||||
"titleBar.activeBackground": "#23262E",
|
||||
|
||||
"notification.background": "#2d313b",
|
||||
"notification.buttonBackground": "#00e8c5cc",
|
||||
"notification.buttonHoverBackground": "#07d4b5b0",
|
||||
"notification.infoBackground": "#00b0ff",
|
||||
"notification.warningBackground": "#FF9F2E",
|
||||
"notification.errorBackground": "#FC644D",
|
||||
|
||||
"extensionButton.prominentBackground": "#07d4b6cc",
|
||||
"extensionButton.prominentHoverBackground": "#07d4b5b0",
|
||||
|
||||
"pickerGroup.border": "#4F4355",
|
||||
"pickerGroup.foreground": "#746f77",
|
||||
|
||||
"debugToolBar.background": "#20232A",
|
||||
|
||||
"walkThrough.embeddedEditorBackground": "#23262E",
|
||||
|
||||
"gitDecoration.ignoredResourceForeground": "#555555"
|
||||
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"settings": {
|
||||
"foreground": "#D5CED9",
|
||||
"background": "#23262E"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Comment color",
|
||||
"scope": [
|
||||
"comment",
|
||||
"markup.quote.markdown",
|
||||
"meta.diff",
|
||||
"meta.diff.header"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#A0A1A7cc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Text Color",
|
||||
"scope": [
|
||||
"meta.template.expression.js",
|
||||
"constant.name.attribute.tag.jade",
|
||||
"punctuation.definition.metadata.markdown",
|
||||
"punctuation.definition.string.end.markdown",
|
||||
"punctuation.definition.string.begin.markdown"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#D5CED9"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Cyan",
|
||||
"scope": [
|
||||
"variable",
|
||||
"support.variable",
|
||||
"entity.name.tag.yaml",
|
||||
"constant.character.entity.html",
|
||||
"source.css entity.name.tag.reference",
|
||||
"beginning.punctuation.definition.list.markdown",
|
||||
"source.css entity.other.attribute-name.parent-selector",
|
||||
"meta.structure.dictionary.json support.type.property-name"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#00e8c6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Orange",
|
||||
"scope": [
|
||||
"markup.bold",
|
||||
"constant.numeric",
|
||||
"meta.group.regexp",
|
||||
"constant.other.php",
|
||||
"support.constant.ext.php",
|
||||
"constant.other.class.php",
|
||||
"support.constant.core.php",
|
||||
"fenced_code.block.language",
|
||||
"constant.other.caps.python",
|
||||
"entity.other.attribute-name",
|
||||
"support.type.exception.python",
|
||||
"source.css keyword.other.unit",
|
||||
"variable.other.object.property.js.jsx", "variable.other.object.js"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f39c12"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Yellow",
|
||||
"scope": [
|
||||
"markup.list",
|
||||
"text.xml string",
|
||||
"entity.name.type",
|
||||
"support.function",
|
||||
"entity.other.attribute-name",
|
||||
"meta.at-rule.extend",
|
||||
"entity.name.function",
|
||||
"entity.other.inherited-class",
|
||||
"entity.other.keyframe-offset.css",
|
||||
"text.html.markdown string.quoted",
|
||||
"meta.function-call.generic.python",
|
||||
"meta.at-rule.extend support.constant",
|
||||
"entity.other.attribute-name.class.jade",
|
||||
"source.css entity.other.attribute-name",
|
||||
"text.xml punctuation.definition.string"
|
||||
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#FFE66D"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Pink",
|
||||
"scope": [
|
||||
"markup.heading",
|
||||
"variable.language.this.js",
|
||||
"variable.language.special.self.python"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff00aa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Hot Pink",
|
||||
"scope": [
|
||||
"punctuation.definition.interpolation",
|
||||
"punctuation.section.embedded.end.php",
|
||||
"punctuation.section.embedded.end.ruby",
|
||||
"punctuation.section.embedded.begin.php",
|
||||
"punctuation.section.embedded.begin.ruby",
|
||||
"punctuation.definition.template-expression",
|
||||
"entity.name.tag"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f92672"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Purple",
|
||||
"scope": [
|
||||
"storage",
|
||||
"keyword",
|
||||
"meta.link",
|
||||
"meta.image",
|
||||
"markup.italic",
|
||||
"source.js support.type"
|
||||
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#c74ded"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Blue",
|
||||
"scope": [
|
||||
"string.regexp",
|
||||
"markup.changed"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#7cb7ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Red",
|
||||
"scope": [
|
||||
"constant",
|
||||
"support.class",
|
||||
"keyword.operator",
|
||||
"support.constant",
|
||||
"text.html.markdown string",
|
||||
"source.css support.function",
|
||||
"source.php support.function",
|
||||
"support.function.magic.python",
|
||||
"entity.other.attribute-name.id",
|
||||
"markup.deleted"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ee5d43"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Green",
|
||||
"scope": [
|
||||
"string",
|
||||
"text.html.php string",
|
||||
"markup.inline.raw",
|
||||
"markup.inserted",
|
||||
"punctuation.definition.string",
|
||||
"punctuation.definition.markdown",
|
||||
"text.html meta.embedded source.js string",
|
||||
"text.html.php punctuation.definition.string",
|
||||
"text.html meta.embedded source.js punctuation.definition.string",
|
||||
"text.html punctuation.definition.string",
|
||||
"text.html string"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#96E072"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Font Underline",
|
||||
"scope": [
|
||||
"entity.other.inherited-class"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "underline"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,367 +0,0 @@
|
||||
{
|
||||
"name": "Andromeda",
|
||||
"type": "dark",
|
||||
"colors": {
|
||||
"focusBorder": "#746f77",
|
||||
"foreground": "#D5CED9",
|
||||
"widget.shadow": "#14151A",
|
||||
"selection.background": "#746f77",
|
||||
"errorForeground": "#FC644D",
|
||||
|
||||
"button.background": "#00e8c5cc",
|
||||
"button.hoverBackground": "#07d4b6cc",
|
||||
|
||||
"dropdown.background": "#2b303b",
|
||||
"dropdown.border": "#363c49",
|
||||
|
||||
"input.background": "#2b303b",
|
||||
"input.placeholderForeground": "#746f77",
|
||||
"inputOption.activeBorder": "#C668BA",
|
||||
"inputValidation.errorBackground": "#D65343",
|
||||
"inputValidation.errorBorder": "#D65343",
|
||||
"inputValidation.infoBackground": "#3A6395",
|
||||
"inputValidation.infoBorder": "#3A6395",
|
||||
"inputValidation.warningBackground": "#DE9237",
|
||||
"inputValidation.warningBorder": "#DE9237",
|
||||
|
||||
"scrollbar.shadow": "#23262E",
|
||||
"scrollbarSlider.activeBackground": "#3A3F4CCC",
|
||||
"scrollbarSlider.background": "#3A3F4C77",
|
||||
"scrollbarSlider.hoverBackground": "#3A3F4CAA",
|
||||
|
||||
"badge.background": "#00b0ff",
|
||||
"badge.foreground": "#20232B",
|
||||
|
||||
"progressBar.background": "#C668BA",
|
||||
|
||||
"list.activeSelectionBackground": "#23262E",
|
||||
"list.activeSelectionForeground": "#00e8c6",
|
||||
"list.dropBackground": "#3a404e",
|
||||
"list.focusBackground": "#282b35",
|
||||
"list.focusForeground": "#eee",
|
||||
"list.hoverBackground": "#23262E",
|
||||
"list.hoverForeground": "#eee",
|
||||
"list.inactiveSelectionBackground": "#23262E",
|
||||
"list.inactiveSelectionForeground": "#00e8c6",
|
||||
|
||||
"activityBar.background": "#23262E",
|
||||
"activityBar.dropBackground": "#3a404e",
|
||||
"activityBar.foreground": "#BAAFC0",
|
||||
"activityBarBadge.background": "#00b0ff",
|
||||
"activityBarBadge.foreground": "#20232B",
|
||||
|
||||
"sideBar.background": "#23262E",
|
||||
"sideBarSectionHeader.background": "#23262E",
|
||||
"sideBarTitle.foreground": "#00e8c6",
|
||||
"sideBar.foreground": "#999999",
|
||||
|
||||
"editorGroup.background": "#23262E",
|
||||
"editorGroup.dropBackground": "#495061d7",
|
||||
"editorGroupHeader.tabsBackground": "#23262E",
|
||||
"tab.activeBackground": "#23262e",
|
||||
"tab.inactiveBackground": "#23262E",
|
||||
"tab.activeForeground": "#00e8c6",
|
||||
"tab.inactiveForeground": "#746f77",
|
||||
|
||||
"editor.background": "#23262E",
|
||||
"editor.foreground": "#D5CED9",
|
||||
"editorLineNumber.foreground": "#746f77",
|
||||
"editorCursor.foreground": "#FFF",
|
||||
"editor.selectionBackground": "#3D4352",
|
||||
"editor.selectionHighlightBackground": "#4F435580",
|
||||
"editor.wordHighlightBackground": "#4F4355",
|
||||
"editor.wordHighlightStrongBackground": "#db45a280",
|
||||
"editor.findMatchBackground": "#f39d1256",
|
||||
"editor.findMatchHighlightBackground": "#59b8b377",
|
||||
"editor.findMatchBorder": "#f39d12b6",
|
||||
"editor.hoverHighlightBackground": "#373941",
|
||||
"editor.lineHighlightBackground": "#2e323d",
|
||||
"editor.lineHighlightBorder": "#2e323d",
|
||||
"editorLink.activeForeground": "#3B79C7",
|
||||
"editor.rangeHighlightBackground": "#372F3C",
|
||||
"editorWhitespace.foreground": "#333844",
|
||||
"editorIndentGuide.background": "#333844",
|
||||
"editorIndentGuide.activeBackground": "#585C66",
|
||||
"editorRuler.foreground": "#4F4355",
|
||||
"editorCodeLens.foreground": "#746f77",
|
||||
"editorBracketMatch.background": "#746f77",
|
||||
"editorBracketMatch.border": "#746f77",
|
||||
"editorOverviewRuler.border": "#1B1D23",
|
||||
"editorError.foreground": "#FC644D",
|
||||
"editorWarning.foreground": "#FF9F2E",
|
||||
"editorGutter.modifiedBackground": "#5BC0EBBB",
|
||||
"editorGutter.addedBackground": "#9BC53DBB",
|
||||
"editorGutter.deletedBackground": "#FC644DBB",
|
||||
|
||||
"diffEditor.insertedTextBackground": "#29BF1220",
|
||||
"diffEditor.removedTextBackground": "#F21B3F20",
|
||||
|
||||
"editorWidget.background": "#20232A",
|
||||
"editorSuggestWidget.background": "#20232A",
|
||||
"editorSuggestWidget.border": "#372F3C",
|
||||
"editorSuggestWidget.selectedBackground": "#373941",
|
||||
"editorHoverWidget.background": "#373941",
|
||||
"editorHoverWidget.border": "#00e8c5cc",
|
||||
"debugExceptionWidget.background": "#FF9F2E60",
|
||||
"debugExceptionWidget.border": "#FF9F2E60",
|
||||
|
||||
"minimapSlider.background": "#58607460",
|
||||
"minimapSlider.hoverBackground": "#60698060",
|
||||
"minimapSlider.activeBackground": "#60698060",
|
||||
|
||||
"peekView.border": "#23262E",
|
||||
"peekViewEditor.background": "#1A1C22",
|
||||
"peekViewEditor.matchHighlightBackground": "#FF9F2E60",
|
||||
"peekViewResult.background": "#1A1C22",
|
||||
"peekViewResult.matchHighlightBackground": "#FF9F2E60",
|
||||
"peekViewResult.selectionBackground": "#23262E",
|
||||
"peekViewTitle.background": "#1A1C22",
|
||||
"peekViewTitleDescription.foreground": "#746f77",
|
||||
|
||||
"merge.currentHeaderBackground": "#F92672",
|
||||
"merge.currentContentBackground": "#F9267240",
|
||||
"merge.incomingHeaderBackground": "#3B79C7BB",
|
||||
"merge.incomingContentBackground": "#3B79C740",
|
||||
|
||||
"panel.background": "#23262E",
|
||||
"panel.border": "#1B1D23",
|
||||
"panelTitle.activeBorder": "#23262E",
|
||||
"panelTitle.inactiveForeground": "#746f77",
|
||||
|
||||
"statusBar.background": "#23262E",
|
||||
"statusBar.debuggingBackground": "#FC644D",
|
||||
"statusBar.noFolderBackground": "#23262E",
|
||||
"statusBarItem.activeBackground": "#00e8c5cc",
|
||||
"statusBarItem.hoverBackground": "#07d4b5b0",
|
||||
"statusBarItem.prominentBackground": "#07d4b5b0",
|
||||
"statusBarItem.prominentHoverBackground": "#00e8c5cc",
|
||||
|
||||
"terminal.ansiRed":"#ee5d43",
|
||||
"terminal.ansiGreen":"#96E072",
|
||||
"terminal.ansiYellow":"#FFE66D",
|
||||
"terminal.ansiBlue":"#7cb7ff",
|
||||
"terminal.ansiMagenta":"#ff00aa",
|
||||
"terminal.ansiCyan":"#00e8c6",
|
||||
"terminal.ansiBrightRed":"#ee5d43",
|
||||
"terminal.ansiBrightGreen":"#96E072",
|
||||
"terminal.ansiBrightYellow":"#FFE66D",
|
||||
"terminal.ansiBrightBlue":"#7cb7ff",
|
||||
"terminal.ansiBrightMagenta":"#ff00aa",
|
||||
"terminal.ansiBrightCyan":"#00e8c6",
|
||||
"terminalCursor.background": "#23262E",
|
||||
"terminalCursor.foreground": "#FFE66D",
|
||||
|
||||
"titleBar.activeBackground": "#23262E",
|
||||
|
||||
"notification.background": "#2d313b",
|
||||
"notification.buttonBackground": "#00e8c5cc",
|
||||
"notification.buttonHoverBackground": "#07d4b5b0",
|
||||
"notification.infoBackground": "#00b0ff",
|
||||
"notification.warningBackground": "#FF9F2E",
|
||||
"notification.errorBackground": "#FC644D",
|
||||
|
||||
"extensionButton.prominentBackground": "#07d4b6cc",
|
||||
"extensionButton.prominentHoverBackground": "#07d4b5b0",
|
||||
|
||||
"pickerGroup.border": "#4F4355",
|
||||
"pickerGroup.foreground": "#746f77",
|
||||
|
||||
"debugToolBar.background": "#20232A",
|
||||
|
||||
"walkThrough.embeddedEditorBackground": "#23262E",
|
||||
|
||||
"gitDecoration.ignoredResourceForeground": "#555555"
|
||||
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"settings": {
|
||||
"foreground": "#D5CED9",
|
||||
"background": "#23262E"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Comment color",
|
||||
"scope": [
|
||||
"comment",
|
||||
"markup.quote.markdown",
|
||||
"meta.diff",
|
||||
"meta.diff.header"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#A0A1A7cc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Text Color",
|
||||
"scope": [
|
||||
"meta.template.expression.js",
|
||||
"constant.name.attribute.tag.jade",
|
||||
"punctuation.definition.metadata.markdown",
|
||||
"punctuation.definition.string.end.markdown",
|
||||
"punctuation.definition.string.begin.markdown"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#D5CED9"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Cyan",
|
||||
"scope": [
|
||||
"variable",
|
||||
"support.variable",
|
||||
"entity.name.tag.yaml",
|
||||
"constant.character.entity.html",
|
||||
"source.css entity.name.tag.reference",
|
||||
"beginning.punctuation.definition.list.markdown",
|
||||
"source.css entity.other.attribute-name.parent-selector",
|
||||
"meta.structure.dictionary.json support.type.property-name"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#00e8c6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Orange",
|
||||
"scope": [
|
||||
"markup.bold",
|
||||
"constant.numeric",
|
||||
"meta.group.regexp",
|
||||
"constant.other.php",
|
||||
"support.constant.ext.php",
|
||||
"constant.other.class.php",
|
||||
"support.constant.core.php",
|
||||
"fenced_code.block.language",
|
||||
"constant.other.caps.python",
|
||||
"entity.other.attribute-name",
|
||||
"support.type.exception.python",
|
||||
"source.css keyword.other.unit",
|
||||
"variable.other.object.property.js.jsx", "variable.other.object.js"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f39c12"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Yellow",
|
||||
"scope": [
|
||||
"markup.list",
|
||||
"text.xml string",
|
||||
"entity.name.type",
|
||||
"support.function",
|
||||
"entity.other.attribute-name",
|
||||
"meta.at-rule.extend",
|
||||
"entity.name.function",
|
||||
"entity.other.inherited-class",
|
||||
"entity.other.keyframe-offset.css",
|
||||
"text.html.markdown string.quoted",
|
||||
"meta.function-call.generic.python",
|
||||
"meta.at-rule.extend support.constant",
|
||||
"entity.other.attribute-name.class.jade",
|
||||
"source.css entity.other.attribute-name",
|
||||
"text.xml punctuation.definition.string"
|
||||
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#FFE66D"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Pink",
|
||||
"scope": [
|
||||
"markup.heading",
|
||||
"variable.language.this.js",
|
||||
"variable.language.special.self.python"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff00aa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Hot Pink",
|
||||
"scope": [
|
||||
"punctuation.definition.interpolation",
|
||||
"punctuation.section.embedded.end.php",
|
||||
"punctuation.section.embedded.end.ruby",
|
||||
"punctuation.section.embedded.begin.php",
|
||||
"punctuation.section.embedded.begin.ruby",
|
||||
"punctuation.definition.template-expression",
|
||||
"entity.name.tag"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f92672"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Purple",
|
||||
"scope": [
|
||||
"storage",
|
||||
"keyword",
|
||||
"meta.link",
|
||||
"meta.image",
|
||||
"markup.italic",
|
||||
"source.js support.type"
|
||||
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#c74ded"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Blue",
|
||||
"scope": [
|
||||
"string.regexp",
|
||||
"markup.changed"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#7cb7ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Red",
|
||||
"scope": [
|
||||
"constant",
|
||||
"support.class",
|
||||
"keyword.operator",
|
||||
"support.constant",
|
||||
"text.html.markdown string",
|
||||
"source.css support.function",
|
||||
"source.php support.function",
|
||||
"support.function.magic.python",
|
||||
"entity.other.attribute-name.id",
|
||||
"markup.deleted"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ee5d43"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Green",
|
||||
"scope": [
|
||||
"string",
|
||||
"text.html.php string",
|
||||
"markup.inline.raw",
|
||||
"markup.inserted",
|
||||
"punctuation.definition.string",
|
||||
"punctuation.definition.markdown",
|
||||
"text.html meta.embedded source.js string",
|
||||
"text.html.php punctuation.definition.string",
|
||||
"text.html meta.embedded source.js punctuation.definition.string",
|
||||
"text.html punctuation.definition.string",
|
||||
"text.html string"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#96E072"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Font Underline",
|
||||
"scope": [
|
||||
"entity.other.inherited-class"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "underline"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"name": "Andromeda",
|
||||
"author": "Eliver Lara (EliverLara)",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Andromeda",
|
||||
"file_name": "andromeda.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Andromeda Bordered",
|
||||
"file_name": "andromeda-bordered.json",
|
||||
"appearance": "dark"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2016 Ike Ku
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -1,847 +0,0 @@
|
||||
{
|
||||
"type": "dark",
|
||||
"colors": {
|
||||
"focusBorder": "#e6b450b3",
|
||||
"foreground": "#565b66",
|
||||
"widget.shadow": "#00000080",
|
||||
"selection.background": "#409fff4d",
|
||||
"icon.foreground": "#565b66",
|
||||
"errorForeground": "#d95757",
|
||||
"descriptionForeground": "#565b66",
|
||||
"textBlockQuote.background": "#0f131a",
|
||||
"textLink.foreground": "#e6b450",
|
||||
"textLink.activeForeground": "#e6b450",
|
||||
"textPreformat.foreground": "#bfbdb6",
|
||||
"button.background": "#e6b450",
|
||||
"button.foreground": "#734d00",
|
||||
"button.hoverBackground": "#e1af4b",
|
||||
"button.secondaryBackground": "#565b6633",
|
||||
"button.secondaryForeground": "#bfbdb6",
|
||||
"button.secondaryHoverBackground": "#565b6680",
|
||||
"dropdown.background": "#0d1017",
|
||||
"dropdown.foreground": "#565b66",
|
||||
"dropdown.border": "#565b6645",
|
||||
"input.background": "#0d1017",
|
||||
"input.border": "#565b6645",
|
||||
"input.foreground": "#bfbdb6",
|
||||
"input.placeholderForeground": "#565b6680",
|
||||
"inputOption.activeBorder": "#e6b4504d",
|
||||
"inputOption.activeBackground": "#e6b45033",
|
||||
"inputOption.activeForeground": "#e6b450",
|
||||
"inputValidation.errorBackground": "#0d1017",
|
||||
"inputValidation.errorBorder": "#d95757",
|
||||
"inputValidation.infoBackground": "#0b0e14",
|
||||
"inputValidation.infoBorder": "#39bae6",
|
||||
"inputValidation.warningBackground": "#0b0e14",
|
||||
"inputValidation.warningBorder": "#ffb454",
|
||||
"scrollbar.shadow": "#1e232b00",
|
||||
"scrollbarSlider.background": "#565b6666",
|
||||
"scrollbarSlider.hoverBackground": "#565b6699",
|
||||
"scrollbarSlider.activeBackground": "#565b66b3",
|
||||
"badge.background": "#e6b45033",
|
||||
"badge.foreground": "#e6b450",
|
||||
"progressBar.background": "#e6b450",
|
||||
"list.activeSelectionBackground": "#47526640",
|
||||
"list.activeSelectionForeground": "#bfbdb6",
|
||||
"list.focusBackground": "#47526640",
|
||||
"list.focusForeground": "#bfbdb6",
|
||||
"list.focusOutline": "#47526640",
|
||||
"list.highlightForeground": "#e6b450",
|
||||
"list.deemphasizedForeground": "#d95757",
|
||||
"list.hoverBackground": "#47526640",
|
||||
"list.inactiveSelectionBackground": "#47526633",
|
||||
"list.inactiveSelectionForeground": "#565b66",
|
||||
"list.invalidItemForeground": "#565b664d",
|
||||
"list.errorForeground": "#d95757",
|
||||
"tree.indentGuidesStroke": "#6c738080",
|
||||
"listFilterWidget.background": "#0f131a",
|
||||
"listFilterWidget.outline": "#e6b450",
|
||||
"listFilterWidget.noMatchesOutline": "#d95757",
|
||||
"list.filterMatchBackground": "#5f4c7266",
|
||||
"list.filterMatchBorder": "#6c598066",
|
||||
"activityBar.background": "#0b0e14",
|
||||
"activityBar.foreground": "#565b66cc",
|
||||
"activityBar.inactiveForeground": "#565b6699",
|
||||
"activityBar.border": "#0b0e14",
|
||||
"activityBar.activeBorder": "#e6b450",
|
||||
"activityBarBadge.background": "#e6b450",
|
||||
"activityBarBadge.foreground": "#734d00",
|
||||
"sideBar.background": "#0b0e14",
|
||||
"sideBar.border": "#0b0e14",
|
||||
"sideBarTitle.foreground": "#565b66",
|
||||
"sideBarSectionHeader.background": "#0b0e14",
|
||||
"sideBarSectionHeader.foreground": "#565b66",
|
||||
"sideBarSectionHeader.border": "#0b0e14",
|
||||
"minimap.background": "#0b0e14",
|
||||
"minimap.selectionHighlight": "#409fff4d",
|
||||
"minimap.errorHighlight": "#d95757",
|
||||
"minimap.findMatchHighlight": "#6c5980",
|
||||
"minimapGutter.addedBackground": "#7fd962",
|
||||
"minimapGutter.modifiedBackground": "#73b8ff",
|
||||
"minimapGutter.deletedBackground": "#f26d78",
|
||||
"editorGroup.border": "#1e232b",
|
||||
"editorGroup.background": "#0f131a",
|
||||
"editorGroupHeader.noTabsBackground": "#0b0e14",
|
||||
"editorGroupHeader.tabsBackground": "#0b0e14",
|
||||
"editorGroupHeader.tabsBorder": "#0b0e14",
|
||||
"tab.activeBackground": "#0b0e14",
|
||||
"tab.activeForeground": "#bfbdb6",
|
||||
"tab.border": "#0b0e14",
|
||||
"tab.activeBorder": "#e6b450",
|
||||
"tab.unfocusedActiveBorder": "#565b66",
|
||||
"tab.inactiveBackground": "#0b0e14",
|
||||
"tab.inactiveForeground": "#565b66",
|
||||
"tab.unfocusedActiveForeground": "#565b66",
|
||||
"tab.unfocusedInactiveForeground": "#565b66",
|
||||
"editor.background": "#0b0e14",
|
||||
"editor.foreground": "#bfbdb6",
|
||||
"editorLineNumber.foreground": "#6c738099",
|
||||
"editorLineNumber.activeForeground": "#6c7380e6",
|
||||
"editorCursor.foreground": "#e6b450",
|
||||
"editor.inactiveSelectionBackground": "#409fff21",
|
||||
"editor.selectionBackground": "#409fff4d",
|
||||
"editor.selectionHighlightBackground": "#7fd96226",
|
||||
"editor.selectionHighlightBorder": "#7fd96200",
|
||||
"editor.wordHighlightBackground": "#73b8ff14",
|
||||
"editor.wordHighlightStrongBackground": "#7fd96214",
|
||||
"editor.wordHighlightBorder": "#73b8ff80",
|
||||
"editor.wordHighlightStrongBorder": "#7fd96280",
|
||||
"editor.findMatchBackground": "#6c5980",
|
||||
"editor.findMatchBorder": "#6c5980",
|
||||
"editor.findMatchHighlightBackground": "#6c598066",
|
||||
"editor.findMatchHighlightBorder": "#5f4c7266",
|
||||
"editor.findRangeHighlightBackground": "#6c598040",
|
||||
"editor.rangeHighlightBackground": "#6c598033",
|
||||
"editor.lineHighlightBackground": "#131721",
|
||||
"editorLink.activeForeground": "#e6b450",
|
||||
"editorWhitespace.foreground": "#6c738099",
|
||||
"editorIndentGuide.background": "#6c738033",
|
||||
"editorIndentGuide.activeBackground": "#6c738080",
|
||||
"editorRuler.foreground": "#6c738033",
|
||||
"editorCodeLens.foreground": "#acb6bf8c",
|
||||
"editorBracketMatch.background": "#6c73804d",
|
||||
"editorBracketMatch.border": "#6c73804d",
|
||||
"editor.snippetTabstopHighlightBackground": "#7fd96233",
|
||||
"editorOverviewRuler.border": "#1e232b",
|
||||
"editorOverviewRuler.modifiedForeground": "#73b8ff",
|
||||
"editorOverviewRuler.addedForeground": "#7fd962",
|
||||
"editorOverviewRuler.deletedForeground": "#f26d78",
|
||||
"editorOverviewRuler.errorForeground": "#d95757",
|
||||
"editorOverviewRuler.warningForeground": "#e6b450",
|
||||
"editorOverviewRuler.bracketMatchForeground": "#6c7380b3",
|
||||
"editorOverviewRuler.wordHighlightForeground": "#73b8ff66",
|
||||
"editorOverviewRuler.wordHighlightStrongForeground": "#7fd96266",
|
||||
"editorOverviewRuler.findMatchForeground": "#6c5980",
|
||||
"editorError.foreground": "#d95757",
|
||||
"editorWarning.foreground": "#e6b450",
|
||||
"editorGutter.modifiedBackground": "#73b8ffcc",
|
||||
"editorGutter.addedBackground": "#7fd962cc",
|
||||
"editorGutter.deletedBackground": "#f26d78cc",
|
||||
"diffEditor.insertedTextBackground": "#7fd9621f",
|
||||
"diffEditor.removedTextBackground": "#f26d781f",
|
||||
"diffEditor.diagonalFill": "#1e232b",
|
||||
"editorWidget.background": "#0f131a",
|
||||
"editorWidget.border": "#1e232b",
|
||||
"editorHoverWidget.background": "#0f131a",
|
||||
"editorHoverWidget.border": "#1e232b",
|
||||
"editorSuggestWidget.background": "#0f131a",
|
||||
"editorSuggestWidget.border": "#1e232b",
|
||||
"editorSuggestWidget.highlightForeground": "#e6b450",
|
||||
"editorSuggestWidget.selectedBackground": "#47526640",
|
||||
"debugExceptionWidget.border": "#1e232b",
|
||||
"debugExceptionWidget.background": "#0f131a",
|
||||
"editorMarkerNavigation.background": "#0f131a",
|
||||
"peekView.border": "#47526640",
|
||||
"peekViewTitle.background": "#47526640",
|
||||
"peekViewTitleDescription.foreground": "#565b66",
|
||||
"peekViewTitleLabel.foreground": "#bfbdb6",
|
||||
"peekViewEditor.background": "#0f131a",
|
||||
"peekViewEditor.matchHighlightBackground": "#6c598066",
|
||||
"peekViewEditor.matchHighlightBorder": "#5f4c7266",
|
||||
"peekViewResult.background": "#0f131a",
|
||||
"peekViewResult.fileForeground": "#bfbdb6",
|
||||
"peekViewResult.lineForeground": "#565b66",
|
||||
"peekViewResult.matchHighlightBackground": "#6c598066",
|
||||
"peekViewResult.selectionBackground": "#47526640",
|
||||
"panel.background": "#0b0e14",
|
||||
"panel.border": "#1e232b",
|
||||
"panelTitle.activeBorder": "#e6b450",
|
||||
"panelTitle.activeForeground": "#bfbdb6",
|
||||
"panelTitle.inactiveForeground": "#565b66",
|
||||
"statusBar.background": "#0b0e14",
|
||||
"statusBar.foreground": "#565b66",
|
||||
"statusBar.border": "#0b0e14",
|
||||
"statusBar.debuggingBackground": "#f29668",
|
||||
"statusBar.debuggingForeground": "#0d1017",
|
||||
"statusBar.noFolderBackground": "#0f131a",
|
||||
"statusBarItem.activeBackground": "#565b6633",
|
||||
"statusBarItem.hoverBackground": "#565b6633",
|
||||
"statusBarItem.prominentBackground": "#1e232b",
|
||||
"statusBarItem.prominentHoverBackground": "#00000030",
|
||||
"statusBarItem.remoteBackground": "#e6b450",
|
||||
"statusBarItem.remoteForeground": "#734d00",
|
||||
"titleBar.activeBackground": "#0b0e14",
|
||||
"titleBar.activeForeground": "#bfbdb6",
|
||||
"titleBar.inactiveBackground": "#0b0e14",
|
||||
"titleBar.inactiveForeground": "#565b66",
|
||||
"titleBar.border": "#0b0e14",
|
||||
"extensionButton.prominentForeground": "#734d00",
|
||||
"extensionButton.prominentBackground": "#e6b450",
|
||||
"extensionButton.prominentHoverBackground": "#e1af4b",
|
||||
"pickerGroup.border": "#1e232b",
|
||||
"pickerGroup.foreground": "#565b6680",
|
||||
"debugToolBar.background": "#0f131a",
|
||||
"debugIcon.breakpointForeground": "#f29668",
|
||||
"debugIcon.breakpointDisabledForeground": "#f2966880",
|
||||
"debugConsoleInputIcon.foreground": "#e6b450",
|
||||
"welcomePage.tileBackground": "#0b0e14",
|
||||
"welcomePage.tileShadow": "#00000080",
|
||||
"welcomePage.progress.background": "#131721",
|
||||
"welcomePage.buttonBackground": "#e6b45066",
|
||||
"walkThrough.embeddedEditorBackground": "#0f131a",
|
||||
"gitDecoration.modifiedResourceForeground": "#73b8ffb3",
|
||||
"gitDecoration.deletedResourceForeground": "#f26d78b3",
|
||||
"gitDecoration.untrackedResourceForeground": "#7fd962b3",
|
||||
"gitDecoration.ignoredResourceForeground": "#565b6680",
|
||||
"gitDecoration.conflictingResourceForeground": "",
|
||||
"gitDecoration.submoduleResourceForeground": "#d2a6ffb3",
|
||||
"settings.headerForeground": "#bfbdb6",
|
||||
"settings.modifiedItemIndicator": "#73b8ff",
|
||||
"keybindingLabel.background": "#565b661a",
|
||||
"keybindingLabel.foreground": "#bfbdb6",
|
||||
"keybindingLabel.border": "#bfbdb61a",
|
||||
"keybindingLabel.bottomBorder": "#bfbdb61a",
|
||||
"terminal.background": "#0b0e14",
|
||||
"terminal.foreground": "#bfbdb6",
|
||||
"terminal.ansiBlack": "#1e232b",
|
||||
"terminal.ansiRed": "#ea6c73",
|
||||
"terminal.ansiGreen": "#7fd962",
|
||||
"terminal.ansiYellow": "#f9af4f",
|
||||
"terminal.ansiBlue": "#53bdfa",
|
||||
"terminal.ansiMagenta": "#cda1fa",
|
||||
"terminal.ansiCyan": "#90e1c6",
|
||||
"terminal.ansiWhite": "#c7c7c7",
|
||||
"terminal.ansiBrightBlack": "#686868",
|
||||
"terminal.ansiBrightRed": "#f07178",
|
||||
"terminal.ansiBrightGreen": "#aad94c",
|
||||
"terminal.ansiBrightYellow": "#ffb454",
|
||||
"terminal.ansiBrightBlue": "#59c2ff",
|
||||
"terminal.ansiBrightMagenta": "#d2a6ff",
|
||||
"terminal.ansiBrightCyan": "#95e6cb",
|
||||
"terminal.ansiBrightWhite": "#ffffff"
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"settings": {
|
||||
"background": "#0b0e14",
|
||||
"foreground": "#bfbdb6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Comment",
|
||||
"scope": [
|
||||
"comment"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#acb6bf8c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "String",
|
||||
"scope": [
|
||||
"string",
|
||||
"constant.other.symbol"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#aad94c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Regular Expressions and Escape Characters",
|
||||
"scope": [
|
||||
"string.regexp",
|
||||
"constant.character",
|
||||
"constant.other"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#95e6cb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Number",
|
||||
"scope": [
|
||||
"constant.numeric"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#d2a6ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Built-in constants",
|
||||
"scope": [
|
||||
"constant.language"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#d2a6ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Variable",
|
||||
"scope": [
|
||||
"variable",
|
||||
"variable.parameter.function-call"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#bfbdb6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Member Variable",
|
||||
"scope": [
|
||||
"variable.member"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f07178"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Language variable",
|
||||
"scope": [
|
||||
"variable.language"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#39bae6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Storage",
|
||||
"scope": [
|
||||
"storage"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff8f40"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Keyword",
|
||||
"scope": [
|
||||
"keyword"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff8f40"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Operators",
|
||||
"scope": [
|
||||
"keyword.operator"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f29668"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Separators like ; or ,",
|
||||
"scope": [
|
||||
"punctuation.separator",
|
||||
"punctuation.terminator"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#bfbdb6b3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Punctuation",
|
||||
"scope": [
|
||||
"punctuation.section"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#bfbdb6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Accessor",
|
||||
"scope": [
|
||||
"punctuation.accessor"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f29668"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "JavaScript/TypeScript interpolation punctuation",
|
||||
"scope": [
|
||||
"punctuation.definition.template-expression"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff8f40"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Ruby interpolation punctuation",
|
||||
"scope": [
|
||||
"punctuation.section.embedded"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff8f40"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Interpolation text",
|
||||
"scope": [
|
||||
"meta.embedded"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#bfbdb6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Types fixes",
|
||||
"scope": [
|
||||
"source.java storage.type",
|
||||
"source.haskell storage.type",
|
||||
"source.c storage.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#59c2ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Inherited class type",
|
||||
"scope": [
|
||||
"entity.other.inherited-class"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#39bae6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Lambda arrow",
|
||||
"scope": [
|
||||
"storage.type.function"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff8f40"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Java primitive variable types",
|
||||
"scope": [
|
||||
"source.java storage.type.primitive"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#39bae6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function name",
|
||||
"scope": [
|
||||
"entity.name.function"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffb454"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function arguments",
|
||||
"scope": [
|
||||
"variable.parameter",
|
||||
"meta.parameter"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#d2a6ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function call",
|
||||
"scope": [
|
||||
"variable.function",
|
||||
"variable.annotation",
|
||||
"meta.function-call.generic",
|
||||
"support.function.go"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffb454"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library function",
|
||||
"scope": [
|
||||
"support.function",
|
||||
"support.macro"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f07178"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Imports and packages",
|
||||
"scope": [
|
||||
"entity.name.import",
|
||||
"entity.name.package"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#aad94c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Entity name",
|
||||
"scope": [
|
||||
"entity.name"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#59c2ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag",
|
||||
"scope": [
|
||||
"entity.name.tag",
|
||||
"meta.tag.sgml"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#39bae6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "JSX Component",
|
||||
"scope": [
|
||||
"support.class.component"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#59c2ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag start/end",
|
||||
"scope": [
|
||||
"punctuation.definition.tag.end",
|
||||
"punctuation.definition.tag.begin",
|
||||
"punctuation.definition.tag"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#39bae680"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag attribute",
|
||||
"scope": [
|
||||
"entity.other.attribute-name"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffb454"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library constant",
|
||||
"scope": [
|
||||
"support.constant"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#f29668"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library class/type",
|
||||
"scope": [
|
||||
"support.type",
|
||||
"support.class",
|
||||
"source.go storage.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#39bae6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Decorators/annotation",
|
||||
"scope": [
|
||||
"meta.decorator variable.other",
|
||||
"meta.decorator punctuation.decorator",
|
||||
"storage.type.annotation"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#e6b673"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Invalid",
|
||||
"scope": [
|
||||
"invalid"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#d95757"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff.header",
|
||||
"scope": [
|
||||
"meta.diff",
|
||||
"meta.diff.header"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#c594c5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Ruby class methods",
|
||||
"scope": [
|
||||
"source.ruby variable.other.readwrite"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffb454"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS tag names",
|
||||
"scope": [
|
||||
"source.css entity.name.tag",
|
||||
"source.sass entity.name.tag",
|
||||
"source.scss entity.name.tag",
|
||||
"source.less entity.name.tag",
|
||||
"source.stylus entity.name.tag"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#59c2ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS browser prefix",
|
||||
"scope": [
|
||||
"source.css support.type",
|
||||
"source.sass support.type",
|
||||
"source.scss support.type",
|
||||
"source.less support.type",
|
||||
"source.stylus support.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#acb6bf8c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS Properties",
|
||||
"scope": [
|
||||
"support.type.property-name"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "normal",
|
||||
"foreground": "#39bae6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Search Results Numbers",
|
||||
"scope": [
|
||||
"constant.numeric.line-number.find-in-files - match"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#acb6bf8c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Search Results Match Numbers",
|
||||
"scope": [
|
||||
"constant.numeric.line-number.match"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff8f40"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Search Results Lines",
|
||||
"scope": [
|
||||
"entity.name.filename.find-in-files"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#aad94c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"message.error"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#d95757"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup heading",
|
||||
"scope": [
|
||||
"markup.heading",
|
||||
"markup.heading entity.name"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"foreground": "#aad94c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup links",
|
||||
"scope": [
|
||||
"markup.underline.link",
|
||||
"string.other.link"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#39bae6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Italic",
|
||||
"scope": [
|
||||
"markup.italic"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#f07178"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Bold",
|
||||
"scope": [
|
||||
"markup.bold"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"foreground": "#f07178"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Bold/italic",
|
||||
"scope": [
|
||||
"markup.italic markup.bold",
|
||||
"markup.bold markup.italic"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Code",
|
||||
"scope": [
|
||||
"markup.raw"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#bfbdb605"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Code Inline",
|
||||
"scope": [
|
||||
"markup.raw.inline"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#bfbdb60f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown Separator",
|
||||
"scope": [
|
||||
"meta.separator"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"background": "#bfbdb60f",
|
||||
"foreground": "#acb6bf8c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Blockquote",
|
||||
"scope": [
|
||||
"markup.quote"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#95e6cb",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup List Bullet",
|
||||
"scope": [
|
||||
"markup.list punctuation.definition.list.begin"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffb454"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup added",
|
||||
"scope": [
|
||||
"markup.inserted"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#7fd962"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup modified",
|
||||
"scope": [
|
||||
"markup.changed"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#73b8ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup removed",
|
||||
"scope": [
|
||||
"markup.deleted"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f26d78"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Strike",
|
||||
"scope": [
|
||||
"markup.strike"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#e6b673"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Table",
|
||||
"scope": [
|
||||
"markup.table"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#bfbdb60f",
|
||||
"foreground": "#39bae6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Raw Inline",
|
||||
"scope": [
|
||||
"text.html.markdown markup.inline.raw"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f29668"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown - Line Break",
|
||||
"scope": [
|
||||
"text.html.markdown meta.dummy.line-break"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#acb6bf8c",
|
||||
"foreground": "#acb6bf8c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown - Raw Block Fenced",
|
||||
"scope": [
|
||||
"punctuation.definition.markdown"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#bfbdb6",
|
||||
"foreground": "#acb6bf8c"
|
||||
}
|
||||
}
|
||||
],
|
||||
"semanticHighlighting": true,
|
||||
"semanticTokenColors": {
|
||||
"parameter.label": "#bfbdb6"
|
||||
}
|
||||
}
|
||||
@@ -1,847 +0,0 @@
|
||||
{
|
||||
"type": "light",
|
||||
"colors": {
|
||||
"focusBorder": "#ffaa33b3",
|
||||
"foreground": "#8a9199",
|
||||
"widget.shadow": "#00000026",
|
||||
"selection.background": "#035bd626",
|
||||
"icon.foreground": "#8a9199",
|
||||
"errorForeground": "#e65050",
|
||||
"descriptionForeground": "#8a9199",
|
||||
"textBlockQuote.background": "#f3f4f5",
|
||||
"textLink.foreground": "#ffaa33",
|
||||
"textLink.activeForeground": "#ffaa33",
|
||||
"textPreformat.foreground": "#5c6166",
|
||||
"button.background": "#ffaa33",
|
||||
"button.foreground": "#804a00",
|
||||
"button.hoverBackground": "#f9a52e",
|
||||
"button.secondaryBackground": "#8a919933",
|
||||
"button.secondaryForeground": "#5c6166",
|
||||
"button.secondaryHoverBackground": "#8a919980",
|
||||
"dropdown.background": "#fcfcfc",
|
||||
"dropdown.foreground": "#8a9199",
|
||||
"dropdown.border": "#8a919945",
|
||||
"input.background": "#fcfcfc",
|
||||
"input.border": "#8a919945",
|
||||
"input.foreground": "#5c6166",
|
||||
"input.placeholderForeground": "#8a919980",
|
||||
"inputOption.activeBorder": "#f4a0284d",
|
||||
"inputOption.activeBackground": "#ffaa3333",
|
||||
"inputOption.activeForeground": "#f4a028",
|
||||
"inputValidation.errorBackground": "#fcfcfc",
|
||||
"inputValidation.errorBorder": "#e65050",
|
||||
"inputValidation.infoBackground": "#f8f9fa",
|
||||
"inputValidation.infoBorder": "#55b4d4",
|
||||
"inputValidation.warningBackground": "#f8f9fa",
|
||||
"inputValidation.warningBorder": "#f2ae49",
|
||||
"scrollbar.shadow": "#6b7d8f00",
|
||||
"scrollbarSlider.background": "#8a919966",
|
||||
"scrollbarSlider.hoverBackground": "#8a919999",
|
||||
"scrollbarSlider.activeBackground": "#8a9199b3",
|
||||
"badge.background": "#ffaa3333",
|
||||
"badge.foreground": "#f4a028",
|
||||
"progressBar.background": "#ffaa33",
|
||||
"list.activeSelectionBackground": "#56728f1f",
|
||||
"list.activeSelectionForeground": "#5c6166",
|
||||
"list.focusBackground": "#56728f1f",
|
||||
"list.focusForeground": "#5c6166",
|
||||
"list.focusOutline": "#56728f1f",
|
||||
"list.highlightForeground": "#ffaa33",
|
||||
"list.deemphasizedForeground": "#e65050",
|
||||
"list.hoverBackground": "#56728f1f",
|
||||
"list.inactiveSelectionBackground": "#6b7d8f1f",
|
||||
"list.inactiveSelectionForeground": "#8a9199",
|
||||
"list.invalidItemForeground": "#8a91994d",
|
||||
"list.errorForeground": "#e65050",
|
||||
"tree.indentGuidesStroke": "#8a919959",
|
||||
"listFilterWidget.background": "#f3f4f5",
|
||||
"listFilterWidget.outline": "#ffaa33",
|
||||
"listFilterWidget.noMatchesOutline": "#e65050",
|
||||
"list.filterMatchBackground": "#ddcaef73",
|
||||
"list.filterMatchBorder": "#ecd9ff73",
|
||||
"activityBar.background": "#f8f9fa",
|
||||
"activityBar.foreground": "#8a9199cc",
|
||||
"activityBar.inactiveForeground": "#8a919999",
|
||||
"activityBar.border": "#f8f9fa",
|
||||
"activityBar.activeBorder": "#ffaa33",
|
||||
"activityBarBadge.background": "#ffaa33",
|
||||
"activityBarBadge.foreground": "#f8f9fa",
|
||||
"sideBar.background": "#f8f9fa",
|
||||
"sideBar.border": "#f8f9fa",
|
||||
"sideBarTitle.foreground": "#8a9199",
|
||||
"sideBarSectionHeader.background": "#f8f9fa",
|
||||
"sideBarSectionHeader.foreground": "#8a9199",
|
||||
"sideBarSectionHeader.border": "#f8f9fa",
|
||||
"minimap.background": "#f8f9fa",
|
||||
"minimap.selectionHighlight": "#035bd626",
|
||||
"minimap.errorHighlight": "#e65050",
|
||||
"minimap.findMatchHighlight": "#ecd9ff",
|
||||
"minimapGutter.addedBackground": "#6cbf43",
|
||||
"minimapGutter.modifiedBackground": "#478acc",
|
||||
"minimapGutter.deletedBackground": "#ff7383",
|
||||
"editorGroup.border": "#6b7d8f1f",
|
||||
"editorGroup.background": "#f3f4f5",
|
||||
"editorGroupHeader.noTabsBackground": "#f8f9fa",
|
||||
"editorGroupHeader.tabsBackground": "#f8f9fa",
|
||||
"editorGroupHeader.tabsBorder": "#f8f9fa",
|
||||
"tab.activeBackground": "#f8f9fa",
|
||||
"tab.activeForeground": "#5c6166",
|
||||
"tab.border": "#f8f9fa",
|
||||
"tab.activeBorder": "#ffaa33",
|
||||
"tab.unfocusedActiveBorder": "#8a9199",
|
||||
"tab.inactiveBackground": "#f8f9fa",
|
||||
"tab.inactiveForeground": "#8a9199",
|
||||
"tab.unfocusedActiveForeground": "#8a9199",
|
||||
"tab.unfocusedInactiveForeground": "#8a9199",
|
||||
"editor.background": "#f8f9fa",
|
||||
"editor.foreground": "#5c6166",
|
||||
"editorLineNumber.foreground": "#8a919966",
|
||||
"editorLineNumber.activeForeground": "#8a9199cc",
|
||||
"editorCursor.foreground": "#ffaa33",
|
||||
"editor.inactiveSelectionBackground": "#035bd612",
|
||||
"editor.selectionBackground": "#035bd626",
|
||||
"editor.selectionHighlightBackground": "#6cbf4326",
|
||||
"editor.selectionHighlightBorder": "#6cbf4300",
|
||||
"editor.wordHighlightBackground": "#478acc14",
|
||||
"editor.wordHighlightStrongBackground": "#6cbf4314",
|
||||
"editor.wordHighlightBorder": "#478acc80",
|
||||
"editor.wordHighlightStrongBorder": "#6cbf4380",
|
||||
"editor.findMatchBackground": "#ecd9ff",
|
||||
"editor.findMatchBorder": "#ecd9ff",
|
||||
"editor.findMatchHighlightBackground": "#ecd9ff73",
|
||||
"editor.findMatchHighlightBorder": "#ddcaef73",
|
||||
"editor.findRangeHighlightBackground": "#ecd9ff40",
|
||||
"editor.rangeHighlightBackground": "#ecd9ff33",
|
||||
"editor.lineHighlightBackground": "#8a91991a",
|
||||
"editorLink.activeForeground": "#ffaa33",
|
||||
"editorWhitespace.foreground": "#8a919966",
|
||||
"editorIndentGuide.background": "#8a91992e",
|
||||
"editorIndentGuide.activeBackground": "#8a919959",
|
||||
"editorRuler.foreground": "#8a91992e",
|
||||
"editorCodeLens.foreground": "#787b8099",
|
||||
"editorBracketMatch.background": "#8a91994d",
|
||||
"editorBracketMatch.border": "#8a91994d",
|
||||
"editor.snippetTabstopHighlightBackground": "#6cbf4333",
|
||||
"editorOverviewRuler.border": "#6b7d8f1f",
|
||||
"editorOverviewRuler.modifiedForeground": "#478acc",
|
||||
"editorOverviewRuler.addedForeground": "#6cbf43",
|
||||
"editorOverviewRuler.deletedForeground": "#ff7383",
|
||||
"editorOverviewRuler.errorForeground": "#e65050",
|
||||
"editorOverviewRuler.warningForeground": "#ffaa33",
|
||||
"editorOverviewRuler.bracketMatchForeground": "#8a9199b3",
|
||||
"editorOverviewRuler.wordHighlightForeground": "#478acc66",
|
||||
"editorOverviewRuler.wordHighlightStrongForeground": "#6cbf4366",
|
||||
"editorOverviewRuler.findMatchForeground": "#ecd9ff",
|
||||
"editorError.foreground": "#e65050",
|
||||
"editorWarning.foreground": "#ffaa33",
|
||||
"editorGutter.modifiedBackground": "#478acccc",
|
||||
"editorGutter.addedBackground": "#6cbf43cc",
|
||||
"editorGutter.deletedBackground": "#ff7383cc",
|
||||
"diffEditor.insertedTextBackground": "#6cbf431f",
|
||||
"diffEditor.removedTextBackground": "#ff73831f",
|
||||
"diffEditor.diagonalFill": "#6b7d8f1f",
|
||||
"editorWidget.background": "#f3f4f5",
|
||||
"editorWidget.border": "#6b7d8f1f",
|
||||
"editorHoverWidget.background": "#f3f4f5",
|
||||
"editorHoverWidget.border": "#6b7d8f1f",
|
||||
"editorSuggestWidget.background": "#f3f4f5",
|
||||
"editorSuggestWidget.border": "#6b7d8f1f",
|
||||
"editorSuggestWidget.highlightForeground": "#ffaa33",
|
||||
"editorSuggestWidget.selectedBackground": "#56728f1f",
|
||||
"debugExceptionWidget.border": "#6b7d8f1f",
|
||||
"debugExceptionWidget.background": "#f3f4f5",
|
||||
"editorMarkerNavigation.background": "#f3f4f5",
|
||||
"peekView.border": "#56728f1f",
|
||||
"peekViewTitle.background": "#56728f1f",
|
||||
"peekViewTitleDescription.foreground": "#8a9199",
|
||||
"peekViewTitleLabel.foreground": "#5c6166",
|
||||
"peekViewEditor.background": "#f3f4f5",
|
||||
"peekViewEditor.matchHighlightBackground": "#ecd9ff73",
|
||||
"peekViewEditor.matchHighlightBorder": "#ddcaef73",
|
||||
"peekViewResult.background": "#f3f4f5",
|
||||
"peekViewResult.fileForeground": "#5c6166",
|
||||
"peekViewResult.lineForeground": "#8a9199",
|
||||
"peekViewResult.matchHighlightBackground": "#ecd9ff73",
|
||||
"peekViewResult.selectionBackground": "#56728f1f",
|
||||
"panel.background": "#f8f9fa",
|
||||
"panel.border": "#6b7d8f1f",
|
||||
"panelTitle.activeBorder": "#ffaa33",
|
||||
"panelTitle.activeForeground": "#5c6166",
|
||||
"panelTitle.inactiveForeground": "#8a9199",
|
||||
"statusBar.background": "#f8f9fa",
|
||||
"statusBar.foreground": "#8a9199",
|
||||
"statusBar.border": "#f8f9fa",
|
||||
"statusBar.debuggingBackground": "#ed9366",
|
||||
"statusBar.debuggingForeground": "#fcfcfc",
|
||||
"statusBar.noFolderBackground": "#f3f4f5",
|
||||
"statusBarItem.activeBackground": "#8a919933",
|
||||
"statusBarItem.hoverBackground": "#8a919933",
|
||||
"statusBarItem.prominentBackground": "#6b7d8f1f",
|
||||
"statusBarItem.prominentHoverBackground": "#00000030",
|
||||
"statusBarItem.remoteBackground": "#ffaa33",
|
||||
"statusBarItem.remoteForeground": "#804a00",
|
||||
"titleBar.activeBackground": "#f8f9fa",
|
||||
"titleBar.activeForeground": "#5c6166",
|
||||
"titleBar.inactiveBackground": "#f8f9fa",
|
||||
"titleBar.inactiveForeground": "#8a9199",
|
||||
"titleBar.border": "#f8f9fa",
|
||||
"extensionButton.prominentForeground": "#804a00",
|
||||
"extensionButton.prominentBackground": "#ffaa33",
|
||||
"extensionButton.prominentHoverBackground": "#f9a52e",
|
||||
"pickerGroup.border": "#6b7d8f1f",
|
||||
"pickerGroup.foreground": "#8a919980",
|
||||
"debugToolBar.background": "#f3f4f5",
|
||||
"debugIcon.breakpointForeground": "#ed9366",
|
||||
"debugIcon.breakpointDisabledForeground": "#ed936680",
|
||||
"debugConsoleInputIcon.foreground": "#ffaa33",
|
||||
"welcomePage.tileBackground": "#f8f9fa",
|
||||
"welcomePage.tileShadow": "#00000026",
|
||||
"welcomePage.progress.background": "#8a91991a",
|
||||
"welcomePage.buttonBackground": "#ffaa3366",
|
||||
"walkThrough.embeddedEditorBackground": "#f3f4f5",
|
||||
"gitDecoration.modifiedResourceForeground": "#478accb3",
|
||||
"gitDecoration.deletedResourceForeground": "#ff7383b3",
|
||||
"gitDecoration.untrackedResourceForeground": "#6cbf43b3",
|
||||
"gitDecoration.ignoredResourceForeground": "#8a919980",
|
||||
"gitDecoration.conflictingResourceForeground": "",
|
||||
"gitDecoration.submoduleResourceForeground": "#a37accb3",
|
||||
"settings.headerForeground": "#5c6166",
|
||||
"settings.modifiedItemIndicator": "#478acc",
|
||||
"keybindingLabel.background": "#8a91991a",
|
||||
"keybindingLabel.foreground": "#5c6166",
|
||||
"keybindingLabel.border": "#5c61661a",
|
||||
"keybindingLabel.bottomBorder": "#5c61661a",
|
||||
"terminal.background": "#f8f9fa",
|
||||
"terminal.foreground": "#5c6166",
|
||||
"terminal.ansiBlack": "#000000",
|
||||
"terminal.ansiRed": "#ea6c6d",
|
||||
"terminal.ansiGreen": "#6cbf43",
|
||||
"terminal.ansiYellow": "#eca944",
|
||||
"terminal.ansiBlue": "#3199e1",
|
||||
"terminal.ansiMagenta": "#9e75c7",
|
||||
"terminal.ansiCyan": "#46ba94",
|
||||
"terminal.ansiWhite": "#c7c7c7",
|
||||
"terminal.ansiBrightBlack": "#686868",
|
||||
"terminal.ansiBrightRed": "#f07171",
|
||||
"terminal.ansiBrightGreen": "#86b300",
|
||||
"terminal.ansiBrightYellow": "#f2ae49",
|
||||
"terminal.ansiBrightBlue": "#399ee6",
|
||||
"terminal.ansiBrightMagenta": "#a37acc",
|
||||
"terminal.ansiBrightCyan": "#4cbf99",
|
||||
"terminal.ansiBrightWhite": "#d1d1d1"
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"settings": {
|
||||
"background": "#f8f9fa",
|
||||
"foreground": "#5c6166"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Comment",
|
||||
"scope": [
|
||||
"comment"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#787b8099"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "String",
|
||||
"scope": [
|
||||
"string",
|
||||
"constant.other.symbol"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#86b300"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Regular Expressions and Escape Characters",
|
||||
"scope": [
|
||||
"string.regexp",
|
||||
"constant.character",
|
||||
"constant.other"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#4cbf99"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Number",
|
||||
"scope": [
|
||||
"constant.numeric"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#a37acc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Built-in constants",
|
||||
"scope": [
|
||||
"constant.language"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#a37acc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Variable",
|
||||
"scope": [
|
||||
"variable",
|
||||
"variable.parameter.function-call"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#5c6166"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Member Variable",
|
||||
"scope": [
|
||||
"variable.member"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f07171"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Language variable",
|
||||
"scope": [
|
||||
"variable.language"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#55b4d4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Storage",
|
||||
"scope": [
|
||||
"storage"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#fa8d3e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Keyword",
|
||||
"scope": [
|
||||
"keyword"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#fa8d3e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Operators",
|
||||
"scope": [
|
||||
"keyword.operator"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ed9366"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Separators like ; or ,",
|
||||
"scope": [
|
||||
"punctuation.separator",
|
||||
"punctuation.terminator"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#5c6166b3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Punctuation",
|
||||
"scope": [
|
||||
"punctuation.section"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#5c6166"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Accessor",
|
||||
"scope": [
|
||||
"punctuation.accessor"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ed9366"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "JavaScript/TypeScript interpolation punctuation",
|
||||
"scope": [
|
||||
"punctuation.definition.template-expression"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#fa8d3e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Ruby interpolation punctuation",
|
||||
"scope": [
|
||||
"punctuation.section.embedded"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#fa8d3e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Interpolation text",
|
||||
"scope": [
|
||||
"meta.embedded"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#5c6166"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Types fixes",
|
||||
"scope": [
|
||||
"source.java storage.type",
|
||||
"source.haskell storage.type",
|
||||
"source.c storage.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#399ee6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Inherited class type",
|
||||
"scope": [
|
||||
"entity.other.inherited-class"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#55b4d4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Lambda arrow",
|
||||
"scope": [
|
||||
"storage.type.function"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#fa8d3e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Java primitive variable types",
|
||||
"scope": [
|
||||
"source.java storage.type.primitive"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#55b4d4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function name",
|
||||
"scope": [
|
||||
"entity.name.function"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f2ae49"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function arguments",
|
||||
"scope": [
|
||||
"variable.parameter",
|
||||
"meta.parameter"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#a37acc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function call",
|
||||
"scope": [
|
||||
"variable.function",
|
||||
"variable.annotation",
|
||||
"meta.function-call.generic",
|
||||
"support.function.go"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f2ae49"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library function",
|
||||
"scope": [
|
||||
"support.function",
|
||||
"support.macro"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f07171"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Imports and packages",
|
||||
"scope": [
|
||||
"entity.name.import",
|
||||
"entity.name.package"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#86b300"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Entity name",
|
||||
"scope": [
|
||||
"entity.name"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#399ee6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag",
|
||||
"scope": [
|
||||
"entity.name.tag",
|
||||
"meta.tag.sgml"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#55b4d4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "JSX Component",
|
||||
"scope": [
|
||||
"support.class.component"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#399ee6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag start/end",
|
||||
"scope": [
|
||||
"punctuation.definition.tag.end",
|
||||
"punctuation.definition.tag.begin",
|
||||
"punctuation.definition.tag"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#55b4d480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag attribute",
|
||||
"scope": [
|
||||
"entity.other.attribute-name"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f2ae49"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library constant",
|
||||
"scope": [
|
||||
"support.constant"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#ed9366"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library class/type",
|
||||
"scope": [
|
||||
"support.type",
|
||||
"support.class",
|
||||
"source.go storage.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#55b4d4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Decorators/annotation",
|
||||
"scope": [
|
||||
"meta.decorator variable.other",
|
||||
"meta.decorator punctuation.decorator",
|
||||
"storage.type.annotation"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#e6ba7e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Invalid",
|
||||
"scope": [
|
||||
"invalid"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#e65050"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff.header",
|
||||
"scope": [
|
||||
"meta.diff",
|
||||
"meta.diff.header"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#c594c5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Ruby class methods",
|
||||
"scope": [
|
||||
"source.ruby variable.other.readwrite"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f2ae49"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS tag names",
|
||||
"scope": [
|
||||
"source.css entity.name.tag",
|
||||
"source.sass entity.name.tag",
|
||||
"source.scss entity.name.tag",
|
||||
"source.less entity.name.tag",
|
||||
"source.stylus entity.name.tag"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#399ee6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS browser prefix",
|
||||
"scope": [
|
||||
"source.css support.type",
|
||||
"source.sass support.type",
|
||||
"source.scss support.type",
|
||||
"source.less support.type",
|
||||
"source.stylus support.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#787b8099"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS Properties",
|
||||
"scope": [
|
||||
"support.type.property-name"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "normal",
|
||||
"foreground": "#55b4d4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Search Results Numbers",
|
||||
"scope": [
|
||||
"constant.numeric.line-number.find-in-files - match"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#787b8099"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Search Results Match Numbers",
|
||||
"scope": [
|
||||
"constant.numeric.line-number.match"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#fa8d3e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Search Results Lines",
|
||||
"scope": [
|
||||
"entity.name.filename.find-in-files"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#86b300"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"message.error"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#e65050"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup heading",
|
||||
"scope": [
|
||||
"markup.heading",
|
||||
"markup.heading entity.name"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"foreground": "#86b300"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup links",
|
||||
"scope": [
|
||||
"markup.underline.link",
|
||||
"string.other.link"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#55b4d4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Italic",
|
||||
"scope": [
|
||||
"markup.italic"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#f07171"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Bold",
|
||||
"scope": [
|
||||
"markup.bold"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"foreground": "#f07171"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Bold/italic",
|
||||
"scope": [
|
||||
"markup.italic markup.bold",
|
||||
"markup.bold markup.italic"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Code",
|
||||
"scope": [
|
||||
"markup.raw"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#5c616605"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Code Inline",
|
||||
"scope": [
|
||||
"markup.raw.inline"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#5c61660f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown Separator",
|
||||
"scope": [
|
||||
"meta.separator"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"background": "#5c61660f",
|
||||
"foreground": "#787b8099"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Blockquote",
|
||||
"scope": [
|
||||
"markup.quote"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#4cbf99",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup List Bullet",
|
||||
"scope": [
|
||||
"markup.list punctuation.definition.list.begin"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f2ae49"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup added",
|
||||
"scope": [
|
||||
"markup.inserted"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#6cbf43"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup modified",
|
||||
"scope": [
|
||||
"markup.changed"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#478acc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup removed",
|
||||
"scope": [
|
||||
"markup.deleted"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff7383"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Strike",
|
||||
"scope": [
|
||||
"markup.strike"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#e6ba7e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Table",
|
||||
"scope": [
|
||||
"markup.table"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#5c61660f",
|
||||
"foreground": "#55b4d4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Raw Inline",
|
||||
"scope": [
|
||||
"text.html.markdown markup.inline.raw"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ed9366"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown - Line Break",
|
||||
"scope": [
|
||||
"text.html.markdown meta.dummy.line-break"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#787b8099",
|
||||
"foreground": "#787b8099"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown - Raw Block Fenced",
|
||||
"scope": [
|
||||
"punctuation.definition.markdown"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#5c6166",
|
||||
"foreground": "#787b8099"
|
||||
}
|
||||
}
|
||||
],
|
||||
"semanticHighlighting": true,
|
||||
"semanticTokenColors": {
|
||||
"parameter.label": "#5c6166"
|
||||
}
|
||||
}
|
||||
@@ -1,847 +0,0 @@
|
||||
{
|
||||
"type": "dark",
|
||||
"colors": {
|
||||
"focusBorder": "#ffcc66b3",
|
||||
"foreground": "#707a8c",
|
||||
"widget.shadow": "#12151cb3",
|
||||
"selection.background": "#409fff40",
|
||||
"icon.foreground": "#707a8c",
|
||||
"errorForeground": "#ff6666",
|
||||
"descriptionForeground": "#707a8c",
|
||||
"textBlockQuote.background": "#1c212b",
|
||||
"textLink.foreground": "#ffcc66",
|
||||
"textLink.activeForeground": "#ffcc66",
|
||||
"textPreformat.foreground": "#cccac2",
|
||||
"button.background": "#ffcc66",
|
||||
"button.foreground": "#805500",
|
||||
"button.hoverBackground": "#fac761",
|
||||
"button.secondaryBackground": "#707a8c33",
|
||||
"button.secondaryForeground": "#cccac2",
|
||||
"button.secondaryHoverBackground": "#707a8c80",
|
||||
"dropdown.background": "#242936",
|
||||
"dropdown.foreground": "#707a8c",
|
||||
"dropdown.border": "#707a8c45",
|
||||
"input.background": "#242936",
|
||||
"input.border": "#707a8c45",
|
||||
"input.foreground": "#cccac2",
|
||||
"input.placeholderForeground": "#707a8c80",
|
||||
"inputOption.activeBorder": "#ffcc664d",
|
||||
"inputOption.activeBackground": "#ffcc6633",
|
||||
"inputOption.activeForeground": "#ffcc66",
|
||||
"inputValidation.errorBackground": "#242936",
|
||||
"inputValidation.errorBorder": "#ff6666",
|
||||
"inputValidation.infoBackground": "#1f2430",
|
||||
"inputValidation.infoBorder": "#5ccfe6",
|
||||
"inputValidation.warningBackground": "#1f2430",
|
||||
"inputValidation.warningBorder": "#ffd173",
|
||||
"scrollbar.shadow": "#171b2400",
|
||||
"scrollbarSlider.background": "#707a8c66",
|
||||
"scrollbarSlider.hoverBackground": "#707a8c99",
|
||||
"scrollbarSlider.activeBackground": "#707a8cb3",
|
||||
"badge.background": "#ffcc6633",
|
||||
"badge.foreground": "#ffcc66",
|
||||
"progressBar.background": "#ffcc66",
|
||||
"list.activeSelectionBackground": "#63759926",
|
||||
"list.activeSelectionForeground": "#cccac2",
|
||||
"list.focusBackground": "#63759926",
|
||||
"list.focusForeground": "#cccac2",
|
||||
"list.focusOutline": "#63759926",
|
||||
"list.highlightForeground": "#ffcc66",
|
||||
"list.deemphasizedForeground": "#ff6666",
|
||||
"list.hoverBackground": "#63759926",
|
||||
"list.inactiveSelectionBackground": "#69758c1f",
|
||||
"list.inactiveSelectionForeground": "#707a8c",
|
||||
"list.invalidItemForeground": "#707a8c4d",
|
||||
"list.errorForeground": "#ff6666",
|
||||
"tree.indentGuidesStroke": "#8a919959",
|
||||
"listFilterWidget.background": "#1c212b",
|
||||
"listFilterWidget.outline": "#ffcc66",
|
||||
"listFilterWidget.noMatchesOutline": "#ff6666",
|
||||
"list.filterMatchBackground": "#5c467266",
|
||||
"list.filterMatchBorder": "#69538066",
|
||||
"activityBar.background": "#1f2430",
|
||||
"activityBar.foreground": "#707a8ccc",
|
||||
"activityBar.inactiveForeground": "#707a8c99",
|
||||
"activityBar.border": "#1f2430",
|
||||
"activityBar.activeBorder": "#ffcc66",
|
||||
"activityBarBadge.background": "#ffcc66",
|
||||
"activityBarBadge.foreground": "#805500",
|
||||
"sideBar.background": "#1f2430",
|
||||
"sideBar.border": "#1f2430",
|
||||
"sideBarTitle.foreground": "#707a8c",
|
||||
"sideBarSectionHeader.background": "#1f2430",
|
||||
"sideBarSectionHeader.foreground": "#707a8c",
|
||||
"sideBarSectionHeader.border": "#1f2430",
|
||||
"minimap.background": "#1f2430",
|
||||
"minimap.selectionHighlight": "#409fff40",
|
||||
"minimap.errorHighlight": "#ff6666",
|
||||
"minimap.findMatchHighlight": "#695380",
|
||||
"minimapGutter.addedBackground": "#87d96c",
|
||||
"minimapGutter.modifiedBackground": "#80bfff",
|
||||
"minimapGutter.deletedBackground": "#f27983",
|
||||
"editorGroup.border": "#171b24",
|
||||
"editorGroup.background": "#1c212b",
|
||||
"editorGroupHeader.noTabsBackground": "#1f2430",
|
||||
"editorGroupHeader.tabsBackground": "#1f2430",
|
||||
"editorGroupHeader.tabsBorder": "#1f2430",
|
||||
"tab.activeBackground": "#1f2430",
|
||||
"tab.activeForeground": "#cccac2",
|
||||
"tab.border": "#1f2430",
|
||||
"tab.activeBorder": "#ffcc66",
|
||||
"tab.unfocusedActiveBorder": "#707a8c",
|
||||
"tab.inactiveBackground": "#1f2430",
|
||||
"tab.inactiveForeground": "#707a8c",
|
||||
"tab.unfocusedActiveForeground": "#707a8c",
|
||||
"tab.unfocusedInactiveForeground": "#707a8c",
|
||||
"editor.background": "#1f2430",
|
||||
"editor.foreground": "#cccac2",
|
||||
"editorLineNumber.foreground": "#8a919966",
|
||||
"editorLineNumber.activeForeground": "#8a9199cc",
|
||||
"editorCursor.foreground": "#ffcc66",
|
||||
"editor.inactiveSelectionBackground": "#409fff21",
|
||||
"editor.selectionBackground": "#409fff40",
|
||||
"editor.selectionHighlightBackground": "#87d96c26",
|
||||
"editor.selectionHighlightBorder": "#87d96c00",
|
||||
"editor.wordHighlightBackground": "#80bfff14",
|
||||
"editor.wordHighlightStrongBackground": "#87d96c14",
|
||||
"editor.wordHighlightBorder": "#80bfff80",
|
||||
"editor.wordHighlightStrongBorder": "#87d96c80",
|
||||
"editor.findMatchBackground": "#695380",
|
||||
"editor.findMatchBorder": "#695380",
|
||||
"editor.findMatchHighlightBackground": "#69538066",
|
||||
"editor.findMatchHighlightBorder": "#5c467266",
|
||||
"editor.findRangeHighlightBackground": "#69538040",
|
||||
"editor.rangeHighlightBackground": "#69538033",
|
||||
"editor.lineHighlightBackground": "#1a1f29",
|
||||
"editorLink.activeForeground": "#ffcc66",
|
||||
"editorWhitespace.foreground": "#8a919966",
|
||||
"editorIndentGuide.background": "#8a91992e",
|
||||
"editorIndentGuide.activeBackground": "#8a919959",
|
||||
"editorRuler.foreground": "#8a91992e",
|
||||
"editorCodeLens.foreground": "#b8cfe680",
|
||||
"editorBracketMatch.background": "#8a91994d",
|
||||
"editorBracketMatch.border": "#8a91994d",
|
||||
"editor.snippetTabstopHighlightBackground": "#87d96c33",
|
||||
"editorOverviewRuler.border": "#171b24",
|
||||
"editorOverviewRuler.modifiedForeground": "#80bfff",
|
||||
"editorOverviewRuler.addedForeground": "#87d96c",
|
||||
"editorOverviewRuler.deletedForeground": "#f27983",
|
||||
"editorOverviewRuler.errorForeground": "#ff6666",
|
||||
"editorOverviewRuler.warningForeground": "#ffcc66",
|
||||
"editorOverviewRuler.bracketMatchForeground": "#8a9199b3",
|
||||
"editorOverviewRuler.wordHighlightForeground": "#80bfff66",
|
||||
"editorOverviewRuler.wordHighlightStrongForeground": "#87d96c66",
|
||||
"editorOverviewRuler.findMatchForeground": "#695380",
|
||||
"editorError.foreground": "#ff6666",
|
||||
"editorWarning.foreground": "#ffcc66",
|
||||
"editorGutter.modifiedBackground": "#80bfffcc",
|
||||
"editorGutter.addedBackground": "#87d96ccc",
|
||||
"editorGutter.deletedBackground": "#f27983cc",
|
||||
"diffEditor.insertedTextBackground": "#87d96c1f",
|
||||
"diffEditor.removedTextBackground": "#f279831f",
|
||||
"diffEditor.diagonalFill": "#171b24",
|
||||
"editorWidget.background": "#1c212b",
|
||||
"editorWidget.border": "#171b24",
|
||||
"editorHoverWidget.background": "#1c212b",
|
||||
"editorHoverWidget.border": "#171b24",
|
||||
"editorSuggestWidget.background": "#1c212b",
|
||||
"editorSuggestWidget.border": "#171b24",
|
||||
"editorSuggestWidget.highlightForeground": "#ffcc66",
|
||||
"editorSuggestWidget.selectedBackground": "#63759926",
|
||||
"debugExceptionWidget.border": "#171b24",
|
||||
"debugExceptionWidget.background": "#1c212b",
|
||||
"editorMarkerNavigation.background": "#1c212b",
|
||||
"peekView.border": "#63759926",
|
||||
"peekViewTitle.background": "#63759926",
|
||||
"peekViewTitleDescription.foreground": "#707a8c",
|
||||
"peekViewTitleLabel.foreground": "#cccac2",
|
||||
"peekViewEditor.background": "#1c212b",
|
||||
"peekViewEditor.matchHighlightBackground": "#69538066",
|
||||
"peekViewEditor.matchHighlightBorder": "#5c467266",
|
||||
"peekViewResult.background": "#1c212b",
|
||||
"peekViewResult.fileForeground": "#cccac2",
|
||||
"peekViewResult.lineForeground": "#707a8c",
|
||||
"peekViewResult.matchHighlightBackground": "#69538066",
|
||||
"peekViewResult.selectionBackground": "#63759926",
|
||||
"panel.background": "#1f2430",
|
||||
"panel.border": "#171b24",
|
||||
"panelTitle.activeBorder": "#ffcc66",
|
||||
"panelTitle.activeForeground": "#cccac2",
|
||||
"panelTitle.inactiveForeground": "#707a8c",
|
||||
"statusBar.background": "#1f2430",
|
||||
"statusBar.foreground": "#707a8c",
|
||||
"statusBar.border": "#1f2430",
|
||||
"statusBar.debuggingBackground": "#f29e74",
|
||||
"statusBar.debuggingForeground": "#242936",
|
||||
"statusBar.noFolderBackground": "#1c212b",
|
||||
"statusBarItem.activeBackground": "#707a8c33",
|
||||
"statusBarItem.hoverBackground": "#707a8c33",
|
||||
"statusBarItem.prominentBackground": "#171b24",
|
||||
"statusBarItem.prominentHoverBackground": "#00000030",
|
||||
"statusBarItem.remoteBackground": "#ffcc66",
|
||||
"statusBarItem.remoteForeground": "#805500",
|
||||
"titleBar.activeBackground": "#1f2430",
|
||||
"titleBar.activeForeground": "#cccac2",
|
||||
"titleBar.inactiveBackground": "#1f2430",
|
||||
"titleBar.inactiveForeground": "#707a8c",
|
||||
"titleBar.border": "#1f2430",
|
||||
"extensionButton.prominentForeground": "#805500",
|
||||
"extensionButton.prominentBackground": "#ffcc66",
|
||||
"extensionButton.prominentHoverBackground": "#fac761",
|
||||
"pickerGroup.border": "#171b24",
|
||||
"pickerGroup.foreground": "#707a8c80",
|
||||
"debugToolBar.background": "#1c212b",
|
||||
"debugIcon.breakpointForeground": "#f29e74",
|
||||
"debugIcon.breakpointDisabledForeground": "#f29e7480",
|
||||
"debugConsoleInputIcon.foreground": "#ffcc66",
|
||||
"welcomePage.tileBackground": "#1f2430",
|
||||
"welcomePage.tileShadow": "#12151cb3",
|
||||
"welcomePage.progress.background": "#1a1f29",
|
||||
"welcomePage.buttonBackground": "#ffcc6666",
|
||||
"walkThrough.embeddedEditorBackground": "#1c212b",
|
||||
"gitDecoration.modifiedResourceForeground": "#80bfffb3",
|
||||
"gitDecoration.deletedResourceForeground": "#f27983b3",
|
||||
"gitDecoration.untrackedResourceForeground": "#87d96cb3",
|
||||
"gitDecoration.ignoredResourceForeground": "#707a8c80",
|
||||
"gitDecoration.conflictingResourceForeground": "",
|
||||
"gitDecoration.submoduleResourceForeground": "#dfbfffb3",
|
||||
"settings.headerForeground": "#cccac2",
|
||||
"settings.modifiedItemIndicator": "#80bfff",
|
||||
"keybindingLabel.background": "#707a8c1a",
|
||||
"keybindingLabel.foreground": "#cccac2",
|
||||
"keybindingLabel.border": "#cccac21a",
|
||||
"keybindingLabel.bottomBorder": "#cccac21a",
|
||||
"terminal.background": "#1f2430",
|
||||
"terminal.foreground": "#cccac2",
|
||||
"terminal.ansiBlack": "#171b24",
|
||||
"terminal.ansiRed": "#ed8274",
|
||||
"terminal.ansiGreen": "#87d96c",
|
||||
"terminal.ansiYellow": "#facc6e",
|
||||
"terminal.ansiBlue": "#6dcbfa",
|
||||
"terminal.ansiMagenta": "#dabafa",
|
||||
"terminal.ansiCyan": "#90e1c6",
|
||||
"terminal.ansiWhite": "#c7c7c7",
|
||||
"terminal.ansiBrightBlack": "#686868",
|
||||
"terminal.ansiBrightRed": "#f28779",
|
||||
"terminal.ansiBrightGreen": "#d5ff80",
|
||||
"terminal.ansiBrightYellow": "#ffd173",
|
||||
"terminal.ansiBrightBlue": "#73d0ff",
|
||||
"terminal.ansiBrightMagenta": "#dfbfff",
|
||||
"terminal.ansiBrightCyan": "#95e6cb",
|
||||
"terminal.ansiBrightWhite": "#ffffff"
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"settings": {
|
||||
"background": "#1f2430",
|
||||
"foreground": "#cccac2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Comment",
|
||||
"scope": [
|
||||
"comment"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#b8cfe680"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "String",
|
||||
"scope": [
|
||||
"string",
|
||||
"constant.other.symbol"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#d5ff80"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Regular Expressions and Escape Characters",
|
||||
"scope": [
|
||||
"string.regexp",
|
||||
"constant.character",
|
||||
"constant.other"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#95e6cb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Number",
|
||||
"scope": [
|
||||
"constant.numeric"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#dfbfff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Built-in constants",
|
||||
"scope": [
|
||||
"constant.language"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#dfbfff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Variable",
|
||||
"scope": [
|
||||
"variable",
|
||||
"variable.parameter.function-call"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#cccac2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Member Variable",
|
||||
"scope": [
|
||||
"variable.member"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f28779"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Language variable",
|
||||
"scope": [
|
||||
"variable.language"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#5ccfe6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Storage",
|
||||
"scope": [
|
||||
"storage"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffad66"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Keyword",
|
||||
"scope": [
|
||||
"keyword"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffad66"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Operators",
|
||||
"scope": [
|
||||
"keyword.operator"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f29e74"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Separators like ; or ,",
|
||||
"scope": [
|
||||
"punctuation.separator",
|
||||
"punctuation.terminator"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#cccac2b3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Punctuation",
|
||||
"scope": [
|
||||
"punctuation.section"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#cccac2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Accessor",
|
||||
"scope": [
|
||||
"punctuation.accessor"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f29e74"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "JavaScript/TypeScript interpolation punctuation",
|
||||
"scope": [
|
||||
"punctuation.definition.template-expression"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffad66"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Ruby interpolation punctuation",
|
||||
"scope": [
|
||||
"punctuation.section.embedded"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffad66"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Interpolation text",
|
||||
"scope": [
|
||||
"meta.embedded"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#cccac2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Types fixes",
|
||||
"scope": [
|
||||
"source.java storage.type",
|
||||
"source.haskell storage.type",
|
||||
"source.c storage.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#73d0ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Inherited class type",
|
||||
"scope": [
|
||||
"entity.other.inherited-class"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#5ccfe6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Lambda arrow",
|
||||
"scope": [
|
||||
"storage.type.function"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffad66"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Java primitive variable types",
|
||||
"scope": [
|
||||
"source.java storage.type.primitive"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#5ccfe6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function name",
|
||||
"scope": [
|
||||
"entity.name.function"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffd173"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function arguments",
|
||||
"scope": [
|
||||
"variable.parameter",
|
||||
"meta.parameter"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#dfbfff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function call",
|
||||
"scope": [
|
||||
"variable.function",
|
||||
"variable.annotation",
|
||||
"meta.function-call.generic",
|
||||
"support.function.go"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffd173"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library function",
|
||||
"scope": [
|
||||
"support.function",
|
||||
"support.macro"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f28779"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Imports and packages",
|
||||
"scope": [
|
||||
"entity.name.import",
|
||||
"entity.name.package"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#d5ff80"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Entity name",
|
||||
"scope": [
|
||||
"entity.name"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#73d0ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag",
|
||||
"scope": [
|
||||
"entity.name.tag",
|
||||
"meta.tag.sgml"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#5ccfe6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "JSX Component",
|
||||
"scope": [
|
||||
"support.class.component"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#73d0ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag start/end",
|
||||
"scope": [
|
||||
"punctuation.definition.tag.end",
|
||||
"punctuation.definition.tag.begin",
|
||||
"punctuation.definition.tag"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#5ccfe680"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag attribute",
|
||||
"scope": [
|
||||
"entity.other.attribute-name"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffd173"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library constant",
|
||||
"scope": [
|
||||
"support.constant"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#f29e74"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library class/type",
|
||||
"scope": [
|
||||
"support.type",
|
||||
"support.class",
|
||||
"source.go storage.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#5ccfe6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Decorators/annotation",
|
||||
"scope": [
|
||||
"meta.decorator variable.other",
|
||||
"meta.decorator punctuation.decorator",
|
||||
"storage.type.annotation"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffdfb3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Invalid",
|
||||
"scope": [
|
||||
"invalid"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff6666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff.header",
|
||||
"scope": [
|
||||
"meta.diff",
|
||||
"meta.diff.header"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#c594c5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Ruby class methods",
|
||||
"scope": [
|
||||
"source.ruby variable.other.readwrite"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffd173"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS tag names",
|
||||
"scope": [
|
||||
"source.css entity.name.tag",
|
||||
"source.sass entity.name.tag",
|
||||
"source.scss entity.name.tag",
|
||||
"source.less entity.name.tag",
|
||||
"source.stylus entity.name.tag"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#73d0ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS browser prefix",
|
||||
"scope": [
|
||||
"source.css support.type",
|
||||
"source.sass support.type",
|
||||
"source.scss support.type",
|
||||
"source.less support.type",
|
||||
"source.stylus support.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#b8cfe680"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS Properties",
|
||||
"scope": [
|
||||
"support.type.property-name"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "normal",
|
||||
"foreground": "#5ccfe6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Search Results Numbers",
|
||||
"scope": [
|
||||
"constant.numeric.line-number.find-in-files - match"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#b8cfe680"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Search Results Match Numbers",
|
||||
"scope": [
|
||||
"constant.numeric.line-number.match"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffad66"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Search Results Lines",
|
||||
"scope": [
|
||||
"entity.name.filename.find-in-files"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#d5ff80"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"message.error"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ff6666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup heading",
|
||||
"scope": [
|
||||
"markup.heading",
|
||||
"markup.heading entity.name"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"foreground": "#d5ff80"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup links",
|
||||
"scope": [
|
||||
"markup.underline.link",
|
||||
"string.other.link"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#5ccfe6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Italic",
|
||||
"scope": [
|
||||
"markup.italic"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#f28779"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Bold",
|
||||
"scope": [
|
||||
"markup.bold"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"foreground": "#f28779"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Bold/italic",
|
||||
"scope": [
|
||||
"markup.italic markup.bold",
|
||||
"markup.bold markup.italic"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Code",
|
||||
"scope": [
|
||||
"markup.raw"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#cccac205"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Code Inline",
|
||||
"scope": [
|
||||
"markup.raw.inline"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#cccac20f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown Separator",
|
||||
"scope": [
|
||||
"meta.separator"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"background": "#cccac20f",
|
||||
"foreground": "#b8cfe680"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Blockquote",
|
||||
"scope": [
|
||||
"markup.quote"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#95e6cb",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup List Bullet",
|
||||
"scope": [
|
||||
"markup.list punctuation.definition.list.begin"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffd173"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup added",
|
||||
"scope": [
|
||||
"markup.inserted"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#87d96c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup modified",
|
||||
"scope": [
|
||||
"markup.changed"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#80bfff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup removed",
|
||||
"scope": [
|
||||
"markup.deleted"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f27983"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Strike",
|
||||
"scope": [
|
||||
"markup.strike"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#ffdfb3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Table",
|
||||
"scope": [
|
||||
"markup.table"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#cccac20f",
|
||||
"foreground": "#5ccfe6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Raw Inline",
|
||||
"scope": [
|
||||
"text.html.markdown markup.inline.raw"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#f29e74"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown - Line Break",
|
||||
"scope": [
|
||||
"text.html.markdown meta.dummy.line-break"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#b8cfe680",
|
||||
"foreground": "#b8cfe680"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown - Raw Block Fenced",
|
||||
"scope": [
|
||||
"punctuation.definition.markdown"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#cccac2",
|
||||
"foreground": "#b8cfe680"
|
||||
}
|
||||
}
|
||||
],
|
||||
"semanticHighlighting": true,
|
||||
"semanticTokenColors": {
|
||||
"parameter.label": "#cccac2"
|
||||
}
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
{
|
||||
"name": "Ayu",
|
||||
"author": "dempfi (Ike Ku)",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Ayu Light",
|
||||
"file_name": "ayu-light.json",
|
||||
"appearance": "light"
|
||||
},
|
||||
{
|
||||
"name": "Ayu Mirage",
|
||||
"file_name": "ayu-mirage.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Ayu Dark",
|
||||
"file_name": "ayu-dark.json",
|
||||
"appearance": "dark"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Dracula Theme
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -1,11 +0,0 @@
|
||||
{
|
||||
"name": "Dracula",
|
||||
"author": "Zeno Rocha",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Dracula",
|
||||
"file_name": "dracula.json",
|
||||
"appearance": "dark"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
MIT/X11
|
||||
@@ -1,36 +0,0 @@
|
||||
{
|
||||
"name": "Gruvbox",
|
||||
"author": "morhetz",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Gruvbox Dark Hard",
|
||||
"file_name": "gruvbox-dark-hard.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Gruvbox Dark Medium",
|
||||
"file_name": "gruvbox-dark-medium.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Gruvbox Dark Soft",
|
||||
"file_name": "gruvbox-dark-soft.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Gruvbox Light Hard",
|
||||
"file_name": "gruvbox-light-hard.json",
|
||||
"appearance": "light"
|
||||
},
|
||||
{
|
||||
"name": "Gruvbox Light Medium",
|
||||
"file_name": "gruvbox-light-medium.json",
|
||||
"appearance": "light"
|
||||
},
|
||||
{
|
||||
"name": "Gruvbox Light Soft",
|
||||
"file_name": "gruvbox-light-soft.json",
|
||||
"appearance": "light"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2018 Sarah Drasner
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"name": "Night Owl",
|
||||
"author": "Sarah Drasner (sdras)",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Night Owl",
|
||||
"file_name": "night-owl.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Night Owl Light",
|
||||
"file_name": "night-owl-light.json",
|
||||
"appearance": "light"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2018 Liviu Schera
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
@@ -1,61 +0,0 @@
|
||||
{
|
||||
"name": "Notctis",
|
||||
"author": "Liviu Schera (liviuschera)",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Noctis Azureus",
|
||||
"file_name": "azureus.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Noctis Bordo",
|
||||
"file_name": "bordo.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Noctus Hibernus",
|
||||
"file_name": "hibernus.json",
|
||||
"appearance": "light"
|
||||
},
|
||||
{
|
||||
"name": "Noctis Lilac",
|
||||
"file_name": "lilac.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Noctis Lux",
|
||||
"file_name": "lux.json",
|
||||
"appearance": "light"
|
||||
},
|
||||
{
|
||||
"name": "Noctis Minimus",
|
||||
"file_name": "minimus.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Noctis",
|
||||
"file_name": "noctis.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Noctis Obscuro",
|
||||
"file_name": "obscuro.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Noctis Sereno",
|
||||
"file_name": "obscuro.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Noctis Uva",
|
||||
"file_name": "uva.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Noctis Viola",
|
||||
"file_name": "viola.json",
|
||||
"appearance": "dark"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016-present Sven Greb <development@svengreb.de> (https://www.svengreb.de)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -1,11 +0,0 @@
|
||||
{
|
||||
"name": "Nord",
|
||||
"author": "Sven Greb (svengreb)",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Nord",
|
||||
"file_name": "nord.json",
|
||||
"appearance": "dark"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
Copyright (c) 2017-present Olaolu Olawuyi
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
@@ -1,21 +0,0 @@
|
||||
{
|
||||
"name": "Palenight",
|
||||
"author": "Olaolu Olawuyi (whizkydee)",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Palenight",
|
||||
"file_name": "palenight.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Palenight Operator",
|
||||
"file_name": "palenight-operator.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Palenight (Mild Contrast)",
|
||||
"file_name": "palenight-mild-contrast.json",
|
||||
"appearance": "dark"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2021 Rosé Pine
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -1,21 +0,0 @@
|
||||
{
|
||||
"name": "Rose Pine",
|
||||
"author": "Rosé Pine",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Rose Pine",
|
||||
"file_name": "rose-pine.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Rose Moon",
|
||||
"file_name": "rose-pine-moon.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Rose Pine Dawn",
|
||||
"file_name": "rose-pine-dawn.json",
|
||||
"appearance": "light"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,680 +0,0 @@
|
||||
{
|
||||
"name": "Rosé Pine Dawn",
|
||||
"type": "light",
|
||||
"colors": {
|
||||
"activityBar.activeBorder": "#575279",
|
||||
"activityBar.background": "#faf4ed",
|
||||
"activityBar.dropBorder": "#f2e9e1",
|
||||
"activityBar.foreground": "#575279",
|
||||
"activityBar.inactiveForeground": "#797593",
|
||||
"activityBarBadge.background": "#d7827e",
|
||||
"activityBarBadge.foreground": "#faf4ed",
|
||||
"badge.background": "#d7827e",
|
||||
"badge.foreground": "#faf4ed",
|
||||
"banner.background": "#fffaf3",
|
||||
"banner.foreground": "#575279",
|
||||
"banner.iconForeground": "#797593",
|
||||
"breadcrumb.activeSelectionForeground": "#d7827e",
|
||||
"breadcrumb.background": "#faf4ed",
|
||||
"breadcrumb.focusForeground": "#797593",
|
||||
"breadcrumb.foreground": "#9893a5",
|
||||
"breadcrumbPicker.background": "#fffaf3",
|
||||
"button.background": "#d7827e",
|
||||
"button.foreground": "#faf4ed",
|
||||
"button.hoverBackground": "#d7827ee6",
|
||||
"button.secondaryBackground": "#fffaf3",
|
||||
"button.secondaryForeground": "#575279",
|
||||
"button.secondaryHoverBackground": "#f2e9e1",
|
||||
"charts.blue": "#56949f",
|
||||
"charts.foreground": "#575279",
|
||||
"charts.green": "#286983",
|
||||
"charts.lines": "#797593",
|
||||
"charts.orange": "#d7827e",
|
||||
"charts.purple": "#907aa9",
|
||||
"charts.red": "#b4637a",
|
||||
"charts.yellow": "#ea9d34",
|
||||
"checkbox.background": "#fffaf3",
|
||||
"checkbox.border": "#6e6a8614",
|
||||
"checkbox.foreground": "#575279",
|
||||
"debugExceptionWidget.background": "#fffaf3",
|
||||
"debugExceptionWidget.border": "#6e6a8614",
|
||||
"debugIcon.breakpointCurrentStackframeForeground": "#797593",
|
||||
"debugIcon.breakpointDisabledForeground": "#797593",
|
||||
"debugIcon.breakpointForeground": "#797593",
|
||||
"debugIcon.breakpointStackframeForeground": "#797593",
|
||||
"debugIcon.breakpointUnverifiedForeground": "#797593",
|
||||
"debugIcon.continueForeground": "#797593",
|
||||
"debugIcon.disconnectForeground": "#797593",
|
||||
"debugIcon.pauseForeground": "#797593",
|
||||
"debugIcon.restartForeground": "#797593",
|
||||
"debugIcon.startForeground": "#797593",
|
||||
"debugIcon.stepBackForeground": "#797593",
|
||||
"debugIcon.stepIntoForeground": "#797593",
|
||||
"debugIcon.stepOutForeground": "#797593",
|
||||
"debugIcon.stepOverForeground": "#797593",
|
||||
"debugIcon.stopForeground": "#b4637a",
|
||||
"debugToolBar.background": "#fffaf3",
|
||||
"debugToolBar.border": "#f2e9e1",
|
||||
"descriptionForeground": "#797593",
|
||||
"diffEditor.border": "#f2e9e1",
|
||||
"diffEditor.diagonalFill": "#6e6a8626",
|
||||
"diffEditor.insertedLineBackground": "#56949f26",
|
||||
"diffEditor.insertedTextBackground": "#56949f26",
|
||||
"diffEditor.removedLineBackground": "#b4637a26",
|
||||
"diffEditor.removedTextBackground": "#b4637a26",
|
||||
"diffEditorOverview.insertedForeground": "#56949f80",
|
||||
"diffEditorOverview.removedForeground": "#b4637a80",
|
||||
"dropdown.background": "#fffaf3",
|
||||
"dropdown.border": "#6e6a8614",
|
||||
"dropdown.foreground": "#575279",
|
||||
"dropdown.listBackground": "#fffaf3",
|
||||
"editor.background": "#faf4ed",
|
||||
"editor.findMatchBackground": "#6e6a8626",
|
||||
"editor.findMatchHighlightBackground": "#6e6a8626",
|
||||
"editor.findRangeHighlightBackground": "#6e6a8626",
|
||||
"editor.findRangeHighlightBorder": "#000000",
|
||||
"editor.focusedStackFrameHighlightBackground": "#6e6a8614",
|
||||
"editor.foldBackground": "#fffaf3",
|
||||
"editor.foreground": "#575279",
|
||||
"editor.hoverHighlightBackground": "#000000",
|
||||
"editor.inactiveSelectionBackground": "#6e6a860d",
|
||||
"editor.inlineValuesBackground": "#000000",
|
||||
"editor.inlineValuesForeground": "#797593",
|
||||
"editor.lineHighlightBackground": "#6e6a860d",
|
||||
"editor.lineHighlightBorder": "#000000",
|
||||
"editor.linkedEditingBackground": "#fffaf3",
|
||||
"editor.rangeHighlightBackground": "#6e6a860d",
|
||||
"editor.selectionBackground": "#6e6a8614",
|
||||
"editor.selectionForeground": "#575279",
|
||||
"editor.selectionHighlightBackground": "#6e6a8614",
|
||||
"editor.selectionHighlightBorder": "#faf4ed",
|
||||
"editor.snippetFinalTabstopHighlightBackground": "#6e6a8614",
|
||||
"editor.snippetFinalTabstopHighlightBorder": "#fffaf3",
|
||||
"editor.snippetTabstopHighlightBackground": "#6e6a8614",
|
||||
"editor.snippetTabstopHighlightBorder": "#fffaf3",
|
||||
"editor.stackFrameHighlightBackground": "#6e6a8614",
|
||||
"editor.symbolHighlightBackground": "#6e6a8614",
|
||||
"editor.symbolHighlightBorder": "#000000",
|
||||
"editor.wordHighlightBackground": "#6e6a8614",
|
||||
"editor.wordHighlightBorder": "#000000",
|
||||
"editor.wordHighlightStrongBackground": "#6e6a8614",
|
||||
"editor.wordHighlightStrongBorder": "#6e6a8614",
|
||||
"editorBracketHighlight.foreground1": "#b4637a80",
|
||||
"editorBracketHighlight.foreground2": "#28698380",
|
||||
"editorBracketHighlight.foreground3": "#ea9d3480",
|
||||
"editorBracketHighlight.foreground4": "#56949f80",
|
||||
"editorBracketHighlight.foreground5": "#d7827e80",
|
||||
"editorBracketHighlight.foreground6": "#907aa980",
|
||||
"editorBracketMatch.background": "#000000",
|
||||
"editorBracketMatch.border": "#797593",
|
||||
"editorBracketPairGuide.activeBackground1": "#286983",
|
||||
"editorBracketPairGuide.activeBackground2": "#d7827e",
|
||||
"editorBracketPairGuide.activeBackground3": "#907aa9",
|
||||
"editorBracketPairGuide.activeBackground4": "#56949f",
|
||||
"editorBracketPairGuide.activeBackground5": "#ea9d34",
|
||||
"editorBracketPairGuide.activeBackground6": "#b4637a",
|
||||
"editorBracketPairGuide.background1": "#28698380",
|
||||
"editorBracketPairGuide.background2": "#d7827e80",
|
||||
"editorBracketPairGuide.background3": "#907aa980",
|
||||
"editorBracketPairGuide.background4": "#56949f80",
|
||||
"editorBracketPairGuide.background5": "#ea9d3480",
|
||||
"editorBracketPairGuide.background6": "#b4637a80",
|
||||
"editorCodeLens.foreground": "#d7827e",
|
||||
"editorCursor.background": "#575279",
|
||||
"editorCursor.foreground": "#9893a5",
|
||||
"editorError.border": "#000000",
|
||||
"editorError.foreground": "#b4637a",
|
||||
"editorGhostText.foreground": "#797593",
|
||||
"editorGroup.border": "#000000",
|
||||
"editorGroup.dropBackground": "#fffaf3",
|
||||
"editorGroup.emptyBackground": "#000000",
|
||||
"editorGroup.focusedEmptyBorder": "#000000",
|
||||
"editorGroupHeader.noTabsBackground": "#000000",
|
||||
"editorGroupHeader.tabsBackground": "#000000",
|
||||
"editorGroupHeader.tabsBorder": "#000000",
|
||||
"editorGutter.addedBackground": "#56949f",
|
||||
"editorGutter.background": "#faf4ed",
|
||||
"editorGutter.commentRangeForeground": "#797593",
|
||||
"editorGutter.deletedBackground": "#b4637a",
|
||||
"editorGutter.foldingControlForeground": "#907aa9",
|
||||
"editorGutter.modifiedBackground": "#d7827e",
|
||||
"editorHint.border": "#000000",
|
||||
"editorHint.foreground": "#797593",
|
||||
"editorHoverWidget.background": "#fffaf3",
|
||||
"editorHoverWidget.border": "#9893a580",
|
||||
"editorHoverWidget.foreground": "#797593",
|
||||
"editorHoverWidget.highlightForeground": "#575279",
|
||||
"editorHoverWidget.statusBarBackground": "#000000",
|
||||
"editorIndentGuide.activeBackground": "#9893a5",
|
||||
"editorIndentGuide.background": "#6e6a8626",
|
||||
"editorInfo.border": "#f2e9e1",
|
||||
"editorInfo.foreground": "#56949f",
|
||||
"editorInlayHint.background": "#f2e9e1",
|
||||
"editorInlayHint.foreground": "#797593",
|
||||
"editorInlayHint.parameterBackground": "#f2e9e1",
|
||||
"editorInlayHint.parameterForeground": "#907aa9",
|
||||
"editorInlayHint.typeBackground": "#f2e9e1",
|
||||
"editorInlayHint.typeForeground": "#56949f",
|
||||
"editorLightBulb.foreground": "#286983",
|
||||
"editorLightBulbAutoFix.foreground": "#d7827e",
|
||||
"editorLineNumber.activeForeground": "#575279",
|
||||
"editorLineNumber.foreground": "#797593",
|
||||
"editorLink.activeForeground": "#d7827e",
|
||||
"editorMarkerNavigation.background": "#fffaf3",
|
||||
"editorMarkerNavigationError.background": "#fffaf3",
|
||||
"editorMarkerNavigationInfo.background": "#fffaf3",
|
||||
"editorMarkerNavigationWarning.background": "#fffaf3",
|
||||
"editorOverviewRuler.addedForeground": "#56949f80",
|
||||
"editorOverviewRuler.background": "#faf4ed",
|
||||
"editorOverviewRuler.border": "#6e6a8626",
|
||||
"editorOverviewRuler.bracketMatchForeground": "#797593",
|
||||
"editorOverviewRuler.commonContentForeground": "#6e6a860d",
|
||||
"editorOverviewRuler.currentContentForeground": "#6e6a8614",
|
||||
"editorOverviewRuler.deletedForeground": "#b4637a80",
|
||||
"editorOverviewRuler.errorForeground": "#b4637a80",
|
||||
"editorOverviewRuler.findMatchForeground": "#6e6a8626",
|
||||
"editorOverviewRuler.incomingContentForeground": "#907aa980",
|
||||
"editorOverviewRuler.infoForeground": "#56949f80",
|
||||
"editorOverviewRuler.modifiedForeground": "#d7827e80",
|
||||
"editorOverviewRuler.rangeHighlightForeground": "#6e6a8626",
|
||||
"editorOverviewRuler.selectionHighlightForeground": "#6e6a8626",
|
||||
"editorOverviewRuler.warningForeground": "#ea9d3480",
|
||||
"editorOverviewRuler.wordHighlightForeground": "#6e6a8614",
|
||||
"editorOverviewRuler.wordHighlightStrongForeground": "#6e6a8626",
|
||||
"editorPane.background": "#000000",
|
||||
"editorRuler.foreground": "#6e6a8626",
|
||||
"editorSuggestWidget.background": "#fffaf3",
|
||||
"editorSuggestWidget.border": "#000000",
|
||||
"editorSuggestWidget.focusHighlightForeground": "#d7827e",
|
||||
"editorSuggestWidget.foreground": "#797593",
|
||||
"editorSuggestWidget.highlightForeground": "#d7827e",
|
||||
"editorSuggestWidget.selectedBackground": "#6e6a8614",
|
||||
"editorSuggestWidget.selectedForeground": "#575279",
|
||||
"editorSuggestWidget.selectedIconForeground": "#575279",
|
||||
"editorUnnecessaryCode.border": "#000000",
|
||||
"editorUnnecessaryCode.opacity": "#57527980",
|
||||
"editorWarning.border": "#000000",
|
||||
"editorWarning.foreground": "#ea9d34",
|
||||
"editorWhitespace.foreground": "#9893a5",
|
||||
"editorWidget.background": "#fffaf3",
|
||||
"editorWidget.border": "#f2e9e1",
|
||||
"editorWidget.foreground": "#797593",
|
||||
"editorWidget.resizeBorder": "#9893a5",
|
||||
"errorForeground": "#b4637a",
|
||||
"extensionBadge.remoteBackground": "#907aa9",
|
||||
"extensionBadge.remoteForeground": "#faf4ed",
|
||||
"extensionButton.prominentBackground": "#d7827e",
|
||||
"extensionButton.prominentForeground": "#faf4ed",
|
||||
"extensionButton.prominentHoverBackground": "#d7827ee6",
|
||||
"extensionIcon.preReleaseForeground": "#286983",
|
||||
"extensionIcon.starForeground": "#d7827e",
|
||||
"extensionIcon.verifiedForeground": "#907aa9",
|
||||
"focusBorder": "#6e6a8614",
|
||||
"foreground": "#575279",
|
||||
"gitDecoration.addedResourceForeground": "#56949f",
|
||||
"gitDecoration.conflictingResourceForeground": "#b4637a",
|
||||
"gitDecoration.deletedResourceForeground": "#797593",
|
||||
"gitDecoration.ignoredResourceForeground": "#9893a5",
|
||||
"gitDecoration.modifiedResourceForeground": "#d7827e",
|
||||
"gitDecoration.renamedResourceForeground": "#286983",
|
||||
"gitDecoration.stageDeletedResourceForeground": "#b4637a",
|
||||
"gitDecoration.stageModifiedResourceForeground": "#907aa9",
|
||||
"gitDecoration.submoduleResourceForeground": "#ea9d34",
|
||||
"gitDecoration.untrackedResourceForeground": "#ea9d34",
|
||||
"icon.foreground": "#797593",
|
||||
"input.background": "#f2e9e180",
|
||||
"input.border": "#6e6a8614",
|
||||
"input.foreground": "#575279",
|
||||
"input.placeholderForeground": "#797593",
|
||||
"inputOption.activeBackground": "#d7827e26",
|
||||
"inputOption.activeForeground": "#d7827e",
|
||||
"inputValidation.errorBackground": "#fffaf3",
|
||||
"inputValidation.errorBorder": "#6e6a8626",
|
||||
"inputValidation.errorForeground": "#b4637a",
|
||||
"inputValidation.infoBackground": "#fffaf3",
|
||||
"inputValidation.infoBorder": "#6e6a8626",
|
||||
"inputValidation.infoForeground": "#56949f",
|
||||
"inputValidation.warningBackground": "#fffaf3",
|
||||
"inputValidation.warningBorder": "#6e6a8626",
|
||||
"inputValidation.warningForeground": "#56949f80",
|
||||
"keybindingLabel.background": "#f2e9e1",
|
||||
"keybindingLabel.border": "#6e6a8626",
|
||||
"keybindingLabel.bottomBorder": "#6e6a8626",
|
||||
"keybindingLabel.foreground": "#907aa9",
|
||||
"keybindingTable.headerBackground": "#f2e9e1",
|
||||
"keybindingTable.rowsBackground": "#fffaf3",
|
||||
"list.activeSelectionBackground": "#6e6a8614",
|
||||
"list.activeSelectionForeground": "#575279",
|
||||
"list.deemphasizedForeground": "#797593",
|
||||
"list.dropBackground": "#fffaf3",
|
||||
"list.errorForeground": "#b4637a",
|
||||
"list.filterMatchBackground": "#fffaf3",
|
||||
"list.filterMatchBorder": "#d7827e",
|
||||
"list.focusBackground": "#6e6a8626",
|
||||
"list.focusForeground": "#575279",
|
||||
"list.focusOutline": "#6e6a8614",
|
||||
"list.highlightForeground": "#d7827e",
|
||||
"list.hoverBackground": "#6e6a860d",
|
||||
"list.hoverForeground": "#575279",
|
||||
"list.inactiveFocusBackground": "#6e6a860d",
|
||||
"list.inactiveSelectionBackground": "#fffaf3",
|
||||
"list.inactiveSelectionForeground": "#575279",
|
||||
"list.invalidItemForeground": "#b4637a",
|
||||
"list.warningForeground": "#ea9d34",
|
||||
"listFilterWidget.background": "#fffaf3",
|
||||
"listFilterWidget.noMatchesOutline": "#b4637a",
|
||||
"listFilterWidget.outline": "#f2e9e1",
|
||||
"menu.background": "#fffaf3",
|
||||
"menu.border": "#6e6a860d",
|
||||
"menu.foreground": "#575279",
|
||||
"menu.selectionBackground": "#6e6a8614",
|
||||
"menu.selectionBorder": "#f2e9e1",
|
||||
"menu.selectionForeground": "#575279",
|
||||
"menu.separatorBackground": "#6e6a8626",
|
||||
"menubar.selectionBackground": "#6e6a8614",
|
||||
"menubar.selectionBorder": "#6e6a860d",
|
||||
"menubar.selectionForeground": "#575279",
|
||||
"merge.border": "#f2e9e1",
|
||||
"merge.commonContentBackground": "#6e6a8614",
|
||||
"merge.commonHeaderBackground": "#6e6a8614",
|
||||
"merge.currentContentBackground": "#ea9d3480",
|
||||
"merge.currentHeaderBackground": "#ea9d3480",
|
||||
"merge.incomingContentBackground": "#56949f80",
|
||||
"merge.incomingHeaderBackground": "#56949f80",
|
||||
"minimap.background": "#fffaf3",
|
||||
"minimap.errorHighlight": "#b4637a80",
|
||||
"minimap.findMatchHighlight": "#6e6a8614",
|
||||
"minimap.selectionHighlight": "#6e6a8614",
|
||||
"minimap.warningHighlight": "#ea9d3480",
|
||||
"minimapGutter.addedBackground": "#56949f",
|
||||
"minimapGutter.deletedBackground": "#b4637a",
|
||||
"minimapGutter.modifiedBackground": "#d7827e",
|
||||
"minimapSlider.activeBackground": "#6e6a8626",
|
||||
"minimapSlider.background": "#6e6a8614",
|
||||
"minimapSlider.hoverBackground": "#6e6a8614",
|
||||
"notebook.cellBorderColor": "#56949f80",
|
||||
"notebook.cellEditorBackground": "#fffaf3",
|
||||
"notebook.cellHoverBackground": "#f2e9e180",
|
||||
"notebook.focusedCellBackground": "#6e6a860d",
|
||||
"notebook.focusedCellBorder": "#56949f",
|
||||
"notebook.outputContainerBackgroundColor": "#6e6a860d",
|
||||
"notificationCenter.border": "#6e6a8614",
|
||||
"notificationCenterHeader.background": "#fffaf3",
|
||||
"notificationCenterHeader.foreground": "#797593",
|
||||
"notificationLink.foreground": "#907aa9",
|
||||
"notifications.background": "#fffaf3",
|
||||
"notifications.border": "#6e6a8614",
|
||||
"notifications.foreground": "#575279",
|
||||
"notificationsErrorIcon.foreground": "#b4637a",
|
||||
"notificationsInfoIcon.foreground": "#56949f",
|
||||
"notificationsWarningIcon.foreground": "#ea9d34",
|
||||
"notificationToast.border": "#6e6a8614",
|
||||
"panel.background": "#fffaf3",
|
||||
"panel.border": "#000000",
|
||||
"panel.dropBorder": "#f2e9e1",
|
||||
"panelInput.border": "#fffaf3",
|
||||
"panelSection.dropBackground": "#6e6a8614",
|
||||
"panelSectionHeader.background": "#fffaf3",
|
||||
"panelSectionHeader.foreground": "#575279",
|
||||
"panelTitle.activeBorder": "#6e6a8626",
|
||||
"panelTitle.activeForeground": "#575279",
|
||||
"panelTitle.inactiveForeground": "#797593",
|
||||
"peekView.border": "#f2e9e1",
|
||||
"peekViewEditor.background": "#fffaf3",
|
||||
"peekViewEditor.matchHighlightBackground": "#6e6a8626",
|
||||
"peekViewResult.background": "#fffaf3",
|
||||
"peekViewResult.fileForeground": "#797593",
|
||||
"peekViewResult.lineForeground": "#797593",
|
||||
"peekViewResult.matchHighlightBackground": "#6e6a8626",
|
||||
"peekViewResult.selectionBackground": "#6e6a8614",
|
||||
"peekViewResult.selectionForeground": "#575279",
|
||||
"peekViewTitle.background": "#f2e9e1",
|
||||
"peekViewTitleDescription.foreground": "#797593",
|
||||
"pickerGroup.border": "#6e6a8626",
|
||||
"pickerGroup.foreground": "#907aa9",
|
||||
"ports.iconRunningProcessForeground": "#d7827e",
|
||||
"problemsErrorIcon.foreground": "#b4637a",
|
||||
"problemsInfoIcon.foreground": "#56949f",
|
||||
"problemsWarningIcon.foreground": "#ea9d34",
|
||||
"progressBar.background": "#d7827e",
|
||||
"quickInput.background": "#fffaf3",
|
||||
"quickInput.foreground": "#797593",
|
||||
"quickInputList.focusBackground": "#6e6a8614",
|
||||
"quickInputList.focusForeground": "#575279",
|
||||
"quickInputList.focusIconForeground": "#575279",
|
||||
"scrollbar.shadow": "#fffaf34d",
|
||||
"scrollbarSlider.activeBackground": "#28698380",
|
||||
"scrollbarSlider.background": "#6e6a8614",
|
||||
"scrollbarSlider.hoverBackground": "#6e6a8626",
|
||||
"searchEditor.findMatchBackground": "#6e6a8614",
|
||||
"selection.background": "#6e6a8626",
|
||||
"settings.focusedRowBackground": "#fffaf3",
|
||||
"settings.headerForeground": "#575279",
|
||||
"settings.modifiedItemIndicator": "#d7827e",
|
||||
"settings.focusedRowBorder": "#6e6a8614",
|
||||
"settings.rowHoverBackground": "#fffaf3",
|
||||
"sideBar.background": "#faf4ed",
|
||||
"sideBar.dropBackground": "#fffaf3",
|
||||
"sideBar.foreground": "#797593",
|
||||
"sideBarSectionHeader.background": "#000000",
|
||||
"sideBarSectionHeader.border": "#6e6a8614",
|
||||
"statusBar.background": "#faf4ed",
|
||||
"statusBar.debuggingBackground": "#907aa9",
|
||||
"statusBar.debuggingForeground": "#faf4ed",
|
||||
"statusBar.foreground": "#797593",
|
||||
"statusBar.noFolderBackground": "#faf4ed",
|
||||
"statusBar.noFolderForeground": "#797593",
|
||||
"statusBarItem.activeBackground": "#6e6a8626",
|
||||
"statusBarItem.hoverBackground": "#6e6a8614",
|
||||
"statusBarItem.prominentBackground": "#f2e9e1",
|
||||
"statusBarItem.prominentForeground": "#575279",
|
||||
"statusBarItem.prominentHoverBackground": "#6e6a8614",
|
||||
"statusBarItem.remoteBackground": "#faf4ed",
|
||||
"statusBarItem.remoteForeground": "#ea9d34",
|
||||
"statusBarItem.errorBackground": "#faf4ed",
|
||||
"statusBarItem.errorForeground": "#b4637a",
|
||||
"symbolIcon.arrayForeground": "#797593",
|
||||
"symbolIcon.classForeground": "#797593",
|
||||
"symbolIcon.colorForeground": "#797593",
|
||||
"symbolIcon.constantForeground": "#797593",
|
||||
"symbolIcon.constructorForeground": "#797593",
|
||||
"symbolIcon.enumeratorForeground": "#797593",
|
||||
"symbolIcon.enumeratorMemberForeground": "#797593",
|
||||
"symbolIcon.eventForeground": "#797593",
|
||||
"symbolIcon.fieldForeground": "#797593",
|
||||
"symbolIcon.fileForeground": "#797593",
|
||||
"symbolIcon.folderForeground": "#797593",
|
||||
"symbolIcon.functionForeground": "#797593",
|
||||
"symbolIcon.interfaceForeground": "#797593",
|
||||
"symbolIcon.keyForeground": "#797593",
|
||||
"symbolIcon.keywordForeground": "#797593",
|
||||
"symbolIcon.methodForeground": "#797593",
|
||||
"symbolIcon.moduleForeground": "#797593",
|
||||
"symbolIcon.namespaceForeground": "#797593",
|
||||
"symbolIcon.nullForeground": "#797593",
|
||||
"symbolIcon.numberForeground": "#797593",
|
||||
"symbolIcon.objectForeground": "#797593",
|
||||
"symbolIcon.operatorForeground": "#797593",
|
||||
"symbolIcon.packageForeground": "#797593",
|
||||
"symbolIcon.propertyForeground": "#797593",
|
||||
"symbolIcon.referenceForeground": "#797593",
|
||||
"symbolIcon.snippetForeground": "#797593",
|
||||
"symbolIcon.stringForeground": "#797593",
|
||||
"symbolIcon.structForeground": "#797593",
|
||||
"symbolIcon.textForeground": "#797593",
|
||||
"symbolIcon.typeParameterForeground": "#797593",
|
||||
"symbolIcon.unitForeground": "#797593",
|
||||
"symbolIcon.variableForeground": "#797593",
|
||||
"tab.activeBackground": "#6e6a860d",
|
||||
"tab.activeForeground": "#575279",
|
||||
"tab.activeModifiedBorder": "#56949f",
|
||||
"tab.border": "#000000",
|
||||
"tab.hoverBackground": "#6e6a8614",
|
||||
"tab.inactiveBackground": "#000000",
|
||||
"tab.inactiveForeground": "#797593",
|
||||
"tab.inactiveModifiedBorder": "#56949f80",
|
||||
"tab.lastPinnedBorder": "#9893a5",
|
||||
"tab.unfocusedActiveBackground": "#000000",
|
||||
"tab.unfocusedHoverBackground": "#000000",
|
||||
"tab.unfocusedInactiveBackground": "#000000",
|
||||
"tab.unfocusedInactiveModifiedBorder": "#56949f80",
|
||||
"terminal.ansiBlack": "#f2e9e1",
|
||||
"terminal.ansiBlue": "#56949f",
|
||||
"terminal.ansiBrightBlack": "#797593",
|
||||
"terminal.ansiBrightBlue": "#56949f",
|
||||
"terminal.ansiBrightCyan": "#d7827e",
|
||||
"terminal.ansiBrightGreen": "#286983",
|
||||
"terminal.ansiBrightMagenta": "#907aa9",
|
||||
"terminal.ansiBrightRed": "#b4637a",
|
||||
"terminal.ansiBrightWhite": "#575279",
|
||||
"terminal.ansiBrightYellow": "#ea9d34",
|
||||
"terminal.ansiCyan": "#d7827e",
|
||||
"terminal.ansiGreen": "#286983",
|
||||
"terminal.ansiMagenta": "#907aa9",
|
||||
"terminal.ansiRed": "#b4637a",
|
||||
"terminal.ansiWhite": "#575279",
|
||||
"terminal.ansiYellow": "#ea9d34",
|
||||
"terminal.dropBackground": "#6e6a8614",
|
||||
"terminal.foreground": "#575279",
|
||||
"terminal.selectionBackground": "#6e6a8614",
|
||||
"terminal.tab.activeBorder": "#575279",
|
||||
"terminalCursor.background": "#575279",
|
||||
"terminalCursor.foreground": "#9893a5",
|
||||
"textBlockQuote.background": "#fffaf3",
|
||||
"textBlockQuote.border": "#6e6a8614",
|
||||
"textCodeBlock.background": "#fffaf3",
|
||||
"textLink.activeForeground": "#907aa9e6",
|
||||
"textLink.foreground": "#907aa9",
|
||||
"textPreformat.foreground": "#ea9d34",
|
||||
"textSeparator.foreground": "#797593",
|
||||
"titleBar.activeBackground": "#faf4ed",
|
||||
"titleBar.activeForeground": "#797593",
|
||||
"titleBar.inactiveBackground": "#fffaf3",
|
||||
"titleBar.inactiveForeground": "#797593",
|
||||
"toolbar.activeBackground": "#6e6a8626",
|
||||
"toolbar.hoverBackground": "#6e6a8614",
|
||||
"tree.indentGuidesStroke": "#797593",
|
||||
"walkThrough.embeddedEditorBackground": "#faf4ed",
|
||||
"welcomePage.background": "#faf4ed",
|
||||
"welcomePage.buttonBackground": "#fffaf3",
|
||||
"welcomePage.buttonHoverBackground": "#f2e9e1",
|
||||
"widget.shadow": "#fffaf34d",
|
||||
"window.activeBorder": "#fffaf3",
|
||||
"window.inactiveBorder": "#fffaf3"
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"scope": ["comment"],
|
||||
"settings": {
|
||||
"foreground": "#9893a5",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["constant"],
|
||||
"settings": {
|
||||
"foreground": "#286983"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["constant.numeric", "constant.language"],
|
||||
"settings": {
|
||||
"foreground": "#d7827e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["entity.name"],
|
||||
"settings": {
|
||||
"foreground": "#d7827e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"entity.name.section",
|
||||
"entity.name.tag",
|
||||
"entity.name.namespace",
|
||||
"entity.name.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#56949f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["entity.other.attribute-name", "entity.other.inherited-class"],
|
||||
"settings": {
|
||||
"foreground": "#907aa9",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["invalid"],
|
||||
"settings": {
|
||||
"foreground": "#b4637a"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["invalid.deprecated"],
|
||||
"settings": {
|
||||
"foreground": "#797593"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["keyword"],
|
||||
"settings": {
|
||||
"foreground": "#286983"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["markup.inserted.diff"],
|
||||
"settings": {
|
||||
"foreground": "#56949f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["markup.deleted.diff"],
|
||||
"settings": {
|
||||
"foreground": "#b4637a"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "markup.heading",
|
||||
"settings": {
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "markup.bold.markdown",
|
||||
"settings": {
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "markup.italic.markdown",
|
||||
"settings": {
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["meta.diff.range"],
|
||||
"settings": {
|
||||
"foreground": "#907aa9"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["meta.tag", "meta.brace"],
|
||||
"settings": {
|
||||
"foreground": "#575279"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["meta.import", "meta.export"],
|
||||
"settings": {
|
||||
"foreground": "#286983"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.directive.vue",
|
||||
"settings": {
|
||||
"foreground": "#907aa9",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.property-name.css",
|
||||
"settings": {
|
||||
"foreground": "#56949f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.property-value.css",
|
||||
"settings": {
|
||||
"foreground": "#ea9d34"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.tag.other.html",
|
||||
"settings": {
|
||||
"foreground": "#797593"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation"],
|
||||
"settings": {
|
||||
"foreground": "#797593"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation.accessor"],
|
||||
"settings": {
|
||||
"foreground": "#286983"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation.definition.string"],
|
||||
"settings": {
|
||||
"foreground": "#ea9d34"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation.definition.tag"],
|
||||
"settings": {
|
||||
"foreground": "#9893a5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["storage.type", "storage.modifier"],
|
||||
"settings": {
|
||||
"foreground": "#286983"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["string"],
|
||||
"settings": {
|
||||
"foreground": "#ea9d34"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["support"],
|
||||
"settings": {
|
||||
"foreground": "#56949f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["support.constant"],
|
||||
"settings": {
|
||||
"foreground": "#ea9d34"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["support.function"],
|
||||
"settings": {
|
||||
"foreground": "#b4637a",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["variable"],
|
||||
"settings": {
|
||||
"foreground": "#d7827e",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"variable.other",
|
||||
"variable.language",
|
||||
"variable.function",
|
||||
"variable.argument"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#575279"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["variable.parameter"],
|
||||
"settings": {
|
||||
"foreground": "#907aa9"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,680 +0,0 @@
|
||||
{
|
||||
"name": "Rosé Pine Moon",
|
||||
"type": "dark",
|
||||
"colors": {
|
||||
"activityBar.activeBorder": "#e0def4",
|
||||
"activityBar.background": "#232136",
|
||||
"activityBar.dropBorder": "#393552",
|
||||
"activityBar.foreground": "#e0def4",
|
||||
"activityBar.inactiveForeground": "#908caa",
|
||||
"activityBarBadge.background": "#ea9a97",
|
||||
"activityBarBadge.foreground": "#232136",
|
||||
"badge.background": "#ea9a97",
|
||||
"badge.foreground": "#232136",
|
||||
"banner.background": "#2a273f",
|
||||
"banner.foreground": "#e0def4",
|
||||
"banner.iconForeground": "#908caa",
|
||||
"breadcrumb.activeSelectionForeground": "#ea9a97",
|
||||
"breadcrumb.background": "#232136",
|
||||
"breadcrumb.focusForeground": "#908caa",
|
||||
"breadcrumb.foreground": "#6e6a86",
|
||||
"breadcrumbPicker.background": "#2a273f",
|
||||
"button.background": "#ea9a97",
|
||||
"button.foreground": "#232136",
|
||||
"button.hoverBackground": "#ea9a97e6",
|
||||
"button.secondaryBackground": "#2a273f",
|
||||
"button.secondaryForeground": "#e0def4",
|
||||
"button.secondaryHoverBackground": "#393552",
|
||||
"charts.blue": "#9ccfd8",
|
||||
"charts.foreground": "#e0def4",
|
||||
"charts.green": "#3e8fb0",
|
||||
"charts.lines": "#908caa",
|
||||
"charts.orange": "#ea9a97",
|
||||
"charts.purple": "#c4a7e7",
|
||||
"charts.red": "#eb6f92",
|
||||
"charts.yellow": "#f6c177",
|
||||
"checkbox.background": "#2a273f",
|
||||
"checkbox.border": "#817c9c26",
|
||||
"checkbox.foreground": "#e0def4",
|
||||
"debugExceptionWidget.background": "#2a273f",
|
||||
"debugExceptionWidget.border": "#817c9c26",
|
||||
"debugIcon.breakpointCurrentStackframeForeground": "#908caa",
|
||||
"debugIcon.breakpointDisabledForeground": "#908caa",
|
||||
"debugIcon.breakpointForeground": "#908caa",
|
||||
"debugIcon.breakpointStackframeForeground": "#908caa",
|
||||
"debugIcon.breakpointUnverifiedForeground": "#908caa",
|
||||
"debugIcon.continueForeground": "#908caa",
|
||||
"debugIcon.disconnectForeground": "#908caa",
|
||||
"debugIcon.pauseForeground": "#908caa",
|
||||
"debugIcon.restartForeground": "#908caa",
|
||||
"debugIcon.startForeground": "#908caa",
|
||||
"debugIcon.stepBackForeground": "#908caa",
|
||||
"debugIcon.stepIntoForeground": "#908caa",
|
||||
"debugIcon.stepOutForeground": "#908caa",
|
||||
"debugIcon.stepOverForeground": "#908caa",
|
||||
"debugIcon.stopForeground": "#eb6f92",
|
||||
"debugToolBar.background": "#2a273f",
|
||||
"debugToolBar.border": "#393552",
|
||||
"descriptionForeground": "#908caa",
|
||||
"diffEditor.border": "#393552",
|
||||
"diffEditor.diagonalFill": "#817c9c4d",
|
||||
"diffEditor.insertedLineBackground": "#9ccfd826",
|
||||
"diffEditor.insertedTextBackground": "#9ccfd826",
|
||||
"diffEditor.removedLineBackground": "#eb6f9226",
|
||||
"diffEditor.removedTextBackground": "#eb6f9226",
|
||||
"diffEditorOverview.insertedForeground": "#9ccfd880",
|
||||
"diffEditorOverview.removedForeground": "#eb6f9280",
|
||||
"dropdown.background": "#2a273f",
|
||||
"dropdown.border": "#817c9c26",
|
||||
"dropdown.foreground": "#e0def4",
|
||||
"dropdown.listBackground": "#2a273f",
|
||||
"editor.background": "#232136",
|
||||
"editor.findMatchBackground": "#817c9c4d",
|
||||
"editor.findMatchHighlightBackground": "#817c9c4d",
|
||||
"editor.findRangeHighlightBackground": "#817c9c4d",
|
||||
"editor.findRangeHighlightBorder": "#000000",
|
||||
"editor.focusedStackFrameHighlightBackground": "#817c9c26",
|
||||
"editor.foldBackground": "#2a273f",
|
||||
"editor.foreground": "#e0def4",
|
||||
"editor.hoverHighlightBackground": "#000000",
|
||||
"editor.inactiveSelectionBackground": "#817c9c14",
|
||||
"editor.inlineValuesBackground": "#000000",
|
||||
"editor.inlineValuesForeground": "#908caa",
|
||||
"editor.lineHighlightBackground": "#817c9c14",
|
||||
"editor.lineHighlightBorder": "#000000",
|
||||
"editor.linkedEditingBackground": "#2a273f",
|
||||
"editor.rangeHighlightBackground": "#817c9c14",
|
||||
"editor.selectionBackground": "#817c9c26",
|
||||
"editor.selectionForeground": "#e0def4",
|
||||
"editor.selectionHighlightBackground": "#817c9c26",
|
||||
"editor.selectionHighlightBorder": "#232136",
|
||||
"editor.snippetFinalTabstopHighlightBackground": "#817c9c26",
|
||||
"editor.snippetFinalTabstopHighlightBorder": "#2a273f",
|
||||
"editor.snippetTabstopHighlightBackground": "#817c9c26",
|
||||
"editor.snippetTabstopHighlightBorder": "#2a273f",
|
||||
"editor.stackFrameHighlightBackground": "#817c9c26",
|
||||
"editor.symbolHighlightBackground": "#817c9c26",
|
||||
"editor.symbolHighlightBorder": "#000000",
|
||||
"editor.wordHighlightBackground": "#817c9c26",
|
||||
"editor.wordHighlightBorder": "#000000",
|
||||
"editor.wordHighlightStrongBackground": "#817c9c26",
|
||||
"editor.wordHighlightStrongBorder": "#817c9c26",
|
||||
"editorBracketHighlight.foreground1": "#eb6f9280",
|
||||
"editorBracketHighlight.foreground2": "#3e8fb080",
|
||||
"editorBracketHighlight.foreground3": "#f6c17780",
|
||||
"editorBracketHighlight.foreground4": "#9ccfd880",
|
||||
"editorBracketHighlight.foreground5": "#ea9a9780",
|
||||
"editorBracketHighlight.foreground6": "#c4a7e780",
|
||||
"editorBracketMatch.background": "#000000",
|
||||
"editorBracketMatch.border": "#908caa",
|
||||
"editorBracketPairGuide.activeBackground1": "#3e8fb0",
|
||||
"editorBracketPairGuide.activeBackground2": "#ea9a97",
|
||||
"editorBracketPairGuide.activeBackground3": "#c4a7e7",
|
||||
"editorBracketPairGuide.activeBackground4": "#9ccfd8",
|
||||
"editorBracketPairGuide.activeBackground5": "#f6c177",
|
||||
"editorBracketPairGuide.activeBackground6": "#eb6f92",
|
||||
"editorBracketPairGuide.background1": "#3e8fb080",
|
||||
"editorBracketPairGuide.background2": "#ea9a9780",
|
||||
"editorBracketPairGuide.background3": "#c4a7e780",
|
||||
"editorBracketPairGuide.background4": "#9ccfd880",
|
||||
"editorBracketPairGuide.background5": "#f6c17780",
|
||||
"editorBracketPairGuide.background6": "#eb6f9280",
|
||||
"editorCodeLens.foreground": "#ea9a97",
|
||||
"editorCursor.background": "#e0def4",
|
||||
"editorCursor.foreground": "#6e6a86",
|
||||
"editorError.border": "#000000",
|
||||
"editorError.foreground": "#eb6f92",
|
||||
"editorGhostText.foreground": "#908caa",
|
||||
"editorGroup.border": "#000000",
|
||||
"editorGroup.dropBackground": "#2a273f",
|
||||
"editorGroup.emptyBackground": "#000000",
|
||||
"editorGroup.focusedEmptyBorder": "#000000",
|
||||
"editorGroupHeader.noTabsBackground": "#000000",
|
||||
"editorGroupHeader.tabsBackground": "#000000",
|
||||
"editorGroupHeader.tabsBorder": "#000000",
|
||||
"editorGutter.addedBackground": "#9ccfd8",
|
||||
"editorGutter.background": "#232136",
|
||||
"editorGutter.commentRangeForeground": "#908caa",
|
||||
"editorGutter.deletedBackground": "#eb6f92",
|
||||
"editorGutter.foldingControlForeground": "#c4a7e7",
|
||||
"editorGutter.modifiedBackground": "#ea9a97",
|
||||
"editorHint.border": "#000000",
|
||||
"editorHint.foreground": "#908caa",
|
||||
"editorHoverWidget.background": "#2a273f",
|
||||
"editorHoverWidget.border": "#6e6a8680",
|
||||
"editorHoverWidget.foreground": "#908caa",
|
||||
"editorHoverWidget.highlightForeground": "#e0def4",
|
||||
"editorHoverWidget.statusBarBackground": "#000000",
|
||||
"editorIndentGuide.activeBackground": "#6e6a86",
|
||||
"editorIndentGuide.background": "#817c9c4d",
|
||||
"editorInfo.border": "#393552",
|
||||
"editorInfo.foreground": "#9ccfd8",
|
||||
"editorInlayHint.background": "#393552",
|
||||
"editorInlayHint.foreground": "#908caa",
|
||||
"editorInlayHint.parameterBackground": "#393552",
|
||||
"editorInlayHint.parameterForeground": "#c4a7e7",
|
||||
"editorInlayHint.typeBackground": "#393552",
|
||||
"editorInlayHint.typeForeground": "#9ccfd8",
|
||||
"editorLightBulb.foreground": "#3e8fb0",
|
||||
"editorLightBulbAutoFix.foreground": "#ea9a97",
|
||||
"editorLineNumber.activeForeground": "#e0def4",
|
||||
"editorLineNumber.foreground": "#908caa",
|
||||
"editorLink.activeForeground": "#ea9a97",
|
||||
"editorMarkerNavigation.background": "#2a273f",
|
||||
"editorMarkerNavigationError.background": "#2a273f",
|
||||
"editorMarkerNavigationInfo.background": "#2a273f",
|
||||
"editorMarkerNavigationWarning.background": "#2a273f",
|
||||
"editorOverviewRuler.addedForeground": "#9ccfd880",
|
||||
"editorOverviewRuler.background": "#232136",
|
||||
"editorOverviewRuler.border": "#817c9c4d",
|
||||
"editorOverviewRuler.bracketMatchForeground": "#908caa",
|
||||
"editorOverviewRuler.commonContentForeground": "#817c9c14",
|
||||
"editorOverviewRuler.currentContentForeground": "#817c9c26",
|
||||
"editorOverviewRuler.deletedForeground": "#eb6f9280",
|
||||
"editorOverviewRuler.errorForeground": "#eb6f9280",
|
||||
"editorOverviewRuler.findMatchForeground": "#817c9c4d",
|
||||
"editorOverviewRuler.incomingContentForeground": "#c4a7e780",
|
||||
"editorOverviewRuler.infoForeground": "#9ccfd880",
|
||||
"editorOverviewRuler.modifiedForeground": "#ea9a9780",
|
||||
"editorOverviewRuler.rangeHighlightForeground": "#817c9c4d",
|
||||
"editorOverviewRuler.selectionHighlightForeground": "#817c9c4d",
|
||||
"editorOverviewRuler.warningForeground": "#f6c17780",
|
||||
"editorOverviewRuler.wordHighlightForeground": "#817c9c26",
|
||||
"editorOverviewRuler.wordHighlightStrongForeground": "#817c9c4d",
|
||||
"editorPane.background": "#000000",
|
||||
"editorRuler.foreground": "#817c9c4d",
|
||||
"editorSuggestWidget.background": "#2a273f",
|
||||
"editorSuggestWidget.border": "#000000",
|
||||
"editorSuggestWidget.focusHighlightForeground": "#ea9a97",
|
||||
"editorSuggestWidget.foreground": "#908caa",
|
||||
"editorSuggestWidget.highlightForeground": "#ea9a97",
|
||||
"editorSuggestWidget.selectedBackground": "#817c9c26",
|
||||
"editorSuggestWidget.selectedForeground": "#e0def4",
|
||||
"editorSuggestWidget.selectedIconForeground": "#e0def4",
|
||||
"editorUnnecessaryCode.border": "#000000",
|
||||
"editorUnnecessaryCode.opacity": "#e0def480",
|
||||
"editorWarning.border": "#000000",
|
||||
"editorWarning.foreground": "#f6c177",
|
||||
"editorWhitespace.foreground": "#6e6a86",
|
||||
"editorWidget.background": "#2a273f",
|
||||
"editorWidget.border": "#393552",
|
||||
"editorWidget.foreground": "#908caa",
|
||||
"editorWidget.resizeBorder": "#6e6a86",
|
||||
"errorForeground": "#eb6f92",
|
||||
"extensionBadge.remoteBackground": "#c4a7e7",
|
||||
"extensionBadge.remoteForeground": "#232136",
|
||||
"extensionButton.prominentBackground": "#ea9a97",
|
||||
"extensionButton.prominentForeground": "#232136",
|
||||
"extensionButton.prominentHoverBackground": "#ea9a97e6",
|
||||
"extensionIcon.preReleaseForeground": "#3e8fb0",
|
||||
"extensionIcon.starForeground": "#ea9a97",
|
||||
"extensionIcon.verifiedForeground": "#c4a7e7",
|
||||
"focusBorder": "#817c9c26",
|
||||
"foreground": "#e0def4",
|
||||
"gitDecoration.addedResourceForeground": "#9ccfd8",
|
||||
"gitDecoration.conflictingResourceForeground": "#eb6f92",
|
||||
"gitDecoration.deletedResourceForeground": "#908caa",
|
||||
"gitDecoration.ignoredResourceForeground": "#6e6a86",
|
||||
"gitDecoration.modifiedResourceForeground": "#ea9a97",
|
||||
"gitDecoration.renamedResourceForeground": "#3e8fb0",
|
||||
"gitDecoration.stageDeletedResourceForeground": "#eb6f92",
|
||||
"gitDecoration.stageModifiedResourceForeground": "#c4a7e7",
|
||||
"gitDecoration.submoduleResourceForeground": "#f6c177",
|
||||
"gitDecoration.untrackedResourceForeground": "#f6c177",
|
||||
"icon.foreground": "#908caa",
|
||||
"input.background": "#39355280",
|
||||
"input.border": "#817c9c26",
|
||||
"input.foreground": "#e0def4",
|
||||
"input.placeholderForeground": "#908caa",
|
||||
"inputOption.activeBackground": "#ea9a9726",
|
||||
"inputOption.activeForeground": "#ea9a97",
|
||||
"inputValidation.errorBackground": "#2a273f",
|
||||
"inputValidation.errorBorder": "#817c9c4d",
|
||||
"inputValidation.errorForeground": "#eb6f92",
|
||||
"inputValidation.infoBackground": "#2a273f",
|
||||
"inputValidation.infoBorder": "#817c9c4d",
|
||||
"inputValidation.infoForeground": "#9ccfd8",
|
||||
"inputValidation.warningBackground": "#2a273f",
|
||||
"inputValidation.warningBorder": "#817c9c4d",
|
||||
"inputValidation.warningForeground": "#9ccfd880",
|
||||
"keybindingLabel.background": "#393552",
|
||||
"keybindingLabel.border": "#817c9c4d",
|
||||
"keybindingLabel.bottomBorder": "#817c9c4d",
|
||||
"keybindingLabel.foreground": "#c4a7e7",
|
||||
"keybindingTable.headerBackground": "#393552",
|
||||
"keybindingTable.rowsBackground": "#2a273f",
|
||||
"list.activeSelectionBackground": "#817c9c26",
|
||||
"list.activeSelectionForeground": "#e0def4",
|
||||
"list.deemphasizedForeground": "#908caa",
|
||||
"list.dropBackground": "#2a273f",
|
||||
"list.errorForeground": "#eb6f92",
|
||||
"list.filterMatchBackground": "#2a273f",
|
||||
"list.filterMatchBorder": "#ea9a97",
|
||||
"list.focusBackground": "#817c9c4d",
|
||||
"list.focusForeground": "#e0def4",
|
||||
"list.focusOutline": "#817c9c26",
|
||||
"list.highlightForeground": "#ea9a97",
|
||||
"list.hoverBackground": "#817c9c14",
|
||||
"list.hoverForeground": "#e0def4",
|
||||
"list.inactiveFocusBackground": "#817c9c14",
|
||||
"list.inactiveSelectionBackground": "#2a273f",
|
||||
"list.inactiveSelectionForeground": "#e0def4",
|
||||
"list.invalidItemForeground": "#eb6f92",
|
||||
"list.warningForeground": "#f6c177",
|
||||
"listFilterWidget.background": "#2a273f",
|
||||
"listFilterWidget.noMatchesOutline": "#eb6f92",
|
||||
"listFilterWidget.outline": "#393552",
|
||||
"menu.background": "#2a273f",
|
||||
"menu.border": "#817c9c14",
|
||||
"menu.foreground": "#e0def4",
|
||||
"menu.selectionBackground": "#817c9c26",
|
||||
"menu.selectionBorder": "#393552",
|
||||
"menu.selectionForeground": "#e0def4",
|
||||
"menu.separatorBackground": "#817c9c4d",
|
||||
"menubar.selectionBackground": "#817c9c26",
|
||||
"menubar.selectionBorder": "#817c9c14",
|
||||
"menubar.selectionForeground": "#e0def4",
|
||||
"merge.border": "#393552",
|
||||
"merge.commonContentBackground": "#817c9c26",
|
||||
"merge.commonHeaderBackground": "#817c9c26",
|
||||
"merge.currentContentBackground": "#f6c17780",
|
||||
"merge.currentHeaderBackground": "#f6c17780",
|
||||
"merge.incomingContentBackground": "#9ccfd880",
|
||||
"merge.incomingHeaderBackground": "#9ccfd880",
|
||||
"minimap.background": "#2a273f",
|
||||
"minimap.errorHighlight": "#eb6f9280",
|
||||
"minimap.findMatchHighlight": "#817c9c26",
|
||||
"minimap.selectionHighlight": "#817c9c26",
|
||||
"minimap.warningHighlight": "#f6c17780",
|
||||
"minimapGutter.addedBackground": "#9ccfd8",
|
||||
"minimapGutter.deletedBackground": "#eb6f92",
|
||||
"minimapGutter.modifiedBackground": "#ea9a97",
|
||||
"minimapSlider.activeBackground": "#817c9c4d",
|
||||
"minimapSlider.background": "#817c9c26",
|
||||
"minimapSlider.hoverBackground": "#817c9c26",
|
||||
"notebook.cellBorderColor": "#9ccfd880",
|
||||
"notebook.cellEditorBackground": "#2a273f",
|
||||
"notebook.cellHoverBackground": "#39355280",
|
||||
"notebook.focusedCellBackground": "#817c9c14",
|
||||
"notebook.focusedCellBorder": "#9ccfd8",
|
||||
"notebook.outputContainerBackgroundColor": "#817c9c14",
|
||||
"notificationCenter.border": "#817c9c26",
|
||||
"notificationCenterHeader.background": "#2a273f",
|
||||
"notificationCenterHeader.foreground": "#908caa",
|
||||
"notificationLink.foreground": "#c4a7e7",
|
||||
"notifications.background": "#2a273f",
|
||||
"notifications.border": "#817c9c26",
|
||||
"notifications.foreground": "#e0def4",
|
||||
"notificationsErrorIcon.foreground": "#eb6f92",
|
||||
"notificationsInfoIcon.foreground": "#9ccfd8",
|
||||
"notificationsWarningIcon.foreground": "#f6c177",
|
||||
"notificationToast.border": "#817c9c26",
|
||||
"panel.background": "#2a273f",
|
||||
"panel.border": "#000000",
|
||||
"panel.dropBorder": "#393552",
|
||||
"panelInput.border": "#2a273f",
|
||||
"panelSection.dropBackground": "#817c9c26",
|
||||
"panelSectionHeader.background": "#2a273f",
|
||||
"panelSectionHeader.foreground": "#e0def4",
|
||||
"panelTitle.activeBorder": "#817c9c4d",
|
||||
"panelTitle.activeForeground": "#e0def4",
|
||||
"panelTitle.inactiveForeground": "#908caa",
|
||||
"peekView.border": "#393552",
|
||||
"peekViewEditor.background": "#2a273f",
|
||||
"peekViewEditor.matchHighlightBackground": "#817c9c4d",
|
||||
"peekViewResult.background": "#2a273f",
|
||||
"peekViewResult.fileForeground": "#908caa",
|
||||
"peekViewResult.lineForeground": "#908caa",
|
||||
"peekViewResult.matchHighlightBackground": "#817c9c4d",
|
||||
"peekViewResult.selectionBackground": "#817c9c26",
|
||||
"peekViewResult.selectionForeground": "#e0def4",
|
||||
"peekViewTitle.background": "#393552",
|
||||
"peekViewTitleDescription.foreground": "#908caa",
|
||||
"pickerGroup.border": "#817c9c4d",
|
||||
"pickerGroup.foreground": "#c4a7e7",
|
||||
"ports.iconRunningProcessForeground": "#ea9a97",
|
||||
"problemsErrorIcon.foreground": "#eb6f92",
|
||||
"problemsInfoIcon.foreground": "#9ccfd8",
|
||||
"problemsWarningIcon.foreground": "#f6c177",
|
||||
"progressBar.background": "#ea9a97",
|
||||
"quickInput.background": "#2a273f",
|
||||
"quickInput.foreground": "#908caa",
|
||||
"quickInputList.focusBackground": "#817c9c26",
|
||||
"quickInputList.focusForeground": "#e0def4",
|
||||
"quickInputList.focusIconForeground": "#e0def4",
|
||||
"scrollbar.shadow": "#2a273f4d",
|
||||
"scrollbarSlider.activeBackground": "#3e8fb080",
|
||||
"scrollbarSlider.background": "#817c9c26",
|
||||
"scrollbarSlider.hoverBackground": "#817c9c4d",
|
||||
"searchEditor.findMatchBackground": "#817c9c26",
|
||||
"selection.background": "#817c9c4d",
|
||||
"settings.focusedRowBackground": "#2a273f",
|
||||
"settings.headerForeground": "#e0def4",
|
||||
"settings.modifiedItemIndicator": "#ea9a97",
|
||||
"settings.focusedRowBorder": "#817c9c26",
|
||||
"settings.rowHoverBackground": "#2a273f",
|
||||
"sideBar.background": "#232136",
|
||||
"sideBar.dropBackground": "#2a273f",
|
||||
"sideBar.foreground": "#908caa",
|
||||
"sideBarSectionHeader.background": "#000000",
|
||||
"sideBarSectionHeader.border": "#817c9c26",
|
||||
"statusBar.background": "#232136",
|
||||
"statusBar.debuggingBackground": "#c4a7e7",
|
||||
"statusBar.debuggingForeground": "#232136",
|
||||
"statusBar.foreground": "#908caa",
|
||||
"statusBar.noFolderBackground": "#232136",
|
||||
"statusBar.noFolderForeground": "#908caa",
|
||||
"statusBarItem.activeBackground": "#817c9c4d",
|
||||
"statusBarItem.hoverBackground": "#817c9c26",
|
||||
"statusBarItem.prominentBackground": "#393552",
|
||||
"statusBarItem.prominentForeground": "#e0def4",
|
||||
"statusBarItem.prominentHoverBackground": "#817c9c26",
|
||||
"statusBarItem.remoteBackground": "#232136",
|
||||
"statusBarItem.remoteForeground": "#f6c177",
|
||||
"statusBarItem.errorBackground": "#232136",
|
||||
"statusBarItem.errorForeground": "#eb6f92",
|
||||
"symbolIcon.arrayForeground": "#908caa",
|
||||
"symbolIcon.classForeground": "#908caa",
|
||||
"symbolIcon.colorForeground": "#908caa",
|
||||
"symbolIcon.constantForeground": "#908caa",
|
||||
"symbolIcon.constructorForeground": "#908caa",
|
||||
"symbolIcon.enumeratorForeground": "#908caa",
|
||||
"symbolIcon.enumeratorMemberForeground": "#908caa",
|
||||
"symbolIcon.eventForeground": "#908caa",
|
||||
"symbolIcon.fieldForeground": "#908caa",
|
||||
"symbolIcon.fileForeground": "#908caa",
|
||||
"symbolIcon.folderForeground": "#908caa",
|
||||
"symbolIcon.functionForeground": "#908caa",
|
||||
"symbolIcon.interfaceForeground": "#908caa",
|
||||
"symbolIcon.keyForeground": "#908caa",
|
||||
"symbolIcon.keywordForeground": "#908caa",
|
||||
"symbolIcon.methodForeground": "#908caa",
|
||||
"symbolIcon.moduleForeground": "#908caa",
|
||||
"symbolIcon.namespaceForeground": "#908caa",
|
||||
"symbolIcon.nullForeground": "#908caa",
|
||||
"symbolIcon.numberForeground": "#908caa",
|
||||
"symbolIcon.objectForeground": "#908caa",
|
||||
"symbolIcon.operatorForeground": "#908caa",
|
||||
"symbolIcon.packageForeground": "#908caa",
|
||||
"symbolIcon.propertyForeground": "#908caa",
|
||||
"symbolIcon.referenceForeground": "#908caa",
|
||||
"symbolIcon.snippetForeground": "#908caa",
|
||||
"symbolIcon.stringForeground": "#908caa",
|
||||
"symbolIcon.structForeground": "#908caa",
|
||||
"symbolIcon.textForeground": "#908caa",
|
||||
"symbolIcon.typeParameterForeground": "#908caa",
|
||||
"symbolIcon.unitForeground": "#908caa",
|
||||
"symbolIcon.variableForeground": "#908caa",
|
||||
"tab.activeBackground": "#817c9c14",
|
||||
"tab.activeForeground": "#e0def4",
|
||||
"tab.activeModifiedBorder": "#9ccfd8",
|
||||
"tab.border": "#000000",
|
||||
"tab.hoverBackground": "#817c9c26",
|
||||
"tab.inactiveBackground": "#000000",
|
||||
"tab.inactiveForeground": "#908caa",
|
||||
"tab.inactiveModifiedBorder": "#9ccfd880",
|
||||
"tab.lastPinnedBorder": "#6e6a86",
|
||||
"tab.unfocusedActiveBackground": "#000000",
|
||||
"tab.unfocusedHoverBackground": "#000000",
|
||||
"tab.unfocusedInactiveBackground": "#000000",
|
||||
"tab.unfocusedInactiveModifiedBorder": "#9ccfd880",
|
||||
"terminal.ansiBlack": "#393552",
|
||||
"terminal.ansiBlue": "#9ccfd8",
|
||||
"terminal.ansiBrightBlack": "#908caa",
|
||||
"terminal.ansiBrightBlue": "#9ccfd8",
|
||||
"terminal.ansiBrightCyan": "#ea9a97",
|
||||
"terminal.ansiBrightGreen": "#3e8fb0",
|
||||
"terminal.ansiBrightMagenta": "#c4a7e7",
|
||||
"terminal.ansiBrightRed": "#eb6f92",
|
||||
"terminal.ansiBrightWhite": "#e0def4",
|
||||
"terminal.ansiBrightYellow": "#f6c177",
|
||||
"terminal.ansiCyan": "#ea9a97",
|
||||
"terminal.ansiGreen": "#3e8fb0",
|
||||
"terminal.ansiMagenta": "#c4a7e7",
|
||||
"terminal.ansiRed": "#eb6f92",
|
||||
"terminal.ansiWhite": "#e0def4",
|
||||
"terminal.ansiYellow": "#f6c177",
|
||||
"terminal.dropBackground": "#817c9c26",
|
||||
"terminal.foreground": "#e0def4",
|
||||
"terminal.selectionBackground": "#817c9c26",
|
||||
"terminal.tab.activeBorder": "#e0def4",
|
||||
"terminalCursor.background": "#e0def4",
|
||||
"terminalCursor.foreground": "#6e6a86",
|
||||
"textBlockQuote.background": "#2a273f",
|
||||
"textBlockQuote.border": "#817c9c26",
|
||||
"textCodeBlock.background": "#2a273f",
|
||||
"textLink.activeForeground": "#c4a7e7e6",
|
||||
"textLink.foreground": "#c4a7e7",
|
||||
"textPreformat.foreground": "#f6c177",
|
||||
"textSeparator.foreground": "#908caa",
|
||||
"titleBar.activeBackground": "#232136",
|
||||
"titleBar.activeForeground": "#908caa",
|
||||
"titleBar.inactiveBackground": "#2a273f",
|
||||
"titleBar.inactiveForeground": "#908caa",
|
||||
"toolbar.activeBackground": "#817c9c4d",
|
||||
"toolbar.hoverBackground": "#817c9c26",
|
||||
"tree.indentGuidesStroke": "#908caa",
|
||||
"walkThrough.embeddedEditorBackground": "#232136",
|
||||
"welcomePage.background": "#232136",
|
||||
"welcomePage.buttonBackground": "#2a273f",
|
||||
"welcomePage.buttonHoverBackground": "#393552",
|
||||
"widget.shadow": "#2a273f4d",
|
||||
"window.activeBorder": "#2a273f",
|
||||
"window.inactiveBorder": "#2a273f"
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"scope": ["comment"],
|
||||
"settings": {
|
||||
"foreground": "#6e6a86",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["constant"],
|
||||
"settings": {
|
||||
"foreground": "#3e8fb0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["constant.numeric", "constant.language"],
|
||||
"settings": {
|
||||
"foreground": "#ea9a97"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["entity.name"],
|
||||
"settings": {
|
||||
"foreground": "#ea9a97"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"entity.name.section",
|
||||
"entity.name.tag",
|
||||
"entity.name.namespace",
|
||||
"entity.name.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#9ccfd8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["entity.other.attribute-name", "entity.other.inherited-class"],
|
||||
"settings": {
|
||||
"foreground": "#c4a7e7",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["invalid"],
|
||||
"settings": {
|
||||
"foreground": "#eb6f92"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["invalid.deprecated"],
|
||||
"settings": {
|
||||
"foreground": "#908caa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["keyword"],
|
||||
"settings": {
|
||||
"foreground": "#3e8fb0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["markup.inserted.diff"],
|
||||
"settings": {
|
||||
"foreground": "#9ccfd8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["markup.deleted.diff"],
|
||||
"settings": {
|
||||
"foreground": "#eb6f92"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "markup.heading",
|
||||
"settings": {
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "markup.bold.markdown",
|
||||
"settings": {
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "markup.italic.markdown",
|
||||
"settings": {
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["meta.diff.range"],
|
||||
"settings": {
|
||||
"foreground": "#c4a7e7"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["meta.tag", "meta.brace"],
|
||||
"settings": {
|
||||
"foreground": "#e0def4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["meta.import", "meta.export"],
|
||||
"settings": {
|
||||
"foreground": "#3e8fb0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.directive.vue",
|
||||
"settings": {
|
||||
"foreground": "#c4a7e7",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.property-name.css",
|
||||
"settings": {
|
||||
"foreground": "#9ccfd8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.property-value.css",
|
||||
"settings": {
|
||||
"foreground": "#f6c177"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.tag.other.html",
|
||||
"settings": {
|
||||
"foreground": "#908caa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation"],
|
||||
"settings": {
|
||||
"foreground": "#908caa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation.accessor"],
|
||||
"settings": {
|
||||
"foreground": "#3e8fb0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation.definition.string"],
|
||||
"settings": {
|
||||
"foreground": "#f6c177"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation.definition.tag"],
|
||||
"settings": {
|
||||
"foreground": "#6e6a86"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["storage.type", "storage.modifier"],
|
||||
"settings": {
|
||||
"foreground": "#3e8fb0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["string"],
|
||||
"settings": {
|
||||
"foreground": "#f6c177"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["support"],
|
||||
"settings": {
|
||||
"foreground": "#9ccfd8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["support.constant"],
|
||||
"settings": {
|
||||
"foreground": "#f6c177"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["support.function"],
|
||||
"settings": {
|
||||
"foreground": "#eb6f92",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["variable"],
|
||||
"settings": {
|
||||
"foreground": "#ea9a97",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"variable.other",
|
||||
"variable.language",
|
||||
"variable.function",
|
||||
"variable.argument"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#e0def4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["variable.parameter"],
|
||||
"settings": {
|
||||
"foreground": "#c4a7e7"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,680 +0,0 @@
|
||||
{
|
||||
"name": "Rosé Pine",
|
||||
"type": "dark",
|
||||
"colors": {
|
||||
"activityBar.activeBorder": "#e0def4",
|
||||
"activityBar.background": "#191724",
|
||||
"activityBar.dropBorder": "#26233a",
|
||||
"activityBar.foreground": "#e0def4",
|
||||
"activityBar.inactiveForeground": "#908caa",
|
||||
"activityBarBadge.background": "#ebbcba",
|
||||
"activityBarBadge.foreground": "#191724",
|
||||
"badge.background": "#ebbcba",
|
||||
"badge.foreground": "#191724",
|
||||
"banner.background": "#1f1d2e",
|
||||
"banner.foreground": "#e0def4",
|
||||
"banner.iconForeground": "#908caa",
|
||||
"breadcrumb.activeSelectionForeground": "#ebbcba",
|
||||
"breadcrumb.background": "#191724",
|
||||
"breadcrumb.focusForeground": "#908caa",
|
||||
"breadcrumb.foreground": "#6e6a86",
|
||||
"breadcrumbPicker.background": "#1f1d2e",
|
||||
"button.background": "#ebbcba",
|
||||
"button.foreground": "#191724",
|
||||
"button.hoverBackground": "#ebbcbae6",
|
||||
"button.secondaryBackground": "#1f1d2e",
|
||||
"button.secondaryForeground": "#e0def4",
|
||||
"button.secondaryHoverBackground": "#26233a",
|
||||
"charts.blue": "#9ccfd8",
|
||||
"charts.foreground": "#e0def4",
|
||||
"charts.green": "#31748f",
|
||||
"charts.lines": "#908caa",
|
||||
"charts.orange": "#ebbcba",
|
||||
"charts.purple": "#c4a7e7",
|
||||
"charts.red": "#eb6f92",
|
||||
"charts.yellow": "#f6c177",
|
||||
"checkbox.background": "#1f1d2e",
|
||||
"checkbox.border": "#6e6a8633",
|
||||
"checkbox.foreground": "#e0def4",
|
||||
"debugExceptionWidget.background": "#1f1d2e",
|
||||
"debugExceptionWidget.border": "#6e6a8633",
|
||||
"debugIcon.breakpointCurrentStackframeForeground": "#908caa",
|
||||
"debugIcon.breakpointDisabledForeground": "#908caa",
|
||||
"debugIcon.breakpointForeground": "#908caa",
|
||||
"debugIcon.breakpointStackframeForeground": "#908caa",
|
||||
"debugIcon.breakpointUnverifiedForeground": "#908caa",
|
||||
"debugIcon.continueForeground": "#908caa",
|
||||
"debugIcon.disconnectForeground": "#908caa",
|
||||
"debugIcon.pauseForeground": "#908caa",
|
||||
"debugIcon.restartForeground": "#908caa",
|
||||
"debugIcon.startForeground": "#908caa",
|
||||
"debugIcon.stepBackForeground": "#908caa",
|
||||
"debugIcon.stepIntoForeground": "#908caa",
|
||||
"debugIcon.stepOutForeground": "#908caa",
|
||||
"debugIcon.stepOverForeground": "#908caa",
|
||||
"debugIcon.stopForeground": "#eb6f92",
|
||||
"debugToolBar.background": "#1f1d2e",
|
||||
"debugToolBar.border": "#26233a",
|
||||
"descriptionForeground": "#908caa",
|
||||
"diffEditor.border": "#26233a",
|
||||
"diffEditor.diagonalFill": "#6e6a8666",
|
||||
"diffEditor.insertedLineBackground": "#9ccfd826",
|
||||
"diffEditor.insertedTextBackground": "#9ccfd826",
|
||||
"diffEditor.removedLineBackground": "#eb6f9226",
|
||||
"diffEditor.removedTextBackground": "#eb6f9226",
|
||||
"diffEditorOverview.insertedForeground": "#9ccfd880",
|
||||
"diffEditorOverview.removedForeground": "#eb6f9280",
|
||||
"dropdown.background": "#1f1d2e",
|
||||
"dropdown.border": "#6e6a8633",
|
||||
"dropdown.foreground": "#e0def4",
|
||||
"dropdown.listBackground": "#1f1d2e",
|
||||
"editor.background": "#191724",
|
||||
"editor.findMatchBackground": "#6e6a8666",
|
||||
"editor.findMatchHighlightBackground": "#6e6a8666",
|
||||
"editor.findRangeHighlightBackground": "#6e6a8666",
|
||||
"editor.findRangeHighlightBorder": "#000000",
|
||||
"editor.focusedStackFrameHighlightBackground": "#6e6a8633",
|
||||
"editor.foldBackground": "#1f1d2e",
|
||||
"editor.foreground": "#e0def4",
|
||||
"editor.hoverHighlightBackground": "#000000",
|
||||
"editor.inactiveSelectionBackground": "#6e6a861a",
|
||||
"editor.inlineValuesBackground": "#000000",
|
||||
"editor.inlineValuesForeground": "#908caa",
|
||||
"editor.lineHighlightBackground": "#6e6a861a",
|
||||
"editor.lineHighlightBorder": "#000000",
|
||||
"editor.linkedEditingBackground": "#1f1d2e",
|
||||
"editor.rangeHighlightBackground": "#6e6a861a",
|
||||
"editor.selectionBackground": "#6e6a8633",
|
||||
"editor.selectionForeground": "#e0def4",
|
||||
"editor.selectionHighlightBackground": "#6e6a8633",
|
||||
"editor.selectionHighlightBorder": "#191724",
|
||||
"editor.snippetFinalTabstopHighlightBackground": "#6e6a8633",
|
||||
"editor.snippetFinalTabstopHighlightBorder": "#1f1d2e",
|
||||
"editor.snippetTabstopHighlightBackground": "#6e6a8633",
|
||||
"editor.snippetTabstopHighlightBorder": "#1f1d2e",
|
||||
"editor.stackFrameHighlightBackground": "#6e6a8633",
|
||||
"editor.symbolHighlightBackground": "#6e6a8633",
|
||||
"editor.symbolHighlightBorder": "#000000",
|
||||
"editor.wordHighlightBackground": "#6e6a8633",
|
||||
"editor.wordHighlightBorder": "#000000",
|
||||
"editor.wordHighlightStrongBackground": "#6e6a8633",
|
||||
"editor.wordHighlightStrongBorder": "#6e6a8633",
|
||||
"editorBracketHighlight.foreground1": "#eb6f9280",
|
||||
"editorBracketHighlight.foreground2": "#31748f80",
|
||||
"editorBracketHighlight.foreground3": "#f6c17780",
|
||||
"editorBracketHighlight.foreground4": "#9ccfd880",
|
||||
"editorBracketHighlight.foreground5": "#ebbcba80",
|
||||
"editorBracketHighlight.foreground6": "#c4a7e780",
|
||||
"editorBracketMatch.background": "#000000",
|
||||
"editorBracketMatch.border": "#908caa",
|
||||
"editorBracketPairGuide.activeBackground1": "#31748f",
|
||||
"editorBracketPairGuide.activeBackground2": "#ebbcba",
|
||||
"editorBracketPairGuide.activeBackground3": "#c4a7e7",
|
||||
"editorBracketPairGuide.activeBackground4": "#9ccfd8",
|
||||
"editorBracketPairGuide.activeBackground5": "#f6c177",
|
||||
"editorBracketPairGuide.activeBackground6": "#eb6f92",
|
||||
"editorBracketPairGuide.background1": "#31748f80",
|
||||
"editorBracketPairGuide.background2": "#ebbcba80",
|
||||
"editorBracketPairGuide.background3": "#c4a7e780",
|
||||
"editorBracketPairGuide.background4": "#9ccfd880",
|
||||
"editorBracketPairGuide.background5": "#f6c17780",
|
||||
"editorBracketPairGuide.background6": "#eb6f9280",
|
||||
"editorCodeLens.foreground": "#ebbcba",
|
||||
"editorCursor.background": "#e0def4",
|
||||
"editorCursor.foreground": "#6e6a86",
|
||||
"editorError.border": "#000000",
|
||||
"editorError.foreground": "#eb6f92",
|
||||
"editorGhostText.foreground": "#908caa",
|
||||
"editorGroup.border": "#000000",
|
||||
"editorGroup.dropBackground": "#1f1d2e",
|
||||
"editorGroup.emptyBackground": "#000000",
|
||||
"editorGroup.focusedEmptyBorder": "#000000",
|
||||
"editorGroupHeader.noTabsBackground": "#000000",
|
||||
"editorGroupHeader.tabsBackground": "#000000",
|
||||
"editorGroupHeader.tabsBorder": "#000000",
|
||||
"editorGutter.addedBackground": "#9ccfd8",
|
||||
"editorGutter.background": "#191724",
|
||||
"editorGutter.commentRangeForeground": "#908caa",
|
||||
"editorGutter.deletedBackground": "#eb6f92",
|
||||
"editorGutter.foldingControlForeground": "#c4a7e7",
|
||||
"editorGutter.modifiedBackground": "#ebbcba",
|
||||
"editorHint.border": "#000000",
|
||||
"editorHint.foreground": "#908caa",
|
||||
"editorHoverWidget.background": "#1f1d2e",
|
||||
"editorHoverWidget.border": "#6e6a8680",
|
||||
"editorHoverWidget.foreground": "#908caa",
|
||||
"editorHoverWidget.highlightForeground": "#e0def4",
|
||||
"editorHoverWidget.statusBarBackground": "#000000",
|
||||
"editorIndentGuide.activeBackground": "#6e6a86",
|
||||
"editorIndentGuide.background": "#6e6a8666",
|
||||
"editorInfo.border": "#26233a",
|
||||
"editorInfo.foreground": "#9ccfd8",
|
||||
"editorInlayHint.background": "#26233a",
|
||||
"editorInlayHint.foreground": "#908caa",
|
||||
"editorInlayHint.parameterBackground": "#26233a",
|
||||
"editorInlayHint.parameterForeground": "#c4a7e7",
|
||||
"editorInlayHint.typeBackground": "#26233a",
|
||||
"editorInlayHint.typeForeground": "#9ccfd8",
|
||||
"editorLightBulb.foreground": "#31748f",
|
||||
"editorLightBulbAutoFix.foreground": "#ebbcba",
|
||||
"editorLineNumber.activeForeground": "#e0def4",
|
||||
"editorLineNumber.foreground": "#908caa",
|
||||
"editorLink.activeForeground": "#ebbcba",
|
||||
"editorMarkerNavigation.background": "#1f1d2e",
|
||||
"editorMarkerNavigationError.background": "#1f1d2e",
|
||||
"editorMarkerNavigationInfo.background": "#1f1d2e",
|
||||
"editorMarkerNavigationWarning.background": "#1f1d2e",
|
||||
"editorOverviewRuler.addedForeground": "#9ccfd880",
|
||||
"editorOverviewRuler.background": "#191724",
|
||||
"editorOverviewRuler.border": "#6e6a8666",
|
||||
"editorOverviewRuler.bracketMatchForeground": "#908caa",
|
||||
"editorOverviewRuler.commonContentForeground": "#6e6a861a",
|
||||
"editorOverviewRuler.currentContentForeground": "#6e6a8633",
|
||||
"editorOverviewRuler.deletedForeground": "#eb6f9280",
|
||||
"editorOverviewRuler.errorForeground": "#eb6f9280",
|
||||
"editorOverviewRuler.findMatchForeground": "#6e6a8666",
|
||||
"editorOverviewRuler.incomingContentForeground": "#c4a7e780",
|
||||
"editorOverviewRuler.infoForeground": "#9ccfd880",
|
||||
"editorOverviewRuler.modifiedForeground": "#ebbcba80",
|
||||
"editorOverviewRuler.rangeHighlightForeground": "#6e6a8666",
|
||||
"editorOverviewRuler.selectionHighlightForeground": "#6e6a8666",
|
||||
"editorOverviewRuler.warningForeground": "#f6c17780",
|
||||
"editorOverviewRuler.wordHighlightForeground": "#6e6a8633",
|
||||
"editorOverviewRuler.wordHighlightStrongForeground": "#6e6a8666",
|
||||
"editorPane.background": "#000000",
|
||||
"editorRuler.foreground": "#6e6a8666",
|
||||
"editorSuggestWidget.background": "#1f1d2e",
|
||||
"editorSuggestWidget.border": "#000000",
|
||||
"editorSuggestWidget.focusHighlightForeground": "#ebbcba",
|
||||
"editorSuggestWidget.foreground": "#908caa",
|
||||
"editorSuggestWidget.highlightForeground": "#ebbcba",
|
||||
"editorSuggestWidget.selectedBackground": "#6e6a8633",
|
||||
"editorSuggestWidget.selectedForeground": "#e0def4",
|
||||
"editorSuggestWidget.selectedIconForeground": "#e0def4",
|
||||
"editorUnnecessaryCode.border": "#000000",
|
||||
"editorUnnecessaryCode.opacity": "#e0def480",
|
||||
"editorWarning.border": "#000000",
|
||||
"editorWarning.foreground": "#f6c177",
|
||||
"editorWhitespace.foreground": "#6e6a86",
|
||||
"editorWidget.background": "#1f1d2e",
|
||||
"editorWidget.border": "#26233a",
|
||||
"editorWidget.foreground": "#908caa",
|
||||
"editorWidget.resizeBorder": "#6e6a86",
|
||||
"errorForeground": "#eb6f92",
|
||||
"extensionBadge.remoteBackground": "#c4a7e7",
|
||||
"extensionBadge.remoteForeground": "#191724",
|
||||
"extensionButton.prominentBackground": "#ebbcba",
|
||||
"extensionButton.prominentForeground": "#191724",
|
||||
"extensionButton.prominentHoverBackground": "#ebbcbae6",
|
||||
"extensionIcon.preReleaseForeground": "#31748f",
|
||||
"extensionIcon.starForeground": "#ebbcba",
|
||||
"extensionIcon.verifiedForeground": "#c4a7e7",
|
||||
"focusBorder": "#6e6a8633",
|
||||
"foreground": "#e0def4",
|
||||
"gitDecoration.addedResourceForeground": "#9ccfd8",
|
||||
"gitDecoration.conflictingResourceForeground": "#eb6f92",
|
||||
"gitDecoration.deletedResourceForeground": "#908caa",
|
||||
"gitDecoration.ignoredResourceForeground": "#6e6a86",
|
||||
"gitDecoration.modifiedResourceForeground": "#ebbcba",
|
||||
"gitDecoration.renamedResourceForeground": "#31748f",
|
||||
"gitDecoration.stageDeletedResourceForeground": "#eb6f92",
|
||||
"gitDecoration.stageModifiedResourceForeground": "#c4a7e7",
|
||||
"gitDecoration.submoduleResourceForeground": "#f6c177",
|
||||
"gitDecoration.untrackedResourceForeground": "#f6c177",
|
||||
"icon.foreground": "#908caa",
|
||||
"input.background": "#26233a80",
|
||||
"input.border": "#6e6a8633",
|
||||
"input.foreground": "#e0def4",
|
||||
"input.placeholderForeground": "#908caa",
|
||||
"inputOption.activeBackground": "#ebbcba26",
|
||||
"inputOption.activeForeground": "#ebbcba",
|
||||
"inputValidation.errorBackground": "#1f1d2e",
|
||||
"inputValidation.errorBorder": "#6e6a8666",
|
||||
"inputValidation.errorForeground": "#eb6f92",
|
||||
"inputValidation.infoBackground": "#1f1d2e",
|
||||
"inputValidation.infoBorder": "#6e6a8666",
|
||||
"inputValidation.infoForeground": "#9ccfd8",
|
||||
"inputValidation.warningBackground": "#1f1d2e",
|
||||
"inputValidation.warningBorder": "#6e6a8666",
|
||||
"inputValidation.warningForeground": "#9ccfd880",
|
||||
"keybindingLabel.background": "#26233a",
|
||||
"keybindingLabel.border": "#6e6a8666",
|
||||
"keybindingLabel.bottomBorder": "#6e6a8666",
|
||||
"keybindingLabel.foreground": "#c4a7e7",
|
||||
"keybindingTable.headerBackground": "#26233a",
|
||||
"keybindingTable.rowsBackground": "#1f1d2e",
|
||||
"list.activeSelectionBackground": "#6e6a8633",
|
||||
"list.activeSelectionForeground": "#e0def4",
|
||||
"list.deemphasizedForeground": "#908caa",
|
||||
"list.dropBackground": "#1f1d2e",
|
||||
"list.errorForeground": "#eb6f92",
|
||||
"list.filterMatchBackground": "#1f1d2e",
|
||||
"list.filterMatchBorder": "#ebbcba",
|
||||
"list.focusBackground": "#6e6a8666",
|
||||
"list.focusForeground": "#e0def4",
|
||||
"list.focusOutline": "#6e6a8633",
|
||||
"list.highlightForeground": "#ebbcba",
|
||||
"list.hoverBackground": "#6e6a861a",
|
||||
"list.hoverForeground": "#e0def4",
|
||||
"list.inactiveFocusBackground": "#6e6a861a",
|
||||
"list.inactiveSelectionBackground": "#1f1d2e",
|
||||
"list.inactiveSelectionForeground": "#e0def4",
|
||||
"list.invalidItemForeground": "#eb6f92",
|
||||
"list.warningForeground": "#f6c177",
|
||||
"listFilterWidget.background": "#1f1d2e",
|
||||
"listFilterWidget.noMatchesOutline": "#eb6f92",
|
||||
"listFilterWidget.outline": "#26233a",
|
||||
"menu.background": "#1f1d2e",
|
||||
"menu.border": "#6e6a861a",
|
||||
"menu.foreground": "#e0def4",
|
||||
"menu.selectionBackground": "#6e6a8633",
|
||||
"menu.selectionBorder": "#26233a",
|
||||
"menu.selectionForeground": "#e0def4",
|
||||
"menu.separatorBackground": "#6e6a8666",
|
||||
"menubar.selectionBackground": "#6e6a8633",
|
||||
"menubar.selectionBorder": "#6e6a861a",
|
||||
"menubar.selectionForeground": "#e0def4",
|
||||
"merge.border": "#26233a",
|
||||
"merge.commonContentBackground": "#6e6a8633",
|
||||
"merge.commonHeaderBackground": "#6e6a8633",
|
||||
"merge.currentContentBackground": "#f6c17780",
|
||||
"merge.currentHeaderBackground": "#f6c17780",
|
||||
"merge.incomingContentBackground": "#9ccfd880",
|
||||
"merge.incomingHeaderBackground": "#9ccfd880",
|
||||
"minimap.background": "#1f1d2e",
|
||||
"minimap.errorHighlight": "#eb6f9280",
|
||||
"minimap.findMatchHighlight": "#6e6a8633",
|
||||
"minimap.selectionHighlight": "#6e6a8633",
|
||||
"minimap.warningHighlight": "#f6c17780",
|
||||
"minimapGutter.addedBackground": "#9ccfd8",
|
||||
"minimapGutter.deletedBackground": "#eb6f92",
|
||||
"minimapGutter.modifiedBackground": "#ebbcba",
|
||||
"minimapSlider.activeBackground": "#6e6a8666",
|
||||
"minimapSlider.background": "#6e6a8633",
|
||||
"minimapSlider.hoverBackground": "#6e6a8633",
|
||||
"notebook.cellBorderColor": "#9ccfd880",
|
||||
"notebook.cellEditorBackground": "#1f1d2e",
|
||||
"notebook.cellHoverBackground": "#26233a80",
|
||||
"notebook.focusedCellBackground": "#6e6a861a",
|
||||
"notebook.focusedCellBorder": "#9ccfd8",
|
||||
"notebook.outputContainerBackgroundColor": "#6e6a861a",
|
||||
"notificationCenter.border": "#6e6a8633",
|
||||
"notificationCenterHeader.background": "#1f1d2e",
|
||||
"notificationCenterHeader.foreground": "#908caa",
|
||||
"notificationLink.foreground": "#c4a7e7",
|
||||
"notifications.background": "#1f1d2e",
|
||||
"notifications.border": "#6e6a8633",
|
||||
"notifications.foreground": "#e0def4",
|
||||
"notificationsErrorIcon.foreground": "#eb6f92",
|
||||
"notificationsInfoIcon.foreground": "#9ccfd8",
|
||||
"notificationsWarningIcon.foreground": "#f6c177",
|
||||
"notificationToast.border": "#6e6a8633",
|
||||
"panel.background": "#1f1d2e",
|
||||
"panel.border": "#000000",
|
||||
"panel.dropBorder": "#26233a",
|
||||
"panelInput.border": "#1f1d2e",
|
||||
"panelSection.dropBackground": "#6e6a8633",
|
||||
"panelSectionHeader.background": "#1f1d2e",
|
||||
"panelSectionHeader.foreground": "#e0def4",
|
||||
"panelTitle.activeBorder": "#6e6a8666",
|
||||
"panelTitle.activeForeground": "#e0def4",
|
||||
"panelTitle.inactiveForeground": "#908caa",
|
||||
"peekView.border": "#26233a",
|
||||
"peekViewEditor.background": "#1f1d2e",
|
||||
"peekViewEditor.matchHighlightBackground": "#6e6a8666",
|
||||
"peekViewResult.background": "#1f1d2e",
|
||||
"peekViewResult.fileForeground": "#908caa",
|
||||
"peekViewResult.lineForeground": "#908caa",
|
||||
"peekViewResult.matchHighlightBackground": "#6e6a8666",
|
||||
"peekViewResult.selectionBackground": "#6e6a8633",
|
||||
"peekViewResult.selectionForeground": "#e0def4",
|
||||
"peekViewTitle.background": "#26233a",
|
||||
"peekViewTitleDescription.foreground": "#908caa",
|
||||
"pickerGroup.border": "#6e6a8666",
|
||||
"pickerGroup.foreground": "#c4a7e7",
|
||||
"ports.iconRunningProcessForeground": "#ebbcba",
|
||||
"problemsErrorIcon.foreground": "#eb6f92",
|
||||
"problemsInfoIcon.foreground": "#9ccfd8",
|
||||
"problemsWarningIcon.foreground": "#f6c177",
|
||||
"progressBar.background": "#ebbcba",
|
||||
"quickInput.background": "#1f1d2e",
|
||||
"quickInput.foreground": "#908caa",
|
||||
"quickInputList.focusBackground": "#6e6a8633",
|
||||
"quickInputList.focusForeground": "#e0def4",
|
||||
"quickInputList.focusIconForeground": "#e0def4",
|
||||
"scrollbar.shadow": "#1f1d2e4d",
|
||||
"scrollbarSlider.activeBackground": "#31748f80",
|
||||
"scrollbarSlider.background": "#6e6a8633",
|
||||
"scrollbarSlider.hoverBackground": "#6e6a8666",
|
||||
"searchEditor.findMatchBackground": "#6e6a8633",
|
||||
"selection.background": "#6e6a8666",
|
||||
"settings.focusedRowBackground": "#1f1d2e",
|
||||
"settings.headerForeground": "#e0def4",
|
||||
"settings.modifiedItemIndicator": "#ebbcba",
|
||||
"settings.focusedRowBorder": "#6e6a8633",
|
||||
"settings.rowHoverBackground": "#1f1d2e",
|
||||
"sideBar.background": "#191724",
|
||||
"sideBar.dropBackground": "#1f1d2e",
|
||||
"sideBar.foreground": "#908caa",
|
||||
"sideBarSectionHeader.background": "#000000",
|
||||
"sideBarSectionHeader.border": "#6e6a8633",
|
||||
"statusBar.background": "#191724",
|
||||
"statusBar.debuggingBackground": "#c4a7e7",
|
||||
"statusBar.debuggingForeground": "#191724",
|
||||
"statusBar.foreground": "#908caa",
|
||||
"statusBar.noFolderBackground": "#191724",
|
||||
"statusBar.noFolderForeground": "#908caa",
|
||||
"statusBarItem.activeBackground": "#6e6a8666",
|
||||
"statusBarItem.hoverBackground": "#6e6a8633",
|
||||
"statusBarItem.prominentBackground": "#26233a",
|
||||
"statusBarItem.prominentForeground": "#e0def4",
|
||||
"statusBarItem.prominentHoverBackground": "#6e6a8633",
|
||||
"statusBarItem.remoteBackground": "#191724",
|
||||
"statusBarItem.remoteForeground": "#f6c177",
|
||||
"statusBarItem.errorBackground": "#191724",
|
||||
"statusBarItem.errorForeground": "#eb6f92",
|
||||
"symbolIcon.arrayForeground": "#908caa",
|
||||
"symbolIcon.classForeground": "#908caa",
|
||||
"symbolIcon.colorForeground": "#908caa",
|
||||
"symbolIcon.constantForeground": "#908caa",
|
||||
"symbolIcon.constructorForeground": "#908caa",
|
||||
"symbolIcon.enumeratorForeground": "#908caa",
|
||||
"symbolIcon.enumeratorMemberForeground": "#908caa",
|
||||
"symbolIcon.eventForeground": "#908caa",
|
||||
"symbolIcon.fieldForeground": "#908caa",
|
||||
"symbolIcon.fileForeground": "#908caa",
|
||||
"symbolIcon.folderForeground": "#908caa",
|
||||
"symbolIcon.functionForeground": "#908caa",
|
||||
"symbolIcon.interfaceForeground": "#908caa",
|
||||
"symbolIcon.keyForeground": "#908caa",
|
||||
"symbolIcon.keywordForeground": "#908caa",
|
||||
"symbolIcon.methodForeground": "#908caa",
|
||||
"symbolIcon.moduleForeground": "#908caa",
|
||||
"symbolIcon.namespaceForeground": "#908caa",
|
||||
"symbolIcon.nullForeground": "#908caa",
|
||||
"symbolIcon.numberForeground": "#908caa",
|
||||
"symbolIcon.objectForeground": "#908caa",
|
||||
"symbolIcon.operatorForeground": "#908caa",
|
||||
"symbolIcon.packageForeground": "#908caa",
|
||||
"symbolIcon.propertyForeground": "#908caa",
|
||||
"symbolIcon.referenceForeground": "#908caa",
|
||||
"symbolIcon.snippetForeground": "#908caa",
|
||||
"symbolIcon.stringForeground": "#908caa",
|
||||
"symbolIcon.structForeground": "#908caa",
|
||||
"symbolIcon.textForeground": "#908caa",
|
||||
"symbolIcon.typeParameterForeground": "#908caa",
|
||||
"symbolIcon.unitForeground": "#908caa",
|
||||
"symbolIcon.variableForeground": "#908caa",
|
||||
"tab.activeBackground": "#6e6a861a",
|
||||
"tab.activeForeground": "#e0def4",
|
||||
"tab.activeModifiedBorder": "#9ccfd8",
|
||||
"tab.border": "#000000",
|
||||
"tab.hoverBackground": "#6e6a8633",
|
||||
"tab.inactiveBackground": "#000000",
|
||||
"tab.inactiveForeground": "#908caa",
|
||||
"tab.inactiveModifiedBorder": "#9ccfd880",
|
||||
"tab.lastPinnedBorder": "#6e6a86",
|
||||
"tab.unfocusedActiveBackground": "#000000",
|
||||
"tab.unfocusedHoverBackground": "#000000",
|
||||
"tab.unfocusedInactiveBackground": "#000000",
|
||||
"tab.unfocusedInactiveModifiedBorder": "#9ccfd880",
|
||||
"terminal.ansiBlack": "#26233a",
|
||||
"terminal.ansiBlue": "#9ccfd8",
|
||||
"terminal.ansiBrightBlack": "#908caa",
|
||||
"terminal.ansiBrightBlue": "#9ccfd8",
|
||||
"terminal.ansiBrightCyan": "#ebbcba",
|
||||
"terminal.ansiBrightGreen": "#31748f",
|
||||
"terminal.ansiBrightMagenta": "#c4a7e7",
|
||||
"terminal.ansiBrightRed": "#eb6f92",
|
||||
"terminal.ansiBrightWhite": "#e0def4",
|
||||
"terminal.ansiBrightYellow": "#f6c177",
|
||||
"terminal.ansiCyan": "#ebbcba",
|
||||
"terminal.ansiGreen": "#31748f",
|
||||
"terminal.ansiMagenta": "#c4a7e7",
|
||||
"terminal.ansiRed": "#eb6f92",
|
||||
"terminal.ansiWhite": "#e0def4",
|
||||
"terminal.ansiYellow": "#f6c177",
|
||||
"terminal.dropBackground": "#6e6a8633",
|
||||
"terminal.foreground": "#e0def4",
|
||||
"terminal.selectionBackground": "#6e6a8633",
|
||||
"terminal.tab.activeBorder": "#e0def4",
|
||||
"terminalCursor.background": "#e0def4",
|
||||
"terminalCursor.foreground": "#6e6a86",
|
||||
"textBlockQuote.background": "#1f1d2e",
|
||||
"textBlockQuote.border": "#6e6a8633",
|
||||
"textCodeBlock.background": "#1f1d2e",
|
||||
"textLink.activeForeground": "#c4a7e7e6",
|
||||
"textLink.foreground": "#c4a7e7",
|
||||
"textPreformat.foreground": "#f6c177",
|
||||
"textSeparator.foreground": "#908caa",
|
||||
"titleBar.activeBackground": "#191724",
|
||||
"titleBar.activeForeground": "#908caa",
|
||||
"titleBar.inactiveBackground": "#1f1d2e",
|
||||
"titleBar.inactiveForeground": "#908caa",
|
||||
"toolbar.activeBackground": "#6e6a8666",
|
||||
"toolbar.hoverBackground": "#6e6a8633",
|
||||
"tree.indentGuidesStroke": "#908caa",
|
||||
"walkThrough.embeddedEditorBackground": "#191724",
|
||||
"welcomePage.background": "#191724",
|
||||
"welcomePage.buttonBackground": "#1f1d2e",
|
||||
"welcomePage.buttonHoverBackground": "#26233a",
|
||||
"widget.shadow": "#1f1d2e4d",
|
||||
"window.activeBorder": "#1f1d2e",
|
||||
"window.inactiveBorder": "#1f1d2e"
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"scope": ["comment"],
|
||||
"settings": {
|
||||
"foreground": "#6e6a86",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["constant"],
|
||||
"settings": {
|
||||
"foreground": "#31748f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["constant.numeric", "constant.language"],
|
||||
"settings": {
|
||||
"foreground": "#ebbcba"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["entity.name"],
|
||||
"settings": {
|
||||
"foreground": "#ebbcba"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"entity.name.section",
|
||||
"entity.name.tag",
|
||||
"entity.name.namespace",
|
||||
"entity.name.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#9ccfd8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["entity.other.attribute-name", "entity.other.inherited-class"],
|
||||
"settings": {
|
||||
"foreground": "#c4a7e7",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["invalid"],
|
||||
"settings": {
|
||||
"foreground": "#eb6f92"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["invalid.deprecated"],
|
||||
"settings": {
|
||||
"foreground": "#908caa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["keyword"],
|
||||
"settings": {
|
||||
"foreground": "#31748f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["markup.inserted.diff"],
|
||||
"settings": {
|
||||
"foreground": "#9ccfd8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["markup.deleted.diff"],
|
||||
"settings": {
|
||||
"foreground": "#eb6f92"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "markup.heading",
|
||||
"settings": {
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "markup.bold.markdown",
|
||||
"settings": {
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "markup.italic.markdown",
|
||||
"settings": {
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["meta.diff.range"],
|
||||
"settings": {
|
||||
"foreground": "#c4a7e7"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["meta.tag", "meta.brace"],
|
||||
"settings": {
|
||||
"foreground": "#e0def4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["meta.import", "meta.export"],
|
||||
"settings": {
|
||||
"foreground": "#31748f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.directive.vue",
|
||||
"settings": {
|
||||
"foreground": "#c4a7e7",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.property-name.css",
|
||||
"settings": {
|
||||
"foreground": "#9ccfd8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.property-value.css",
|
||||
"settings": {
|
||||
"foreground": "#f6c177"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.tag.other.html",
|
||||
"settings": {
|
||||
"foreground": "#908caa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation"],
|
||||
"settings": {
|
||||
"foreground": "#908caa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation.accessor"],
|
||||
"settings": {
|
||||
"foreground": "#31748f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation.definition.string"],
|
||||
"settings": {
|
||||
"foreground": "#f6c177"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["punctuation.definition.tag"],
|
||||
"settings": {
|
||||
"foreground": "#6e6a86"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["storage.type", "storage.modifier"],
|
||||
"settings": {
|
||||
"foreground": "#31748f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["string"],
|
||||
"settings": {
|
||||
"foreground": "#f6c177"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["support"],
|
||||
"settings": {
|
||||
"foreground": "#9ccfd8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["support.constant"],
|
||||
"settings": {
|
||||
"foreground": "#f6c177"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["support.function"],
|
||||
"settings": {
|
||||
"foreground": "#eb6f92",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["variable"],
|
||||
"settings": {
|
||||
"foreground": "#ebbcba",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"variable.other",
|
||||
"variable.language",
|
||||
"variable.function",
|
||||
"variable.argument"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#e0def4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["variable.parameter"],
|
||||
"settings": {
|
||||
"foreground": "#c4a7e7"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
Copyright (c) 2011 Ethan Schoonover
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
@@ -1,558 +0,0 @@
|
||||
{
|
||||
"type": "dark",
|
||||
"colors": {
|
||||
"errorForeground": "#ffeaea",
|
||||
"focusBorder": "#2aa19899",
|
||||
"selection.background": "#2aa19899",
|
||||
"input.background": "#003847",
|
||||
"input.foreground": "#93a1a1",
|
||||
"inputOption.activeBorder": "#2aa19899",
|
||||
"input.placeholderForeground": "#93a1a1aa",
|
||||
"inputValidation.infoBackground": "#052730",
|
||||
"inputValidation.infoBorder": "#363b5f",
|
||||
"inputValidation.warningBackground": "#5d5938",
|
||||
"inputValidation.warningBorder": "#9d8a5e",
|
||||
"inputValidation.errorBackground": "#571b26",
|
||||
"inputValidation.errorBorder": "#a92049",
|
||||
"dropdown.background": "#00212b",
|
||||
"dropdown.border": "#2aa19899",
|
||||
"list.focusBackground": "#005a6f",
|
||||
"list.activeSelectionBackground": "#005a6f",
|
||||
"list.inactiveSelectionBackground": "#00445488",
|
||||
"list.hoverBackground": "#004454aa",
|
||||
"list.dropBackground": "#00445488",
|
||||
"list.highlightForeground": "#1ebcc5",
|
||||
"pickerGroup.foreground": "#2aa19899",
|
||||
"pickerGroup.border": "#2aa19899",
|
||||
"button.background": "#2aa19899",
|
||||
"badge.background": "#047aa6",
|
||||
"progressBar.background": "#047aa6",
|
||||
"editor.background": "#002b36",
|
||||
"editorWidget.background": "#00212b",
|
||||
"editor.selectionBackground": "#073642",
|
||||
"editor.selectionHighlightBackground": "#005a6faa",
|
||||
"editorHoverWidget.background": "#004052",
|
||||
"editor.lineHighlightBackground": "#073642",
|
||||
"editorCursor.foreground": "#839496",
|
||||
"editorWhitespace.foreground": "#93a1a180",
|
||||
"editorLineNumber.foreground": "#566c74",
|
||||
"editorLineNumber.activeForeground": "#6e8a93",
|
||||
"editorGutter.background": "#073642",
|
||||
"editorMarkerNavigationError.background": "#ab395b",
|
||||
"editorMarkerNavigationWarning.background": "#5b7e7a",
|
||||
"editor.wordHighlightBackground": "#004454aa",
|
||||
"editor.wordHighlightStrongBackground": "#005a6faa",
|
||||
"peekViewTitle.background": "#00212b",
|
||||
"peekView.border": "#003847",
|
||||
"peekViewResult.background": "#00212b",
|
||||
"peekViewEditor.background": "#10192c",
|
||||
"peekViewEditorGutter.background": "#073642",
|
||||
"peekViewEditor.matchHighlightBackground": "#7744aa40",
|
||||
"tab.activeBackground": "#002b37",
|
||||
"tab.inactiveBackground": "#004052",
|
||||
"tab.border": "#003847",
|
||||
"tab.activeForeground": "#d6dbdb",
|
||||
"tab.inactiveForeground": "#93a1a1",
|
||||
"editorGroup.background": "#011b23",
|
||||
"editorGroupHeader.tabsBackground": "#004052",
|
||||
"editorGroup.border": "#00212b",
|
||||
"editorGroup.dropBackground": "#2aa19844",
|
||||
"panel.border": "#003847",
|
||||
"statusBar.foreground": "#93a1a1",
|
||||
"statusBar.background": "#00212b",
|
||||
"statusBar.noFolderBackground": "#00212b",
|
||||
"statusBarItem.prominentBackground": "#003847",
|
||||
"statusBarItem.prominentHoverBackground": "#003847",
|
||||
"activityBar.background": "#003847",
|
||||
"sideBar.background": "#00212b",
|
||||
"sideBarTitle.foreground": "#93a1a1",
|
||||
"titleBar.activeBackground": "#002c39",
|
||||
"terminal.foreground": "#839496",
|
||||
"statusBar.debuggingBackground": "#00212b",
|
||||
"debugExceptionWidget.border": "#ab395b",
|
||||
"debugExceptionWidget.background": "#00212b",
|
||||
"debugToolBar.background": "#00212b",
|
||||
"terminal.ansiBlack": "#073642",
|
||||
"terminal.ansiRed": "#dc322f",
|
||||
"terminal.ansiGreen": "#859900",
|
||||
"terminal.ansiYellow": "#b58900",
|
||||
"terminal.ansiBlue": "#268bd2",
|
||||
"terminal.ansiMagenta": "#d33682",
|
||||
"terminal.ansiCyan": "#2aa198",
|
||||
"terminal.ansiWhite": "#839496",
|
||||
"terminal.ansiBrightBlack": "#586e75",
|
||||
"terminal.ansiBrightRed": "#cb4b16",
|
||||
"terminal.ansiBrightGreen": "#859900",
|
||||
"terminal.ansiBrightYellow": "#657b83",
|
||||
"terminal.ansiBrightBlue": "#839496",
|
||||
"terminal.ansiBrightMagenta": "#6c71c4",
|
||||
"terminal.ansiBrightCyan": "#93a1a1",
|
||||
"terminal.ansiBrightWhite": "#839496",
|
||||
"editorBracketHighlight.foreground1": "#268bd2",
|
||||
"editorBracketHighlight.foreground2": "#b58900",
|
||||
"editorBracketHighlight.foreground3": "#d33682"
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"settings": {
|
||||
"foreground": "#bbbbbbff",
|
||||
"background": "#002b36ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": ["meta.embedded", "source.groovy.embedded"],
|
||||
"settings": {
|
||||
"background": "#002B36",
|
||||
"foreground": "#93A1A1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Comment",
|
||||
"scope": "comment",
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#657B83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "String",
|
||||
"scope": "string",
|
||||
"settings": {
|
||||
"foreground": "#2AA198"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Regexp",
|
||||
"scope": "string.regexp",
|
||||
"settings": {
|
||||
"foreground": "#D30102"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Number",
|
||||
"scope": "constant.numeric",
|
||||
"settings": {
|
||||
"foreground": "#D33682"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Variable",
|
||||
"scope": ["variable.language", "variable.other"],
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Keyword",
|
||||
"scope": "keyword",
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Storage",
|
||||
"scope": "storage",
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"foreground": "#93A1A1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Class name",
|
||||
"scope": ["entity.name.class", "entity.name.type"],
|
||||
"settings": {
|
||||
"fontStyle": "",
|
||||
"foreground": "#CB4B16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function name",
|
||||
"scope": "entity.name.function",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Variable start",
|
||||
"scope": "punctuation.definition.variable",
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Embedded code markers",
|
||||
"scope": [
|
||||
"punctuation.section.embedded.begin",
|
||||
"punctuation.section.embedded.end"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#D30102"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Built-in constant",
|
||||
"scope": ["constant.language", "meta.preprocessor"],
|
||||
"settings": {
|
||||
"foreground": "#B58900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Support.construct",
|
||||
"scope": ["support.function.construct", "keyword.other.new"],
|
||||
"settings": {
|
||||
"foreground": "#CB4B16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "User-defined constant",
|
||||
"scope": ["constant.character", "constant.other"],
|
||||
"settings": {
|
||||
"foreground": "#CB4B16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Inherited class",
|
||||
"scope": "entity.other.inherited-class",
|
||||
"settings": {
|
||||
"foreground": "#6C71C4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function argument",
|
||||
"scope": "variable.parameter",
|
||||
"settings": {}
|
||||
},
|
||||
{
|
||||
"name": "Tag name",
|
||||
"scope": "entity.name.tag",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag start/end",
|
||||
"scope": "punctuation.definition.tag",
|
||||
"settings": {
|
||||
"foreground": "#657B83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag attribute",
|
||||
"scope": "entity.other.attribute-name",
|
||||
"settings": {
|
||||
"foreground": "#93A1A1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library function",
|
||||
"scope": "support.function",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Continuation",
|
||||
"scope": "punctuation.separator.continuation",
|
||||
"settings": {
|
||||
"foreground": "#D30102"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library constant",
|
||||
"scope": "support.constant",
|
||||
"settings": {}
|
||||
},
|
||||
{
|
||||
"name": "Library class/type",
|
||||
"scope": ["support.type", "support.class"],
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library Exception",
|
||||
"scope": "support.type.exception",
|
||||
"settings": {
|
||||
"foreground": "#CB4B16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library variable",
|
||||
"scope": "support.other.variable",
|
||||
"settings": {}
|
||||
},
|
||||
{
|
||||
"name": "Invalid",
|
||||
"scope": "invalid",
|
||||
"settings": {}
|
||||
},
|
||||
{
|
||||
"name": "diff: header",
|
||||
"scope": ["meta.diff", "meta.diff.header"],
|
||||
"settings": {
|
||||
"background": "#b58900",
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#E0EDDD"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff: deleted",
|
||||
"scope": "markup.deleted",
|
||||
"settings": {
|
||||
"background": "#eee8d5",
|
||||
"fontStyle": "",
|
||||
"foreground": "#dc322f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff: changed",
|
||||
"scope": "markup.changed",
|
||||
"settings": {
|
||||
"background": "#eee8d5",
|
||||
"fontStyle": "",
|
||||
"foreground": "#cb4b16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff: inserted",
|
||||
"scope": "markup.inserted",
|
||||
"settings": {
|
||||
"background": "#eee8d5",
|
||||
"foreground": "#219186"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Quote",
|
||||
"scope": "markup.quote",
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Lists",
|
||||
"scope": "markup.list",
|
||||
"settings": {
|
||||
"foreground": "#B58900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Styling",
|
||||
"scope": ["markup.bold", "markup.italic"],
|
||||
"settings": {
|
||||
"foreground": "#D33682"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Inline",
|
||||
"scope": "markup.inline.raw",
|
||||
"settings": {
|
||||
"fontStyle": "",
|
||||
"foreground": "#2AA198"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Headings",
|
||||
"scope": "markup.heading",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Setext Header",
|
||||
"scope": "markup.heading.setext",
|
||||
"settings": {
|
||||
"fontStyle": "",
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "token.info-token",
|
||||
"settings": {
|
||||
"foreground": "#6796e6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "token.warn-token",
|
||||
"settings": {
|
||||
"foreground": "#cd9731"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "token.error-token",
|
||||
"settings": {
|
||||
"foreground": "#f44747"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "token.debug-token",
|
||||
"settings": {
|
||||
"foreground": "#b267e6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "variable.object.property",
|
||||
"settings": {
|
||||
"foreground": "#839496"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "variable.parameter",
|
||||
"settings": {
|
||||
"foreground": "#839496"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "support.type",
|
||||
"settings": {
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.type.function",
|
||||
"settings": {
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "entity.other.inherited-class",
|
||||
"settings": {
|
||||
"foreground": "#b58900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.modifier",
|
||||
"settings": {
|
||||
"foreground": "#859900ff",
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.type",
|
||||
"settings": {
|
||||
"foreground": "#859900ff",
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "keyword.control.import",
|
||||
"settings": {
|
||||
"foreground": "#D33682"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.modifier.async",
|
||||
"settings": {
|
||||
"foreground": "#859900ff",
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.import",
|
||||
"settings": {
|
||||
"foreground": "#839496"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "source.ts",
|
||||
"settings": {
|
||||
"foreground": "#839496"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.function-call",
|
||||
"settings": {
|
||||
"foreground": "#839496"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "entity.name.type",
|
||||
"settings": {
|
||||
"foreground": "#b58900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "entity.name.function",
|
||||
"settings": {
|
||||
"foreground": "#839496"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "variable.other",
|
||||
"settings": {
|
||||
"foreground": "#839496"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.modifier.tsx",
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "entity.name.type.class.python",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "support.type.python",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "source.python",
|
||||
"settings": {
|
||||
"foreground": "#839496"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "keyword.control.import",
|
||||
"settings": {
|
||||
"foreground": "#cb4b16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "keyword.control.from",
|
||||
"settings": {
|
||||
"foreground": "#cb4b16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "constant.language.python",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "entity.name.function.python",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "punctuation.separator.dictionary.key-value.json, punctuation.separator.array.json, punctuation.separator.dictionary.pair.json",
|
||||
"settings": {
|
||||
"foreground": "#657B83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.type.ts",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "support.type.primitive",
|
||||
"settings": {
|
||||
"foreground": "#b58900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "punctuation.definition.dictionary.begin.json, punctuation.definition.dictionary.end.json, punctuation.definition.array.begin.json, punctuation.definition.array.end.json",
|
||||
"settings": {
|
||||
"foreground": "#DC3272"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
{
|
||||
"name": "Solarized",
|
||||
"author": "Ethan Schoonover (altercation)",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Solarized Dark",
|
||||
"file_name": "dark.json",
|
||||
"appearance": "dark"
|
||||
},
|
||||
{
|
||||
"name": "Solarized Light",
|
||||
"file_name": "light.json",
|
||||
"appearance": "light"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,591 +0,0 @@
|
||||
{
|
||||
"type": "light",
|
||||
"colors": {
|
||||
"focusBorder": "#d3af86",
|
||||
"selection.background": "#ccc4b0",
|
||||
"input.background": "#ddd6c1",
|
||||
"input.foreground": "#586e75",
|
||||
"inputOption.activeBorder": "#d3af86",
|
||||
"input.placeholderForeground": "#586e75aa",
|
||||
"dropdown.background": "#eee8d5",
|
||||
"dropdown.border": "#d3af86",
|
||||
"list.focusBackground": "#dfca8866",
|
||||
"list.activeSelectionBackground": "#dfca88",
|
||||
"list.activeSelectionForeground": "#6c6c6c",
|
||||
"list.inactiveSelectionBackground": "#d1cbb8",
|
||||
"list.hoverBackground": "#dfca8844",
|
||||
"list.highlightForeground": "#b58900",
|
||||
"pickerGroup.foreground": "#2aa19899",
|
||||
"pickerGroup.border": "#2aa19899",
|
||||
"button.background": "#ac9d57",
|
||||
"badge.background": "#b58900aa",
|
||||
"progressBar.background": "#b58900",
|
||||
"editor.background": "#fdf6e3",
|
||||
"editorWidget.background": "#eee8d5",
|
||||
"editor.selectionBackground": "#eee8d5",
|
||||
"editorHoverWidget.background": "#ccc4b0",
|
||||
"editor.lineHighlightBackground": "#eee8d5",
|
||||
"editorCursor.foreground": "#657b83",
|
||||
"editorWhitespace.foreground": "#586e7580",
|
||||
"editorLineNumber.foreground": "#9ca8a6",
|
||||
"editorLineNumber.activeForeground": "#6f7776",
|
||||
"editorGutter.background": "#eee8d5",
|
||||
"peekViewTitle.background": "#eee8d5",
|
||||
"peekView.border": "#b58900",
|
||||
"peekViewResult.background": "#eee8d5",
|
||||
"peekViewEditor.background": "#fffbf2",
|
||||
"peekViewEditor.matchHighlightBackground": "#7744aa40",
|
||||
"tab.activeBackground": "#fdf6e3",
|
||||
"tab.inactiveBackground": "#d3cbb7",
|
||||
"tab.border": "#ddd6c1",
|
||||
"tab.inactiveForeground": "#586e75",
|
||||
"editorGroup.background": "#fffbf2",
|
||||
"editorGroupHeader.tabsBackground": "#d9d2c2",
|
||||
"editorGroup.border": "#ddd6c1",
|
||||
"editorGroup.dropBackground": "#ddd6c1aa",
|
||||
"panel.border": "#ddd6c1",
|
||||
"statusBar.foreground": "#586e75",
|
||||
"statusBar.background": "#eee8d5",
|
||||
"statusBar.noFolderBackground": "#eee8d5",
|
||||
"statusBarItem.prominentBackground": "#ddd6c1",
|
||||
"statusBarItem.prominentHoverBackground": "#ddd6c199",
|
||||
"activityBar.background": "#ddd6c1",
|
||||
"activityBar.foreground": "#584c27",
|
||||
"activityBar.dropBackground": "#eee8d5",
|
||||
"activityBarBadge.background": "#b58900",
|
||||
"sideBar.background": "#eee8d5",
|
||||
"sideBarTitle.foreground": "#586e75",
|
||||
"titleBar.activeBackground": "#eee8d5",
|
||||
"terminal.foreground": "#657b83",
|
||||
"statusBar.debuggingBackground": "#eee8d5",
|
||||
"debugExceptionWidget.border": "#ab395b",
|
||||
"debugExceptionWidget.background": "#ddd6c1",
|
||||
"debugToolBar.background": "#ddd6c1",
|
||||
"extensionButton.prominentBackground": "#b58900",
|
||||
"extensionButton.prominentHoverBackground": "#584c27aa",
|
||||
"terminal.ansiBlack": "#657b83",
|
||||
"terminal.ansiRed": "#dc322f",
|
||||
"terminal.ansiGreen": "#859900",
|
||||
"terminal.ansiYellow": "#b58900",
|
||||
"terminal.ansiBlue": "#268bd2",
|
||||
"terminal.ansiMagenta": "#d33682",
|
||||
"terminal.ansiCyan": "#2aa198",
|
||||
"terminal.ansiWhite": "#eee8d5",
|
||||
"terminal.ansiBrightBlack": "#657b83",
|
||||
"terminal.ansiBrightRed": "#cb4b16",
|
||||
"terminal.ansiBrightGreen": "#859900",
|
||||
"terminal.ansiBrightYellow": "#657b83",
|
||||
"terminal.ansiBrightBlue": "#839496",
|
||||
"terminal.ansiBrightMagenta": "#6c71c4",
|
||||
"terminal.ansiBrightCyan": "#93a1a1",
|
||||
"terminal.ansiBrightWhite": "#eee8d5",
|
||||
"editorBracketHighlight.foreground1": "#268bd2",
|
||||
"editorBracketHighlight.foreground2": "#b58900",
|
||||
"editorBracketHighlight.foreground3": "#d33682"
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"settings": {
|
||||
"foreground": "#333333ff",
|
||||
"background": "#fdf6e3ff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"meta.embedded",
|
||||
"source.groovy.embedded"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#FDF6E3",
|
||||
"foreground": "#657B83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Comment",
|
||||
"scope": "comment",
|
||||
"settings": {
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#93A1A1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "String",
|
||||
"scope": "string",
|
||||
"settings": {
|
||||
"foreground": "#2AA198"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Regexp",
|
||||
"scope": "string.regexp",
|
||||
"settings": {
|
||||
"foreground": "#D30102"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Number",
|
||||
"scope": "constant.numeric",
|
||||
"settings": {
|
||||
"foreground": "#D33682"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Variable",
|
||||
"scope": [
|
||||
"variable.language",
|
||||
"variable.other"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Keyword",
|
||||
"scope": "keyword",
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Storage",
|
||||
"scope": "storage",
|
||||
"settings": {
|
||||
"fontStyle": "bold",
|
||||
"foreground": "#073642"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Class name",
|
||||
"scope": [
|
||||
"entity.name.class",
|
||||
"entity.name.type"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function name",
|
||||
"scope": "entity.name.function",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Variable start",
|
||||
"scope": "punctuation.definition.variable",
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Embedded code markers",
|
||||
"scope": [
|
||||
"punctuation.section.embedded.begin",
|
||||
"punctuation.section.embedded.end"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#D30102"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Built-in constant",
|
||||
"scope": [
|
||||
"constant.language",
|
||||
"meta.preprocessor"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#B58900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Support.construct",
|
||||
"scope": [
|
||||
"support.function.construct",
|
||||
"keyword.other.new"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#D30102"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "User-defined constant",
|
||||
"scope": [
|
||||
"constant.character",
|
||||
"constant.other"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#CB4B16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Inherited class",
|
||||
"scope": "entity.other.inherited-class",
|
||||
"settings": {}
|
||||
},
|
||||
{
|
||||
"name": "Function argument",
|
||||
"scope": "variable.parameter",
|
||||
"settings": {}
|
||||
},
|
||||
{
|
||||
"name": "Tag name",
|
||||
"scope": "entity.name.tag",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag start/end",
|
||||
"scope": [
|
||||
"punctuation.definition.tag.begin",
|
||||
"punctuation.definition.tag.end"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#93A1A1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag attribute",
|
||||
"scope": "entity.other.attribute-name",
|
||||
"settings": {
|
||||
"foreground": "#93A1A1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library function",
|
||||
"scope": "support.function",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Continuation",
|
||||
"scope": "punctuation.separator.continuation",
|
||||
"settings": {
|
||||
"foreground": "#D30102"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library constant",
|
||||
"scope": "support.constant",
|
||||
"settings": {}
|
||||
},
|
||||
{
|
||||
"name": "Library class/type",
|
||||
"scope": [
|
||||
"support.type",
|
||||
"support.class"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library Exception",
|
||||
"scope": "support.type.exception",
|
||||
"settings": {
|
||||
"foreground": "#CB4B16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Library variable",
|
||||
"scope": "support.other.variable",
|
||||
"settings": {}
|
||||
},
|
||||
{
|
||||
"name": "Invalid",
|
||||
"scope": "invalid",
|
||||
"settings": {}
|
||||
},
|
||||
{
|
||||
"name": "diff: header",
|
||||
"scope": [
|
||||
"meta.diff",
|
||||
"meta.diff.header"
|
||||
],
|
||||
"settings": {
|
||||
"background": "#b58900",
|
||||
"fontStyle": "italic",
|
||||
"foreground": "#E0EDDD"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff: deleted",
|
||||
"scope": "markup.deleted",
|
||||
"settings": {
|
||||
"background": "#eee8d5",
|
||||
"fontStyle": "",
|
||||
"foreground": "#dc322f"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff: changed",
|
||||
"scope": "markup.changed",
|
||||
"settings": {
|
||||
"background": "#eee8d5",
|
||||
"fontStyle": "",
|
||||
"foreground": "#cb4b16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff: inserted",
|
||||
"scope": "markup.inserted",
|
||||
"settings": {
|
||||
"background": "#eee8d5",
|
||||
"foreground": "#219186"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Quote",
|
||||
"scope": "markup.quote",
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Lists",
|
||||
"scope": "markup.list",
|
||||
"settings": {
|
||||
"foreground": "#B58900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Styling",
|
||||
"scope": [
|
||||
"markup.bold",
|
||||
"markup.italic"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#D33682"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Inline",
|
||||
"scope": "markup.inline.raw",
|
||||
"settings": {
|
||||
"fontStyle": "",
|
||||
"foreground": "#2AA198"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Headings",
|
||||
"scope": "markup.heading",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup Setext Header",
|
||||
"scope": "markup.heading.setext",
|
||||
"settings": {
|
||||
"fontStyle": "",
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "token.info-token",
|
||||
"settings": {
|
||||
"foreground": "#316bcd"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "token.warn-token",
|
||||
"settings": {
|
||||
"foreground": "#cd9731"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "token.error-token",
|
||||
"settings": {
|
||||
"foreground": "#cd3131"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "token.debug-token",
|
||||
"settings": {
|
||||
"foreground": "#800080"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.modifier",
|
||||
"settings": {
|
||||
"foreground": "#859900ff",
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.type",
|
||||
"settings": {
|
||||
"foreground": "#859900ff",
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "keyword.control.import",
|
||||
"settings": {
|
||||
"foreground": "#D33682"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.modifier.async",
|
||||
"settings": {
|
||||
"foreground": "#859900ff",
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.import",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "source.ts",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.function-call",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "entity.name.type",
|
||||
"settings": {
|
||||
"foreground": "#b58900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "entity.name.function",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "variable.other",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.modifier.tsx",
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.modifier",
|
||||
"settings": {
|
||||
"foreground": "#859900ff",
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.type",
|
||||
"settings": {
|
||||
"foreground": "#859900ff",
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "keyword.control.import",
|
||||
"settings": {
|
||||
"foreground": "#D33682"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.modifier.async",
|
||||
"settings": {
|
||||
"foreground": "#859900ff",
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.import",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "source.ts",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "meta.function-call",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "entity.name.type",
|
||||
"settings": {
|
||||
"foreground": "#b58900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "entity.name.function",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "variable.other",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.modifier.tsx",
|
||||
"settings": {
|
||||
"foreground": "#859900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "punctuation.separator.dictionary.key-value.json, punctuation.separator.array.json, punctuation.separator.dictionary.pair.json",
|
||||
"settings": {
|
||||
"foreground": "#657B83"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "storage.type",
|
||||
"settings": {
|
||||
"foreground": "#268BD2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "punctuation.definition.dictionary.begin.json, punctuation.definition.dictionary.end.json, punctuation.definition.array.begin.json, punctuation.definition.array.end.json",
|
||||
"settings": {
|
||||
"foreground": "#DC3272"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "support.type.primitive",
|
||||
"settings": {
|
||||
"foreground": "#b58900"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "keyword.control.import",
|
||||
"settings": {
|
||||
"foreground": "#cb4b16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "keyword.control.from",
|
||||
"settings": {
|
||||
"foreground": "#cb4b16"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "source",
|
||||
"settings": {
|
||||
"foreground": "#657b83"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019 Robb Owen
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -1,11 +0,0 @@
|
||||
{
|
||||
"name": "Synthwave 84",
|
||||
"author": "Robb Owen (robb0wen)",
|
||||
"themes": [
|
||||
{
|
||||
"name": "Synthwave 84",
|
||||
"file_name": "synthwave.json",
|
||||
"appearance": "dark"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,822 +0,0 @@
|
||||
{
|
||||
"name": "SynthWave 84",
|
||||
"type": "dark",
|
||||
"semanticHighlighting": true,
|
||||
"colors": {
|
||||
"focusBorder": "#1f212b",
|
||||
"foreground": "#ffffff",
|
||||
"widget.shadow": "#2a2139",
|
||||
"selection.background": "#ffffff20",
|
||||
"errorForeground": "#fe4450",
|
||||
"textLink.activeForeground": "#ff7edb",
|
||||
"textLink.foreground": "#f97e72",
|
||||
"button.background": "#614D85",
|
||||
"dropdown.background": "#232530",
|
||||
"dropdown.listBackground": "#2a2139",
|
||||
"input.background": "#2a2139",
|
||||
"inputOption.activeBorder": "#ff7edb99",
|
||||
"inputValidation.errorBackground": "#fe445080",
|
||||
"inputValidation.errorBorder": "#fe445000",
|
||||
"scrollbar.shadow": "#2a2139",
|
||||
"scrollbarSlider.activeBackground": "#9d8bca20",
|
||||
"scrollbarSlider.background": "#9d8bca30",
|
||||
"scrollbarSlider.hoverBackground": "#9d8bca50",
|
||||
"badge.foreground": "#ffffff",
|
||||
"badge.background": "#2a2139",
|
||||
"progressBar.background": "#f97e72",
|
||||
"list.activeSelectionBackground": "#ffffff20",
|
||||
"list.activeSelectionForeground": "#ffffff",
|
||||
"list.dropBackground": "#34294f66",
|
||||
"list.focusBackground": "#ffffff20",
|
||||
"list.focusForeground": "#ffffff",
|
||||
"list.highlightForeground": "#f97e72",
|
||||
"list.hoverBackground": "#37294d99",
|
||||
"list.hoverForeground": "#ffffff",
|
||||
"list.inactiveSelectionBackground": "#ffffff20",
|
||||
"list.inactiveSelectionForeground": "#ffffff",
|
||||
"list.inactiveFocusBackground": "#2a213999",
|
||||
"list.errorForeground": "#fe4450E6",
|
||||
"list.warningForeground": "#72f1b8bb",
|
||||
"activityBar.background": "#171520",
|
||||
"activityBar.dropBackground": "#34294f66",
|
||||
"activityBar.foreground": "#ffffffCC",
|
||||
"activityBarBadge.background": "#f97e72",
|
||||
"activityBarBadge.foreground": "#2a2139",
|
||||
"sideBar.background": "#241b2f",
|
||||
"sideBar.foreground": "#ffffff99",
|
||||
"sideBar.dropBackground": "#34294f4c",
|
||||
"sideBarSectionHeader.background": "#241b2f",
|
||||
"sideBarSectionHeader.foreground": "#ffffffca",
|
||||
"menu.background": "#463465",
|
||||
"editorGroup.border": "#495495",
|
||||
"editorGroup.dropBackground": "#4954954a",
|
||||
"editorGroupHeader.tabsBackground": "#241b2f",
|
||||
"tab.border": "#241b2f00",
|
||||
"tab.activeBorder": "#880088",
|
||||
"tab.inactiveBackground": "#262335",
|
||||
"editor.background": "#262335",
|
||||
"editorLineNumber.foreground": "#ffffff73",
|
||||
"editorLineNumber.activeForeground": "#ffffffcc",
|
||||
"editorCursor.background": "#241b2f",
|
||||
"editorCursor.foreground": "#f97e72",
|
||||
"editor.selectionBackground": "#ffffff20",
|
||||
"editor.selectionHighlightBackground": "#ffffff20",
|
||||
"editor.wordHighlightBackground": "#34294f88",
|
||||
"editor.wordHighlightStrongBackground": "#34294f88",
|
||||
"editor.findMatchBackground": "#D18616bb",
|
||||
"editor.findMatchHighlightBackground": "#D1861655",
|
||||
"editor.findRangeHighlightBackground": "#34294f1a",
|
||||
"editor.hoverHighlightBackground": "#463564",
|
||||
"editor.lineHighlightBorder": "#7059AB66",
|
||||
"editor.rangeHighlightBackground": "#49549539",
|
||||
"editorIndentGuide.background": "#444251",
|
||||
"editorIndentGuide.activeBackground": "#A148AB80",
|
||||
"editorRuler.foreground": "#A148AB80",
|
||||
"editorCodeLens.foreground": "#ffffff7c",
|
||||
"editorBracketMatch.background": "#34294f66",
|
||||
"editorBracketMatch.border": "#495495",
|
||||
"editorOverviewRuler.border": "#34294fb3",
|
||||
"editorOverviewRuler.findMatchForeground": "#D1861699",
|
||||
"editorOverviewRuler.modifiedForeground": "#b893ce99",
|
||||
"editorOverviewRuler.addedForeground": "#09f7a099",
|
||||
"editorOverviewRuler.deletedForeground": "#fe445099",
|
||||
"editorOverviewRuler.errorForeground": "#fe4450dd",
|
||||
"editorOverviewRuler.warningForeground": "#72f1b8cc",
|
||||
"editorError.foreground": "#fe4450",
|
||||
"editorWarning.foreground": "#72f1b8cc",
|
||||
"editorGutter.modifiedBackground": "#b893ce8f",
|
||||
"editorGutter.addedBackground": "#206d4bd6",
|
||||
"editorGutter.deletedBackground": "#fa2e46a4",
|
||||
"diffEditor.insertedTextBackground": "#0beb9935",
|
||||
"diffEditor.removedTextBackground": "#fe445035",
|
||||
"editorWidget.background": "#171520DC",
|
||||
"editorWidget.border": "#ffffff22",
|
||||
"editorWidget.resizeBorder": "#ffffff44",
|
||||
"editorSuggestWidget.highlightForeground": "#f97e72",
|
||||
"editorSuggestWidget.selectedBackground": "#ffffff36",
|
||||
"peekView.border": "#495495",
|
||||
"peekViewEditor.background": "#232530",
|
||||
"peekViewEditor.matchHighlightBackground": "#D18616bb",
|
||||
"peekViewResult.background": "#232530",
|
||||
"peekViewResult.matchHighlightBackground": "#D1861655",
|
||||
"peekViewResult.selectionBackground": "#2a213980",
|
||||
"peekViewTitle.background": "#232530",
|
||||
"panelTitle.activeBorder": "#f97e72",
|
||||
"statusBar.background": "#241b2f",
|
||||
"statusBar.foreground": "#ffffff80",
|
||||
"statusBar.debuggingBackground": "#f97e72",
|
||||
"statusBar.debuggingForeground": "#08080f",
|
||||
"statusBar.noFolderBackground": "#241b2f",
|
||||
"statusBarItem.prominentBackground": "#2a2139",
|
||||
"statusBarItem.prominentHoverBackground": "#34294f",
|
||||
"titleBar.activeBackground": "#241b2f",
|
||||
"titleBar.inactiveBackground": "#241b2f",
|
||||
"extensionButton.prominentBackground": "#f97e72",
|
||||
"extensionButton.prominentHoverBackground": "#ff7edb",
|
||||
"pickerGroup.foreground": "#f97e72ea",
|
||||
"terminal.foreground": "#ffffff",
|
||||
"terminal.ansiBlue": "#03edf9",
|
||||
"terminal.ansiBrightBlue": "#03edf9",
|
||||
"terminal.ansiBrightCyan": "#03edf9",
|
||||
"terminal.ansiBrightGreen": "#72f1b8",
|
||||
"terminal.ansiBrightMagenta": "#ff7edb",
|
||||
"terminal.ansiBrightRed": "#fe4450",
|
||||
"terminal.ansiBrightYellow": "#fede5d",
|
||||
"terminal.ansiCyan": "#03edf9",
|
||||
"terminal.ansiGreen": "#72f1b8",
|
||||
"terminal.ansiMagenta": "#ff7edb",
|
||||
"terminal.ansiRed": "#fe4450",
|
||||
"terminal.ansiYellow": "#f3e70f",
|
||||
"terminal.selectionBackground": "#ffffff20",
|
||||
"terminalCursor.background": "#ffffff",
|
||||
"terminalCursor.foreground": "#03edf9",
|
||||
"debugToolBar.background": "#463465",
|
||||
"walkThrough.embeddedEditorBackground": "#232530",
|
||||
"gitDecoration.modifiedResourceForeground": "#b893ceee",
|
||||
"gitDecoration.deletedResourceForeground": "#fe4450",
|
||||
"gitDecoration.addedResourceForeground": "#72f1b8cc",
|
||||
"gitDecoration.untrackedResourceForeground": "#72f1b8",
|
||||
"gitDecoration.ignoredResourceForeground": "#ffffff59",
|
||||
"minimapGutter.addedBackground": "#09f7a099",
|
||||
"minimapGutter.modifiedBackground": "#b893ce",
|
||||
"minimapGutter.deletedBackground": "#fe4450",
|
||||
"breadcrumbPicker.background": "#232530"
|
||||
},
|
||||
"tokenColors": [
|
||||
{
|
||||
"name": "Comment",
|
||||
"scope": [
|
||||
"comment",
|
||||
"string.quoted.docstring.multi.python",
|
||||
"string.quoted.docstring.multi.python punctuation.definition.string.begin.python",
|
||||
"string.quoted.docstring.multi.python punctuation.definition.string.end.python"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#848bbd",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "String",
|
||||
"scope": ["string.quoted", "string.template", "punctuation.definition.string"],
|
||||
"settings": {
|
||||
"foreground": "#ff8b39"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Punctuation within templates",
|
||||
"scope": "string.template meta.embedded.line",
|
||||
"settings": {
|
||||
"foreground": "#b6b1b1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Variable",
|
||||
"scope": ["variable", "entity.name.variable"],
|
||||
"settings": {
|
||||
"foreground": "#ff7edb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Language variable",
|
||||
"scope": "variable.language",
|
||||
"settings": {
|
||||
"foreground": "#fe4450",
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Parameter",
|
||||
"scope": "variable.parameter",
|
||||
"settings": {
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Storage (declaration or modifier keyword)",
|
||||
"scope": ["storage.type", "storage.modifier"],
|
||||
"settings": {
|
||||
"foreground": "#fede5d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Constant",
|
||||
"scope": "constant",
|
||||
"settings": {
|
||||
"foreground": "#f97e72"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Regex",
|
||||
"scope": "string.regexp",
|
||||
"settings": {
|
||||
"foreground": "#f97e72"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Number",
|
||||
"scope": "constant.numeric",
|
||||
"settings": {
|
||||
"foreground": "#f97e72"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Language constant (boolean, null)",
|
||||
"scope": "constant.language",
|
||||
"settings": {
|
||||
"foreground": "#f97e72"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Character escape",
|
||||
"scope": "constant.character.escape",
|
||||
"settings": {
|
||||
"foreground": "#36f9f6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Entity",
|
||||
"scope": "entity.name",
|
||||
"settings": {
|
||||
"foreground": "#fe4450"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "HTML or XML tag",
|
||||
"scope": "entity.name.tag",
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "HTML or XML tag brackets",
|
||||
"scope": ["punctuation.definition.tag"],
|
||||
"settings": {
|
||||
"foreground": "#36f9f6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag attribute",
|
||||
"scope": "entity.other.attribute-name",
|
||||
"settings": {
|
||||
"foreground": "#fede5d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tag attribute HTML",
|
||||
"scope": "entity.other.attribute-name.html",
|
||||
"settings": {
|
||||
"foreground": "#fede5d",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Class",
|
||||
"scope": ["entity.name.type", "meta.attribute.class.html"],
|
||||
"settings": {
|
||||
"foreground": "#fe4450"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Inherited class",
|
||||
"scope": "entity.other.inherited-class",
|
||||
"settings": {
|
||||
"foreground": "#D50"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Function",
|
||||
"scope": ["entity.name.function", "variable.function"],
|
||||
"settings": {
|
||||
"foreground": "#36f9f6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "JS Export",
|
||||
"scope": ["keyword.control.export.js", "keyword.control.import.js"],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "JS Numerics",
|
||||
"scope": ["constant.numeric.decimal.js"],
|
||||
"settings": {
|
||||
"foreground": "#2EE2FA"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Keyword",
|
||||
"scope": "keyword",
|
||||
"settings": {
|
||||
"foreground": "#fede5d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Control keyword",
|
||||
"scope": "keyword.control",
|
||||
"settings": {
|
||||
"foreground": "#fede5d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Operator",
|
||||
"scope": "keyword.operator",
|
||||
"settings": {
|
||||
"foreground": "#fede5d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Special operator",
|
||||
"scope": [
|
||||
"keyword.operator.new",
|
||||
"keyword.operator.expression",
|
||||
"keyword.operator.logical"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#fede5d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Unit",
|
||||
"scope": "keyword.other.unit",
|
||||
"settings": {
|
||||
"foreground": "#f97e72"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Support",
|
||||
"scope": "support",
|
||||
"settings": {
|
||||
"foreground": "#fe4450"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Support function",
|
||||
"scope": "support.function",
|
||||
"settings": {
|
||||
"foreground": "#36f9f6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Support variable",
|
||||
"scope": "support.variable",
|
||||
"settings": {
|
||||
"foreground": "#ff7edb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Object literal key / property",
|
||||
"scope": ["meta.object-literal.key", "support.type.property-name"],
|
||||
"settings": {
|
||||
"foreground": "#ff7edb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Key-value separator",
|
||||
"scope": "punctuation.separator.key-value",
|
||||
"settings": {
|
||||
"foreground": "#b6b1b1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Embedded punctuation",
|
||||
"scope": "punctuation.section.embedded",
|
||||
"settings": {
|
||||
"foreground": "#fede5d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Template expression",
|
||||
"scope": [
|
||||
"punctuation.definition.template-expression.begin",
|
||||
"punctuation.definition.template-expression.end"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS property",
|
||||
"scope": ["support.type.property-name.css", "support.type.property-name.json"],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "JS Switch control",
|
||||
"scope": "switch-block.expr.js",
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "JS object path",
|
||||
"scope": "variable.other.constant.property.js, variable.other.property.js",
|
||||
"settings": {
|
||||
"foreground": "#2ee2fa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Color",
|
||||
"scope": "constant.other.color",
|
||||
"settings": {
|
||||
"foreground": "#f97e72"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Font names",
|
||||
"scope": "support.constant.font-name",
|
||||
"settings": {
|
||||
"foreground": "#f97e72"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS #id",
|
||||
"scope": "entity.other.attribute-name.id",
|
||||
"settings": {
|
||||
"foreground": "#36f9f6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Pseudo CSS",
|
||||
"scope": [
|
||||
"entity.other.attribute-name.pseudo-element",
|
||||
"entity.other.attribute-name.pseudo-class"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#D50"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "CSS support functions (rgb)",
|
||||
"scope": "support.function.misc.css",
|
||||
"settings": {
|
||||
"foreground": "#fe4450"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup heading",
|
||||
"scope": ["markup.heading", "entity.name.section"],
|
||||
"settings": {
|
||||
"foreground": "#ff7edb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup text",
|
||||
"scope": ["text.html", "keyword.operator.assignment"],
|
||||
"settings": {
|
||||
"foreground": "#ffffffee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup quote",
|
||||
"scope": "markup.quote",
|
||||
"settings": {
|
||||
"foreground": "#b6b1b1cc",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup list",
|
||||
"scope": "beginning.punctuation.definition.list",
|
||||
"settings": {
|
||||
"foreground": "#ff7edb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup link",
|
||||
"scope": "markup.underline.link",
|
||||
"settings": {
|
||||
"foreground": "#D50"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markup link description",
|
||||
"scope": "string.other.link.description",
|
||||
"settings": {
|
||||
"foreground": "#f97e72"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Python function call",
|
||||
"scope": "meta.function-call.generic.python",
|
||||
"settings": {
|
||||
"foreground": "#36f9f6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Python variable params",
|
||||
"scope": "variable.parameter.function-call.python",
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "C# storage type",
|
||||
"scope": "storage.type.cs",
|
||||
"settings": {
|
||||
"foreground": "#fe4450"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "C# local variable",
|
||||
"scope": "entity.name.variable.local.cs",
|
||||
"settings": {
|
||||
"foreground": "#ff7edb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "C# properties and fields",
|
||||
"scope": ["entity.name.variable.field.cs", "entity.name.variable.property.cs"],
|
||||
"settings": {
|
||||
"foreground": "#ff7edb"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "C placeholder",
|
||||
"scope": "constant.other.placeholder.c",
|
||||
"settings": {
|
||||
"foreground": "#72f1b8",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "C preprocessors",
|
||||
"scope": ["keyword.control.directive.include.c", "keyword.control.directive.define.c"],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "C storage modifier",
|
||||
"scope": "storage.modifier.c",
|
||||
"settings": {
|
||||
"foreground": "#fe4450"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "C++ operators",
|
||||
"scope": "source.cpp keyword.operator",
|
||||
"settings": {
|
||||
"foreground": "#fede5d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "C++ placeholder",
|
||||
"scope": "constant.other.placeholder.cpp",
|
||||
"settings": {
|
||||
"foreground": "#72f1b8",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "C++ include",
|
||||
"scope": [
|
||||
"keyword.control.directive.include.cpp",
|
||||
"keyword.control.directive.define.cpp"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "C++ constant modifier",
|
||||
"scope": "storage.modifier.specifier.const.cpp",
|
||||
"settings": {
|
||||
"foreground": "#fe4450"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Elixir Classes",
|
||||
"scope": [
|
||||
"source.elixir support.type.elixir",
|
||||
"source.elixir meta.module.elixir entity.name.class.elixir"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#36f9f6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Elixir Functions",
|
||||
"scope": "source.elixir entity.name.function",
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Elixir Constants",
|
||||
"scope": [
|
||||
"source.elixir constant.other.symbol.elixir",
|
||||
"source.elixir constant.other.keywords.elixir"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#36f9f6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Elixir String Punctuation",
|
||||
"scope": "source.elixir punctuation.definition.string",
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Elixir",
|
||||
"scope": [
|
||||
"source.elixir variable.other.readwrite.module.elixir",
|
||||
"source.elixir variable.other.readwrite.module.elixir punctuation.definition.variable.elixir"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Elixir Binary Punctuation",
|
||||
"scope": "source.elixir .punctuation.binary.elixir",
|
||||
"settings": {
|
||||
"foreground": "#ff7edb",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Clojure Globals",
|
||||
"scope": ["entity.global.clojure"],
|
||||
"settings": {
|
||||
"foreground": "#36f9f6",
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Clojure Storage",
|
||||
"scope": ["storage.control.clojure"],
|
||||
"settings": {
|
||||
"foreground": "#36f9f6",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Clojure Metadata",
|
||||
"scope": ["meta.metadata.simple.clojure", "meta.metadata.map.clojure"],
|
||||
"settings": {
|
||||
"foreground": "#fe4450",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Clojure Macros, Quoted",
|
||||
"scope": ["meta.quoted-expression.clojure"],
|
||||
"settings": {
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Clojure Symbols",
|
||||
"scope": ["meta.symbol.clojure"],
|
||||
"settings": {
|
||||
"foreground": "#ff7edbff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Go basic",
|
||||
"scope": "source.go",
|
||||
"settings": {
|
||||
"foreground": "#ff7edbff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Go Function Calls",
|
||||
"scope": "source.go meta.function-call.go",
|
||||
"settings": {
|
||||
"foreground": "#36f9f6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Go Keywords",
|
||||
"scope": [
|
||||
"source.go keyword.package.go",
|
||||
"source.go keyword.import.go",
|
||||
"source.go keyword.function.go",
|
||||
"source.go keyword.type.go",
|
||||
"source.go keyword.const.go",
|
||||
"source.go keyword.var.go",
|
||||
"source.go keyword.map.go",
|
||||
"source.go keyword.channel.go",
|
||||
"source.go keyword.control.go"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#fede5d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Go interfaces",
|
||||
"scope": [
|
||||
"source.go storage.type",
|
||||
"source.go keyword.struct.go",
|
||||
"source.go keyword.interface.go"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Go Constants e.g. nil, string format (%s, %d, etc.)",
|
||||
"scope": [
|
||||
"source.go constant.language.go",
|
||||
"source.go constant.other.placeholder.go",
|
||||
"source.go variable"
|
||||
],
|
||||
"settings": {
|
||||
"foreground": "#2EE2FA"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown links and image paths",
|
||||
"scope": ["markup.underline.link.markdown", "markup.inline.raw.string.markdown"],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown links and image paths",
|
||||
"scope": ["string.other.link.title.markdown"],
|
||||
"settings": {
|
||||
"foreground": "#fede5d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown headings",
|
||||
"scope": ["markup.heading.markdown", "entity.name.section.markdown"],
|
||||
"settings": {
|
||||
"foreground": "#ff7edb",
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown italic",
|
||||
"scope": ["markup.italic.markdown"],
|
||||
"settings": {
|
||||
"foreground": "#2EE2FA",
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown bold",
|
||||
"scope": ["markup.bold.markdown"],
|
||||
"settings": {
|
||||
"foreground": "#2EE2FA",
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Markdown quotes",
|
||||
"scope": ["punctuation.definition.quote.begin.markdown", "markup.quote.markdown"],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Basic source colours",
|
||||
"scope": ["source.dart", "source.python", "source.scala"],
|
||||
"settings": {
|
||||
"foreground": "#ff7edbff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Dart strings",
|
||||
"scope": ["string.interpolated.single.dart"],
|
||||
"settings": {
|
||||
"foreground": "#f97e72"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Dart variable params",
|
||||
"scope": ["variable.parameter.dart"],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Dart numerics",
|
||||
"scope": ["constant.numeric.dart"],
|
||||
"settings": {
|
||||
"foreground": "#2EE2FA"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Scala variable params",
|
||||
"scope": ["variable.parameter.scala"],
|
||||
"settings": {
|
||||
"foreground": "#2EE2FA"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Scala",
|
||||
"scope": ["meta.template.expression.scala"],
|
||||
"settings": {
|
||||
"foreground": "#72f1b8"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -12,9 +12,9 @@ doctest = false
|
||||
test-support = []
|
||||
|
||||
[dependencies]
|
||||
gpui = { package = "gpui2", path = "../gpui2" }
|
||||
gpui2 = { path = "../gpui2" }
|
||||
util = { path = "../util" }
|
||||
language = { package = "language2", path = "../language2" }
|
||||
language2 = { path = "../language2" }
|
||||
async-trait.workspace = true
|
||||
anyhow.workspace = true
|
||||
futures.workspace = true
|
||||
@@ -35,4 +35,4 @@ rusqlite = { version = "0.29.0", features = ["blob", "array", "modern_sqlite"] }
|
||||
bincode = "1.3.3"
|
||||
|
||||
[dev-dependencies]
|
||||
gpui = { package = "gpui2", path = "../gpui2", features = ["test-support"] }
|
||||
gpui2 = { path = "../gpui2", features = ["test-support"] }
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
use gpui::AppContext;
|
||||
use async_trait::async_trait;
|
||||
use gpui2::AppContext;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub enum ProviderCredential {
|
||||
@@ -7,9 +8,10 @@ pub enum ProviderCredential {
|
||||
NotNeeded,
|
||||
}
|
||||
|
||||
pub trait CredentialProvider {
|
||||
#[async_trait]
|
||||
pub trait CredentialProvider: Send + Sync {
|
||||
fn has_credentials(&self) -> bool;
|
||||
fn retrieve_credentials(&self, cx: &mut AppContext) -> ProviderCredential;
|
||||
fn save_credentials(&self, cx: &mut AppContext, credential: ProviderCredential);
|
||||
fn delete_credentials(&self, cx: &mut AppContext);
|
||||
async fn retrieve_credentials(&self, cx: &mut AppContext) -> ProviderCredential;
|
||||
async fn save_credentials(&self, cx: &mut AppContext, credential: ProviderCredential);
|
||||
async fn delete_credentials(&self, cx: &mut AppContext);
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@ mod tests {
|
||||
use super::*;
|
||||
use rand::prelude::*;
|
||||
|
||||
#[gpui::test]
|
||||
#[gpui2::test]
|
||||
fn test_similarity(mut rng: StdRng) {
|
||||
assert_eq!(
|
||||
Embedding::from(vec![1., 0., 0., 0., 0.])
|
||||
|
||||
@@ -2,7 +2,7 @@ use std::cmp::Reverse;
|
||||
use std::ops::Range;
|
||||
use std::sync::Arc;
|
||||
|
||||
use language::BufferSnapshot;
|
||||
use language2::BufferSnapshot;
|
||||
use util::ResultExt;
|
||||
|
||||
use crate::models::LanguageModel;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use anyhow::anyhow;
|
||||
use language::BufferSnapshot;
|
||||
use language::ToOffset;
|
||||
use language2::BufferSnapshot;
|
||||
use language2::ToOffset;
|
||||
|
||||
use crate::models::LanguageModel;
|
||||
use crate::models::TruncationDirection;
|
||||
|
||||
@@ -2,8 +2,8 @@ use crate::prompts::base::{PromptArguments, PromptTemplate};
|
||||
use std::fmt::Write;
|
||||
use std::{ops::Range, path::PathBuf};
|
||||
|
||||
use gpui::{AsyncAppContext, Model};
|
||||
use language::{Anchor, Buffer};
|
||||
use gpui2::{AsyncAppContext, Model};
|
||||
use language2::{Anchor, Buffer};
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct PromptCodeSnippet {
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
use anyhow::{anyhow, Result};
|
||||
use async_trait::async_trait;
|
||||
use futures::{
|
||||
future::BoxFuture, io::BufReader, stream::BoxStream, AsyncBufReadExt, AsyncReadExt, FutureExt,
|
||||
Stream, StreamExt,
|
||||
};
|
||||
use gpui::{AppContext, BackgroundExecutor};
|
||||
use gpui2::{AppContext, Executor};
|
||||
use isahc::{http::StatusCode, Request, RequestExt};
|
||||
use parking_lot::RwLock;
|
||||
use serde::{Deserialize, Serialize};
|
||||
@@ -104,7 +105,7 @@ pub struct OpenAIResponseStreamEvent {
|
||||
|
||||
pub async fn stream_completion(
|
||||
credential: ProviderCredential,
|
||||
executor: Arc<BackgroundExecutor>,
|
||||
executor: Arc<Executor>,
|
||||
request: Box<dyn CompletionRequest>,
|
||||
) -> Result<impl Stream<Item = Result<OpenAIResponseStreamEvent>>> {
|
||||
let api_key = match credential {
|
||||
@@ -197,11 +198,11 @@ pub async fn stream_completion(
|
||||
pub struct OpenAICompletionProvider {
|
||||
model: OpenAILanguageModel,
|
||||
credential: Arc<RwLock<ProviderCredential>>,
|
||||
executor: Arc<BackgroundExecutor>,
|
||||
executor: Arc<Executor>,
|
||||
}
|
||||
|
||||
impl OpenAICompletionProvider {
|
||||
pub fn new(model_name: &str, executor: Arc<BackgroundExecutor>) -> Self {
|
||||
pub fn new(model_name: &str, executor: Arc<Executor>) -> Self {
|
||||
let model = OpenAILanguageModel::load(model_name);
|
||||
let credential = Arc::new(RwLock::new(ProviderCredential::NoCredentials));
|
||||
Self {
|
||||
@@ -212,6 +213,7 @@ impl OpenAICompletionProvider {
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl CredentialProvider for OpenAICompletionProvider {
|
||||
fn has_credentials(&self) -> bool {
|
||||
match *self.credential.read() {
|
||||
@@ -219,45 +221,52 @@ impl CredentialProvider for OpenAICompletionProvider {
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
||||
fn retrieve_credentials(&self, cx: &mut AppContext) -> ProviderCredential {
|
||||
async fn retrieve_credentials(&self, cx: &mut AppContext) -> ProviderCredential {
|
||||
let existing_credential = self.credential.read().clone();
|
||||
let retrieved_credential = match existing_credential {
|
||||
ProviderCredential::Credentials { .. } => existing_credential.clone(),
|
||||
_ => {
|
||||
if let Some(api_key) = env::var("OPENAI_API_KEY").log_err() {
|
||||
ProviderCredential::Credentials { api_key }
|
||||
} else if let Some(Some((_, api_key))) =
|
||||
cx.read_credentials(OPENAI_API_URL).log_err()
|
||||
{
|
||||
if let Some(api_key) = String::from_utf8(api_key).log_err() {
|
||||
ProviderCredential::Credentials { api_key }
|
||||
} else {
|
||||
ProviderCredential::NoCredentials
|
||||
}
|
||||
} else {
|
||||
ProviderCredential::NoCredentials
|
||||
|
||||
let retrieved_credential = cx
|
||||
.run_on_main(move |cx| match existing_credential {
|
||||
ProviderCredential::Credentials { .. } => {
|
||||
return existing_credential.clone();
|
||||
}
|
||||
}
|
||||
};
|
||||
_ => {
|
||||
if let Some(api_key) = env::var("OPENAI_API_KEY").log_err() {
|
||||
return ProviderCredential::Credentials { api_key };
|
||||
}
|
||||
|
||||
if let Some(Some((_, api_key))) = cx.read_credentials(OPENAI_API_URL).log_err()
|
||||
{
|
||||
if let Some(api_key) = String::from_utf8(api_key).log_err() {
|
||||
return ProviderCredential::Credentials { api_key };
|
||||
} else {
|
||||
return ProviderCredential::NoCredentials;
|
||||
}
|
||||
} else {
|
||||
return ProviderCredential::NoCredentials;
|
||||
}
|
||||
}
|
||||
})
|
||||
.await;
|
||||
|
||||
*self.credential.write() = retrieved_credential.clone();
|
||||
retrieved_credential
|
||||
}
|
||||
|
||||
fn save_credentials(&self, cx: &mut AppContext, credential: ProviderCredential) {
|
||||
async fn save_credentials(&self, cx: &mut AppContext, credential: ProviderCredential) {
|
||||
*self.credential.write() = credential.clone();
|
||||
let credential = credential.clone();
|
||||
match credential {
|
||||
cx.run_on_main(move |cx| match credential {
|
||||
ProviderCredential::Credentials { api_key } => {
|
||||
cx.write_credentials(OPENAI_API_URL, "Bearer", api_key.as_bytes())
|
||||
.log_err();
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
})
|
||||
.await;
|
||||
}
|
||||
|
||||
fn delete_credentials(&self, cx: &mut AppContext) {
|
||||
cx.delete_credentials(OPENAI_API_URL).log_err();
|
||||
async fn delete_credentials(&self, cx: &mut AppContext) {
|
||||
cx.run_on_main(move |cx| cx.delete_credentials(OPENAI_API_URL).log_err())
|
||||
.await;
|
||||
*self.credential.write() = ProviderCredential::NoCredentials;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
use anyhow::{anyhow, Result};
|
||||
use async_trait::async_trait;
|
||||
use futures::AsyncReadExt;
|
||||
use gpui::BackgroundExecutor;
|
||||
use gpui::{serde_json, AppContext};
|
||||
use gpui2::Executor;
|
||||
use gpui2::{serde_json, AppContext};
|
||||
use isahc::http::StatusCode;
|
||||
use isahc::prelude::Configurable;
|
||||
use isahc::{AsyncBody, Response};
|
||||
@@ -35,7 +35,7 @@ pub struct OpenAIEmbeddingProvider {
|
||||
model: OpenAILanguageModel,
|
||||
credential: Arc<RwLock<ProviderCredential>>,
|
||||
pub client: Arc<dyn HttpClient>,
|
||||
pub executor: Arc<BackgroundExecutor>,
|
||||
pub executor: Arc<Executor>,
|
||||
rate_limit_count_rx: watch::Receiver<Option<Instant>>,
|
||||
rate_limit_count_tx: Arc<Mutex<watch::Sender<Option<Instant>>>>,
|
||||
}
|
||||
@@ -66,7 +66,7 @@ struct OpenAIEmbeddingUsage {
|
||||
}
|
||||
|
||||
impl OpenAIEmbeddingProvider {
|
||||
pub fn new(client: Arc<dyn HttpClient>, executor: Arc<BackgroundExecutor>) -> Self {
|
||||
pub fn new(client: Arc<dyn HttpClient>, executor: Arc<Executor>) -> Self {
|
||||
let (rate_limit_count_tx, rate_limit_count_rx) = watch::channel_with(None);
|
||||
let rate_limit_count_tx = Arc::new(Mutex::new(rate_limit_count_tx));
|
||||
|
||||
@@ -146,6 +146,7 @@ impl OpenAIEmbeddingProvider {
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl CredentialProvider for OpenAIEmbeddingProvider {
|
||||
fn has_credentials(&self) -> bool {
|
||||
match *self.credential.read() {
|
||||
@@ -153,45 +154,52 @@ impl CredentialProvider for OpenAIEmbeddingProvider {
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
fn retrieve_credentials(&self, cx: &mut AppContext) -> ProviderCredential {
|
||||
async fn retrieve_credentials(&self, cx: &mut AppContext) -> ProviderCredential {
|
||||
let existing_credential = self.credential.read().clone();
|
||||
|
||||
let retrieved_credential = match existing_credential {
|
||||
ProviderCredential::Credentials { .. } => existing_credential.clone(),
|
||||
_ => {
|
||||
if let Some(api_key) = env::var("OPENAI_API_KEY").log_err() {
|
||||
ProviderCredential::Credentials { api_key }
|
||||
} else if let Some(Some((_, api_key))) =
|
||||
cx.read_credentials(OPENAI_API_URL).log_err()
|
||||
{
|
||||
if let Some(api_key) = String::from_utf8(api_key).log_err() {
|
||||
ProviderCredential::Credentials { api_key }
|
||||
} else {
|
||||
ProviderCredential::NoCredentials
|
||||
}
|
||||
} else {
|
||||
ProviderCredential::NoCredentials
|
||||
let retrieved_credential = cx
|
||||
.run_on_main(move |cx| match existing_credential {
|
||||
ProviderCredential::Credentials { .. } => {
|
||||
return existing_credential.clone();
|
||||
}
|
||||
}
|
||||
};
|
||||
_ => {
|
||||
if let Some(api_key) = env::var("OPENAI_API_KEY").log_err() {
|
||||
return ProviderCredential::Credentials { api_key };
|
||||
}
|
||||
|
||||
if let Some(Some((_, api_key))) = cx.read_credentials(OPENAI_API_URL).log_err()
|
||||
{
|
||||
if let Some(api_key) = String::from_utf8(api_key).log_err() {
|
||||
return ProviderCredential::Credentials { api_key };
|
||||
} else {
|
||||
return ProviderCredential::NoCredentials;
|
||||
}
|
||||
} else {
|
||||
return ProviderCredential::NoCredentials;
|
||||
}
|
||||
}
|
||||
})
|
||||
.await;
|
||||
|
||||
*self.credential.write() = retrieved_credential.clone();
|
||||
retrieved_credential
|
||||
}
|
||||
|
||||
fn save_credentials(&self, cx: &mut AppContext, credential: ProviderCredential) {
|
||||
async fn save_credentials(&self, cx: &mut AppContext, credential: ProviderCredential) {
|
||||
*self.credential.write() = credential.clone();
|
||||
match credential {
|
||||
let credential = credential.clone();
|
||||
cx.run_on_main(move |cx| match credential {
|
||||
ProviderCredential::Credentials { api_key } => {
|
||||
cx.write_credentials(OPENAI_API_URL, "Bearer", api_key.as_bytes())
|
||||
.log_err();
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
})
|
||||
.await;
|
||||
}
|
||||
|
||||
fn delete_credentials(&self, cx: &mut AppContext) {
|
||||
cx.delete_credentials(OPENAI_API_URL).log_err();
|
||||
async fn delete_credentials(&self, cx: &mut AppContext) {
|
||||
cx.run_on_main(move |cx| cx.delete_credentials(OPENAI_API_URL).log_err())
|
||||
.await;
|
||||
*self.credential.write() = ProviderCredential::NoCredentials;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ use std::{
|
||||
|
||||
use async_trait::async_trait;
|
||||
use futures::{channel::mpsc, future::BoxFuture, stream::BoxStream, FutureExt, StreamExt};
|
||||
use gpui::AppContext;
|
||||
use gpui2::AppContext;
|
||||
use parking_lot::Mutex;
|
||||
|
||||
use crate::{
|
||||
@@ -100,15 +100,16 @@ impl FakeEmbeddingProvider {
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl CredentialProvider for FakeEmbeddingProvider {
|
||||
fn has_credentials(&self) -> bool {
|
||||
true
|
||||
}
|
||||
fn retrieve_credentials(&self, _cx: &mut AppContext) -> ProviderCredential {
|
||||
async fn retrieve_credentials(&self, _cx: &mut AppContext) -> ProviderCredential {
|
||||
ProviderCredential::NotNeeded
|
||||
}
|
||||
fn save_credentials(&self, _cx: &mut AppContext, _credential: ProviderCredential) {}
|
||||
fn delete_credentials(&self, _cx: &mut AppContext) {}
|
||||
async fn save_credentials(&self, _cx: &mut AppContext, _credential: ProviderCredential) {}
|
||||
async fn delete_credentials(&self, _cx: &mut AppContext) {}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
@@ -161,15 +162,16 @@ impl FakeCompletionProvider {
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl CredentialProvider for FakeCompletionProvider {
|
||||
fn has_credentials(&self) -> bool {
|
||||
true
|
||||
}
|
||||
fn retrieve_credentials(&self, _cx: &mut AppContext) -> ProviderCredential {
|
||||
async fn retrieve_credentials(&self, _cx: &mut AppContext) -> ProviderCredential {
|
||||
ProviderCredential::NotNeeded
|
||||
}
|
||||
fn save_credentials(&self, _cx: &mut AppContext, _credential: ProviderCredential) {}
|
||||
fn delete_credentials(&self, _cx: &mut AppContext) {}
|
||||
async fn save_credentials(&self, _cx: &mut AppContext, _credential: ProviderCredential) {}
|
||||
async fn delete_credentials(&self, _cx: &mut AppContext) {}
|
||||
}
|
||||
|
||||
impl CompletionProvider for FakeCompletionProvider {
|
||||
|
||||
@@ -9,7 +9,7 @@ path = "src/audio2.rs"
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
gpui = { package = "gpui2", path = "../gpui2" }
|
||||
gpui2 = { path = "../gpui2" }
|
||||
collections = { path = "../collections" }
|
||||
util = { path = "../util" }
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ use std::{io::Cursor, sync::Arc};
|
||||
|
||||
use anyhow::Result;
|
||||
use collections::HashMap;
|
||||
use gpui::{AppContext, AssetSource};
|
||||
use gpui2::{AppContext, AssetSource};
|
||||
use rodio::{
|
||||
source::{Buffered, SamplesConverter},
|
||||
Decoder, Source,
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
use assets::SoundRegistry;
|
||||
use gpui::{AppContext, AssetSource};
|
||||
use futures::{channel::mpsc, StreamExt};
|
||||
use gpui2::{AppContext, AssetSource, Executor};
|
||||
use rodio::{OutputStream, OutputStreamHandle};
|
||||
use util::ResultExt;
|
||||
|
||||
mod assets;
|
||||
|
||||
pub fn init(source: impl AssetSource, cx: &mut AppContext) {
|
||||
cx.set_global(Audio::new(cx.executor()));
|
||||
cx.set_global(SoundRegistry::new(source));
|
||||
cx.set_global(Audio::new());
|
||||
}
|
||||
|
||||
pub enum Sound {
|
||||
@@ -33,18 +34,15 @@ impl Sound {
|
||||
}
|
||||
|
||||
pub struct Audio {
|
||||
tx: mpsc::UnboundedSender<Box<dyn FnOnce(&mut AudioState) + Send>>,
|
||||
}
|
||||
|
||||
struct AudioState {
|
||||
_output_stream: Option<OutputStream>,
|
||||
output_handle: Option<OutputStreamHandle>,
|
||||
}
|
||||
|
||||
impl Audio {
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
_output_stream: None,
|
||||
output_handle: None,
|
||||
}
|
||||
}
|
||||
|
||||
impl AudioState {
|
||||
fn ensure_output_exists(&mut self) -> Option<&OutputStreamHandle> {
|
||||
if self.output_handle.is_none() {
|
||||
let (_output_stream, output_handle) = OutputStream::try_default().log_err().unzip();
|
||||
@@ -55,27 +53,59 @@ impl Audio {
|
||||
self.output_handle.as_ref()
|
||||
}
|
||||
|
||||
fn take(&mut self) {
|
||||
self._output_stream.take();
|
||||
self.output_handle.take();
|
||||
}
|
||||
}
|
||||
|
||||
impl Audio {
|
||||
pub fn new(executor: &Executor) -> Self {
|
||||
let (tx, mut rx) = mpsc::unbounded::<Box<dyn FnOnce(&mut AudioState) + Send>>();
|
||||
executor
|
||||
.spawn_on_main(|| async move {
|
||||
let mut audio = AudioState {
|
||||
_output_stream: None,
|
||||
output_handle: None,
|
||||
};
|
||||
|
||||
while let Some(f) = rx.next().await {
|
||||
(f)(&mut audio);
|
||||
}
|
||||
})
|
||||
.detach();
|
||||
|
||||
Self { tx }
|
||||
}
|
||||
|
||||
pub fn play_sound(sound: Sound, cx: &mut AppContext) {
|
||||
if !cx.has_global::<Self>() {
|
||||
return;
|
||||
}
|
||||
|
||||
cx.update_global::<Self, _>(|this, cx| {
|
||||
let output_handle = this.ensure_output_exists()?;
|
||||
let source = SoundRegistry::global(cx).get(sound.file()).log_err()?;
|
||||
output_handle.play_raw(source).log_err()?;
|
||||
Some(())
|
||||
});
|
||||
let Some(source) = SoundRegistry::global(cx).get(sound.file()).log_err() else {
|
||||
return;
|
||||
};
|
||||
|
||||
let this = cx.global::<Self>();
|
||||
this.tx
|
||||
.unbounded_send(Box::new(move |state| {
|
||||
if let Some(output_handle) = state.ensure_output_exists() {
|
||||
output_handle.play_raw(source).log_err();
|
||||
}
|
||||
}))
|
||||
.ok();
|
||||
}
|
||||
|
||||
pub fn end_call(cx: &mut AppContext) {
|
||||
pub fn end_call(cx: &AppContext) {
|
||||
if !cx.has_global::<Self>() {
|
||||
return;
|
||||
}
|
||||
|
||||
cx.update_global::<Self, _>(|this, _| {
|
||||
this._output_stream.take();
|
||||
this.output_handle.take();
|
||||
});
|
||||
let this = cx.global::<Self>();
|
||||
|
||||
this.tx
|
||||
.unbounded_send(Box::new(move |state| state.take()))
|
||||
.ok();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,26 +10,26 @@ doctest = false
|
||||
|
||||
[features]
|
||||
test-support = [
|
||||
"client/test-support",
|
||||
"client2/test-support",
|
||||
"collections/test-support",
|
||||
"gpui/test-support",
|
||||
"gpui2/test-support",
|
||||
"live_kit_client/test-support",
|
||||
"project/test-support",
|
||||
"project2/test-support",
|
||||
"util/test-support"
|
||||
]
|
||||
|
||||
[dependencies]
|
||||
audio = { package = "audio2", path = "../audio2" }
|
||||
client = { package = "client2", path = "../client2" }
|
||||
audio2 = { path = "../audio2" }
|
||||
client2 = { path = "../client2" }
|
||||
collections = { path = "../collections" }
|
||||
gpui = { package = "gpui2", path = "../gpui2" }
|
||||
gpui2 = { path = "../gpui2" }
|
||||
log.workspace = true
|
||||
live_kit_client = { package = "live_kit_client2", path = "../live_kit_client2" }
|
||||
fs = { package = "fs2", path = "../fs2" }
|
||||
language = { package = "language2", path = "../language2" }
|
||||
live_kit_client = { path = "../live_kit_client" }
|
||||
fs2 = { path = "../fs2" }
|
||||
language2 = { path = "../language2" }
|
||||
media = { path = "../media" }
|
||||
project = { package = "project2", path = "../project2" }
|
||||
settings = { package = "settings2", path = "../settings2" }
|
||||
project2 = { path = "../project2" }
|
||||
settings2 = { path = "../settings2" }
|
||||
util = { path = "../util" }
|
||||
|
||||
anyhow.workspace = true
|
||||
@@ -42,11 +42,11 @@ serde_json.workspace = true
|
||||
serde_derive.workspace = true
|
||||
|
||||
[dev-dependencies]
|
||||
client = { package = "client2", path = "../client2", features = ["test-support"] }
|
||||
fs = { package = "fs2", path = "../fs2", features = ["test-support"] }
|
||||
language = { package = "language2", path = "../language2", features = ["test-support"] }
|
||||
client2 = { path = "../client2", features = ["test-support"] }
|
||||
fs2 = { path = "../fs2", features = ["test-support"] }
|
||||
language2 = { path = "../language2", features = ["test-support"] }
|
||||
collections = { path = "../collections", features = ["test-support"] }
|
||||
gpui = { package = "gpui2", path = "../gpui2", features = ["test-support"] }
|
||||
live_kit_client = { package = "live_kit_client2", path = "../live_kit_client2", features = ["test-support"] }
|
||||
project = { package = "project2", path = "../project2", features = ["test-support"] }
|
||||
gpui2 = { path = "../gpui2", features = ["test-support"] }
|
||||
live_kit_client = { path = "../live_kit_client", features = ["test-support"] }
|
||||
project2 = { path = "../project2", features = ["test-support"] }
|
||||
util = { path = "../util", features = ["test-support"] }
|
||||
|
||||
@@ -3,21 +3,21 @@ pub mod participant;
|
||||
pub mod room;
|
||||
|
||||
use anyhow::{anyhow, Result};
|
||||
use audio::Audio;
|
||||
use audio2::Audio;
|
||||
use call_settings::CallSettings;
|
||||
use client::{
|
||||
use client2::{
|
||||
proto, ClickhouseEvent, Client, TelemetrySettings, TypedEnvelope, User, UserStore,
|
||||
ZED_ALWAYS_ACTIVE,
|
||||
};
|
||||
use collections::HashSet;
|
||||
use futures::{future::Shared, FutureExt};
|
||||
use gpui::{
|
||||
use gpui2::{
|
||||
AppContext, AsyncAppContext, Context, EventEmitter, Model, ModelContext, Subscription, Task,
|
||||
WeakModel,
|
||||
};
|
||||
use postage::watch;
|
||||
use project::Project;
|
||||
use settings::Settings;
|
||||
use project2::Project;
|
||||
use settings2::Settings;
|
||||
use std::sync::Arc;
|
||||
|
||||
pub use participant::ParticipantLocation;
|
||||
@@ -50,7 +50,7 @@ pub struct ActiveCall {
|
||||
),
|
||||
client: Arc<Client>,
|
||||
user_store: Model<UserStore>,
|
||||
_subscriptions: Vec<client::Subscription>,
|
||||
_subscriptions: Vec<client2::Subscription>,
|
||||
}
|
||||
|
||||
impl EventEmitter for ActiveCall {
|
||||
@@ -196,7 +196,7 @@ impl ActiveCall {
|
||||
})
|
||||
.shared();
|
||||
self.pending_room_creation = Some(room.clone());
|
||||
cx.background_executor().spawn(async move {
|
||||
cx.executor().spawn(async move {
|
||||
room.await.map_err(|err| anyhow!("{:?}", err))?;
|
||||
anyhow::Ok(())
|
||||
})
|
||||
@@ -230,7 +230,7 @@ impl ActiveCall {
|
||||
};
|
||||
|
||||
let client = self.client.clone();
|
||||
cx.background_executor().spawn(async move {
|
||||
cx.executor().spawn(async move {
|
||||
client
|
||||
.request(proto::CancelCall {
|
||||
room_id,
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
use anyhow::Result;
|
||||
use gpui::AppContext;
|
||||
use gpui2::AppContext;
|
||||
use schemars::JsonSchema;
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
use settings::Settings;
|
||||
use settings2::Settings;
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
pub struct CallSettings {
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
use anyhow::{anyhow, Result};
|
||||
use client::ParticipantIndex;
|
||||
use client::{proto, User};
|
||||
use collections::HashMap;
|
||||
use gpui::WeakModel;
|
||||
use client2::ParticipantIndex;
|
||||
use client2::{proto, User};
|
||||
use gpui2::WeakModel;
|
||||
pub use live_kit_client::Frame;
|
||||
use live_kit_client::{RemoteAudioTrack, RemoteVideoTrack};
|
||||
use project::Project;
|
||||
use std::sync::Arc;
|
||||
use project2::Project;
|
||||
use std::{fmt, sync::Arc};
|
||||
|
||||
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
|
||||
pub enum ParticipantLocation {
|
||||
@@ -47,6 +45,27 @@ pub struct RemoteParticipant {
|
||||
pub participant_index: ParticipantIndex,
|
||||
pub muted: bool,
|
||||
pub speaking: bool,
|
||||
pub video_tracks: HashMap<live_kit_client::Sid, Arc<RemoteVideoTrack>>,
|
||||
pub audio_tracks: HashMap<live_kit_client::Sid, Arc<RemoteAudioTrack>>,
|
||||
// pub video_tracks: HashMap<live_kit_client::Sid, Arc<RemoteVideoTrack>>,
|
||||
// pub audio_tracks: HashMap<live_kit_client::Sid, Arc<RemoteAudioTrack>>,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct RemoteVideoTrack {
|
||||
pub(crate) live_kit_track: Arc<live_kit_client::RemoteVideoTrack>,
|
||||
}
|
||||
|
||||
unsafe impl Send for RemoteVideoTrack {}
|
||||
// todo!("remove this sync because it's not legit")
|
||||
unsafe impl Sync for RemoteVideoTrack {}
|
||||
|
||||
impl fmt::Debug for RemoteVideoTrack {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
f.debug_struct("RemoteVideoTrack").finish()
|
||||
}
|
||||
}
|
||||
|
||||
impl RemoteVideoTrack {
|
||||
pub fn frames(&self) -> async_broadcast::Receiver<Frame> {
|
||||
self.live_kit_track.frames()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
[package]
|
||||
name = "channel2"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
publish = false
|
||||
|
||||
[lib]
|
||||
path = "src/channel2.rs"
|
||||
doctest = false
|
||||
|
||||
[features]
|
||||
test-support = ["collections/test-support", "gpui/test-support", "rpc/test-support"]
|
||||
|
||||
[dependencies]
|
||||
client = { package = "client2", path = "../client2" }
|
||||
collections = { path = "../collections" }
|
||||
db = { package = "db2", path = "../db2" }
|
||||
gpui = { package = "gpui2", path = "../gpui2" }
|
||||
util = { path = "../util" }
|
||||
rpc = { package = "rpc2", path = "../rpc2" }
|
||||
text = { path = "../text" }
|
||||
language = { package = "language2", path = "../language2" }
|
||||
settings = { package = "settings2", path = "../settings2" }
|
||||
feature_flags = { package = "feature_flags2", path = "../feature_flags2" }
|
||||
sum_tree = { path = "../sum_tree" }
|
||||
clock = { path = "../clock" }
|
||||
|
||||
anyhow.workspace = true
|
||||
futures.workspace = true
|
||||
image = "0.23"
|
||||
lazy_static.workspace = true
|
||||
smallvec.workspace = true
|
||||
log.workspace = true
|
||||
parking_lot.workspace = true
|
||||
postage.workspace = true
|
||||
rand.workspace = true
|
||||
schemars.workspace = true
|
||||
smol.workspace = true
|
||||
thiserror.workspace = true
|
||||
time.workspace = true
|
||||
tiny_http = "0.8"
|
||||
uuid.workspace = true
|
||||
url = "2.2"
|
||||
serde.workspace = true
|
||||
serde_derive.workspace = true
|
||||
tempfile = "3"
|
||||
|
||||
[dev-dependencies]
|
||||
collections = { path = "../collections", features = ["test-support"] }
|
||||
gpui = { package = "gpui2", path = "../gpui2", features = ["test-support"] }
|
||||
rpc = { package = "rpc2", path = "../rpc2", features = ["test-support"] }
|
||||
client = { package = "client2", path = "../client2", features = ["test-support"] }
|
||||
settings = { package = "settings2", path = "../settings2", features = ["test-support"] }
|
||||
util = { path = "../util", features = ["test-support"] }
|
||||
@@ -1,23 +0,0 @@
|
||||
mod channel_buffer;
|
||||
mod channel_chat;
|
||||
mod channel_store;
|
||||
|
||||
use client::{Client, UserStore};
|
||||
use gpui::{AppContext, Model};
|
||||
use std::sync::Arc;
|
||||
|
||||
pub use channel_buffer::{ChannelBuffer, ChannelBufferEvent, ACKNOWLEDGE_DEBOUNCE_INTERVAL};
|
||||
pub use channel_chat::{
|
||||
mentions_to_proto, ChannelChat, ChannelChatEvent, ChannelMessage, ChannelMessageId,
|
||||
MessageParams,
|
||||
};
|
||||
pub use channel_store::{Channel, ChannelEvent, ChannelId, ChannelMembership, ChannelStore};
|
||||
|
||||
#[cfg(test)]
|
||||
mod channel_store_tests;
|
||||
|
||||
pub fn init(client: &Arc<Client>, user_store: Model<UserStore>, cx: &mut AppContext) {
|
||||
channel_store::init(client, user_store, cx);
|
||||
channel_buffer::init(client);
|
||||
channel_chat::init(client);
|
||||
}
|
||||
@@ -1,259 +0,0 @@
|
||||
use crate::{Channel, ChannelId, ChannelStore};
|
||||
use anyhow::Result;
|
||||
use client::{Client, Collaborator, UserStore};
|
||||
use collections::HashMap;
|
||||
use gpui::{AppContext, AsyncAppContext, Context, EventEmitter, Model, ModelContext, Task};
|
||||
use language::proto::serialize_version;
|
||||
use rpc::{
|
||||
proto::{self, PeerId},
|
||||
TypedEnvelope,
|
||||
};
|
||||
use std::{sync::Arc, time::Duration};
|
||||
use util::ResultExt;
|
||||
|
||||
pub const ACKNOWLEDGE_DEBOUNCE_INTERVAL: Duration = Duration::from_millis(250);
|
||||
|
||||
pub(crate) fn init(client: &Arc<Client>) {
|
||||
client.add_model_message_handler(ChannelBuffer::handle_update_channel_buffer);
|
||||
client.add_model_message_handler(ChannelBuffer::handle_update_channel_buffer_collaborators);
|
||||
}
|
||||
|
||||
pub struct ChannelBuffer {
|
||||
pub channel_id: ChannelId,
|
||||
connected: bool,
|
||||
collaborators: HashMap<PeerId, Collaborator>,
|
||||
user_store: Model<UserStore>,
|
||||
channel_store: Model<ChannelStore>,
|
||||
buffer: Model<language::Buffer>,
|
||||
buffer_epoch: u64,
|
||||
client: Arc<Client>,
|
||||
subscription: Option<client::Subscription>,
|
||||
acknowledge_task: Option<Task<Result<()>>>,
|
||||
}
|
||||
|
||||
pub enum ChannelBufferEvent {
|
||||
CollaboratorsChanged,
|
||||
Disconnected,
|
||||
BufferEdited,
|
||||
ChannelChanged,
|
||||
}
|
||||
|
||||
impl EventEmitter for ChannelBuffer {
|
||||
type Event = ChannelBufferEvent;
|
||||
}
|
||||
|
||||
impl ChannelBuffer {
|
||||
pub(crate) async fn new(
|
||||
channel: Arc<Channel>,
|
||||
client: Arc<Client>,
|
||||
user_store: Model<UserStore>,
|
||||
channel_store: Model<ChannelStore>,
|
||||
mut cx: AsyncAppContext,
|
||||
) -> Result<Model<Self>> {
|
||||
let response = client
|
||||
.request(proto::JoinChannelBuffer {
|
||||
channel_id: channel.id,
|
||||
})
|
||||
.await?;
|
||||
|
||||
let base_text = response.base_text;
|
||||
let operations = response
|
||||
.operations
|
||||
.into_iter()
|
||||
.map(language::proto::deserialize_operation)
|
||||
.collect::<Result<Vec<_>, _>>()?;
|
||||
|
||||
let buffer = cx.build_model(|_| {
|
||||
language::Buffer::remote(response.buffer_id, response.replica_id as u16, base_text)
|
||||
})?;
|
||||
buffer.update(&mut cx, |buffer, cx| buffer.apply_ops(operations, cx))??;
|
||||
|
||||
let subscription = client.subscribe_to_entity(channel.id)?;
|
||||
|
||||
anyhow::Ok(cx.build_model(|cx| {
|
||||
cx.subscribe(&buffer, Self::on_buffer_update).detach();
|
||||
cx.on_release(Self::release).detach();
|
||||
let mut this = Self {
|
||||
buffer,
|
||||
buffer_epoch: response.epoch,
|
||||
client,
|
||||
connected: true,
|
||||
collaborators: Default::default(),
|
||||
acknowledge_task: None,
|
||||
channel_id: channel.id,
|
||||
subscription: Some(subscription.set_model(&cx.handle(), &mut cx.to_async())),
|
||||
user_store,
|
||||
channel_store,
|
||||
};
|
||||
this.replace_collaborators(response.collaborators, cx);
|
||||
this
|
||||
})?)
|
||||
}
|
||||
|
||||
fn release(&mut self, _: &mut AppContext) {
|
||||
if self.connected {
|
||||
if let Some(task) = self.acknowledge_task.take() {
|
||||
task.detach();
|
||||
}
|
||||
self.client
|
||||
.send(proto::LeaveChannelBuffer {
|
||||
channel_id: self.channel_id,
|
||||
})
|
||||
.log_err();
|
||||
}
|
||||
}
|
||||
|
||||
pub fn remote_id(&self, cx: &AppContext) -> u64 {
|
||||
self.buffer.read(cx).remote_id()
|
||||
}
|
||||
|
||||
pub fn user_store(&self) -> &Model<UserStore> {
|
||||
&self.user_store
|
||||
}
|
||||
|
||||
pub(crate) fn replace_collaborators(
|
||||
&mut self,
|
||||
collaborators: Vec<proto::Collaborator>,
|
||||
cx: &mut ModelContext<Self>,
|
||||
) {
|
||||
let mut new_collaborators = HashMap::default();
|
||||
for collaborator in collaborators {
|
||||
if let Ok(collaborator) = Collaborator::from_proto(collaborator) {
|
||||
new_collaborators.insert(collaborator.peer_id, collaborator);
|
||||
}
|
||||
}
|
||||
|
||||
for (_, old_collaborator) in &self.collaborators {
|
||||
if !new_collaborators.contains_key(&old_collaborator.peer_id) {
|
||||
self.buffer.update(cx, |buffer, cx| {
|
||||
buffer.remove_peer(old_collaborator.replica_id as u16, cx)
|
||||
});
|
||||
}
|
||||
}
|
||||
self.collaborators = new_collaborators;
|
||||
cx.emit(ChannelBufferEvent::CollaboratorsChanged);
|
||||
cx.notify();
|
||||
}
|
||||
|
||||
async fn handle_update_channel_buffer(
|
||||
this: Model<Self>,
|
||||
update_channel_buffer: TypedEnvelope<proto::UpdateChannelBuffer>,
|
||||
_: Arc<Client>,
|
||||
mut cx: AsyncAppContext,
|
||||
) -> Result<()> {
|
||||
let ops = update_channel_buffer
|
||||
.payload
|
||||
.operations
|
||||
.into_iter()
|
||||
.map(language::proto::deserialize_operation)
|
||||
.collect::<Result<Vec<_>, _>>()?;
|
||||
|
||||
this.update(&mut cx, |this, cx| {
|
||||
cx.notify();
|
||||
this.buffer
|
||||
.update(cx, |buffer, cx| buffer.apply_ops(ops, cx))
|
||||
})??;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn handle_update_channel_buffer_collaborators(
|
||||
this: Model<Self>,
|
||||
message: TypedEnvelope<proto::UpdateChannelBufferCollaborators>,
|
||||
_: Arc<Client>,
|
||||
mut cx: AsyncAppContext,
|
||||
) -> Result<()> {
|
||||
this.update(&mut cx, |this, cx| {
|
||||
this.replace_collaborators(message.payload.collaborators, cx);
|
||||
cx.emit(ChannelBufferEvent::CollaboratorsChanged);
|
||||
cx.notify();
|
||||
})
|
||||
}
|
||||
|
||||
fn on_buffer_update(
|
||||
&mut self,
|
||||
_: Model<language::Buffer>,
|
||||
event: &language::Event,
|
||||
cx: &mut ModelContext<Self>,
|
||||
) {
|
||||
match event {
|
||||
language::Event::Operation(operation) => {
|
||||
let operation = language::proto::serialize_operation(operation);
|
||||
self.client
|
||||
.send(proto::UpdateChannelBuffer {
|
||||
channel_id: self.channel_id,
|
||||
operations: vec![operation],
|
||||
})
|
||||
.log_err();
|
||||
}
|
||||
language::Event::Edited => {
|
||||
cx.emit(ChannelBufferEvent::BufferEdited);
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn acknowledge_buffer_version(&mut self, cx: &mut ModelContext<'_, ChannelBuffer>) {
|
||||
let buffer = self.buffer.read(cx);
|
||||
let version = buffer.version();
|
||||
let buffer_id = buffer.remote_id();
|
||||
let client = self.client.clone();
|
||||
let epoch = self.epoch();
|
||||
|
||||
self.acknowledge_task = Some(cx.spawn(move |_, cx| async move {
|
||||
cx.background_executor()
|
||||
.timer(ACKNOWLEDGE_DEBOUNCE_INTERVAL)
|
||||
.await;
|
||||
client
|
||||
.send(proto::AckBufferOperation {
|
||||
buffer_id,
|
||||
epoch,
|
||||
version: serialize_version(&version),
|
||||
})
|
||||
.ok();
|
||||
Ok(())
|
||||
}));
|
||||
}
|
||||
|
||||
pub fn epoch(&self) -> u64 {
|
||||
self.buffer_epoch
|
||||
}
|
||||
|
||||
pub fn buffer(&self) -> Model<language::Buffer> {
|
||||
self.buffer.clone()
|
||||
}
|
||||
|
||||
pub fn collaborators(&self) -> &HashMap<PeerId, Collaborator> {
|
||||
&self.collaborators
|
||||
}
|
||||
|
||||
pub fn channel(&self, cx: &AppContext) -> Option<Arc<Channel>> {
|
||||
self.channel_store
|
||||
.read(cx)
|
||||
.channel_for_id(self.channel_id)
|
||||
.cloned()
|
||||
}
|
||||
|
||||
pub(crate) fn disconnect(&mut self, cx: &mut ModelContext<Self>) {
|
||||
log::info!("channel buffer {} disconnected", self.channel_id);
|
||||
if self.connected {
|
||||
self.connected = false;
|
||||
self.subscription.take();
|
||||
cx.emit(ChannelBufferEvent::Disconnected);
|
||||
cx.notify()
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn channel_changed(&mut self, cx: &mut ModelContext<Self>) {
|
||||
cx.emit(ChannelBufferEvent::ChannelChanged);
|
||||
cx.notify()
|
||||
}
|
||||
|
||||
pub fn is_connected(&self) -> bool {
|
||||
self.connected
|
||||
}
|
||||
|
||||
pub fn replica_id(&self, cx: &AppContext) -> u16 {
|
||||
self.buffer.read(cx).replica_id()
|
||||
}
|
||||
}
|
||||
@@ -1,647 +0,0 @@
|
||||
use crate::{Channel, ChannelId, ChannelStore};
|
||||
use anyhow::{anyhow, Result};
|
||||
use client::{
|
||||
proto,
|
||||
user::{User, UserStore},
|
||||
Client, Subscription, TypedEnvelope, UserId,
|
||||
};
|
||||
use futures::lock::Mutex;
|
||||
use gpui::{AppContext, AsyncAppContext, Context, EventEmitter, Model, ModelContext, Task};
|
||||
use rand::prelude::*;
|
||||
use std::{
|
||||
collections::HashSet,
|
||||
mem,
|
||||
ops::{ControlFlow, Range},
|
||||
sync::Arc,
|
||||
};
|
||||
use sum_tree::{Bias, SumTree};
|
||||
use time::OffsetDateTime;
|
||||
use util::{post_inc, ResultExt as _, TryFutureExt};
|
||||
|
||||
pub struct ChannelChat {
|
||||
pub channel_id: ChannelId,
|
||||
messages: SumTree<ChannelMessage>,
|
||||
acknowledged_message_ids: HashSet<u64>,
|
||||
channel_store: Model<ChannelStore>,
|
||||
loaded_all_messages: bool,
|
||||
last_acknowledged_id: Option<u64>,
|
||||
next_pending_message_id: usize,
|
||||
user_store: Model<UserStore>,
|
||||
rpc: Arc<Client>,
|
||||
outgoing_messages_lock: Arc<Mutex<()>>,
|
||||
rng: StdRng,
|
||||
_subscription: Subscription,
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Eq)]
|
||||
pub struct MessageParams {
|
||||
pub text: String,
|
||||
pub mentions: Vec<(Range<usize>, UserId)>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct ChannelMessage {
|
||||
pub id: ChannelMessageId,
|
||||
pub body: String,
|
||||
pub timestamp: OffsetDateTime,
|
||||
pub sender: Arc<User>,
|
||||
pub nonce: u128,
|
||||
pub mentions: Vec<(Range<usize>, UserId)>,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
||||
pub enum ChannelMessageId {
|
||||
Saved(u64),
|
||||
Pending(usize),
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Default)]
|
||||
pub struct ChannelMessageSummary {
|
||||
max_id: ChannelMessageId,
|
||||
count: usize,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord)]
|
||||
struct Count(usize);
|
||||
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
pub enum ChannelChatEvent {
|
||||
MessagesUpdated {
|
||||
old_range: Range<usize>,
|
||||
new_count: usize,
|
||||
},
|
||||
NewMessage {
|
||||
channel_id: ChannelId,
|
||||
message_id: u64,
|
||||
},
|
||||
}
|
||||
|
||||
impl EventEmitter for ChannelChat {
|
||||
type Event = ChannelChatEvent;
|
||||
}
|
||||
pub fn init(client: &Arc<Client>) {
|
||||
client.add_model_message_handler(ChannelChat::handle_message_sent);
|
||||
client.add_model_message_handler(ChannelChat::handle_message_removed);
|
||||
}
|
||||
|
||||
impl ChannelChat {
|
||||
pub async fn new(
|
||||
channel: Arc<Channel>,
|
||||
channel_store: Model<ChannelStore>,
|
||||
user_store: Model<UserStore>,
|
||||
client: Arc<Client>,
|
||||
mut cx: AsyncAppContext,
|
||||
) -> Result<Model<Self>> {
|
||||
let channel_id = channel.id;
|
||||
let subscription = client.subscribe_to_entity(channel_id).unwrap();
|
||||
|
||||
let response = client
|
||||
.request(proto::JoinChannelChat { channel_id })
|
||||
.await?;
|
||||
let messages = messages_from_proto(response.messages, &user_store, &mut cx).await?;
|
||||
let loaded_all_messages = response.done;
|
||||
|
||||
Ok(cx.build_model(|cx| {
|
||||
cx.on_release(Self::release).detach();
|
||||
let mut this = Self {
|
||||
channel_id: channel.id,
|
||||
user_store,
|
||||
channel_store,
|
||||
rpc: client,
|
||||
outgoing_messages_lock: Default::default(),
|
||||
messages: Default::default(),
|
||||
acknowledged_message_ids: Default::default(),
|
||||
loaded_all_messages,
|
||||
next_pending_message_id: 0,
|
||||
last_acknowledged_id: None,
|
||||
rng: StdRng::from_entropy(),
|
||||
_subscription: subscription.set_model(&cx.handle(), &mut cx.to_async()),
|
||||
};
|
||||
this.insert_messages(messages, cx);
|
||||
this
|
||||
})?)
|
||||
}
|
||||
|
||||
fn release(&mut self, _: &mut AppContext) {
|
||||
self.rpc
|
||||
.send(proto::LeaveChannelChat {
|
||||
channel_id: self.channel_id,
|
||||
})
|
||||
.log_err();
|
||||
}
|
||||
|
||||
pub fn channel(&self, cx: &AppContext) -> Option<Arc<Channel>> {
|
||||
self.channel_store
|
||||
.read(cx)
|
||||
.channel_for_id(self.channel_id)
|
||||
.cloned()
|
||||
}
|
||||
|
||||
pub fn client(&self) -> &Arc<Client> {
|
||||
&self.rpc
|
||||
}
|
||||
|
||||
pub fn send_message(
|
||||
&mut self,
|
||||
message: MessageParams,
|
||||
cx: &mut ModelContext<Self>,
|
||||
) -> Result<Task<Result<u64>>> {
|
||||
if message.text.is_empty() {
|
||||
Err(anyhow!("message body can't be empty"))?;
|
||||
}
|
||||
|
||||
let current_user = self
|
||||
.user_store
|
||||
.read(cx)
|
||||
.current_user()
|
||||
.ok_or_else(|| anyhow!("current_user is not present"))?;
|
||||
|
||||
let channel_id = self.channel_id;
|
||||
let pending_id = ChannelMessageId::Pending(post_inc(&mut self.next_pending_message_id));
|
||||
let nonce = self.rng.gen();
|
||||
self.insert_messages(
|
||||
SumTree::from_item(
|
||||
ChannelMessage {
|
||||
id: pending_id,
|
||||
body: message.text.clone(),
|
||||
sender: current_user,
|
||||
timestamp: OffsetDateTime::now_utc(),
|
||||
mentions: message.mentions.clone(),
|
||||
nonce,
|
||||
},
|
||||
&(),
|
||||
),
|
||||
cx,
|
||||
);
|
||||
let user_store = self.user_store.clone();
|
||||
let rpc = self.rpc.clone();
|
||||
let outgoing_messages_lock = self.outgoing_messages_lock.clone();
|
||||
Ok(cx.spawn(move |this, mut cx| async move {
|
||||
let outgoing_message_guard = outgoing_messages_lock.lock().await;
|
||||
let request = rpc.request(proto::SendChannelMessage {
|
||||
channel_id,
|
||||
body: message.text,
|
||||
nonce: Some(nonce.into()),
|
||||
mentions: mentions_to_proto(&message.mentions),
|
||||
});
|
||||
let response = request.await?;
|
||||
drop(outgoing_message_guard);
|
||||
let response = response.message.ok_or_else(|| anyhow!("invalid message"))?;
|
||||
let id = response.id;
|
||||
let message = ChannelMessage::from_proto(response, &user_store, &mut cx).await?;
|
||||
this.update(&mut cx, |this, cx| {
|
||||
this.insert_messages(SumTree::from_item(message, &()), cx);
|
||||
})?;
|
||||
Ok(id)
|
||||
}))
|
||||
}
|
||||
|
||||
pub fn remove_message(&mut self, id: u64, cx: &mut ModelContext<Self>) -> Task<Result<()>> {
|
||||
let response = self.rpc.request(proto::RemoveChannelMessage {
|
||||
channel_id: self.channel_id,
|
||||
message_id: id,
|
||||
});
|
||||
cx.spawn(move |this, mut cx| async move {
|
||||
response.await?;
|
||||
this.update(&mut cx, |this, cx| {
|
||||
this.message_removed(id, cx);
|
||||
})?;
|
||||
Ok(())
|
||||
})
|
||||
}
|
||||
|
||||
pub fn load_more_messages(&mut self, cx: &mut ModelContext<Self>) -> Option<Task<Option<()>>> {
|
||||
if self.loaded_all_messages {
|
||||
return None;
|
||||
}
|
||||
|
||||
let rpc = self.rpc.clone();
|
||||
let user_store = self.user_store.clone();
|
||||
let channel_id = self.channel_id;
|
||||
let before_message_id = self.first_loaded_message_id()?;
|
||||
Some(cx.spawn(move |this, mut cx| {
|
||||
async move {
|
||||
let response = rpc
|
||||
.request(proto::GetChannelMessages {
|
||||
channel_id,
|
||||
before_message_id,
|
||||
})
|
||||
.await?;
|
||||
let loaded_all_messages = response.done;
|
||||
let messages = messages_from_proto(response.messages, &user_store, &mut cx).await?;
|
||||
this.update(&mut cx, |this, cx| {
|
||||
this.loaded_all_messages = loaded_all_messages;
|
||||
this.insert_messages(messages, cx);
|
||||
})?;
|
||||
anyhow::Ok(())
|
||||
}
|
||||
.log_err()
|
||||
}))
|
||||
}
|
||||
|
||||
pub fn first_loaded_message_id(&mut self) -> Option<u64> {
|
||||
self.messages.first().and_then(|message| match message.id {
|
||||
ChannelMessageId::Saved(id) => Some(id),
|
||||
ChannelMessageId::Pending(_) => None,
|
||||
})
|
||||
}
|
||||
|
||||
/// Load all of the chat messages since a certain message id.
|
||||
///
|
||||
/// For now, we always maintain a suffix of the channel's messages.
|
||||
pub async fn load_history_since_message(
|
||||
chat: Model<Self>,
|
||||
message_id: u64,
|
||||
mut cx: AsyncAppContext,
|
||||
) -> Option<usize> {
|
||||
loop {
|
||||
let step = chat
|
||||
.update(&mut cx, |chat, cx| {
|
||||
if let Some(first_id) = chat.first_loaded_message_id() {
|
||||
if first_id <= message_id {
|
||||
let mut cursor = chat.messages.cursor::<(ChannelMessageId, Count)>();
|
||||
let message_id = ChannelMessageId::Saved(message_id);
|
||||
cursor.seek(&message_id, Bias::Left, &());
|
||||
return ControlFlow::Break(
|
||||
if cursor
|
||||
.item()
|
||||
.map_or(false, |message| message.id == message_id)
|
||||
{
|
||||
Some(cursor.start().1 .0)
|
||||
} else {
|
||||
None
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
ControlFlow::Continue(chat.load_more_messages(cx))
|
||||
})
|
||||
.log_err()?;
|
||||
match step {
|
||||
ControlFlow::Break(ix) => return ix,
|
||||
ControlFlow::Continue(task) => task?.await?,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn acknowledge_last_message(&mut self, cx: &mut ModelContext<Self>) {
|
||||
if let ChannelMessageId::Saved(latest_message_id) = self.messages.summary().max_id {
|
||||
if self
|
||||
.last_acknowledged_id
|
||||
.map_or(true, |acknowledged_id| acknowledged_id < latest_message_id)
|
||||
{
|
||||
self.rpc
|
||||
.send(proto::AckChannelMessage {
|
||||
channel_id: self.channel_id,
|
||||
message_id: latest_message_id,
|
||||
})
|
||||
.ok();
|
||||
self.last_acknowledged_id = Some(latest_message_id);
|
||||
self.channel_store.update(cx, |store, cx| {
|
||||
store.acknowledge_message_id(self.channel_id, latest_message_id, cx);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn rejoin(&mut self, cx: &mut ModelContext<Self>) {
|
||||
let user_store = self.user_store.clone();
|
||||
let rpc = self.rpc.clone();
|
||||
let channel_id = self.channel_id;
|
||||
cx.spawn(move |this, mut cx| {
|
||||
async move {
|
||||
let response = rpc.request(proto::JoinChannelChat { channel_id }).await?;
|
||||
let messages = messages_from_proto(response.messages, &user_store, &mut cx).await?;
|
||||
let loaded_all_messages = response.done;
|
||||
|
||||
let pending_messages = this.update(&mut cx, |this, cx| {
|
||||
if let Some((first_new_message, last_old_message)) =
|
||||
messages.first().zip(this.messages.last())
|
||||
{
|
||||
if first_new_message.id > last_old_message.id {
|
||||
let old_messages = mem::take(&mut this.messages);
|
||||
cx.emit(ChannelChatEvent::MessagesUpdated {
|
||||
old_range: 0..old_messages.summary().count,
|
||||
new_count: 0,
|
||||
});
|
||||
this.loaded_all_messages = loaded_all_messages;
|
||||
}
|
||||
}
|
||||
|
||||
this.insert_messages(messages, cx);
|
||||
if loaded_all_messages {
|
||||
this.loaded_all_messages = loaded_all_messages;
|
||||
}
|
||||
|
||||
this.pending_messages().cloned().collect::<Vec<_>>()
|
||||
})?;
|
||||
|
||||
for pending_message in pending_messages {
|
||||
let request = rpc.request(proto::SendChannelMessage {
|
||||
channel_id,
|
||||
body: pending_message.body,
|
||||
mentions: mentions_to_proto(&pending_message.mentions),
|
||||
nonce: Some(pending_message.nonce.into()),
|
||||
});
|
||||
let response = request.await?;
|
||||
let message = ChannelMessage::from_proto(
|
||||
response.message.ok_or_else(|| anyhow!("invalid message"))?,
|
||||
&user_store,
|
||||
&mut cx,
|
||||
)
|
||||
.await?;
|
||||
this.update(&mut cx, |this, cx| {
|
||||
this.insert_messages(SumTree::from_item(message, &()), cx);
|
||||
})?;
|
||||
}
|
||||
|
||||
anyhow::Ok(())
|
||||
}
|
||||
.log_err()
|
||||
})
|
||||
.detach();
|
||||
}
|
||||
|
||||
pub fn message_count(&self) -> usize {
|
||||
self.messages.summary().count
|
||||
}
|
||||
|
||||
pub fn messages(&self) -> &SumTree<ChannelMessage> {
|
||||
&self.messages
|
||||
}
|
||||
|
||||
pub fn message(&self, ix: usize) -> &ChannelMessage {
|
||||
let mut cursor = self.messages.cursor::<Count>();
|
||||
cursor.seek(&Count(ix), Bias::Right, &());
|
||||
cursor.item().unwrap()
|
||||
}
|
||||
|
||||
pub fn acknowledge_message(&mut self, id: u64) {
|
||||
if self.acknowledged_message_ids.insert(id) {
|
||||
self.rpc
|
||||
.send(proto::AckChannelMessage {
|
||||
channel_id: self.channel_id,
|
||||
message_id: id,
|
||||
})
|
||||
.ok();
|
||||
}
|
||||
}
|
||||
|
||||
pub fn messages_in_range(&self, range: Range<usize>) -> impl Iterator<Item = &ChannelMessage> {
|
||||
let mut cursor = self.messages.cursor::<Count>();
|
||||
cursor.seek(&Count(range.start), Bias::Right, &());
|
||||
cursor.take(range.len())
|
||||
}
|
||||
|
||||
pub fn pending_messages(&self) -> impl Iterator<Item = &ChannelMessage> {
|
||||
let mut cursor = self.messages.cursor::<ChannelMessageId>();
|
||||
cursor.seek(&ChannelMessageId::Pending(0), Bias::Left, &());
|
||||
cursor
|
||||
}
|
||||
|
||||
async fn handle_message_sent(
|
||||
this: Model<Self>,
|
||||
message: TypedEnvelope<proto::ChannelMessageSent>,
|
||||
_: Arc<Client>,
|
||||
mut cx: AsyncAppContext,
|
||||
) -> Result<()> {
|
||||
let user_store = this.update(&mut cx, |this, _| this.user_store.clone())?;
|
||||
let message = message
|
||||
.payload
|
||||
.message
|
||||
.ok_or_else(|| anyhow!("empty message"))?;
|
||||
let message_id = message.id;
|
||||
|
||||
let message = ChannelMessage::from_proto(message, &user_store, &mut cx).await?;
|
||||
this.update(&mut cx, |this, cx| {
|
||||
this.insert_messages(SumTree::from_item(message, &()), cx);
|
||||
cx.emit(ChannelChatEvent::NewMessage {
|
||||
channel_id: this.channel_id,
|
||||
message_id,
|
||||
})
|
||||
})?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn handle_message_removed(
|
||||
this: Model<Self>,
|
||||
message: TypedEnvelope<proto::RemoveChannelMessage>,
|
||||
_: Arc<Client>,
|
||||
mut cx: AsyncAppContext,
|
||||
) -> Result<()> {
|
||||
this.update(&mut cx, |this, cx| {
|
||||
this.message_removed(message.payload.message_id, cx)
|
||||
})?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn insert_messages(&mut self, messages: SumTree<ChannelMessage>, cx: &mut ModelContext<Self>) {
|
||||
if let Some((first_message, last_message)) = messages.first().zip(messages.last()) {
|
||||
let nonces = messages
|
||||
.cursor::<()>()
|
||||
.map(|m| m.nonce)
|
||||
.collect::<HashSet<_>>();
|
||||
|
||||
let mut old_cursor = self.messages.cursor::<(ChannelMessageId, Count)>();
|
||||
let mut new_messages = old_cursor.slice(&first_message.id, Bias::Left, &());
|
||||
let start_ix = old_cursor.start().1 .0;
|
||||
let removed_messages = old_cursor.slice(&last_message.id, Bias::Right, &());
|
||||
let removed_count = removed_messages.summary().count;
|
||||
let new_count = messages.summary().count;
|
||||
let end_ix = start_ix + removed_count;
|
||||
|
||||
new_messages.append(messages, &());
|
||||
|
||||
let mut ranges = Vec::<Range<usize>>::new();
|
||||
if new_messages.last().unwrap().is_pending() {
|
||||
new_messages.append(old_cursor.suffix(&()), &());
|
||||
} else {
|
||||
new_messages.append(
|
||||
old_cursor.slice(&ChannelMessageId::Pending(0), Bias::Left, &()),
|
||||
&(),
|
||||
);
|
||||
|
||||
while let Some(message) = old_cursor.item() {
|
||||
let message_ix = old_cursor.start().1 .0;
|
||||
if nonces.contains(&message.nonce) {
|
||||
if ranges.last().map_or(false, |r| r.end == message_ix) {
|
||||
ranges.last_mut().unwrap().end += 1;
|
||||
} else {
|
||||
ranges.push(message_ix..message_ix + 1);
|
||||
}
|
||||
} else {
|
||||
new_messages.push(message.clone(), &());
|
||||
}
|
||||
old_cursor.next(&());
|
||||
}
|
||||
}
|
||||
|
||||
drop(old_cursor);
|
||||
self.messages = new_messages;
|
||||
|
||||
for range in ranges.into_iter().rev() {
|
||||
cx.emit(ChannelChatEvent::MessagesUpdated {
|
||||
old_range: range,
|
||||
new_count: 0,
|
||||
});
|
||||
}
|
||||
cx.emit(ChannelChatEvent::MessagesUpdated {
|
||||
old_range: start_ix..end_ix,
|
||||
new_count,
|
||||
});
|
||||
|
||||
cx.notify();
|
||||
}
|
||||
}
|
||||
|
||||
fn message_removed(&mut self, id: u64, cx: &mut ModelContext<Self>) {
|
||||
let mut cursor = self.messages.cursor::<ChannelMessageId>();
|
||||
let mut messages = cursor.slice(&ChannelMessageId::Saved(id), Bias::Left, &());
|
||||
if let Some(item) = cursor.item() {
|
||||
if item.id == ChannelMessageId::Saved(id) {
|
||||
let ix = messages.summary().count;
|
||||
cursor.next(&());
|
||||
messages.append(cursor.suffix(&()), &());
|
||||
drop(cursor);
|
||||
self.messages = messages;
|
||||
cx.emit(ChannelChatEvent::MessagesUpdated {
|
||||
old_range: ix..ix + 1,
|
||||
new_count: 0,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async fn messages_from_proto(
|
||||
proto_messages: Vec<proto::ChannelMessage>,
|
||||
user_store: &Model<UserStore>,
|
||||
cx: &mut AsyncAppContext,
|
||||
) -> Result<SumTree<ChannelMessage>> {
|
||||
let messages = ChannelMessage::from_proto_vec(proto_messages, user_store, cx).await?;
|
||||
let mut result = SumTree::new();
|
||||
result.extend(messages, &());
|
||||
Ok(result)
|
||||
}
|
||||
|
||||
impl ChannelMessage {
|
||||
pub async fn from_proto(
|
||||
message: proto::ChannelMessage,
|
||||
user_store: &Model<UserStore>,
|
||||
cx: &mut AsyncAppContext,
|
||||
) -> Result<Self> {
|
||||
let sender = user_store
|
||||
.update(cx, |user_store, cx| {
|
||||
user_store.get_user(message.sender_id, cx)
|
||||
})?
|
||||
.await?;
|
||||
Ok(ChannelMessage {
|
||||
id: ChannelMessageId::Saved(message.id),
|
||||
body: message.body,
|
||||
mentions: message
|
||||
.mentions
|
||||
.into_iter()
|
||||
.filter_map(|mention| {
|
||||
let range = mention.range?;
|
||||
Some((range.start as usize..range.end as usize, mention.user_id))
|
||||
})
|
||||
.collect(),
|
||||
timestamp: OffsetDateTime::from_unix_timestamp(message.timestamp as i64)?,
|
||||
sender,
|
||||
nonce: message
|
||||
.nonce
|
||||
.ok_or_else(|| anyhow!("nonce is required"))?
|
||||
.into(),
|
||||
})
|
||||
}
|
||||
|
||||
pub fn is_pending(&self) -> bool {
|
||||
matches!(self.id, ChannelMessageId::Pending(_))
|
||||
}
|
||||
|
||||
pub async fn from_proto_vec(
|
||||
proto_messages: Vec<proto::ChannelMessage>,
|
||||
user_store: &Model<UserStore>,
|
||||
cx: &mut AsyncAppContext,
|
||||
) -> Result<Vec<Self>> {
|
||||
let unique_user_ids = proto_messages
|
||||
.iter()
|
||||
.map(|m| m.sender_id)
|
||||
.collect::<HashSet<_>>()
|
||||
.into_iter()
|
||||
.collect();
|
||||
user_store
|
||||
.update(cx, |user_store, cx| {
|
||||
user_store.get_users(unique_user_ids, cx)
|
||||
})?
|
||||
.await?;
|
||||
|
||||
let mut messages = Vec::with_capacity(proto_messages.len());
|
||||
for message in proto_messages {
|
||||
messages.push(ChannelMessage::from_proto(message, user_store, cx).await?);
|
||||
}
|
||||
Ok(messages)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn mentions_to_proto(mentions: &[(Range<usize>, UserId)]) -> Vec<proto::ChatMention> {
|
||||
mentions
|
||||
.iter()
|
||||
.map(|(range, user_id)| proto::ChatMention {
|
||||
range: Some(proto::Range {
|
||||
start: range.start as u64,
|
||||
end: range.end as u64,
|
||||
}),
|
||||
user_id: *user_id as u64,
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
impl sum_tree::Item for ChannelMessage {
|
||||
type Summary = ChannelMessageSummary;
|
||||
|
||||
fn summary(&self) -> Self::Summary {
|
||||
ChannelMessageSummary {
|
||||
max_id: self.id,
|
||||
count: 1,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for ChannelMessageId {
|
||||
fn default() -> Self {
|
||||
Self::Saved(0)
|
||||
}
|
||||
}
|
||||
|
||||
impl sum_tree::Summary for ChannelMessageSummary {
|
||||
type Context = ();
|
||||
|
||||
fn add_summary(&mut self, summary: &Self, _: &()) {
|
||||
self.max_id = summary.max_id;
|
||||
self.count += summary.count;
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> sum_tree::Dimension<'a, ChannelMessageSummary> for ChannelMessageId {
|
||||
fn add_summary(&mut self, summary: &'a ChannelMessageSummary, _: &()) {
|
||||
debug_assert!(summary.max_id > *self);
|
||||
*self = summary.max_id;
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> sum_tree::Dimension<'a, ChannelMessageSummary> for Count {
|
||||
fn add_summary(&mut self, summary: &'a ChannelMessageSummary, _: &()) {
|
||||
self.0 += summary.count;
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> From<&'a str> for MessageParams {
|
||||
fn from(value: &'a str) -> Self {
|
||||
Self {
|
||||
text: value.into(),
|
||||
mentions: Vec::new(),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,184 +0,0 @@
|
||||
use crate::{Channel, ChannelId};
|
||||
use collections::BTreeMap;
|
||||
use rpc::proto;
|
||||
use std::sync::Arc;
|
||||
|
||||
#[derive(Default, Debug)]
|
||||
pub struct ChannelIndex {
|
||||
channels_ordered: Vec<ChannelId>,
|
||||
channels_by_id: BTreeMap<ChannelId, Arc<Channel>>,
|
||||
}
|
||||
|
||||
impl ChannelIndex {
|
||||
pub fn by_id(&self) -> &BTreeMap<ChannelId, Arc<Channel>> {
|
||||
&self.channels_by_id
|
||||
}
|
||||
|
||||
pub fn ordered_channels(&self) -> &[ChannelId] {
|
||||
&self.channels_ordered
|
||||
}
|
||||
|
||||
pub fn clear(&mut self) {
|
||||
self.channels_ordered.clear();
|
||||
self.channels_by_id.clear();
|
||||
}
|
||||
|
||||
/// Delete the given channels from this index.
|
||||
pub fn delete_channels(&mut self, channels: &[ChannelId]) {
|
||||
self.channels_by_id
|
||||
.retain(|channel_id, _| !channels.contains(channel_id));
|
||||
self.channels_ordered
|
||||
.retain(|channel_id| !channels.contains(channel_id));
|
||||
}
|
||||
|
||||
pub fn bulk_insert(&mut self) -> ChannelPathsInsertGuard {
|
||||
ChannelPathsInsertGuard {
|
||||
channels_ordered: &mut self.channels_ordered,
|
||||
channels_by_id: &mut self.channels_by_id,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn acknowledge_note_version(
|
||||
&mut self,
|
||||
channel_id: ChannelId,
|
||||
epoch: u64,
|
||||
version: &clock::Global,
|
||||
) {
|
||||
if let Some(channel) = self.channels_by_id.get_mut(&channel_id) {
|
||||
let channel = Arc::make_mut(channel);
|
||||
if let Some((unseen_epoch, unseen_version)) = &channel.unseen_note_version {
|
||||
if epoch > *unseen_epoch
|
||||
|| epoch == *unseen_epoch && version.observed_all(unseen_version)
|
||||
{
|
||||
channel.unseen_note_version = None;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn acknowledge_message_id(&mut self, channel_id: ChannelId, message_id: u64) {
|
||||
if let Some(channel) = self.channels_by_id.get_mut(&channel_id) {
|
||||
let channel = Arc::make_mut(channel);
|
||||
if let Some(unseen_message_id) = channel.unseen_message_id {
|
||||
if message_id >= unseen_message_id {
|
||||
channel.unseen_message_id = None;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn note_changed(&mut self, channel_id: ChannelId, epoch: u64, version: &clock::Global) {
|
||||
insert_note_changed(&mut self.channels_by_id, channel_id, epoch, version);
|
||||
}
|
||||
|
||||
pub fn new_message(&mut self, channel_id: ChannelId, message_id: u64) {
|
||||
insert_new_message(&mut self.channels_by_id, channel_id, message_id)
|
||||
}
|
||||
}
|
||||
|
||||
/// A guard for ensuring that the paths index maintains its sort and uniqueness
|
||||
/// invariants after a series of insertions
|
||||
#[derive(Debug)]
|
||||
pub struct ChannelPathsInsertGuard<'a> {
|
||||
channels_ordered: &'a mut Vec<ChannelId>,
|
||||
channels_by_id: &'a mut BTreeMap<ChannelId, Arc<Channel>>,
|
||||
}
|
||||
|
||||
impl<'a> ChannelPathsInsertGuard<'a> {
|
||||
pub fn note_changed(&mut self, channel_id: ChannelId, epoch: u64, version: &clock::Global) {
|
||||
insert_note_changed(&mut self.channels_by_id, channel_id, epoch, &version);
|
||||
}
|
||||
|
||||
pub fn new_messages(&mut self, channel_id: ChannelId, message_id: u64) {
|
||||
insert_new_message(&mut self.channels_by_id, channel_id, message_id)
|
||||
}
|
||||
|
||||
pub fn insert(&mut self, channel_proto: proto::Channel) -> bool {
|
||||
let mut ret = false;
|
||||
if let Some(existing_channel) = self.channels_by_id.get_mut(&channel_proto.id) {
|
||||
let existing_channel = Arc::make_mut(existing_channel);
|
||||
|
||||
ret = existing_channel.visibility != channel_proto.visibility()
|
||||
|| existing_channel.role != channel_proto.role()
|
||||
|| existing_channel.name != channel_proto.name;
|
||||
|
||||
existing_channel.visibility = channel_proto.visibility();
|
||||
existing_channel.role = channel_proto.role();
|
||||
existing_channel.name = channel_proto.name;
|
||||
} else {
|
||||
self.channels_by_id.insert(
|
||||
channel_proto.id,
|
||||
Arc::new(Channel {
|
||||
id: channel_proto.id,
|
||||
visibility: channel_proto.visibility(),
|
||||
role: channel_proto.role(),
|
||||
name: channel_proto.name,
|
||||
unseen_note_version: None,
|
||||
unseen_message_id: None,
|
||||
parent_path: channel_proto.parent_path,
|
||||
}),
|
||||
);
|
||||
self.insert_root(channel_proto.id);
|
||||
}
|
||||
ret
|
||||
}
|
||||
|
||||
fn insert_root(&mut self, channel_id: ChannelId) {
|
||||
self.channels_ordered.push(channel_id);
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> Drop for ChannelPathsInsertGuard<'a> {
|
||||
fn drop(&mut self) {
|
||||
self.channels_ordered.sort_by(|a, b| {
|
||||
let a = channel_path_sorting_key(*a, &self.channels_by_id);
|
||||
let b = channel_path_sorting_key(*b, &self.channels_by_id);
|
||||
a.cmp(b)
|
||||
});
|
||||
self.channels_ordered.dedup();
|
||||
}
|
||||
}
|
||||
|
||||
fn channel_path_sorting_key<'a>(
|
||||
id: ChannelId,
|
||||
channels_by_id: &'a BTreeMap<ChannelId, Arc<Channel>>,
|
||||
) -> impl Iterator<Item = &str> {
|
||||
let (parent_path, name) = channels_by_id
|
||||
.get(&id)
|
||||
.map_or((&[] as &[_], None), |channel| {
|
||||
(channel.parent_path.as_slice(), Some(channel.name.as_str()))
|
||||
});
|
||||
parent_path
|
||||
.iter()
|
||||
.filter_map(|id| Some(channels_by_id.get(id)?.name.as_str()))
|
||||
.chain(name)
|
||||
}
|
||||
|
||||
fn insert_note_changed(
|
||||
channels_by_id: &mut BTreeMap<ChannelId, Arc<Channel>>,
|
||||
channel_id: u64,
|
||||
epoch: u64,
|
||||
version: &clock::Global,
|
||||
) {
|
||||
if let Some(channel) = channels_by_id.get_mut(&channel_id) {
|
||||
let unseen_version = Arc::make_mut(channel)
|
||||
.unseen_note_version
|
||||
.get_or_insert((0, clock::Global::new()));
|
||||
if epoch > unseen_version.0 {
|
||||
*unseen_version = (epoch, version.clone());
|
||||
} else {
|
||||
unseen_version.1.join(&version);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn insert_new_message(
|
||||
channels_by_id: &mut BTreeMap<ChannelId, Arc<Channel>>,
|
||||
channel_id: u64,
|
||||
message_id: u64,
|
||||
) {
|
||||
if let Some(channel) = channels_by_id.get_mut(&channel_id) {
|
||||
let unseen_message_id = Arc::make_mut(channel).unseen_message_id.get_or_insert(0);
|
||||
*unseen_message_id = message_id.max(*unseen_message_id);
|
||||
}
|
||||
}
|
||||
@@ -1,380 +0,0 @@
|
||||
use crate::channel_chat::ChannelChatEvent;
|
||||
|
||||
use super::*;
|
||||
use client::{test::FakeServer, Client, UserStore};
|
||||
use gpui::{AppContext, Context, Model, TestAppContext};
|
||||
use rpc::proto::{self};
|
||||
use settings::SettingsStore;
|
||||
use util::http::FakeHttpClient;
|
||||
|
||||
#[gpui::test]
|
||||
fn test_update_channels(cx: &mut AppContext) {
|
||||
let channel_store = init_test(cx);
|
||||
|
||||
update_channels(
|
||||
&channel_store,
|
||||
proto::UpdateChannels {
|
||||
channels: vec![
|
||||
proto::Channel {
|
||||
id: 1,
|
||||
name: "b".to_string(),
|
||||
visibility: proto::ChannelVisibility::Members as i32,
|
||||
role: proto::ChannelRole::Admin.into(),
|
||||
parent_path: Vec::new(),
|
||||
},
|
||||
proto::Channel {
|
||||
id: 2,
|
||||
name: "a".to_string(),
|
||||
visibility: proto::ChannelVisibility::Members as i32,
|
||||
role: proto::ChannelRole::Member.into(),
|
||||
parent_path: Vec::new(),
|
||||
},
|
||||
],
|
||||
..Default::default()
|
||||
},
|
||||
cx,
|
||||
);
|
||||
assert_channels(
|
||||
&channel_store,
|
||||
&[
|
||||
//
|
||||
(0, "a".to_string(), proto::ChannelRole::Member),
|
||||
(0, "b".to_string(), proto::ChannelRole::Admin),
|
||||
],
|
||||
cx,
|
||||
);
|
||||
|
||||
update_channels(
|
||||
&channel_store,
|
||||
proto::UpdateChannels {
|
||||
channels: vec![
|
||||
proto::Channel {
|
||||
id: 3,
|
||||
name: "x".to_string(),
|
||||
visibility: proto::ChannelVisibility::Members as i32,
|
||||
role: proto::ChannelRole::Admin.into(),
|
||||
parent_path: vec![1],
|
||||
},
|
||||
proto::Channel {
|
||||
id: 4,
|
||||
name: "y".to_string(),
|
||||
visibility: proto::ChannelVisibility::Members as i32,
|
||||
role: proto::ChannelRole::Member.into(),
|
||||
parent_path: vec![2],
|
||||
},
|
||||
],
|
||||
..Default::default()
|
||||
},
|
||||
cx,
|
||||
);
|
||||
assert_channels(
|
||||
&channel_store,
|
||||
&[
|
||||
(0, "a".to_string(), proto::ChannelRole::Member),
|
||||
(1, "y".to_string(), proto::ChannelRole::Member),
|
||||
(0, "b".to_string(), proto::ChannelRole::Admin),
|
||||
(1, "x".to_string(), proto::ChannelRole::Admin),
|
||||
],
|
||||
cx,
|
||||
);
|
||||
}
|
||||
|
||||
#[gpui::test]
|
||||
fn test_dangling_channel_paths(cx: &mut AppContext) {
|
||||
let channel_store = init_test(cx);
|
||||
|
||||
update_channels(
|
||||
&channel_store,
|
||||
proto::UpdateChannels {
|
||||
channels: vec![
|
||||
proto::Channel {
|
||||
id: 0,
|
||||
name: "a".to_string(),
|
||||
visibility: proto::ChannelVisibility::Members as i32,
|
||||
role: proto::ChannelRole::Admin.into(),
|
||||
parent_path: vec![],
|
||||
},
|
||||
proto::Channel {
|
||||
id: 1,
|
||||
name: "b".to_string(),
|
||||
visibility: proto::ChannelVisibility::Members as i32,
|
||||
role: proto::ChannelRole::Admin.into(),
|
||||
parent_path: vec![0],
|
||||
},
|
||||
proto::Channel {
|
||||
id: 2,
|
||||
name: "c".to_string(),
|
||||
visibility: proto::ChannelVisibility::Members as i32,
|
||||
role: proto::ChannelRole::Admin.into(),
|
||||
parent_path: vec![0, 1],
|
||||
},
|
||||
],
|
||||
..Default::default()
|
||||
},
|
||||
cx,
|
||||
);
|
||||
// Sanity check
|
||||
assert_channels(
|
||||
&channel_store,
|
||||
&[
|
||||
//
|
||||
(0, "a".to_string(), proto::ChannelRole::Admin),
|
||||
(1, "b".to_string(), proto::ChannelRole::Admin),
|
||||
(2, "c".to_string(), proto::ChannelRole::Admin),
|
||||
],
|
||||
cx,
|
||||
);
|
||||
|
||||
update_channels(
|
||||
&channel_store,
|
||||
proto::UpdateChannels {
|
||||
delete_channels: vec![1, 2],
|
||||
..Default::default()
|
||||
},
|
||||
cx,
|
||||
);
|
||||
|
||||
// Make sure that the 1/2/3 path is gone
|
||||
assert_channels(
|
||||
&channel_store,
|
||||
&[(0, "a".to_string(), proto::ChannelRole::Admin)],
|
||||
cx,
|
||||
);
|
||||
}
|
||||
|
||||
#[gpui::test]
|
||||
async fn test_channel_messages(cx: &mut TestAppContext) {
|
||||
let user_id = 5;
|
||||
let channel_id = 5;
|
||||
let channel_store = cx.update(init_test);
|
||||
let client = channel_store.update(cx, |s, _| s.client());
|
||||
let server = FakeServer::for_client(user_id, &client, cx).await;
|
||||
|
||||
// Get the available channels.
|
||||
server.send(proto::UpdateChannels {
|
||||
channels: vec![proto::Channel {
|
||||
id: channel_id,
|
||||
name: "the-channel".to_string(),
|
||||
visibility: proto::ChannelVisibility::Members as i32,
|
||||
role: proto::ChannelRole::Member.into(),
|
||||
parent_path: vec![],
|
||||
}],
|
||||
..Default::default()
|
||||
});
|
||||
cx.executor().run_until_parked();
|
||||
cx.update(|cx| {
|
||||
assert_channels(
|
||||
&channel_store,
|
||||
&[(0, "the-channel".to_string(), proto::ChannelRole::Member)],
|
||||
cx,
|
||||
);
|
||||
});
|
||||
|
||||
let get_users = server.receive::<proto::GetUsers>().await.unwrap();
|
||||
assert_eq!(get_users.payload.user_ids, vec![5]);
|
||||
server.respond(
|
||||
get_users.receipt(),
|
||||
proto::UsersResponse {
|
||||
users: vec![proto::User {
|
||||
id: 5,
|
||||
github_login: "nathansobo".into(),
|
||||
avatar_url: "http://avatar.com/nathansobo".into(),
|
||||
}],
|
||||
},
|
||||
);
|
||||
|
||||
// Join a channel and populate its existing messages.
|
||||
let channel = channel_store.update(cx, |store, cx| {
|
||||
let channel_id = store.ordered_channels().next().unwrap().1.id;
|
||||
store.open_channel_chat(channel_id, cx)
|
||||
});
|
||||
let join_channel = server.receive::<proto::JoinChannelChat>().await.unwrap();
|
||||
server.respond(
|
||||
join_channel.receipt(),
|
||||
proto::JoinChannelChatResponse {
|
||||
messages: vec![
|
||||
proto::ChannelMessage {
|
||||
id: 10,
|
||||
body: "a".into(),
|
||||
timestamp: 1000,
|
||||
sender_id: 5,
|
||||
mentions: vec![],
|
||||
nonce: Some(1.into()),
|
||||
},
|
||||
proto::ChannelMessage {
|
||||
id: 11,
|
||||
body: "b".into(),
|
||||
timestamp: 1001,
|
||||
sender_id: 6,
|
||||
mentions: vec![],
|
||||
nonce: Some(2.into()),
|
||||
},
|
||||
],
|
||||
done: false,
|
||||
},
|
||||
);
|
||||
|
||||
cx.executor().start_waiting();
|
||||
|
||||
// Client requests all users for the received messages
|
||||
let mut get_users = server.receive::<proto::GetUsers>().await.unwrap();
|
||||
get_users.payload.user_ids.sort();
|
||||
assert_eq!(get_users.payload.user_ids, vec![6]);
|
||||
server.respond(
|
||||
get_users.receipt(),
|
||||
proto::UsersResponse {
|
||||
users: vec![proto::User {
|
||||
id: 6,
|
||||
github_login: "maxbrunsfeld".into(),
|
||||
avatar_url: "http://avatar.com/maxbrunsfeld".into(),
|
||||
}],
|
||||
},
|
||||
);
|
||||
|
||||
let channel = channel.await.unwrap();
|
||||
channel.update(cx, |channel, _| {
|
||||
assert_eq!(
|
||||
channel
|
||||
.messages_in_range(0..2)
|
||||
.map(|message| (message.sender.github_login.clone(), message.body.clone()))
|
||||
.collect::<Vec<_>>(),
|
||||
&[
|
||||
("nathansobo".into(), "a".into()),
|
||||
("maxbrunsfeld".into(), "b".into())
|
||||
]
|
||||
);
|
||||
});
|
||||
|
||||
// Receive a new message.
|
||||
server.send(proto::ChannelMessageSent {
|
||||
channel_id,
|
||||
message: Some(proto::ChannelMessage {
|
||||
id: 12,
|
||||
body: "c".into(),
|
||||
timestamp: 1002,
|
||||
sender_id: 7,
|
||||
mentions: vec![],
|
||||
nonce: Some(3.into()),
|
||||
}),
|
||||
});
|
||||
|
||||
// Client requests user for message since they haven't seen them yet
|
||||
let get_users = server.receive::<proto::GetUsers>().await.unwrap();
|
||||
assert_eq!(get_users.payload.user_ids, vec![7]);
|
||||
server.respond(
|
||||
get_users.receipt(),
|
||||
proto::UsersResponse {
|
||||
users: vec![proto::User {
|
||||
id: 7,
|
||||
github_login: "as-cii".into(),
|
||||
avatar_url: "http://avatar.com/as-cii".into(),
|
||||
}],
|
||||
},
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
channel.next_event(cx),
|
||||
ChannelChatEvent::MessagesUpdated {
|
||||
old_range: 2..2,
|
||||
new_count: 1,
|
||||
}
|
||||
);
|
||||
channel.update(cx, |channel, _| {
|
||||
assert_eq!(
|
||||
channel
|
||||
.messages_in_range(2..3)
|
||||
.map(|message| (message.sender.github_login.clone(), message.body.clone()))
|
||||
.collect::<Vec<_>>(),
|
||||
&[("as-cii".into(), "c".into())]
|
||||
)
|
||||
});
|
||||
|
||||
// Scroll up to view older messages.
|
||||
channel.update(cx, |channel, cx| {
|
||||
channel.load_more_messages(cx).unwrap().detach();
|
||||
});
|
||||
let get_messages = server.receive::<proto::GetChannelMessages>().await.unwrap();
|
||||
assert_eq!(get_messages.payload.channel_id, 5);
|
||||
assert_eq!(get_messages.payload.before_message_id, 10);
|
||||
server.respond(
|
||||
get_messages.receipt(),
|
||||
proto::GetChannelMessagesResponse {
|
||||
done: true,
|
||||
messages: vec![
|
||||
proto::ChannelMessage {
|
||||
id: 8,
|
||||
body: "y".into(),
|
||||
timestamp: 998,
|
||||
sender_id: 5,
|
||||
nonce: Some(4.into()),
|
||||
mentions: vec![],
|
||||
},
|
||||
proto::ChannelMessage {
|
||||
id: 9,
|
||||
body: "z".into(),
|
||||
timestamp: 999,
|
||||
sender_id: 6,
|
||||
nonce: Some(5.into()),
|
||||
mentions: vec![],
|
||||
},
|
||||
],
|
||||
},
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
channel.next_event(cx),
|
||||
ChannelChatEvent::MessagesUpdated {
|
||||
old_range: 0..0,
|
||||
new_count: 2,
|
||||
}
|
||||
);
|
||||
channel.update(cx, |channel, _| {
|
||||
assert_eq!(
|
||||
channel
|
||||
.messages_in_range(0..2)
|
||||
.map(|message| (message.sender.github_login.clone(), message.body.clone()))
|
||||
.collect::<Vec<_>>(),
|
||||
&[
|
||||
("nathansobo".into(), "y".into()),
|
||||
("maxbrunsfeld".into(), "z".into())
|
||||
]
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
fn init_test(cx: &mut AppContext) -> Model<ChannelStore> {
|
||||
let http = FakeHttpClient::with_404_response();
|
||||
let client = Client::new(http.clone(), cx);
|
||||
let user_store = cx.build_model(|cx| UserStore::new(client.clone(), http, cx));
|
||||
|
||||
let settings_store = SettingsStore::test(cx);
|
||||
cx.set_global(settings_store);
|
||||
client::init(&client, cx);
|
||||
crate::init(&client, user_store, cx);
|
||||
|
||||
ChannelStore::global(cx)
|
||||
}
|
||||
|
||||
fn update_channels(
|
||||
channel_store: &Model<ChannelStore>,
|
||||
message: proto::UpdateChannels,
|
||||
cx: &mut AppContext,
|
||||
) {
|
||||
let task = channel_store.update(cx, |store, cx| store.update_channels(message, cx));
|
||||
assert!(task.is_none());
|
||||
}
|
||||
|
||||
#[track_caller]
|
||||
fn assert_channels(
|
||||
channel_store: &Model<ChannelStore>,
|
||||
expected_channels: &[(usize, String, proto::ChannelRole)],
|
||||
cx: &mut AppContext,
|
||||
) {
|
||||
let actual = channel_store.update(cx, |store, _| {
|
||||
store
|
||||
.ordered_channels()
|
||||
.map(|(depth, channel)| (depth, channel.name.to_string(), channel.role))
|
||||
.collect::<Vec<_>>()
|
||||
});
|
||||
assert_eq!(actual, expected_channels);
|
||||
}
|
||||
@@ -9,17 +9,17 @@ path = "src/client2.rs"
|
||||
doctest = false
|
||||
|
||||
[features]
|
||||
test-support = ["collections/test-support", "gpui/test-support", "rpc/test-support"]
|
||||
test-support = ["collections/test-support", "gpui2/test-support", "rpc2/test-support"]
|
||||
|
||||
[dependencies]
|
||||
collections = { path = "../collections" }
|
||||
db = { package = "db2", path = "../db2" }
|
||||
gpui = { package = "gpui2", path = "../gpui2" }
|
||||
db2 = { path = "../db2" }
|
||||
gpui2 = { path = "../gpui2" }
|
||||
util = { path = "../util" }
|
||||
rpc = { package = "rpc2", path = "../rpc2" }
|
||||
text = { package = "text2", path = "../text2" }
|
||||
settings = { package = "settings2", path = "../settings2" }
|
||||
feature_flags = { package = "feature_flags2", path = "../feature_flags2" }
|
||||
rpc2 = { path = "../rpc2" }
|
||||
text = { path = "../text" }
|
||||
settings2 = { path = "../settings2" }
|
||||
feature_flags2 = { path = "../feature_flags2" }
|
||||
sum_tree = { path = "../sum_tree" }
|
||||
|
||||
anyhow.workspace = true
|
||||
@@ -46,7 +46,7 @@ url = "2.2"
|
||||
|
||||
[dev-dependencies]
|
||||
collections = { path = "../collections", features = ["test-support"] }
|
||||
gpui = { package = "gpui2", path = "../gpui2", features = ["test-support"] }
|
||||
rpc = { package = "rpc2", path = "../rpc2", features = ["test-support"] }
|
||||
settings = { package = "settings2", path = "../settings2", features = ["test-support"] }
|
||||
gpui2 = { path = "../gpui2", features = ["test-support"] }
|
||||
rpc2 = { path = "../rpc2", features = ["test-support"] }
|
||||
settings = { path = "../settings", features = ["test-support"] }
|
||||
util = { path = "../util", features = ["test-support"] }
|
||||
|
||||
@@ -11,21 +11,20 @@ use async_tungstenite::tungstenite::{
|
||||
http::{Request, StatusCode},
|
||||
};
|
||||
use futures::{
|
||||
future::LocalBoxFuture, AsyncReadExt, FutureExt, SinkExt, StreamExt, TryFutureExt as _,
|
||||
TryStreamExt,
|
||||
future::BoxFuture, AsyncReadExt, FutureExt, SinkExt, StreamExt, TryFutureExt as _, TryStreamExt,
|
||||
};
|
||||
use gpui::{
|
||||
actions, serde_json, AnyModel, AnyWeakModel, AppContext, AsyncAppContext, Model,
|
||||
SemanticVersion, Task, WeakModel,
|
||||
use gpui2::{
|
||||
serde_json, AnyModel, AnyWeakModel, AppContext, AsyncAppContext, Model, SemanticVersion, Task,
|
||||
WeakModel,
|
||||
};
|
||||
use lazy_static::lazy_static;
|
||||
use parking_lot::RwLock;
|
||||
use postage::watch;
|
||||
use rand::prelude::*;
|
||||
use rpc::proto::{AnyTypedEnvelope, EntityMessage, EnvelopedMessage, PeerId, RequestMessage};
|
||||
use rpc2::proto::{AnyTypedEnvelope, EntityMessage, EnvelopedMessage, PeerId, RequestMessage};
|
||||
use schemars::JsonSchema;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use settings::Settings;
|
||||
use settings2::Settings;
|
||||
use std::{
|
||||
any::TypeId,
|
||||
collections::HashMap,
|
||||
@@ -44,7 +43,7 @@ use util::channel::ReleaseChannel;
|
||||
use util::http::HttpClient;
|
||||
use util::{ResultExt, TryFutureExt};
|
||||
|
||||
pub use rpc::*;
|
||||
pub use rpc2::*;
|
||||
pub use telemetry::ClickhouseEvent;
|
||||
pub use user::*;
|
||||
|
||||
@@ -70,7 +69,14 @@ pub const ZED_SECRET_CLIENT_TOKEN: &str = "618033988749894";
|
||||
pub const INITIAL_RECONNECTION_DELAY: Duration = Duration::from_millis(100);
|
||||
pub const CONNECTION_TIMEOUT: Duration = Duration::from_secs(5);
|
||||
|
||||
actions!(SignIn, SignOut, Reconnect);
|
||||
#[derive(Clone, Default, PartialEq, Deserialize)]
|
||||
pub struct SignIn;
|
||||
|
||||
#[derive(Clone, Default, PartialEq, Deserialize)]
|
||||
pub struct SignOut;
|
||||
|
||||
#[derive(Clone, Default, PartialEq, Deserialize)]
|
||||
pub struct Reconnect;
|
||||
|
||||
pub fn init_settings(cx: &mut AppContext) {
|
||||
TelemetrySettings::register(cx);
|
||||
@@ -80,6 +86,7 @@ pub fn init(client: &Arc<Client>, cx: &mut AppContext) {
|
||||
init_settings(cx);
|
||||
|
||||
let client = Arc::downgrade(client);
|
||||
cx.register_action_type::<SignIn>();
|
||||
cx.on_action({
|
||||
let client = client.clone();
|
||||
move |_: &SignIn, cx| {
|
||||
@@ -92,6 +99,7 @@ pub fn init(client: &Arc<Client>, cx: &mut AppContext) {
|
||||
}
|
||||
});
|
||||
|
||||
cx.register_action_type::<SignOut>();
|
||||
cx.on_action({
|
||||
let client = client.clone();
|
||||
move |_: &SignOut, cx| {
|
||||
@@ -104,6 +112,7 @@ pub fn init(client: &Arc<Client>, cx: &mut AppContext) {
|
||||
}
|
||||
});
|
||||
|
||||
cx.register_action_type::<Reconnect>();
|
||||
cx.on_action({
|
||||
let client = client.clone();
|
||||
move |_: &Reconnect, cx| {
|
||||
@@ -231,7 +240,7 @@ struct ClientState {
|
||||
Box<dyn AnyTypedEnvelope>,
|
||||
&Arc<Client>,
|
||||
AsyncAppContext,
|
||||
) -> LocalBoxFuture<'static, Result<()>>,
|
||||
) -> BoxFuture<'static, Result<()>>,
|
||||
>,
|
||||
>,
|
||||
}
|
||||
@@ -301,7 +310,10 @@ pub struct PendingEntitySubscription<T: 'static> {
|
||||
consumed: bool,
|
||||
}
|
||||
|
||||
impl<T: 'static> PendingEntitySubscription<T> {
|
||||
impl<T> PendingEntitySubscription<T>
|
||||
where
|
||||
T: 'static + Send,
|
||||
{
|
||||
pub fn set_model(mut self, model: &Model<T>, cx: &mut AsyncAppContext) -> Subscription {
|
||||
self.consumed = true;
|
||||
let mut state = self.client.state.write();
|
||||
@@ -329,7 +341,10 @@ impl<T: 'static> PendingEntitySubscription<T> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: 'static> Drop for PendingEntitySubscription<T> {
|
||||
impl<T> Drop for PendingEntitySubscription<T>
|
||||
where
|
||||
T: 'static,
|
||||
{
|
||||
fn drop(&mut self) {
|
||||
if !self.consumed {
|
||||
let mut state = self.client.state.write();
|
||||
@@ -357,7 +372,7 @@ pub struct TelemetrySettingsContent {
|
||||
pub metrics: Option<bool>,
|
||||
}
|
||||
|
||||
impl settings::Settings for TelemetrySettings {
|
||||
impl settings2::Settings for TelemetrySettings {
|
||||
const KEY: Option<&'static str> = Some("telemetry");
|
||||
|
||||
type FileContent = TelemetrySettingsContent;
|
||||
@@ -490,7 +505,7 @@ impl Client {
|
||||
},
|
||||
&cx,
|
||||
);
|
||||
cx.background_executor().timer(delay).await;
|
||||
cx.executor().timer(delay).await;
|
||||
delay = delay
|
||||
.mul_f32(rng.gen_range(1.0..=2.0))
|
||||
.min(reconnect_interval);
|
||||
@@ -514,7 +529,7 @@ impl Client {
|
||||
remote_id: u64,
|
||||
) -> Result<PendingEntitySubscription<T>>
|
||||
where
|
||||
T: 'static,
|
||||
T: 'static + Send,
|
||||
{
|
||||
let id = (TypeId::of::<T>(), remote_id);
|
||||
|
||||
@@ -542,13 +557,9 @@ impl Client {
|
||||
) -> Subscription
|
||||
where
|
||||
M: EnvelopedMessage,
|
||||
E: 'static,
|
||||
H: 'static
|
||||
+ Sync
|
||||
+ Fn(Model<E>, TypedEnvelope<M>, Arc<Self>, AsyncAppContext) -> F
|
||||
+ Send
|
||||
+ Sync,
|
||||
F: 'static + Future<Output = Result<()>>,
|
||||
E: 'static + Send,
|
||||
H: 'static + Send + Sync + Fn(Model<E>, TypedEnvelope<M>, Arc<Self>, AsyncAppContext) -> F,
|
||||
F: 'static + Future<Output = Result<()>> + Send,
|
||||
{
|
||||
let message_type_id = TypeId::of::<M>();
|
||||
|
||||
@@ -562,7 +573,7 @@ impl Client {
|
||||
Arc::new(move |subscriber, envelope, client, cx| {
|
||||
let subscriber = subscriber.downcast::<E>().unwrap();
|
||||
let envelope = envelope.into_any().downcast::<TypedEnvelope<M>>().unwrap();
|
||||
handler(subscriber, *envelope, client.clone(), cx).boxed_local()
|
||||
handler(subscriber, *envelope, client.clone(), cx).boxed()
|
||||
}),
|
||||
);
|
||||
if prev_handler.is_some() {
|
||||
@@ -588,13 +599,9 @@ impl Client {
|
||||
) -> Subscription
|
||||
where
|
||||
M: RequestMessage,
|
||||
E: 'static,
|
||||
H: 'static
|
||||
+ Sync
|
||||
+ Fn(Model<E>, TypedEnvelope<M>, Arc<Self>, AsyncAppContext) -> F
|
||||
+ Send
|
||||
+ Sync,
|
||||
F: 'static + Future<Output = Result<M::Response>>,
|
||||
E: 'static + Send,
|
||||
H: 'static + Send + Sync + Fn(Model<E>, TypedEnvelope<M>, Arc<Self>, AsyncAppContext) -> F,
|
||||
F: 'static + Future<Output = Result<M::Response>> + Send,
|
||||
{
|
||||
self.add_message_handler(model, move |handle, envelope, this, cx| {
|
||||
Self::respond_to_request(
|
||||
@@ -608,9 +615,9 @@ impl Client {
|
||||
pub fn add_model_message_handler<M, E, H, F>(self: &Arc<Self>, handler: H)
|
||||
where
|
||||
M: EntityMessage,
|
||||
E: 'static,
|
||||
H: 'static + Fn(Model<E>, TypedEnvelope<M>, Arc<Self>, AsyncAppContext) -> F + Send + Sync,
|
||||
F: 'static + Future<Output = Result<()>>,
|
||||
E: 'static + Send,
|
||||
H: 'static + Send + Sync + Fn(Model<E>, TypedEnvelope<M>, Arc<Self>, AsyncAppContext) -> F,
|
||||
F: 'static + Future<Output = Result<()>> + Send,
|
||||
{
|
||||
self.add_entity_message_handler::<M, E, _, _>(move |subscriber, message, client, cx| {
|
||||
handler(subscriber.downcast::<E>().unwrap(), message, client, cx)
|
||||
@@ -620,9 +627,9 @@ impl Client {
|
||||
fn add_entity_message_handler<M, E, H, F>(self: &Arc<Self>, handler: H)
|
||||
where
|
||||
M: EntityMessage,
|
||||
E: 'static,
|
||||
H: 'static + Fn(AnyModel, TypedEnvelope<M>, Arc<Self>, AsyncAppContext) -> F + Send + Sync,
|
||||
F: 'static + Future<Output = Result<()>>,
|
||||
E: 'static + Send,
|
||||
H: 'static + Send + Sync + Fn(AnyModel, TypedEnvelope<M>, Arc<Self>, AsyncAppContext) -> F,
|
||||
F: 'static + Future<Output = Result<()>> + Send,
|
||||
{
|
||||
let model_type_id = TypeId::of::<E>();
|
||||
let message_type_id = TypeId::of::<M>();
|
||||
@@ -648,7 +655,7 @@ impl Client {
|
||||
message_type_id,
|
||||
Arc::new(move |handle, envelope, client, cx| {
|
||||
let envelope = envelope.into_any().downcast::<TypedEnvelope<M>>().unwrap();
|
||||
handler(handle, *envelope, client.clone(), cx).boxed_local()
|
||||
handler(handle, *envelope, client.clone(), cx).boxed()
|
||||
}),
|
||||
);
|
||||
if prev_handler.is_some() {
|
||||
@@ -659,9 +666,9 @@ impl Client {
|
||||
pub fn add_model_request_handler<M, E, H, F>(self: &Arc<Self>, handler: H)
|
||||
where
|
||||
M: EntityMessage + RequestMessage,
|
||||
E: 'static,
|
||||
H: 'static + Fn(Model<E>, TypedEnvelope<M>, Arc<Self>, AsyncAppContext) -> F + Send + Sync,
|
||||
F: 'static + Future<Output = Result<M::Response>>,
|
||||
E: 'static + Send,
|
||||
H: 'static + Send + Sync + Fn(Model<E>, TypedEnvelope<M>, Arc<Self>, AsyncAppContext) -> F,
|
||||
F: 'static + Future<Output = Result<M::Response>> + Send,
|
||||
{
|
||||
self.add_model_message_handler(move |entity, envelope, client, cx| {
|
||||
Self::respond_to_request::<M, _>(
|
||||
@@ -698,7 +705,7 @@ impl Client {
|
||||
read_credentials_from_keychain(cx).await.is_some()
|
||||
}
|
||||
|
||||
#[async_recursion(?Send)]
|
||||
#[async_recursion]
|
||||
pub async fn authenticate_and_connect(
|
||||
self: &Arc<Self>,
|
||||
try_keychain: bool,
|
||||
@@ -756,8 +763,7 @@ impl Client {
|
||||
self.set_status(Status::Reconnecting, cx);
|
||||
}
|
||||
|
||||
let mut timeout =
|
||||
futures::FutureExt::fuse(cx.background_executor().timer(CONNECTION_TIMEOUT));
|
||||
let mut timeout = futures::FutureExt::fuse(cx.executor().timer(CONNECTION_TIMEOUT));
|
||||
futures::select_biased! {
|
||||
connection = self.establish_connection(&credentials, cx).fuse() => {
|
||||
match connection {
|
||||
@@ -808,7 +814,7 @@ impl Client {
|
||||
conn: Connection,
|
||||
cx: &AsyncAppContext,
|
||||
) -> Result<()> {
|
||||
let executor = cx.background_executor();
|
||||
let executor = cx.executor();
|
||||
log::info!("add connection to peer");
|
||||
let (connection_id, handle_io, mut incoming) = self.peer.add_connection(conn, {
|
||||
let executor = executor.clone();
|
||||
@@ -969,10 +975,10 @@ impl Client {
|
||||
"Authorization",
|
||||
format!("{} {}", credentials.user_id, credentials.access_token),
|
||||
)
|
||||
.header("x-zed-protocol-version", rpc::PROTOCOL_VERSION);
|
||||
.header("x-zed-protocol-version", rpc2::PROTOCOL_VERSION);
|
||||
|
||||
let http = self.http.clone();
|
||||
cx.background_executor().spawn(async move {
|
||||
cx.executor().spawn(async move {
|
||||
let mut rpc_url = Self::get_rpc_url(http, use_preview_server).await?;
|
||||
let rpc_host = rpc_url
|
||||
.host_str()
|
||||
@@ -1019,7 +1025,7 @@ impl Client {
|
||||
// zed server to encrypt the user's access token, so that it can'be intercepted by
|
||||
// any other app running on the user's device.
|
||||
let (public_key, private_key) =
|
||||
rpc::auth::keypair().expect("failed to generate keypair for auth");
|
||||
rpc2::auth::keypair().expect("failed to generate keypair for auth");
|
||||
let public_key_string =
|
||||
String::try_from(public_key).expect("failed to serialize public key for auth");
|
||||
|
||||
@@ -1043,7 +1049,7 @@ impl Client {
|
||||
write!(&mut url, "&impersonate={}", impersonate_login).unwrap();
|
||||
}
|
||||
|
||||
cx.update(|cx| cx.open_url(&url))?;
|
||||
cx.run_on_main(move |cx| cx.open_url(&url))?.await;
|
||||
|
||||
// Receive the HTTP request from the user's browser. Retrieve the user id and encrypted
|
||||
// access token from the query params.
|
||||
@@ -1094,7 +1100,7 @@ impl Client {
|
||||
let access_token = private_key
|
||||
.decrypt_string(&access_token)
|
||||
.context("failed to decrypt access token")?;
|
||||
cx.update(|cx| cx.activate(true))?;
|
||||
cx.run_on_main(|cx| cx.activate(true))?.await;
|
||||
|
||||
Ok(Credentials {
|
||||
user_id: user_id.parse()?,
|
||||
@@ -1286,7 +1292,7 @@ impl Client {
|
||||
sender_id,
|
||||
type_name
|
||||
);
|
||||
cx.spawn(move |_| async move {
|
||||
cx.spawn_on_main(move |_| async move {
|
||||
match future.await {
|
||||
Ok(()) => {
|
||||
log::debug!(
|
||||
@@ -1325,8 +1331,9 @@ async fn read_credentials_from_keychain(cx: &AsyncAppContext) -> Option<Credenti
|
||||
}
|
||||
|
||||
let (user_id, access_token) = cx
|
||||
.update(|cx| cx.read_credentials(&ZED_SERVER_URL).log_err().flatten())
|
||||
.ok()??;
|
||||
.run_on_main(|cx| cx.read_credentials(&ZED_SERVER_URL).log_err().flatten())
|
||||
.ok()?
|
||||
.await?;
|
||||
|
||||
Some(Credentials {
|
||||
user_id: user_id.parse().ok()?,
|
||||
@@ -1338,17 +1345,19 @@ async fn write_credentials_to_keychain(
|
||||
credentials: Credentials,
|
||||
cx: &AsyncAppContext,
|
||||
) -> Result<()> {
|
||||
cx.update(move |cx| {
|
||||
cx.run_on_main(move |cx| {
|
||||
cx.write_credentials(
|
||||
&ZED_SERVER_URL,
|
||||
&credentials.user_id.to_string(),
|
||||
credentials.access_token.as_bytes(),
|
||||
)
|
||||
})?
|
||||
.await
|
||||
}
|
||||
|
||||
async fn delete_credentials_from_keychain(cx: &AsyncAppContext) -> Result<()> {
|
||||
cx.update(move |cx| cx.delete_credentials(&ZED_SERVER_URL))?
|
||||
cx.run_on_main(move |cx| cx.delete_credentials(&ZED_SERVER_URL))?
|
||||
.await
|
||||
}
|
||||
|
||||
const WORKTREE_URL_PREFIX: &str = "zed://worktrees/";
|
||||
@@ -1373,12 +1382,12 @@ mod tests {
|
||||
use super::*;
|
||||
use crate::test::FakeServer;
|
||||
|
||||
use gpui::{BackgroundExecutor, Context, TestAppContext};
|
||||
use gpui2::{Context, Executor, TestAppContext};
|
||||
use parking_lot::Mutex;
|
||||
use std::future;
|
||||
use util::http::FakeHttpClient;
|
||||
|
||||
#[gpui::test(iterations = 10)]
|
||||
#[gpui2::test(iterations = 10)]
|
||||
async fn test_reconnection(cx: &mut TestAppContext) {
|
||||
let user_id = 5;
|
||||
let client = cx.update(|cx| Client::new(FakeHttpClient::with_404_response(), cx));
|
||||
@@ -1412,15 +1421,15 @@ mod tests {
|
||||
assert_eq!(server.auth_count(), 2); // Client re-authenticated due to an invalid token
|
||||
}
|
||||
|
||||
#[gpui::test(iterations = 10)]
|
||||
async fn test_connection_timeout(executor: BackgroundExecutor, cx: &mut TestAppContext) {
|
||||
#[gpui2::test(iterations = 10)]
|
||||
async fn test_connection_timeout(executor: Executor, cx: &mut TestAppContext) {
|
||||
let user_id = 5;
|
||||
let client = cx.update(|cx| Client::new(FakeHttpClient::with_404_response(), cx));
|
||||
let mut status = client.status();
|
||||
|
||||
// Time out when client tries to connect.
|
||||
client.override_authenticate(move |cx| {
|
||||
cx.background_executor().spawn(async move {
|
||||
cx.executor().spawn(async move {
|
||||
Ok(Credentials {
|
||||
user_id,
|
||||
access_token: "token".into(),
|
||||
@@ -1428,7 +1437,7 @@ mod tests {
|
||||
})
|
||||
});
|
||||
client.override_establish_connection(|_, cx| {
|
||||
cx.background_executor().spawn(async move {
|
||||
cx.executor().spawn(async move {
|
||||
future::pending::<()>().await;
|
||||
unreachable!()
|
||||
})
|
||||
@@ -1462,7 +1471,7 @@ mod tests {
|
||||
// Time out when re-establishing the connection.
|
||||
server.allow_connections();
|
||||
client.override_establish_connection(|_, cx| {
|
||||
cx.background_executor().spawn(async move {
|
||||
cx.executor().spawn(async move {
|
||||
future::pending::<()>().await;
|
||||
unreachable!()
|
||||
})
|
||||
@@ -1480,11 +1489,8 @@ mod tests {
|
||||
));
|
||||
}
|
||||
|
||||
#[gpui::test(iterations = 10)]
|
||||
async fn test_authenticating_more_than_once(
|
||||
cx: &mut TestAppContext,
|
||||
executor: BackgroundExecutor,
|
||||
) {
|
||||
#[gpui2::test(iterations = 10)]
|
||||
async fn test_authenticating_more_than_once(cx: &mut TestAppContext, executor: Executor) {
|
||||
let auth_count = Arc::new(Mutex::new(0));
|
||||
let dropped_auth_count = Arc::new(Mutex::new(0));
|
||||
let client = cx.update(|cx| Client::new(FakeHttpClient::with_404_response(), cx));
|
||||
@@ -1494,7 +1500,7 @@ mod tests {
|
||||
move |cx| {
|
||||
let auth_count = auth_count.clone();
|
||||
let dropped_auth_count = dropped_auth_count.clone();
|
||||
cx.background_executor().spawn(async move {
|
||||
cx.executor().spawn(async move {
|
||||
*auth_count.lock() += 1;
|
||||
let _drop = util::defer(move || *dropped_auth_count.lock() += 1);
|
||||
future::pending::<()>().await;
|
||||
@@ -1531,7 +1537,7 @@ mod tests {
|
||||
assert_eq!(decode_worktree_url("not://the-right-format"), None);
|
||||
}
|
||||
|
||||
#[gpui::test]
|
||||
#[gpui2::test]
|
||||
async fn test_subscribing_to_entity(cx: &mut TestAppContext) {
|
||||
let user_id = 5;
|
||||
let client = cx.update(|cx| Client::new(FakeHttpClient::with_404_response(), cx));
|
||||
@@ -1584,7 +1590,7 @@ mod tests {
|
||||
done_rx2.next().await.unwrap();
|
||||
}
|
||||
|
||||
#[gpui::test]
|
||||
#[gpui2::test]
|
||||
async fn test_subscribing_after_dropping_subscription(cx: &mut TestAppContext) {
|
||||
let user_id = 5;
|
||||
let client = cx.update(|cx| Client::new(FakeHttpClient::with_404_response(), cx));
|
||||
@@ -1612,7 +1618,7 @@ mod tests {
|
||||
done_rx2.next().await.unwrap();
|
||||
}
|
||||
|
||||
#[gpui::test]
|
||||
#[gpui2::test]
|
||||
async fn test_dropping_subscription_in_handler(cx: &mut TestAppContext) {
|
||||
let user_id = 5;
|
||||
let client = cx.update(|cx| Client::new(FakeHttpClient::with_404_response(), cx));
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
use crate::{TelemetrySettings, ZED_SECRET_CLIENT_TOKEN, ZED_SERVER_URL};
|
||||
use gpui::{serde_json, AppContext, AppMetadata, BackgroundExecutor, Task};
|
||||
use gpui2::{serde_json, AppContext, AppMetadata, Executor, Task};
|
||||
use lazy_static::lazy_static;
|
||||
use parking_lot::Mutex;
|
||||
use serde::Serialize;
|
||||
use settings::Settings;
|
||||
use settings2::Settings;
|
||||
use std::{env, io::Write, mem, path::PathBuf, sync::Arc, time::Duration};
|
||||
use sysinfo::{
|
||||
CpuRefreshKind, Pid, PidExt, ProcessExt, ProcessRefreshKind, RefreshKind, System, SystemExt,
|
||||
@@ -14,7 +14,7 @@ use util::{channel::ReleaseChannel, TryFutureExt};
|
||||
|
||||
pub struct Telemetry {
|
||||
http_client: Arc<dyn HttpClient>,
|
||||
executor: BackgroundExecutor,
|
||||
executor: Executor,
|
||||
state: Mutex<TelemetryState>,
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ impl Telemetry {
|
||||
// TODO: Replace all hardware stuff with nested SystemSpecs json
|
||||
let this = Arc::new(Self {
|
||||
http_client: client,
|
||||
executor: cx.background_executor().clone(),
|
||||
executor: cx.executor().clone(),
|
||||
state: Mutex::new(TelemetryState {
|
||||
app_metadata: cx.app_metadata(),
|
||||
architecture: env::consts::ARCH,
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
use crate::{Client, Connection, Credentials, EstablishConnectionError, UserStore};
|
||||
use anyhow::{anyhow, Result};
|
||||
use futures::{stream::BoxStream, StreamExt};
|
||||
use gpui::{BackgroundExecutor, Context, Model, TestAppContext};
|
||||
use gpui2::{Context, Executor, Model, TestAppContext};
|
||||
use parking_lot::Mutex;
|
||||
use rpc::{
|
||||
use rpc2::{
|
||||
proto::{self, GetPrivateUserInfo, GetPrivateUserInfoResponse},
|
||||
ConnectionId, Peer, Receipt, TypedEnvelope,
|
||||
};
|
||||
@@ -14,7 +14,7 @@ pub struct FakeServer {
|
||||
peer: Arc<Peer>,
|
||||
state: Arc<Mutex<FakeServerState>>,
|
||||
user_id: u64,
|
||||
executor: BackgroundExecutor,
|
||||
executor: Executor,
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
@@ -79,10 +79,10 @@ impl FakeServer {
|
||||
}
|
||||
|
||||
let (client_conn, server_conn, _) =
|
||||
Connection::in_memory(cx.background_executor().clone());
|
||||
Connection::in_memory(cx.executor().clone());
|
||||
let (connection_id, io, incoming) =
|
||||
peer.add_test_connection(server_conn, cx.background_executor().clone());
|
||||
cx.background_executor().spawn(io).detach();
|
||||
peer.add_test_connection(server_conn, cx.executor().clone());
|
||||
cx.executor().spawn(io).detach();
|
||||
{
|
||||
let mut state = state.lock();
|
||||
state.connection_id = Some(connection_id);
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
use super::{proto, Client, Status, TypedEnvelope};
|
||||
use anyhow::{anyhow, Context, Result};
|
||||
use collections::{hash_map::Entry, HashMap, HashSet};
|
||||
use feature_flags::FeatureFlagAppExt;
|
||||
use feature_flags2::FeatureFlagAppExt;
|
||||
use futures::{channel::mpsc, future, AsyncReadExt, Future, StreamExt};
|
||||
use gpui::{AsyncAppContext, EventEmitter, ImageData, Model, ModelContext, Task};
|
||||
use gpui2::{AsyncAppContext, EventEmitter, ImageData, Model, ModelContext, Task};
|
||||
use postage::{sink::Sink, watch};
|
||||
use rpc::proto::{RequestMessage, UsersResponse};
|
||||
use rpc2::proto::{RequestMessage, UsersResponse};
|
||||
use std::sync::{Arc, Weak};
|
||||
use text::ReplicaId;
|
||||
use util::http::HttpClient;
|
||||
@@ -292,18 +292,22 @@ impl UserStore {
|
||||
.upgrade()
|
||||
.ok_or_else(|| anyhow!("can't upgrade user store handle"))?;
|
||||
for contact in message.contacts {
|
||||
updated_contacts.push(Arc::new(
|
||||
Contact::from_proto(contact, &this, &mut cx).await?,
|
||||
let should_notify = contact.should_notify;
|
||||
updated_contacts.push((
|
||||
Arc::new(Contact::from_proto(contact, &this, &mut cx).await?),
|
||||
should_notify,
|
||||
));
|
||||
}
|
||||
|
||||
let mut incoming_requests = Vec::new();
|
||||
for request in message.incoming_requests {
|
||||
incoming_requests.push({
|
||||
this.update(&mut cx, |this, cx| {
|
||||
this.get_user(request.requester_id, cx)
|
||||
})?
|
||||
.await?
|
||||
let user = this
|
||||
.update(&mut cx, |this, cx| {
|
||||
this.get_user(request.requester_id, cx)
|
||||
})?
|
||||
.await?;
|
||||
(user, request.should_notify)
|
||||
});
|
||||
}
|
||||
|
||||
@@ -327,7 +331,13 @@ impl UserStore {
|
||||
this.contacts
|
||||
.retain(|contact| !removed_contacts.contains(&contact.user.id));
|
||||
// Update existing contacts and insert new ones
|
||||
for updated_contact in updated_contacts {
|
||||
for (updated_contact, should_notify) in updated_contacts {
|
||||
if should_notify {
|
||||
cx.emit(Event::Contact {
|
||||
user: updated_contact.user.clone(),
|
||||
kind: ContactEventKind::Accepted,
|
||||
});
|
||||
}
|
||||
match this.contacts.binary_search_by_key(
|
||||
&&updated_contact.user.github_login,
|
||||
|contact| &contact.user.github_login,
|
||||
@@ -350,7 +360,14 @@ impl UserStore {
|
||||
}
|
||||
});
|
||||
// Update existing incoming requests and insert new ones
|
||||
for user in incoming_requests {
|
||||
for (user, should_notify) in incoming_requests {
|
||||
if should_notify {
|
||||
cx.emit(Event::Contact {
|
||||
user: user.clone(),
|
||||
kind: ContactEventKind::Requested,
|
||||
});
|
||||
}
|
||||
|
||||
match this
|
||||
.incoming_contact_requests
|
||||
.binary_search_by_key(&&user.github_login, |contact| {
|
||||
|
||||
@@ -3,7 +3,7 @@ authors = ["Nathan Sobo <nathan@zed.dev>"]
|
||||
default-run = "collab"
|
||||
edition = "2021"
|
||||
name = "collab"
|
||||
version = "0.28.0"
|
||||
version = "0.27.0"
|
||||
publish = false
|
||||
|
||||
[[bin]]
|
||||
|
||||
@@ -75,23 +75,23 @@ impl ChannelView {
|
||||
let workspace = workspace.read(cx);
|
||||
let project = workspace.project().to_owned();
|
||||
let channel_store = ChannelStore::global(cx);
|
||||
let language_registry = workspace.app_state().languages.clone();
|
||||
let markdown = language_registry.language_for_name("Markdown");
|
||||
let markdown = workspace
|
||||
.app_state()
|
||||
.languages
|
||||
.language_for_name("Markdown");
|
||||
let channel_buffer =
|
||||
channel_store.update(cx, |store, cx| store.open_channel_buffer(channel_id, cx));
|
||||
|
||||
cx.spawn(|mut cx| async move {
|
||||
let channel_buffer = channel_buffer.await?;
|
||||
let markdown = markdown.await.log_err();
|
||||
|
||||
channel_buffer.update(&mut cx, |buffer, cx| {
|
||||
buffer.buffer().update(cx, |buffer, cx| {
|
||||
buffer.set_language_registry(language_registry);
|
||||
if let Some(markdown) = markdown {
|
||||
if let Some(markdown) = markdown.await.log_err() {
|
||||
channel_buffer.update(&mut cx, |buffer, cx| {
|
||||
buffer.buffer().update(cx, |buffer, cx| {
|
||||
buffer.set_language(Some(markdown), cx);
|
||||
}
|
||||
})
|
||||
});
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
pane.update(&mut cx, |pane, cx| {
|
||||
let buffer_id = channel_buffer.read(cx).remote_id(cx);
|
||||
|
||||
@@ -11,21 +11,21 @@ doctest = false
|
||||
[features]
|
||||
test-support = [
|
||||
"collections/test-support",
|
||||
"gpui/test-support",
|
||||
"language/test-support",
|
||||
"lsp/test-support",
|
||||
"settings/test-support",
|
||||
"gpui2/test-support",
|
||||
"language2/test-support",
|
||||
"lsp2/test-support",
|
||||
"settings2/test-support",
|
||||
"util/test-support",
|
||||
]
|
||||
|
||||
[dependencies]
|
||||
collections = { path = "../collections" }
|
||||
# context_menu = { path = "../context_menu" }
|
||||
gpui = { package = "gpui2", path = "../gpui2" }
|
||||
language = { package = "language2", path = "../language2" }
|
||||
settings = { package = "settings2", path = "../settings2" }
|
||||
context_menu = { path = "../context_menu" }
|
||||
gpui2 = { path = "../gpui2" }
|
||||
language2 = { path = "../language2" }
|
||||
settings2 = { path = "../settings2" }
|
||||
theme = { path = "../theme" }
|
||||
lsp = { package = "lsp2", path = "../lsp2" }
|
||||
lsp2 = { path = "../lsp2" }
|
||||
node_runtime = { path = "../node_runtime"}
|
||||
util = { path = "../util" }
|
||||
async-compression = { version = "0.3", features = ["gzip", "futures-bufread"] }
|
||||
@@ -42,9 +42,9 @@ parking_lot.workspace = true
|
||||
clock = { path = "../clock" }
|
||||
collections = { path = "../collections", features = ["test-support"] }
|
||||
fs = { path = "../fs", features = ["test-support"] }
|
||||
gpui = { package = "gpui2", path = "../gpui2", features = ["test-support"] }
|
||||
language = { package = "language2", path = "../language2", features = ["test-support"] }
|
||||
lsp = { package = "lsp2", path = "../lsp2", features = ["test-support"] }
|
||||
gpui2 = { path = "../gpui2", features = ["test-support"] }
|
||||
language2 = { path = "../language2", features = ["test-support"] }
|
||||
lsp2 = { path = "../lsp2", features = ["test-support"] }
|
||||
rpc = { path = "../rpc", features = ["test-support"] }
|
||||
settings = { package = "settings2", path = "../settings2", features = ["test-support"] }
|
||||
settings2 = { path = "../settings2", features = ["test-support"] }
|
||||
util = { path = "../util", features = ["test-support"] }
|
||||
|
||||
@@ -6,20 +6,20 @@ use async_compression::futures::bufread::GzipDecoder;
|
||||
use async_tar::Archive;
|
||||
use collections::{HashMap, HashSet};
|
||||
use futures::{channel::oneshot, future::Shared, Future, FutureExt, TryFutureExt};
|
||||
use gpui::{
|
||||
actions, AppContext, AsyncAppContext, Context, Entity, EntityId, EventEmitter, Model,
|
||||
ModelContext, Task, WeakModel,
|
||||
use gpui2::{
|
||||
AppContext, AsyncAppContext, Context, Entity, EntityId, EventEmitter, Model, ModelContext,
|
||||
Task, WeakModel,
|
||||
};
|
||||
use language::{
|
||||
use language2::{
|
||||
language_settings::{all_language_settings, language_settings},
|
||||
point_from_lsp, point_to_lsp, Anchor, Bias, Buffer, BufferSnapshot, Language,
|
||||
LanguageServerName, PointUtf16, ToPointUtf16,
|
||||
};
|
||||
use lsp::{LanguageServer, LanguageServerBinary, LanguageServerId};
|
||||
use lsp2::{LanguageServer, LanguageServerBinary, LanguageServerId};
|
||||
use node_runtime::NodeRuntime;
|
||||
use parking_lot::Mutex;
|
||||
use request::StatusNotification;
|
||||
use settings::SettingsStore;
|
||||
use settings2::SettingsStore;
|
||||
use smol::{fs, io::BufReader, stream::StreamExt};
|
||||
use std::{
|
||||
ffi::OsString,
|
||||
@@ -34,11 +34,14 @@ use util::{
|
||||
|
||||
// todo!()
|
||||
// const COPILOT_AUTH_NAMESPACE: &'static str = "copilot_auth";
|
||||
actions!(SignIn, SignOut);
|
||||
// actions!(copilot_auth, [SignIn, SignOut]);
|
||||
|
||||
// todo!()
|
||||
// const COPILOT_NAMESPACE: &'static str = "copilot";
|
||||
actions!(Suggest, NextSuggestion, PreviousSuggestion, Reinstall);
|
||||
// actions!(
|
||||
// copilot,
|
||||
// [Suggest, NextSuggestion, PreviousSuggestion, Reinstall]
|
||||
// );
|
||||
|
||||
pub fn init(
|
||||
new_server_id: LanguageServerId,
|
||||
@@ -169,11 +172,11 @@ impl Status {
|
||||
}
|
||||
|
||||
struct RegisteredBuffer {
|
||||
uri: lsp::Url,
|
||||
uri: lsp2::Url,
|
||||
language_id: String,
|
||||
snapshot: BufferSnapshot,
|
||||
snapshot_version: i32,
|
||||
_subscriptions: [gpui::Subscription; 2],
|
||||
_subscriptions: [gpui2::Subscription; 2],
|
||||
pending_buffer_change: Task<Option<()>>,
|
||||
}
|
||||
|
||||
@@ -205,7 +208,7 @@ impl RegisteredBuffer {
|
||||
let new_snapshot = buffer.update(&mut cx, |buffer, _| buffer.snapshot()).ok()?;
|
||||
|
||||
let content_changes = cx
|
||||
.background_executor()
|
||||
.executor()
|
||||
.spawn({
|
||||
let new_snapshot = new_snapshot.clone();
|
||||
async move {
|
||||
@@ -217,8 +220,8 @@ impl RegisteredBuffer {
|
||||
let new_text = new_snapshot
|
||||
.text_for_range(edit.new.start.1..edit.new.end.1)
|
||||
.collect();
|
||||
lsp::TextDocumentContentChangeEvent {
|
||||
range: Some(lsp::Range::new(
|
||||
lsp2::TextDocumentContentChangeEvent {
|
||||
range: Some(lsp2::Range::new(
|
||||
point_to_lsp(edit_start),
|
||||
point_to_lsp(edit_end),
|
||||
)),
|
||||
@@ -240,9 +243,9 @@ impl RegisteredBuffer {
|
||||
buffer.snapshot = new_snapshot;
|
||||
server
|
||||
.lsp
|
||||
.notify::<lsp::notification::DidChangeTextDocument>(
|
||||
lsp::DidChangeTextDocumentParams {
|
||||
text_document: lsp::VersionedTextDocumentIdentifier::new(
|
||||
.notify::<lsp2::notification::DidChangeTextDocument>(
|
||||
lsp2::DidChangeTextDocumentParams {
|
||||
text_document: lsp2::VersionedTextDocumentIdentifier::new(
|
||||
buffer.uri.clone(),
|
||||
buffer.snapshot_version,
|
||||
),
|
||||
@@ -277,7 +280,7 @@ pub struct Copilot {
|
||||
server: CopilotServer,
|
||||
buffers: HashSet<WeakModel<Buffer>>,
|
||||
server_id: LanguageServerId,
|
||||
_subscription: gpui::Subscription,
|
||||
_subscription: gpui2::Subscription,
|
||||
}
|
||||
|
||||
pub enum Event {
|
||||
@@ -532,7 +535,7 @@ impl Copilot {
|
||||
}
|
||||
};
|
||||
|
||||
cx.background_executor()
|
||||
cx.executor()
|
||||
.spawn(task.map_err(|err| anyhow!("{:?}", err)))
|
||||
} else {
|
||||
// If we're downloading, wait until download is finished
|
||||
@@ -546,7 +549,7 @@ impl Copilot {
|
||||
self.update_sign_in_status(request::SignInStatus::NotSignedIn, cx);
|
||||
if let CopilotServer::Running(RunningCopilotServer { lsp: server, .. }) = &self.server {
|
||||
let server = server.clone();
|
||||
cx.background_executor().spawn(async move {
|
||||
cx.executor().spawn(async move {
|
||||
server
|
||||
.request::<request::SignOut>(request::SignOutParams {})
|
||||
.await?;
|
||||
@@ -576,7 +579,7 @@ impl Copilot {
|
||||
|
||||
cx.notify();
|
||||
|
||||
cx.background_executor().spawn(start_task)
|
||||
cx.executor().spawn(start_task)
|
||||
}
|
||||
|
||||
pub fn language_server(&self) -> Option<(&LanguageServerName, &Arc<LanguageServer>)> {
|
||||
@@ -605,13 +608,13 @@ impl Copilot {
|
||||
registered_buffers
|
||||
.entry(buffer.entity_id())
|
||||
.or_insert_with(|| {
|
||||
let uri: lsp::Url = uri_for_buffer(buffer, cx);
|
||||
let uri: lsp2::Url = uri_for_buffer(buffer, cx);
|
||||
let language_id = id_for_language(buffer.read(cx).language());
|
||||
let snapshot = buffer.read(cx).snapshot();
|
||||
server
|
||||
.notify::<lsp::notification::DidOpenTextDocument>(
|
||||
lsp::DidOpenTextDocumentParams {
|
||||
text_document: lsp::TextDocumentItem {
|
||||
.notify::<lsp2::notification::DidOpenTextDocument>(
|
||||
lsp2::DidOpenTextDocumentParams {
|
||||
text_document: lsp2::TextDocumentItem {
|
||||
uri: uri.clone(),
|
||||
language_id: language_id.clone(),
|
||||
version: 0,
|
||||
@@ -644,29 +647,29 @@ impl Copilot {
|
||||
fn handle_buffer_event(
|
||||
&mut self,
|
||||
buffer: Model<Buffer>,
|
||||
event: &language::Event,
|
||||
event: &language2::Event,
|
||||
cx: &mut ModelContext<Self>,
|
||||
) -> Result<()> {
|
||||
if let Ok(server) = self.server.as_running() {
|
||||
if let Some(registered_buffer) = server.registered_buffers.get_mut(&buffer.entity_id())
|
||||
{
|
||||
match event {
|
||||
language::Event::Edited => {
|
||||
language2::Event::Edited => {
|
||||
let _ = registered_buffer.report_changes(&buffer, cx);
|
||||
}
|
||||
language::Event::Saved => {
|
||||
language2::Event::Saved => {
|
||||
server
|
||||
.lsp
|
||||
.notify::<lsp::notification::DidSaveTextDocument>(
|
||||
lsp::DidSaveTextDocumentParams {
|
||||
text_document: lsp::TextDocumentIdentifier::new(
|
||||
.notify::<lsp2::notification::DidSaveTextDocument>(
|
||||
lsp2::DidSaveTextDocumentParams {
|
||||
text_document: lsp2::TextDocumentIdentifier::new(
|
||||
registered_buffer.uri.clone(),
|
||||
),
|
||||
text: None,
|
||||
},
|
||||
)?;
|
||||
}
|
||||
language::Event::FileHandleChanged | language::Event::LanguageChanged => {
|
||||
language2::Event::FileHandleChanged | language2::Event::LanguageChanged => {
|
||||
let new_language_id = id_for_language(buffer.read(cx).language());
|
||||
let new_uri = uri_for_buffer(&buffer, cx);
|
||||
if new_uri != registered_buffer.uri
|
||||
@@ -676,16 +679,16 @@ impl Copilot {
|
||||
registered_buffer.language_id = new_language_id;
|
||||
server
|
||||
.lsp
|
||||
.notify::<lsp::notification::DidCloseTextDocument>(
|
||||
lsp::DidCloseTextDocumentParams {
|
||||
text_document: lsp::TextDocumentIdentifier::new(old_uri),
|
||||
.notify::<lsp2::notification::DidCloseTextDocument>(
|
||||
lsp2::DidCloseTextDocumentParams {
|
||||
text_document: lsp2::TextDocumentIdentifier::new(old_uri),
|
||||
},
|
||||
)?;
|
||||
server
|
||||
.lsp
|
||||
.notify::<lsp::notification::DidOpenTextDocument>(
|
||||
lsp::DidOpenTextDocumentParams {
|
||||
text_document: lsp::TextDocumentItem::new(
|
||||
.notify::<lsp2::notification::DidOpenTextDocument>(
|
||||
lsp2::DidOpenTextDocumentParams {
|
||||
text_document: lsp2::TextDocumentItem::new(
|
||||
registered_buffer.uri.clone(),
|
||||
registered_buffer.language_id.clone(),
|
||||
registered_buffer.snapshot_version,
|
||||
@@ -708,9 +711,9 @@ impl Copilot {
|
||||
if let Some(buffer) = server.registered_buffers.remove(&buffer.entity_id()) {
|
||||
server
|
||||
.lsp
|
||||
.notify::<lsp::notification::DidCloseTextDocument>(
|
||||
lsp::DidCloseTextDocumentParams {
|
||||
text_document: lsp::TextDocumentIdentifier::new(buffer.uri),
|
||||
.notify::<lsp2::notification::DidCloseTextDocument>(
|
||||
lsp2::DidCloseTextDocumentParams {
|
||||
text_document: lsp2::TextDocumentIdentifier::new(buffer.uri),
|
||||
},
|
||||
)
|
||||
.log_err();
|
||||
@@ -757,7 +760,7 @@ impl Copilot {
|
||||
.request::<request::NotifyAccepted>(request::NotifyAcceptedParams {
|
||||
uuid: completion.uuid.clone(),
|
||||
});
|
||||
cx.background_executor().spawn(async move {
|
||||
cx.executor().spawn(async move {
|
||||
request.await?;
|
||||
Ok(())
|
||||
})
|
||||
@@ -781,7 +784,7 @@ impl Copilot {
|
||||
.map(|completion| completion.uuid.clone())
|
||||
.collect(),
|
||||
});
|
||||
cx.background_executor().spawn(async move {
|
||||
cx.executor().spawn(async move {
|
||||
request.await?;
|
||||
Ok(())
|
||||
})
|
||||
@@ -795,7 +798,7 @@ impl Copilot {
|
||||
) -> Task<Result<Vec<Completion>>>
|
||||
where
|
||||
R: 'static
|
||||
+ lsp::request::Request<
|
||||
+ lsp2::request::Request<
|
||||
Params = request::GetCompletionsParams,
|
||||
Result = request::GetCompletionsResult,
|
||||
>,
|
||||
@@ -824,7 +827,7 @@ impl Copilot {
|
||||
.map(|file| file.path().to_path_buf())
|
||||
.unwrap_or_default();
|
||||
|
||||
cx.background_executor().spawn(async move {
|
||||
cx.executor().spawn(async move {
|
||||
let (version, snapshot) = snapshot.await?;
|
||||
let result = lsp
|
||||
.request::<R>(request::GetCompletionsParams {
|
||||
@@ -923,9 +926,9 @@ fn id_for_language(language: Option<&Arc<Language>>) -> String {
|
||||
}
|
||||
}
|
||||
|
||||
fn uri_for_buffer(buffer: &Model<Buffer>, cx: &AppContext) -> lsp::Url {
|
||||
fn uri_for_buffer(buffer: &Model<Buffer>, cx: &AppContext) -> lsp2::Url {
|
||||
if let Some(file) = buffer.read(cx).file().and_then(|file| file.as_local()) {
|
||||
lsp::Url::from_file_path(file.abs_path(cx)).unwrap()
|
||||
lsp2::Url::from_file_path(file.abs_path(cx)).unwrap()
|
||||
} else {
|
||||
format!("buffer://{}", buffer.entity_id()).parse().unwrap()
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ pub struct CheckStatusParams {
|
||||
pub local_checks_only: bool,
|
||||
}
|
||||
|
||||
impl lsp::request::Request for CheckStatus {
|
||||
impl lsp2::request::Request for CheckStatus {
|
||||
type Params = CheckStatusParams;
|
||||
type Result = SignInStatus;
|
||||
const METHOD: &'static str = "checkStatus";
|
||||
@@ -33,7 +33,7 @@ pub struct PromptUserDeviceFlow {
|
||||
pub verification_uri: String,
|
||||
}
|
||||
|
||||
impl lsp::request::Request for SignInInitiate {
|
||||
impl lsp2::request::Request for SignInInitiate {
|
||||
type Params = SignInInitiateParams;
|
||||
type Result = SignInInitiateResult;
|
||||
const METHOD: &'static str = "signInInitiate";
|
||||
@@ -66,7 +66,7 @@ pub enum SignInStatus {
|
||||
NotSignedIn,
|
||||
}
|
||||
|
||||
impl lsp::request::Request for SignInConfirm {
|
||||
impl lsp2::request::Request for SignInConfirm {
|
||||
type Params = SignInConfirmParams;
|
||||
type Result = SignInStatus;
|
||||
const METHOD: &'static str = "signInConfirm";
|
||||
@@ -82,7 +82,7 @@ pub struct SignOutParams {}
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct SignOutResult {}
|
||||
|
||||
impl lsp::request::Request for SignOut {
|
||||
impl lsp2::request::Request for SignOut {
|
||||
type Params = SignOutParams;
|
||||
type Result = SignOutResult;
|
||||
const METHOD: &'static str = "signOut";
|
||||
@@ -102,9 +102,9 @@ pub struct GetCompletionsDocument {
|
||||
pub tab_size: u32,
|
||||
pub indent_size: u32,
|
||||
pub insert_spaces: bool,
|
||||
pub uri: lsp::Url,
|
||||
pub uri: lsp2::Url,
|
||||
pub relative_path: String,
|
||||
pub position: lsp::Position,
|
||||
pub position: lsp2::Position,
|
||||
pub version: usize,
|
||||
}
|
||||
|
||||
@@ -118,13 +118,13 @@ pub struct GetCompletionsResult {
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct Completion {
|
||||
pub text: String,
|
||||
pub position: lsp::Position,
|
||||
pub position: lsp2::Position,
|
||||
pub uuid: String,
|
||||
pub range: lsp::Range,
|
||||
pub range: lsp2::Range,
|
||||
pub display_text: String,
|
||||
}
|
||||
|
||||
impl lsp::request::Request for GetCompletions {
|
||||
impl lsp2::request::Request for GetCompletions {
|
||||
type Params = GetCompletionsParams;
|
||||
type Result = GetCompletionsResult;
|
||||
const METHOD: &'static str = "getCompletions";
|
||||
@@ -132,7 +132,7 @@ impl lsp::request::Request for GetCompletions {
|
||||
|
||||
pub enum GetCompletionsCycling {}
|
||||
|
||||
impl lsp::request::Request for GetCompletionsCycling {
|
||||
impl lsp2::request::Request for GetCompletionsCycling {
|
||||
type Params = GetCompletionsParams;
|
||||
type Result = GetCompletionsResult;
|
||||
const METHOD: &'static str = "getCompletionsCycling";
|
||||
@@ -149,7 +149,7 @@ pub struct LogMessageParams {
|
||||
pub extra: Vec<String>,
|
||||
}
|
||||
|
||||
impl lsp::notification::Notification for LogMessage {
|
||||
impl lsp2::notification::Notification for LogMessage {
|
||||
type Params = LogMessageParams;
|
||||
const METHOD: &'static str = "LogMessage";
|
||||
}
|
||||
@@ -162,7 +162,7 @@ pub struct StatusNotificationParams {
|
||||
pub status: String, // One of Normal/InProgress
|
||||
}
|
||||
|
||||
impl lsp::notification::Notification for StatusNotification {
|
||||
impl lsp2::notification::Notification for StatusNotification {
|
||||
type Params = StatusNotificationParams;
|
||||
const METHOD: &'static str = "statusNotification";
|
||||
}
|
||||
@@ -176,7 +176,7 @@ pub struct SetEditorInfoParams {
|
||||
pub editor_plugin_info: EditorPluginInfo,
|
||||
}
|
||||
|
||||
impl lsp::request::Request for SetEditorInfo {
|
||||
impl lsp2::request::Request for SetEditorInfo {
|
||||
type Params = SetEditorInfoParams;
|
||||
type Result = String;
|
||||
const METHOD: &'static str = "setEditorInfo";
|
||||
@@ -204,7 +204,7 @@ pub struct NotifyAcceptedParams {
|
||||
pub uuid: String,
|
||||
}
|
||||
|
||||
impl lsp::request::Request for NotifyAccepted {
|
||||
impl lsp2::request::Request for NotifyAccepted {
|
||||
type Params = NotifyAcceptedParams;
|
||||
type Result = String;
|
||||
const METHOD: &'static str = "notifyAccepted";
|
||||
@@ -218,7 +218,7 @@ pub struct NotifyRejectedParams {
|
||||
pub uuids: Vec<String>,
|
||||
}
|
||||
|
||||
impl lsp::request::Request for NotifyRejected {
|
||||
impl lsp2::request::Request for NotifyRejected {
|
||||
type Params = NotifyRejectedParams;
|
||||
type Result = String;
|
||||
const METHOD: &'static str = "notifyRejected";
|
||||
|
||||