mirror of
https://github.com/zed-industries/zed.git
synced 2024-11-07 20:39:04 +03:00
Merge branch 'main' into add-collab-tests
This commit is contained in:
commit
9b30f490c7
64
Cargo.lock
generated
64
Cargo.lock
generated
@ -2749,7 +2749,7 @@ dependencies = [
|
|||||||
"env_logger 0.9.3",
|
"env_logger 0.9.3",
|
||||||
"futures 0.3.28",
|
"futures 0.3.28",
|
||||||
"fuzzy2",
|
"fuzzy2",
|
||||||
"git",
|
"git3",
|
||||||
"gpui2",
|
"gpui2",
|
||||||
"indoc",
|
"indoc",
|
||||||
"itertools 0.10.5",
|
"itertools 0.10.5",
|
||||||
@ -3601,6 +3601,23 @@ dependencies = [
|
|||||||
"workspace",
|
"workspace",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "go_to_line2"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"editor2",
|
||||||
|
"gpui2",
|
||||||
|
"menu2",
|
||||||
|
"postage",
|
||||||
|
"serde",
|
||||||
|
"settings2",
|
||||||
|
"text2",
|
||||||
|
"theme2",
|
||||||
|
"ui2",
|
||||||
|
"util",
|
||||||
|
"workspace2",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gpui"
|
name = "gpui"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
@ -5042,7 +5059,8 @@ dependencies = [
|
|||||||
name = "menu2"
|
name = "menu2"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"gpui2",
|
"serde",
|
||||||
|
"serde_derive",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -6078,6 +6096,23 @@ dependencies = [
|
|||||||
"workspace",
|
"workspace",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "picker2"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"ctor",
|
||||||
|
"editor2",
|
||||||
|
"env_logger 0.9.3",
|
||||||
|
"gpui2",
|
||||||
|
"menu2",
|
||||||
|
"parking_lot 0.11.2",
|
||||||
|
"serde_json",
|
||||||
|
"settings2",
|
||||||
|
"theme2",
|
||||||
|
"util",
|
||||||
|
"workspace2",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pico-args"
|
name = "pico-args"
|
||||||
version = "0.4.2"
|
version = "0.4.2"
|
||||||
@ -8596,9 +8631,14 @@ dependencies = [
|
|||||||
"backtrace-on-stack-overflow",
|
"backtrace-on-stack-overflow",
|
||||||
"chrono",
|
"chrono",
|
||||||
"clap 4.4.4",
|
"clap 4.4.4",
|
||||||
|
"editor2",
|
||||||
|
"fuzzy2",
|
||||||
"gpui2",
|
"gpui2",
|
||||||
"itertools 0.11.0",
|
"itertools 0.11.0",
|
||||||
|
"language2",
|
||||||
"log",
|
"log",
|
||||||
|
"menu2",
|
||||||
|
"picker2",
|
||||||
"rust-embed",
|
"rust-embed",
|
||||||
"serde",
|
"serde",
|
||||||
"settings2",
|
"settings2",
|
||||||
@ -9062,6 +9102,7 @@ dependencies = [
|
|||||||
"fs2",
|
"fs2",
|
||||||
"gpui2",
|
"gpui2",
|
||||||
"indexmap 1.9.3",
|
"indexmap 1.9.3",
|
||||||
|
"itertools 0.11.0",
|
||||||
"parking_lot 0.11.2",
|
"parking_lot 0.11.2",
|
||||||
"refineable",
|
"refineable",
|
||||||
"schemars",
|
"schemars",
|
||||||
@ -9071,6 +9112,22 @@ dependencies = [
|
|||||||
"settings2",
|
"settings2",
|
||||||
"toml 0.5.11",
|
"toml 0.5.11",
|
||||||
"util",
|
"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]]
|
[[package]]
|
||||||
@ -11118,7 +11175,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zed"
|
name = "zed"
|
||||||
version = "0.112.0"
|
version = "0.113.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"activity_indicator",
|
"activity_indicator",
|
||||||
"ai",
|
"ai",
|
||||||
@ -11282,6 +11339,7 @@ dependencies = [
|
|||||||
"fsevent",
|
"fsevent",
|
||||||
"futures 0.3.28",
|
"futures 0.3.28",
|
||||||
"fuzzy",
|
"fuzzy",
|
||||||
|
"go_to_line2",
|
||||||
"gpui2",
|
"gpui2",
|
||||||
"ignore",
|
"ignore",
|
||||||
"image",
|
"image",
|
||||||
|
@ -43,6 +43,7 @@ members = [
|
|||||||
"crates/fuzzy2",
|
"crates/fuzzy2",
|
||||||
"crates/git",
|
"crates/git",
|
||||||
"crates/go_to_line",
|
"crates/go_to_line",
|
||||||
|
"crates/go_to_line2",
|
||||||
"crates/gpui",
|
"crates/gpui",
|
||||||
"crates/gpui_macros",
|
"crates/gpui_macros",
|
||||||
"crates/gpui2",
|
"crates/gpui2",
|
||||||
@ -68,6 +69,7 @@ members = [
|
|||||||
"crates/notifications",
|
"crates/notifications",
|
||||||
"crates/outline",
|
"crates/outline",
|
||||||
"crates/picker",
|
"crates/picker",
|
||||||
|
"crates/picker2",
|
||||||
"crates/plugin",
|
"crates/plugin",
|
||||||
"crates/plugin_macros",
|
"crates/plugin_macros",
|
||||||
"crates/plugin_runtime",
|
"crates/plugin_runtime",
|
||||||
@ -95,6 +97,7 @@ members = [
|
|||||||
"crates/text",
|
"crates/text",
|
||||||
"crates/theme",
|
"crates/theme",
|
||||||
"crates/theme2",
|
"crates/theme2",
|
||||||
|
"crates/theme_importer",
|
||||||
"crates/theme_selector",
|
"crates/theme_selector",
|
||||||
"crates/ui2",
|
"crates/ui2",
|
||||||
"crates/util",
|
"crates/util",
|
||||||
|
7
assets/themes/src/vscode/andromeda/LICENSE
Normal file
7
assets/themes/src/vscode/andromeda/LICENSE
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
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.
|
369
assets/themes/src/vscode/andromeda/andromeda-bordered.json
Normal file
369
assets/themes/src/vscode/andromeda/andromeda-bordered.json
Normal file
@ -0,0 +1,369 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
367
assets/themes/src/vscode/andromeda/andromeda.json
Normal file
367
assets/themes/src/vscode/andromeda/andromeda.json
Normal file
@ -0,0 +1,367 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
16
assets/themes/src/vscode/andromeda/family.json
Normal file
16
assets/themes/src/vscode/andromeda/family.json
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
21
assets/themes/src/vscode/ayu/LICENSE
Normal file
21
assets/themes/src/vscode/ayu/LICENSE
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
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.
|
847
assets/themes/src/vscode/ayu/ayu-dark.json
Normal file
847
assets/themes/src/vscode/ayu/ayu-dark.json
Normal file
@ -0,0 +1,847 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
}
|
847
assets/themes/src/vscode/ayu/ayu-light.json
Normal file
847
assets/themes/src/vscode/ayu/ayu-light.json
Normal file
@ -0,0 +1,847 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
}
|
847
assets/themes/src/vscode/ayu/ayu-mirage.json
Normal file
847
assets/themes/src/vscode/ayu/ayu-mirage.json
Normal file
@ -0,0 +1,847 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
}
|
21
assets/themes/src/vscode/ayu/family.json
Normal file
21
assets/themes/src/vscode/ayu/family.json
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
21
assets/themes/src/vscode/dracula/LICENSE
Normal file
21
assets/themes/src/vscode/dracula/LICENSE
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
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.
|
1067
assets/themes/src/vscode/dracula/dracula.json
Normal file
1067
assets/themes/src/vscode/dracula/dracula.json
Normal file
File diff suppressed because it is too large
Load Diff
11
assets/themes/src/vscode/dracula/family.json
Normal file
11
assets/themes/src/vscode/dracula/family.json
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "Dracula",
|
||||||
|
"author": "Zeno Rocha",
|
||||||
|
"themes": [
|
||||||
|
{
|
||||||
|
"name": "Dracula",
|
||||||
|
"file_name": "dracula.json",
|
||||||
|
"appearance": "dark"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
1
assets/themes/src/vscode/gruvbox/LICENSE
Normal file
1
assets/themes/src/vscode/gruvbox/LICENSE
Normal file
@ -0,0 +1 @@
|
|||||||
|
MIT/X11
|
36
assets/themes/src/vscode/gruvbox/family.json
Normal file
36
assets/themes/src/vscode/gruvbox/family.json
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
1074
assets/themes/src/vscode/gruvbox/gruvbox-dark-hard.json
Normal file
1074
assets/themes/src/vscode/gruvbox/gruvbox-dark-hard.json
Normal file
File diff suppressed because it is too large
Load Diff
1074
assets/themes/src/vscode/gruvbox/gruvbox-dark-medium.json
Normal file
1074
assets/themes/src/vscode/gruvbox/gruvbox-dark-medium.json
Normal file
File diff suppressed because it is too large
Load Diff
1074
assets/themes/src/vscode/gruvbox/gruvbox-dark-soft.json
Normal file
1074
assets/themes/src/vscode/gruvbox/gruvbox-dark-soft.json
Normal file
File diff suppressed because it is too large
Load Diff
1073
assets/themes/src/vscode/gruvbox/gruvbox-light-hard.json
Normal file
1073
assets/themes/src/vscode/gruvbox/gruvbox-light-hard.json
Normal file
File diff suppressed because it is too large
Load Diff
1073
assets/themes/src/vscode/gruvbox/gruvbox-light-medium.json
Normal file
1073
assets/themes/src/vscode/gruvbox/gruvbox-light-medium.json
Normal file
File diff suppressed because it is too large
Load Diff
1073
assets/themes/src/vscode/gruvbox/gruvbox-light-soft.json
Normal file
1073
assets/themes/src/vscode/gruvbox/gruvbox-light-soft.json
Normal file
File diff suppressed because it is too large
Load Diff
21
assets/themes/src/vscode/night-owl/LICENSE
Normal file
21
assets/themes/src/vscode/night-owl/LICENSE
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
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.
|
16
assets/themes/src/vscode/night-owl/family.json
Normal file
16
assets/themes/src/vscode/night-owl/family.json
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
1723
assets/themes/src/vscode/night-owl/night-owl-light.json
Normal file
1723
assets/themes/src/vscode/night-owl/night-owl-light.json
Normal file
File diff suppressed because it is too large
Load Diff
1832
assets/themes/src/vscode/night-owl/night-owl.json
Normal file
1832
assets/themes/src/vscode/night-owl/night-owl.json
Normal file
File diff suppressed because it is too large
Load Diff
9
assets/themes/src/vscode/noctis/LICENSE
Normal file
9
assets/themes/src/vscode/noctis/LICENSE
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
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.
|
1113
assets/themes/src/vscode/noctis/azureus.json
Normal file
1113
assets/themes/src/vscode/noctis/azureus.json
Normal file
File diff suppressed because it is too large
Load Diff
1112
assets/themes/src/vscode/noctis/bordo.json
Normal file
1112
assets/themes/src/vscode/noctis/bordo.json
Normal file
File diff suppressed because it is too large
Load Diff
61
assets/themes/src/vscode/noctis/family.json
Normal file
61
assets/themes/src/vscode/noctis/family.json
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
1108
assets/themes/src/vscode/noctis/hibernus.json
Normal file
1108
assets/themes/src/vscode/noctis/hibernus.json
Normal file
File diff suppressed because it is too large
Load Diff
1113
assets/themes/src/vscode/noctis/lilac.json
Normal file
1113
assets/themes/src/vscode/noctis/lilac.json
Normal file
File diff suppressed because it is too large
Load Diff
1108
assets/themes/src/vscode/noctis/lux.json
Normal file
1108
assets/themes/src/vscode/noctis/lux.json
Normal file
File diff suppressed because it is too large
Load Diff
1113
assets/themes/src/vscode/noctis/minimus.json
Normal file
1113
assets/themes/src/vscode/noctis/minimus.json
Normal file
File diff suppressed because it is too large
Load Diff
1108
assets/themes/src/vscode/noctis/noctis.json
Normal file
1108
assets/themes/src/vscode/noctis/noctis.json
Normal file
File diff suppressed because it is too large
Load Diff
1108
assets/themes/src/vscode/noctis/obscuro.json
Normal file
1108
assets/themes/src/vscode/noctis/obscuro.json
Normal file
File diff suppressed because it is too large
Load Diff
1108
assets/themes/src/vscode/noctis/sereno.json
Normal file
1108
assets/themes/src/vscode/noctis/sereno.json
Normal file
File diff suppressed because it is too large
Load Diff
1112
assets/themes/src/vscode/noctis/uva.json
Normal file
1112
assets/themes/src/vscode/noctis/uva.json
Normal file
File diff suppressed because it is too large
Load Diff
1112
assets/themes/src/vscode/noctis/viola.json
Normal file
1112
assets/themes/src/vscode/noctis/viola.json
Normal file
File diff suppressed because it is too large
Load Diff
21
assets/themes/src/vscode/nord/LICENSE
Normal file
21
assets/themes/src/vscode/nord/LICENSE
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
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.
|
11
assets/themes/src/vscode/nord/family.json
Normal file
11
assets/themes/src/vscode/nord/family.json
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "Nord",
|
||||||
|
"author": "Sven Greb (svengreb)",
|
||||||
|
"themes": [
|
||||||
|
{
|
||||||
|
"name": "Nord",
|
||||||
|
"file_name": "nord.json",
|
||||||
|
"appearance": "dark"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
1368
assets/themes/src/vscode/nord/nord.json
Normal file
1368
assets/themes/src/vscode/nord/nord.json
Normal file
File diff suppressed because it is too large
Load Diff
7
assets/themes/src/vscode/palenight/LICENSE
Normal file
7
assets/themes/src/vscode/palenight/LICENSE
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
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.
|
21
assets/themes/src/vscode/palenight/family.json
Normal file
21
assets/themes/src/vscode/palenight/family.json
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
1569
assets/themes/src/vscode/palenight/palenight-mild-contrast.json
Normal file
1569
assets/themes/src/vscode/palenight/palenight-mild-contrast.json
Normal file
File diff suppressed because it is too large
Load Diff
1640
assets/themes/src/vscode/palenight/palenight-operator.json
Normal file
1640
assets/themes/src/vscode/palenight/palenight-operator.json
Normal file
File diff suppressed because it is too large
Load Diff
1569
assets/themes/src/vscode/palenight/palenight.json
Normal file
1569
assets/themes/src/vscode/palenight/palenight.json
Normal file
File diff suppressed because it is too large
Load Diff
21
assets/themes/src/vscode/rose-pine/LICENSE
Normal file
21
assets/themes/src/vscode/rose-pine/LICENSE
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
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.
|
21
assets/themes/src/vscode/rose-pine/family.json
Normal file
21
assets/themes/src/vscode/rose-pine/family.json
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
680
assets/themes/src/vscode/rose-pine/rose-pine-dawn.json
Normal file
680
assets/themes/src/vscode/rose-pine/rose-pine-dawn.json
Normal file
@ -0,0 +1,680 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
680
assets/themes/src/vscode/rose-pine/rose-pine-moon.json
Normal file
680
assets/themes/src/vscode/rose-pine/rose-pine-moon.json
Normal file
@ -0,0 +1,680 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
680
assets/themes/src/vscode/rose-pine/rose-pine.json
Normal file
680
assets/themes/src/vscode/rose-pine/rose-pine.json
Normal file
@ -0,0 +1,680 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
19
assets/themes/src/vscode/solarized/LICENSE
Normal file
19
assets/themes/src/vscode/solarized/LICENSE
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
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.
|
558
assets/themes/src/vscode/solarized/dark.json
Normal file
558
assets/themes/src/vscode/solarized/dark.json
Normal file
@ -0,0 +1,558 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
16
assets/themes/src/vscode/solarized/family.json
Normal file
16
assets/themes/src/vscode/solarized/family.json
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
591
assets/themes/src/vscode/solarized/light.json
Normal file
591
assets/themes/src/vscode/solarized/light.json
Normal file
@ -0,0 +1,591 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
21
assets/themes/src/vscode/synthwave-84/LICENSE
Normal file
21
assets/themes/src/vscode/synthwave-84/LICENSE
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
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.
|
11
assets/themes/src/vscode/synthwave-84/family.json
Normal file
11
assets/themes/src/vscode/synthwave-84/family.json
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "Synthwave 84",
|
||||||
|
"author": "Robb Owen (robb0wen)",
|
||||||
|
"themes": [
|
||||||
|
{
|
||||||
|
"name": "Synthwave 84",
|
||||||
|
"file_name": "synthwave.json",
|
||||||
|
"appearance": "dark"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
822
assets/themes/src/vscode/synthwave-84/synthwave.json
Normal file
822
assets/themes/src/vscode/synthwave-84/synthwave.json
Normal file
@ -0,0 +1,822 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -15,8 +15,8 @@ use futures::{
|
|||||||
TryStreamExt,
|
TryStreamExt,
|
||||||
};
|
};
|
||||||
use gpui::{
|
use gpui::{
|
||||||
serde_json, AnyModel, AnyWeakModel, AppContext, AsyncAppContext, Model, SemanticVersion, Task,
|
actions, serde_json, AnyModel, AnyWeakModel, AppContext, AsyncAppContext, Model,
|
||||||
WeakModel,
|
SemanticVersion, Task, WeakModel,
|
||||||
};
|
};
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
use parking_lot::RwLock;
|
use parking_lot::RwLock;
|
||||||
@ -70,14 +70,7 @@ pub const ZED_SECRET_CLIENT_TOKEN: &str = "618033988749894";
|
|||||||
pub const INITIAL_RECONNECTION_DELAY: Duration = Duration::from_millis(100);
|
pub const INITIAL_RECONNECTION_DELAY: Duration = Duration::from_millis(100);
|
||||||
pub const CONNECTION_TIMEOUT: Duration = Duration::from_secs(5);
|
pub const CONNECTION_TIMEOUT: Duration = Duration::from_secs(5);
|
||||||
|
|
||||||
#[derive(Clone, Default, PartialEq, Deserialize)]
|
actions!(SignIn, SignOut, Reconnect);
|
||||||
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) {
|
pub fn init_settings(cx: &mut AppContext) {
|
||||||
TelemetrySettings::register(cx);
|
TelemetrySettings::register(cx);
|
||||||
@ -87,7 +80,6 @@ pub fn init(client: &Arc<Client>, cx: &mut AppContext) {
|
|||||||
init_settings(cx);
|
init_settings(cx);
|
||||||
|
|
||||||
let client = Arc::downgrade(client);
|
let client = Arc::downgrade(client);
|
||||||
cx.register_action_type::<SignIn>();
|
|
||||||
cx.on_action({
|
cx.on_action({
|
||||||
let client = client.clone();
|
let client = client.clone();
|
||||||
move |_: &SignIn, cx| {
|
move |_: &SignIn, cx| {
|
||||||
@ -100,7 +92,6 @@ pub fn init(client: &Arc<Client>, cx: &mut AppContext) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
cx.register_action_type::<SignOut>();
|
|
||||||
cx.on_action({
|
cx.on_action({
|
||||||
let client = client.clone();
|
let client = client.clone();
|
||||||
move |_: &SignOut, cx| {
|
move |_: &SignOut, cx| {
|
||||||
@ -113,7 +104,6 @@ pub fn init(client: &Arc<Client>, cx: &mut AppContext) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
cx.register_action_type::<Reconnect>();
|
|
||||||
cx.on_action({
|
cx.on_action({
|
||||||
let client = client.clone();
|
let client = client.clone();
|
||||||
move |_: &Reconnect, cx| {
|
move |_: &Reconnect, cx| {
|
||||||
|
@ -7,8 +7,8 @@ use async_tar::Archive;
|
|||||||
use collections::{HashMap, HashSet};
|
use collections::{HashMap, HashSet};
|
||||||
use futures::{channel::oneshot, future::Shared, Future, FutureExt, TryFutureExt};
|
use futures::{channel::oneshot, future::Shared, Future, FutureExt, TryFutureExt};
|
||||||
use gpui::{
|
use gpui::{
|
||||||
AppContext, AsyncAppContext, Context, Entity, EntityId, EventEmitter, Model, ModelContext,
|
actions, AppContext, AsyncAppContext, Context, Entity, EntityId, EventEmitter, Model,
|
||||||
Task, WeakModel,
|
ModelContext, Task, WeakModel,
|
||||||
};
|
};
|
||||||
use language::{
|
use language::{
|
||||||
language_settings::{all_language_settings, language_settings},
|
language_settings::{all_language_settings, language_settings},
|
||||||
@ -34,19 +34,11 @@ use util::{
|
|||||||
|
|
||||||
// todo!()
|
// todo!()
|
||||||
// const COPILOT_AUTH_NAMESPACE: &'static str = "copilot_auth";
|
// const COPILOT_AUTH_NAMESPACE: &'static str = "copilot_auth";
|
||||||
// actions!(copilot_auth, [SignIn, SignOut]);
|
actions!(SignIn, SignOut);
|
||||||
|
|
||||||
// todo!()
|
// todo!()
|
||||||
// const COPILOT_NAMESPACE: &'static str = "copilot";
|
// const COPILOT_NAMESPACE: &'static str = "copilot";
|
||||||
// actions!(
|
actions!(Suggest, NextSuggestion, PreviousSuggestion, Reinstall);
|
||||||
// copilot,
|
|
||||||
// [Suggest, NextSuggestion, PreviousSuggestion, Reinstall]
|
|
||||||
// );
|
|
||||||
//
|
|
||||||
pub struct Suggest;
|
|
||||||
pub struct NextSuggestion;
|
|
||||||
pub struct PreviousSuggestion;
|
|
||||||
pub struct Reinstall;
|
|
||||||
|
|
||||||
pub fn init(
|
pub fn init(
|
||||||
new_server_id: LanguageServerId,
|
new_server_id: LanguageServerId,
|
||||||
|
@ -31,7 +31,7 @@ drag_and_drop = { path = "../drag_and_drop" }
|
|||||||
collections = { path = "../collections" }
|
collections = { path = "../collections" }
|
||||||
# context_menu = { path = "../context_menu" }
|
# context_menu = { path = "../context_menu" }
|
||||||
fuzzy = { package = "fuzzy2", path = "../fuzzy2" }
|
fuzzy = { package = "fuzzy2", path = "../fuzzy2" }
|
||||||
git = { path = "../git" }
|
git = { package = "git3", path = "../git3" }
|
||||||
gpui = { package = "gpui2", path = "../gpui2" }
|
gpui = { package = "gpui2", path = "../gpui2" }
|
||||||
language = { package = "language2", path = "../language2" }
|
language = { package = "language2", path = "../language2" }
|
||||||
lsp = { package = "lsp2", path = "../lsp2" }
|
lsp = { package = "lsp2", path = "../lsp2" }
|
||||||
|
@ -4,6 +4,7 @@ mod inlay_map;
|
|||||||
mod tab_map;
|
mod tab_map;
|
||||||
mod wrap_map;
|
mod wrap_map;
|
||||||
|
|
||||||
|
use crate::EditorStyle;
|
||||||
use crate::{
|
use crate::{
|
||||||
link_go_to_definition::InlayHighlight, movement::TextLayoutDetails, Anchor, AnchorRangeExt,
|
link_go_to_definition::InlayHighlight, movement::TextLayoutDetails, Anchor, AnchorRangeExt,
|
||||||
InlayId, MultiBuffer, MultiBufferSnapshot, ToOffset, ToPoint,
|
InlayId, MultiBuffer, MultiBufferSnapshot, ToOffset, ToPoint,
|
||||||
@ -11,14 +12,18 @@ use crate::{
|
|||||||
pub use block_map::{BlockMap, BlockPoint};
|
pub use block_map::{BlockMap, BlockPoint};
|
||||||
use collections::{BTreeMap, HashMap, HashSet};
|
use collections::{BTreeMap, HashMap, HashSet};
|
||||||
use fold_map::FoldMap;
|
use fold_map::FoldMap;
|
||||||
use gpui::{Font, FontId, HighlightStyle, Hsla, Line, Model, ModelContext, Pixels};
|
use gpui::{
|
||||||
|
Font, FontId, HighlightStyle, Hsla, Line, Model, ModelContext, Pixels, TextRun, UnderlineStyle,
|
||||||
|
};
|
||||||
use inlay_map::InlayMap;
|
use inlay_map::InlayMap;
|
||||||
use language::{
|
use language::{
|
||||||
language_settings::language_settings, OffsetUtf16, Point, Subscription as BufferSubscription,
|
language_settings::language_settings, OffsetUtf16, Point, Subscription as BufferSubscription,
|
||||||
};
|
};
|
||||||
|
use lsp::DiagnosticSeverity;
|
||||||
use std::{any::TypeId, borrow::Cow, fmt::Debug, num::NonZeroU32, ops::Range, sync::Arc};
|
use std::{any::TypeId, borrow::Cow, fmt::Debug, num::NonZeroU32, ops::Range, sync::Arc};
|
||||||
use sum_tree::{Bias, TreeMap};
|
use sum_tree::{Bias, TreeMap};
|
||||||
use tab_map::TabMap;
|
use tab_map::TabMap;
|
||||||
|
use theme::{SyntaxTheme, Theme};
|
||||||
use wrap_map::WrapMap;
|
use wrap_map::WrapMap;
|
||||||
|
|
||||||
pub use block_map::{
|
pub use block_map::{
|
||||||
@ -35,6 +40,8 @@ pub enum FoldStatus {
|
|||||||
Foldable,
|
Foldable,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const UNNECESSARY_CODE_FADE: f32 = 0.3;
|
||||||
|
|
||||||
pub trait ToDisplayPoint {
|
pub trait ToDisplayPoint {
|
||||||
fn to_display_point(&self, map: &DisplaySnapshot) -> DisplayPoint;
|
fn to_display_point(&self, map: &DisplaySnapshot) -> DisplayPoint;
|
||||||
}
|
}
|
||||||
@ -496,63 +503,63 @@ impl DisplaySnapshot {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// pub fn highlighted_chunks<'a>(
|
pub fn highlighted_chunks<'a>(
|
||||||
// &'a self,
|
&'a self,
|
||||||
// display_rows: Range<u32>,
|
display_rows: Range<u32>,
|
||||||
// language_aware: bool,
|
language_aware: bool,
|
||||||
// style: &'a EditorStyle,
|
editor_style: &'a EditorStyle,
|
||||||
// ) -> impl Iterator<Item = HighlightedChunk<'a>> {
|
) -> impl Iterator<Item = HighlightedChunk<'a>> {
|
||||||
// self.chunks(
|
self.chunks(
|
||||||
// display_rows,
|
display_rows,
|
||||||
// language_aware,
|
language_aware,
|
||||||
// Some(style.theme.hint),
|
Some(editor_style.syntax.inlay_style),
|
||||||
// Some(style.theme.suggestion),
|
Some(editor_style.syntax.suggestion_style),
|
||||||
// )
|
)
|
||||||
// .map(|chunk| {
|
.map(|chunk| {
|
||||||
// let mut highlight_style = chunk
|
let mut highlight_style = chunk
|
||||||
// .syntax_highlight_id
|
.syntax_highlight_id
|
||||||
// .and_then(|id| id.style(&style.syntax));
|
.and_then(|id| id.style(&editor_style.syntax));
|
||||||
|
|
||||||
// if let Some(chunk_highlight) = chunk.highlight_style {
|
if let Some(chunk_highlight) = chunk.highlight_style {
|
||||||
// if let Some(highlight_style) = highlight_style.as_mut() {
|
if let Some(highlight_style) = highlight_style.as_mut() {
|
||||||
// highlight_style.highlight(chunk_highlight);
|
highlight_style.highlight(chunk_highlight);
|
||||||
// } else {
|
} else {
|
||||||
// highlight_style = Some(chunk_highlight);
|
highlight_style = Some(chunk_highlight);
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
|
|
||||||
// let mut diagnostic_highlight = HighlightStyle::default();
|
let mut diagnostic_highlight = HighlightStyle::default();
|
||||||
|
|
||||||
// if chunk.is_unnecessary {
|
if chunk.is_unnecessary {
|
||||||
// diagnostic_highlight.fade_out = Some(style.unnecessary_code_fade);
|
diagnostic_highlight.fade_out = Some(UNNECESSARY_CODE_FADE);
|
||||||
// }
|
}
|
||||||
|
|
||||||
// if let Some(severity) = chunk.diagnostic_severity {
|
if let Some(severity) = chunk.diagnostic_severity {
|
||||||
// // Omit underlines for HINT/INFO diagnostics on 'unnecessary' code.
|
// Omit underlines for HINT/INFO diagnostics on 'unnecessary' code.
|
||||||
// if severity <= DiagnosticSeverity::WARNING || !chunk.is_unnecessary {
|
if severity <= DiagnosticSeverity::WARNING || !chunk.is_unnecessary {
|
||||||
// todo!()
|
let diagnostic_color =
|
||||||
// // let diagnostic_style = super::diagnostic_style(severity, true, style);
|
super::diagnostic_style(severity, true, &editor_style.diagnostic_style);
|
||||||
// // diagnostic_highlight.underline = Some(UnderlineStyle {
|
diagnostic_highlight.underline = Some(UnderlineStyle {
|
||||||
// // color: Some(diagnostic_style.message.text.color),
|
color: Some(diagnostic_color),
|
||||||
// // thickness: 1.0.into(),
|
thickness: 1.0.into(),
|
||||||
// // wavy: true,
|
wavy: true,
|
||||||
// // });
|
});
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
|
|
||||||
// if let Some(highlight_style) = highlight_style.as_mut() {
|
if let Some(highlight_style) = highlight_style.as_mut() {
|
||||||
// highlight_style.highlight(diagnostic_highlight);
|
highlight_style.highlight(diagnostic_highlight);
|
||||||
// } else {
|
} else {
|
||||||
// highlight_style = Some(diagnostic_highlight);
|
highlight_style = Some(diagnostic_highlight);
|
||||||
// }
|
}
|
||||||
|
|
||||||
// HighlightedChunk {
|
HighlightedChunk {
|
||||||
// chunk: chunk.text,
|
chunk: chunk.text,
|
||||||
// style: highlight_style,
|
style: highlight_style,
|
||||||
// is_tab: chunk.is_tab,
|
is_tab: chunk.is_tab,
|
||||||
// }
|
}
|
||||||
// })
|
})
|
||||||
// }
|
}
|
||||||
|
|
||||||
pub fn lay_out_line_for_row(
|
pub fn lay_out_line_for_row(
|
||||||
&self,
|
&self,
|
||||||
@ -560,53 +567,46 @@ impl DisplaySnapshot {
|
|||||||
TextLayoutDetails {
|
TextLayoutDetails {
|
||||||
text_system,
|
text_system,
|
||||||
editor_style,
|
editor_style,
|
||||||
|
rem_size,
|
||||||
}: &TextLayoutDetails,
|
}: &TextLayoutDetails,
|
||||||
) -> Line {
|
) -> Line {
|
||||||
todo!()
|
let mut runs = Vec::new();
|
||||||
// let mut styles = Vec::new();
|
let mut line = String::new();
|
||||||
// let mut line = String::new();
|
let mut ended_in_newline = false;
|
||||||
// let mut ended_in_newline = false;
|
|
||||||
|
|
||||||
// let range = display_row..display_row + 1;
|
let range = display_row..display_row + 1;
|
||||||
// for chunk in self.highlighted_chunks(range, false, editor_style) {
|
for chunk in self.highlighted_chunks(range, false, &editor_style) {
|
||||||
// line.push_str(chunk.chunk);
|
line.push_str(chunk.chunk);
|
||||||
|
|
||||||
// let text_style = if let Some(style) = chunk.style {
|
let text_style = if let Some(style) = chunk.style {
|
||||||
// editor_style
|
editor_style
|
||||||
// .text
|
.text
|
||||||
// .clone()
|
.clone()
|
||||||
// .highlight(style, text_system)
|
.highlight(style)
|
||||||
// .map(Cow::Owned)
|
.map(Cow::Owned)
|
||||||
// .unwrap_or_else(|_| Cow::Borrowed(&editor_style.text))
|
.unwrap_or_else(|_| Cow::Borrowed(&editor_style.text))
|
||||||
// } else {
|
} else {
|
||||||
// Cow::Borrowed(&editor_style.text)
|
Cow::Borrowed(&editor_style.text)
|
||||||
// };
|
};
|
||||||
// ended_in_newline = chunk.chunk.ends_with("\n");
|
ended_in_newline = chunk.chunk.ends_with("\n");
|
||||||
|
|
||||||
// styles.push(
|
runs.push(text_style.to_run(chunk.chunk.len()))
|
||||||
// todo!(), // len: chunk.chunk.len(),
|
}
|
||||||
// // font_id: text_style.font_id,
|
|
||||||
// // color: text_style.color,
|
|
||||||
// // underline: text_style.underline,
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // our pixel positioning logic assumes each line ends in \n,
|
// our pixel positioning logic assumes each line ends in \n,
|
||||||
// // this is almost always true except for the last line which
|
// this is almost always true except for the last line which
|
||||||
// // may have no trailing newline.
|
// may have no trailing newline.
|
||||||
// if !ended_in_newline && display_row == self.max_point().row() {
|
if !ended_in_newline && display_row == self.max_point().row() {
|
||||||
// line.push_str("\n");
|
line.push_str("\n");
|
||||||
|
runs.push(editor_style.text.to_run("\n".len()));
|
||||||
|
}
|
||||||
|
|
||||||
// todo!();
|
let font_size = editor_style.text.font_size.to_pixels(*rem_size);
|
||||||
// // styles.push(RunStyle {
|
text_system
|
||||||
// // len: "\n".len(),
|
.layout_text(&line, font_size, &runs, None)
|
||||||
// // font_id: editor_style.text.font_id,
|
.unwrap()
|
||||||
// // color: editor_style.text_color,
|
.pop()
|
||||||
// // underline: editor_style.text.underline,
|
.unwrap()
|
||||||
// // });
|
|
||||||
// }
|
|
||||||
|
|
||||||
// text_system.layout_text(&line, editor_style.text.font_size, &styles, None)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn x_for_point(
|
pub fn x_for_point(
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -24,7 +24,7 @@ pub fn refresh_matching_bracket_highlights(editor: &mut Editor, cx: &mut ViewCon
|
|||||||
opening_range.to_anchors(&snapshot.buffer_snapshot),
|
opening_range.to_anchors(&snapshot.buffer_snapshot),
|
||||||
closing_range.to_anchors(&snapshot.buffer_snapshot),
|
closing_range.to_anchors(&snapshot.buffer_snapshot),
|
||||||
],
|
],
|
||||||
|theme| todo!("theme.editor.document_highlight_read_background"),
|
|theme| theme.editor_document_highlight_read_background,
|
||||||
cx,
|
cx,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -144,8 +144,7 @@ pub fn hide_hover(editor: &mut Editor, cx: &mut ViewContext<Editor>) -> bool {
|
|||||||
editor.hover_state.info_task = None;
|
editor.hover_state.info_task = None;
|
||||||
editor.hover_state.triggered_from = None;
|
editor.hover_state.triggered_from = None;
|
||||||
|
|
||||||
// todo!()
|
editor.clear_background_highlights::<HoverState>(cx);
|
||||||
// editor.clear_background_highlights::<HoverState>(cx);
|
|
||||||
|
|
||||||
if did_hide {
|
if did_hide {
|
||||||
cx.notify();
|
cx.notify();
|
||||||
@ -325,23 +324,22 @@ fn show_hover(
|
|||||||
};
|
};
|
||||||
|
|
||||||
this.update(&mut cx, |this, cx| {
|
this.update(&mut cx, |this, cx| {
|
||||||
todo!();
|
if let Some(symbol_range) = hover_popover
|
||||||
// if let Some(symbol_range) = hover_popover
|
.as_ref()
|
||||||
// .as_ref()
|
.and_then(|hover_popover| hover_popover.symbol_range.as_text_range())
|
||||||
// .and_then(|hover_popover| hover_popover.symbol_range.as_text_range())
|
{
|
||||||
// {
|
// Highlight the selected symbol using a background highlight
|
||||||
// // Highlight the selected symbol using a background highlight
|
this.highlight_background::<HoverState>(
|
||||||
// this.highlight_background::<HoverState>(
|
vec![symbol_range],
|
||||||
// vec![symbol_range],
|
|theme| theme.element_hover, // todo! update theme
|
||||||
// |theme| theme.editor.hover_popover.highlight,
|
cx,
|
||||||
// cx,
|
);
|
||||||
// );
|
} else {
|
||||||
// } else {
|
this.clear_background_highlights::<HoverState>(cx);
|
||||||
// this.clear_background_highlights::<HoverState>(cx);
|
}
|
||||||
// }
|
|
||||||
//
|
this.hover_state.info_popover = hover_popover;
|
||||||
// this.hover_state.info_popover = hover_popover;
|
cx.notify();
|
||||||
// cx.notify();
|
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
Ok::<_, anyhow::Error>(())
|
Ok::<_, anyhow::Error>(())
|
||||||
|
@ -27,7 +27,7 @@ use std::{
|
|||||||
sync::Arc,
|
sync::Arc,
|
||||||
};
|
};
|
||||||
use text::Selection;
|
use text::Selection;
|
||||||
use theme::{ActiveTheme, ThemeVariant};
|
use theme::{ActiveTheme, Theme};
|
||||||
use util::{paths::PathExt, ResultExt, TryFutureExt};
|
use util::{paths::PathExt, ResultExt, TryFutureExt};
|
||||||
use workspace::item::{BreadcrumbText, FollowableItemHandle};
|
use workspace::item::{BreadcrumbText, FollowableItemHandle};
|
||||||
use workspace::{
|
use workspace::{
|
||||||
@ -159,16 +159,14 @@ impl FollowableItem for Editor {
|
|||||||
self.buffer.update(cx, |buffer, cx| {
|
self.buffer.update(cx, |buffer, cx| {
|
||||||
buffer.remove_active_selections(cx);
|
buffer.remove_active_selections(cx);
|
||||||
});
|
});
|
||||||
} else {
|
} else if self.focus_handle.is_focused(cx) {
|
||||||
self.buffer.update(cx, |buffer, cx| {
|
self.buffer.update(cx, |buffer, cx| {
|
||||||
if self.focused {
|
buffer.set_active_selections(
|
||||||
buffer.set_active_selections(
|
&self.selections.disjoint_anchors(),
|
||||||
&self.selections.disjoint_anchors(),
|
self.selections.line_mode,
|
||||||
self.selections.line_mode,
|
self.cursor_shape,
|
||||||
self.cursor_shape,
|
cx,
|
||||||
cx,
|
);
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
cx.notify();
|
cx.notify();
|
||||||
@ -779,7 +777,7 @@ impl Item for Editor {
|
|||||||
ToolbarItemLocation::PrimaryLeft { flex: None }
|
ToolbarItemLocation::PrimaryLeft { flex: None }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn breadcrumbs(&self, variant: &ThemeVariant, cx: &AppContext) -> Option<Vec<BreadcrumbText>> {
|
fn breadcrumbs(&self, variant: &Theme, cx: &AppContext) -> Option<Vec<BreadcrumbText>> {
|
||||||
todo!();
|
todo!();
|
||||||
// let cursor = self.selections.newest_anchor().head();
|
// let cursor = self.selections.newest_anchor().head();
|
||||||
// let multibuffer = &self.buffer().read(cx);
|
// let multibuffer = &self.buffer().read(cx);
|
||||||
|
@ -171,173 +171,170 @@ pub fn update_inlay_link_and_hover_points(
|
|||||||
shift_held: bool,
|
shift_held: bool,
|
||||||
cx: &mut ViewContext<'_, Editor>,
|
cx: &mut ViewContext<'_, Editor>,
|
||||||
) {
|
) {
|
||||||
todo!("old implementation below")
|
let hovered_offset = if point_for_position.column_overshoot_after_line_end == 0 {
|
||||||
}
|
Some(snapshot.display_point_to_inlay_offset(point_for_position.exact_unclipped, Bias::Left))
|
||||||
// ) {
|
} else {
|
||||||
// let hovered_offset = if point_for_position.column_overshoot_after_line_end == 0 {
|
None
|
||||||
// Some(snapshot.display_point_to_inlay_offset(point_for_position.exact_unclipped, Bias::Left))
|
};
|
||||||
// } else {
|
let mut go_to_definition_updated = false;
|
||||||
// None
|
let mut hover_updated = false;
|
||||||
// };
|
if let Some(hovered_offset) = hovered_offset {
|
||||||
// let mut go_to_definition_updated = false;
|
let buffer_snapshot = editor.buffer().read(cx).snapshot(cx);
|
||||||
// let mut hover_updated = false;
|
let previous_valid_anchor = buffer_snapshot.anchor_at(
|
||||||
// if let Some(hovered_offset) = hovered_offset {
|
point_for_position.previous_valid.to_point(snapshot),
|
||||||
// let buffer_snapshot = editor.buffer().read(cx).snapshot(cx);
|
Bias::Left,
|
||||||
// let previous_valid_anchor = buffer_snapshot.anchor_at(
|
);
|
||||||
// point_for_position.previous_valid.to_point(snapshot),
|
let next_valid_anchor = buffer_snapshot.anchor_at(
|
||||||
// Bias::Left,
|
point_for_position.next_valid.to_point(snapshot),
|
||||||
// );
|
Bias::Right,
|
||||||
// let next_valid_anchor = buffer_snapshot.anchor_at(
|
);
|
||||||
// point_for_position.next_valid.to_point(snapshot),
|
if let Some(hovered_hint) = editor
|
||||||
// Bias::Right,
|
.visible_inlay_hints(cx)
|
||||||
// );
|
.into_iter()
|
||||||
// if let Some(hovered_hint) = editor
|
.skip_while(|hint| {
|
||||||
// .visible_inlay_hints(cx)
|
hint.position
|
||||||
// .into_iter()
|
.cmp(&previous_valid_anchor, &buffer_snapshot)
|
||||||
// .skip_while(|hint| {
|
.is_lt()
|
||||||
// hint.position
|
})
|
||||||
// .cmp(&previous_valid_anchor, &buffer_snapshot)
|
.take_while(|hint| {
|
||||||
// .is_lt()
|
hint.position
|
||||||
// })
|
.cmp(&next_valid_anchor, &buffer_snapshot)
|
||||||
// .take_while(|hint| {
|
.is_le()
|
||||||
// hint.position
|
})
|
||||||
// .cmp(&next_valid_anchor, &buffer_snapshot)
|
.max_by_key(|hint| hint.id)
|
||||||
// .is_le()
|
{
|
||||||
// })
|
let inlay_hint_cache = editor.inlay_hint_cache();
|
||||||
// .max_by_key(|hint| hint.id)
|
let excerpt_id = previous_valid_anchor.excerpt_id;
|
||||||
// {
|
if let Some(cached_hint) = inlay_hint_cache.hint_by_id(excerpt_id, hovered_hint.id) {
|
||||||
// let inlay_hint_cache = editor.inlay_hint_cache();
|
match cached_hint.resolve_state {
|
||||||
// let excerpt_id = previous_valid_anchor.excerpt_id;
|
ResolveState::CanResolve(_, _) => {
|
||||||
// if let Some(cached_hint) = inlay_hint_cache.hint_by_id(excerpt_id, hovered_hint.id) {
|
if let Some(buffer_id) = previous_valid_anchor.buffer_id {
|
||||||
// match cached_hint.resolve_state {
|
inlay_hint_cache.spawn_hint_resolve(
|
||||||
// ResolveState::CanResolve(_, _) => {
|
buffer_id,
|
||||||
// if let Some(buffer_id) = previous_valid_anchor.buffer_id {
|
excerpt_id,
|
||||||
// inlay_hint_cache.spawn_hint_resolve(
|
hovered_hint.id,
|
||||||
// buffer_id,
|
cx,
|
||||||
// excerpt_id,
|
);
|
||||||
// hovered_hint.id,
|
}
|
||||||
// cx,
|
}
|
||||||
// );
|
ResolveState::Resolved => {
|
||||||
// }
|
let mut extra_shift_left = 0;
|
||||||
// }
|
let mut extra_shift_right = 0;
|
||||||
// ResolveState::Resolved => {
|
if cached_hint.padding_left {
|
||||||
// let mut extra_shift_left = 0;
|
extra_shift_left += 1;
|
||||||
// let mut extra_shift_right = 0;
|
extra_shift_right += 1;
|
||||||
// if cached_hint.padding_left {
|
}
|
||||||
// extra_shift_left += 1;
|
if cached_hint.padding_right {
|
||||||
// extra_shift_right += 1;
|
extra_shift_right += 1;
|
||||||
// }
|
}
|
||||||
// if cached_hint.padding_right {
|
match cached_hint.label {
|
||||||
// extra_shift_right += 1;
|
project::InlayHintLabel::String(_) => {
|
||||||
// }
|
if let Some(tooltip) = cached_hint.tooltip {
|
||||||
// match cached_hint.label {
|
hover_popover::hover_at_inlay(
|
||||||
// project::InlayHintLabel::String(_) => {
|
editor,
|
||||||
// if let Some(tooltip) = cached_hint.tooltip {
|
InlayHover {
|
||||||
// hover_popover::hover_at_inlay(
|
excerpt: excerpt_id,
|
||||||
// editor,
|
tooltip: match tooltip {
|
||||||
// InlayHover {
|
InlayHintTooltip::String(text) => HoverBlock {
|
||||||
// excerpt: excerpt_id,
|
text,
|
||||||
// tooltip: match tooltip {
|
kind: HoverBlockKind::PlainText,
|
||||||
// InlayHintTooltip::String(text) => HoverBlock {
|
},
|
||||||
// text,
|
InlayHintTooltip::MarkupContent(content) => {
|
||||||
// kind: HoverBlockKind::PlainText,
|
HoverBlock {
|
||||||
// },
|
text: content.value,
|
||||||
// InlayHintTooltip::MarkupContent(content) => {
|
kind: content.kind,
|
||||||
// HoverBlock {
|
}
|
||||||
// text: content.value,
|
}
|
||||||
// kind: content.kind,
|
},
|
||||||
// }
|
range: InlayHighlight {
|
||||||
// }
|
inlay: hovered_hint.id,
|
||||||
// },
|
inlay_position: hovered_hint.position,
|
||||||
// range: InlayHighlight {
|
range: extra_shift_left
|
||||||
// inlay: hovered_hint.id,
|
..hovered_hint.text.len() + extra_shift_right,
|
||||||
// inlay_position: hovered_hint.position,
|
},
|
||||||
// range: extra_shift_left
|
},
|
||||||
// ..hovered_hint.text.len() + extra_shift_right,
|
cx,
|
||||||
// },
|
);
|
||||||
// },
|
hover_updated = true;
|
||||||
// cx,
|
}
|
||||||
// );
|
}
|
||||||
// hover_updated = true;
|
project::InlayHintLabel::LabelParts(label_parts) => {
|
||||||
// }
|
let hint_start =
|
||||||
// }
|
snapshot.anchor_to_inlay_offset(hovered_hint.position);
|
||||||
// project::InlayHintLabel::LabelParts(label_parts) => {
|
if let Some((hovered_hint_part, part_range)) =
|
||||||
// let hint_start =
|
hover_popover::find_hovered_hint_part(
|
||||||
// snapshot.anchor_to_inlay_offset(hovered_hint.position);
|
label_parts,
|
||||||
// if let Some((hovered_hint_part, part_range)) =
|
hint_start,
|
||||||
// hover_popover::find_hovered_hint_part(
|
hovered_offset,
|
||||||
// label_parts,
|
)
|
||||||
// hint_start,
|
{
|
||||||
// hovered_offset,
|
let highlight_start =
|
||||||
// )
|
(part_range.start - hint_start).0 + extra_shift_left;
|
||||||
// {
|
let highlight_end =
|
||||||
// let highlight_start =
|
(part_range.end - hint_start).0 + extra_shift_right;
|
||||||
// (part_range.start - hint_start).0 + extra_shift_left;
|
let highlight = InlayHighlight {
|
||||||
// let highlight_end =
|
inlay: hovered_hint.id,
|
||||||
// (part_range.end - hint_start).0 + extra_shift_right;
|
inlay_position: hovered_hint.position,
|
||||||
// let highlight = InlayHighlight {
|
range: highlight_start..highlight_end,
|
||||||
// inlay: hovered_hint.id,
|
};
|
||||||
// inlay_position: hovered_hint.position,
|
if let Some(tooltip) = hovered_hint_part.tooltip {
|
||||||
// range: highlight_start..highlight_end,
|
hover_popover::hover_at_inlay(
|
||||||
// };
|
editor,
|
||||||
// if let Some(tooltip) = hovered_hint_part.tooltip {
|
InlayHover {
|
||||||
// hover_popover::hover_at_inlay(
|
excerpt: excerpt_id,
|
||||||
// editor,
|
tooltip: match tooltip {
|
||||||
// InlayHover {
|
InlayHintLabelPartTooltip::String(text) => {
|
||||||
// excerpt: excerpt_id,
|
HoverBlock {
|
||||||
// tooltip: match tooltip {
|
text,
|
||||||
// InlayHintLabelPartTooltip::String(text) => {
|
kind: HoverBlockKind::PlainText,
|
||||||
// HoverBlock {
|
}
|
||||||
// text,
|
}
|
||||||
// kind: HoverBlockKind::PlainText,
|
InlayHintLabelPartTooltip::MarkupContent(
|
||||||
// }
|
content,
|
||||||
// }
|
) => HoverBlock {
|
||||||
// InlayHintLabelPartTooltip::MarkupContent(
|
text: content.value,
|
||||||
// content,
|
kind: content.kind,
|
||||||
// ) => HoverBlock {
|
},
|
||||||
// text: content.value,
|
},
|
||||||
// kind: content.kind,
|
range: highlight.clone(),
|
||||||
// },
|
},
|
||||||
// },
|
cx,
|
||||||
// range: highlight.clone(),
|
);
|
||||||
// },
|
hover_updated = true;
|
||||||
// cx,
|
}
|
||||||
// );
|
if let Some((language_server_id, location)) =
|
||||||
// hover_updated = true;
|
hovered_hint_part.location
|
||||||
// }
|
{
|
||||||
// if let Some((language_server_id, location)) =
|
go_to_definition_updated = true;
|
||||||
// hovered_hint_part.location
|
update_go_to_definition_link(
|
||||||
// {
|
editor,
|
||||||
// go_to_definition_updated = true;
|
Some(GoToDefinitionTrigger::InlayHint(
|
||||||
// update_go_to_definition_link(
|
highlight,
|
||||||
// editor,
|
location,
|
||||||
// Some(GoToDefinitionTrigger::InlayHint(
|
language_server_id,
|
||||||
// highlight,
|
)),
|
||||||
// location,
|
cmd_held,
|
||||||
// language_server_id,
|
shift_held,
|
||||||
// )),
|
cx,
|
||||||
// cmd_held,
|
);
|
||||||
// shift_held,
|
}
|
||||||
// cx,
|
}
|
||||||
// );
|
}
|
||||||
// }
|
};
|
||||||
// }
|
}
|
||||||
// }
|
ResolveState::Resolving => {}
|
||||||
// };
|
}
|
||||||
// }
|
}
|
||||||
// ResolveState::Resolving => {}
|
}
|
||||||
// }
|
}
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if !go_to_definition_updated {
|
if !go_to_definition_updated {
|
||||||
// update_go_to_definition_link(editor, None, cmd_held, shift_held, cx);
|
update_go_to_definition_link(editor, None, cmd_held, shift_held, cx);
|
||||||
// }
|
}
|
||||||
// if !hover_updated {
|
if !hover_updated {
|
||||||
// hover_popover::hover_at(editor, None, cx);
|
hover_popover::hover_at(editor, None, cx);
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, PartialEq)]
|
#[derive(Debug, Clone, Copy, PartialEq)]
|
||||||
pub enum LinkDefinitionKind {
|
pub enum LinkDefinitionKind {
|
||||||
@ -581,7 +578,7 @@ fn go_to_fetched_definition_of_kind(
|
|||||||
|
|
||||||
let is_correct_kind = cached_definitions_kind == Some(kind);
|
let is_correct_kind = cached_definitions_kind == Some(kind);
|
||||||
if !cached_definitions.is_empty() && is_correct_kind {
|
if !cached_definitions.is_empty() && is_correct_kind {
|
||||||
if !editor.focused {
|
if !editor.focus_handle.is_focused(cx) {
|
||||||
cx.focus(&editor.focus_handle);
|
cx.focus(&editor.focus_handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
use super::{Bias, DisplayPoint, DisplaySnapshot, SelectionGoal, ToDisplayPoint};
|
use super::{Bias, DisplayPoint, DisplaySnapshot, SelectionGoal, ToDisplayPoint};
|
||||||
use crate::{char_kind, CharKind, EditorStyle, ToOffset, ToPoint};
|
use crate::{char_kind, CharKind, EditorStyle, ToOffset, ToPoint};
|
||||||
use gpui::{px, TextSystem};
|
use gpui::{px, Pixels, TextSystem};
|
||||||
use language::Point;
|
use language::Point;
|
||||||
use serde::de::IntoDeserializer;
|
use serde::de::IntoDeserializer;
|
||||||
use std::ops::Range;
|
use std::{ops::Range, sync::Arc};
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, PartialEq)]
|
||||||
pub enum FindRange {
|
pub enum FindRange {
|
||||||
@ -14,8 +14,9 @@ pub enum FindRange {
|
|||||||
/// TextLayoutDetails encompasses everything we need to move vertically
|
/// TextLayoutDetails encompasses everything we need to move vertically
|
||||||
/// taking into account variable width characters.
|
/// taking into account variable width characters.
|
||||||
pub struct TextLayoutDetails {
|
pub struct TextLayoutDetails {
|
||||||
pub text_system: TextSystem,
|
pub text_system: Arc<TextSystem>,
|
||||||
pub editor_style: EditorStyle,
|
pub editor_style: EditorStyle,
|
||||||
|
pub rem_size: Pixels,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn left(map: &DisplaySnapshot, mut point: DisplayPoint) -> DisplayPoint {
|
pub fn left(map: &DisplaySnapshot, mut point: DisplayPoint) -> DisplayPoint {
|
||||||
|
@ -288,16 +288,15 @@ impl ScrollManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo!()
|
|
||||||
impl Editor {
|
impl Editor {
|
||||||
// pub fn vertical_scroll_margin(&mut self) -> usize {
|
pub fn vertical_scroll_margin(&mut self) -> usize {
|
||||||
// self.scroll_manager.vertical_scroll_margin as usize
|
self.scroll_manager.vertical_scroll_margin as usize
|
||||||
// }
|
}
|
||||||
|
|
||||||
// pub fn set_vertical_scroll_margin(&mut self, margin_rows: usize, cx: &mut ViewContext<Self>) {
|
pub fn set_vertical_scroll_margin(&mut self, margin_rows: usize, cx: &mut ViewContext<Self>) {
|
||||||
// self.scroll_manager.vertical_scroll_margin = margin_rows as f32;
|
self.scroll_manager.vertical_scroll_margin = margin_rows as f32;
|
||||||
// cx.notify();
|
cx.notify();
|
||||||
// }
|
}
|
||||||
|
|
||||||
pub fn visible_line_count(&self) -> Option<f32> {
|
pub fn visible_line_count(&self) -> Option<f32> {
|
||||||
self.scroll_manager.visible_line_count
|
self.scroll_manager.visible_line_count
|
||||||
@ -349,10 +348,10 @@ impl Editor {
|
|||||||
self.refresh_inlay_hints(InlayHintRefreshReason::NewLinesShown, cx);
|
self.refresh_inlay_hints(InlayHintRefreshReason::NewLinesShown, cx);
|
||||||
}
|
}
|
||||||
|
|
||||||
// pub fn scroll_position(&self, cx: &mut ViewContext<Self>) -> gpui::Point<Pixels> {
|
pub fn scroll_position(&self, cx: &mut ViewContext<Self>) -> gpui::Point<f32> {
|
||||||
// let display_map = self.display_map.update(cx, |map, cx| map.snapshot(cx));
|
let display_map = self.display_map.update(cx, |map, cx| map.snapshot(cx));
|
||||||
// self.scroll_manager.anchor.scroll_position(&display_map)
|
self.scroll_manager.anchor.scroll_position(&display_map)
|
||||||
// }
|
}
|
||||||
|
|
||||||
pub fn set_scroll_anchor(&mut self, scroll_anchor: ScrollAnchor, cx: &mut ViewContext<Self>) {
|
pub fn set_scroll_anchor(&mut self, scroll_anchor: ScrollAnchor, cx: &mut ViewContext<Self>) {
|
||||||
hide_hover(self, cx);
|
hide_hover(self, cx);
|
||||||
@ -380,50 +379,50 @@ impl Editor {
|
|||||||
.set_anchor(scroll_anchor, top_row, false, false, workspace_id, cx);
|
.set_anchor(scroll_anchor, top_row, false, false, workspace_id, cx);
|
||||||
}
|
}
|
||||||
|
|
||||||
// pub fn scroll_screen(&mut self, amount: &ScrollAmount, cx: &mut ViewContext<Self>) {
|
pub fn scroll_screen(&mut self, amount: &ScrollAmount, cx: &mut ViewContext<Self>) {
|
||||||
// if matches!(self.mode, EditorMode::SingleLine) {
|
if matches!(self.mode, EditorMode::SingleLine) {
|
||||||
// cx.propagate_action();
|
cx.propagate();
|
||||||
// return;
|
return;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// if self.take_rename(true, cx).is_some() {
|
if self.take_rename(true, cx).is_some() {
|
||||||
// return;
|
return;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// let cur_position = self.scroll_position(cx);
|
let cur_position = self.scroll_position(cx);
|
||||||
// let new_pos = cur_position + point(0., amount.lines(self));
|
let new_pos = cur_position + point(0., amount.lines(self));
|
||||||
// self.set_scroll_position(new_pos, cx);
|
self.set_scroll_position(new_pos, cx);
|
||||||
// }
|
}
|
||||||
|
|
||||||
// /// Returns an ordering. The newest selection is:
|
/// Returns an ordering. The newest selection is:
|
||||||
// /// Ordering::Equal => on screen
|
/// Ordering::Equal => on screen
|
||||||
// /// Ordering::Less => above the screen
|
/// Ordering::Less => above the screen
|
||||||
// /// Ordering::Greater => below the screen
|
/// Ordering::Greater => below the screen
|
||||||
// pub fn newest_selection_on_screen(&self, cx: &mut AppContext) -> Ordering {
|
pub fn newest_selection_on_screen(&self, cx: &mut AppContext) -> Ordering {
|
||||||
// let snapshot = self.display_map.update(cx, |map, cx| map.snapshot(cx));
|
let snapshot = self.display_map.update(cx, |map, cx| map.snapshot(cx));
|
||||||
// let newest_head = self
|
let newest_head = self
|
||||||
// .selections
|
.selections
|
||||||
// .newest_anchor()
|
.newest_anchor()
|
||||||
// .head()
|
.head()
|
||||||
// .to_display_point(&snapshot);
|
.to_display_point(&snapshot);
|
||||||
// let screen_top = self
|
let screen_top = self
|
||||||
// .scroll_manager
|
.scroll_manager
|
||||||
// .anchor
|
.anchor
|
||||||
// .anchor
|
.anchor
|
||||||
// .to_display_point(&snapshot);
|
.to_display_point(&snapshot);
|
||||||
|
|
||||||
// if screen_top > newest_head {
|
if screen_top > newest_head {
|
||||||
// return Ordering::Less;
|
return Ordering::Less;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// if let Some(visible_lines) = self.visible_line_count() {
|
if let Some(visible_lines) = self.visible_line_count() {
|
||||||
// if newest_head.row() < screen_top.row() + visible_lines as u32 {
|
if newest_head.row() < screen_top.row() + visible_lines as u32 {
|
||||||
// return Ordering::Equal;
|
return Ordering::Equal;
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
|
|
||||||
// Ordering::Greater
|
Ordering::Greater
|
||||||
// }
|
}
|
||||||
|
|
||||||
pub fn read_scroll_position_from_db(
|
pub fn read_scroll_position_from_db(
|
||||||
&mut self,
|
&mut self,
|
||||||
|
@ -1,148 +1,103 @@
|
|||||||
use gpui::AppContext;
|
use super::Axis;
|
||||||
|
use crate::{
|
||||||
|
Autoscroll, Bias, Editor, EditorMode, NextScreen, ScrollAnchor, ScrollCursorBottom,
|
||||||
|
ScrollCursorCenter, ScrollCursorTop,
|
||||||
|
};
|
||||||
|
use gpui::{actions, AppContext, Point, ViewContext};
|
||||||
|
|
||||||
// actions!(
|
impl Editor {
|
||||||
// editor,
|
pub fn next_screen(&mut self, _: &NextScreen, cx: &mut ViewContext<Editor>) {
|
||||||
// [
|
if self.take_rename(true, cx).is_some() {
|
||||||
// LineDown,
|
return;
|
||||||
// LineUp,
|
}
|
||||||
// HalfPageDown,
|
|
||||||
// HalfPageUp,
|
|
||||||
// PageDown,
|
|
||||||
// PageUp,
|
|
||||||
// NextScreen,
|
|
||||||
// ScrollCursorTop,
|
|
||||||
// ScrollCursorCenter,
|
|
||||||
// ScrollCursorBottom,
|
|
||||||
// ]
|
|
||||||
// );
|
|
||||||
|
|
||||||
pub fn init(cx: &mut AppContext) {
|
// todo!()
|
||||||
// todo!()
|
// if self.mouse_context_menu.read(cx).visible() {
|
||||||
// cx.add_action(Editor::next_screen);
|
// return None;
|
||||||
// cx.add_action(Editor::scroll_cursor_top);
|
// }
|
||||||
// cx.add_action(Editor::scroll_cursor_center);
|
|
||||||
// cx.add_action(Editor::scroll_cursor_bottom);
|
if matches!(self.mode, EditorMode::SingleLine) {
|
||||||
// cx.add_action(|this: &mut Editor, _: &LineDown, cx| {
|
cx.propagate();
|
||||||
// this.scroll_screen(&ScrollAmount::Line(1.), cx)
|
return;
|
||||||
// });
|
}
|
||||||
// cx.add_action(|this: &mut Editor, _: &LineUp, cx| {
|
self.request_autoscroll(Autoscroll::Next, cx);
|
||||||
// this.scroll_screen(&ScrollAmount::Line(-1.), cx)
|
}
|
||||||
// });
|
|
||||||
// cx.add_action(|this: &mut Editor, _: &HalfPageDown, cx| {
|
pub fn scroll(
|
||||||
// this.scroll_screen(&ScrollAmount::Page(0.5), cx)
|
&mut self,
|
||||||
// });
|
scroll_position: Point<f32>,
|
||||||
// cx.add_action(|this: &mut Editor, _: &HalfPageUp, cx| {
|
axis: Option<Axis>,
|
||||||
// this.scroll_screen(&ScrollAmount::Page(-0.5), cx)
|
cx: &mut ViewContext<Self>,
|
||||||
// });
|
) {
|
||||||
// cx.add_action(|this: &mut Editor, _: &PageDown, cx| {
|
self.scroll_manager.update_ongoing_scroll(axis);
|
||||||
// this.scroll_screen(&ScrollAmount::Page(1.), cx)
|
self.set_scroll_position(scroll_position, cx);
|
||||||
// });
|
}
|
||||||
// cx.add_action(|this: &mut Editor, _: &PageUp, cx| {
|
|
||||||
// this.scroll_screen(&ScrollAmount::Page(-1.), cx)
|
pub fn scroll_cursor_top(&mut self, _: &ScrollCursorTop, cx: &mut ViewContext<Editor>) {
|
||||||
// });
|
let snapshot = self.snapshot(cx).display_snapshot;
|
||||||
|
let scroll_margin_rows = self.vertical_scroll_margin() as u32;
|
||||||
|
|
||||||
|
let mut new_screen_top = self.selections.newest_display(cx).head();
|
||||||
|
*new_screen_top.row_mut() = new_screen_top.row().saturating_sub(scroll_margin_rows);
|
||||||
|
*new_screen_top.column_mut() = 0;
|
||||||
|
let new_screen_top = new_screen_top.to_offset(&snapshot, Bias::Left);
|
||||||
|
let new_anchor = snapshot.buffer_snapshot.anchor_before(new_screen_top);
|
||||||
|
|
||||||
|
self.set_scroll_anchor(
|
||||||
|
ScrollAnchor {
|
||||||
|
anchor: new_anchor,
|
||||||
|
offset: Default::default(),
|
||||||
|
},
|
||||||
|
cx,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn scroll_cursor_center(&mut self, _: &ScrollCursorCenter, cx: &mut ViewContext<Editor>) {
|
||||||
|
let snapshot = self.snapshot(cx).display_snapshot;
|
||||||
|
let visible_rows = if let Some(visible_rows) = self.visible_line_count() {
|
||||||
|
visible_rows as u32
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
let mut new_screen_top = self.selections.newest_display(cx).head();
|
||||||
|
*new_screen_top.row_mut() = new_screen_top.row().saturating_sub(visible_rows / 2);
|
||||||
|
*new_screen_top.column_mut() = 0;
|
||||||
|
let new_screen_top = new_screen_top.to_offset(&snapshot, Bias::Left);
|
||||||
|
let new_anchor = snapshot.buffer_snapshot.anchor_before(new_screen_top);
|
||||||
|
|
||||||
|
self.set_scroll_anchor(
|
||||||
|
ScrollAnchor {
|
||||||
|
anchor: new_anchor,
|
||||||
|
offset: Default::default(),
|
||||||
|
},
|
||||||
|
cx,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn scroll_cursor_bottom(&mut self, _: &ScrollCursorBottom, cx: &mut ViewContext<Editor>) {
|
||||||
|
let snapshot = self.snapshot(cx).display_snapshot;
|
||||||
|
let scroll_margin_rows = self.vertical_scroll_margin() as u32;
|
||||||
|
let visible_rows = if let Some(visible_rows) = self.visible_line_count() {
|
||||||
|
visible_rows as u32
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
let mut new_screen_top = self.selections.newest_display(cx).head();
|
||||||
|
*new_screen_top.row_mut() = new_screen_top
|
||||||
|
.row()
|
||||||
|
.saturating_sub(visible_rows.saturating_sub(scroll_margin_rows));
|
||||||
|
*new_screen_top.column_mut() = 0;
|
||||||
|
let new_screen_top = new_screen_top.to_offset(&snapshot, Bias::Left);
|
||||||
|
let new_anchor = snapshot.buffer_snapshot.anchor_before(new_screen_top);
|
||||||
|
|
||||||
|
self.set_scroll_anchor(
|
||||||
|
ScrollAnchor {
|
||||||
|
anchor: new_anchor,
|
||||||
|
offset: Default::default(),
|
||||||
|
},
|
||||||
|
cx,
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// impl Editor {
|
|
||||||
// pub fn next_screen(&mut self, _: &NextScreen, cx: &mut ViewContext<Editor>) -> Option<()> {
|
|
||||||
// if self.take_rename(true, cx).is_some() {
|
|
||||||
// return None;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if self.mouse_context_menu.read(cx).visible() {
|
|
||||||
// return None;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if matches!(self.mode, EditorMode::SingleLine) {
|
|
||||||
// cx.propagate_action();
|
|
||||||
// return None;
|
|
||||||
// }
|
|
||||||
// self.request_autoscroll(Autoscroll::Next, cx);
|
|
||||||
// Some(())
|
|
||||||
// }
|
|
||||||
|
|
||||||
// pub fn scroll(
|
|
||||||
// &mut self,
|
|
||||||
// scroll_position: Vector2F,
|
|
||||||
// axis: Option<Axis>,
|
|
||||||
// cx: &mut ViewContext<Self>,
|
|
||||||
// ) {
|
|
||||||
// self.scroll_manager.update_ongoing_scroll(axis);
|
|
||||||
// self.set_scroll_position(scroll_position, cx);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// fn scroll_cursor_top(editor: &mut Editor, _: &ScrollCursorTop, cx: &mut ViewContext<Editor>) {
|
|
||||||
// let snapshot = editor.snapshot(cx).display_snapshot;
|
|
||||||
// let scroll_margin_rows = editor.vertical_scroll_margin() as u32;
|
|
||||||
|
|
||||||
// let mut new_screen_top = editor.selections.newest_display(cx).head();
|
|
||||||
// *new_screen_top.row_mut() = new_screen_top.row().saturating_sub(scroll_margin_rows);
|
|
||||||
// *new_screen_top.column_mut() = 0;
|
|
||||||
// let new_screen_top = new_screen_top.to_offset(&snapshot, Bias::Left);
|
|
||||||
// let new_anchor = snapshot.buffer_snapshot.anchor_before(new_screen_top);
|
|
||||||
|
|
||||||
// editor.set_scroll_anchor(
|
|
||||||
// ScrollAnchor {
|
|
||||||
// anchor: new_anchor,
|
|
||||||
// offset: Default::default(),
|
|
||||||
// },
|
|
||||||
// cx,
|
|
||||||
// )
|
|
||||||
// }
|
|
||||||
|
|
||||||
// fn scroll_cursor_center(
|
|
||||||
// editor: &mut Editor,
|
|
||||||
// _: &ScrollCursorCenter,
|
|
||||||
// cx: &mut ViewContext<Editor>,
|
|
||||||
// ) {
|
|
||||||
// let snapshot = editor.snapshot(cx).display_snapshot;
|
|
||||||
// let visible_rows = if let Some(visible_rows) = editor.visible_line_count() {
|
|
||||||
// visible_rows as u32
|
|
||||||
// } else {
|
|
||||||
// return;
|
|
||||||
// };
|
|
||||||
|
|
||||||
// let mut new_screen_top = editor.selections.newest_display(cx).head();
|
|
||||||
// *new_screen_top.row_mut() = new_screen_top.row().saturating_sub(visible_rows / 2);
|
|
||||||
// *new_screen_top.column_mut() = 0;
|
|
||||||
// let new_screen_top = new_screen_top.to_offset(&snapshot, Bias::Left);
|
|
||||||
// let new_anchor = snapshot.buffer_snapshot.anchor_before(new_screen_top);
|
|
||||||
|
|
||||||
// editor.set_scroll_anchor(
|
|
||||||
// ScrollAnchor {
|
|
||||||
// anchor: new_anchor,
|
|
||||||
// offset: Default::default(),
|
|
||||||
// },
|
|
||||||
// cx,
|
|
||||||
// )
|
|
||||||
// }
|
|
||||||
|
|
||||||
// fn scroll_cursor_bottom(
|
|
||||||
// editor: &mut Editor,
|
|
||||||
// _: &ScrollCursorBottom,
|
|
||||||
// cx: &mut ViewContext<Editor>,
|
|
||||||
// ) {
|
|
||||||
// let snapshot = editor.snapshot(cx).display_snapshot;
|
|
||||||
// let scroll_margin_rows = editor.vertical_scroll_margin() as u32;
|
|
||||||
// let visible_rows = if let Some(visible_rows) = editor.visible_line_count() {
|
|
||||||
// visible_rows as u32
|
|
||||||
// } else {
|
|
||||||
// return;
|
|
||||||
// };
|
|
||||||
|
|
||||||
// let mut new_screen_top = editor.selections.newest_display(cx).head();
|
|
||||||
// *new_screen_top.row_mut() = new_screen_top
|
|
||||||
// .row()
|
|
||||||
// .saturating_sub(visible_rows.saturating_sub(scroll_margin_rows));
|
|
||||||
// *new_screen_top.column_mut() = 0;
|
|
||||||
// let new_screen_top = new_screen_top.to_offset(&snapshot, Bias::Left);
|
|
||||||
// let new_anchor = snapshot.buffer_snapshot.anchor_before(new_screen_top);
|
|
||||||
|
|
||||||
// editor.set_scroll_anchor(
|
|
||||||
// ScrollAnchor {
|
|
||||||
// anchor: new_anchor,
|
|
||||||
// offset: Default::default(),
|
|
||||||
// },
|
|
||||||
// cx,
|
|
||||||
// )
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
@ -302,39 +302,39 @@ impl SelectionsCollection {
|
|||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
// pub fn build_columnar_selection(
|
pub fn build_columnar_selection(
|
||||||
// &mut self,
|
&mut self,
|
||||||
// display_map: &DisplaySnapshot,
|
display_map: &DisplaySnapshot,
|
||||||
// row: u32,
|
row: u32,
|
||||||
// positions: &Range<Pixels>,
|
positions: &Range<Pixels>,
|
||||||
// reversed: bool,
|
reversed: bool,
|
||||||
// text_layout_details: &TextLayoutDetails,
|
text_layout_details: &TextLayoutDetails,
|
||||||
// ) -> Option<Selection<Point>> {
|
) -> Option<Selection<Point>> {
|
||||||
// let is_empty = positions.start == positions.end;
|
let is_empty = positions.start == positions.end;
|
||||||
// let line_len = display_map.line_len(row);
|
let line_len = display_map.line_len(row);
|
||||||
|
|
||||||
// let layed_out_line = display_map.lay_out_line_for_row(row, &text_layout_details);
|
let layed_out_line = display_map.lay_out_line_for_row(row, &text_layout_details);
|
||||||
|
|
||||||
// let start_col = layed_out_line.closest_index_for_x(positions.start) as u32;
|
let start_col = layed_out_line.closest_index_for_x(positions.start) as u32;
|
||||||
// if start_col < line_len || (is_empty && positions.start == layed_out_line.width()) {
|
if start_col < line_len || (is_empty && positions.start == layed_out_line.width) {
|
||||||
// let start = DisplayPoint::new(row, start_col);
|
let start = DisplayPoint::new(row, start_col);
|
||||||
// let end_col = layed_out_line.closest_index_for_x(positions.end) as u32;
|
let end_col = layed_out_line.closest_index_for_x(positions.end) as u32;
|
||||||
// let end = DisplayPoint::new(row, end_col);
|
let end = DisplayPoint::new(row, end_col);
|
||||||
|
|
||||||
// Some(Selection {
|
Some(Selection {
|
||||||
// id: post_inc(&mut self.next_selection_id),
|
id: post_inc(&mut self.next_selection_id),
|
||||||
// start: start.to_point(display_map),
|
start: start.to_point(display_map),
|
||||||
// end: end.to_point(display_map),
|
end: end.to_point(display_map),
|
||||||
// reversed,
|
reversed,
|
||||||
// goal: SelectionGoal::HorizontalRange {
|
goal: SelectionGoal::HorizontalRange {
|
||||||
// start: positions.start,
|
start: positions.start.into(),
|
||||||
// end: positions.end,
|
end: positions.end.into(),
|
||||||
// },
|
},
|
||||||
// })
|
})
|
||||||
// } else {
|
} else {
|
||||||
// None
|
None
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
|
|
||||||
pub(crate) fn change_with<R>(
|
pub(crate) fn change_with<R>(
|
||||||
&mut self,
|
&mut self,
|
||||||
|
25
crates/go_to_line2/Cargo.toml
Normal file
25
crates/go_to_line2/Cargo.toml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
[package]
|
||||||
|
name = "go_to_line2"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
publish = false
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
path = "src/go_to_line.rs"
|
||||||
|
doctest = false
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
editor = { package = "editor2", path = "../editor2" }
|
||||||
|
gpui = { package = "gpui2", path = "../gpui2" }
|
||||||
|
menu = { package = "menu2", path = "../menu2" }
|
||||||
|
serde.workspace = true
|
||||||
|
settings = { package = "settings2", path = "../settings2" }
|
||||||
|
text = { package = "text2", path = "../text2" }
|
||||||
|
workspace = { package = "workspace2", path = "../workspace2" }
|
||||||
|
postage.workspace = true
|
||||||
|
theme = { package = "theme2", path = "../theme2" }
|
||||||
|
ui = { package = "ui2", path = "../ui2" }
|
||||||
|
util = { path = "../util" }
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
editor = { package = "editor2", path = "../editor2", features = ["test-support"] }
|
221
crates/go_to_line2/src/go_to_line.rs
Normal file
221
crates/go_to_line2/src/go_to_line.rs
Normal file
@ -0,0 +1,221 @@
|
|||||||
|
use gpui::{actions, div, px, red, AppContext, Div, Render, Styled, ViewContext, VisualContext};
|
||||||
|
use workspace::ModalRegistry;
|
||||||
|
|
||||||
|
actions!(Toggle);
|
||||||
|
|
||||||
|
pub fn init(cx: &mut AppContext) {
|
||||||
|
cx.global_mut::<ModalRegistry>()
|
||||||
|
.register_modal(Toggle, |_, cx| {
|
||||||
|
// if let Some(editor) = workspace
|
||||||
|
// .active_item(cx)
|
||||||
|
// .and_then(|active_item| active_item.downcast::<Editor>())
|
||||||
|
// {
|
||||||
|
// cx.build_view(|cx| GoToLine::new(editor, cx))
|
||||||
|
// }
|
||||||
|
let view = cx.build_view(|_| GoToLine);
|
||||||
|
view
|
||||||
|
});
|
||||||
|
|
||||||
|
// cx.add_action(GoToLine::toggle);
|
||||||
|
// cx.add_action(GoToLine::confirm);
|
||||||
|
// cx.add_action(GoToLine::cancel);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct GoToLine;
|
||||||
|
|
||||||
|
impl Render for GoToLine {
|
||||||
|
type Element = Div<Self>;
|
||||||
|
|
||||||
|
fn render(&mut self, _cx: &mut ViewContext<Self>) -> Self::Element {
|
||||||
|
dbg!("rendering GoToLine");
|
||||||
|
div().bg(red()).w(px(100.0)).h(px(100.0))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// pub struct GoToLine {
|
||||||
|
// //line_editor: View<Editor>,
|
||||||
|
// active_editor: View<Editor>,
|
||||||
|
// prev_scroll_position: Option<gpui::Point<Pixels>>,
|
||||||
|
// cursor_point: Point,
|
||||||
|
// max_point: Point,
|
||||||
|
// has_focus: bool,
|
||||||
|
// }
|
||||||
|
|
||||||
|
// pub enum Event {
|
||||||
|
// Dismissed,
|
||||||
|
// }
|
||||||
|
|
||||||
|
// impl GoToLine {
|
||||||
|
// pub fn new(active_editor: View<Editor>, cx: &mut ViewContext<Self>) -> Self {
|
||||||
|
// // let line_editor = cx.build_view(|cx| {
|
||||||
|
// // Editor::single_line(
|
||||||
|
// // Some(Arc::new(|theme| theme.picker.input_editor.clone())),
|
||||||
|
// // cx,
|
||||||
|
// // )
|
||||||
|
// // });
|
||||||
|
// // cx.subscribe(&line_editor, Self::on_line_editor_event)
|
||||||
|
// // .detach();
|
||||||
|
|
||||||
|
// let (scroll_position, cursor_point, max_point) = active_editor.update(cx, |editor, cx| {
|
||||||
|
// let scroll_position = editor.scroll_position(cx);
|
||||||
|
// let buffer = editor.buffer().read(cx).snapshot(cx);
|
||||||
|
// (
|
||||||
|
// Some(scroll_position),
|
||||||
|
// editor.selections.newest(cx).head(),
|
||||||
|
// buffer.max_point(),
|
||||||
|
// )
|
||||||
|
// });
|
||||||
|
|
||||||
|
// cx.on_release(|_, on_release| {}).detach();
|
||||||
|
|
||||||
|
// Self {
|
||||||
|
// //line_editor,
|
||||||
|
// active_editor,
|
||||||
|
// prev_scroll_position: scroll_position,
|
||||||
|
// cursor_point,
|
||||||
|
// max_point,
|
||||||
|
// has_focus: false,
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// fn cancel(&mut self, _: &Cancel, cx: &mut ViewContext<Self>) {
|
||||||
|
// cx.emit(Event::Dismissed);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// fn confirm(&mut self, _: &Confirm, cx: &mut ViewContext<Self>) {
|
||||||
|
// self.prev_scroll_position.take();
|
||||||
|
// if let Some(point) = self.point_from_query(cx) {
|
||||||
|
// self.active_editor.update(cx, |active_editor, cx| {
|
||||||
|
// let snapshot = active_editor.snapshot(cx).display_snapshot;
|
||||||
|
// let point = snapshot.buffer_snapshot.clip_point(point, Bias::Left);
|
||||||
|
// active_editor.change_selections(Some(Autoscroll::center()), cx, |s| {
|
||||||
|
// s.select_ranges([point..point])
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
|
||||||
|
// cx.emit(Event::Dismissed);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// fn on_line_editor_event(
|
||||||
|
// &mut self,
|
||||||
|
// _: View<Editor>,
|
||||||
|
// event: &editor::Event,
|
||||||
|
// cx: &mut ViewContext<Self>,
|
||||||
|
// ) {
|
||||||
|
// match event {
|
||||||
|
// editor::Event::Blurred => cx.emit(Event::Dismissed),
|
||||||
|
// editor::Event::BufferEdited { .. } => {
|
||||||
|
// if let Some(point) = self.point_from_query(cx) {
|
||||||
|
// // todo!()
|
||||||
|
// // self.active_editor.update(cx, |active_editor, cx| {
|
||||||
|
// // let snapshot = active_editor.snapshot(cx).display_snapshot;
|
||||||
|
// // let point = snapshot.buffer_snapshot.clip_point(point, Bias::Left);
|
||||||
|
// // let display_point = point.to_display_point(&snapshot);
|
||||||
|
// // let row = display_point.row();
|
||||||
|
// // active_editor.highlight_rows(Some(row..row + 1));
|
||||||
|
// // active_editor.request_autoscroll(Autoscroll::center(), cx);
|
||||||
|
// // });
|
||||||
|
// cx.notify();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// _ => {}
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// fn point_from_query(&self, cx: &ViewContext<Self>) -> Option<Point> {
|
||||||
|
// return None;
|
||||||
|
// // todo!()
|
||||||
|
// // let line_editor = self.line_editor.read(cx).text(cx);
|
||||||
|
// // let mut components = line_editor
|
||||||
|
// // .splitn(2, FILE_ROW_COLUMN_DELIMITER)
|
||||||
|
// // .map(str::trim)
|
||||||
|
// // .fuse();
|
||||||
|
// // let row = components.next().and_then(|row| row.parse::<u32>().ok())?;
|
||||||
|
// // let column = components.next().and_then(|col| col.parse::<u32>().ok());
|
||||||
|
// // Some(Point::new(
|
||||||
|
// // row.saturating_sub(1),
|
||||||
|
// // column.unwrap_or(0).saturating_sub(1),
|
||||||
|
// // ))
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// impl EventEmitter for GoToLine {
|
||||||
|
// type Event = Event;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// impl Entity for GoToLine {
|
||||||
|
// fn release(&mut self, cx: &mut AppContext) {
|
||||||
|
// let scroll_position = self.prev_scroll_position.take();
|
||||||
|
// self.active_editor.window().update(cx, |cx| {
|
||||||
|
// self.active_editor.update(cx, |editor, cx| {
|
||||||
|
// editor.highlight_rows(None);
|
||||||
|
// if let Some(scroll_position) = scroll_position {
|
||||||
|
// editor.set_scroll_position(scroll_position, cx);
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// impl Render for GoToLine {
|
||||||
|
// type Element = Div<Self>;
|
||||||
|
|
||||||
|
// fn render(&mut self, cx: &mut ViewContext<Self>) -> Self::Element {
|
||||||
|
// // todo!()
|
||||||
|
// div()
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// impl View for GoToLine {
|
||||||
|
// fn ui_name() -> &'static str {
|
||||||
|
// "GoToLine"
|
||||||
|
// }
|
||||||
|
|
||||||
|
// fn render(&mut self, cx: &mut ViewContext<Self>) -> AnyElement<Self> {
|
||||||
|
// let theme = &theme::current(cx).picker;
|
||||||
|
|
||||||
|
// let label = format!(
|
||||||
|
// "{}{FILE_ROW_COLUMN_DELIMITER}{} of {} lines",
|
||||||
|
// self.cursor_point.row + 1,
|
||||||
|
// self.cursor_point.column + 1,
|
||||||
|
// self.max_point.row + 1
|
||||||
|
// );
|
||||||
|
|
||||||
|
// Flex::new(Axis::Vertical)
|
||||||
|
// .with_child(
|
||||||
|
// ChildView::new(&self.line_editor, cx)
|
||||||
|
// .contained()
|
||||||
|
// .with_style(theme.input_editor.container),
|
||||||
|
// )
|
||||||
|
// .with_child(
|
||||||
|
// Label::new(label, theme.no_matches.label.clone())
|
||||||
|
// .contained()
|
||||||
|
// .with_style(theme.no_matches.container),
|
||||||
|
// )
|
||||||
|
// .contained()
|
||||||
|
// .with_style(theme.container)
|
||||||
|
// .constrained()
|
||||||
|
// .with_max_width(500.0)
|
||||||
|
// .into_any_named("go to line")
|
||||||
|
// }
|
||||||
|
|
||||||
|
// fn focus_in(&mut self, _: AnyView, cx: &mut ViewContext<Self>) {
|
||||||
|
// self.has_focus = true;
|
||||||
|
// cx.focus(&self.line_editor);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// fn focus_out(&mut self, _: AnyView, _: &mut ViewContext<Self>) {
|
||||||
|
// self.has_focus = false;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// impl Modal for GoToLine {
|
||||||
|
// fn has_focus(&self) -> bool {
|
||||||
|
// self.has_focus
|
||||||
|
// }
|
||||||
|
|
||||||
|
// fn dismiss_on_event(event: &Self::Event) -> bool {
|
||||||
|
// matches!(event, Event::Dismissed)
|
||||||
|
// }
|
||||||
|
// }
|
@ -1,10 +1,55 @@
|
|||||||
use crate::SharedString;
|
use crate::SharedString;
|
||||||
use anyhow::{anyhow, Context, Result};
|
use anyhow::{anyhow, Context, Result};
|
||||||
use collections::{HashMap, HashSet};
|
use collections::{HashMap, HashSet};
|
||||||
|
use lazy_static::lazy_static;
|
||||||
|
use parking_lot::{MappedRwLockReadGuard, RwLock, RwLockReadGuard};
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use std::any::{type_name, Any};
|
use std::any::{type_name, Any};
|
||||||
|
|
||||||
pub trait Action: 'static {
|
/// Actions are used to implement keyboard-driven UI.
|
||||||
|
/// When you declare an action, you can bind keys to the action in the keymap and
|
||||||
|
/// listeners for that action in the element tree.
|
||||||
|
///
|
||||||
|
/// To declare a list of simple actions, you can use the actions! macro, which defines a simple unit struct
|
||||||
|
/// action for each listed action name.
|
||||||
|
/// ```rust
|
||||||
|
/// actions!(MoveUp, MoveDown, MoveLeft, MoveRight, Newline);
|
||||||
|
/// ```
|
||||||
|
/// More complex data types can also be actions. If you annotate your type with the `#[action]` proc macro,
|
||||||
|
/// it will automatically
|
||||||
|
/// ```
|
||||||
|
/// #[action]
|
||||||
|
/// pub struct SelectNext {
|
||||||
|
/// pub replace_newest: bool,
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// Any type A that satisfies the following bounds is automatically an action:
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// A: for<'a> Deserialize<'a> + PartialEq + Clone + Default + std::fmt::Debug + 'static,
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// The `#[action]` annotation will derive these implementations for your struct automatically. If you
|
||||||
|
/// want to control them manually, you can use the lower-level `#[register_action]` macro, which only
|
||||||
|
/// generates the code needed to register your action before `main`. Then you'll need to implement all
|
||||||
|
/// the traits manually.
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// #[gpui::register_action]
|
||||||
|
/// #[derive(gpui::serde::Deserialize, std::cmp::PartialEq, std::clone::Clone, std::fmt::Debug)]
|
||||||
|
/// pub struct Paste {
|
||||||
|
/// pub content: SharedString,
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// impl std::default::Default for Paste {
|
||||||
|
/// fn default() -> Self {
|
||||||
|
/// Self {
|
||||||
|
/// content: SharedString::from("🍝"),
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
|
pub trait Action: std::fmt::Debug + 'static {
|
||||||
fn qualified_name() -> SharedString
|
fn qualified_name() -> SharedString
|
||||||
where
|
where
|
||||||
Self: Sized;
|
Self: Sized;
|
||||||
@ -17,12 +62,14 @@ pub trait Action: 'static {
|
|||||||
fn as_any(&self) -> &dyn Any;
|
fn as_any(&self) -> &dyn Any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Types become actions by satisfying a list of trait bounds.
|
||||||
impl<A> Action for A
|
impl<A> Action for A
|
||||||
where
|
where
|
||||||
A: for<'a> Deserialize<'a> + PartialEq + Clone + Default + 'static,
|
A: for<'a> Deserialize<'a> + PartialEq + Clone + Default + std::fmt::Debug + 'static,
|
||||||
{
|
{
|
||||||
fn qualified_name() -> SharedString {
|
fn qualified_name() -> SharedString {
|
||||||
type_name::<A>().into()
|
// todo!() remove the 2 replacement when migration is done
|
||||||
|
type_name::<A>().replace("2::", "::").into()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn build(params: Option<serde_json::Value>) -> Result<Box<dyn Action>>
|
fn build(params: Option<serde_json::Value>) -> Result<Box<dyn Action>>
|
||||||
@ -53,6 +100,61 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ActionBuilder = fn(json: Option<serde_json::Value>) -> anyhow::Result<Box<dyn Action>>;
|
||||||
|
|
||||||
|
lazy_static! {
|
||||||
|
static ref ACTION_REGISTRY: RwLock<ActionRegistry> = RwLock::default();
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
struct ActionRegistry {
|
||||||
|
builders_by_name: HashMap<SharedString, ActionBuilder>,
|
||||||
|
all_names: Vec<SharedString>, // So we can return a static slice.
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Register an action type to allow it to be referenced in keymaps.
|
||||||
|
pub fn register_action<A: Action>() {
|
||||||
|
let name = A::qualified_name();
|
||||||
|
let mut lock = ACTION_REGISTRY.write();
|
||||||
|
lock.builders_by_name.insert(name.clone(), A::build);
|
||||||
|
lock.all_names.push(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Construct an action based on its name and optional JSON parameters sourced from the keymap.
|
||||||
|
pub fn build_action(name: &str, params: Option<serde_json::Value>) -> Result<Box<dyn Action>> {
|
||||||
|
let lock = ACTION_REGISTRY.read();
|
||||||
|
let build_action = lock
|
||||||
|
.builders_by_name
|
||||||
|
.get(name)
|
||||||
|
.ok_or_else(|| anyhow!("no action type registered for {}", name))?;
|
||||||
|
(build_action)(params)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn all_action_names() -> MappedRwLockReadGuard<'static, [SharedString]> {
|
||||||
|
let lock = ACTION_REGISTRY.read();
|
||||||
|
RwLockReadGuard::map(lock, |registry: &ActionRegistry| {
|
||||||
|
registry.all_names.as_slice()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Defines unit structs that can be used as actions.
|
||||||
|
/// To use more complex data types as actions, annotate your type with the #[action] macro.
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! actions {
|
||||||
|
() => {};
|
||||||
|
|
||||||
|
( $name:ident ) => {
|
||||||
|
#[gpui::register_action]
|
||||||
|
#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug, ::std::cmp::PartialEq, $crate::serde::Deserialize)]
|
||||||
|
pub struct $name;
|
||||||
|
};
|
||||||
|
|
||||||
|
( $name:ident, $($rest:tt)* ) => {
|
||||||
|
actions!($name);
|
||||||
|
actions!($($rest)*);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, Default, Eq, PartialEq)]
|
#[derive(Clone, Debug, Default, Eq, PartialEq)]
|
||||||
pub struct DispatchContext {
|
pub struct DispatchContext {
|
||||||
set: HashSet<SharedString>,
|
set: HashSet<SharedString>,
|
||||||
@ -290,8 +392,28 @@ fn skip_whitespace(source: &str) -> &str {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
use crate as gpui;
|
||||||
use DispatchContextPredicate::*;
|
use DispatchContextPredicate::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_actions_definition() {
|
||||||
|
{
|
||||||
|
actions!(A, B, C, D, E, F, G);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
actions!(
|
||||||
|
A,
|
||||||
|
B,
|
||||||
|
C,
|
||||||
|
D,
|
||||||
|
E,
|
||||||
|
F,
|
||||||
|
G, // Don't wrap, test the trailing comma
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_parse_context() {
|
fn test_parse_context() {
|
||||||
let mut expected = DispatchContext::default();
|
let mut expected = DispatchContext::default();
|
||||||
|
@ -17,9 +17,9 @@ use crate::{
|
|||||||
current_platform, image_cache::ImageCache, Action, AnyBox, AnyView, AnyWindowHandle,
|
current_platform, image_cache::ImageCache, Action, AnyBox, AnyView, AnyWindowHandle,
|
||||||
AppMetadata, AssetSource, BackgroundExecutor, ClipboardItem, Context, DispatchPhase, DisplayId,
|
AppMetadata, AssetSource, BackgroundExecutor, ClipboardItem, Context, DispatchPhase, DisplayId,
|
||||||
Entity, EventEmitter, FocusEvent, FocusHandle, FocusId, ForegroundExecutor, KeyBinding, Keymap,
|
Entity, EventEmitter, FocusEvent, FocusHandle, FocusId, ForegroundExecutor, KeyBinding, Keymap,
|
||||||
LayoutId, PathPromptOptions, Pixels, Platform, PlatformDisplay, Point, Render, SharedString,
|
LayoutId, PathPromptOptions, Pixels, Platform, PlatformDisplay, Point, Render, SubscriberSet,
|
||||||
SubscriberSet, Subscription, SvgRenderer, Task, TextStyle, TextStyleRefinement, TextSystem,
|
Subscription, SvgRenderer, Task, TextStyle, TextStyleRefinement, TextSystem, View, Window,
|
||||||
View, Window, WindowContext, WindowHandle, WindowId,
|
WindowContext, WindowHandle, WindowId,
|
||||||
};
|
};
|
||||||
use anyhow::{anyhow, Result};
|
use anyhow::{anyhow, Result};
|
||||||
use collections::{HashMap, HashSet, VecDeque};
|
use collections::{HashMap, HashSet, VecDeque};
|
||||||
@ -144,7 +144,6 @@ impl App {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type ActionBuilder = fn(json: Option<serde_json::Value>) -> anyhow::Result<Box<dyn Action>>;
|
|
||||||
pub(crate) type FrameCallback = Box<dyn FnOnce(&mut AppContext)>;
|
pub(crate) type FrameCallback = Box<dyn FnOnce(&mut AppContext)>;
|
||||||
type Handler = Box<dyn FnMut(&mut AppContext) -> bool + 'static>;
|
type Handler = Box<dyn FnMut(&mut AppContext) -> bool + 'static>;
|
||||||
type Listener = Box<dyn FnMut(&dyn Any, &mut AppContext) -> bool + 'static>;
|
type Listener = Box<dyn FnMut(&dyn Any, &mut AppContext) -> bool + 'static>;
|
||||||
@ -158,7 +157,7 @@ type ReleaseListener = Box<dyn FnOnce(&mut dyn Any, &mut AppContext) + 'static>;
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
pub struct AppContext {
|
pub struct AppContext {
|
||||||
this: Weak<AppCell>,
|
pub(crate) this: Weak<AppCell>,
|
||||||
pub(crate) platform: Rc<dyn Platform>,
|
pub(crate) platform: Rc<dyn Platform>,
|
||||||
app_metadata: AppMetadata,
|
app_metadata: AppMetadata,
|
||||||
text_system: Arc<TextSystem>,
|
text_system: Arc<TextSystem>,
|
||||||
@ -180,7 +179,6 @@ pub struct AppContext {
|
|||||||
pub(crate) keymap: Arc<Mutex<Keymap>>,
|
pub(crate) keymap: Arc<Mutex<Keymap>>,
|
||||||
pub(crate) global_action_listeners:
|
pub(crate) global_action_listeners:
|
||||||
HashMap<TypeId, Vec<Box<dyn Fn(&dyn Action, DispatchPhase, &mut Self)>>>,
|
HashMap<TypeId, Vec<Box<dyn Fn(&dyn Action, DispatchPhase, &mut Self)>>>,
|
||||||
action_builders: HashMap<SharedString, ActionBuilder>,
|
|
||||||
pending_effects: VecDeque<Effect>,
|
pending_effects: VecDeque<Effect>,
|
||||||
pub(crate) pending_notifications: HashSet<EntityId>,
|
pub(crate) pending_notifications: HashSet<EntityId>,
|
||||||
pub(crate) pending_global_notifications: HashSet<TypeId>,
|
pub(crate) pending_global_notifications: HashSet<TypeId>,
|
||||||
@ -238,7 +236,6 @@ impl AppContext {
|
|||||||
windows: SlotMap::with_key(),
|
windows: SlotMap::with_key(),
|
||||||
keymap: Arc::new(Mutex::new(Keymap::default())),
|
keymap: Arc::new(Mutex::new(Keymap::default())),
|
||||||
global_action_listeners: HashMap::default(),
|
global_action_listeners: HashMap::default(),
|
||||||
action_builders: HashMap::default(),
|
|
||||||
pending_effects: VecDeque::new(),
|
pending_effects: VecDeque::new(),
|
||||||
pending_notifications: HashSet::default(),
|
pending_notifications: HashSet::default(),
|
||||||
pending_global_notifications: HashSet::default(),
|
pending_global_notifications: HashSet::default(),
|
||||||
@ -755,13 +752,17 @@ impl AppContext {
|
|||||||
self.globals_by_type.insert(global_type, Box::new(global));
|
self.globals_by_type.insert(global_type, Box::new(global));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[track_caller]
|
||||||
pub fn clear_globals(&mut self) {
|
pub fn clear_globals(&mut self) {
|
||||||
|
dbg!(core::panic::Location::caller());
|
||||||
//todo!(notify globals?)
|
//todo!(notify globals?)
|
||||||
self.globals_by_type.drain();
|
self.globals_by_type.drain();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Set the value of the global of the given type.
|
/// Set the value of the global of the given type.
|
||||||
|
#[track_caller]
|
||||||
pub fn remove_global<G: Any>(&mut self) -> G {
|
pub fn remove_global<G: Any>(&mut self) -> G {
|
||||||
|
dbg!(core::panic::Location::caller());
|
||||||
let global_type = TypeId::of::<G>();
|
let global_type = TypeId::of::<G>();
|
||||||
//todo!(notify globals?)
|
//todo!(notify globals?)
|
||||||
*self
|
*self
|
||||||
@ -795,10 +796,6 @@ impl AppContext {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn all_action_names<'a>(&'a self) -> impl Iterator<Item = SharedString> + 'a {
|
|
||||||
self.action_builders.keys().cloned()
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Move the global of the given type to the stack.
|
/// Move the global of the given type to the stack.
|
||||||
pub(crate) fn lease_global<G: 'static>(&mut self) -> GlobalLease<G> {
|
pub(crate) fn lease_global<G: 'static>(&mut self) -> GlobalLease<G> {
|
||||||
GlobalLease::new(
|
GlobalLease::new(
|
||||||
@ -861,29 +858,21 @@ impl AppContext {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Register an action type to allow it to be referenced in keymaps.
|
/// Event handlers propagate events by default. Call this method to stop dispatching to
|
||||||
pub fn register_action_type<A: Action>(&mut self) {
|
/// event handlers with a lower z-index (mouse) or higher in the tree (keyboard). This is
|
||||||
self.action_builders.insert(A::qualified_name(), A::build);
|
/// the opposite of [propagate]. It's also possible to cancel a call to [propagate] by
|
||||||
}
|
/// calling this method before effects are flushed.
|
||||||
|
|
||||||
/// Construct an action based on its name and parameters.
|
|
||||||
pub fn build_action(
|
|
||||||
&mut self,
|
|
||||||
name: &str,
|
|
||||||
params: Option<serde_json::Value>,
|
|
||||||
) -> Result<Box<dyn Action>> {
|
|
||||||
let build = self
|
|
||||||
.action_builders
|
|
||||||
.get(name)
|
|
||||||
.ok_or_else(|| anyhow!("no action type registered for {}", name))?;
|
|
||||||
(build)(params)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Halt propagation of a mouse event, keyboard event, or action. This prevents listeners
|
|
||||||
/// that have not yet been invoked from receiving the event.
|
|
||||||
pub fn stop_propagation(&mut self) {
|
pub fn stop_propagation(&mut self) {
|
||||||
self.propagate_event = false;
|
self.propagate_event = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Action handlers stop propagation by default during the bubble phase of action dispatch
|
||||||
|
/// dispatching to action handlers higher in the element tree. This is the opposite of
|
||||||
|
/// [stop_propagation]. It's also possible to cancel a call to [stop_propagate] by calling
|
||||||
|
/// this method before effects are flushed.
|
||||||
|
pub fn propagate(&mut self) {
|
||||||
|
self.propagate_event = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Context for AppContext {
|
impl Context for AppContext {
|
||||||
|
@ -13,6 +13,7 @@ use std::{
|
|||||||
atomic::{AtomicUsize, Ordering::SeqCst},
|
atomic::{AtomicUsize, Ordering::SeqCst},
|
||||||
Arc, Weak,
|
Arc, Weak,
|
||||||
},
|
},
|
||||||
|
thread::panicking,
|
||||||
};
|
};
|
||||||
|
|
||||||
slotmap::new_key_type! { pub struct EntityId; }
|
slotmap::new_key_type! { pub struct EntityId; }
|
||||||
@ -140,9 +141,8 @@ impl<'a, T: 'static> core::ops::DerefMut for Lease<'a, T> {
|
|||||||
|
|
||||||
impl<'a, T> Drop for Lease<'a, T> {
|
impl<'a, T> Drop for Lease<'a, T> {
|
||||||
fn drop(&mut self) {
|
fn drop(&mut self) {
|
||||||
if self.entity.is_some() {
|
if self.entity.is_some() && !panicking() {
|
||||||
// We don't panic here, because other panics can cause us to drop the lease without ending it cleanly.
|
panic!("Leases must be ended with EntityMap::end_lease")
|
||||||
log::error!("Leases must be ended with EntityMap::end_lease")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
AnyView, AnyWindowHandle, AppCell, AppContext, AsyncAppContext, BackgroundExecutor, Context,
|
AnyView, AnyWindowHandle, AppCell, AppContext, AsyncAppContext, BackgroundExecutor, Context,
|
||||||
EventEmitter, ForegroundExecutor, Model, ModelContext, Render, Result, Task, TestDispatcher,
|
EventEmitter, ForegroundExecutor, InputEvent, KeyDownEvent, Keystroke, Model, ModelContext,
|
||||||
TestPlatform, ViewContext, VisualContext, WindowContext, WindowHandle, WindowOptions,
|
Render, Result, Task, TestDispatcher, TestPlatform, ViewContext, VisualContext, WindowContext,
|
||||||
|
WindowHandle, WindowOptions,
|
||||||
};
|
};
|
||||||
use anyhow::{anyhow, bail};
|
use anyhow::{anyhow, bail};
|
||||||
use futures::{Stream, StreamExt};
|
use futures::{Stream, StreamExt};
|
||||||
@ -161,6 +162,23 @@ impl TestAppContext {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn dispatch_keystroke(
|
||||||
|
&mut self,
|
||||||
|
window: AnyWindowHandle,
|
||||||
|
keystroke: Keystroke,
|
||||||
|
is_held: bool,
|
||||||
|
) {
|
||||||
|
let handled = window
|
||||||
|
.update(self, |_, cx| {
|
||||||
|
cx.dispatch_event(InputEvent::KeyDown(KeyDownEvent { keystroke, is_held }))
|
||||||
|
})
|
||||||
|
.is_ok_and(|handled| handled);
|
||||||
|
|
||||||
|
if !handled {
|
||||||
|
// todo!() simluate input here
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn notifications<T: 'static>(&mut self, entity: &Model<T>) -> impl Stream<Item = ()> {
|
pub fn notifications<T: 'static>(&mut self, entity: &Model<T>) -> impl Stream<Item = ()> {
|
||||||
let (tx, rx) = futures::channel::mpsc::unbounded();
|
let (tx, rx) = futures::channel::mpsc::unbounded();
|
||||||
|
|
||||||
|
@ -176,6 +176,15 @@ pub fn black() -> Hsla {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn transparent_black() -> Hsla {
|
||||||
|
Hsla {
|
||||||
|
h: 0.,
|
||||||
|
s: 0.,
|
||||||
|
l: 0.,
|
||||||
|
a: 0.,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn white() -> Hsla {
|
pub fn white() -> Hsla {
|
||||||
Hsla {
|
Hsla {
|
||||||
h: 0.,
|
h: 0.,
|
||||||
@ -194,6 +203,15 @@ pub fn red() -> Hsla {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn blue() -> Hsla {
|
||||||
|
Hsla {
|
||||||
|
h: 0.6,
|
||||||
|
s: 1.,
|
||||||
|
l: 0.5,
|
||||||
|
a: 1.,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Hsla {
|
impl Hsla {
|
||||||
/// Returns true if the HSLA color is fully transparent, false otherwise.
|
/// Returns true if the HSLA color is fully transparent, false otherwise.
|
||||||
pub fn is_transparent(&self) -> bool {
|
pub fn is_transparent(&self) -> bool {
|
||||||
|
@ -134,7 +134,10 @@ where
|
|||||||
.layout(state, frame_state.as_mut().unwrap(), cx);
|
.layout(state, frame_state.as_mut().unwrap(), cx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ => panic!("must call initialize before layout"),
|
ElementRenderPhase::Start => panic!("must call initialize before layout"),
|
||||||
|
ElementRenderPhase::LayoutRequested { .. } | ElementRenderPhase::Painted => {
|
||||||
|
panic!("element rendered twice")
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
self.phase = ElementRenderPhase::LayoutRequested {
|
self.phase = ElementRenderPhase::LayoutRequested {
|
||||||
|
@ -2,8 +2,10 @@ mod div;
|
|||||||
mod img;
|
mod img;
|
||||||
mod svg;
|
mod svg;
|
||||||
mod text;
|
mod text;
|
||||||
|
mod uniform_list;
|
||||||
|
|
||||||
pub use div::*;
|
pub use div::*;
|
||||||
pub use img::*;
|
pub use img::*;
|
||||||
pub use svg::*;
|
pub use svg::*;
|
||||||
pub use text::*;
|
pub use text::*;
|
||||||
|
pub use uniform_list::*;
|
||||||
|
@ -1,28 +1,28 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
point, AnyElement, BorrowWindow, Bounds, Component, Element, ElementFocus, ElementId,
|
point, AnyElement, BorrowWindow, Bounds, Component, Element, ElementFocus, ElementId,
|
||||||
ElementInteraction, FocusDisabled, FocusEnabled, FocusHandle, FocusListeners, Focusable,
|
ElementInteractivity, FocusDisabled, FocusEnabled, FocusHandle, FocusListeners, Focusable,
|
||||||
GlobalElementId, GroupBounds, InteractiveElementState, LayoutId, Overflow, ParentElement,
|
GlobalElementId, GroupBounds, InteractiveElementState, LayoutId, Overflow, ParentElement,
|
||||||
Pixels, Point, SharedString, StatefulInteraction, StatefulInteractive, StatelessInteraction,
|
Pixels, Point, SharedString, StatefulInteractive, StatefulInteractivity, StatelessInteractive,
|
||||||
StatelessInteractive, Style, StyleRefinement, Styled, ViewContext, Visibility,
|
StatelessInteractivity, Style, StyleRefinement, Styled, ViewContext, Visibility,
|
||||||
};
|
};
|
||||||
use refineable::Refineable;
|
use refineable::Refineable;
|
||||||
use smallvec::SmallVec;
|
use smallvec::SmallVec;
|
||||||
|
|
||||||
pub struct Div<
|
pub struct Div<
|
||||||
V: 'static,
|
V: 'static,
|
||||||
I: ElementInteraction<V> = StatelessInteraction<V>,
|
I: ElementInteractivity<V> = StatelessInteractivity<V>,
|
||||||
F: ElementFocus<V> = FocusDisabled,
|
F: ElementFocus<V> = FocusDisabled,
|
||||||
> {
|
> {
|
||||||
interaction: I,
|
interactivity: I,
|
||||||
focus: F,
|
focus: F,
|
||||||
children: SmallVec<[AnyElement<V>; 2]>,
|
children: SmallVec<[AnyElement<V>; 2]>,
|
||||||
group: Option<SharedString>,
|
group: Option<SharedString>,
|
||||||
base_style: StyleRefinement,
|
base_style: StyleRefinement,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn div<V: 'static>() -> Div<V, StatelessInteraction<V>, FocusDisabled> {
|
pub fn div<V: 'static>() -> Div<V, StatelessInteractivity<V>, FocusDisabled> {
|
||||||
Div {
|
Div {
|
||||||
interaction: StatelessInteraction::default(),
|
interactivity: StatelessInteractivity::default(),
|
||||||
focus: FocusDisabled,
|
focus: FocusDisabled,
|
||||||
children: SmallVec::new(),
|
children: SmallVec::new(),
|
||||||
group: None,
|
group: None,
|
||||||
@ -30,14 +30,14 @@ pub fn div<V: 'static>() -> Div<V, StatelessInteraction<V>, FocusDisabled> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<V, F> Div<V, StatelessInteraction<V>, F>
|
impl<V, F> Div<V, StatelessInteractivity<V>, F>
|
||||||
where
|
where
|
||||||
V: 'static,
|
V: 'static,
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
pub fn id(self, id: impl Into<ElementId>) -> Div<V, StatefulInteraction<V>, F> {
|
pub fn id(self, id: impl Into<ElementId>) -> Div<V, StatefulInteractivity<V>, F> {
|
||||||
Div {
|
Div {
|
||||||
interaction: id.into().into(),
|
interactivity: id.into().into(),
|
||||||
focus: self.focus,
|
focus: self.focus,
|
||||||
children: self.children,
|
children: self.children,
|
||||||
group: self.group,
|
group: self.group,
|
||||||
@ -48,7 +48,7 @@ where
|
|||||||
|
|
||||||
impl<V, I, F> Div<V, I, F>
|
impl<V, I, F> Div<V, I, F>
|
||||||
where
|
where
|
||||||
I: ElementInteraction<V>,
|
I: ElementInteractivity<V>,
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
pub fn group(mut self, group: impl Into<SharedString>) -> Self {
|
pub fn group(mut self, group: impl Into<SharedString>) -> Self {
|
||||||
@ -98,16 +98,20 @@ where
|
|||||||
let mut computed_style = Style::default();
|
let mut computed_style = Style::default();
|
||||||
computed_style.refine(&self.base_style);
|
computed_style.refine(&self.base_style);
|
||||||
self.focus.refine_style(&mut computed_style, cx);
|
self.focus.refine_style(&mut computed_style, cx);
|
||||||
self.interaction
|
self.interactivity.refine_style(
|
||||||
.refine_style(&mut computed_style, bounds, &element_state.interactive, cx);
|
&mut computed_style,
|
||||||
|
bounds,
|
||||||
|
&element_state.interactive,
|
||||||
|
cx,
|
||||||
|
);
|
||||||
computed_style
|
computed_style
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<V: 'static> Div<V, StatefulInteraction<V>, FocusDisabled> {
|
impl<V: 'static> Div<V, StatefulInteractivity<V>, FocusDisabled> {
|
||||||
pub fn focusable(self) -> Div<V, StatefulInteraction<V>, FocusEnabled<V>> {
|
pub fn focusable(self) -> Div<V, StatefulInteractivity<V>, FocusEnabled<V>> {
|
||||||
Div {
|
Div {
|
||||||
interaction: self.interaction,
|
interactivity: self.interactivity,
|
||||||
focus: FocusEnabled::new(),
|
focus: FocusEnabled::new(),
|
||||||
children: self.children,
|
children: self.children,
|
||||||
group: self.group,
|
group: self.group,
|
||||||
@ -118,9 +122,9 @@ impl<V: 'static> Div<V, StatefulInteraction<V>, FocusDisabled> {
|
|||||||
pub fn track_focus(
|
pub fn track_focus(
|
||||||
self,
|
self,
|
||||||
handle: &FocusHandle,
|
handle: &FocusHandle,
|
||||||
) -> Div<V, StatefulInteraction<V>, FocusEnabled<V>> {
|
) -> Div<V, StatefulInteractivity<V>, FocusEnabled<V>> {
|
||||||
Div {
|
Div {
|
||||||
interaction: self.interaction,
|
interactivity: self.interactivity,
|
||||||
focus: FocusEnabled::tracked(handle),
|
focus: FocusEnabled::tracked(handle),
|
||||||
children: self.children,
|
children: self.children,
|
||||||
group: self.group,
|
group: self.group,
|
||||||
@ -145,13 +149,13 @@ impl<V: 'static> Div<V, StatefulInteraction<V>, FocusDisabled> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<V: 'static> Div<V, StatelessInteraction<V>, FocusDisabled> {
|
impl<V: 'static> Div<V, StatelessInteractivity<V>, FocusDisabled> {
|
||||||
pub fn track_focus(
|
pub fn track_focus(
|
||||||
self,
|
self,
|
||||||
handle: &FocusHandle,
|
handle: &FocusHandle,
|
||||||
) -> Div<V, StatefulInteraction<V>, FocusEnabled<V>> {
|
) -> Div<V, StatefulInteractivity<V>, FocusEnabled<V>> {
|
||||||
Div {
|
Div {
|
||||||
interaction: self.interaction.into_stateful(handle),
|
interactivity: self.interactivity.into_stateful(handle),
|
||||||
focus: handle.clone().into(),
|
focus: handle.clone().into(),
|
||||||
children: self.children,
|
children: self.children,
|
||||||
group: self.group,
|
group: self.group,
|
||||||
@ -163,7 +167,7 @@ impl<V: 'static> Div<V, StatelessInteraction<V>, FocusDisabled> {
|
|||||||
impl<V, I> Focusable<V> for Div<V, I, FocusEnabled<V>>
|
impl<V, I> Focusable<V> for Div<V, I, FocusEnabled<V>>
|
||||||
where
|
where
|
||||||
V: 'static,
|
V: 'static,
|
||||||
I: ElementInteraction<V>,
|
I: ElementInteractivity<V>,
|
||||||
{
|
{
|
||||||
fn focus_listeners(&mut self) -> &mut FocusListeners<V> {
|
fn focus_listeners(&mut self) -> &mut FocusListeners<V> {
|
||||||
&mut self.focus.focus_listeners
|
&mut self.focus.focus_listeners
|
||||||
@ -191,13 +195,13 @@ pub struct DivState {
|
|||||||
|
|
||||||
impl<V, I, F> Element<V> for Div<V, I, F>
|
impl<V, I, F> Element<V> for Div<V, I, F>
|
||||||
where
|
where
|
||||||
I: ElementInteraction<V>,
|
I: ElementInteractivity<V>,
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
type ElementState = DivState;
|
type ElementState = DivState;
|
||||||
|
|
||||||
fn id(&self) -> Option<ElementId> {
|
fn id(&self) -> Option<ElementId> {
|
||||||
self.interaction
|
self.interactivity
|
||||||
.as_stateful()
|
.as_stateful()
|
||||||
.map(|identified| identified.id.clone())
|
.map(|identified| identified.id.clone())
|
||||||
}
|
}
|
||||||
@ -209,15 +213,15 @@ where
|
|||||||
cx: &mut ViewContext<V>,
|
cx: &mut ViewContext<V>,
|
||||||
) -> Self::ElementState {
|
) -> Self::ElementState {
|
||||||
let mut element_state = element_state.unwrap_or_default();
|
let mut element_state = element_state.unwrap_or_default();
|
||||||
self.focus
|
self.interactivity.initialize(cx, |cx| {
|
||||||
.initialize(element_state.focus_handle.take(), cx, |focus_handle, cx| {
|
self.focus
|
||||||
element_state.focus_handle = focus_handle;
|
.initialize(element_state.focus_handle.take(), cx, |focus_handle, cx| {
|
||||||
self.interaction.initialize(cx, |cx| {
|
element_state.focus_handle = focus_handle;
|
||||||
for child in &mut self.children {
|
for child in &mut self.children {
|
||||||
child.initialize(view_state, cx);
|
child.initialize(view_state, cx);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
element_state
|
element_state
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -281,11 +285,11 @@ where
|
|||||||
(child_max - child_min).into()
|
(child_max - child_min).into()
|
||||||
};
|
};
|
||||||
|
|
||||||
cx.stack(z_index, |cx| {
|
cx.with_z_index(z_index, |cx| {
|
||||||
cx.stack(0, |cx| {
|
cx.with_z_index(0, |cx| {
|
||||||
style.paint(bounds, cx);
|
style.paint(bounds, cx);
|
||||||
this.focus.paint(bounds, cx);
|
this.focus.paint(bounds, cx);
|
||||||
this.interaction.paint(
|
this.interactivity.paint(
|
||||||
bounds,
|
bounds,
|
||||||
content_size,
|
content_size,
|
||||||
style.overflow,
|
style.overflow,
|
||||||
@ -293,7 +297,7 @@ where
|
|||||||
cx,
|
cx,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
cx.stack(1, |cx| {
|
cx.with_z_index(1, |cx| {
|
||||||
style.apply_text_style(cx, |cx| {
|
style.apply_text_style(cx, |cx| {
|
||||||
style.apply_overflow(bounds, cx, |cx| {
|
style.apply_overflow(bounds, cx, |cx| {
|
||||||
let scroll_offset = element_state.interactive.scroll_offset();
|
let scroll_offset = element_state.interactive.scroll_offset();
|
||||||
@ -316,7 +320,7 @@ where
|
|||||||
|
|
||||||
impl<V, I, F> Component<V> for Div<V, I, F>
|
impl<V, I, F> Component<V> for Div<V, I, F>
|
||||||
where
|
where
|
||||||
I: ElementInteraction<V>,
|
I: ElementInteractivity<V>,
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
fn render(self) -> AnyElement<V> {
|
fn render(self) -> AnyElement<V> {
|
||||||
@ -326,7 +330,7 @@ where
|
|||||||
|
|
||||||
impl<V, I, F> ParentElement<V> for Div<V, I, F>
|
impl<V, I, F> ParentElement<V> for Div<V, I, F>
|
||||||
where
|
where
|
||||||
I: ElementInteraction<V>,
|
I: ElementInteractivity<V>,
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
fn children_mut(&mut self) -> &mut SmallVec<[AnyElement<V>; 2]> {
|
fn children_mut(&mut self) -> &mut SmallVec<[AnyElement<V>; 2]> {
|
||||||
@ -336,7 +340,7 @@ where
|
|||||||
|
|
||||||
impl<V, I, F> Styled for Div<V, I, F>
|
impl<V, I, F> Styled for Div<V, I, F>
|
||||||
where
|
where
|
||||||
I: ElementInteraction<V>,
|
I: ElementInteractivity<V>,
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
fn style(&mut self) -> &mut StyleRefinement {
|
fn style(&mut self) -> &mut StyleRefinement {
|
||||||
@ -346,19 +350,19 @@ where
|
|||||||
|
|
||||||
impl<V, I, F> StatelessInteractive<V> for Div<V, I, F>
|
impl<V, I, F> StatelessInteractive<V> for Div<V, I, F>
|
||||||
where
|
where
|
||||||
I: ElementInteraction<V>,
|
I: ElementInteractivity<V>,
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
fn stateless_interaction(&mut self) -> &mut StatelessInteraction<V> {
|
fn stateless_interactivity(&mut self) -> &mut StatelessInteractivity<V> {
|
||||||
self.interaction.as_stateless_mut()
|
self.interactivity.as_stateless_mut()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<V, F> StatefulInteractive<V> for Div<V, StatefulInteraction<V>, F>
|
impl<V, F> StatefulInteractive<V> for Div<V, StatefulInteractivity<V>, F>
|
||||||
where
|
where
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
fn stateful_interaction(&mut self) -> &mut StatefulInteraction<V> {
|
fn stateful_interactivity(&mut self) -> &mut StatefulInteractivity<V> {
|
||||||
&mut self.interaction
|
&mut self.interactivity
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
div, AnyElement, BorrowWindow, Bounds, Component, Div, DivState, Element, ElementFocus,
|
div, AnyElement, BorrowWindow, Bounds, Component, Div, DivState, Element, ElementFocus,
|
||||||
ElementId, ElementInteraction, FocusDisabled, FocusEnabled, FocusListeners, Focusable,
|
ElementId, ElementInteractivity, FocusDisabled, FocusEnabled, FocusListeners, Focusable,
|
||||||
LayoutId, Pixels, SharedString, StatefulInteraction, StatefulInteractive, StatelessInteraction,
|
LayoutId, Pixels, SharedString, StatefulInteractive, StatefulInteractivity,
|
||||||
StatelessInteractive, StyleRefinement, Styled, ViewContext,
|
StatelessInteractive, StatelessInteractivity, StyleRefinement, Styled, ViewContext,
|
||||||
};
|
};
|
||||||
use futures::FutureExt;
|
use futures::FutureExt;
|
||||||
use util::ResultExt;
|
use util::ResultExt;
|
||||||
|
|
||||||
pub struct Img<
|
pub struct Img<
|
||||||
V: 'static,
|
V: 'static,
|
||||||
I: ElementInteraction<V> = StatelessInteraction<V>,
|
I: ElementInteractivity<V> = StatelessInteractivity<V>,
|
||||||
F: ElementFocus<V> = FocusDisabled,
|
F: ElementFocus<V> = FocusDisabled,
|
||||||
> {
|
> {
|
||||||
base: Div<V, I, F>,
|
base: Div<V, I, F>,
|
||||||
@ -17,7 +17,7 @@ pub struct Img<
|
|||||||
grayscale: bool,
|
grayscale: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn img<V: 'static>() -> Img<V, StatelessInteraction<V>, FocusDisabled> {
|
pub fn img<V: 'static>() -> Img<V, StatelessInteractivity<V>, FocusDisabled> {
|
||||||
Img {
|
Img {
|
||||||
base: div(),
|
base: div(),
|
||||||
uri: None,
|
uri: None,
|
||||||
@ -28,7 +28,7 @@ pub fn img<V: 'static>() -> Img<V, StatelessInteraction<V>, FocusDisabled> {
|
|||||||
impl<V, I, F> Img<V, I, F>
|
impl<V, I, F> Img<V, I, F>
|
||||||
where
|
where
|
||||||
V: 'static,
|
V: 'static,
|
||||||
I: ElementInteraction<V>,
|
I: ElementInteractivity<V>,
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
pub fn uri(mut self, uri: impl Into<SharedString>) -> Self {
|
pub fn uri(mut self, uri: impl Into<SharedString>) -> Self {
|
||||||
@ -42,11 +42,11 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<V, F> Img<V, StatelessInteraction<V>, F>
|
impl<V, F> Img<V, StatelessInteractivity<V>, F>
|
||||||
where
|
where
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
pub fn id(self, id: impl Into<ElementId>) -> Img<V, StatefulInteraction<V>, F> {
|
pub fn id(self, id: impl Into<ElementId>) -> Img<V, StatefulInteractivity<V>, F> {
|
||||||
Img {
|
Img {
|
||||||
base: self.base.id(id),
|
base: self.base.id(id),
|
||||||
uri: self.uri,
|
uri: self.uri,
|
||||||
@ -57,7 +57,7 @@ where
|
|||||||
|
|
||||||
impl<V, I, F> Component<V> for Img<V, I, F>
|
impl<V, I, F> Component<V> for Img<V, I, F>
|
||||||
where
|
where
|
||||||
I: ElementInteraction<V>,
|
I: ElementInteractivity<V>,
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
fn render(self) -> AnyElement<V> {
|
fn render(self) -> AnyElement<V> {
|
||||||
@ -67,7 +67,7 @@ where
|
|||||||
|
|
||||||
impl<V, I, F> Element<V> for Img<V, I, F>
|
impl<V, I, F> Element<V> for Img<V, I, F>
|
||||||
where
|
where
|
||||||
I: ElementInteraction<V>,
|
I: ElementInteractivity<V>,
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
type ElementState = DivState;
|
type ElementState = DivState;
|
||||||
@ -101,7 +101,7 @@ where
|
|||||||
element_state: &mut Self::ElementState,
|
element_state: &mut Self::ElementState,
|
||||||
cx: &mut ViewContext<V>,
|
cx: &mut ViewContext<V>,
|
||||||
) {
|
) {
|
||||||
cx.stack(0, |cx| {
|
cx.with_z_index(0, |cx| {
|
||||||
self.base.paint(bounds, view, element_state, cx);
|
self.base.paint(bounds, view, element_state, cx);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -118,7 +118,7 @@ where
|
|||||||
.and_then(ResultExt::log_err)
|
.and_then(ResultExt::log_err)
|
||||||
{
|
{
|
||||||
let corner_radii = corner_radii.to_pixels(bounds.size, cx.rem_size());
|
let corner_radii = corner_radii.to_pixels(bounds.size, cx.rem_size());
|
||||||
cx.stack(1, |cx| {
|
cx.with_z_index(1, |cx| {
|
||||||
cx.paint_image(bounds, corner_radii, data, self.grayscale)
|
cx.paint_image(bounds, corner_radii, data, self.grayscale)
|
||||||
.log_err()
|
.log_err()
|
||||||
});
|
});
|
||||||
@ -136,7 +136,7 @@ where
|
|||||||
|
|
||||||
impl<V, I, F> Styled for Img<V, I, F>
|
impl<V, I, F> Styled for Img<V, I, F>
|
||||||
where
|
where
|
||||||
I: ElementInteraction<V>,
|
I: ElementInteractivity<V>,
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
fn style(&mut self) -> &mut StyleRefinement {
|
fn style(&mut self) -> &mut StyleRefinement {
|
||||||
@ -146,27 +146,27 @@ where
|
|||||||
|
|
||||||
impl<V, I, F> StatelessInteractive<V> for Img<V, I, F>
|
impl<V, I, F> StatelessInteractive<V> for Img<V, I, F>
|
||||||
where
|
where
|
||||||
I: ElementInteraction<V>,
|
I: ElementInteractivity<V>,
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
fn stateless_interaction(&mut self) -> &mut StatelessInteraction<V> {
|
fn stateless_interactivity(&mut self) -> &mut StatelessInteractivity<V> {
|
||||||
self.base.stateless_interaction()
|
self.base.stateless_interactivity()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<V, F> StatefulInteractive<V> for Img<V, StatefulInteraction<V>, F>
|
impl<V, F> StatefulInteractive<V> for Img<V, StatefulInteractivity<V>, F>
|
||||||
where
|
where
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
fn stateful_interaction(&mut self) -> &mut StatefulInteraction<V> {
|
fn stateful_interactivity(&mut self) -> &mut StatefulInteractivity<V> {
|
||||||
self.base.stateful_interaction()
|
self.base.stateful_interactivity()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<V, I> Focusable<V> for Img<V, I, FocusEnabled<V>>
|
impl<V, I> Focusable<V> for Img<V, I, FocusEnabled<V>>
|
||||||
where
|
where
|
||||||
V: 'static,
|
V: 'static,
|
||||||
I: ElementInteraction<V>,
|
I: ElementInteractivity<V>,
|
||||||
{
|
{
|
||||||
fn focus_listeners(&mut self) -> &mut FocusListeners<V> {
|
fn focus_listeners(&mut self) -> &mut FocusListeners<V> {
|
||||||
self.base.focus_listeners()
|
self.base.focus_listeners()
|
||||||
|
@ -1,21 +1,21 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
div, AnyElement, Bounds, Component, Div, DivState, Element, ElementFocus, ElementId,
|
div, AnyElement, Bounds, Component, Div, DivState, Element, ElementFocus, ElementId,
|
||||||
ElementInteraction, FocusDisabled, FocusEnabled, FocusListeners, Focusable, LayoutId, Pixels,
|
ElementInteractivity, FocusDisabled, FocusEnabled, FocusListeners, Focusable, LayoutId, Pixels,
|
||||||
SharedString, StatefulInteraction, StatefulInteractive, StatelessInteraction,
|
SharedString, StatefulInteractive, StatefulInteractivity, StatelessInteractive,
|
||||||
StatelessInteractive, StyleRefinement, Styled, ViewContext,
|
StatelessInteractivity, StyleRefinement, Styled, ViewContext,
|
||||||
};
|
};
|
||||||
use util::ResultExt;
|
use util::ResultExt;
|
||||||
|
|
||||||
pub struct Svg<
|
pub struct Svg<
|
||||||
V: 'static,
|
V: 'static,
|
||||||
I: ElementInteraction<V> = StatelessInteraction<V>,
|
I: ElementInteractivity<V> = StatelessInteractivity<V>,
|
||||||
F: ElementFocus<V> = FocusDisabled,
|
F: ElementFocus<V> = FocusDisabled,
|
||||||
> {
|
> {
|
||||||
base: Div<V, I, F>,
|
base: Div<V, I, F>,
|
||||||
path: Option<SharedString>,
|
path: Option<SharedString>,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn svg<V: 'static>() -> Svg<V, StatelessInteraction<V>, FocusDisabled> {
|
pub fn svg<V: 'static>() -> Svg<V, StatelessInteractivity<V>, FocusDisabled> {
|
||||||
Svg {
|
Svg {
|
||||||
base: div(),
|
base: div(),
|
||||||
path: None,
|
path: None,
|
||||||
@ -24,7 +24,7 @@ pub fn svg<V: 'static>() -> Svg<V, StatelessInteraction<V>, FocusDisabled> {
|
|||||||
|
|
||||||
impl<V, I, F> Svg<V, I, F>
|
impl<V, I, F> Svg<V, I, F>
|
||||||
where
|
where
|
||||||
I: ElementInteraction<V>,
|
I: ElementInteractivity<V>,
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
pub fn path(mut self, path: impl Into<SharedString>) -> Self {
|
pub fn path(mut self, path: impl Into<SharedString>) -> Self {
|
||||||
@ -33,11 +33,11 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<V, F> Svg<V, StatelessInteraction<V>, F>
|
impl<V, F> Svg<V, StatelessInteractivity<V>, F>
|
||||||
where
|
where
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
pub fn id(self, id: impl Into<ElementId>) -> Svg<V, StatefulInteraction<V>, F> {
|
pub fn id(self, id: impl Into<ElementId>) -> Svg<V, StatefulInteractivity<V>, F> {
|
||||||
Svg {
|
Svg {
|
||||||
base: self.base.id(id),
|
base: self.base.id(id),
|
||||||
path: self.path,
|
path: self.path,
|
||||||
@ -47,7 +47,7 @@ where
|
|||||||
|
|
||||||
impl<V, I, F> Component<V> for Svg<V, I, F>
|
impl<V, I, F> Component<V> for Svg<V, I, F>
|
||||||
where
|
where
|
||||||
I: ElementInteraction<V>,
|
I: ElementInteractivity<V>,
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
fn render(self) -> AnyElement<V> {
|
fn render(self) -> AnyElement<V> {
|
||||||
@ -57,7 +57,7 @@ where
|
|||||||
|
|
||||||
impl<V, I, F> Element<V> for Svg<V, I, F>
|
impl<V, I, F> Element<V> for Svg<V, I, F>
|
||||||
where
|
where
|
||||||
I: ElementInteraction<V>,
|
I: ElementInteractivity<V>,
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
type ElementState = DivState;
|
type ElementState = DivState;
|
||||||
@ -107,7 +107,7 @@ where
|
|||||||
|
|
||||||
impl<V, I, F> Styled for Svg<V, I, F>
|
impl<V, I, F> Styled for Svg<V, I, F>
|
||||||
where
|
where
|
||||||
I: ElementInteraction<V>,
|
I: ElementInteractivity<V>,
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
fn style(&mut self) -> &mut StyleRefinement {
|
fn style(&mut self) -> &mut StyleRefinement {
|
||||||
@ -117,27 +117,27 @@ where
|
|||||||
|
|
||||||
impl<V, I, F> StatelessInteractive<V> for Svg<V, I, F>
|
impl<V, I, F> StatelessInteractive<V> for Svg<V, I, F>
|
||||||
where
|
where
|
||||||
I: ElementInteraction<V>,
|
I: ElementInteractivity<V>,
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
fn stateless_interaction(&mut self) -> &mut StatelessInteraction<V> {
|
fn stateless_interactivity(&mut self) -> &mut StatelessInteractivity<V> {
|
||||||
self.base.stateless_interaction()
|
self.base.stateless_interactivity()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<V, F> StatefulInteractive<V> for Svg<V, StatefulInteraction<V>, F>
|
impl<V, F> StatefulInteractive<V> for Svg<V, StatefulInteractivity<V>, F>
|
||||||
where
|
where
|
||||||
V: 'static,
|
V: 'static,
|
||||||
F: ElementFocus<V>,
|
F: ElementFocus<V>,
|
||||||
{
|
{
|
||||||
fn stateful_interaction(&mut self) -> &mut StatefulInteraction<V> {
|
fn stateful_interactivity(&mut self) -> &mut StatefulInteractivity<V> {
|
||||||
self.base.stateful_interaction()
|
self.base.stateful_interactivity()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<V: 'static, I> Focusable<V> for Svg<V, I, FocusEnabled<V>>
|
impl<V: 'static, I> Focusable<V> for Svg<V, I, FocusEnabled<V>>
|
||||||
where
|
where
|
||||||
I: ElementInteraction<V>,
|
I: ElementInteractivity<V>,
|
||||||
{
|
{
|
||||||
fn focus_listeners(&mut self) -> &mut FocusListeners<V> {
|
fn focus_listeners(&mut self) -> &mut FocusListeners<V> {
|
||||||
self.base.focus_listeners()
|
self.base.focus_listeners()
|
||||||
|
@ -74,7 +74,7 @@ impl<V: 'static> Element<V> for Text<V> {
|
|||||||
) -> LayoutId {
|
) -> LayoutId {
|
||||||
let text_system = cx.text_system().clone();
|
let text_system = cx.text_system().clone();
|
||||||
let text_style = cx.text_style();
|
let text_style = cx.text_style();
|
||||||
let font_size = text_style.font_size * cx.rem_size();
|
let font_size = text_style.font_size.to_pixels(cx.rem_size());
|
||||||
let line_height = text_style
|
let line_height = text_style
|
||||||
.line_height
|
.line_height
|
||||||
.to_pixels(font_size.into(), cx.rem_size());
|
.to_pixels(font_size.into(), cx.rem_size());
|
||||||
@ -127,6 +127,7 @@ impl<V: 'static> Element<V> for Text<V> {
|
|||||||
let element_state = element_state
|
let element_state = element_state
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.expect("measurement has not been performed");
|
.expect("measurement has not been performed");
|
||||||
|
|
||||||
let line_height = element_state.line_height;
|
let line_height = element_state.line_height;
|
||||||
let mut line_origin = bounds.origin;
|
let mut line_origin = bounds.origin;
|
||||||
for line in &element_state.lines {
|
for line in &element_state.lines {
|
||||||
|
244
crates/gpui2/src/elements/uniform_list.rs
Normal file
244
crates/gpui2/src/elements/uniform_list.rs
Normal file
@ -0,0 +1,244 @@
|
|||||||
|
use crate::{
|
||||||
|
point, px, AnyElement, AvailableSpace, BorrowWindow, Bounds, Component, Element, ElementId,
|
||||||
|
ElementInteractivity, InteractiveElementState, LayoutId, Pixels, Point, Size,
|
||||||
|
StatefulInteractive, StatefulInteractivity, StatelessInteractive, StatelessInteractivity,
|
||||||
|
StyleRefinement, Styled, ViewContext,
|
||||||
|
};
|
||||||
|
use parking_lot::Mutex;
|
||||||
|
use smallvec::SmallVec;
|
||||||
|
use std::{cmp, ops::Range, sync::Arc};
|
||||||
|
use taffy::style::Overflow;
|
||||||
|
|
||||||
|
pub fn uniform_list<Id, V, C>(
|
||||||
|
id: Id,
|
||||||
|
item_count: usize,
|
||||||
|
f: impl 'static + Fn(&mut V, Range<usize>, &mut ViewContext<V>) -> SmallVec<[C; 64]>,
|
||||||
|
) -> UniformList<V>
|
||||||
|
where
|
||||||
|
Id: Into<ElementId>,
|
||||||
|
V: 'static,
|
||||||
|
C: Component<V>,
|
||||||
|
{
|
||||||
|
let id = id.into();
|
||||||
|
UniformList {
|
||||||
|
id: id.clone(),
|
||||||
|
style: Default::default(),
|
||||||
|
item_count,
|
||||||
|
render_items: Box::new(move |view, visible_range, cx| {
|
||||||
|
f(view, visible_range, cx)
|
||||||
|
.into_iter()
|
||||||
|
.map(|component| component.render())
|
||||||
|
.collect()
|
||||||
|
}),
|
||||||
|
interactivity: id.into(),
|
||||||
|
scroll_handle: None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct UniformList<V: 'static> {
|
||||||
|
id: ElementId,
|
||||||
|
style: StyleRefinement,
|
||||||
|
item_count: usize,
|
||||||
|
render_items: Box<
|
||||||
|
dyn for<'a> Fn(
|
||||||
|
&'a mut V,
|
||||||
|
Range<usize>,
|
||||||
|
&'a mut ViewContext<V>,
|
||||||
|
) -> SmallVec<[AnyElement<V>; 64]>,
|
||||||
|
>,
|
||||||
|
interactivity: StatefulInteractivity<V>,
|
||||||
|
scroll_handle: Option<UniformListScrollHandle>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone)]
|
||||||
|
pub struct UniformListScrollHandle(Arc<Mutex<Option<ScrollHandleState>>>);
|
||||||
|
|
||||||
|
#[derive(Clone, Debug)]
|
||||||
|
struct ScrollHandleState {
|
||||||
|
item_height: Pixels,
|
||||||
|
list_height: Pixels,
|
||||||
|
scroll_offset: Arc<Mutex<Point<Pixels>>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl UniformListScrollHandle {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Self(Arc::new(Mutex::new(None)))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn scroll_to_item(&self, ix: usize) {
|
||||||
|
if let Some(state) = &*self.0.lock() {
|
||||||
|
let mut scroll_offset = state.scroll_offset.lock();
|
||||||
|
let item_top = state.item_height * ix;
|
||||||
|
let item_bottom = item_top + state.item_height;
|
||||||
|
let scroll_top = -scroll_offset.y;
|
||||||
|
if item_top < scroll_top {
|
||||||
|
scroll_offset.y = -item_top;
|
||||||
|
} else if item_bottom > scroll_top + state.list_height {
|
||||||
|
scroll_offset.y = -(item_bottom - state.list_height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<V: 'static> Styled for UniformList<V> {
|
||||||
|
fn style(&mut self) -> &mut StyleRefinement {
|
||||||
|
&mut self.style
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<V: 'static> Element<V> for UniformList<V> {
|
||||||
|
type ElementState = InteractiveElementState;
|
||||||
|
|
||||||
|
fn id(&self) -> Option<crate::ElementId> {
|
||||||
|
Some(self.id.clone())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn initialize(
|
||||||
|
&mut self,
|
||||||
|
_: &mut V,
|
||||||
|
element_state: Option<Self::ElementState>,
|
||||||
|
_: &mut ViewContext<V>,
|
||||||
|
) -> Self::ElementState {
|
||||||
|
element_state.unwrap_or_default()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn layout(
|
||||||
|
&mut self,
|
||||||
|
_view_state: &mut V,
|
||||||
|
_element_state: &mut Self::ElementState,
|
||||||
|
cx: &mut ViewContext<V>,
|
||||||
|
) -> LayoutId {
|
||||||
|
cx.request_layout(&self.computed_style(), None)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn paint(
|
||||||
|
&mut self,
|
||||||
|
bounds: crate::Bounds<crate::Pixels>,
|
||||||
|
view_state: &mut V,
|
||||||
|
element_state: &mut Self::ElementState,
|
||||||
|
cx: &mut ViewContext<V>,
|
||||||
|
) {
|
||||||
|
let style = self.computed_style();
|
||||||
|
style.paint(bounds, cx);
|
||||||
|
|
||||||
|
let border = style.border_widths.to_pixels(cx.rem_size());
|
||||||
|
let padding = style.padding.to_pixels(bounds.size.into(), cx.rem_size());
|
||||||
|
|
||||||
|
let padded_bounds = Bounds::from_corners(
|
||||||
|
bounds.origin + point(border.left + padding.left, border.top + padding.top),
|
||||||
|
bounds.lower_right()
|
||||||
|
- point(border.right + padding.right, border.bottom + padding.bottom),
|
||||||
|
);
|
||||||
|
|
||||||
|
cx.with_z_index(style.z_index.unwrap_or(0), |cx| {
|
||||||
|
let content_size;
|
||||||
|
if self.item_count > 0 {
|
||||||
|
let item_height = self.measure_item_height(view_state, padded_bounds, cx);
|
||||||
|
if let Some(scroll_handle) = self.scroll_handle.clone() {
|
||||||
|
scroll_handle.0.lock().replace(ScrollHandleState {
|
||||||
|
item_height,
|
||||||
|
list_height: padded_bounds.size.height,
|
||||||
|
scroll_offset: element_state.track_scroll_offset(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
let visible_item_count = if item_height > px(0.) {
|
||||||
|
(padded_bounds.size.height / item_height).ceil() as usize + 1
|
||||||
|
} else {
|
||||||
|
0
|
||||||
|
};
|
||||||
|
let scroll_offset = element_state
|
||||||
|
.scroll_offset()
|
||||||
|
.map_or((0.0).into(), |offset| offset.y);
|
||||||
|
let first_visible_element_ix = (-scroll_offset / item_height).floor() as usize;
|
||||||
|
let visible_range = first_visible_element_ix
|
||||||
|
..cmp::min(
|
||||||
|
first_visible_element_ix + visible_item_count,
|
||||||
|
self.item_count,
|
||||||
|
);
|
||||||
|
|
||||||
|
let mut items = (self.render_items)(view_state, visible_range.clone(), cx);
|
||||||
|
|
||||||
|
content_size = Size {
|
||||||
|
width: padded_bounds.size.width,
|
||||||
|
height: item_height * self.item_count,
|
||||||
|
};
|
||||||
|
|
||||||
|
cx.with_z_index(1, |cx| {
|
||||||
|
for (item, ix) in items.iter_mut().zip(visible_range) {
|
||||||
|
item.initialize(view_state, cx);
|
||||||
|
|
||||||
|
let layout_id = item.layout(view_state, cx);
|
||||||
|
cx.compute_layout(
|
||||||
|
layout_id,
|
||||||
|
Size {
|
||||||
|
width: AvailableSpace::Definite(bounds.size.width),
|
||||||
|
height: AvailableSpace::Definite(item_height),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
let offset =
|
||||||
|
padded_bounds.origin + point(px(0.), item_height * ix + scroll_offset);
|
||||||
|
cx.with_element_offset(Some(offset), |cx| item.paint(view_state, cx))
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
content_size = Size {
|
||||||
|
width: bounds.size.width,
|
||||||
|
height: px(0.),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
let overflow = point(style.overflow.x, Overflow::Scroll);
|
||||||
|
|
||||||
|
cx.with_z_index(0, |cx| {
|
||||||
|
self.interactivity
|
||||||
|
.paint(bounds, content_size, overflow, element_state, cx);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<V> UniformList<V> {
|
||||||
|
fn measure_item_height(
|
||||||
|
&self,
|
||||||
|
view_state: &mut V,
|
||||||
|
list_bounds: Bounds<Pixels>,
|
||||||
|
cx: &mut ViewContext<V>,
|
||||||
|
) -> Pixels {
|
||||||
|
let mut items = (self.render_items)(view_state, 0..1, cx);
|
||||||
|
debug_assert!(items.len() == 1);
|
||||||
|
let mut item_to_measure = items.pop().unwrap();
|
||||||
|
item_to_measure.initialize(view_state, cx);
|
||||||
|
let layout_id = item_to_measure.layout(view_state, cx);
|
||||||
|
cx.compute_layout(
|
||||||
|
layout_id,
|
||||||
|
Size {
|
||||||
|
width: AvailableSpace::Definite(list_bounds.size.width),
|
||||||
|
height: AvailableSpace::MinContent,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
cx.layout_bounds(layout_id).size.height
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn track_scroll(mut self, handle: UniformListScrollHandle) -> Self {
|
||||||
|
self.scroll_handle = Some(handle);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<V: 'static> StatelessInteractive<V> for UniformList<V> {
|
||||||
|
fn stateless_interactivity(&mut self) -> &mut StatelessInteractivity<V> {
|
||||||
|
self.interactivity.as_stateless_mut()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<V: 'static> StatefulInteractive<V> for UniformList<V> {
|
||||||
|
fn stateful_interactivity(&mut self) -> &mut StatefulInteractivity<V> {
|
||||||
|
&mut self.interactivity
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<V: 'static> Component<V> for UniformList<V> {
|
||||||
|
fn render(self) -> AnyElement<V> {
|
||||||
|
AnyElement::new(self)
|
||||||
|
}
|
||||||
|
}
|
@ -71,7 +71,8 @@ impl<T> Future for Task<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
type AnyLocalFuture<R> = Pin<Box<dyn 'static + Future<Output = R>>>;
|
||||||
|
type AnyFuture<R> = Pin<Box<dyn 'static + Send + Future<Output = R>>>;
|
||||||
impl BackgroundExecutor {
|
impl BackgroundExecutor {
|
||||||
pub fn new(dispatcher: Arc<dyn PlatformDispatcher>) -> Self {
|
pub fn new(dispatcher: Arc<dyn PlatformDispatcher>) -> Self {
|
||||||
Self { dispatcher }
|
Self { dispatcher }
|
||||||
@ -84,10 +85,16 @@ impl BackgroundExecutor {
|
|||||||
R: Send + 'static,
|
R: Send + 'static,
|
||||||
{
|
{
|
||||||
let dispatcher = self.dispatcher.clone();
|
let dispatcher = self.dispatcher.clone();
|
||||||
let (runnable, task) =
|
fn inner<R: Send + 'static>(
|
||||||
async_task::spawn(future, move |runnable| dispatcher.dispatch(runnable));
|
dispatcher: Arc<dyn PlatformDispatcher>,
|
||||||
runnable.schedule();
|
future: AnyFuture<R>,
|
||||||
Task::Spawned(task)
|
) -> Task<R> {
|
||||||
|
let (runnable, task) =
|
||||||
|
async_task::spawn(future, move |runnable| dispatcher.dispatch(runnable));
|
||||||
|
runnable.schedule();
|
||||||
|
Task::Spawned(task)
|
||||||
|
}
|
||||||
|
inner::<R>(dispatcher, Box::pin(future))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(test, feature = "test-support"))]
|
#[cfg(any(test, feature = "test-support"))]
|
||||||
@ -251,11 +258,17 @@ impl ForegroundExecutor {
|
|||||||
R: 'static,
|
R: 'static,
|
||||||
{
|
{
|
||||||
let dispatcher = self.dispatcher.clone();
|
let dispatcher = self.dispatcher.clone();
|
||||||
let (runnable, task) = async_task::spawn_local(future, move |runnable| {
|
fn inner<R: 'static>(
|
||||||
dispatcher.dispatch_on_main_thread(runnable)
|
dispatcher: Arc<dyn PlatformDispatcher>,
|
||||||
});
|
future: AnyLocalFuture<R>,
|
||||||
runnable.schedule();
|
) -> Task<R> {
|
||||||
Task::Spawned(task)
|
let (runnable, task) = async_task::spawn_local(future, move |runnable| {
|
||||||
|
dispatcher.dispatch_on_main_thread(runnable)
|
||||||
|
});
|
||||||
|
runnable.schedule();
|
||||||
|
Task::Spawned(task)
|
||||||
|
}
|
||||||
|
inner::<R>(dispatcher, Box::pin(future))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,6 +25,10 @@ impl<T: Clone + Debug + Default> Point<T> {
|
|||||||
Self { x, y }
|
Self { x, y }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn zero() -> Self {
|
||||||
|
Self::new(T::default(), T::default())
|
||||||
|
}
|
||||||
|
|
||||||
pub fn map<U: Clone + Default + Debug>(&self, f: impl Fn(T) -> U) -> Point<U> {
|
pub fn map<U: Clone + Default + Debug>(&self, f: impl Fn(T) -> U) -> Point<U> {
|
||||||
Point {
|
Point {
|
||||||
x: f(self.x.clone()),
|
x: f(self.x.clone()),
|
||||||
@ -120,6 +124,10 @@ where
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn clamp(&self, min: &Self, max: &Self) -> Self {
|
||||||
|
self.max(min).min(max)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T: Clone + Default + Debug> Clone for Point<T> {
|
impl<T: Clone + Default + Debug> Clone for Point<T> {
|
||||||
@ -259,6 +267,24 @@ impl From<Size<Pixels>> for Size<GlobalPixels> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl From<Size<Pixels>> for Size<DefiniteLength> {
|
||||||
|
fn from(size: Size<Pixels>) -> Self {
|
||||||
|
Size {
|
||||||
|
width: size.width.into(),
|
||||||
|
height: size.height.into(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<Size<Pixels>> for Size<AbsoluteLength> {
|
||||||
|
fn from(size: Size<Pixels>) -> Self {
|
||||||
|
Size {
|
||||||
|
width: size.width.into(),
|
||||||
|
height: size.height.into(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Size<Length> {
|
impl Size<Length> {
|
||||||
pub fn full() -> Self {
|
pub fn full() -> Self {
|
||||||
Self {
|
Self {
|
||||||
@ -492,6 +518,15 @@ where
|
|||||||
impl<T: Clone + Default + Debug + Copy> Copy for Edges<T> {}
|
impl<T: Clone + Default + Debug + Copy> Copy for Edges<T> {}
|
||||||
|
|
||||||
impl<T: Clone + Default + Debug> Edges<T> {
|
impl<T: Clone + Default + Debug> Edges<T> {
|
||||||
|
pub fn all(value: T) -> Self {
|
||||||
|
Self {
|
||||||
|
top: value.clone(),
|
||||||
|
right: value.clone(),
|
||||||
|
bottom: value.clone(),
|
||||||
|
left: value,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn map<U>(&self, f: impl Fn(&T) -> U) -> Edges<U>
|
pub fn map<U>(&self, f: impl Fn(&T) -> U) -> Edges<U>
|
||||||
where
|
where
|
||||||
U: Clone + Default + Debug,
|
U: Clone + Default + Debug,
|
||||||
@ -541,6 +576,15 @@ impl Edges<DefiniteLength> {
|
|||||||
left: px(0.).into(),
|
left: px(0.).into(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn to_pixels(&self, parent_size: Size<AbsoluteLength>, rem_size: Pixels) -> Edges<Pixels> {
|
||||||
|
Edges {
|
||||||
|
top: self.top.to_pixels(parent_size.height, rem_size),
|
||||||
|
right: self.right.to_pixels(parent_size.width, rem_size),
|
||||||
|
bottom: self.bottom.to_pixels(parent_size.height, rem_size),
|
||||||
|
left: self.left.to_pixels(parent_size.width, rem_size),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Edges<AbsoluteLength> {
|
impl Edges<AbsoluteLength> {
|
||||||
@ -672,16 +716,16 @@ impl<T> Copy for Corners<T> where T: Copy + Clone + Default + Debug {}
|
|||||||
pub struct Pixels(pub(crate) f32);
|
pub struct Pixels(pub(crate) f32);
|
||||||
|
|
||||||
impl std::ops::Div for Pixels {
|
impl std::ops::Div for Pixels {
|
||||||
type Output = Self;
|
type Output = f32;
|
||||||
|
|
||||||
fn div(self, rhs: Self) -> Self::Output {
|
fn div(self, rhs: Self) -> Self::Output {
|
||||||
Self(self.0 / rhs.0)
|
self.0 / rhs.0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl std::ops::DivAssign for Pixels {
|
impl std::ops::DivAssign for Pixels {
|
||||||
fn div_assign(&mut self, rhs: Self) {
|
fn div_assign(&mut self, rhs: Self) {
|
||||||
self.0 /= rhs.0;
|
*self = Self(self.0 / rhs.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -730,16 +774,9 @@ impl MulAssign<f32> for Pixels {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Pixels {
|
impl Pixels {
|
||||||
|
pub const ZERO: Pixels = Pixels(0.0);
|
||||||
pub const MAX: Pixels = Pixels(f32::MAX);
|
pub const MAX: Pixels = Pixels(f32::MAX);
|
||||||
|
|
||||||
pub fn as_usize(&self) -> usize {
|
|
||||||
self.0 as usize
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn as_isize(&self) -> isize {
|
|
||||||
self.0 as isize
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn floor(&self) -> Self {
|
pub fn floor(&self) -> Self {
|
||||||
Self(self.0.floor())
|
Self(self.0.floor())
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
#[macro_use]
|
||||||
mod action;
|
mod action;
|
||||||
mod app;
|
mod app;
|
||||||
mod assets;
|
mod assets;
|
||||||
@ -23,6 +24,7 @@ mod text_system;
|
|||||||
mod util;
|
mod util;
|
||||||
mod view;
|
mod view;
|
||||||
mod window;
|
mod window;
|
||||||
|
mod window_input_handler;
|
||||||
|
|
||||||
mod private {
|
mod private {
|
||||||
/// A mechanism for restricting implementations of a trait to only those in GPUI.
|
/// A mechanism for restricting implementations of a trait to only those in GPUI.
|
||||||
@ -35,6 +37,7 @@ pub use anyhow::Result;
|
|||||||
pub use app::*;
|
pub use app::*;
|
||||||
pub use assets::*;
|
pub use assets::*;
|
||||||
pub use color::*;
|
pub use color::*;
|
||||||
|
pub use ctor::ctor;
|
||||||
pub use element::*;
|
pub use element::*;
|
||||||
pub use elements::*;
|
pub use elements::*;
|
||||||
pub use executor::*;
|
pub use executor::*;
|
||||||
@ -63,6 +66,7 @@ pub use text_system::*;
|
|||||||
pub use util::arc_cow::ArcCow;
|
pub use util::arc_cow::ArcCow;
|
||||||
pub use view::*;
|
pub use view::*;
|
||||||
pub use window::*;
|
pub use window::*;
|
||||||
|
pub use window_input_handler::*;
|
||||||
|
|
||||||
use derive_more::{Deref, DerefMut};
|
use derive_more::{Deref, DerefMut};
|
||||||
use std::{
|
use std::{
|
||||||
|
@ -25,13 +25,13 @@ const TOOLTIP_DELAY: Duration = Duration::from_millis(500);
|
|||||||
const TOOLTIP_OFFSET: Point<Pixels> = Point::new(px(10.0), px(8.0));
|
const TOOLTIP_OFFSET: Point<Pixels> = Point::new(px(10.0), px(8.0));
|
||||||
|
|
||||||
pub trait StatelessInteractive<V: 'static>: Element<V> {
|
pub trait StatelessInteractive<V: 'static>: Element<V> {
|
||||||
fn stateless_interaction(&mut self) -> &mut StatelessInteraction<V>;
|
fn stateless_interactivity(&mut self) -> &mut StatelessInteractivity<V>;
|
||||||
|
|
||||||
fn hover(mut self, f: impl FnOnce(StyleRefinement) -> StyleRefinement) -> Self
|
fn hover(mut self, f: impl FnOnce(StyleRefinement) -> StyleRefinement) -> Self
|
||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
self.stateless_interaction().hover_style = f(StyleRefinement::default());
|
self.stateless_interactivity().hover_style = f(StyleRefinement::default());
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ pub trait StatelessInteractive<V: 'static>: Element<V> {
|
|||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
self.stateless_interaction().group_hover_style = Some(GroupStyle {
|
self.stateless_interactivity().group_hover_style = Some(GroupStyle {
|
||||||
group: group_name.into(),
|
group: group_name.into(),
|
||||||
style: f(StyleRefinement::default()),
|
style: f(StyleRefinement::default()),
|
||||||
});
|
});
|
||||||
@ -58,7 +58,7 @@ pub trait StatelessInteractive<V: 'static>: Element<V> {
|
|||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
self.stateless_interaction()
|
self.stateless_interactivity()
|
||||||
.mouse_down_listeners
|
.mouse_down_listeners
|
||||||
.push(Box::new(move |view, event, bounds, phase, cx| {
|
.push(Box::new(move |view, event, bounds, phase, cx| {
|
||||||
if phase == DispatchPhase::Bubble
|
if phase == DispatchPhase::Bubble
|
||||||
@ -79,7 +79,7 @@ pub trait StatelessInteractive<V: 'static>: Element<V> {
|
|||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
self.stateless_interaction()
|
self.stateless_interactivity()
|
||||||
.mouse_up_listeners
|
.mouse_up_listeners
|
||||||
.push(Box::new(move |view, event, bounds, phase, cx| {
|
.push(Box::new(move |view, event, bounds, phase, cx| {
|
||||||
if phase == DispatchPhase::Bubble
|
if phase == DispatchPhase::Bubble
|
||||||
@ -100,7 +100,7 @@ pub trait StatelessInteractive<V: 'static>: Element<V> {
|
|||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
self.stateless_interaction()
|
self.stateless_interactivity()
|
||||||
.mouse_down_listeners
|
.mouse_down_listeners
|
||||||
.push(Box::new(move |view, event, bounds, phase, cx| {
|
.push(Box::new(move |view, event, bounds, phase, cx| {
|
||||||
if phase == DispatchPhase::Capture
|
if phase == DispatchPhase::Capture
|
||||||
@ -121,7 +121,7 @@ pub trait StatelessInteractive<V: 'static>: Element<V> {
|
|||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
self.stateless_interaction()
|
self.stateless_interactivity()
|
||||||
.mouse_up_listeners
|
.mouse_up_listeners
|
||||||
.push(Box::new(move |view, event, bounds, phase, cx| {
|
.push(Box::new(move |view, event, bounds, phase, cx| {
|
||||||
if phase == DispatchPhase::Capture
|
if phase == DispatchPhase::Capture
|
||||||
@ -141,7 +141,7 @@ pub trait StatelessInteractive<V: 'static>: Element<V> {
|
|||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
self.stateless_interaction()
|
self.stateless_interactivity()
|
||||||
.mouse_move_listeners
|
.mouse_move_listeners
|
||||||
.push(Box::new(move |view, event, bounds, phase, cx| {
|
.push(Box::new(move |view, event, bounds, phase, cx| {
|
||||||
if phase == DispatchPhase::Bubble && bounds.contains_point(&event.position) {
|
if phase == DispatchPhase::Bubble && bounds.contains_point(&event.position) {
|
||||||
@ -158,7 +158,7 @@ pub trait StatelessInteractive<V: 'static>: Element<V> {
|
|||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
self.stateless_interaction()
|
self.stateless_interactivity()
|
||||||
.scroll_wheel_listeners
|
.scroll_wheel_listeners
|
||||||
.push(Box::new(move |view, event, bounds, phase, cx| {
|
.push(Box::new(move |view, event, bounds, phase, cx| {
|
||||||
if phase == DispatchPhase::Bubble && bounds.contains_point(&event.position) {
|
if phase == DispatchPhase::Bubble && bounds.contains_point(&event.position) {
|
||||||
@ -174,23 +174,48 @@ pub trait StatelessInteractive<V: 'static>: Element<V> {
|
|||||||
C: TryInto<DispatchContext>,
|
C: TryInto<DispatchContext>,
|
||||||
C::Error: Debug,
|
C::Error: Debug,
|
||||||
{
|
{
|
||||||
self.stateless_interaction().dispatch_context =
|
self.stateless_interactivity().dispatch_context =
|
||||||
context.try_into().expect("invalid dispatch context");
|
context.try_into().expect("invalid dispatch context");
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
fn on_action<A: 'static>(
|
/// Capture the given action, fires during the capture phase
|
||||||
|
fn capture_action<A: 'static>(
|
||||||
mut self,
|
mut self,
|
||||||
listener: impl Fn(&mut V, &A, DispatchPhase, &mut ViewContext<V>) + 'static,
|
listener: impl Fn(&mut V, &A, &mut ViewContext<V>) + 'static,
|
||||||
) -> Self
|
) -> Self
|
||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
self.stateless_interaction().key_listeners.push((
|
self.stateless_interactivity().key_listeners.push((
|
||||||
TypeId::of::<A>(),
|
TypeId::of::<A>(),
|
||||||
Box::new(move |view, event, _, phase, cx| {
|
Box::new(move |view, event, _, phase, cx| {
|
||||||
let event = event.downcast_ref().unwrap();
|
let event = event.downcast_ref().unwrap();
|
||||||
listener(view, event, phase, cx);
|
if phase == DispatchPhase::Capture {
|
||||||
|
listener(view, event, cx)
|
||||||
|
}
|
||||||
|
None
|
||||||
|
}),
|
||||||
|
));
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Add a listener for the given action, fires during the bubble event phase
|
||||||
|
fn on_action<A: 'static>(
|
||||||
|
mut self,
|
||||||
|
listener: impl Fn(&mut V, &A, &mut ViewContext<V>) + 'static,
|
||||||
|
) -> Self
|
||||||
|
where
|
||||||
|
Self: Sized,
|
||||||
|
{
|
||||||
|
self.stateless_interactivity().key_listeners.push((
|
||||||
|
TypeId::of::<A>(),
|
||||||
|
Box::new(move |view, event, _, phase, cx| {
|
||||||
|
let event = event.downcast_ref().unwrap();
|
||||||
|
if phase == DispatchPhase::Bubble {
|
||||||
|
listener(view, event, cx)
|
||||||
|
}
|
||||||
|
|
||||||
None
|
None
|
||||||
}),
|
}),
|
||||||
));
|
));
|
||||||
@ -204,7 +229,7 @@ pub trait StatelessInteractive<V: 'static>: Element<V> {
|
|||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
self.stateless_interaction().key_listeners.push((
|
self.stateless_interactivity().key_listeners.push((
|
||||||
TypeId::of::<KeyDownEvent>(),
|
TypeId::of::<KeyDownEvent>(),
|
||||||
Box::new(move |view, event, _, phase, cx| {
|
Box::new(move |view, event, _, phase, cx| {
|
||||||
let event = event.downcast_ref().unwrap();
|
let event = event.downcast_ref().unwrap();
|
||||||
@ -222,7 +247,7 @@ pub trait StatelessInteractive<V: 'static>: Element<V> {
|
|||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
self.stateless_interaction().key_listeners.push((
|
self.stateless_interactivity().key_listeners.push((
|
||||||
TypeId::of::<KeyUpEvent>(),
|
TypeId::of::<KeyUpEvent>(),
|
||||||
Box::new(move |view, event, _, phase, cx| {
|
Box::new(move |view, event, _, phase, cx| {
|
||||||
let event = event.downcast_ref().unwrap();
|
let event = event.downcast_ref().unwrap();
|
||||||
@ -237,7 +262,7 @@ pub trait StatelessInteractive<V: 'static>: Element<V> {
|
|||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
self.stateless_interaction()
|
self.stateless_interactivity()
|
||||||
.drag_over_styles
|
.drag_over_styles
|
||||||
.push((TypeId::of::<S>(), f(StyleRefinement::default())));
|
.push((TypeId::of::<S>(), f(StyleRefinement::default())));
|
||||||
self
|
self
|
||||||
@ -251,7 +276,7 @@ pub trait StatelessInteractive<V: 'static>: Element<V> {
|
|||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
self.stateless_interaction().group_drag_over_styles.push((
|
self.stateless_interactivity().group_drag_over_styles.push((
|
||||||
TypeId::of::<S>(),
|
TypeId::of::<S>(),
|
||||||
GroupStyle {
|
GroupStyle {
|
||||||
group: group_name.into(),
|
group: group_name.into(),
|
||||||
@ -268,7 +293,7 @@ pub trait StatelessInteractive<V: 'static>: Element<V> {
|
|||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
self.stateless_interaction().drop_listeners.push((
|
self.stateless_interactivity().drop_listeners.push((
|
||||||
TypeId::of::<W>(),
|
TypeId::of::<W>(),
|
||||||
Box::new(move |view, dragged_view, cx| {
|
Box::new(move |view, dragged_view, cx| {
|
||||||
listener(view, dragged_view.downcast().unwrap(), cx);
|
listener(view, dragged_view.downcast().unwrap(), cx);
|
||||||
@ -279,13 +304,13 @@ pub trait StatelessInteractive<V: 'static>: Element<V> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub trait StatefulInteractive<V: 'static>: StatelessInteractive<V> {
|
pub trait StatefulInteractive<V: 'static>: StatelessInteractive<V> {
|
||||||
fn stateful_interaction(&mut self) -> &mut StatefulInteraction<V>;
|
fn stateful_interactivity(&mut self) -> &mut StatefulInteractivity<V>;
|
||||||
|
|
||||||
fn active(mut self, f: impl FnOnce(StyleRefinement) -> StyleRefinement) -> Self
|
fn active(mut self, f: impl FnOnce(StyleRefinement) -> StyleRefinement) -> Self
|
||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
self.stateful_interaction().active_style = f(StyleRefinement::default());
|
self.stateful_interactivity().active_style = f(StyleRefinement::default());
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -297,7 +322,7 @@ pub trait StatefulInteractive<V: 'static>: StatelessInteractive<V> {
|
|||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
self.stateful_interaction().group_active_style = Some(GroupStyle {
|
self.stateful_interactivity().group_active_style = Some(GroupStyle {
|
||||||
group: group_name.into(),
|
group: group_name.into(),
|
||||||
style: f(StyleRefinement::default()),
|
style: f(StyleRefinement::default()),
|
||||||
});
|
});
|
||||||
@ -311,7 +336,7 @@ pub trait StatefulInteractive<V: 'static>: StatelessInteractive<V> {
|
|||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
self.stateful_interaction()
|
self.stateful_interactivity()
|
||||||
.click_listeners
|
.click_listeners
|
||||||
.push(Box::new(move |view, event, cx| listener(view, event, cx)));
|
.push(Box::new(move |view, event, cx| listener(view, event, cx)));
|
||||||
self
|
self
|
||||||
@ -326,10 +351,10 @@ pub trait StatefulInteractive<V: 'static>: StatelessInteractive<V> {
|
|||||||
W: 'static + Render,
|
W: 'static + Render,
|
||||||
{
|
{
|
||||||
debug_assert!(
|
debug_assert!(
|
||||||
self.stateful_interaction().drag_listener.is_none(),
|
self.stateful_interactivity().drag_listener.is_none(),
|
||||||
"calling on_drag more than once on the same element is not supported"
|
"calling on_drag more than once on the same element is not supported"
|
||||||
);
|
);
|
||||||
self.stateful_interaction().drag_listener =
|
self.stateful_interactivity().drag_listener =
|
||||||
Some(Box::new(move |view_state, cursor_offset, cx| AnyDrag {
|
Some(Box::new(move |view_state, cursor_offset, cx| AnyDrag {
|
||||||
view: listener(view_state, cx).into(),
|
view: listener(view_state, cx).into(),
|
||||||
cursor_offset,
|
cursor_offset,
|
||||||
@ -342,10 +367,10 @@ pub trait StatefulInteractive<V: 'static>: StatelessInteractive<V> {
|
|||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
debug_assert!(
|
debug_assert!(
|
||||||
self.stateful_interaction().hover_listener.is_none(),
|
self.stateful_interactivity().hover_listener.is_none(),
|
||||||
"calling on_hover more than once on the same element is not supported"
|
"calling on_hover more than once on the same element is not supported"
|
||||||
);
|
);
|
||||||
self.stateful_interaction().hover_listener = Some(Box::new(listener));
|
self.stateful_interactivity().hover_listener = Some(Box::new(listener));
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -358,10 +383,10 @@ pub trait StatefulInteractive<V: 'static>: StatelessInteractive<V> {
|
|||||||
W: 'static + Render,
|
W: 'static + Render,
|
||||||
{
|
{
|
||||||
debug_assert!(
|
debug_assert!(
|
||||||
self.stateful_interaction().tooltip_builder.is_none(),
|
self.stateful_interactivity().tooltip_builder.is_none(),
|
||||||
"calling tooltip more than once on the same element is not supported"
|
"calling tooltip more than once on the same element is not supported"
|
||||||
);
|
);
|
||||||
self.stateful_interaction().tooltip_builder = Some(Arc::new(move |view_state, cx| {
|
self.stateful_interactivity().tooltip_builder = Some(Arc::new(move |view_state, cx| {
|
||||||
build_tooltip(view_state, cx).into()
|
build_tooltip(view_state, cx).into()
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@ -369,11 +394,11 @@ pub trait StatefulInteractive<V: 'static>: StatelessInteractive<V> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait ElementInteraction<V: 'static>: 'static {
|
pub trait ElementInteractivity<V: 'static>: 'static {
|
||||||
fn as_stateless(&self) -> &StatelessInteraction<V>;
|
fn as_stateless(&self) -> &StatelessInteractivity<V>;
|
||||||
fn as_stateless_mut(&mut self) -> &mut StatelessInteraction<V>;
|
fn as_stateless_mut(&mut self) -> &mut StatelessInteractivity<V>;
|
||||||
fn as_stateful(&self) -> Option<&StatefulInteraction<V>>;
|
fn as_stateful(&self) -> Option<&StatefulInteractivity<V>>;
|
||||||
fn as_stateful_mut(&mut self) -> Option<&mut StatefulInteraction<V>>;
|
fn as_stateful_mut(&mut self) -> Option<&mut StatefulInteractivity<V>>;
|
||||||
|
|
||||||
fn initialize<R>(
|
fn initialize<R>(
|
||||||
&mut self,
|
&mut self,
|
||||||
@ -397,9 +422,10 @@ pub trait ElementInteraction<V: 'static>: 'static {
|
|||||||
None
|
None
|
||||||
}),
|
}),
|
||||||
));
|
));
|
||||||
let result = stateful.stateless.initialize(cx, f);
|
|
||||||
stateful.key_listeners.pop();
|
cx.with_key_dispatch_context(stateful.dispatch_context.clone(), |cx| {
|
||||||
result
|
cx.with_key_listeners(mem::take(&mut stateful.key_listeners), f)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
let stateless = self.as_stateless_mut();
|
let stateless = self.as_stateless_mut();
|
||||||
@ -735,11 +761,11 @@ pub trait ElementInteraction<V: 'static>: 'static {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deref, DerefMut)]
|
#[derive(Deref, DerefMut)]
|
||||||
pub struct StatefulInteraction<V> {
|
pub struct StatefulInteractivity<V> {
|
||||||
pub id: ElementId,
|
pub id: ElementId,
|
||||||
#[deref]
|
#[deref]
|
||||||
#[deref_mut]
|
#[deref_mut]
|
||||||
stateless: StatelessInteraction<V>,
|
stateless: StatelessInteractivity<V>,
|
||||||
click_listeners: SmallVec<[ClickListener<V>; 2]>,
|
click_listeners: SmallVec<[ClickListener<V>; 2]>,
|
||||||
active_style: StyleRefinement,
|
active_style: StyleRefinement,
|
||||||
group_active_style: Option<GroupStyle>,
|
group_active_style: Option<GroupStyle>,
|
||||||
@ -748,29 +774,29 @@ pub struct StatefulInteraction<V> {
|
|||||||
tooltip_builder: Option<TooltipBuilder<V>>,
|
tooltip_builder: Option<TooltipBuilder<V>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<V: 'static> ElementInteraction<V> for StatefulInteraction<V> {
|
impl<V: 'static> ElementInteractivity<V> for StatefulInteractivity<V> {
|
||||||
fn as_stateful(&self) -> Option<&StatefulInteraction<V>> {
|
fn as_stateful(&self) -> Option<&StatefulInteractivity<V>> {
|
||||||
Some(self)
|
Some(self)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn as_stateful_mut(&mut self) -> Option<&mut StatefulInteraction<V>> {
|
fn as_stateful_mut(&mut self) -> Option<&mut StatefulInteractivity<V>> {
|
||||||
Some(self)
|
Some(self)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn as_stateless(&self) -> &StatelessInteraction<V> {
|
fn as_stateless(&self) -> &StatelessInteractivity<V> {
|
||||||
&self.stateless
|
&self.stateless
|
||||||
}
|
}
|
||||||
|
|
||||||
fn as_stateless_mut(&mut self) -> &mut StatelessInteraction<V> {
|
fn as_stateless_mut(&mut self) -> &mut StatelessInteractivity<V> {
|
||||||
&mut self.stateless
|
&mut self.stateless
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<V> From<ElementId> for StatefulInteraction<V> {
|
impl<V> From<ElementId> for StatefulInteractivity<V> {
|
||||||
fn from(id: ElementId) -> Self {
|
fn from(id: ElementId) -> Self {
|
||||||
Self {
|
Self {
|
||||||
id,
|
id,
|
||||||
stateless: StatelessInteraction::default(),
|
stateless: StatelessInteractivity::default(),
|
||||||
click_listeners: SmallVec::new(),
|
click_listeners: SmallVec::new(),
|
||||||
drag_listener: None,
|
drag_listener: None,
|
||||||
hover_listener: None,
|
hover_listener: None,
|
||||||
@ -783,7 +809,7 @@ impl<V> From<ElementId> for StatefulInteraction<V> {
|
|||||||
|
|
||||||
type DropListener<V> = dyn Fn(&mut V, AnyView, &mut ViewContext<V>) + 'static;
|
type DropListener<V> = dyn Fn(&mut V, AnyView, &mut ViewContext<V>) + 'static;
|
||||||
|
|
||||||
pub struct StatelessInteraction<V> {
|
pub struct StatelessInteractivity<V> {
|
||||||
pub dispatch_context: DispatchContext,
|
pub dispatch_context: DispatchContext,
|
||||||
pub mouse_down_listeners: SmallVec<[MouseDownListener<V>; 2]>,
|
pub mouse_down_listeners: SmallVec<[MouseDownListener<V>; 2]>,
|
||||||
pub mouse_up_listeners: SmallVec<[MouseUpListener<V>; 2]>,
|
pub mouse_up_listeners: SmallVec<[MouseUpListener<V>; 2]>,
|
||||||
@ -797,9 +823,9 @@ pub struct StatelessInteraction<V> {
|
|||||||
drop_listeners: SmallVec<[(TypeId, Box<DropListener<V>>); 2]>,
|
drop_listeners: SmallVec<[(TypeId, Box<DropListener<V>>); 2]>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<V> StatelessInteraction<V> {
|
impl<V> StatelessInteractivity<V> {
|
||||||
pub fn into_stateful(self, id: impl Into<ElementId>) -> StatefulInteraction<V> {
|
pub fn into_stateful(self, id: impl Into<ElementId>) -> StatefulInteractivity<V> {
|
||||||
StatefulInteraction {
|
StatefulInteractivity {
|
||||||
id: id.into(),
|
id: id.into(),
|
||||||
stateless: self,
|
stateless: self,
|
||||||
click_listeners: SmallVec::new(),
|
click_listeners: SmallVec::new(),
|
||||||
@ -875,9 +901,15 @@ impl InteractiveElementState {
|
|||||||
.as_ref()
|
.as_ref()
|
||||||
.map(|offset| offset.lock().clone())
|
.map(|offset| offset.lock().clone())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn track_scroll_offset(&mut self) -> Arc<Mutex<Point<Pixels>>> {
|
||||||
|
self.scroll_offset
|
||||||
|
.get_or_insert_with(|| Arc::new(Mutex::new(Default::default())))
|
||||||
|
.clone()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<V> Default for StatelessInteraction<V> {
|
impl<V> Default for StatelessInteractivity<V> {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
Self {
|
Self {
|
||||||
dispatch_context: DispatchContext::default(),
|
dispatch_context: DispatchContext::default(),
|
||||||
@ -895,20 +927,20 @@ impl<V> Default for StatelessInteraction<V> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<V: 'static> ElementInteraction<V> for StatelessInteraction<V> {
|
impl<V: 'static> ElementInteractivity<V> for StatelessInteractivity<V> {
|
||||||
fn as_stateful(&self) -> Option<&StatefulInteraction<V>> {
|
fn as_stateful(&self) -> Option<&StatefulInteractivity<V>> {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
fn as_stateful_mut(&mut self) -> Option<&mut StatefulInteraction<V>> {
|
fn as_stateful_mut(&mut self) -> Option<&mut StatefulInteractivity<V>> {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
fn as_stateless(&self) -> &StatelessInteraction<V> {
|
fn as_stateless(&self) -> &StatelessInteractivity<V> {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
fn as_stateless_mut(&mut self) -> &mut StatelessInteraction<V> {
|
fn as_stateless_mut(&mut self) -> &mut StatelessInteractivity<V> {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1230,3 +1262,70 @@ pub type KeyListener<V> = Box<
|
|||||||
) -> Option<Box<dyn Action>>
|
) -> Option<Box<dyn Action>>
|
||||||
+ 'static,
|
+ 'static,
|
||||||
>;
|
>;
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test {
|
||||||
|
use crate::{
|
||||||
|
self as gpui, div, Div, FocusHandle, KeyBinding, Keystroke, ParentElement, Render,
|
||||||
|
StatefulInteractivity, StatelessInteractive, TestAppContext, VisualContext,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TestView {
|
||||||
|
saw_key_down: bool,
|
||||||
|
saw_action: bool,
|
||||||
|
focus_handle: FocusHandle,
|
||||||
|
}
|
||||||
|
|
||||||
|
actions!(TestAction);
|
||||||
|
|
||||||
|
impl Render for TestView {
|
||||||
|
type Element = Div<Self, StatefulInteractivity<Self>>;
|
||||||
|
|
||||||
|
fn render(&mut self, _: &mut gpui::ViewContext<Self>) -> Self::Element {
|
||||||
|
div().id("testview").child(
|
||||||
|
div()
|
||||||
|
.on_key_down(|this: &mut TestView, _, _, _| {
|
||||||
|
dbg!("ola!");
|
||||||
|
this.saw_key_down = true
|
||||||
|
})
|
||||||
|
.on_action(|this: &mut TestView, _: &TestAction, _| {
|
||||||
|
dbg!("ola!");
|
||||||
|
this.saw_action = true
|
||||||
|
})
|
||||||
|
.track_focus(&self.focus_handle),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[gpui::test]
|
||||||
|
fn test_on_events(cx: &mut TestAppContext) {
|
||||||
|
let window = cx.update(|cx| {
|
||||||
|
cx.open_window(Default::default(), |cx| {
|
||||||
|
cx.build_view(|cx| TestView {
|
||||||
|
saw_key_down: false,
|
||||||
|
saw_action: false,
|
||||||
|
focus_handle: cx.focus_handle(),
|
||||||
|
})
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
cx.update(|cx| {
|
||||||
|
cx.bind_keys(vec![KeyBinding::new("ctrl-g", TestAction, None)]);
|
||||||
|
});
|
||||||
|
|
||||||
|
window
|
||||||
|
.update(cx, |test_view, cx| cx.focus(&test_view.focus_handle))
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
cx.dispatch_keystroke(*window, Keystroke::parse("space").unwrap(), false);
|
||||||
|
cx.dispatch_keystroke(*window, Keystroke::parse("ctrl-g").unwrap(), false);
|
||||||
|
|
||||||
|
window
|
||||||
|
.update(cx, |test_view, _| {
|
||||||
|
assert!(test_view.saw_key_down || test_view.saw_action);
|
||||||
|
assert!(test_view.saw_key_down);
|
||||||
|
assert!(test_view.saw_action);
|
||||||
|
})
|
||||||
|
.unwrap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -87,7 +87,7 @@ impl MetalRenderer {
|
|||||||
MTLResourceOptions::StorageModeManaged,
|
MTLResourceOptions::StorageModeManaged,
|
||||||
);
|
);
|
||||||
|
|
||||||
let paths_rasterization_pipeline_state = build_pipeline_state(
|
let paths_rasterization_pipeline_state = build_path_rasterization_pipeline_state(
|
||||||
&device,
|
&device,
|
||||||
&library,
|
&library,
|
||||||
"paths_rasterization",
|
"paths_rasterization",
|
||||||
@ -823,7 +823,40 @@ fn build_pipeline_state(
|
|||||||
color_attachment.set_source_alpha_blend_factor(metal::MTLBlendFactor::One);
|
color_attachment.set_source_alpha_blend_factor(metal::MTLBlendFactor::One);
|
||||||
color_attachment.set_destination_rgb_blend_factor(metal::MTLBlendFactor::OneMinusSourceAlpha);
|
color_attachment.set_destination_rgb_blend_factor(metal::MTLBlendFactor::OneMinusSourceAlpha);
|
||||||
color_attachment.set_destination_alpha_blend_factor(metal::MTLBlendFactor::One);
|
color_attachment.set_destination_alpha_blend_factor(metal::MTLBlendFactor::One);
|
||||||
descriptor.set_depth_attachment_pixel_format(MTLPixelFormat::Invalid);
|
|
||||||
|
device
|
||||||
|
.new_render_pipeline_state(&descriptor)
|
||||||
|
.expect("could not create render pipeline state")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn build_path_rasterization_pipeline_state(
|
||||||
|
device: &metal::DeviceRef,
|
||||||
|
library: &metal::LibraryRef,
|
||||||
|
label: &str,
|
||||||
|
vertex_fn_name: &str,
|
||||||
|
fragment_fn_name: &str,
|
||||||
|
pixel_format: metal::MTLPixelFormat,
|
||||||
|
) -> metal::RenderPipelineState {
|
||||||
|
let vertex_fn = library
|
||||||
|
.get_function(vertex_fn_name, None)
|
||||||
|
.expect("error locating vertex function");
|
||||||
|
let fragment_fn = library
|
||||||
|
.get_function(fragment_fn_name, None)
|
||||||
|
.expect("error locating fragment function");
|
||||||
|
|
||||||
|
let descriptor = metal::RenderPipelineDescriptor::new();
|
||||||
|
descriptor.set_label(label);
|
||||||
|
descriptor.set_vertex_function(Some(vertex_fn.as_ref()));
|
||||||
|
descriptor.set_fragment_function(Some(fragment_fn.as_ref()));
|
||||||
|
let color_attachment = descriptor.color_attachments().object_at(0).unwrap();
|
||||||
|
color_attachment.set_pixel_format(pixel_format);
|
||||||
|
color_attachment.set_blending_enabled(true);
|
||||||
|
color_attachment.set_rgb_blend_operation(metal::MTLBlendOperation::Add);
|
||||||
|
color_attachment.set_alpha_blend_operation(metal::MTLBlendOperation::Add);
|
||||||
|
color_attachment.set_source_rgb_blend_factor(metal::MTLBlendFactor::One);
|
||||||
|
color_attachment.set_source_alpha_blend_factor(metal::MTLBlendFactor::One);
|
||||||
|
color_attachment.set_destination_rgb_blend_factor(metal::MTLBlendFactor::One);
|
||||||
|
color_attachment.set_destination_alpha_blend_factor(metal::MTLBlendFactor::One);
|
||||||
|
|
||||||
device
|
device
|
||||||
.new_render_pipeline_state(&descriptor)
|
.new_render_pipeline_state(&descriptor)
|
||||||
|
@ -5,10 +5,11 @@ using namespace metal;
|
|||||||
|
|
||||||
float4 hsla_to_rgba(Hsla hsla);
|
float4 hsla_to_rgba(Hsla hsla);
|
||||||
float4 to_device_position(float2 unit_vertex, Bounds_ScaledPixels bounds,
|
float4 to_device_position(float2 unit_vertex, Bounds_ScaledPixels bounds,
|
||||||
Bounds_ScaledPixels clip_bounds,
|
|
||||||
constant Size_DevicePixels *viewport_size);
|
constant Size_DevicePixels *viewport_size);
|
||||||
float2 to_tile_position(float2 unit_vertex, AtlasTile tile,
|
float2 to_tile_position(float2 unit_vertex, AtlasTile tile,
|
||||||
constant Size_DevicePixels *atlas_size);
|
constant Size_DevicePixels *atlas_size);
|
||||||
|
float4 distance_from_clip_rect(float2 unit_vertex, Bounds_ScaledPixels bounds,
|
||||||
|
Bounds_ScaledPixels clip_bounds);
|
||||||
float quad_sdf(float2 point, Bounds_ScaledPixels bounds,
|
float quad_sdf(float2 point, Bounds_ScaledPixels bounds,
|
||||||
Corners_ScaledPixels corner_radii);
|
Corners_ScaledPixels corner_radii);
|
||||||
float gaussian(float x, float sigma);
|
float gaussian(float x, float sigma);
|
||||||
@ -21,6 +22,14 @@ struct QuadVertexOutput {
|
|||||||
float4 background_color [[flat]];
|
float4 background_color [[flat]];
|
||||||
float4 border_color [[flat]];
|
float4 border_color [[flat]];
|
||||||
uint quad_id [[flat]];
|
uint quad_id [[flat]];
|
||||||
|
float clip_distance [[clip_distance]][4];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct QuadFragmentInput {
|
||||||
|
float4 position [[position]];
|
||||||
|
float4 background_color [[flat]];
|
||||||
|
float4 border_color [[flat]];
|
||||||
|
uint quad_id [[flat]];
|
||||||
};
|
};
|
||||||
|
|
||||||
vertex QuadVertexOutput quad_vertex(uint unit_vertex_id [[vertex_id]],
|
vertex QuadVertexOutput quad_vertex(uint unit_vertex_id [[vertex_id]],
|
||||||
@ -33,15 +42,21 @@ vertex QuadVertexOutput quad_vertex(uint unit_vertex_id [[vertex_id]],
|
|||||||
[[buffer(QuadInputIndex_ViewportSize)]]) {
|
[[buffer(QuadInputIndex_ViewportSize)]]) {
|
||||||
float2 unit_vertex = unit_vertices[unit_vertex_id];
|
float2 unit_vertex = unit_vertices[unit_vertex_id];
|
||||||
Quad quad = quads[quad_id];
|
Quad quad = quads[quad_id];
|
||||||
float4 device_position = to_device_position(
|
float4 device_position =
|
||||||
unit_vertex, quad.bounds, quad.content_mask.bounds, viewport_size);
|
to_device_position(unit_vertex, quad.bounds, viewport_size);
|
||||||
|
float4 clip_distance = distance_from_clip_rect(unit_vertex, quad.bounds,
|
||||||
|
quad.content_mask.bounds);
|
||||||
float4 background_color = hsla_to_rgba(quad.background);
|
float4 background_color = hsla_to_rgba(quad.background);
|
||||||
float4 border_color = hsla_to_rgba(quad.border_color);
|
float4 border_color = hsla_to_rgba(quad.border_color);
|
||||||
return QuadVertexOutput{device_position, background_color, border_color,
|
return QuadVertexOutput{
|
||||||
quad_id};
|
device_position,
|
||||||
|
background_color,
|
||||||
|
border_color,
|
||||||
|
quad_id,
|
||||||
|
{clip_distance.x, clip_distance.y, clip_distance.z, clip_distance.w}};
|
||||||
}
|
}
|
||||||
|
|
||||||
fragment float4 quad_fragment(QuadVertexOutput input [[stage_in]],
|
fragment float4 quad_fragment(QuadFragmentInput input [[stage_in]],
|
||||||
constant Quad *quads
|
constant Quad *quads
|
||||||
[[buffer(QuadInputIndex_Quads)]]) {
|
[[buffer(QuadInputIndex_Quads)]]) {
|
||||||
Quad quad = quads[input.quad_id];
|
Quad quad = quads[input.quad_id];
|
||||||
@ -117,6 +132,13 @@ struct ShadowVertexOutput {
|
|||||||
float4 position [[position]];
|
float4 position [[position]];
|
||||||
float4 color [[flat]];
|
float4 color [[flat]];
|
||||||
uint shadow_id [[flat]];
|
uint shadow_id [[flat]];
|
||||||
|
float clip_distance [[clip_distance]][4];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ShadowFragmentInput {
|
||||||
|
float4 position [[position]];
|
||||||
|
float4 color [[flat]];
|
||||||
|
uint shadow_id [[flat]];
|
||||||
};
|
};
|
||||||
|
|
||||||
vertex ShadowVertexOutput shadow_vertex(
|
vertex ShadowVertexOutput shadow_vertex(
|
||||||
@ -137,18 +159,20 @@ vertex ShadowVertexOutput shadow_vertex(
|
|||||||
bounds.size.width += 2. * margin;
|
bounds.size.width += 2. * margin;
|
||||||
bounds.size.height += 2. * margin;
|
bounds.size.height += 2. * margin;
|
||||||
|
|
||||||
float4 device_position = to_device_position(
|
float4 device_position =
|
||||||
unit_vertex, bounds, shadow.content_mask.bounds, viewport_size);
|
to_device_position(unit_vertex, bounds, viewport_size);
|
||||||
|
float4 clip_distance =
|
||||||
|
distance_from_clip_rect(unit_vertex, bounds, shadow.content_mask.bounds);
|
||||||
float4 color = hsla_to_rgba(shadow.color);
|
float4 color = hsla_to_rgba(shadow.color);
|
||||||
|
|
||||||
return ShadowVertexOutput{
|
return ShadowVertexOutput{
|
||||||
device_position,
|
device_position,
|
||||||
color,
|
color,
|
||||||
shadow_id,
|
shadow_id,
|
||||||
};
|
{clip_distance.x, clip_distance.y, clip_distance.z, clip_distance.w}};
|
||||||
}
|
}
|
||||||
|
|
||||||
fragment float4 shadow_fragment(ShadowVertexOutput input [[stage_in]],
|
fragment float4 shadow_fragment(ShadowFragmentInput input [[stage_in]],
|
||||||
constant Shadow *shadows
|
constant Shadow *shadows
|
||||||
[[buffer(ShadowInputIndex_Shadows)]]) {
|
[[buffer(ShadowInputIndex_Shadows)]]) {
|
||||||
Shadow shadow = shadows[input.shadow_id];
|
Shadow shadow = shadows[input.shadow_id];
|
||||||
@ -197,6 +221,13 @@ struct UnderlineVertexOutput {
|
|||||||
float4 position [[position]];
|
float4 position [[position]];
|
||||||
float4 color [[flat]];
|
float4 color [[flat]];
|
||||||
uint underline_id [[flat]];
|
uint underline_id [[flat]];
|
||||||
|
float clip_distance [[clip_distance]][4];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct UnderlineFragmentInput {
|
||||||
|
float4 position [[position]];
|
||||||
|
float4 color [[flat]];
|
||||||
|
uint underline_id [[flat]];
|
||||||
};
|
};
|
||||||
|
|
||||||
vertex UnderlineVertexOutput underline_vertex(
|
vertex UnderlineVertexOutput underline_vertex(
|
||||||
@ -208,13 +239,18 @@ vertex UnderlineVertexOutput underline_vertex(
|
|||||||
float2 unit_vertex = unit_vertices[unit_vertex_id];
|
float2 unit_vertex = unit_vertices[unit_vertex_id];
|
||||||
Underline underline = underlines[underline_id];
|
Underline underline = underlines[underline_id];
|
||||||
float4 device_position =
|
float4 device_position =
|
||||||
to_device_position(unit_vertex, underline.bounds,
|
to_device_position(unit_vertex, underline.bounds, viewport_size);
|
||||||
underline.content_mask.bounds, viewport_size);
|
float4 clip_distance = distance_from_clip_rect(unit_vertex, underline.bounds,
|
||||||
|
underline.content_mask.bounds);
|
||||||
float4 color = hsla_to_rgba(underline.color);
|
float4 color = hsla_to_rgba(underline.color);
|
||||||
return UnderlineVertexOutput{device_position, color, underline_id};
|
return UnderlineVertexOutput{
|
||||||
|
device_position,
|
||||||
|
color,
|
||||||
|
underline_id,
|
||||||
|
{clip_distance.x, clip_distance.y, clip_distance.z, clip_distance.w}};
|
||||||
}
|
}
|
||||||
|
|
||||||
fragment float4 underline_fragment(UnderlineVertexOutput input [[stage_in]],
|
fragment float4 underline_fragment(UnderlineFragmentInput input [[stage_in]],
|
||||||
constant Underline *underlines
|
constant Underline *underlines
|
||||||
[[buffer(UnderlineInputIndex_Underlines)]]) {
|
[[buffer(UnderlineInputIndex_Underlines)]]) {
|
||||||
Underline underline = underlines[input.underline_id];
|
Underline underline = underlines[input.underline_id];
|
||||||
@ -244,7 +280,13 @@ struct MonochromeSpriteVertexOutput {
|
|||||||
float4 position [[position]];
|
float4 position [[position]];
|
||||||
float2 tile_position;
|
float2 tile_position;
|
||||||
float4 color [[flat]];
|
float4 color [[flat]];
|
||||||
uint sprite_id [[flat]];
|
float clip_distance [[clip_distance]][4];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct MonochromeSpriteFragmentInput {
|
||||||
|
float4 position [[position]];
|
||||||
|
float2 tile_position;
|
||||||
|
float4 color [[flat]];
|
||||||
};
|
};
|
||||||
|
|
||||||
vertex MonochromeSpriteVertexOutput monochrome_sprite_vertex(
|
vertex MonochromeSpriteVertexOutput monochrome_sprite_vertex(
|
||||||
@ -255,32 +297,31 @@ vertex MonochromeSpriteVertexOutput monochrome_sprite_vertex(
|
|||||||
[[buffer(SpriteInputIndex_ViewportSize)]],
|
[[buffer(SpriteInputIndex_ViewportSize)]],
|
||||||
constant Size_DevicePixels *atlas_size
|
constant Size_DevicePixels *atlas_size
|
||||||
[[buffer(SpriteInputIndex_AtlasTextureSize)]]) {
|
[[buffer(SpriteInputIndex_AtlasTextureSize)]]) {
|
||||||
|
|
||||||
float2 unit_vertex = unit_vertices[unit_vertex_id];
|
float2 unit_vertex = unit_vertices[unit_vertex_id];
|
||||||
MonochromeSprite sprite = sprites[sprite_id];
|
MonochromeSprite sprite = sprites[sprite_id];
|
||||||
// Don't apply content mask at the vertex level because we don't have time
|
float4 device_position =
|
||||||
// to make sampling from the texture match the mask.
|
to_device_position(unit_vertex, sprite.bounds, viewport_size);
|
||||||
float4 device_position = to_device_position(unit_vertex, sprite.bounds,
|
float4 clip_distance = distance_from_clip_rect(unit_vertex, sprite.bounds,
|
||||||
sprite.bounds, viewport_size);
|
sprite.content_mask.bounds);
|
||||||
float2 tile_position = to_tile_position(unit_vertex, sprite.tile, atlas_size);
|
float2 tile_position = to_tile_position(unit_vertex, sprite.tile, atlas_size);
|
||||||
float4 color = hsla_to_rgba(sprite.color);
|
float4 color = hsla_to_rgba(sprite.color);
|
||||||
return MonochromeSpriteVertexOutput{device_position, tile_position, color,
|
return MonochromeSpriteVertexOutput{
|
||||||
sprite_id};
|
device_position,
|
||||||
|
tile_position,
|
||||||
|
color,
|
||||||
|
{clip_distance.x, clip_distance.y, clip_distance.z, clip_distance.w}};
|
||||||
}
|
}
|
||||||
|
|
||||||
fragment float4 monochrome_sprite_fragment(
|
fragment float4 monochrome_sprite_fragment(
|
||||||
MonochromeSpriteVertexOutput input [[stage_in]],
|
MonochromeSpriteFragmentInput input [[stage_in]],
|
||||||
constant MonochromeSprite *sprites [[buffer(SpriteInputIndex_Sprites)]],
|
constant MonochromeSprite *sprites [[buffer(SpriteInputIndex_Sprites)]],
|
||||||
texture2d<float> atlas_texture [[texture(SpriteInputIndex_AtlasTexture)]]) {
|
texture2d<float> atlas_texture [[texture(SpriteInputIndex_AtlasTexture)]]) {
|
||||||
MonochromeSprite sprite = sprites[input.sprite_id];
|
|
||||||
constexpr sampler atlas_texture_sampler(mag_filter::linear,
|
constexpr sampler atlas_texture_sampler(mag_filter::linear,
|
||||||
min_filter::linear);
|
min_filter::linear);
|
||||||
float4 sample =
|
float4 sample =
|
||||||
atlas_texture.sample(atlas_texture_sampler, input.tile_position);
|
atlas_texture.sample(atlas_texture_sampler, input.tile_position);
|
||||||
float clip_distance = quad_sdf(input.position.xy, sprite.content_mask.bounds,
|
|
||||||
Corners_ScaledPixels{0., 0., 0., 0.});
|
|
||||||
float4 color = input.color;
|
float4 color = input.color;
|
||||||
color.a *= sample.a * saturate(0.5 - clip_distance);
|
color.a *= sample.a;
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -288,6 +329,13 @@ struct PolychromeSpriteVertexOutput {
|
|||||||
float4 position [[position]];
|
float4 position [[position]];
|
||||||
float2 tile_position;
|
float2 tile_position;
|
||||||
uint sprite_id [[flat]];
|
uint sprite_id [[flat]];
|
||||||
|
float clip_distance [[clip_distance]][4];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PolychromeSpriteFragmentInput {
|
||||||
|
float4 position [[position]];
|
||||||
|
float2 tile_position;
|
||||||
|
uint sprite_id [[flat]];
|
||||||
};
|
};
|
||||||
|
|
||||||
vertex PolychromeSpriteVertexOutput polychrome_sprite_vertex(
|
vertex PolychromeSpriteVertexOutput polychrome_sprite_vertex(
|
||||||
@ -301,17 +349,20 @@ vertex PolychromeSpriteVertexOutput polychrome_sprite_vertex(
|
|||||||
|
|
||||||
float2 unit_vertex = unit_vertices[unit_vertex_id];
|
float2 unit_vertex = unit_vertices[unit_vertex_id];
|
||||||
PolychromeSprite sprite = sprites[sprite_id];
|
PolychromeSprite sprite = sprites[sprite_id];
|
||||||
// Don't apply content mask at the vertex level because we don't have time
|
float4 device_position =
|
||||||
// to make sampling from the texture match the mask.
|
to_device_position(unit_vertex, sprite.bounds, viewport_size);
|
||||||
float4 device_position = to_device_position(unit_vertex, sprite.bounds,
|
float4 clip_distance = distance_from_clip_rect(unit_vertex, sprite.bounds,
|
||||||
sprite.bounds, viewport_size);
|
sprite.content_mask.bounds);
|
||||||
float2 tile_position = to_tile_position(unit_vertex, sprite.tile, atlas_size);
|
float2 tile_position = to_tile_position(unit_vertex, sprite.tile, atlas_size);
|
||||||
return PolychromeSpriteVertexOutput{device_position, tile_position,
|
return PolychromeSpriteVertexOutput{
|
||||||
sprite_id};
|
device_position,
|
||||||
|
tile_position,
|
||||||
|
sprite_id,
|
||||||
|
{clip_distance.x, clip_distance.y, clip_distance.z, clip_distance.w}};
|
||||||
}
|
}
|
||||||
|
|
||||||
fragment float4 polychrome_sprite_fragment(
|
fragment float4 polychrome_sprite_fragment(
|
||||||
PolychromeSpriteVertexOutput input [[stage_in]],
|
PolychromeSpriteFragmentInput input [[stage_in]],
|
||||||
constant PolychromeSprite *sprites [[buffer(SpriteInputIndex_Sprites)]],
|
constant PolychromeSprite *sprites [[buffer(SpriteInputIndex_Sprites)]],
|
||||||
texture2d<float> atlas_texture [[texture(SpriteInputIndex_AtlasTexture)]]) {
|
texture2d<float> atlas_texture [[texture(SpriteInputIndex_AtlasTexture)]]) {
|
||||||
PolychromeSprite sprite = sprites[input.sprite_id];
|
PolychromeSprite sprite = sprites[input.sprite_id];
|
||||||
@ -319,11 +370,8 @@ fragment float4 polychrome_sprite_fragment(
|
|||||||
min_filter::linear);
|
min_filter::linear);
|
||||||
float4 sample =
|
float4 sample =
|
||||||
atlas_texture.sample(atlas_texture_sampler, input.tile_position);
|
atlas_texture.sample(atlas_texture_sampler, input.tile_position);
|
||||||
float quad_distance =
|
float distance =
|
||||||
quad_sdf(input.position.xy, sprite.bounds, sprite.corner_radii);
|
quad_sdf(input.position.xy, sprite.bounds, sprite.corner_radii);
|
||||||
float clip_distance = quad_sdf(input.position.xy, sprite.content_mask.bounds,
|
|
||||||
Corners_ScaledPixels{0., 0., 0., 0.});
|
|
||||||
float distance = max(quad_distance, clip_distance);
|
|
||||||
|
|
||||||
float4 color = sample;
|
float4 color = sample;
|
||||||
if (sprite.grayscale) {
|
if (sprite.grayscale) {
|
||||||
@ -385,7 +433,6 @@ struct PathSpriteVertexOutput {
|
|||||||
float4 position [[position]];
|
float4 position [[position]];
|
||||||
float2 tile_position;
|
float2 tile_position;
|
||||||
float4 color [[flat]];
|
float4 color [[flat]];
|
||||||
uint sprite_id [[flat]];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
vertex PathSpriteVertexOutput path_sprite_vertex(
|
vertex PathSpriteVertexOutput path_sprite_vertex(
|
||||||
@ -401,19 +448,17 @@ vertex PathSpriteVertexOutput path_sprite_vertex(
|
|||||||
PathSprite sprite = sprites[sprite_id];
|
PathSprite sprite = sprites[sprite_id];
|
||||||
// Don't apply content mask because it was already accounted for when
|
// Don't apply content mask because it was already accounted for when
|
||||||
// rasterizing the path.
|
// rasterizing the path.
|
||||||
float4 device_position = to_device_position(unit_vertex, sprite.bounds,
|
float4 device_position =
|
||||||
sprite.bounds, viewport_size);
|
to_device_position(unit_vertex, sprite.bounds, viewport_size);
|
||||||
float2 tile_position = to_tile_position(unit_vertex, sprite.tile, atlas_size);
|
float2 tile_position = to_tile_position(unit_vertex, sprite.tile, atlas_size);
|
||||||
float4 color = hsla_to_rgba(sprite.color);
|
float4 color = hsla_to_rgba(sprite.color);
|
||||||
return PathSpriteVertexOutput{device_position, tile_position, color,
|
return PathSpriteVertexOutput{device_position, tile_position, color};
|
||||||
sprite_id};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fragment float4 path_sprite_fragment(
|
fragment float4 path_sprite_fragment(
|
||||||
PathSpriteVertexOutput input [[stage_in]],
|
PathSpriteVertexOutput input [[stage_in]],
|
||||||
constant PathSprite *sprites [[buffer(SpriteInputIndex_Sprites)]],
|
constant PathSprite *sprites [[buffer(SpriteInputIndex_Sprites)]],
|
||||||
texture2d<float> atlas_texture [[texture(SpriteInputIndex_AtlasTexture)]]) {
|
texture2d<float> atlas_texture [[texture(SpriteInputIndex_AtlasTexture)]]) {
|
||||||
PathSprite sprite = sprites[input.sprite_id];
|
|
||||||
constexpr sampler atlas_texture_sampler(mag_filter::linear,
|
constexpr sampler atlas_texture_sampler(mag_filter::linear,
|
||||||
min_filter::linear);
|
min_filter::linear);
|
||||||
float4 sample =
|
float4 sample =
|
||||||
@ -473,16 +518,10 @@ float4 hsla_to_rgba(Hsla hsla) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
float4 to_device_position(float2 unit_vertex, Bounds_ScaledPixels bounds,
|
float4 to_device_position(float2 unit_vertex, Bounds_ScaledPixels bounds,
|
||||||
Bounds_ScaledPixels clip_bounds,
|
|
||||||
constant Size_DevicePixels *input_viewport_size) {
|
constant Size_DevicePixels *input_viewport_size) {
|
||||||
float2 position =
|
float2 position =
|
||||||
unit_vertex * float2(bounds.size.width, bounds.size.height) +
|
unit_vertex * float2(bounds.size.width, bounds.size.height) +
|
||||||
float2(bounds.origin.x, bounds.origin.y);
|
float2(bounds.origin.x, bounds.origin.y);
|
||||||
position.x = max(clip_bounds.origin.x, position.x);
|
|
||||||
position.x = min(clip_bounds.origin.x + clip_bounds.size.width, position.x);
|
|
||||||
position.y = max(clip_bounds.origin.y, position.y);
|
|
||||||
position.y = min(clip_bounds.origin.y + clip_bounds.size.height, position.y);
|
|
||||||
|
|
||||||
float2 viewport_size = float2((float)input_viewport_size->width,
|
float2 viewport_size = float2((float)input_viewport_size->width,
|
||||||
(float)input_viewport_size->height);
|
(float)input_viewport_size->height);
|
||||||
float2 device_position =
|
float2 device_position =
|
||||||
@ -551,3 +590,14 @@ float blur_along_x(float x, float y, float sigma, float corner,
|
|||||||
0.5 + 0.5 * erf((x + float2(-curved, curved)) * (sqrt(0.5) / sigma));
|
0.5 + 0.5 * erf((x + float2(-curved, curved)) * (sqrt(0.5) / sigma));
|
||||||
return integral.y - integral.x;
|
return integral.y - integral.x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float4 distance_from_clip_rect(float2 unit_vertex, Bounds_ScaledPixels bounds,
|
||||||
|
Bounds_ScaledPixels clip_bounds) {
|
||||||
|
float2 position =
|
||||||
|
unit_vertex * float2(bounds.size.width, bounds.size.height) +
|
||||||
|
float2(bounds.origin.x, bounds.origin.y);
|
||||||
|
return float4(position.x - clip_bounds.origin.x,
|
||||||
|
clip_bounds.origin.x + clip_bounds.size.width - position.x,
|
||||||
|
position.y - clip_bounds.origin.y,
|
||||||
|
clip_bounds.origin.y + clip_bounds.size.height - position.y);
|
||||||
|
}
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
mod dispatcher;
|
mod dispatcher;
|
||||||
|
mod display;
|
||||||
mod platform;
|
mod platform;
|
||||||
|
mod window;
|
||||||
|
|
||||||
pub use dispatcher::*;
|
pub use dispatcher::*;
|
||||||
|
pub use display::*;
|
||||||
pub use platform::*;
|
pub use platform::*;
|
||||||
|
pub use window::*;
|
||||||
|
41
crates/gpui2/src/platform/test/display.rs
Normal file
41
crates/gpui2/src/platform/test/display.rs
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
use anyhow::{Ok, Result};
|
||||||
|
|
||||||
|
use crate::{Bounds, DisplayId, GlobalPixels, PlatformDisplay, Point};
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct TestDisplay {
|
||||||
|
id: DisplayId,
|
||||||
|
uuid: uuid::Uuid,
|
||||||
|
bounds: Bounds<GlobalPixels>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TestDisplay {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
TestDisplay {
|
||||||
|
id: DisplayId(1),
|
||||||
|
uuid: uuid::Uuid::new_v4(),
|
||||||
|
bounds: Bounds::from_corners(
|
||||||
|
Point::zero(),
|
||||||
|
Point::new(GlobalPixels(1920.), GlobalPixels(1080.)),
|
||||||
|
),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PlatformDisplay for TestDisplay {
|
||||||
|
fn id(&self) -> crate::DisplayId {
|
||||||
|
self.id
|
||||||
|
}
|
||||||
|
|
||||||
|
fn uuid(&self) -> Result<uuid::Uuid> {
|
||||||
|
Ok(self.uuid)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn as_any(&self) -> &dyn std::any::Any {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn bounds(&self) -> crate::Bounds<crate::GlobalPixels> {
|
||||||
|
self.bounds
|
||||||
|
}
|
||||||
|
}
|
@ -1,10 +1,18 @@
|
|||||||
use crate::{BackgroundExecutor, DisplayId, ForegroundExecutor, Platform, PlatformTextSystem};
|
use crate::{
|
||||||
|
AnyWindowHandle, BackgroundExecutor, CursorStyle, DisplayId, ForegroundExecutor, Platform,
|
||||||
|
PlatformDisplay, PlatformTextSystem, TestDisplay, TestWindow, WindowOptions,
|
||||||
|
};
|
||||||
use anyhow::{anyhow, Result};
|
use anyhow::{anyhow, Result};
|
||||||
use std::sync::Arc;
|
use parking_lot::Mutex;
|
||||||
|
use std::{rc::Rc, sync::Arc};
|
||||||
|
|
||||||
pub struct TestPlatform {
|
pub struct TestPlatform {
|
||||||
background_executor: BackgroundExecutor,
|
background_executor: BackgroundExecutor,
|
||||||
foreground_executor: ForegroundExecutor,
|
foreground_executor: ForegroundExecutor,
|
||||||
|
|
||||||
|
active_window: Arc<Mutex<Option<AnyWindowHandle>>>,
|
||||||
|
active_display: Rc<dyn PlatformDisplay>,
|
||||||
|
active_cursor: Mutex<CursorStyle>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TestPlatform {
|
impl TestPlatform {
|
||||||
@ -12,6 +20,10 @@ impl TestPlatform {
|
|||||||
TestPlatform {
|
TestPlatform {
|
||||||
background_executor: executor,
|
background_executor: executor,
|
||||||
foreground_executor,
|
foreground_executor,
|
||||||
|
|
||||||
|
active_cursor: Default::default(),
|
||||||
|
active_display: Rc::new(TestDisplay::new()),
|
||||||
|
active_window: Default::default(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -59,11 +71,11 @@ impl Platform for TestPlatform {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn displays(&self) -> Vec<std::rc::Rc<dyn crate::PlatformDisplay>> {
|
fn displays(&self) -> Vec<std::rc::Rc<dyn crate::PlatformDisplay>> {
|
||||||
unimplemented!()
|
vec![self.active_display.clone()]
|
||||||
}
|
}
|
||||||
|
|
||||||
fn display(&self, _id: DisplayId) -> Option<std::rc::Rc<dyn crate::PlatformDisplay>> {
|
fn display(&self, id: DisplayId) -> Option<std::rc::Rc<dyn crate::PlatformDisplay>> {
|
||||||
unimplemented!()
|
self.displays().iter().find(|d| d.id() == id).cloned()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main_window(&self) -> Option<crate::AnyWindowHandle> {
|
fn main_window(&self) -> Option<crate::AnyWindowHandle> {
|
||||||
@ -72,10 +84,11 @@ impl Platform for TestPlatform {
|
|||||||
|
|
||||||
fn open_window(
|
fn open_window(
|
||||||
&self,
|
&self,
|
||||||
_handle: crate::AnyWindowHandle,
|
handle: AnyWindowHandle,
|
||||||
_options: crate::WindowOptions,
|
options: WindowOptions,
|
||||||
) -> Box<dyn crate::PlatformWindow> {
|
) -> Box<dyn crate::PlatformWindow> {
|
||||||
unimplemented!()
|
*self.active_window.lock() = Some(handle);
|
||||||
|
Box::new(TestWindow::new(options, self.active_display.clone()))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_display_link_output_callback(
|
fn set_display_link_output_callback(
|
||||||
@ -164,8 +177,8 @@ impl Platform for TestPlatform {
|
|||||||
unimplemented!()
|
unimplemented!()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_cursor_style(&self, _style: crate::CursorStyle) {
|
fn set_cursor_style(&self, style: crate::CursorStyle) {
|
||||||
unimplemented!()
|
*self.active_cursor.lock() = style;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn should_auto_hide_scrollbars(&self) -> bool {
|
fn should_auto_hide_scrollbars(&self) -> bool {
|
||||||
|
179
crates/gpui2/src/platform/test/window.rs
Normal file
179
crates/gpui2/src/platform/test/window.rs
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
use std::{rc::Rc, sync::Arc};
|
||||||
|
|
||||||
|
use parking_lot::Mutex;
|
||||||
|
|
||||||
|
use crate::{
|
||||||
|
px, Pixels, PlatformAtlas, PlatformDisplay, PlatformWindow, Point, Scene, Size,
|
||||||
|
WindowAppearance, WindowBounds, WindowOptions,
|
||||||
|
};
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
struct Handlers {
|
||||||
|
active_status_change: Vec<Box<dyn FnMut(bool)>>,
|
||||||
|
input: Vec<Box<dyn FnMut(crate::InputEvent) -> bool>>,
|
||||||
|
moved: Vec<Box<dyn FnMut()>>,
|
||||||
|
resize: Vec<Box<dyn FnMut(Size<Pixels>, f32)>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct TestWindow {
|
||||||
|
bounds: WindowBounds,
|
||||||
|
current_scene: Mutex<Option<Scene>>,
|
||||||
|
display: Rc<dyn PlatformDisplay>,
|
||||||
|
|
||||||
|
handlers: Mutex<Handlers>,
|
||||||
|
sprite_atlas: Arc<dyn PlatformAtlas>,
|
||||||
|
}
|
||||||
|
impl TestWindow {
|
||||||
|
pub fn new(options: WindowOptions, display: Rc<dyn PlatformDisplay>) -> Self {
|
||||||
|
Self {
|
||||||
|
bounds: options.bounds,
|
||||||
|
current_scene: Default::default(),
|
||||||
|
display,
|
||||||
|
|
||||||
|
sprite_atlas: Arc::new(TestAtlas),
|
||||||
|
handlers: Default::default(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PlatformWindow for TestWindow {
|
||||||
|
fn bounds(&self) -> WindowBounds {
|
||||||
|
self.bounds
|
||||||
|
}
|
||||||
|
|
||||||
|
fn content_size(&self) -> Size<Pixels> {
|
||||||
|
let bounds = match self.bounds {
|
||||||
|
WindowBounds::Fixed(bounds) => bounds,
|
||||||
|
WindowBounds::Maximized | WindowBounds::Fullscreen => self.display().bounds(),
|
||||||
|
};
|
||||||
|
bounds.size.map(|p| px(p.0))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn scale_factor(&self) -> f32 {
|
||||||
|
2.0
|
||||||
|
}
|
||||||
|
|
||||||
|
fn titlebar_height(&self) -> Pixels {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn appearance(&self) -> WindowAppearance {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn display(&self) -> std::rc::Rc<dyn crate::PlatformDisplay> {
|
||||||
|
self.display.clone()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn mouse_position(&self) -> Point<Pixels> {
|
||||||
|
Point::zero()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn as_any_mut(&mut self) -> &mut dyn std::any::Any {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn set_input_handler(&mut self, _input_handler: Box<dyn crate::PlatformInputHandler>) {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn prompt(
|
||||||
|
&self,
|
||||||
|
_level: crate::PromptLevel,
|
||||||
|
_msg: &str,
|
||||||
|
_answers: &[&str],
|
||||||
|
) -> futures::channel::oneshot::Receiver<usize> {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn activate(&self) {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn set_title(&mut self, _title: &str) {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn set_edited(&mut self, _edited: bool) {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn show_character_palette(&self) {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn minimize(&self) {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn zoom(&self) {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn toggle_full_screen(&self) {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_input(&self, callback: Box<dyn FnMut(crate::InputEvent) -> bool>) {
|
||||||
|
self.handlers.lock().input.push(callback)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_active_status_change(&self, callback: Box<dyn FnMut(bool)>) {
|
||||||
|
self.handlers.lock().active_status_change.push(callback)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_resize(&self, callback: Box<dyn FnMut(Size<Pixels>, f32)>) {
|
||||||
|
self.handlers.lock().resize.push(callback)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_fullscreen(&self, _callback: Box<dyn FnMut(bool)>) {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_moved(&self, callback: Box<dyn FnMut()>) {
|
||||||
|
self.handlers.lock().moved.push(callback)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_should_close(&self, _callback: Box<dyn FnMut() -> bool>) {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_close(&self, _callback: Box<dyn FnOnce()>) {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn on_appearance_changed(&self, _callback: Box<dyn FnMut()>) {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn is_topmost_for_position(&self, _position: crate::Point<Pixels>) -> bool {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn draw(&self, scene: crate::Scene) {
|
||||||
|
self.current_scene.lock().replace(scene);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn sprite_atlas(&self) -> std::sync::Arc<dyn crate::PlatformAtlas> {
|
||||||
|
self.sprite_atlas.clone()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct TestAtlas;
|
||||||
|
|
||||||
|
impl PlatformAtlas for TestAtlas {
|
||||||
|
fn get_or_insert_with<'a>(
|
||||||
|
&self,
|
||||||
|
_key: &crate::AtlasKey,
|
||||||
|
_build: &mut dyn FnMut() -> anyhow::Result<(
|
||||||
|
Size<crate::DevicePixels>,
|
||||||
|
std::borrow::Cow<'a, [u8]>,
|
||||||
|
)>,
|
||||||
|
) -> anyhow::Result<crate::AtlasTile> {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn clear(&self) {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
}
|
@ -1,8 +1,8 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
black, phi, point, rems, AbsoluteLength, BorrowAppContext, BorrowWindow, Bounds, ContentMask,
|
black, phi, point, rems, AbsoluteLength, BorrowAppContext, BorrowWindow, Bounds, ContentMask,
|
||||||
Corners, CornersRefinement, CursorStyle, DefiniteLength, Edges, EdgesRefinement, Font,
|
Corners, CornersRefinement, CursorStyle, DefiniteLength, Edges, EdgesRefinement, Font,
|
||||||
FontFeatures, FontStyle, FontWeight, Hsla, Length, Pixels, Point, PointRefinement, Rems,
|
FontFeatures, FontStyle, FontWeight, Hsla, Length, Pixels, Point, PointRefinement, Result,
|
||||||
Result, Rgba, SharedString, Size, SizeRefinement, Styled, TextRun, ViewContext, WindowContext,
|
Rgba, SharedString, Size, SizeRefinement, Styled, TextRun, ViewContext, WindowContext,
|
||||||
};
|
};
|
||||||
use refineable::{Cascade, Refineable};
|
use refineable::{Cascade, Refineable};
|
||||||
use smallvec::SmallVec;
|
use smallvec::SmallVec;
|
||||||
@ -134,7 +134,7 @@ pub struct TextStyle {
|
|||||||
pub color: Hsla,
|
pub color: Hsla,
|
||||||
pub font_family: SharedString,
|
pub font_family: SharedString,
|
||||||
pub font_features: FontFeatures,
|
pub font_features: FontFeatures,
|
||||||
pub font_size: Rems,
|
pub font_size: AbsoluteLength,
|
||||||
pub line_height: DefiniteLength,
|
pub line_height: DefiniteLength,
|
||||||
pub font_weight: FontWeight,
|
pub font_weight: FontWeight,
|
||||||
pub font_style: FontStyle,
|
pub font_style: FontStyle,
|
||||||
@ -147,7 +147,7 @@ impl Default for TextStyle {
|
|||||||
color: black(),
|
color: black(),
|
||||||
font_family: "Helvetica".into(), // todo!("Get a font we know exists on the system")
|
font_family: "Helvetica".into(), // todo!("Get a font we know exists on the system")
|
||||||
font_features: FontFeatures::default(),
|
font_features: FontFeatures::default(),
|
||||||
font_size: rems(1.),
|
font_size: rems(1.).into(),
|
||||||
line_height: phi(),
|
line_height: phi(),
|
||||||
font_weight: FontWeight::default(),
|
font_weight: FontWeight::default(),
|
||||||
font_style: FontStyle::default(),
|
font_style: FontStyle::default(),
|
||||||
@ -189,6 +189,10 @@ impl TextStyle {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn line_height_in_pixels(&self, rem_size: Pixels) -> Pixels {
|
||||||
|
self.line_height.to_pixels(self.font_size, rem_size)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn to_run(&self, len: usize) -> TextRun {
|
pub fn to_run(&self, len: usize) -> TextRun {
|
||||||
TextRun {
|
TextRun {
|
||||||
len,
|
len,
|
||||||
@ -277,7 +281,7 @@ impl Style {
|
|||||||
pub fn paint<V: 'static>(&self, bounds: Bounds<Pixels>, cx: &mut ViewContext<V>) {
|
pub fn paint<V: 'static>(&self, bounds: Bounds<Pixels>, cx: &mut ViewContext<V>) {
|
||||||
let rem_size = cx.rem_size();
|
let rem_size = cx.rem_size();
|
||||||
|
|
||||||
cx.stack(0, |cx| {
|
cx.with_z_index(0, |cx| {
|
||||||
cx.paint_shadows(
|
cx.paint_shadows(
|
||||||
bounds,
|
bounds,
|
||||||
self.corner_radii.to_pixels(bounds.size, rem_size),
|
self.corner_radii.to_pixels(bounds.size, rem_size),
|
||||||
@ -287,7 +291,7 @@ impl Style {
|
|||||||
|
|
||||||
let background_color = self.background.as_ref().and_then(Fill::color);
|
let background_color = self.background.as_ref().and_then(Fill::color);
|
||||||
if background_color.is_some() || self.is_border_visible() {
|
if background_color.is_some() || self.is_border_visible() {
|
||||||
cx.stack(1, |cx| {
|
cx.with_z_index(1, |cx| {
|
||||||
cx.paint_quad(
|
cx.paint_quad(
|
||||||
bounds,
|
bounds,
|
||||||
self.corner_radii.to_pixels(bounds.size, rem_size),
|
self.corner_radii.to_pixels(bounds.size, rem_size),
|
||||||
|
@ -1,14 +1,19 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
self as gpui, hsla, point, px, relative, rems, AlignItems, CursorStyle, DefiniteLength,
|
self as gpui, hsla, point, px, relative, rems, AbsoluteLength, AlignItems, CursorStyle,
|
||||||
Display, Fill, FlexDirection, Hsla, JustifyContent, Length, Position, Rems, SharedString,
|
DefiniteLength, Display, Fill, FlexDirection, Hsla, JustifyContent, Length, Position,
|
||||||
StyleRefinement, Visibility,
|
SharedString, Style, StyleRefinement, Visibility,
|
||||||
};
|
};
|
||||||
use crate::{BoxShadow, TextStyleRefinement};
|
use crate::{BoxShadow, TextStyleRefinement};
|
||||||
|
use refineable::Refineable;
|
||||||
use smallvec::smallvec;
|
use smallvec::smallvec;
|
||||||
|
|
||||||
pub trait Styled {
|
pub trait Styled {
|
||||||
fn style(&mut self) -> &mut StyleRefinement;
|
fn style(&mut self) -> &mut StyleRefinement;
|
||||||
|
|
||||||
|
fn computed_style(&mut self) -> Style {
|
||||||
|
Style::default().refined(self.style().clone())
|
||||||
|
}
|
||||||
|
|
||||||
gpui2_macros::style_helpers!();
|
gpui2_macros::style_helpers!();
|
||||||
|
|
||||||
/// Sets the size of the element to the full width and height.
|
/// Sets the size of the element to the full width and height.
|
||||||
@ -433,7 +438,7 @@ pub trait Styled {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
fn text_size(mut self, size: impl Into<Rems>) -> Self
|
fn text_size(mut self, size: impl Into<AbsoluteLength>) -> Self
|
||||||
where
|
where
|
||||||
Self: Sized,
|
Self: Sized,
|
||||||
{
|
{
|
||||||
@ -449,7 +454,7 @@ pub trait Styled {
|
|||||||
{
|
{
|
||||||
self.text_style()
|
self.text_style()
|
||||||
.get_or_insert_with(Default::default)
|
.get_or_insert_with(Default::default)
|
||||||
.font_size = Some(rems(0.75));
|
.font_size = Some(rems(0.75).into());
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -459,7 +464,7 @@ pub trait Styled {
|
|||||||
{
|
{
|
||||||
self.text_style()
|
self.text_style()
|
||||||
.get_or_insert_with(Default::default)
|
.get_or_insert_with(Default::default)
|
||||||
.font_size = Some(rems(0.875));
|
.font_size = Some(rems(0.875).into());
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -469,7 +474,7 @@ pub trait Styled {
|
|||||||
{
|
{
|
||||||
self.text_style()
|
self.text_style()
|
||||||
.get_or_insert_with(Default::default)
|
.get_or_insert_with(Default::default)
|
||||||
.font_size = Some(rems(1.0));
|
.font_size = Some(rems(1.0).into());
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -479,7 +484,7 @@ pub trait Styled {
|
|||||||
{
|
{
|
||||||
self.text_style()
|
self.text_style()
|
||||||
.get_or_insert_with(Default::default)
|
.get_or_insert_with(Default::default)
|
||||||
.font_size = Some(rems(1.125));
|
.font_size = Some(rems(1.125).into());
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -489,7 +494,7 @@ pub trait Styled {
|
|||||||
{
|
{
|
||||||
self.text_style()
|
self.text_style()
|
||||||
.get_or_insert_with(Default::default)
|
.get_or_insert_with(Default::default)
|
||||||
.font_size = Some(rems(1.25));
|
.font_size = Some(rems(1.25).into());
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -499,7 +504,7 @@ pub trait Styled {
|
|||||||
{
|
{
|
||||||
self.text_style()
|
self.text_style()
|
||||||
.get_or_insert_with(Default::default)
|
.get_or_insert_with(Default::default)
|
||||||
.font_size = Some(rems(1.5));
|
.font_size = Some(rems(1.5).into());
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -509,7 +514,7 @@ pub trait Styled {
|
|||||||
{
|
{
|
||||||
self.text_style()
|
self.text_style()
|
||||||
.get_or_insert_with(Default::default)
|
.get_or_insert_with(Default::default)
|
||||||
.font_size = Some(rems(1.875));
|
.font_size = Some(rems(1.875).into());
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,10 +29,6 @@ impl Line {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn width(&self) -> Pixels {
|
|
||||||
self.layout.width
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn wrap_count(&self) -> usize {
|
pub fn wrap_count(&self) -> usize {
|
||||||
self.layout.wrap_boundaries.len()
|
self.layout.wrap_boundaries.len()
|
||||||
}
|
}
|
||||||
@ -78,7 +74,6 @@ impl Line {
|
|||||||
glyph_origin.y += line_height;
|
glyph_origin.y += line_height;
|
||||||
}
|
}
|
||||||
prev_glyph_position = glyph.position;
|
prev_glyph_position = glyph.position;
|
||||||
let glyph_origin = glyph_origin + baseline_offset;
|
|
||||||
|
|
||||||
let mut finished_underline: Option<(Point<Pixels>, UnderlineStyle)> = None;
|
let mut finished_underline: Option<(Point<Pixels>, UnderlineStyle)> = None;
|
||||||
if glyph.index >= run_end {
|
if glyph.index >= run_end {
|
||||||
@ -129,14 +124,14 @@ impl Line {
|
|||||||
if max_glyph_bounds.intersects(&content_mask.bounds) {
|
if max_glyph_bounds.intersects(&content_mask.bounds) {
|
||||||
if glyph.is_emoji {
|
if glyph.is_emoji {
|
||||||
cx.paint_emoji(
|
cx.paint_emoji(
|
||||||
glyph_origin,
|
glyph_origin + baseline_offset,
|
||||||
run.font_id,
|
run.font_id,
|
||||||
glyph.id,
|
glyph.id,
|
||||||
self.layout.layout.font_size,
|
self.layout.layout.font_size,
|
||||||
)?;
|
)?;
|
||||||
} else {
|
} else {
|
||||||
cx.paint_glyph(
|
cx.paint_glyph(
|
||||||
glyph_origin,
|
glyph_origin + baseline_offset,
|
||||||
run.font_id,
|
run.font_id,
|
||||||
glyph.id,
|
glyph.id,
|
||||||
self.layout.layout.font_size,
|
self.layout.layout.font_size,
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user