Merge branch 'main' into fix/terminal-suggestion-positioning__accept-completions

This commit is contained in:
Chapman Pendery
2023-12-05 14:49:31 -08:00
committed by GitHub
230 changed files with 13013 additions and 7755 deletions
@@ -0,0 +1,38 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { Node } from 'estree';
export = new class EnsureNoDisposablesAreLeakedInTestSuite implements eslint.Rule.RuleModule {
readonly meta: eslint.Rule.RuleMetaData = {
type: 'problem',
messages: {
ensure: 'Suites should include a call to `ensureNoDisposablesAreLeakedInTestSuite()` to ensure no disposables are leaked in tests.'
}
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
const config = <{ exclude: string[] }>context.options[0];
const needle = context.getFilename().replace(/\\/g, '/');
if (config.exclude.some((e) => needle.endsWith(e))) {
return {};
}
return {
[`Program > ExpressionStatement > CallExpression[callee.name='suite']`]: (node: Node) => {
const src = context.getSourceCode().getText(node)
if (!src.includes('ensureNoDisposablesAreLeakedInTestSuite(')) {
context.report({
node,
messageId: 'ensure',
});
}
},
};
}
};
+220
View File
@@ -136,6 +136,226 @@
]
}
},
{
"files": [
"src/vs/**/*.test.ts"
],
"rules": {
"local/code-ensure-no-disposables-leak-in-test": [
"warn",
{
// Files should (only) be removed from the list they adopt the leak detector
"exclude": [
"src/vs/base/parts/sandbox/test/electron-sandbox/globals.test.ts",
"src/vs/base/test/browser/browser.test.ts",
"src/vs/base/test/browser/comparers.test.ts",
"src/vs/base/test/browser/dom.test.ts",
"src/vs/base/test/browser/formattedTextRenderer.test.ts",
"src/vs/base/test/browser/hash.test.ts",
"src/vs/base/test/browser/iconLabels.test.ts",
"src/vs/base/test/browser/indexedDB.test.ts",
"src/vs/base/test/browser/ui/contextview/contextview.test.ts",
"src/vs/base/test/browser/ui/menu/menubar.test.ts",
"src/vs/base/test/browser/ui/scrollbar/scrollableElement.test.ts",
"src/vs/base/test/browser/ui/scrollbar/scrollbarState.test.ts",
"src/vs/base/test/common/arrays.test.ts",
"src/vs/base/test/common/arraysFind.test.ts",
"src/vs/base/test/common/assert.test.ts",
"src/vs/base/test/common/cache.test.ts",
"src/vs/base/test/common/charCode.test.ts",
"src/vs/base/test/common/collections.test.ts",
"src/vs/base/test/common/color.test.ts",
"src/vs/base/test/common/console.test.ts",
"src/vs/base/test/common/decorators.test.ts",
"src/vs/base/test/common/diff/diff.test.ts",
"src/vs/base/test/common/errors.test.ts",
"src/vs/base/test/common/filters.perf.test.ts",
"src/vs/base/test/common/filters.test.ts",
"src/vs/base/test/common/iconLabels.test.ts",
"src/vs/base/test/common/iterator.test.ts",
"src/vs/base/test/common/json.test.ts",
"src/vs/base/test/common/jsonEdit.test.ts",
"src/vs/base/test/common/jsonFormatter.test.ts",
"src/vs/base/test/common/keybindings.test.ts",
"src/vs/base/test/common/keyCodes.test.ts",
"src/vs/base/test/common/lazy.test.ts",
"src/vs/base/test/common/linkedList.test.ts",
"src/vs/base/test/common/linkedText.test.ts",
"src/vs/base/test/common/map.test.ts",
"src/vs/base/test/common/markdownString.test.ts",
"src/vs/base/test/common/marshalling.test.ts",
"src/vs/base/test/common/mime.test.ts",
"src/vs/base/test/common/naturalLanguage/korean.test.ts",
"src/vs/base/test/common/network.test.ts",
"src/vs/base/test/common/normalization.test.ts",
"src/vs/base/test/common/objects.test.ts",
"src/vs/base/test/common/observable.test.ts",
"src/vs/base/test/common/path.test.ts",
"src/vs/base/test/common/prefixTree.test.ts",
"src/vs/base/test/common/resources.test.ts",
"src/vs/base/test/common/resourceTree.test.ts",
"src/vs/base/test/common/scrollable.test.ts",
"src/vs/base/test/common/skipList.test.ts",
"src/vs/base/test/common/strings.test.ts",
"src/vs/base/test/common/stripComments.test.ts",
"src/vs/base/test/common/ternarySearchtree.test.ts",
"src/vs/base/test/common/tfIdf.test.ts",
"src/vs/base/test/common/types.test.ts",
"src/vs/base/test/common/uri.test.ts",
"src/vs/base/test/common/uuid.test.ts",
"src/vs/base/test/node/crypto.test.ts",
"src/vs/base/test/node/css.build.test.ts",
"src/vs/base/test/node/id.test.ts",
"src/vs/base/test/node/nodeStreams.test.ts",
"src/vs/base/test/node/port.test.ts",
"src/vs/base/test/node/powershell.test.ts",
"src/vs/base/test/node/snapshot.test.ts",
"src/vs/base/test/node/unc.test.ts",
"src/vs/code/test/electron-sandbox/issue/testReporterModel.test.ts",
"src/vs/editor/contrib/codeAction/test/browser/codeActionKeybindingResolver.test.ts",
"src/vs/editor/contrib/codeAction/test/browser/codeActionModel.test.ts",
"src/vs/editor/contrib/dropOrPasteInto/test/browser/editSort.test.ts",
"src/vs/editor/contrib/folding/test/browser/foldingModel.test.ts",
"src/vs/editor/contrib/folding/test/browser/foldingRanges.test.ts",
"src/vs/editor/contrib/folding/test/browser/indentFold.test.ts",
"src/vs/editor/contrib/folding/test/browser/indentRangeProvider.test.ts",
"src/vs/editor/contrib/gotoSymbol/test/browser/referencesModel.test.ts",
"src/vs/editor/contrib/smartSelect/test/browser/smartSelect.test.ts",
"src/vs/editor/contrib/snippet/test/browser/snippetParser.test.ts",
"src/vs/editor/contrib/snippet/test/browser/snippetSession.test.ts",
"src/vs/editor/contrib/snippet/test/browser/snippetVariables.test.ts",
"src/vs/editor/contrib/suggest/test/browser/completionModel.test.ts",
"src/vs/editor/contrib/suggest/test/browser/suggestMemory.test.ts",
"src/vs/editor/test/common/services/languageService.test.ts",
"src/vs/editor/test/node/classification/typescript.test.ts",
"src/vs/editor/test/node/diffing/defaultLinesDiffComputer.test.ts",
"src/vs/editor/test/node/diffing/fixtures.test.ts",
"src/vs/platform/configuration/test/common/configuration.test.ts",
"src/vs/platform/configuration/test/common/configurationModels.test.ts",
"src/vs/platform/configuration/test/common/configurationRegistry.test.ts",
"src/vs/platform/contextkey/test/common/contextkey.test.ts",
"src/vs/platform/contextkey/test/common/parser.test.ts",
"src/vs/platform/contextkey/test/common/scanner.test.ts",
"src/vs/platform/dialogs/test/common/dialog.test.ts",
"src/vs/platform/environment/test/node/argv.test.ts",
"src/vs/platform/environment/test/node/userDataPath.test.ts",
"src/vs/platform/extensionManagement/test/common/configRemotes.test.ts",
"src/vs/platform/extensionManagement/test/common/extensionManagement.test.ts",
"src/vs/platform/extensions/test/common/extensionValidator.test.ts",
"src/vs/platform/externalTerminal/electron-main/externalTerminalService.test.ts",
"src/vs/platform/instantiation/test/common/graph.test.ts",
"src/vs/platform/instantiation/test/common/instantiationService.test.ts",
"src/vs/platform/keybinding/test/common/abstractKeybindingService.test.ts",
"src/vs/platform/keybinding/test/common/keybindingLabels.test.ts",
"src/vs/platform/keybinding/test/common/keybindingResolver.test.ts",
"src/vs/platform/markers/test/common/markerService.test.ts",
"src/vs/platform/opener/test/common/opener.test.ts",
"src/vs/platform/progress/test/common/progress.test.ts",
"src/vs/platform/registry/test/common/platform.test.ts",
"src/vs/platform/remote/test/common/remoteHosts.test.ts",
"src/vs/platform/telemetry/test/browser/1dsAppender.test.ts",
"src/vs/platform/telemetry/test/browser/telemetryService.test.ts",
"src/vs/platform/telemetry/test/common/telemetryLogAppender.test.ts",
"src/vs/platform/undoRedo/test/common/undoRedoService.test.ts",
"src/vs/platform/userDataSync/test/common/extensionsMerge.test.ts",
"src/vs/platform/userDataSync/test/common/globalStateMerge.test.ts",
"src/vs/platform/userDataSync/test/common/settingsMerge.test.ts",
"src/vs/platform/userDataSync/test/common/snippetsMerge.test.ts",
"src/vs/platform/userDataSync/test/common/userDataProfilesManifestMerge.test.ts",
"src/vs/platform/workspace/test/common/workspace.test.ts",
"src/vs/platform/workspaces/test/common/workspaces.test.ts",
"src/vs/platform/workspaces/test/electron-main/workspaces.test.ts",
"src/vs/server/test/node/serverConnectionToken.test.ts",
"src/vs/workbench/api/test/browser/extHost.api.impl.test.ts",
"src/vs/workbench/api/test/browser/extHostApiCommands.test.ts",
"src/vs/workbench/api/test/browser/extHostBulkEdits.test.ts",
"src/vs/workbench/api/test/browser/extHostCommands.test.ts",
"src/vs/workbench/api/test/browser/extHostDocumentSaveParticipant.test.ts",
"src/vs/workbench/api/test/browser/extHostMessagerService.test.ts",
"src/vs/workbench/api/test/browser/extHostTelemetry.test.ts",
"src/vs/workbench/api/test/browser/extHostTextEditor.test.ts",
"src/vs/workbench/api/test/browser/extHostTypeConverter.test.ts",
"src/vs/workbench/api/test/browser/extHostTypes.test.ts",
"src/vs/workbench/api/test/browser/extHostWorkspace.test.ts",
"src/vs/workbench/api/test/browser/mainThreadConfiguration.test.ts",
"src/vs/workbench/api/test/browser/mainThreadDocuments.test.ts",
"src/vs/workbench/api/test/common/extensionHostMain.test.ts",
"src/vs/workbench/api/test/common/extHostExtensionActivator.test.ts",
"src/vs/workbench/api/test/node/extHostTunnelService.test.ts",
"src/vs/workbench/contrib/bulkEdit/test/browser/bulkCellEdits.test.ts",
"src/vs/workbench/contrib/chat/test/common/chatWordCounter.test.ts",
"src/vs/workbench/contrib/debug/test/browser/baseDebugView.test.ts",
"src/vs/workbench/contrib/debug/test/browser/breakpoints.test.ts",
"src/vs/workbench/contrib/debug/test/browser/callStack.test.ts",
"src/vs/workbench/contrib/debug/test/browser/debugHover.test.ts",
"src/vs/workbench/contrib/debug/test/browser/repl.test.ts",
"src/vs/workbench/contrib/debug/test/common/debugModel.test.ts",
"src/vs/workbench/contrib/debug/test/node/debugger.test.ts",
"src/vs/workbench/contrib/debug/test/node/streamDebugAdapter.test.ts",
"src/vs/workbench/contrib/debug/test/node/terminals.test.ts",
"src/vs/workbench/contrib/editSessions/test/browser/editSessions.test.ts",
"src/vs/workbench/contrib/extensions/test/common/extensionQuery.test.ts",
"src/vs/workbench/contrib/extensions/test/electron-sandbox/extension.test.ts",
"src/vs/workbench/contrib/files/test/browser/explorerFileNestingTrie.test.ts",
"src/vs/workbench/contrib/files/test/browser/explorerModel.test.ts",
"src/vs/workbench/contrib/files/test/browser/explorerView.test.ts",
"src/vs/workbench/contrib/files/test/browser/fileActions.test.ts",
"src/vs/workbench/contrib/notebook/test/browser/cellDnd.test.ts",
"src/vs/workbench/contrib/notebook/test/browser/contrib/contributedStatusBarItemController.test.ts",
"src/vs/workbench/contrib/notebook/test/browser/contrib/executionStatusBarItem.test.ts",
"src/vs/workbench/contrib/notebook/test/browser/contrib/layoutActions.test.ts",
"src/vs/workbench/contrib/notebook/test/browser/contrib/outputCopyTests.test.ts",
"src/vs/workbench/contrib/notebook/test/browser/notebookBrowser.test.ts",
"src/vs/workbench/contrib/notebook/test/browser/notebookExecutionService.test.ts",
"src/vs/workbench/contrib/notebook/test/browser/notebookExecutionStateService.test.ts",
"src/vs/workbench/contrib/notebook/test/browser/notebookTextModel.test.ts",
"src/vs/workbench/contrib/search/test/common/cacheState.test.ts",
"src/vs/workbench/contrib/search/test/common/extractRange.test.ts",
"src/vs/workbench/contrib/snippets/test/browser/snippetFile.test.ts",
"src/vs/workbench/contrib/snippets/test/browser/snippetsRegistry.test.ts",
"src/vs/workbench/contrib/snippets/test/browser/snippetsRewrite.test.ts",
"src/vs/workbench/contrib/tags/test/node/workspaceTags.test.ts",
"src/vs/workbench/contrib/tasks/test/common/problemMatcher.test.ts",
"src/vs/workbench/contrib/tasks/test/common/taskConfiguration.test.ts",
"src/vs/workbench/contrib/terminal/test/browser/terminalActions.test.ts",
"src/vs/workbench/contrib/themes/test/node/colorRegistryExport.test.ts",
"src/vs/workbench/contrib/url/test/browser/trustedDomains.test.ts",
"src/vs/workbench/contrib/welcomeGettingStarted/test/browser/gettingStartedMarkdownRenderer.test.ts",
"src/vs/workbench/services/commands/test/common/commandService.test.ts",
"src/vs/workbench/services/configuration/test/common/configurationModels.test.ts",
"src/vs/workbench/services/configurationResolver/test/electron-sandbox/configurationResolverService.test.ts",
"src/vs/workbench/services/dialogs/test/electron-sandbox/fileDialogService.test.ts",
"src/vs/workbench/services/editor/test/browser/editorResolverService.test.ts",
"src/vs/workbench/services/extensions/test/common/extensionDescriptionRegistry.test.ts",
"src/vs/workbench/services/keybinding/test/browser/keybindingIO.test.ts",
"src/vs/workbench/services/keybinding/test/node/fallbackKeyboardMapper.test.ts",
"src/vs/workbench/services/keybinding/test/node/macLinuxKeyboardMapper.test.ts",
"src/vs/workbench/services/keybinding/test/node/windowsKeyboardMapper.test.ts",
"src/vs/workbench/services/preferences/test/browser/preferencesService.test.ts",
"src/vs/workbench/services/preferences/test/common/preferencesValidation.test.ts",
"src/vs/workbench/services/search/test/browser/queryBuilder.test.ts",
"src/vs/workbench/services/search/test/common/ignoreFile.test.ts",
"src/vs/workbench/services/search/test/common/queryBuilder.test.ts",
"src/vs/workbench/services/search/test/common/replace.test.ts",
"src/vs/workbench/services/search/test/common/search.test.ts",
"src/vs/workbench/services/search/test/common/searchHelpers.test.ts",
"src/vs/workbench/services/search/test/node/ripgrepFileSearch.test.ts",
"src/vs/workbench/services/search/test/node/ripgrepTextSearchEngineUtils.test.ts",
"src/vs/workbench/services/search/test/node/textSearchManager.test.ts",
"src/vs/workbench/services/telemetry/test/browser/commonProperties.test.ts",
"src/vs/workbench/services/textfile/test/common/textFileService.io.test.ts",
"src/vs/workbench/services/textMate/test/browser/arrayOperation.test.ts",
"src/vs/workbench/services/themes/test/node/tokenStyleResolving.test.ts",
"src/vs/workbench/services/userActivity/test/browser/domActivityTracker.test.ts",
"src/vs/workbench/services/workspaces/test/browser/workspaces.test.ts",
"src/vs/workbench/services/workspaces/test/common/workspaceTrust.test.ts",
"src/vs/workbench/test/browser/quickAccess.test.ts",
"src/vs/workbench/test/browser/webview.test.ts"
]
}
]
}
},
{
"files": [
"**/vscode.d.ts",
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+5 -1
View File
@@ -164,5 +164,9 @@
"vscode-notebook-renderer",
"src/vs/workbench/workbench.web.main.ts",
"src/vs/workbench/api/common/extHostTypes.ts"
]
],
"[github-issues]": {
"editor.wordWrap": "on"
},
"css.format.spaceAroundSelectorSeparator": true,
}
+2 -2
View File
@@ -1,5 +1,5 @@
disturl "https://electronjs.org/headers"
target "25.9.6"
ms_build_id "25531495"
target "25.9.7"
ms_build_id "25551756"
runtime "electron"
build_from_source "true"
+75 -75
View File
@@ -1,75 +1,75 @@
bd1bd27fb2724748b50ed9978146e9f3c28f21f09144901da4fb09c2412ef6b8 *chromedriver-v25.9.6-darwin-arm64.zip
c8fc339dcf9d93940d9e85be0ca8ef992ee12c93f191b79b074f8c5624c195e8 *chromedriver-v25.9.6-darwin-x64.zip
77331490233bd58c1fcd8c930e8a346b50ffe4e790278370c83a7c4bfe2e91b5 *chromedriver-v25.9.6-linux-arm64.zip
2a050686a8b455ad3ff799f50844b64849db8d0b3b7354850bfb62b21408dc6c *chromedriver-v25.9.6-linux-armv7l.zip
4999e2bb69c65c84e562a9ad3420b0323ad0cffb04979ed6db8211b3bd90783e *chromedriver-v25.9.6-linux-x64.zip
42273234489748b2c16886dd4c8afada9ecf972e60ce4323fd810fb101097738 *chromedriver-v25.9.6-mas-arm64.zip
d63b3ef6eb49bc0d1d048a77e8f5059599aa8b7d74a4032cb90b6b8978dd822f *chromedriver-v25.9.6-mas-x64.zip
88337702ae3854fdd01978383753d125548f45614422e0bc1979b84e9ee4568e *chromedriver-v25.9.6-win32-arm64.zip
4e6191def9c9975d44eba453218186ebd1511c61ab739f018c6ee887b9df87e5 *chromedriver-v25.9.6-win32-ia32.zip
002e6a0e331013c8679a3835110f6f73c6b297b091bb3a82dff3ae96fbf167f6 *chromedriver-v25.9.6-win32-x64.zip
5cf2cf7f78c6c4e2411f2fca3e8a68ea8b627478d12da7f9d1066b12c2c3ad30 *electron-api.json
e18f9801837e0cf3d9818bb0829819b57545fcaebf1355999f2cb8d0eada09f1 *electron-v25.9.6-darwin-arm64-dsym-snapshot.zip
dd961d0f2de707ce5153adc0f5d62fb97e0b251f0512cf3f364ba9cb4e043161 *electron-v25.9.6-darwin-arm64-dsym.zip
14f9d7c37a85ef03300edc335ba3b43583c121bb05d23e7496adfc001a552feb *electron-v25.9.6-darwin-arm64-symbols.zip
dc06bbd7378b68d67469b958bf049944e08dc67c7fc9d0a5f94828f85982f5b9 *electron-v25.9.6-darwin-arm64.zip
d5cef8cdaa0d697ec82d1c8ca2252d7debe4a6beeab34cbd14e2af294bec6745 *electron-v25.9.6-darwin-x64-dsym-snapshot.zip
d3da17c9e8b9bcaf52871f8dfbf8589401613e4ba8dd09316bccf0606ac68fb3 *electron-v25.9.6-darwin-x64-dsym.zip
7cac10c7b4ff45f90fd8e15dbc33f69931abaf06e9791f0d4e6af5b589face64 *electron-v25.9.6-darwin-x64-symbols.zip
0accf891874030cac28632cc36ac4b88398e99aa3c39be0947ed9e3d3457c0ba *electron-v25.9.6-darwin-x64.zip
4374a1513e6829f241855bfe11b2aa6eb276a8f3cfbf4f5b8f67b0f561016219 *electron-v25.9.6-linux-arm64-debug.zip
127ba3c914d978e62765b1a6be1ffe963aa9d7ed91dbb8442bb94ebd0e45fec1 *electron-v25.9.6-linux-arm64-symbols.zip
6ced27b15114c868d2ec0e479a4cd4c32a42014f28a3cfac274c0cf5d26c8433 *electron-v25.9.6-linux-arm64.zip
4374a1513e6829f241855bfe11b2aa6eb276a8f3cfbf4f5b8f67b0f561016219 *electron-v25.9.6-linux-armv7l-debug.zip
a6f605e2174ebcaa8f508a49a1ca3d3273295f8d5547a77e7d71d1e631a40baa *electron-v25.9.6-linux-armv7l-symbols.zip
311e463b02ed81788c2ab0d462f1efcf45efa49f325b0e9383a2894cdd6bf25c *electron-v25.9.6-linux-armv7l.zip
b58e46a687f69df227567083487818d10a31fd010bf377c8c4269a8c5b0f03bf *electron-v25.9.6-linux-x64-debug.zip
17661fd7bf9ee53d5f45e7d85a8e00e02c91ef67a1fcd8f04854392910cdca44 *electron-v25.9.6-linux-x64-symbols.zip
aa6b7e15c303f3c6a75c5d46c2809975a33848600cdcfc08023085a3fb490799 *electron-v25.9.6-linux-x64.zip
e18f9801837e0cf3d9818bb0829819b57545fcaebf1355999f2cb8d0eada09f1 *electron-v25.9.6-mas-arm64-dsym-snapshot.zip
d3c688a5a6297fba598f96fc315cd1712120f9f75966c82c7cd4f727159dfa60 *electron-v25.9.6-mas-arm64-dsym.zip
49706b64eed5929236c94b74622fee539c84287a2c2b6c7391307f38817750d3 *electron-v25.9.6-mas-arm64-symbols.zip
4920d36bc45e07a4705ab779a11db5339af6e0ba52c38dd2e9add007c96399fb *electron-v25.9.6-mas-arm64.zip
3601d1a6d5f686944798b58ea95ccbfc92584d2eec7c9e73bf3acb87eb570fb0 *electron-v25.9.6-mas-x64-dsym-snapshot.zip
5ccda3381211819ab87cd3a34f22ed9cf422dbe9d36bb4e5458a6b5d523b87bc *electron-v25.9.6-mas-x64-dsym.zip
d9d01d00ebbdc8a6a4894d5486c1eec657925bfdf6948b2123051c7eadc06369 *electron-v25.9.6-mas-x64-symbols.zip
8cf6f477b9468fb0ae693c96f47852d3f1be96eb5b4ca45b1946295c3677d28f *electron-v25.9.6-mas-x64.zip
568fbe49277eb0458e79c7793ea6038c419624b654628892535bc58f1f86c5f8 *electron-v25.9.6-win32-arm64-pdb.zip
9cbcf9e64c0f2611d27cea77105595a7ab9c57cc933da3bf162edb1b7f1a9808 *electron-v25.9.6-win32-arm64-symbols.zip
e7b968fc53cc7a10a4ccb5133af045968479685ebb9617f06817f03667fdd425 *electron-v25.9.6-win32-arm64-toolchain-profile.zip
6c4f9beed89c7bfd1538815861e2b1128a28a82fd729429dca1757dc4f77ccbd *electron-v25.9.6-win32-arm64.zip
b8eb0490a78757f61ca4438a1f78eb7874eb8da66544432adbdb97fa84bad2d6 *electron-v25.9.6-win32-ia32-pdb.zip
87edb1f236e7728b0c2b7a055e9f56f375fc2cafda880c3a6dc6df06678308ce *electron-v25.9.6-win32-ia32-symbols.zip
e7b968fc53cc7a10a4ccb5133af045968479685ebb9617f06817f03667fdd425 *electron-v25.9.6-win32-ia32-toolchain-profile.zip
ba25e44570ec2ba476052a43220011ee36609c70af9a96255385987ef9aafee4 *electron-v25.9.6-win32-ia32.zip
e9b4061feadf44020976bde51427e8f19d5921cf0bee1a6f7f2c91428896a0f6 *electron-v25.9.6-win32-x64-pdb.zip
5f85dc477fd1cb780dddfb6b62ef758a36a7973a1c51e58e5ba00b5b2c0a2eaa *electron-v25.9.6-win32-x64-symbols.zip
e7b968fc53cc7a10a4ccb5133af045968479685ebb9617f06817f03667fdd425 *electron-v25.9.6-win32-x64-toolchain-profile.zip
ed6410951228470ff976227042a0b430b72ce6c1e241a48fec367a86df8fa0a1 *electron-v25.9.6-win32-x64.zip
fc51b357c0fff78487b91a927076e2520d57081abe6a4ddbb8d15e3f462cbdb3 *electron.d.ts
0cf917e3270eeb935152a02e223cd551e43f59d40f2951a93cc24be2497f60de *ffmpeg-v25.9.6-darwin-arm64.zip
9254e94359efac66a2d9161d8e9312a43d174eab56ce4fb8cab202e5516a3ad0 *ffmpeg-v25.9.6-darwin-x64.zip
bd52d57ff97fb56ac01a3482af905d04f0d4e9c13c53858c6d9f99957eca82da *ffmpeg-v25.9.6-linux-arm64.zip
9b3d09177fa1e63e2a6beecfa70aeec30aeb5c1873ff21128a68051c4e23f95d *ffmpeg-v25.9.6-linux-armv7l.zip
edc7b1c9f1a0733f109a2c0375a4e40c5bfe0bf28b7f06dcc76e1ada0aa2f125 *ffmpeg-v25.9.6-linux-x64.zip
d50d1880a1c9e4ef11d8e712091b8faa0f47bcbdf339cbf276dd952892c64dbe *ffmpeg-v25.9.6-mas-arm64.zip
d61f6ecb96cb28876e9f53944763cac2d9b85a9d9dba53851f477ac3dc3301ef *ffmpeg-v25.9.6-mas-x64.zip
198d05aaef020af1a98453246a3e3ff999331b63967607fb706586f08cc43fac *ffmpeg-v25.9.6-win32-arm64.zip
2b80110b470491dbf33f2dcf1188a865980c94fb2a940cff5610e5b86701b51b *ffmpeg-v25.9.6-win32-ia32.zip
37f260ab3ae666df594705b400ff6592ddc4f088d95b585acd37ba529db5fff2 *ffmpeg-v25.9.6-win32-x64.zip
b1423529a11f5348b6b78a36d355134aec2760a1a2744699c83cd0b6b03cd425 *hunspell_dictionaries.zip
c89b061fe0b8835df41b8c00d3f791bc0830fb9be6b0955518c78bcacb5dd75f *libcxx-objects-v25.9.6-linux-arm64.zip
098e9f8af88085189e4c04f324baafa09d7a64c350576fd38d9dbf32ff0e8d30 *libcxx-objects-v25.9.6-linux-armv7l.zip
2e4e4faac500704cf16db656a870b9981659671ebaef4dfc972b5ad222422a81 *libcxx-objects-v25.9.6-linux-x64.zip
b61068bc99d5144f1f31f6a5d9862ebd7f091c745dba0ddfd1135be395540721 *libcxx_headers.zip
3a13e19e8633bea161650a6b3eba8a0b08b98e84d0246a72eea099d0807cba3c *libcxxabi_headers.zip
a33a708edab6fd2cab24eba6ea520e4b762bfd642e7a8e5548281c190b94a2a1 *mksnapshot-v25.9.6-darwin-arm64.zip
3ac987f47d898a8ef3f3ac2703be1aad4c10dc44dc01f5c2a495a8ca9ec9c660 *mksnapshot-v25.9.6-darwin-x64.zip
c3ee9b1d7d899c9211154fd56b2403cd882d77bb58fb48bbe744a668fe05256d *mksnapshot-v25.9.6-linux-arm64-x64.zip
440e7a903decccf95c1e0a1b01bef286413a59bd2c0831553f52872ba3790e22 *mksnapshot-v25.9.6-linux-armv7l-x64.zip
7240fa92f34beb0c6e5f455bc1f08f693de4480e852c986989f799849b1c6961 *mksnapshot-v25.9.6-linux-x64.zip
4a4f0337d444fa390ed7dffc70c73b67db0d37c978683aa0d41ee9cac741b690 *mksnapshot-v25.9.6-mas-arm64.zip
10de1874b5d168e9cdce9c825a1a29eee830495a9c4c0ab1c2849e89641b35b0 *mksnapshot-v25.9.6-mas-x64.zip
b2a15fdb3cca2085fdd72bc991fd8f945a028c0ed5872e9d271a79c8f61efb1d *mksnapshot-v25.9.6-win32-arm64-x64.zip
bd625b4089e43ece3246f92bfa1d0d401efe522cf9a3cba52bcc484aa86ec7a5 *mksnapshot-v25.9.6-win32-ia32.zip
f82a10a340568bcfc6605e69853f84b2158f0e86561c42036ee2232b23fccbec *mksnapshot-v25.9.6-win32-x64.zip
6d0c679fa3f8a9498b708f93c40c0918523c5790bb0e0055b0e8ac871efc228d *chromedriver-v25.9.7-darwin-arm64.zip
cd758c34bb6a5bf0ce0df48627fafa4fab5d1f22f2622b29cba3f5c5cc2dd4ae *chromedriver-v25.9.7-darwin-x64.zip
bcfd29d527ba4d243b496dddee58a73e82a2aeaae5c1c15d55a5729a5d714576 *chromedriver-v25.9.7-linux-arm64.zip
869e2584570e1a472bd60bf6a405abc53702e1c8c20f24ff9e6e74449e49fad6 *chromedriver-v25.9.7-linux-armv7l.zip
af8c4bc1277cf816bc9b94d1da4febda0083f7764318dbaca6d678527bffcc4f *chromedriver-v25.9.7-linux-x64.zip
9c7ce39bc74da1db6a95ed63683649001a42306476a288afb55c53c3fca1fef0 *chromedriver-v25.9.7-mas-arm64.zip
123fbab9b17aac3142051bfd3c60f1ac1b0eb6e71049b9e6d489a0f917daa909 *chromedriver-v25.9.7-mas-x64.zip
e6a52e4181ee1a3a15ba254c237043147b72904f38b7b925e40e85d37cf1d44a *chromedriver-v25.9.7-win32-arm64.zip
4c5b8d1df6efe5c9ec5db033a3fc2ec7f93f429d0c43d6025fe0f7b96f2cf449 *chromedriver-v25.9.7-win32-ia32.zip
388cc0cce6ce11a60d0b81c5b37b8cb04bcbade533616973a4ef7161487aa59f *chromedriver-v25.9.7-win32-x64.zip
0bfdc68d235fb824b809f59394a0e39c735235a07c1a715df26cc65cd55141b0 *electron-api.json
bba809f7e84b67efabe8b9c92d2cf976d4d90c56c0d20d88fa893d0e47674e50 *electron-v25.9.7-darwin-arm64-dsym-snapshot.zip
9058c533f955a792ad491094b4b2c31def667916301eb42f8d36d3b60b7bcf69 *electron-v25.9.7-darwin-arm64-dsym.zip
59c72fb1bd0c58b4ad05a2478bb3fba69c05e195b4d5972b3723c13b70d04fa6 *electron-v25.9.7-darwin-arm64-symbols.zip
f0fd83b62946669849c535f89eb8a44e17fa1d1a454058447759d2a2f5ce03fc *electron-v25.9.7-darwin-arm64.zip
75473483e4dbdd7416e1dd78ab8123940904e7c63d5ae47efd481a3806dedc34 *electron-v25.9.7-darwin-x64-dsym-snapshot.zip
119e21d1961f11978a85dc0fef58d689a94ea9593ee4122519a02e449da52cf8 *electron-v25.9.7-darwin-x64-dsym.zip
77aaac85c725d32ca9a79e9efa1749d1404bbacb72aa9e15846da566c49543f1 *electron-v25.9.7-darwin-x64-symbols.zip
a3c61f288d416a7ddc23c9b5db779502243f630bffaba47ab66c0f00c0018fdb *electron-v25.9.7-darwin-x64.zip
d8fe114d07c4d0953e4ab40da6d9c958b401e4304755a7a133f13156b8ca48e4 *electron-v25.9.7-linux-arm64-debug.zip
1e0df565ec278b6515adee40f9eed06f5931297a72a6eb71c1472f8d31dbe8b1 *electron-v25.9.7-linux-arm64-symbols.zip
c889eec8bdb2737ff03d03d571df7834e3cef764527688db87f6578f54684d7c *electron-v25.9.7-linux-arm64.zip
d8fe114d07c4d0953e4ab40da6d9c958b401e4304755a7a133f13156b8ca48e4 *electron-v25.9.7-linux-armv7l-debug.zip
d58185a0eff29461868d5e8b15a387ccf8f2ffd407c06e787f1a89b73ce8b794 *electron-v25.9.7-linux-armv7l-symbols.zip
56b31812f7b4b010f34240bb3e3ea186c8c7f87e75be483a3877f93d7b9442d1 *electron-v25.9.7-linux-armv7l.zip
1818221bd66f005fc6cd843375db9a13dd0c8ef9709725ed9708177fbc2e26d0 *electron-v25.9.7-linux-x64-debug.zip
87907fb6fec001e7dcd4ebb9e6340a008385a5de2e59ce06c6de0828f2ed6aaa *electron-v25.9.7-linux-x64-symbols.zip
54b458ac590c495bef05ed6708a4667bbeac6a1865734ac3ecbb4da24ab57d26 *electron-v25.9.7-linux-x64.zip
bba809f7e84b67efabe8b9c92d2cf976d4d90c56c0d20d88fa893d0e47674e50 *electron-v25.9.7-mas-arm64-dsym-snapshot.zip
7d8271d31dc3a1348ccdf7f70bd111ca43f8f5dbba509dcbafafa607432070d4 *electron-v25.9.7-mas-arm64-dsym.zip
965d581a44d70e6597b3da8864754eeb3470d1db0451d5d4385c43063e78a80d *electron-v25.9.7-mas-arm64-symbols.zip
1ddbe56386e08612f6196f5a9b1ad6de4e45cb1525175f4a8dbb1abd14673614 *electron-v25.9.7-mas-arm64.zip
2b2c4ae842cd6da1d4d7784e40a6e28ee087b399320d73fa8470b91570efa92f *electron-v25.9.7-mas-x64-dsym-snapshot.zip
abed370155c8f758ab25f1e201791889cd1d1c81e967f56b1eb0e7f2116d307b *electron-v25.9.7-mas-x64-dsym.zip
2b5d527fd2c4658dea4a0ec5c16c44f79f4be6d316a450c300cbd2635131ab2f *electron-v25.9.7-mas-x64-symbols.zip
ca0a53619c4c71331f1641d4186496a6ad9f557357e24028c49fa25b5e8ab3e2 *electron-v25.9.7-mas-x64.zip
491d76cd80b52bac63000c4affdf63f11a043fb196e75974648ef3cacba8eb0b *electron-v25.9.7-win32-arm64-pdb.zip
238a44d5c38ef9b3ec521a17af3808f7148bb6106c285b37148a9a45142029e9 *electron-v25.9.7-win32-arm64-symbols.zip
e7b968fc53cc7a10a4ccb5133af045968479685ebb9617f06817f03667fdd425 *electron-v25.9.7-win32-arm64-toolchain-profile.zip
d3a90da294b5137177af45d492d09603363db39a9c77ce43be24d80fea03347f *electron-v25.9.7-win32-arm64.zip
5c1a25b57e6a50ab0224f1eaef5572e122905ff0c690dda58f1c767100eab405 *electron-v25.9.7-win32-ia32-pdb.zip
96706d1eab97189ae3eda815a270ebe02bef3e228428fcd343065866569a3a16 *electron-v25.9.7-win32-ia32-symbols.zip
e7b968fc53cc7a10a4ccb5133af045968479685ebb9617f06817f03667fdd425 *electron-v25.9.7-win32-ia32-toolchain-profile.zip
16fecd283bae6b72747132b8a7da68520a69752ac9d5fa1d39f3a43a8920f366 *electron-v25.9.7-win32-ia32.zip
4c2c40cb56ee8e6091a8860c8eec1e59542d525e3c23506e0f265aec29aacb49 *electron-v25.9.7-win32-x64-pdb.zip
5c4e56dce95bdfac8d91e7d2b6af69b7dab98d823377392a68e41352e4098daf *electron-v25.9.7-win32-x64-symbols.zip
e7b968fc53cc7a10a4ccb5133af045968479685ebb9617f06817f03667fdd425 *electron-v25.9.7-win32-x64-toolchain-profile.zip
d4b77ec5b7cfc8d156a0518ebd82eb373440ce2abf1af92b6faa32cf444b7256 *electron-v25.9.7-win32-x64.zip
c80b2154d9de94a520c09b038b27f4a5e93177f8de48821c3f129cea0e52bd1c *electron.d.ts
65f4ed4292b9114f79385dac6e79c468ad686f97b0c4d507943ad7b9a28821c4 *ffmpeg-v25.9.7-darwin-arm64.zip
5259bd7c62211644aa6bb982a8e80d36b5c0049a76917cc1d39fc2226df02da5 *ffmpeg-v25.9.7-darwin-x64.zip
bd52d57ff97fb56ac01a3482af905d04f0d4e9c13c53858c6d9f99957eca82da *ffmpeg-v25.9.7-linux-arm64.zip
9b3d09177fa1e63e2a6beecfa70aeec30aeb5c1873ff21128a68051c4e23f95d *ffmpeg-v25.9.7-linux-armv7l.zip
edc7b1c9f1a0733f109a2c0375a4e40c5bfe0bf28b7f06dcc76e1ada0aa2f125 *ffmpeg-v25.9.7-linux-x64.zip
3eb7218d6fa54ebb3836773df6414d1b0e119071761151dc48dd39ab7421a1ba *ffmpeg-v25.9.7-mas-arm64.zip
0dbbba4c8120c1a0a00cffec6e4ad70013eab35b77e19877c79fc7ae9caff1e9 *ffmpeg-v25.9.7-mas-x64.zip
11853e7c01586a0b9b2a58caee308282b6cf1662b7b5bf9ac5d74de423b16f1c *ffmpeg-v25.9.7-win32-arm64.zip
7306690feb13bb97491ca0c4ac3fa78feb5d3227043b317febddb10136eb0b2b *ffmpeg-v25.9.7-win32-ia32.zip
da487bff8151e47827fa684607d1799e5d0c0b53dcd51e76c955ed5d2ee8f24a *ffmpeg-v25.9.7-win32-x64.zip
77b9a9567a24c5583722d97a3cb23a075ebf1eec885cec660c53cd1b54992b30 *hunspell_dictionaries.zip
9a3395cbd02f241134df5eb6cb65788052919bc19816c92befe6cb500eeb398c *libcxx-objects-v25.9.7-linux-arm64.zip
1feea6b4bd9ee66c0dfd0327e422f07b4b52cb24e872b12aa37e98d819fbadc6 *libcxx-objects-v25.9.7-linux-armv7l.zip
2f3bbda5de58e46705d622d1f671224973cef54de9cbdb8355dfe270ca092288 *libcxx-objects-v25.9.7-linux-x64.zip
324a1eed3f8197bbeac0a513d50a394b2eaa0ac92c92f9526b0b07d74f12c4e8 *libcxx_headers.zip
8052c0a22a9ad673d32c1ae157df9638838fbd017a030263d4cce21aeed5c824 *libcxxabi_headers.zip
7dd7ddb90482c84fb7d29e10ca8293bc85ed692c4f1f636624229bbe8ac103af *mksnapshot-v25.9.7-darwin-arm64.zip
696f5eb1d7eb5941ea0c2cca1e0682d77d7883f71ff18f577e6ccdb1591e8a4e *mksnapshot-v25.9.7-darwin-x64.zip
aff92c1eb4ef1c33fa4d1fcda43ee6123f87c5acd72093f78c8d22daaba2622d *mksnapshot-v25.9.7-linux-arm64-x64.zip
8e7463c9714b99d8fafee3830f5bcbf335ff9f66b9d8b9a77d285a688a0691c0 *mksnapshot-v25.9.7-linux-armv7l-x64.zip
329c285e158322667844cccf99767ea1ef39ada804edbbfe99ddbe2c228ddc21 *mksnapshot-v25.9.7-linux-x64.zip
aa30c1cb96f52bfc68e44dd7c2420a153de577652a9312a5c85256a1f2769f48 *mksnapshot-v25.9.7-mas-arm64.zip
e32f14ed222f7e01d81982959601df7881928d5f90ada773454a06203bd83412 *mksnapshot-v25.9.7-mas-x64.zip
472ffc38d34c059c1e1036784a11109f6d998e91d4b8c4bb0e84ded3d66f7bea *mksnapshot-v25.9.7-win32-arm64-x64.zip
882a8880a03deffa40b24cbc59af31ac285a6a1e0e049d053f750d3db17853ea *mksnapshot-v25.9.7-win32-ia32.zip
dfe408f01ddcc9b4f52b59fcefe49386f30eb097cef78fb98b8667deb42bc7f1 *mksnapshot-v25.9.7-win32-x64.zip
+1 -1
View File
@@ -36,7 +36,7 @@ async function fetchUrl(url, options, retries = 10, retryDelay = 1000) {
try {
let startTime = 0;
if (verbose) {
log(`Start fetching ${ansiColors.magenta(url)}${retries !== 10 ? `(${10 - retries} retry}` : ''}`);
log(`Start fetching ${ansiColors.magenta(url)}${retries !== 10 ? ` (${10 - retries} retry)` : ''}`);
startTime = new Date().getTime();
}
const controller = new AbortController();
+1 -1
View File
@@ -46,7 +46,7 @@ export async function fetchUrl(url: string, options: IFetchOptions, retries = 10
try {
let startTime = 0;
if (verbose) {
log(`Start fetching ${ansiColors.magenta(url)}${retries !== 10 ? `(${10 - retries} retry}` : ''}`);
log(`Start fetching ${ansiColors.magenta(url)}${retries !== 10 ? ` (${10 - retries} retry)` : ''}`);
startTime = new Date().getTime();
}
const controller = new AbortController();
+2 -2
View File
@@ -528,12 +528,12 @@
"git": {
"name": "electron",
"repositoryUrl": "https://github.com/electron/electron",
"commitHash": "7916733f5ff0cf319972a0df44de01e40bbfa40e"
"commitHash": "55738ddac34a75be9bfbdda3ac1638adfd0e5479"
}
},
"isOnlyProductionDependency": true,
"license": "MIT",
"version": "25.9.6"
"version": "25.9.7"
},
{
"component": {
+1 -1
View File
@@ -223,7 +223,7 @@ pub struct CommandShellArgs {
#[clap(long, num_args = 0..=1, default_missing_value = "0")]
pub on_port: Option<u16>,
/// Require the given token string to be given in the handshake.
#[clap(long)]
#[clap(long, env = "VSCODE_CLI_REQUIRE_TOKEN")]
pub require_token: Option<String>,
/// Optional parent process id. If provided, the server will be stopped when the process of the given pid no longer exists
#[clap(long, hide = true)]
-1
View File
@@ -24,7 +24,6 @@
"tabInputTextMerge",
"timeline",
"contribMergeEditorMenus",
"scmInputBoxActionButton",
"contribSourceControlInputBoxMenu"
],
"categories": [
+1 -8
View File
@@ -5,7 +5,7 @@
import { Model } from '../model';
import { Repository as BaseRepository, Resource } from '../repository';
import { InputBox, Git, API, Repository, Remote, RepositoryState, Branch, ForcePushMode, Ref, Submodule, Commit, Change, RepositoryUIState, Status, LogOptions, APIState, CommitOptions, RefType, CredentialsProvider, BranchQuery, PushErrorHandler, PublishEvent, FetchOptions, RemoteSourceProvider, RemoteSourcePublisher, PostCommitCommandsProvider, RefQuery, BranchProtectionProvider, InitOptions, CommitMessageProvider } from './git';
import { InputBox, Git, API, Repository, Remote, RepositoryState, Branch, ForcePushMode, Ref, Submodule, Commit, Change, RepositoryUIState, Status, LogOptions, APIState, CommitOptions, RefType, CredentialsProvider, BranchQuery, PushErrorHandler, PublishEvent, FetchOptions, RemoteSourceProvider, RemoteSourcePublisher, PostCommitCommandsProvider, RefQuery, BranchProtectionProvider, InitOptions } from './git';
import { Event, SourceControlInputBox, Uri, SourceControl, Disposable, commands, CancellationToken } from 'vscode';
import { combinedDisposable, mapEvent } from '../util';
import { toGitUri } from '../uri';
@@ -345,13 +345,6 @@ export class ApiImpl implements API {
return this._model.registerBranchProtectionProvider(root, provider);
}
/**
* @deprecated See https://github.com/microsoft/vscode/issues/195474
*/
registerCommitMessageProvider(provider: CommitMessageProvider): Disposable {
return this._model.registerCommitMessageProvider(provider);
}
constructor(private _model: Model) { }
}
-7
View File
@@ -312,12 +312,6 @@ export interface BranchProtectionProvider {
provideBranchProtection(): BranchProtection[];
}
export interface CommitMessageProvider {
readonly title: string;
readonly icon?: Uri | { light: Uri, dark: Uri } | ThemeIcon;
provideCommitMessage(repository: Repository, changes: string[], cancellationToken?: CancellationToken): Promise<string | undefined>;
}
export type APIState = 'uninitialized' | 'initialized';
export interface PublishEvent {
@@ -345,7 +339,6 @@ export interface API {
registerPostCommitCommandsProvider(provider: PostCommitCommandsProvider): Disposable;
registerPushErrorHandler(handler: PushErrorHandler): Disposable;
registerBranchProtectionProvider(root: Uri, provider: BranchProtectionProvider): Disposable;
registerCommitMessageProvider(provider: CommitMessageProvider): Disposable;
}
export interface GitExtension {
-20
View File
@@ -3631,26 +3631,6 @@ export class CommandCenter {
}
}
@command('git.generateCommitMessage', { repository: true })
async generateCommitMessage(repository: Repository): Promise<void> {
if (!repository || !this.model.commitMessageProvider) {
return;
}
await window.withProgress({ location: ProgressLocation.SourceControl }, async () => {
await repository.generateCommitMessage();
});
}
@command('git.generateCommitMessageCancel', { repository: true })
generateCommitMessageCancel(repository: Repository): void {
if (!repository || !this.model.commitMessageProvider) {
return;
}
repository.generateCommitMessageCancel();
}
@command('git.viewChanges', { repository: true })
viewChanges(repository: Repository): void {
this._viewChanges('Git: Changes', repository.workingTreeGroup.resourceStates);
-188
View File
@@ -1,188 +0,0 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { CancellationToken, Disposable, Event, EventEmitter, Uri, workspace, ThemeIcon, l10n, SourceControlInputBoxActionButton } from 'vscode';
import { CommitMessageProvider, Status, Repository as ApiRepository } from './api/git';
import { Repository } from './repository';
import { dispose } from './util';
export interface ICommitMessageProviderRegistry {
readonly onDidChangeCommitMessageProvider: Event<void>;
commitMessageProvider: CommitMessageProvider | undefined;
registerCommitMessageProvider(provider: CommitMessageProvider): Disposable;
}
export class TestCommitMessageProvider implements CommitMessageProvider {
readonly icon = new ThemeIcon('rocket');
readonly title = 'Generate Commit Message (Test)';
private readonly _changesMap = new Map<string, [string[], number]>();
async provideCommitMessage(repository: ApiRepository, changes: string[], token: CancellationToken): Promise<string | undefined> {
console.log('Repository: ', repository.rootUri.fsPath);
if (token.isCancellationRequested) {
return undefined;
}
return new Promise(resolve => {
token.onCancellationRequested(() => resolve(undefined));
setTimeout(() => {
const attemptCount = this.getAttemptCount(repository, changes);
this._changesMap.set(repository.rootUri.fsPath, [changes, attemptCount]);
resolve(`Test commit message (Attempt No. ${attemptCount})`);
}, 5000);
});
}
private getAttemptCount(repository: ApiRepository, changes: string[]): number {
const [previousChanges, previousCount] = this._changesMap.get(repository.rootUri.fsPath) ?? [[], 1];
if (previousChanges.length !== changes.length) {
return 1;
}
for (let index = 0; index < changes.length; index++) {
if (previousChanges[index] !== changes[index]) {
return 1;
}
}
return previousCount + 1;
}
}
interface ActionButtonState {
readonly isGenerating: boolean;
readonly enabled: boolean;
}
export class GenerateCommitMessageActionButton {
private _onDidChange = new EventEmitter<void>();
get onDidChange(): Event<void> { return this._onDidChange.event; }
private _state: ActionButtonState;
get state() { return this._state; }
set state(state: ActionButtonState) {
if (this._state.enabled === state.enabled &&
this._state.isGenerating === state.isGenerating) {
return;
}
this._state = state;
this._onDidChange.fire();
}
get button(): SourceControlInputBoxActionButton | undefined {
if (this.commitMessageProviderRegistry.commitMessageProvider === undefined) {
return undefined;
}
return this.state.isGenerating ?
{
icon: new ThemeIcon('debug-stop'),
command: {
title: l10n.t('Cancel'),
command: 'git.generateCommitMessageCancel',
arguments: [this.repository.sourceControl]
},
enabled: this.state.enabled,
} :
{
icon: this.commitMessageProviderRegistry.commitMessageProvider.icon ?? new ThemeIcon('sparkle'),
command: {
title: this.commitMessageProviderRegistry.commitMessageProvider.title,
command: 'git.generateCommitMessage',
arguments: [this.repository.sourceControl]
},
enabled: this.state.enabled
};
}
private disposables: Disposable[] = [];
constructor(
private readonly repository: Repository,
private readonly commitMessageProviderRegistry: ICommitMessageProviderRegistry
) {
this._state = {
enabled: false,
isGenerating: false
};
const root = Uri.file(repository.root);
this.disposables.push(workspace.onDidChangeConfiguration(e => {
if (e.affectsConfiguration('git.enableSmartCommit', root) ||
e.affectsConfiguration('git.smartCommitChanges', root) ||
e.affectsConfiguration('git.suggestSmartCommit', root)) {
this.onDidChangeSmartCommitSettings();
}
}));
repository.onDidRunGitStatus(this.onDidRunGitStatus, this, this.disposables);
repository.onDidStartCommitMessageGeneration(this.onDidStartCommitMessageGeneration, this, this.disposables);
repository.onDidEndCommitMessageGeneration(this.onDidEndCommitMessageGeneration, this, this.disposables);
commitMessageProviderRegistry.onDidChangeCommitMessageProvider(this.onDidChangeCommitMessageProvider, this, this.disposables);
}
private onDidChangeCommitMessageProvider(): void {
this._onDidChange.fire();
}
private onDidStartCommitMessageGeneration(): void {
this.state = { ...this.state, isGenerating: true };
}
private onDidEndCommitMessageGeneration(): void {
this.state = { ...this.state, isGenerating: false };
}
private onDidChangeSmartCommitSettings(): void {
this.state = {
...this.state,
enabled: this.repositoryHasChangesToCommit()
};
}
private onDidRunGitStatus(): void {
this.state = {
...this.state,
enabled: this.repositoryHasChangesToCommit()
};
}
private repositoryHasChangesToCommit(): boolean {
const config = workspace.getConfiguration('git', Uri.file(this.repository.root));
const enableSmartCommit = config.get<boolean>('enableSmartCommit') === true;
const suggestSmartCommit = config.get<boolean>('suggestSmartCommit') === true;
const smartCommitChanges = config.get<'all' | 'tracked'>('smartCommitChanges', 'all');
const resources = [...this.repository.indexGroup.resourceStates];
if (
// Smart commit enabled (all)
(enableSmartCommit && smartCommitChanges === 'all') ||
// Smart commit disabled, smart suggestion enabled
(!enableSmartCommit && suggestSmartCommit)
) {
resources.push(...this.repository.workingTreeGroup.resourceStates);
}
// Smart commit enabled (tracked only)
if (enableSmartCommit && smartCommitChanges === 'tracked') {
resources.push(...this.repository.workingTreeGroup.resourceStates.filter(r => r.type !== Status.UNTRACKED));
}
return resources.length !== 0;
}
dispose(): void {
this.disposables = dispose(this.disposables);
}
}
+3 -22
View File
@@ -12,14 +12,13 @@ import { Git } from './git';
import * as path from 'path';
import * as fs from 'fs';
import { fromGitUri } from './uri';
import { APIState as State, CredentialsProvider, PushErrorHandler, PublishEvent, RemoteSourcePublisher, PostCommitCommandsProvider, BranchProtectionProvider, CommitMessageProvider } from './api/git';
import { APIState as State, CredentialsProvider, PushErrorHandler, PublishEvent, RemoteSourcePublisher, PostCommitCommandsProvider, BranchProtectionProvider } from './api/git';
import { Askpass } from './askpass';
import { IPushErrorHandlerRegistry } from './pushError';
import { ApiRepository } from './api/api1';
import { IRemoteSourcePublisherRegistry } from './remotePublisher';
import { IPostCommitCommandsProviderRegistry } from './postCommitCommands';
import { IBranchProtectionProviderRegistry } from './branchProtection';
import { ICommitMessageProviderRegistry } from './commitMessageProvider';
class RepositoryPick implements QuickPickItem {
@memoize get label(): string {
@@ -171,7 +170,7 @@ class UnsafeRepositoriesManager {
}
}
export class Model implements IRepositoryResolver, IBranchProtectionProviderRegistry, ICommitMessageProviderRegistry, IRemoteSourcePublisherRegistry, IPostCommitCommandsProviderRegistry, IPushErrorHandlerRegistry {
export class Model implements IRepositoryResolver, IBranchProtectionProviderRegistry, IRemoteSourcePublisherRegistry, IPostCommitCommandsProviderRegistry, IPushErrorHandlerRegistry {
private _onDidOpenRepository = new EventEmitter<Repository>();
readonly onDidOpenRepository: Event<Repository> = this._onDidOpenRepository.event;
@@ -238,14 +237,6 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
private pushErrorHandlers = new Set<PushErrorHandler>();
private _commitMessageProvider: CommitMessageProvider | undefined;
get commitMessageProvider(): CommitMessageProvider | undefined {
return this._commitMessageProvider;
}
private _onDidChangeCommitMessageProvider = new EventEmitter<void>();
readonly onDidChangeCommitMessageProvider = this._onDidChangeCommitMessageProvider.event;
private _unsafeRepositoriesManager: UnsafeRepositoriesManager;
get unsafeRepositories(): string[] {
return this._unsafeRepositoriesManager.repositories;
@@ -587,7 +578,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
// Open repository
const [dotGit, repositoryRootRealPath] = await Promise.all([this.git.getRepositoryDotGit(repositoryRoot), this.getRepositoryRootRealPath(repositoryRoot)]);
const repository = new Repository(this.git.open(repositoryRoot, repositoryRootRealPath, dotGit, this.logger), this, this, this, this, this, this, this.globalState, this.logger, this.telemetryReporter);
const repository = new Repository(this.git.open(repositoryRoot, repositoryRootRealPath, dotGit, this.logger), this, this, this, this, this, this.globalState, this.logger, this.telemetryReporter);
this.open(repository);
this._closedRepositoriesManager.deleteRepository(repository.root);
@@ -948,16 +939,6 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
return toDisposable(() => this.pushErrorHandlers.delete(handler));
}
registerCommitMessageProvider(provider: CommitMessageProvider): Disposable {
this._commitMessageProvider = provider;
this._onDidChangeCommitMessageProvider.fire();
return toDisposable(() => {
this._commitMessageProvider = undefined;
this._onDidChangeCommitMessageProvider.fire();
});
}
getPushErrorHandlers(): PushErrorHandler[] {
return [...this.pushErrorHandlers];
}
-101
View File
@@ -24,7 +24,6 @@ import { IPostCommitCommandsProviderRegistry, CommitCommandsCenter } from './pos
import { Operation, OperationKind, OperationManager, OperationResult } from './operation';
import { GitBranchProtectionProvider, IBranchProtectionProviderRegistry } from './branchProtection';
import { GitHistoryProvider } from './historyProvider';
import { GenerateCommitMessageActionButton, ICommitMessageProviderRegistry } from './commitMessageProvider';
const timeout = (millis: number) => new Promise(c => setTimeout(c, millis));
@@ -34,47 +33,6 @@ function getIconUri(iconName: string, theme: string): Uri {
return Uri.file(path.join(iconsRootPath, theme, `${iconName}.svg`));
}
function wrapCommitMessage(message: string, subjectLineLength: number, bodyLineLength: number): string {
const messageLinesWrapped: string[] = [];
const messageLines = message.split(/\r?\n/g);
for (let index = 0; index < messageLines.length; index++) {
const messageLine = messageLines[index];
const threshold = index === 0 ? subjectLineLength : bodyLineLength;
if (messageLine.length <= threshold) {
messageLinesWrapped.push(messageLine);
continue;
}
let position = 0;
const lineSegments: string[] = [];
while (messageLine.length - position > threshold) {
const lastSpaceBeforeThreshold = messageLine.lastIndexOf(' ', position + threshold);
if (lastSpaceBeforeThreshold !== -1 && lastSpaceBeforeThreshold > position) {
lineSegments.push(...[messageLine.substring(position, lastSpaceBeforeThreshold), '\n']);
position = lastSpaceBeforeThreshold + 1;
} else {
// Find first space after threshold
const firstSpaceAfterThreshold = messageLine.indexOf(' ', position);
if (firstSpaceAfterThreshold !== -1) {
lineSegments.push(...[messageLine.substring(position, firstSpaceAfterThreshold), '\n']);
position = firstSpaceAfterThreshold + 1;
} else {
lineSegments.push(messageLine.substring(position));
position = messageLine.length;
}
}
}
if (position < messageLine.length) {
lineSegments.push(messageLine.substring(position));
}
messageLinesWrapped.push(lineSegments.join(''));
}
return messageLinesWrapped.join('\n');
}
export const enum RepositoryState {
Idle,
Disposed
@@ -845,7 +803,6 @@ export class Repository implements Disposable {
private commitCommandCenter: CommitCommandsCenter;
private resourceCommandResolver = new ResourceCommandResolver(this);
private updateModelStateCancellationTokenSource: CancellationTokenSource | undefined;
private generateCommitMessageCancellationTokenSource: CancellationTokenSource | undefined;
private disposables: Disposable[] = [];
constructor(
@@ -855,7 +812,6 @@ export class Repository implements Disposable {
remoteSourcePublisherRegistry: IRemoteSourcePublisherRegistry,
postCommitCommandsProviderRegistry: IPostCommitCommandsProviderRegistry,
private readonly branchProtectionProviderRegistry: IBranchProtectionProviderRegistry,
private readonly commitMessageProviderRegistry: ICommitMessageProviderRegistry,
globalState: Memento,
private readonly logger: LogOutputChannel,
private telemetryReporter: TelemetryReporter
@@ -901,11 +857,6 @@ export class Repository implements Disposable {
this._sourceControl.acceptInputCommand = { command: 'git.commit', title: l10n.t('Commit'), arguments: [this._sourceControl] };
this._sourceControl.inputBox.validateInput = this.validateInput.bind(this);
const inputActionButton = new GenerateCommitMessageActionButton(this, commitMessageProviderRegistry);
this.disposables.push(inputActionButton);
inputActionButton.onDidChange(() => this._sourceControl.inputBox.actionButton = inputActionButton.button);
this._sourceControl.inputBox.actionButton = inputActionButton.button;
this.disposables.push(this._sourceControl);
this.updateInputBoxPlaceholder();
@@ -2086,58 +2037,6 @@ export class Repository implements Disposable {
});
}
async generateCommitMessage(): Promise<void> {
if (!this.commitMessageProviderRegistry.commitMessageProvider) {
return;
}
this._onDidStartCommitMessageGeneration.fire();
this.generateCommitMessageCancellationTokenSource?.cancel();
this.generateCommitMessageCancellationTokenSource = new CancellationTokenSource();
try {
const diff: string[] = [];
if (this.indexGroup.resourceStates.length !== 0) {
for (const file of this.indexGroup.resourceStates.map(r => r.resourceUri.fsPath)) {
diff.push(await this.diffIndexWithHEAD(file));
}
} else {
for (const file of this.workingTreeGroup.resourceStates.map(r => r.resourceUri.fsPath)) {
diff.push(await this.diffWithHEAD(file));
}
}
if (diff.length === 0) {
return;
}
const token = this.generateCommitMessageCancellationTokenSource.token;
const provider = this.commitMessageProviderRegistry.commitMessageProvider;
const commitMessage = await provider.provideCommitMessage(new ApiRepository(this), diff, token);
if (commitMessage) {
const config = workspace.getConfiguration('git');
const subjectLineLength = config.get<number | null>('inputValidationSubjectLength', null);
const bodyLineLength = config.get<number>('inputValidationLength', 50);
this.inputBox.value = wrapCommitMessage(commitMessage, subjectLineLength ?? bodyLineLength, bodyLineLength);
}
}
catch (err) {
this.logger.error(err);
}
finally {
this._onDidEndCommitMessageGeneration.fire();
}
}
generateCommitMessageCancel(): void {
this.generateCommitMessageCancellationTokenSource?.cancel();
this.generateCommitMessageCancellationTokenSource?.dispose();
this.generateCommitMessageCancellationTokenSource = undefined;
this._onDidEndCommitMessageGeneration.fire();
}
// Parses output of `git check-ignore -v -z` and returns only those paths
// that are actually ignored by git.
// Matches to a negative pattern (starting with '!') are filtered out.
-1
View File
@@ -13,7 +13,6 @@
"../../src/vscode-dts/vscode.proposed.diffCommand.d.ts",
"../../src/vscode-dts/vscode.proposed.scmActionButton.d.ts",
"../../src/vscode-dts/vscode.proposed.scmHistoryProvider.d.ts",
"../../src/vscode-dts/vscode.proposed.scmInputBoxActionButton.d.ts",
"../../src/vscode-dts/vscode.proposed.scmSelectedProvider.d.ts",
"../../src/vscode-dts/vscode.proposed.scmValidation.d.ts",
"../../src/vscode-dts/vscode.proposed.tabInputTextMerge.d.ts",
+2 -1
View File
@@ -35,7 +35,8 @@
".gitattributes",
".gitconfig",
".gitmodules",
".editorconfig"
".editorconfig",
".repo"
],
"filenames": [
"gitconfig",
+19
View File
@@ -0,0 +1,19 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
var updateGrammar = require('vscode-grammar-updater');
function adaptLess(grammar) {
grammar.name = 'Less';
grammar.scopeName = 'source.css.less';
}
async function updateGrammars() {
await updateGrammar.update('radium-v/Better-Less', 'Syntaxes/Better%20Less.tmLanguage', './syntaxes/less.tmLanguage.json', adaptLess, 'master');
}
updateGrammars();
+3 -3
View File
@@ -5,12 +5,12 @@
"type": "git",
"git": {
"name": "language-less",
"repositoryUrl": "https://github.com/atom/language-less",
"commitHash": "87d4d59e8de6796b506b81a16e1dc1fafc99d30f"
"repositoryUrl": "https://github.com/radium-v/Better-Less",
"commitHash": "05de79f600227201e35f07a49f07acce80e49dbf"
}
},
"license": "MIT",
"version": "0.34.2"
"version": "0.6.1"
}
],
"version": 1
+1 -1
View File
@@ -9,7 +9,7 @@
"vscode": "*"
},
"scripts": {
"update-grammar": "node ../node_modules/vscode-grammar-updater/bin atom/language-less grammars/less.cson ./syntaxes/less.tmLanguage.json"
"update-grammar": "node ./build/update-grammar.js"
},
"contributes": {
"languages": [
File diff suppressed because one or more lines are too long
@@ -94,7 +94,10 @@
}
},
{
"scope": "entity.name.tag.css",
"scope": [
"entity.name.tag.css",
"entity.name.tag.less"
],
"settings": {
"foreground": "#d7ba7d"
}
@@ -108,10 +111,11 @@
{
"scope": [
"entity.other.attribute-name.class.css",
"entity.other.attribute-name.class.mixin.css",
"source.css entity.other.attribute-name.class",
"entity.other.attribute-name.id.css",
"entity.other.attribute-name.parent-selector.css",
"entity.other.attribute-name.pseudo-class.css",
"entity.other.attribute-name.parent.less",
"source.css entity.other.attribute-name.pseudo-class",
"entity.other.attribute-name.pseudo-element.css",
"source.css.less entity.other.attribute-name.id",
"entity.other.attribute-name.scss"
@@ -306,9 +310,7 @@
"scope": [
"support.type.vendored.property-name",
"support.type.property-name",
"variable.css",
"variable.scss",
"variable.other.less",
"source.css variable",
"source.coffee.embedded"
],
"settings": {
@@ -86,7 +86,10 @@
}
},
{
"scope": "entity.name.tag.css",
"scope": [
"entity.name.tag.css",
"entity.name.tag.less"
],
"settings": {
"foreground": "#d7ba7d"
}
@@ -100,10 +103,11 @@
{
"scope": [
"entity.other.attribute-name.class.css",
"entity.other.attribute-name.class.mixin.css",
"source.css entity.other.attribute-name.class",
"entity.other.attribute-name.id.css",
"entity.other.attribute-name.parent-selector.css",
"entity.other.attribute-name.pseudo-class.css",
"entity.other.attribute-name.parent.less",
"source.css entity.other.attribute-name.pseudo-class",
"entity.other.attribute-name.pseudo-element.css",
"source.css.less entity.other.attribute-name.id",
"entity.other.attribute-name.scss"
@@ -266,9 +270,7 @@
"scope": [
"support.type.vendored.property-name",
"support.type.property-name",
"variable.css",
"variable.scss",
"variable.other.less",
"source.css variable",
"source.coffee.embedded"
],
"settings": {
@@ -80,10 +80,11 @@
{
"scope": [
"entity.other.attribute-name.class.css",
"entity.other.attribute-name.class.mixin.css",
"source.css entity.other.attribute-name.class",
"entity.other.attribute-name.id.css",
"entity.other.attribute-name.parent-selector.css",
"entity.other.attribute-name.pseudo-class.css",
"entity.other.attribute-name.parent.less",
"source.css entity.other.attribute-name.pseudo-class",
"entity.other.attribute-name.pseudo-element.css",
"source.css.less entity.other.attribute-name.id",
"entity.other.attribute-name.scss"
@@ -279,9 +280,7 @@
"scope": [
"support.type.vendored.property-name",
"support.type.property-name",
"variable.css",
"variable.scss",
"variable.other.less",
"source.css variable",
"source.coffee.embedded"
],
"settings": {
@@ -114,10 +114,11 @@
{
"scope": [
"entity.other.attribute-name.class.css",
"entity.other.attribute-name.class.mixin.css",
"source.css entity.other.attribute-name.class",
"entity.other.attribute-name.id.css",
"entity.other.attribute-name.parent-selector.css",
"entity.other.attribute-name.pseudo-class.css",
"entity.other.attribute-name.parent.less",
"source.css entity.other.attribute-name.pseudo-class",
"entity.other.attribute-name.pseudo-element.css",
"source.css.less entity.other.attribute-name.id",
"entity.other.attribute-name.scss"
@@ -327,9 +328,7 @@
"scope": [
"support.type.vendored.property-name",
"support.type.property-name",
"variable.css",
"variable.scss",
"variable.other.less",
"source.css variable",
"source.coffee.embedded"
],
"settings": {
@@ -252,7 +252,8 @@
"meta.selector",
"meta.selector entity",
"meta.selector entity punctuation",
"entity.name.tag.css"
"entity.name.tag.css",
"entity.name.tag.less"
],
"settings": {
"foreground": "#7A3E9D"
@@ -140,7 +140,10 @@
},
{
"name": "Keyword, Storage",
"scope": "keyword, storage, storage.type, entity.name.tag.css",
"scope": [
"keyword, storage, storage.type, entity.name.tag.css",
"entity.name.tag.less"
],
"settings": {
"fontStyle": "",
"foreground": "#EBBBFF"
+1 -2
View File
@@ -53,8 +53,7 @@
"workspaceTrust",
"telemetry",
"testingActiveProfile",
"windowActivity",
"interactiveUserActions"
"windowActivity"
],
"private": true,
"activationEvents": [],
@@ -1,7 +1,7 @@
[
{
"c": "#",
"t": "source.css.less meta.selector.css entity.other.attribute-name.id punctuation.definition.entity.css",
"t": "source.css.less meta.selector.less entity.other.attribute-name.id.less punctuation.definition.entity.less",
"r": {
"dark_plus": "source.css.less entity.other.attribute-name.id: #D7BA7D",
"light_plus": "source.css.less entity.other.attribute-name.id: #800000",
@@ -15,7 +15,7 @@
},
{
"c": "f",
"t": "source.css.less meta.selector.css entity.other.attribute-name.id",
"t": "source.css.less meta.selector.less entity.other.attribute-name.id.less",
"r": {
"dark_plus": "source.css.less entity.other.attribute-name.id: #D7BA7D",
"light_plus": "source.css.less entity.other.attribute-name.id: #800000",
@@ -29,7 +29,7 @@
},
{
"c": "(",
"t": "source.css.less meta.brace.round.css",
"t": "source.css.less meta.selector.less meta.group.less punctuation.definition.group.begin.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -43,35 +43,35 @@
},
{
"c": "@",
"t": "source.css.less variable.other.less punctuation.definition.variable.less",
"t": "source.css.less meta.selector.less meta.group.less meta.property-value.less variable.other.readwrite.less punctuation.definition.variable.less",
"r": {
"dark_plus": "variable.other.less: #9CDCFE",
"light_plus": "variable.other.less: #E50000",
"dark_vs": "variable.other.less: #9CDCFE",
"light_vs": "variable.other.less: #E50000",
"hc_black": "variable.other.less: #D4D4D4",
"dark_modern": "variable.other.less: #9CDCFE",
"hc_light": "variable.other.less: #264F78",
"light_modern": "variable.other.less: #E50000"
"dark_plus": "source.css variable: #9CDCFE",
"light_plus": "source.css variable: #E50000",
"dark_vs": "source.css variable: #9CDCFE",
"light_vs": "source.css variable: #E50000",
"hc_black": "source.css variable: #D4D4D4",
"dark_modern": "source.css variable: #9CDCFE",
"hc_light": "source.css variable: #264F78",
"light_modern": "source.css variable: #E50000"
}
},
{
"c": "hm",
"t": "source.css.less variable.other.less",
"t": "source.css.less meta.selector.less meta.group.less meta.property-value.less variable.other.readwrite.less support.other.variable.less",
"r": {
"dark_plus": "variable.other.less: #9CDCFE",
"light_plus": "variable.other.less: #E50000",
"dark_vs": "variable.other.less: #9CDCFE",
"light_vs": "variable.other.less: #E50000",
"hc_black": "variable.other.less: #D4D4D4",
"dark_modern": "variable.other.less: #9CDCFE",
"hc_light": "variable.other.less: #264F78",
"light_modern": "variable.other.less: #E50000"
"dark_plus": "source.css variable: #9CDCFE",
"light_plus": "source.css variable: #E50000",
"dark_vs": "source.css variable: #9CDCFE",
"light_vs": "source.css variable: #E50000",
"hc_black": "source.css variable: #D4D4D4",
"dark_modern": "source.css variable: #9CDCFE",
"hc_light": "source.css variable: #264F78",
"light_modern": "source.css variable: #E50000"
}
},
{
"c": ":",
"t": "source.css.less punctuation.separator.key-value.css",
"t": "source.css.less meta.selector.less meta.group.less meta.property-value.less punctuation.separator.key-value.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -85,7 +85,7 @@
},
{
"c": " ",
"t": "source.css.less",
"t": "source.css.less meta.selector.less meta.group.less meta.property-value.less meta.property-value.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -99,7 +99,7 @@
},
{
"c": "\"",
"t": "source.css.less string.quoted.double.css punctuation.definition.string.begin.css",
"t": "source.css.less meta.selector.less meta.group.less meta.property-value.less string.quoted.double.less punctuation.definition.string.begin.less",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -113,7 +113,7 @@
},
{
"c": "broken highlighting in VS Code",
"t": "source.css.less string.quoted.double.css",
"t": "source.css.less meta.selector.less meta.group.less meta.property-value.less string.quoted.double.less",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -127,7 +127,7 @@
},
{
"c": "\"",
"t": "source.css.less string.quoted.double.css punctuation.definition.string.end.css",
"t": "source.css.less meta.selector.less meta.group.less meta.property-value.less string.quoted.double.less punctuation.definition.string.end.less",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -141,7 +141,7 @@
},
{
"c": ")",
"t": "source.css.less meta.brace.round.css",
"t": "source.css.less meta.selector.less meta.group.less punctuation.definition.group.end.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -155,7 +155,7 @@
},
{
"c": " ",
"t": "source.css.less",
"t": "source.css.less meta.selector.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -169,7 +169,7 @@
},
{
"c": "{",
"t": "source.css.less meta.property-list.css punctuation.section.property-list.begin.bracket.curly.css",
"t": "source.css.less meta.property-list.less punctuation.definition.block.begin.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -183,7 +183,7 @@
},
{
"c": " ",
"t": "source.css.less meta.property-list.css",
"t": "source.css.less meta.property-list.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -197,21 +197,21 @@
},
{
"c": "content",
"t": "source.css.less meta.property-list.css entity.name.tag.css",
"t": "source.css.less meta.property-list.less support.type.property-name.less",
"r": {
"dark_plus": "entity.name.tag.css: #D7BA7D",
"light_plus": "entity.name.tag: #800000",
"dark_vs": "entity.name.tag.css: #D7BA7D",
"light_vs": "entity.name.tag: #800000",
"hc_black": "entity.name.tag.css: #D7BA7D",
"dark_modern": "entity.name.tag.css: #D7BA7D",
"hc_light": "entity.name.tag: #0F4A85",
"light_modern": "entity.name.tag: #800000"
"dark_plus": "support.type.property-name: #9CDCFE",
"light_plus": "support.type.property-name: #E50000",
"dark_vs": "support.type.property-name: #9CDCFE",
"light_vs": "support.type.property-name: #E50000",
"hc_black": "support.type.property-name: #D4D4D4",
"dark_modern": "support.type.property-name: #9CDCFE",
"hc_light": "support.type.property-name: #264F78",
"light_modern": "support.type.property-name: #E50000"
}
},
{
"c": ":",
"t": "source.css.less meta.property-list.css punctuation.separator.key-value.css",
"t": "source.css.less meta.property-list.less punctuation.separator.key-value.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -225,7 +225,7 @@
},
{
"c": " ",
"t": "source.css.less meta.property-list.css",
"t": "source.css.less meta.property-list.less meta.property-value.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -239,7 +239,7 @@
},
{
"c": "\"",
"t": "source.css.less meta.property-list.css meta.property-value.css string.quoted.double.css punctuation.definition.string.begin.css",
"t": "source.css.less meta.property-list.less meta.property-value.less string.quoted.double.less punctuation.definition.string.begin.less",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -253,7 +253,7 @@
},
{
"c": "\"",
"t": "source.css.less meta.property-list.css meta.property-value.css string.quoted.double.css punctuation.definition.string.end.css",
"t": "source.css.less meta.property-list.less meta.property-value.less string.quoted.double.less punctuation.definition.string.end.less",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -267,7 +267,7 @@
},
{
"c": ";",
"t": "source.css.less meta.property-list.css punctuation.terminator.rule.css",
"t": "source.css.less meta.property-list.less punctuation.terminator.rule.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -281,7 +281,7 @@
},
{
"c": "}",
"t": "source.css.less meta.property-list.css punctuation.section.property-list.end.bracket.curly.css",
"t": "source.css.less punctuation.definition.block.end.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1,35 +1,35 @@
[
{
"c": ":",
"t": "source.css.less entity.other.attribute-name.pseudo-class.css punctuation.definition.entity.css",
"t": "source.css.less meta.selector.less meta.function-call.less punctuation.definition.entity.less",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "default: #FFFFFF",
"dark_modern": "default: #CCCCCC",
"hc_light": "default: #292929",
"light_modern": "default: #3B3B3B"
}
},
{
"c": "root",
"t": "source.css.less entity.other.attribute-name.pseudo-class.css",
"t": "source.css.less meta.selector.less meta.function-call.less entity.other.attribute-name.pseudo-class.less",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
"c": " ",
"t": "source.css.less",
"t": "source.css.less meta.selector.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -43,7 +43,7 @@
},
{
"c": "{",
"t": "source.css.less meta.property-list.css punctuation.section.property-list.begin.bracket.curly.css",
"t": "source.css.less meta.property-list.less punctuation.definition.block.begin.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -57,7 +57,7 @@
},
{
"c": " ",
"t": "source.css.less meta.property-list.css",
"t": "source.css.less meta.property-list.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -71,35 +71,35 @@
},
{
"c": "--",
"t": "source.css.less meta.property-list.css variable.other.less punctuation.definition.variable.less",
"t": "source.css.less meta.property-list.less support.type.custom-property.less punctuation.definition.custom-property.less",
"r": {
"dark_plus": "variable.other.less: #9CDCFE",
"light_plus": "variable.other.less: #E50000",
"dark_vs": "variable.other.less: #9CDCFE",
"light_vs": "variable.other.less: #E50000",
"hc_black": "variable.other.less: #D4D4D4",
"dark_modern": "variable.other.less: #9CDCFE",
"hc_light": "variable.other.less: #264F78",
"light_modern": "variable.other.less: #E50000"
"dark_plus": "support.type: #4EC9B0",
"light_plus": "support.type: #267F99",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "support.type: #4EC9B0",
"dark_modern": "support.type: #4EC9B0",
"hc_light": "support.type: #185E73",
"light_modern": "support.type: #267F99"
}
},
{
"c": "spacing-unit",
"t": "source.css.less meta.property-list.css variable.other.less",
"t": "source.css.less meta.property-list.less support.type.custom-property.less support.type.custom-property.name.less",
"r": {
"dark_plus": "variable.other.less: #9CDCFE",
"light_plus": "variable.other.less: #E50000",
"dark_vs": "variable.other.less: #9CDCFE",
"light_vs": "variable.other.less: #E50000",
"hc_black": "variable.other.less: #D4D4D4",
"dark_modern": "variable.other.less: #9CDCFE",
"hc_light": "variable.other.less: #264F78",
"light_modern": "variable.other.less: #E50000"
"dark_plus": "support.type: #4EC9B0",
"light_plus": "support.type: #267F99",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "support.type: #4EC9B0",
"dark_modern": "support.type: #4EC9B0",
"hc_light": "support.type: #185E73",
"light_modern": "support.type: #267F99"
}
},
{
"c": ":",
"t": "source.css.less meta.property-list.css punctuation.separator.key-value.css",
"t": "source.css.less meta.property-list.less punctuation.separator.key-value.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -113,7 +113,7 @@
},
{
"c": " ",
"t": "source.css.less meta.property-list.css",
"t": "source.css.less meta.property-list.less meta.property-value.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -127,7 +127,7 @@
},
{
"c": "6",
"t": "source.css.less meta.property-list.css meta.property-value.css constant.numeric.css",
"t": "source.css.less meta.property-list.less meta.property-value.less constant.numeric.less",
"r": {
"dark_plus": "constant.numeric: #B5CEA8",
"light_plus": "constant.numeric: #098658",
@@ -141,7 +141,7 @@
},
{
"c": "px",
"t": "source.css.less meta.property-list.css meta.property-value.css constant.numeric.css keyword.other.unit.px.css",
"t": "source.css.less meta.property-list.less meta.property-value.less constant.numeric.less keyword.other.unit.less",
"r": {
"dark_plus": "keyword.other.unit: #B5CEA8",
"light_plus": "keyword.other.unit: #098658",
@@ -155,7 +155,7 @@
},
{
"c": ";",
"t": "source.css.less meta.property-list.css punctuation.terminator.rule.css",
"t": "source.css.less meta.property-list.less punctuation.terminator.rule.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -169,7 +169,7 @@
},
{
"c": " ",
"t": "source.css.less meta.property-list.css",
"t": "source.css.less meta.property-list.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -183,35 +183,35 @@
},
{
"c": "--",
"t": "source.css.less meta.property-list.css variable.other.less punctuation.definition.variable.less",
"t": "source.css.less meta.property-list.less support.type.custom-property.less punctuation.definition.custom-property.less",
"r": {
"dark_plus": "variable.other.less: #9CDCFE",
"light_plus": "variable.other.less: #E50000",
"dark_vs": "variable.other.less: #9CDCFE",
"light_vs": "variable.other.less: #E50000",
"hc_black": "variable.other.less: #D4D4D4",
"dark_modern": "variable.other.less: #9CDCFE",
"hc_light": "variable.other.less: #264F78",
"light_modern": "variable.other.less: #E50000"
"dark_plus": "support.type: #4EC9B0",
"light_plus": "support.type: #267F99",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "support.type: #4EC9B0",
"dark_modern": "support.type: #4EC9B0",
"hc_light": "support.type: #185E73",
"light_modern": "support.type: #267F99"
}
},
{
"c": "cell-padding",
"t": "source.css.less meta.property-list.css variable.other.less",
"t": "source.css.less meta.property-list.less support.type.custom-property.less support.type.custom-property.name.less",
"r": {
"dark_plus": "variable.other.less: #9CDCFE",
"light_plus": "variable.other.less: #E50000",
"dark_vs": "variable.other.less: #9CDCFE",
"light_vs": "variable.other.less: #E50000",
"hc_black": "variable.other.less: #D4D4D4",
"dark_modern": "variable.other.less: #9CDCFE",
"hc_light": "variable.other.less: #264F78",
"light_modern": "variable.other.less: #E50000"
"dark_plus": "support.type: #4EC9B0",
"light_plus": "support.type: #267F99",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "support.type: #4EC9B0",
"dark_modern": "support.type: #4EC9B0",
"hc_light": "support.type: #185E73",
"light_modern": "support.type: #267F99"
}
},
{
"c": ":",
"t": "source.css.less meta.property-list.css punctuation.separator.key-value.css",
"t": "source.css.less meta.property-list.less punctuation.separator.key-value.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -225,7 +225,7 @@
},
{
"c": " ",
"t": "source.css.less meta.property-list.css",
"t": "source.css.less meta.property-list.less meta.property-value.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -239,7 +239,7 @@
},
{
"c": "(",
"t": "source.css.less meta.property-list.css meta.property-value.css meta.brace.round.css",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.group.less punctuation.definition.group.begin.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -253,7 +253,7 @@
},
{
"c": "4",
"t": "source.css.less meta.property-list.css meta.property-value.css constant.numeric.css",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.group.less constant.numeric.less",
"r": {
"dark_plus": "constant.numeric: #B5CEA8",
"light_plus": "constant.numeric: #098658",
@@ -267,7 +267,7 @@
},
{
"c": " ",
"t": "source.css.less meta.property-list.css meta.property-value.css",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.group.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -281,7 +281,7 @@
},
{
"c": "*",
"t": "source.css.less meta.property-list.css meta.property-value.css keyword.operator.less",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.group.less keyword.operator.arithmetic.less",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -294,8 +294,8 @@
}
},
{
"c": " ",
"t": "source.css.less meta.property-list.css meta.property-value.css",
"c": " var",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.group.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -307,23 +307,9 @@
"light_modern": "default: #3B3B3B"
}
},
{
"c": "var",
"t": "source.css.less meta.property-list.css meta.property-value.css meta.function.variable.css support.function.misc.css",
"r": {
"dark_plus": "support.function: #DCDCAA",
"light_plus": "support.function: #795E26",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "support.function: #DCDCAA",
"dark_modern": "support.function: #DCDCAA",
"hc_light": "support.function: #5E2CBC",
"light_modern": "support.function: #795E26"
}
},
{
"c": "(",
"t": "source.css.less meta.property-list.css meta.property-value.css meta.function.variable.css punctuation.section.function.begin.bracket.round.css",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.group.less meta.group.less punctuation.definition.group.begin.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -336,22 +322,50 @@
}
},
{
"c": "--spacing-unit",
"t": "source.css.less meta.property-list.css meta.property-value.css meta.function.variable.css variable.argument.css",
"c": "--",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.group.less meta.group.less keyword.operator.arithmetic.less",
"r": {
"dark_plus": "variable: #9CDCFE",
"light_plus": "variable: #001080",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "variable: #9CDCFE",
"dark_modern": "variable: #9CDCFE",
"hc_light": "variable: #001080",
"light_modern": "variable: #001080"
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
"dark_vs": "keyword.operator: #D4D4D4",
"light_vs": "keyword.operator: #000000",
"hc_black": "keyword.operator: #D4D4D4",
"dark_modern": "keyword.operator: #D4D4D4",
"hc_light": "keyword.operator: #000000",
"light_modern": "keyword.operator: #000000"
}
},
{
"c": ")",
"t": "source.css.less meta.property-list.css meta.property-value.css meta.function.variable.css punctuation.section.function.end.bracket.round.css",
"c": "spacing",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.group.less meta.group.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "default: #FFFFFF",
"dark_modern": "default: #CCCCCC",
"hc_light": "default: #292929",
"light_modern": "default: #3B3B3B"
}
},
{
"c": "-",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.group.less meta.group.less keyword.operator.arithmetic.less",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
"dark_vs": "keyword.operator: #D4D4D4",
"light_vs": "keyword.operator: #000000",
"hc_black": "keyword.operator: #D4D4D4",
"dark_modern": "keyword.operator: #D4D4D4",
"hc_light": "keyword.operator: #000000",
"light_modern": "keyword.operator: #000000"
}
},
{
"c": "unit",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.group.less meta.group.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -365,7 +379,21 @@
},
{
"c": ")",
"t": "source.css.less meta.property-list.css meta.property-value.css meta.brace.round.css",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.group.less meta.group.less punctuation.definition.group.end.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "default: #FFFFFF",
"dark_modern": "default: #CCCCCC",
"hc_light": "default: #292929",
"light_modern": "default: #3B3B3B"
}
},
{
"c": ")",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.group.less punctuation.definition.group.end.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -379,7 +407,7 @@
},
{
"c": ";",
"t": "source.css.less meta.property-list.css punctuation.terminator.rule.css",
"t": "source.css.less meta.property-list.less punctuation.terminator.rule.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -393,7 +421,7 @@
},
{
"c": "}",
"t": "source.css.less meta.property-list.css punctuation.section.property-list.end.bracket.curly.css",
"t": "source.css.less punctuation.definition.block.end.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -407,21 +435,21 @@
},
{
"c": "body",
"t": "source.css.less entity.name.tag.css",
"t": "source.css.less meta.selector.less entity.name.tag.less",
"r": {
"dark_plus": "entity.name.tag.css: #D7BA7D",
"dark_plus": "entity.name.tag.less: #D7BA7D",
"light_plus": "entity.name.tag: #800000",
"dark_vs": "entity.name.tag.css: #D7BA7D",
"dark_vs": "entity.name.tag.less: #D7BA7D",
"light_vs": "entity.name.tag: #800000",
"hc_black": "entity.name.tag.css: #D7BA7D",
"dark_modern": "entity.name.tag.css: #D7BA7D",
"hc_black": "entity.name.tag.less: #D7BA7D",
"dark_modern": "entity.name.tag.less: #D7BA7D",
"hc_light": "entity.name.tag: #0F4A85",
"light_modern": "entity.name.tag: #800000"
}
},
{
"c": " ",
"t": "source.css.less",
"t": "source.css.less meta.selector.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -435,7 +463,7 @@
},
{
"c": "{",
"t": "source.css.less meta.property-list.css punctuation.section.property-list.begin.bracket.curly.css",
"t": "source.css.less meta.property-list.less punctuation.definition.block.begin.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -449,7 +477,7 @@
},
{
"c": " ",
"t": "source.css.less meta.property-list.css",
"t": "source.css.less meta.property-list.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -463,7 +491,7 @@
},
{
"c": "padding-left",
"t": "source.css.less meta.property-list.css support.type.property-name.css",
"t": "source.css.less meta.property-list.less support.type.property-name.less",
"r": {
"dark_plus": "support.type.property-name: #9CDCFE",
"light_plus": "support.type.property-name: #E50000",
@@ -477,7 +505,7 @@
},
{
"c": ":",
"t": "source.css.less meta.property-list.css punctuation.separator.key-value.css",
"t": "source.css.less meta.property-list.less punctuation.separator.key-value.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -491,7 +519,7 @@
},
{
"c": " ",
"t": "source.css.less meta.property-list.css",
"t": "source.css.less meta.property-list.less meta.property-value.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -505,7 +533,7 @@
},
{
"c": "calc",
"t": "source.css.less meta.property-list.css meta.property-value.css support.function.any-method.builtin.less",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.function-call.less support.function.calc.less",
"r": {
"dark_plus": "support.function: #DCDCAA",
"light_plus": "support.function: #795E26",
@@ -519,7 +547,7 @@
},
{
"c": "(",
"t": "source.css.less meta.property-list.css meta.property-value.css meta.brace.round.css",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.function-call.less punctuation.definition.group.begin.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -533,7 +561,7 @@
},
{
"c": "4",
"t": "source.css.less meta.property-list.css meta.property-value.css constant.numeric.css",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.function-call.less constant.numeric.less",
"r": {
"dark_plus": "constant.numeric: #B5CEA8",
"light_plus": "constant.numeric: #098658",
@@ -547,7 +575,7 @@
},
{
"c": " ",
"t": "source.css.less meta.property-list.css meta.property-value.css",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.function-call.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -561,7 +589,7 @@
},
{
"c": "*",
"t": "source.css.less meta.property-list.css meta.property-value.css keyword.operator.less",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.function-call.less keyword.operator.arithmetic.less",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -575,7 +603,7 @@
},
{
"c": " ",
"t": "source.css.less meta.property-list.css meta.property-value.css",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.function-call.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -589,7 +617,7 @@
},
{
"c": "var",
"t": "source.css.less meta.property-list.css meta.property-value.css meta.function.variable.css support.function.misc.css",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.function-call.less meta.function-call.less support.function.var.less",
"r": {
"dark_plus": "support.function: #DCDCAA",
"light_plus": "support.function: #795E26",
@@ -603,7 +631,7 @@
},
{
"c": "(",
"t": "source.css.less meta.property-list.css meta.property-value.css meta.function.variable.css punctuation.section.function.begin.bracket.round.css",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.function-call.less meta.function-call.less punctuation.definition.group.begin.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -616,22 +644,36 @@
}
},
{
"c": "--spacing-unit",
"t": "source.css.less meta.property-list.css meta.property-value.css meta.function.variable.css variable.argument.css",
"c": "--",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.function-call.less meta.function-call.less support.type.custom-property.less punctuation.definition.custom-property.less",
"r": {
"dark_plus": "variable: #9CDCFE",
"light_plus": "variable: #001080",
"dark_plus": "support.type: #4EC9B0",
"light_plus": "support.type: #267F99",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "variable: #9CDCFE",
"dark_modern": "variable: #9CDCFE",
"hc_light": "variable: #001080",
"light_modern": "variable: #001080"
"hc_black": "support.type: #4EC9B0",
"dark_modern": "support.type: #4EC9B0",
"hc_light": "support.type: #185E73",
"light_modern": "support.type: #267F99"
}
},
{
"c": "spacing-unit",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.function-call.less meta.function-call.less support.type.custom-property.less support.type.custom-property.name.less",
"r": {
"dark_plus": "support.type: #4EC9B0",
"light_plus": "support.type: #267F99",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "support.type: #4EC9B0",
"dark_modern": "support.type: #4EC9B0",
"hc_light": "support.type: #185E73",
"light_modern": "support.type: #267F99"
}
},
{
"c": ",",
"t": "source.css.less meta.property-list.css meta.property-value.css meta.function.variable.css punctuation.separator.list.comma.css",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.function-call.less meta.function-call.less punctuation.separator.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -644,50 +686,8 @@
}
},
{
"c": " ",
"t": "source.css.less meta.property-list.css meta.property-value.css meta.function.variable.css",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "default: #FFFFFF",
"dark_modern": "default: #CCCCCC",
"hc_light": "default: #292929",
"light_modern": "default: #3B3B3B"
}
},
{
"c": "5",
"t": "source.css.less meta.property-list.css meta.property-value.css meta.function.variable.css constant.numeric.css",
"r": {
"dark_plus": "constant.numeric: #B5CEA8",
"light_plus": "constant.numeric: #098658",
"dark_vs": "constant.numeric: #B5CEA8",
"light_vs": "constant.numeric: #098658",
"hc_black": "constant.numeric: #B5CEA8",
"dark_modern": "constant.numeric: #B5CEA8",
"hc_light": "constant.numeric: #096D48",
"light_modern": "constant.numeric: #098658"
}
},
{
"c": "px",
"t": "source.css.less meta.property-list.css meta.property-value.css meta.function.variable.css constant.numeric.css keyword.other.unit.px.css",
"r": {
"dark_plus": "keyword.other.unit: #B5CEA8",
"light_plus": "keyword.other.unit: #098658",
"dark_vs": "keyword.other.unit: #B5CEA8",
"light_vs": "keyword.other.unit: #098658",
"hc_black": "keyword.other.unit: #B5CEA8",
"dark_modern": "keyword.other.unit: #B5CEA8",
"hc_light": "keyword.other.unit: #096D48",
"light_modern": "keyword.other.unit: #098658"
}
},
{
"c": ")",
"t": "source.css.less meta.property-list.css meta.property-value.css meta.function.variable.css punctuation.section.function.end.bracket.round.css",
"c": " 5px",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.function-call.less meta.function-call.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -701,7 +701,21 @@
},
{
"c": ")",
"t": "source.css.less meta.property-list.css meta.property-value.css meta.brace.round.css",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.function-call.less meta.function-call.less punctuation.definition.group.end.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "default: #FFFFFF",
"dark_modern": "default: #CCCCCC",
"hc_light": "default: #292929",
"light_modern": "default: #3B3B3B"
}
},
{
"c": ")",
"t": "source.css.less meta.property-list.less meta.property-value.less meta.function-call.less punctuation.definition.group.end.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -715,7 +729,7 @@
},
{
"c": ";",
"t": "source.css.less meta.property-list.css punctuation.terminator.rule.css",
"t": "source.css.less meta.property-list.less punctuation.terminator.rule.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -729,7 +743,7 @@
},
{
"c": "}",
"t": "source.css.less meta.property-list.css punctuation.section.property-list.end.bracket.curly.css",
"t": "source.css.less punctuation.definition.block.end.less",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -3,28 +3,28 @@
"c": ":",
"t": "source.css.scss entity.other.attribute-name.pseudo-class.css punctuation.definition.entity.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
"c": "root",
"t": "source.css.scss entity.other.attribute-name.pseudo-class.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
@@ -73,14 +73,14 @@
"c": "--spacing-unit",
"t": "source.css.scss meta.property-list.scss variable.scss",
"r": {
"dark_plus": "variable.scss: #9CDCFE",
"light_plus": "variable.scss: #E50000",
"dark_vs": "variable.scss: #9CDCFE",
"light_vs": "variable.scss: #E50000",
"hc_black": "variable.scss: #D4D4D4",
"dark_modern": "variable.scss: #9CDCFE",
"hc_light": "variable.scss: #264F78",
"light_modern": "variable.scss: #E50000"
"dark_plus": "source.css variable: #9CDCFE",
"light_plus": "source.css variable: #E50000",
"dark_vs": "source.css variable: #9CDCFE",
"light_vs": "source.css variable: #E50000",
"hc_black": "source.css variable: #D4D4D4",
"dark_modern": "source.css variable: #9CDCFE",
"hc_light": "source.css variable: #264F78",
"light_modern": "source.css variable: #E50000"
}
},
{
@@ -171,14 +171,14 @@
"c": "--cell-padding",
"t": "source.css.scss meta.property-list.scss variable.scss",
"r": {
"dark_plus": "variable.scss: #9CDCFE",
"light_plus": "variable.scss: #E50000",
"dark_vs": "variable.scss: #9CDCFE",
"light_vs": "variable.scss: #E50000",
"hc_black": "variable.scss: #D4D4D4",
"dark_modern": "variable.scss: #9CDCFE",
"hc_light": "variable.scss: #264F78",
"light_modern": "variable.scss: #E50000"
"dark_plus": "source.css variable: #9CDCFE",
"light_plus": "source.css variable: #E50000",
"dark_vs": "source.css variable: #9CDCFE",
"light_vs": "source.css variable: #E50000",
"hc_black": "source.css variable: #D4D4D4",
"dark_modern": "source.css variable: #9CDCFE",
"hc_light": "source.css variable: #264F78",
"light_modern": "source.css variable: #E50000"
}
},
{
@@ -311,14 +311,14 @@
"c": "--spacing-unit",
"t": "source.css.scss meta.property-list.scss meta.property-value.scss variable.scss",
"r": {
"dark_plus": "variable.scss: #9CDCFE",
"light_plus": "variable.scss: #E50000",
"dark_vs": "variable.scss: #9CDCFE",
"light_vs": "variable.scss: #E50000",
"hc_black": "variable.scss: #D4D4D4",
"dark_modern": "variable.scss: #9CDCFE",
"hc_light": "variable.scss: #264F78",
"light_modern": "variable.scss: #E50000"
"dark_plus": "source.css variable: #9CDCFE",
"light_plus": "source.css variable: #E50000",
"dark_vs": "source.css variable: #9CDCFE",
"light_vs": "source.css variable: #E50000",
"hc_black": "source.css variable: #D4D4D4",
"dark_modern": "source.css variable: #9CDCFE",
"hc_light": "source.css variable: #264F78",
"light_modern": "source.css variable: #E50000"
}
},
{
@@ -591,14 +591,14 @@
"c": "--spacing-unit",
"t": "source.css.scss meta.property-list.scss meta.property-value.scss variable.scss",
"r": {
"dark_plus": "variable.scss: #9CDCFE",
"light_plus": "variable.scss: #E50000",
"dark_vs": "variable.scss: #9CDCFE",
"light_vs": "variable.scss: #E50000",
"hc_black": "variable.scss: #D4D4D4",
"dark_modern": "variable.scss: #9CDCFE",
"hc_light": "variable.scss: #264F78",
"light_modern": "variable.scss: #E50000"
"dark_plus": "source.css variable: #9CDCFE",
"light_plus": "source.css variable: #E50000",
"dark_vs": "source.css variable: #9CDCFE",
"light_vs": "source.css variable: #E50000",
"hc_black": "source.css variable: #D4D4D4",
"dark_modern": "source.css variable: #9CDCFE",
"hc_light": "source.css variable: #264F78",
"light_modern": "source.css variable: #E50000"
}
},
{
@@ -3,28 +3,28 @@
"c": ":",
"t": "source.css meta.selector.css entity.other.attribute-name.pseudo-class.css punctuation.definition.entity.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
"c": "root",
"t": "source.css meta.selector.css entity.other.attribute-name.pseudo-class.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
@@ -73,14 +73,14 @@
"c": "--spacing-unit",
"t": "source.css meta.property-list.css variable.css",
"r": {
"dark_plus": "variable.css: #9CDCFE",
"light_plus": "variable.css: #E50000",
"dark_vs": "variable.css: #9CDCFE",
"light_vs": "variable.css: #E50000",
"hc_black": "variable.css: #D4D4D4",
"dark_modern": "variable.css: #9CDCFE",
"hc_light": "variable.css: #264F78",
"light_modern": "variable.css: #E50000"
"dark_plus": "source.css variable: #9CDCFE",
"light_plus": "source.css variable: #E50000",
"dark_vs": "source.css variable: #9CDCFE",
"light_vs": "source.css variable: #E50000",
"hc_black": "source.css variable: #D4D4D4",
"dark_modern": "source.css variable: #9CDCFE",
"hc_light": "source.css variable: #264F78",
"light_modern": "source.css variable: #E50000"
}
},
{
@@ -171,14 +171,14 @@
"c": "--cell-padding",
"t": "source.css meta.property-list.css variable.css",
"r": {
"dark_plus": "variable.css: #9CDCFE",
"light_plus": "variable.css: #E50000",
"dark_vs": "variable.css: #9CDCFE",
"light_vs": "variable.css: #E50000",
"hc_black": "variable.css: #D4D4D4",
"dark_modern": "variable.css: #9CDCFE",
"hc_light": "variable.css: #264F78",
"light_modern": "variable.css: #E50000"
"dark_plus": "source.css variable: #9CDCFE",
"light_plus": "source.css variable: #E50000",
"dark_vs": "source.css variable: #9CDCFE",
"light_vs": "source.css variable: #E50000",
"hc_black": "source.css variable: #D4D4D4",
"dark_modern": "source.css variable: #9CDCFE",
"hc_light": "source.css variable: #264F78",
"light_modern": "source.css variable: #E50000"
}
},
{
@@ -283,14 +283,14 @@
"c": "--spacing-unit",
"t": "source.css meta.property-list.css meta.property-value.css meta.function.variable.css variable.argument.css",
"r": {
"dark_plus": "variable: #9CDCFE",
"light_plus": "variable: #001080",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "variable: #9CDCFE",
"dark_modern": "variable: #9CDCFE",
"hc_light": "variable: #001080",
"light_modern": "variable: #001080"
"dark_plus": "source.css variable: #9CDCFE",
"light_plus": "source.css variable: #E50000",
"dark_vs": "source.css variable: #9CDCFE",
"light_vs": "source.css variable: #E50000",
"hc_black": "source.css variable: #D4D4D4",
"dark_modern": "source.css variable: #9CDCFE",
"hc_light": "source.css variable: #264F78",
"light_modern": "source.css variable: #E50000"
}
},
{
@@ -563,14 +563,14 @@
"c": "--spacing-unit",
"t": "source.css meta.property-list.css meta.property-value.css meta.function.calc.css meta.function.variable.css variable.argument.css",
"r": {
"dark_plus": "variable: #9CDCFE",
"light_plus": "variable: #001080",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "variable: #9CDCFE",
"dark_modern": "variable: #9CDCFE",
"hc_light": "variable: #001080",
"light_modern": "variable: #001080"
"dark_plus": "source.css variable: #9CDCFE",
"light_plus": "source.css variable: #E50000",
"dark_vs": "source.css variable: #9CDCFE",
"light_vs": "source.css variable: #E50000",
"hc_black": "source.css variable: #D4D4D4",
"dark_modern": "source.css variable: #9CDCFE",
"hc_light": "source.css variable: #264F78",
"light_modern": "source.css variable: #E50000"
}
},
{
@@ -1501,14 +1501,14 @@
"c": "blossoms.jpg",
"t": "source.css meta.property-list.css meta.property-value.css meta.function.url.css variable.parameter.url.css",
"r": {
"dark_plus": "variable: #9CDCFE",
"light_plus": "variable: #001080",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "variable: #9CDCFE",
"dark_modern": "variable: #9CDCFE",
"hc_light": "variable: #001080",
"light_modern": "variable: #001080"
"dark_plus": "source.css variable: #9CDCFE",
"light_plus": "source.css variable: #E50000",
"dark_vs": "source.css variable: #9CDCFE",
"light_vs": "source.css variable: #E50000",
"hc_black": "source.css variable: #D4D4D4",
"dark_modern": "source.css variable: #9CDCFE",
"hc_light": "source.css variable: #264F78",
"light_modern": "source.css variable: #E50000"
}
},
{
@@ -3601,28 +3601,28 @@
"c": ":",
"t": "source.css meta.selector.css entity.other.attribute-name.pseudo-class.css punctuation.definition.entity.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
"c": "link",
"t": "source.css meta.selector.css entity.other.attribute-name.pseudo-class.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
@@ -3951,28 +3951,28 @@
"c": ":",
"t": "source.css meta.selector.css entity.other.attribute-name.pseudo-class.css punctuation.definition.entity.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
"c": "visited",
"t": "source.css meta.selector.css entity.other.attribute-name.pseudo-class.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
@@ -4385,28 +4385,28 @@
"c": ":",
"t": "source.css meta.selector.css entity.other.attribute-name.pseudo-class.css punctuation.definition.entity.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
"c": "hover",
"t": "source.css meta.selector.css entity.other.attribute-name.pseudo-class.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
@@ -4441,28 +4441,28 @@
"c": ":",
"t": "source.css meta.selector.css entity.other.attribute-name.pseudo-class.css punctuation.definition.entity.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
"c": "focus",
"t": "source.css meta.selector.css entity.other.attribute-name.pseudo-class.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
@@ -4497,28 +4497,28 @@
"c": ":",
"t": "source.css meta.selector.css entity.other.attribute-name.pseudo-class.css punctuation.definition.entity.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
"c": "active",
"t": "source.css meta.selector.css entity.other.attribute-name.pseudo-class.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
@@ -5071,14 +5071,14 @@
"c": "zen-bg.jpg",
"t": "source.css meta.property-list.css meta.property-value.css meta.function.url.css variable.parameter.url.css",
"r": {
"dark_plus": "variable: #9CDCFE",
"light_plus": "variable: #001080",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "variable: #9CDCFE",
"dark_modern": "variable: #9CDCFE",
"hc_light": "variable: #001080",
"light_modern": "variable: #001080"
"dark_plus": "source.css variable: #9CDCFE",
"light_plus": "source.css variable: #E50000",
"dark_vs": "source.css variable: #9CDCFE",
"light_vs": "source.css variable: #E50000",
"hc_black": "source.css variable: #D4D4D4",
"dark_modern": "source.css variable: #9CDCFE",
"hc_light": "source.css variable: #264F78",
"light_modern": "source.css variable: #E50000"
}
},
{
@@ -6023,14 +6023,14 @@
"c": "h1.gif",
"t": "source.css meta.property-list.css meta.property-value.css meta.function.url.css variable.parameter.url.css",
"r": {
"dark_plus": "variable: #9CDCFE",
"light_plus": "variable: #001080",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "variable: #9CDCFE",
"dark_modern": "variable: #9CDCFE",
"hc_light": "variable: #001080",
"light_modern": "variable: #001080"
"dark_plus": "source.css variable: #9CDCFE",
"light_plus": "source.css variable: #E50000",
"dark_vs": "source.css variable: #9CDCFE",
"light_vs": "source.css variable: #E50000",
"hc_black": "source.css variable: #D4D4D4",
"dark_modern": "source.css variable: #9CDCFE",
"hc_light": "source.css variable: #264F78",
"light_modern": "source.css variable: #E50000"
}
},
{
@@ -8879,28 +8879,28 @@
"c": ":",
"t": "source.css meta.selector.css entity.other.attribute-name.pseudo-class.css punctuation.definition.entity.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
"c": "link",
"t": "source.css meta.selector.css entity.other.attribute-name.pseudo-class.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
@@ -8963,28 +8963,28 @@
"c": ":",
"t": "source.css meta.selector.css entity.other.attribute-name.pseudo-class.css punctuation.definition.entity.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
"c": "visited",
"t": "source.css meta.selector.css entity.other.attribute-name.pseudo-class.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
@@ -9929,14 +9929,14 @@
"c": "paper-bg.jpg",
"t": "source.css meta.property-list.css meta.property-value.css meta.function.url.css variable.parameter.url.css",
"r": {
"dark_plus": "variable: #9CDCFE",
"light_plus": "variable: #001080",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "variable: #9CDCFE",
"dark_modern": "variable: #9CDCFE",
"hc_light": "variable: #001080",
"light_modern": "variable: #001080"
"dark_plus": "source.css variable: #9CDCFE",
"light_plus": "source.css variable: #E50000",
"dark_vs": "source.css variable: #9CDCFE",
"light_vs": "source.css variable: #E50000",
"hc_black": "source.css variable: #D4D4D4",
"dark_modern": "source.css variable: #9CDCFE",
"hc_light": "source.css variable: #264F78",
"light_modern": "source.css variable: #E50000"
}
},
{
@@ -10447,28 +10447,28 @@
"c": ":",
"t": "source.css meta.selector.css entity.other.attribute-name.pseudo-class.css punctuation.definition.entity.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
"c": "link",
"t": "source.css meta.selector.css entity.other.attribute-name.pseudo-class.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
@@ -10699,28 +10699,28 @@
"c": ":",
"t": "source.css meta.selector.css entity.other.attribute-name.pseudo-class.css punctuation.definition.entity.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
"c": "visited",
"t": "source.css meta.selector.css entity.other.attribute-name.pseudo-class.css",
"r": {
"dark_plus": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_plus": "entity.other.attribute-name.pseudo-class.css: #800000",
"dark_vs": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"light_vs": "entity.other.attribute-name.pseudo-class.css: #800000",
"hc_black": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"dark_modern": "entity.other.attribute-name.pseudo-class.css: #D7BA7D",
"hc_light": "entity.other.attribute-name.pseudo-class.css: #0F4A85",
"light_modern": "entity.other.attribute-name.pseudo-class.css: #800000"
"dark_plus": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_plus": "source.css entity.other.attribute-name.pseudo-class: #800000",
"dark_vs": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"light_vs": "source.css entity.other.attribute-name.pseudo-class: #800000",
"hc_black": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"dark_modern": "source.css entity.other.attribute-name.pseudo-class: #D7BA7D",
"hc_light": "source.css entity.other.attribute-name.pseudo-class: #0F4A85",
"light_modern": "source.css entity.other.attribute-name.pseudo-class: #800000"
}
},
{
@@ -11049,14 +11049,14 @@
"c": "cr2.gif",
"t": "source.css meta.property-list.css meta.property-value.css meta.function.url.css variable.parameter.url.css",
"r": {
"dark_plus": "variable: #9CDCFE",
"light_plus": "variable: #001080",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
"hc_black": "variable: #9CDCFE",
"dark_modern": "variable: #9CDCFE",
"hc_light": "variable: #001080",
"light_modern": "variable: #001080"
"dark_plus": "source.css variable: #9CDCFE",
"light_plus": "source.css variable: #E50000",
"dark_vs": "source.css variable: #9CDCFE",
"light_vs": "source.css variable: #E50000",
"hc_black": "source.css variable: #D4D4D4",
"dark_modern": "source.css variable: #9CDCFE",
"hc_light": "source.css variable: #264F78",
"light_modern": "source.css variable: #E50000"
}
},
{
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "code-oss-dev",
"version": "1.85.0",
"distro": "69e0a36f6df8a1e9fca2a92920a6a4c1ba9e57e4",
"distro": "166cef1a46189f0a5c1952c9e11bf0c387bae990",
"author": {
"name": "Microsoft Corporation"
},
@@ -150,7 +150,7 @@
"cssnano": "^4.1.11",
"debounce": "^1.0.0",
"deemon": "^1.8.0",
"electron": "25.9.6",
"electron": "25.9.7",
"eslint": "8.36.0",
"eslint-plugin-header": "3.1.1",
"eslint-plugin-jsdoc": "^46.5.0",
+6 -1
View File
@@ -56,6 +56,9 @@ function pipeLoggingToParent() {
* @param {ArrayLike<unknown>} args
*/
function safeToArray(args) {
/**
* @type {string[]}
*/
const seen = [];
const argsArray = [];
@@ -178,7 +181,7 @@ function pipeLoggingToParent() {
Object.defineProperty(stream, 'write', {
set: () => { },
get: () => (chunk, encoding, callback) => {
get: () => (/** @type {string | Buffer | Uint8Array} */ chunk, /** @type {BufferEncoding | undefined} */ encoding, /** @type {((err?: Error | undefined) => void) | undefined} */ callback) => {
buf += chunk.toString(encoding);
const eol = buf.length > MAX_STREAM_BUFFER_LENGTH ? buf.length : buf.lastIndexOf('\n');
if (eol !== -1) {
@@ -239,7 +242,9 @@ function configureCrashReporter() {
const crashReporterProcessType = process.env['VSCODE_CRASH_REPORTER_PROCESS_TYPE'];
if (crashReporterProcessType) {
try {
// @ts-ignore
if (process['crashReporter'] && typeof process['crashReporter'].addExtraParameter === 'function' /* Electron only */) {
// @ts-ignore
process['crashReporter'].addExtraParameter('processType', crashReporterProcessType);
}
} catch (error) {
+9
View File
@@ -20,6 +20,7 @@
// Browser
else {
// @ts-ignore
globalThis.MonacoBootstrapWindow = factory();
}
}(this, function () {
@@ -71,12 +72,16 @@
};
const isDev = !!safeProcess.env['VSCODE_DEV'];
const enableDeveloperKeybindings = isDev || forceEnableDeveloperKeybindings;
/**
* @type {() => void | undefined}
*/
let developerDeveloperKeybindingsDisposable;
if (enableDeveloperKeybindings) {
developerDeveloperKeybindingsDisposable = registerDeveloperKeybindings(disallowReloadKeybinding);
}
// Get the nls configuration into the process.env as early as possible
// @ts-ignore
const nlsConfig = globalThis.MonacoBootstrap.setupNLS();
let locale = nlsConfig.availableLanguages['*'] || 'en';
@@ -90,6 +95,10 @@
window['MonacoEnvironment'] = {};
/**
* @typedef {any} LoaderConfig
*/
/** @type {LoaderConfig} */
const loaderConfig = {
baseUrl: `${bootstrapLib.fileUriFromPath(configuration.appRoot, { isWindows: safeProcess.platform === 'win32', scheme: 'vscode-file', fallbackAuthority: 'vscode-app' })}/out`,
'vs/nls': nlsConfig,
+1
View File
@@ -19,6 +19,7 @@ const bootstrapNode = require('./bootstrap-node');
const product = require('../product.json');
// Enable portable support
// @ts-ignore
bootstrapNode.configurePortable(product);
// Enable ASAR support
+3
View File
@@ -24,6 +24,7 @@ const { getUserDataPath } = require('./vs/platform/environment/node/userDataPath
const { stripComments } = require('./vs/base/common/stripComments');
const { getUNCHost, addUNCHostToAllowlist } = require('./vs/base/node/unc');
/** @type {Partial<IProductConfiguration>} */
// @ts-ignore
const product = require('../product.json');
const { app, protocol, crashReporter, Menu } = require('electron');
@@ -513,6 +514,7 @@ function registerListeners() {
* @type {string[]}
*/
const macOpenFiles = [];
// @ts-ignore
global['macOpenFiles'] = macOpenFiles;
app.on('open-file', function (event, path) {
macOpenFiles.push(path);
@@ -539,6 +541,7 @@ function registerListeners() {
app.on('open-url', onOpenUrl);
});
// @ts-ignore
global['getOpenUrls'] = function () {
app.removeListener('open-url', onOpenUrl);
+6
View File
@@ -25,7 +25,13 @@
"include": [
"./bootstrap.js",
"./bootstrap-amd.js",
"./bootstrap-fork.js",
"./bootstrap-node.js",
"./bootstrap-window.js",
"./cli.js",
"./main.js",
"./server-main.js",
"./server-cli.js",
"./typings",
"./vs/**/*.ts",
"vscode-dts/vscode.proposed.*.d.ts",
+1
View File
@@ -14,6 +14,7 @@
"vs/workbench/services/keybinding/test/node/keyboardMapperTestUtils.ts"
],
"ban-trustedtypes-createpolicy": [
"bootstrap-window.js",
"vs/amdX.ts",
"vs/base/browser/trustedTypes.ts",
"vs/base/worker/workerMain.ts",
+1 -1
View File
@@ -43,5 +43,5 @@ export const BrowserFeatures = {
// 'ontouchstart' in window always evaluates to true with typescript's modern typings. This causes `window` to be
// `never` later in `window.navigator`. That's why we need the explicit `window as Window` cast
touch: 'ontouchstart' in mainWindow || navigator.maxTouchPoints > 0,
pointerEvents: mainWindow.PointerEvent && ('ontouchstart' in mainWindow || navigator.maxTouchPoints > 0 || navigator.maxTouchPoints > 0)
pointerEvents: mainWindow.PointerEvent && ('ontouchstart' in mainWindow || navigator.maxTouchPoints > 0)
};
+13 -5
View File
@@ -7,6 +7,7 @@ import { createTrustedTypesPolicy } from 'vs/base/browser/trustedTypes';
import { onUnexpectedError } from 'vs/base/common/errors';
import { COI } from 'vs/base/common/network';
import { IWorker, IWorkerCallback, IWorkerFactory, logOnceWebWorkerWarning } from 'vs/base/common/worker/simpleWorker';
import { Disposable, toDisposable } from 'vs/base/common/lifecycle';
const ttPolicy = createTrustedTypesPolicy('defaultWorkerFactory', { createScriptURL: value => value });
@@ -84,13 +85,14 @@ function isPromiseLike<T>(obj: any): obj is PromiseLike<T> {
* A worker that uses HTML5 web workers so that is has
* its own global scope and its own thread.
*/
class WebWorker implements IWorker {
class WebWorker extends Disposable implements IWorker {
private readonly id: number;
private readonly label: string;
private worker: Promise<Worker> | null;
constructor(moduleId: string, id: number, label: string, onMessageCallback: IWorkerCallback, onErrorCallback: (err: any) => void) {
super();
this.id = id;
this.label = label;
const workerOrPromise = getWorker(label);
@@ -109,6 +111,15 @@ class WebWorker implements IWorker {
w.addEventListener('error', onErrorCallback);
}
});
this._register(toDisposable(() => {
this.worker?.then(w => {
w.onmessage = null;
w.onmessageerror = null;
w.removeEventListener('error', onErrorCallback);
w.terminate();
});
this.worker = null;
}));
}
public getId(): number {
@@ -126,10 +137,7 @@ class WebWorker implements IWorker {
});
}
public dispose(): void {
this.worker?.then(w => w.terminate());
this.worker = null;
}
}
export class DefaultWorkerFactory implements IWorkerFactory {
+40 -20
View File
@@ -444,9 +444,9 @@ export function getComputedStyle(el: HTMLElement): CSSStyleDeclaration {
return getWindow(el).getComputedStyle(el, null);
}
export function getClientArea(element: HTMLElement): Dimension {
const elDocument = element.ownerDocument;
const elWindow = elDocument.defaultView?.window;
export function getClientArea(element: HTMLElement, fallback?: HTMLElement): Dimension {
const elWindow = getWindow(element);
const elDocument = elWindow.document;
// Try with DOM clientWidth / clientHeight
if (element !== elDocument.body) {
@@ -473,6 +473,10 @@ export function getClientArea(element: HTMLElement): Dimension {
return new Dimension(elDocument.documentElement.clientWidth, elDocument.documentElement.clientHeight);
}
if (fallback) {
return getClientArea(fallback);
}
throw new Error('Unable to figure out browser width and height');
}
@@ -836,8 +840,9 @@ export function getShadowRoot(domNode: Node): ShadowRoot | null {
}
/**
* Returns the active element across all child windows.
* Use this instead of `document.activeElement` to handle multiple windows.
* Returns the active element across all child windows
* based on document focus. Falls back to the main
* window if no window has focus.
*/
export function getActiveElement(): Element | null {
let result = getActiveDocument().activeElement;
@@ -850,42 +855,49 @@ export function getActiveElement(): Element | null {
}
/**
* Returns whether the active element of the `document` that owns
* the `element` is `element`.
* Returns true if the focused window active element matches
* the provided element. Falls back to the main window if no
* window has focus.
*/
export function isActiveElement(element: Element): boolean {
return element.ownerDocument.activeElement === element;
return getActiveElement() === element;
}
/**
* Returns whether the active element of the `document` that owns
* the `ancestor` is contained in `ancestor`.
* Returns true if the focused window active element is contained in
* `ancestor`. Falls back to the main window if no window has focus.
*/
export function isAncestorOfActiveElement(ancestor: Element): boolean {
return isAncestor(ancestor.ownerDocument.activeElement, ancestor);
return isAncestor(getActiveElement(), ancestor);
}
/**
* Returns whether the element is in the active `document`.
* Returns whether the element is in the active `document`. The active
* document has focus or will be the main windows document.
*/
export function isActiveDocument(element: Element): boolean {
return element.ownerDocument === getActiveDocument();
}
/**
* Returns the active document across all child windows.
* Use this instead of `document` when reacting to dom
* events to handle multiple windows.
* Returns the active document across main and child windows.
* Prefers the window with focus, otherwise falls back to
* the main windows document.
*/
export function getActiveDocument(): Document {
if (getWindowsCount() <= 1) {
return document;
return mainWindow.document;
}
const documents = Array.from(getWindows()).map(({ window }) => window.document);
return documents.find(doc => doc.hasFocus()) ?? document;
return documents.find(doc => doc.hasFocus()) ?? mainWindow.document;
}
/**
* Returns the active window across main and child windows.
* Prefers the window with focus, otherwise falls back to
* the main window.
*/
export function getActiveWindow(): CodeWindow {
const document = getActiveDocument();
return (document.defaultView?.window ?? mainWindow) as CodeWindow;
@@ -1019,9 +1031,17 @@ export const sharedMutationObserver = new class {
};
export function createMetaElement(container: HTMLElement = mainWindow.document.head): HTMLMetaElement {
const meta = document.createElement('meta');
container.appendChild(meta);
return meta;
return createHeadElement('meta', container) as HTMLMetaElement;
}
export function createLinkElement(container: HTMLElement = mainWindow.document.head): HTMLLinkElement {
return createHeadElement('link', container) as HTMLLinkElement;
}
function createHeadElement(tagName: string, container: HTMLElement = mainWindow.document.head): HTMLElement {
const element = document.createElement(tagName);
container.appendChild(element);
return element;
}
let _sharedStyleSheet: HTMLStyleElement | null = null;
@@ -201,7 +201,7 @@ export class ActionBar extends Disposable implements IActionRunner {
}
// Recompute focused item
else if (event.equals(KeyCode.Tab) || event.equals(KeyMod.Shift | KeyCode.Tab)) {
else if (event.equals(KeyCode.Tab) || event.equals(KeyMod.Shift | KeyCode.Tab) || event.equals(KeyCode.UpArrow) || event.equals(KeyCode.DownArrow) || event.equals(KeyCode.LeftArrow) || event.equals(KeyCode.RightArrow)) {
this.updateFocusedItem();
}
}));
@@ -51,7 +51,7 @@
opacity: 0.5;
}
.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-suffix-container>.label-suffix {
.monaco-icon-label > .monaco-icon-label-container > .monaco-icon-suffix-container > .label-suffix {
opacity: .7;
white-space: pre;
}
+20 -19
View File
@@ -11,7 +11,7 @@ import { ComposedTreeDelegate, TreeFindMode as TreeFindMode, IAbstractTreeOption
import { ICompressedTreeElement, ICompressedTreeNode } from 'vs/base/browser/ui/tree/compressedObjectTreeModel';
import { getVisibleState, isFilterResult } from 'vs/base/browser/ui/tree/indexTreeModel';
import { CompressibleObjectTree, ICompressibleKeyboardNavigationLabelProvider, ICompressibleObjectTreeOptions, ICompressibleTreeRenderer, IObjectTreeOptions, IObjectTreeSetChildrenOptions, ObjectTree } from 'vs/base/browser/ui/tree/objectTree';
import { IAsyncDataSource, ICollapseStateChangeEvent, IObjectTreeElement, ITreeContextMenuEvent, ITreeDragAndDrop, ITreeEvent, ITreeFilter, ITreeMouseEvent, ITreeNode, ITreeRenderer, ITreeSorter, TreeError, TreeFilterResult, TreeVisibility, WeakMapper } from 'vs/base/browser/ui/tree/tree';
import { IAsyncDataSource, ICollapseStateChangeEvent, IObjectTreeElement, ITreeContextMenuEvent, ITreeDragAndDrop, ITreeEvent, ITreeFilter, ITreeMouseEvent, ITreeNode, ITreeRenderer, ITreeSorter, ObjectTreeElementCollapseState, TreeError, TreeFilterResult, TreeVisibility, WeakMapper } from 'vs/base/browser/ui/tree/tree';
import { CancelablePromise, createCancelablePromise, Promises, timeout } from 'vs/base/common/async';
import { Codicon } from 'vs/base/common/codicons';
import { ThemeIcon } from 'vs/base/common/themables';
@@ -31,13 +31,15 @@ interface IAsyncDataTreeNode<TInput, T> {
hasChildren: boolean;
stale: boolean;
slow: boolean;
collapsedByDefault: boolean | undefined;
readonly defaultCollapseState: undefined | ObjectTreeElementCollapseState.PreserveOrCollapsed | ObjectTreeElementCollapseState.PreserveOrExpanded;
forceExpanded: boolean;
}
interface IAsyncDataTreeNodeRequiredProps<TInput, T> extends Partial<IAsyncDataTreeNode<TInput, T>> {
readonly element: TInput | T;
readonly parent: IAsyncDataTreeNode<TInput, T> | null;
readonly hasChildren: boolean;
readonly defaultCollapseState: undefined | ObjectTreeElementCollapseState.PreserveOrCollapsed | ObjectTreeElementCollapseState.PreserveOrExpanded;
}
function createAsyncDataTreeNode<TInput, T>(props: IAsyncDataTreeNodeRequiredProps<TInput, T>): IAsyncDataTreeNode<TInput, T> {
@@ -47,7 +49,7 @@ function createAsyncDataTreeNode<TInput, T>(props: IAsyncDataTreeNodeRequiredPro
refreshPromise: undefined,
stale: true,
slow: false,
collapsedByDefault: undefined
forceExpanded: false
};
}
@@ -321,7 +323,7 @@ export class AsyncDataTree<TInput, T, TFilterData = void> implements IDisposable
protected readonly root: IAsyncDataTreeNode<TInput, T>;
private readonly nodes = new Map<null | T, IAsyncDataTreeNode<TInput, T>>();
private readonly sorter?: ITreeSorter<T>;
private readonly collapseByDefault?: { (e: T): boolean };
private readonly getDefaultCollapseState: { (e: T): undefined | ObjectTreeElementCollapseState.PreserveOrCollapsed | ObjectTreeElementCollapseState.PreserveOrExpanded };
private readonly subTreeRefreshPromises = new Map<IAsyncDataTreeNode<TInput, T>, Promise<void>>();
private readonly refreshPromises = new Map<IAsyncDataTreeNode<TInput, T>, CancelablePromise<Iterable<T>>>();
@@ -387,7 +389,7 @@ export class AsyncDataTree<TInput, T, TFilterData = void> implements IDisposable
this.identityProvider = options.identityProvider;
this.autoExpandSingleChildren = typeof options.autoExpandSingleChildren === 'undefined' ? false : options.autoExpandSingleChildren;
this.sorter = options.sorter;
this.collapseByDefault = options.collapseByDefault;
this.getDefaultCollapseState = e => options.collapseByDefault ? (options.collapseByDefault(e) ? ObjectTreeElementCollapseState.PreserveOrCollapsed : ObjectTreeElementCollapseState.PreserveOrExpanded) : undefined;
this.tree = this.createTree(user, container, delegate, renderers, options);
this.onDidChangeFindMode = this.tree.onDidChangeFindMode;
@@ -395,7 +397,8 @@ export class AsyncDataTree<TInput, T, TFilterData = void> implements IDisposable
this.root = createAsyncDataTreeNode({
element: undefined!,
parent: null,
hasChildren: true
hasChildren: true,
defaultCollapseState: undefined
});
if (this.identityProvider) {
@@ -935,10 +938,9 @@ export class AsyncDataTree<TInput, T, TFilterData = void> implements IDisposable
const hasChildren = !!this.dataSource.hasChildren(element);
if (!this.identityProvider) {
const asyncDataTreeNode = createAsyncDataTreeNode({ element, parent: node, hasChildren });
const asyncDataTreeNode = createAsyncDataTreeNode({ element, parent: node, hasChildren, defaultCollapseState: this.getDefaultCollapseState(element) });
if (hasChildren && this.collapseByDefault && !this.collapseByDefault(element)) {
asyncDataTreeNode.collapsedByDefault = false;
if (hasChildren && asyncDataTreeNode.defaultCollapseState === ObjectTreeElementCollapseState.PreserveOrExpanded) {
childrenToRefresh.push(asyncDataTreeNode);
}
@@ -966,15 +968,14 @@ export class AsyncDataTree<TInput, T, TFilterData = void> implements IDisposable
} else {
childrenToRefresh.push(asyncDataTreeNode);
}
} else if (hasChildren && this.collapseByDefault && !this.collapseByDefault(element)) {
asyncDataTreeNode.collapsedByDefault = false;
} else if (hasChildren && !result.collapsed) {
childrenToRefresh.push(asyncDataTreeNode);
}
return asyncDataTreeNode;
}
const childAsyncDataTreeNode = createAsyncDataTreeNode({ element, parent: node, id, hasChildren });
const childAsyncDataTreeNode = createAsyncDataTreeNode({ element, parent: node, id, hasChildren, defaultCollapseState: this.getDefaultCollapseState(element) });
if (viewStateContext && viewStateContext.viewState.focus && viewStateContext.viewState.focus.indexOf(id) > -1) {
viewStateContext.focus.push(childAsyncDataTreeNode);
@@ -986,8 +987,7 @@ export class AsyncDataTree<TInput, T, TFilterData = void> implements IDisposable
if (viewStateContext && viewStateContext.viewState.expanded && viewStateContext.viewState.expanded.indexOf(id) > -1) {
childrenToRefresh.push(childAsyncDataTreeNode);
} else if (hasChildren && this.collapseByDefault && !this.collapseByDefault(element)) {
childAsyncDataTreeNode.collapsedByDefault = false;
} else if (hasChildren && childAsyncDataTreeNode.defaultCollapseState === ObjectTreeElementCollapseState.PreserveOrExpanded) {
childrenToRefresh.push(childAsyncDataTreeNode);
}
@@ -1006,7 +1006,7 @@ export class AsyncDataTree<TInput, T, TFilterData = void> implements IDisposable
// TODO@joao this doesn't take filter into account
if (node !== this.root && this.autoExpandSingleChildren && children.length === 1 && childrenToRefresh.length === 0) {
children[0].collapsedByDefault = false;
children[0].forceExpanded = true;
childrenToRefresh.push(children[0]);
}
@@ -1042,16 +1042,17 @@ export class AsyncDataTree<TInput, T, TFilterData = void> implements IDisposable
};
}
let collapsed: boolean | undefined;
let collapsed: boolean | ObjectTreeElementCollapseState.PreserveOrCollapsed | ObjectTreeElementCollapseState.PreserveOrExpanded | undefined;
if (viewStateContext && viewStateContext.viewState.expanded && node.id && viewStateContext.viewState.expanded.indexOf(node.id) > -1) {
collapsed = false;
} else if (node.forceExpanded) {
collapsed = false;
node.forceExpanded = false;
} else {
collapsed = node.collapsedByDefault;
collapsed = node.defaultCollapseState;
}
node.collapsedByDefault = undefined;
return {
element: node,
children: node.hasChildren ? Iterable.map(node.children, child => this.asTreeElement(child, viewStateContext)) : [],
-1
View File
@@ -426,7 +426,6 @@ export class ThrottledDelayer<T> {
* A barrier that is initially closed and then becomes opened permanently.
*/
export class Barrier {
private _isOpen: boolean;
private _promise: Promise<boolean>;
private _completePromise!: (v: boolean) => void;
+19 -5
View File
@@ -71,11 +71,7 @@ export class MarkdownString implements IMarkdownString {
}
appendCodeblock(langId: string, code: string): MarkdownString {
this.value += '\n```';
this.value += langId;
this.value += '\n';
this.value += code;
this.value += '\n```\n';
this.value += `\n${appendEscapedMarkdownCodeBlockFence(code, langId)}\n`;
return this;
}
@@ -143,6 +139,24 @@ export function escapeMarkdownSyntaxTokens(text: string): string {
return text.replace(/[\\`*_{}[\]()#+\-!~]/g, '\\$&'); // CodeQL [SM02383] Backslash is escaped in the character class
}
/**
* @see https://github.com/microsoft/vscode/issues/193746
*/
export function appendEscapedMarkdownCodeBlockFence(code: string, langId: string) {
const longestFenceLength =
code.match(/^`+/gm)?.reduce((a, b) => (a.length > b.length ? a : b)).length ??
0;
const desiredFenceLength =
longestFenceLength >= 3 ? longestFenceLength + 1 : 3;
// the markdown result
return [
`${'`'.repeat(desiredFenceLength)}${langId}`,
code,
`${'`'.repeat(desiredFenceLength)}`,
].join('\n');
}
export function escapeDoubleQuotes(input: string) {
return input.replace(/"/g, '&quot;');
}
+3
View File
@@ -226,8 +226,11 @@ export type IFileContentCondition = (IFileLanguageCondition | IFilePathCondition
export interface IAppCenterConfiguration {
readonly 'win32-x64': string;
readonly 'win32-arm64': string;
readonly 'linux-x64': string;
readonly 'darwin': string;
readonly 'darwin-universal': string;
readonly 'darwin-arm64': string;
}
export interface IConfigBasedExtensionTip {
@@ -571,6 +571,8 @@ flakySuite('IPC, create handle', () => {
suite('WebSocketNodeSocket', () => {
const ds = ensureNoDisposablesAreLeakedInTestSuite();
function toUint8Array(data: number[]): Uint8Array {
const result = new Uint8Array(data.length);
for (let i = 0; i < data.length; i++) {
@@ -724,15 +726,15 @@ suite('WebSocketNodeSocket', () => {
server.close();
const webSocketNodeSocket = new WebSocketNodeSocket(new NodeSocket(socket), true, null, false);
webSocketNodeSocket.onData((data) => {
ds.add(webSocketNodeSocket.onData((data) => {
receivingSideOnDataCallCount++;
receivingSideTotalBytes += data.byteLength;
});
}));
webSocketNodeSocket.onClose(() => {
ds.add(webSocketNodeSocket.onClose(() => {
webSocketNodeSocket.dispose();
receivingSideSocketClosedBarrier.open();
});
}));
});
const socket = connect({
@@ -361,6 +361,8 @@ suite('RangeMap', () => {
suite('RangeMap with top padding', () => {
ensureNoDisposablesAreLeakedInTestSuite();
test('empty', () => {
const rangeMap = new RangeMap(10);
assert.strictEqual(rangeMap.size, 10);
@@ -5,8 +5,10 @@
import * as assert from 'assert';
import { IIdentityProvider, IListVirtualDelegate } from 'vs/base/browser/ui/list/list';
import { AsyncDataTree } from 'vs/base/browser/ui/tree/asyncDataTree';
import { IAsyncDataSource, ITreeNode, ITreeRenderer } from 'vs/base/browser/ui/tree/tree';
import { AsyncDataTree, CompressibleAsyncDataTree, ITreeCompressionDelegate } from 'vs/base/browser/ui/tree/asyncDataTree';
import { ICompressedTreeNode } from 'vs/base/browser/ui/tree/compressedObjectTreeModel';
import { ICompressibleTreeRenderer } from 'vs/base/browser/ui/tree/objectTree';
import { IAsyncDataSource, ITreeNode } from 'vs/base/browser/ui/tree/tree';
import { timeout } from 'vs/base/common/async';
import { Iterable } from 'vs/base/common/iterator';
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
@@ -37,7 +39,7 @@ function find(element: Element, id: string): Element | undefined {
return undefined;
}
class Renderer implements ITreeRenderer<Element, void, HTMLElement> {
class Renderer implements ICompressibleTreeRenderer<Element, void, HTMLElement> {
readonly templateId = 'default';
renderTemplate(container: HTMLElement): HTMLElement {
return container;
@@ -48,6 +50,15 @@ class Renderer implements ITreeRenderer<Element, void, HTMLElement> {
disposeTemplate(templateData: HTMLElement): void {
// noop
}
renderCompressedElements(node: ITreeNode<ICompressedTreeNode<Element>, void>, index: number, templateData: HTMLElement, height: number | undefined): void {
const result: string[] = [];
for (const element of node.element.elements) {
result.push(element.id + (element.suffix || ''));
}
templateData.textContent = result.join('/');
}
}
class IdentityProvider implements IIdentityProvider<Element> {
@@ -520,4 +531,49 @@ suite('AsyncDataTree', function () {
assert(tree.isCollapsible(a), 'a is still collapsible');
assert(!tree.isCollapsed(a), 'a is expanded');
});
test('issue #199441', async () => {
const container = document.createElement('div');
const dataSource = new class implements IAsyncDataSource<Element, Element> {
hasChildren(element: Element): boolean {
return !!element.children && element.children.length > 0;
}
async getChildren(element: Element) {
return element.children ?? Iterable.empty();
}
};
const compressionDelegate = new class implements ITreeCompressionDelegate<Element> {
isIncompressible(element: Element): boolean {
return !dataSource.hasChildren(element);
}
};
const model = new Model({
id: 'root',
children: [{
id: 'a', children: [{
id: 'b',
children: [{ id: 'b.txt' }]
}]
}]
});
const collapseByDefault = (element: Element) => false;
const tree = store.add(new CompressibleAsyncDataTree<Element, Element>('test', container, new VirtualDelegate(), compressionDelegate, [new Renderer()], dataSource, { identityProvider: new IdentityProvider(), collapseByDefault }));
tree.layout(200);
await tree.setInput(model.root);
assert.deepStrictEqual(Array.from(container.querySelectorAll('.monaco-list-row')).map(e => e.textContent), ['a/b', 'b.txt']);
model.get('a').children!.push({
id: 'c',
children: [{ id: 'c.txt' }]
});
await tree.updateChildren(model.root, true);
assert.deepStrictEqual(Array.from(container.querySelectorAll('.monaco-list-row')).map(e => e.textContent), ['a', 'b', 'b.txt', 'c', 'c.txt']);
});
});
@@ -250,12 +250,14 @@ suite('CompressibleObjectTree', function () {
disposeTemplate(): void { }
}
const ds = ensureNoDisposablesAreLeakedInTestSuite();
test('empty', function () {
const container = document.createElement('div');
container.style.width = '200px';
container.style.height = '200px';
const tree = new CompressibleObjectTree<number>('test', container, new Delegate(), [new Renderer()]);
const tree = ds.add(new CompressibleObjectTree<number>('test', container, new Delegate(), [new Renderer()]));
tree.layout(200);
assert.strictEqual(getRowsTextContent(container).length, 0);
@@ -266,7 +268,7 @@ suite('CompressibleObjectTree', function () {
container.style.width = '200px';
container.style.height = '200px';
const tree = new CompressibleObjectTree<number>('test', container, new Delegate(), [new Renderer()]);
const tree = ds.add(new CompressibleObjectTree<number>('test', container, new Delegate(), [new Renderer()]));
tree.layout(200);
tree.setChildren(null, [
@@ -289,7 +291,7 @@ suite('CompressibleObjectTree', function () {
container.style.width = '200px';
container.style.height = '200px';
const tree = new CompressibleObjectTree<number>('test', container, new Delegate(), [new Renderer()]);
const tree = ds.add(new CompressibleObjectTree<number>('test', container, new Delegate(), [new Renderer()]));
tree.layout(200);
tree.setChildren(null, [
@@ -341,7 +343,7 @@ suite('CompressibleObjectTree', function () {
container.style.width = '200px';
container.style.height = '200px';
const tree = new CompressibleObjectTree<number>('test', container, new Delegate(), [new Renderer()]);
const tree = ds.add(new CompressibleObjectTree<number>('test', container, new Delegate(), [new Renderer()]));
tree.layout(200);
tree.setChildren(null, [
File diff suppressed because it is too large Load Diff
+5
View File
@@ -498,6 +498,11 @@ suite('Filters', () => {
assertTopScore(fuzzyScore, '_lineS', 0, '_lineS', '_lines');
});
test.skip('Bad completion ranking changes valid variable name to class name when pressing "." #187055', function () {
assertTopScore(fuzzyScore, 'a', 1, 'A', 'a');
assertTopScore(fuzzyScore, 'theme', 1, 'Theme', 'theme');
});
test('HTML closing tag proposal filtered out #38880', function () {
assertMatches('\t\t<', '\t\t</body>', '^\t^\t^</body>', fuzzyScore, { patternPos: 0 });
assertMatches('\t\t<', '\t\t</body>', '\t\t^</body>', fuzzyScore, { patternPos: 2 });
+2
View File
@@ -184,6 +184,8 @@ suite('History Navigator', () => {
suite('History Navigator 2', () => {
ensureNoDisposablesAreLeakedInTestSuite();
test('constructor', () => {
const testObject = new HistoryNavigator2(['1', '2', '3', '4']);
+6 -1
View File
@@ -13,8 +13,9 @@ class Disposable implements IDisposable {
dispose() { this.isDisposed = true; }
}
// Leaks are allowed here since we test lifecycle stuff:
// eslint-disable-next-line local/code-ensure-no-disposables-leak-in-test
suite('Lifecycle', () => {
test('dispose single disposable', () => {
const disposable = new Disposable();
@@ -129,6 +130,8 @@ suite('Lifecycle', () => {
});
suite('DisposableStore', () => {
ensureNoDisposablesAreLeakedInTestSuite();
test('dispose should call all child disposes even if a child throws on dispose', () => {
const disposedValues = new Set<number>();
@@ -221,6 +224,8 @@ suite('DisposableStore', () => {
});
suite('Reference Collection', () => {
ensureNoDisposablesAreLeakedInTestSuite();
class Collection extends ReferenceCollection<number> {
private _count = 0;
get count() { return this._count; }
@@ -62,6 +62,51 @@ suite('MarkdownString', () => {
);
});
suite('appendCodeBlock', () => {
function assertCodeBlock(lang: string, code: string, result: string) {
const mds = new MarkdownString();
mds.appendCodeblock(lang, code);
assert.strictEqual(mds.value, result);
}
test('common cases', () => {
// no backticks
assertCodeBlock('ts', 'const a = 1;', `\n${[
'```ts',
'const a = 1;',
'```'
].join('\n')}\n`);
// backticks
assertCodeBlock('ts', 'const a = `1`;', `\n${[
'```ts',
'const a = `1`;',
'```'
].join('\n')}\n`);
});
// @see https://github.com/microsoft/vscode/issues/193746
test('escape fence', () => {
// fence in the first line
assertCodeBlock('md', '```\n```', `\n${[
'````md',
'```\n```',
'````'
].join('\n')}\n`);
// fence in the middle of code
assertCodeBlock('md', '\n\n```\n```', `\n${[
'````md',
'\n\n```\n```',
'````'
].join('\n')}\n`);
// longer fence at the end of code
assertCodeBlock('md', '```\n```\n````\n````', `\n${[
'`````md',
'```\n```\n````\n````',
'`````'
].join('\n')}\n`);
});
});
suite('ThemeIcons', () => {
suite('Support On', () => {
@@ -4,7 +4,6 @@
*--------------------------------------------------------------------------------------------*/
import * as dom from 'vs/base/browser/dom';
import * as platform from 'vs/base/common/platform';
import { EventType, Gesture, GestureEvent } from 'vs/base/browser/touch';
import { Disposable } from 'vs/base/common/lifecycle';
import { IPointerHandlerHelper, MouseHandler } from 'vs/editor/browser/controller/mouseHandler';
@@ -60,22 +59,32 @@ export class PointerEventHandler extends MouseHandler {
event.preventDefault();
this.viewHelper.focusTextArea();
const target = this._createMouseTarget(new EditorMouseEvent(event, false, this.viewHelper.viewDomNode), false);
this._dispatchGesture(event, /*inSelectionMode*/false);
}
private onChange(event: GestureEvent): void {
if (this._lastPointerType === 'touch') {
this._context.viewModel.viewLayout.deltaScrollNow(-event.translationX, -event.translationY);
}
if (this._lastPointerType === 'pen') {
this._dispatchGesture(event, /*inSelectionMode*/true);
}
}
private _dispatchGesture(event: GestureEvent, inSelectionMode: boolean): void {
const target = this._createMouseTarget(new EditorMouseEvent(event, false, this.viewHelper.viewDomNode), false);
if (target.position) {
// this.viewController.moveTo(target.position);
this.viewController.dispatchMouse({
position: target.position,
mouseColumn: target.position.column,
startedOnLineNumbers: false,
revealType: NavigationCommandRevealType.Minimal,
mouseDownCount: event.tapCount,
inSelectionMode: false,
inSelectionMode,
altKey: false,
ctrlKey: false,
metaKey: false,
shiftKey: false,
leftButton: false,
middleButton: false,
onInjectedText: target.type === MouseTargetType.CONTENT_TEXT && target.detail.injectedText !== null
@@ -83,12 +92,6 @@ export class PointerEventHandler extends MouseHandler {
}
}
private onChange(e: GestureEvent): void {
if (this._lastPointerType === 'touch') {
this._context.viewModel.viewLayout.deltaScrollNow(-e.translationX, -e.translationY);
}
}
protected override _onMouseDown(e: EditorMouseEvent, pointerId: number): void {
if ((e.browserEvent as any).pointerType === 'touch') {
return;
@@ -137,7 +140,7 @@ export class PointerHandler extends Disposable {
constructor(context: ViewContext, viewController: ViewController, viewHelper: IPointerHandlerHelper) {
super();
if ((platform.isIOS && BrowserFeatures.pointerEvents)) {
if (BrowserFeatures.pointerEvents) {
this.handler = this._register(new PointerEventHandler(context, viewController, viewHelper));
} else if (mainWindow.TouchEvent) {
this.handler = this._register(new TouchHandler(context, viewController, viewHelper));
@@ -746,7 +746,7 @@ export class TextAreaWrapper extends Disposable implements ICompleteTextAreaWrap
if (shadowRoot) {
return shadowRoot.activeElement === this._actual;
} else if (this._actual.isConnected) {
return this._actual.ownerDocument.activeElement === this._actual;
return dom.getActiveElement() === this._actual;
} else {
return false;
}
@@ -796,7 +796,7 @@ export class TextAreaWrapper extends Disposable implements ICompleteTextAreaWrap
if (shadowRoot) {
activeElement = shadowRoot.activeElement;
} else {
activeElement = textArea.ownerDocument.activeElement;
activeElement = dom.getActiveElement();
}
const activeWindow = dom.getWindow(activeElement);
+8 -8
View File
@@ -713,7 +713,7 @@ class EditorRenderingCoordinator {
public static INSTANCE = new EditorRenderingCoordinator();
private _coordinatedRenderings: ICoordinatedRendering[] = [];
private _animationFrameRunner: IDisposable | null = null;
private _animationFrameRunners = new Map<CodeWindow, IDisposable>();
private constructor() { }
@@ -729,23 +729,23 @@ class EditorRenderingCoordinator {
this._coordinatedRenderings.splice(renderingIndex, 1);
if (this._coordinatedRenderings.length === 0) {
// There are no more renderings to coordinate => cancel animation frame
if (this._animationFrameRunner !== null) {
this._animationFrameRunner.dispose();
this._animationFrameRunner = null;
// There are no more renderings to coordinate => cancel animation frames
for (const [_, disposable] of this._animationFrameRunners) {
disposable.dispose();
}
this._animationFrameRunners.clear();
}
}
};
}
private _scheduleRender(window: CodeWindow): void {
if (this._animationFrameRunner === null) {
if (!this._animationFrameRunners.has(window)) {
const runner = () => {
this._animationFrameRunner = null;
this._animationFrameRunners.delete(window);
this._onRenderScheduled();
};
this._animationFrameRunner = dom.runAtThisOrScheduleAtNextAnimationFrame(window, runner, 100);
this._animationFrameRunners.set(window, dom.runAtThisOrScheduleAtNextAnimationFrame(window, runner, 100));
}
}
@@ -280,17 +280,6 @@ export class AccessibleDiffViewerPrev extends Action2 {
export function findFocusedDiffEditor(accessor: ServicesAccessor): IDiffEditor | null {
const codeEditorService = accessor.get(ICodeEditorService);
const diffEditors = codeEditorService.listDiffEditors();
const activeCodeEditor = codeEditorService.getFocusedCodeEditor() ?? codeEditorService.getActiveCodeEditor();
if (!activeCodeEditor) {
return null;
}
for (let i = 0, len = diffEditors.length; i < len; i++) {
const diffEditor = <IDiffEditor>diffEditors[i];
if (diffEditor.getModifiedEditor().getId() === activeCodeEditor.getId() || diffEditor.getOriginalEditor().getId() === activeCodeEditor.getId()) {
return diffEditor;
}
}
const activeElement = getActiveElement();
if (activeElement) {
@@ -483,13 +483,13 @@ export class DiffEditorWidget extends DelegatingEditor implements IDiffEditor {
return;
}
const model = this._diffModel.get()?.model;
if (!model) { return; }
const model = this._diffModel.get();
if (!model || !model.isDiffUpToDate.get()) { return; }
this._editors.modified.executeEdits('diffEditor', [
{
range: diff.modified.toExclusiveRange(),
text: model.original.getValueInRange(diff.original.toExclusiveRange())
text: model.model.original.getValueInRange(diff.original.toExclusiveRange())
}
]);
}
@@ -92,6 +92,10 @@ export class LinesSliceCharSequence implements ISequence {
// don't break between \r and \n
return 0;
}
if (prevCategory === CharBoundaryCategory.LineBreakLF) {
// prefer the linebreak before the change
return 150;
}
let score = 0;
if (prevCategory !== nextCategory) {
@@ -187,7 +191,7 @@ const score: Record<CharBoundaryCategory, number> = {
[CharBoundaryCategory.WordNumber]: 0,
[CharBoundaryCategory.End]: 10,
[CharBoundaryCategory.Other]: 2,
[CharBoundaryCategory.Separator]: 3,
[CharBoundaryCategory.Separator]: 30,
[CharBoundaryCategory.Space]: 3,
[CharBoundaryCategory.LineBreakCR]: 10,
[CharBoundaryCategory.LineBreakLF]: 10,
@@ -105,21 +105,21 @@ export class SemanticTokensProviderStyling {
public warnOverlappingSemanticTokens(lineNumber: number, startColumn: number): void {
if (!this._hasWarnedOverlappingTokens) {
this._hasWarnedOverlappingTokens = true;
console.warn(`Overlapping semantic tokens detected at lineNumber ${lineNumber}, column ${startColumn}`);
this._logService.warn(`Overlapping semantic tokens detected at lineNumber ${lineNumber}, column ${startColumn}`);
}
}
public warnInvalidLengthSemanticTokens(lineNumber: number, startColumn: number): void {
if (!this._hasWarnedInvalidLengthTokens) {
this._hasWarnedInvalidLengthTokens = true;
console.warn(`Semantic token with invalid length detected at lineNumber ${lineNumber}, column ${startColumn}`);
this._logService.warn(`Semantic token with invalid length detected at lineNumber ${lineNumber}, column ${startColumn}`);
}
}
public warnInvalidEditStart(previousResultId: string | undefined, resultId: string | undefined, editIndex: number, editStart: number, maxExpectedStart: number): void {
if (!this._hasWarnedInvalidEditStart) {
this._hasWarnedInvalidEditStart = true;
console.warn(`Invalid semantic tokens edit detected (previousResultId: ${previousResultId}, resultId: ${resultId}) at edit #${editIndex}: The provided start offset ${editStart} is outside the previous data (length ${maxExpectedStart}).`);
this._logService.warn(`Invalid semantic tokens edit detected (previousResultId: ${previousResultId}, resultId: ${resultId}) at edit #${editIndex}: The provided start offset ${editStart} is outside the previous data (length ${maxExpectedStart}).`);
}
}
@@ -806,7 +806,8 @@ export class ViewModel extends Disposable implements IViewModel {
public modifyPosition(position: Position, offset: number): Position {
const modelPosition = this.coordinatesConverter.convertViewPositionToModelPosition(position);
return this.model.modifyPosition(modelPosition, offset);
const resultModelPosition = this.model.modifyPosition(modelPosition, offset);
return this.coordinatesConverter.convertModelPositionToViewPosition(resultModelPosition);
}
public deduceModelPositionRelativeToViewPosition(viewAnchorPosition: Position, deltaOffset: number, lineFeedCnt: number): Position {
@@ -175,6 +175,12 @@ export class LightBulbWidget extends Disposable implements IContentWidget {
return this.hide();
}
const onlyAIActions = actions.allAIFixes;
const showAiIcon = this._editor.getOption(EditorOption.lightbulb).experimental.showAiIcon;
if (onlyAIActions && showAiIcon === ShowAiIconMode.Off) {
return this.hide();
}
const model = this._editor.getModel();
if (!model) {
return this.hide();
@@ -16,24 +16,24 @@
font-family: var(--vscode-editorCodeLens-fontFamily), var(--vscode-editorCodeLens-fontFamilyDefault);
}
.monaco-editor .codelens-decoration>span,
.monaco-editor .codelens-decoration>a {
.monaco-editor .codelens-decoration > span,
.monaco-editor .codelens-decoration > a {
user-select: none;
-webkit-user-select: none;
white-space: nowrap;
vertical-align: sub;
}
.monaco-editor .codelens-decoration>a {
.monaco-editor .codelens-decoration > a {
text-decoration: none;
}
.monaco-editor .codelens-decoration>a:hover {
.monaco-editor .codelens-decoration > a:hover {
cursor: pointer;
color: var(--vscode-editorLink-activeForeground) !important;
}
.monaco-editor .codelens-decoration>a:hover .codicon {
.monaco-editor .codelens-decoration > a:hover .codicon {
color: var(--vscode-editorLink-activeForeground) !important;
}
@@ -45,7 +45,7 @@
font-size: var(--vscode-editorCodeLens-fontSize);
}
.monaco-editor .codelens-decoration>a:hover .codicon::before {
.monaco-editor .codelens-decoration > a:hover .codicon::before {
cursor: pointer;
}
@@ -117,9 +117,9 @@ class CloseButton extends Disposable {
const closeButton = dom.append(innerDiv, $('.button' + ThemeIcon.asCSSSelector(registerIcon('color-picker-close', Codicon.close, localize('closeIcon', 'Icon to close the color picker')))));
closeButton.classList.add('close-icon');
this._button.onclick = () => {
this._register(dom.addDisposableListener(this._button, dom.EventType.CLICK, () => {
this._onClicked.fire();
};
}));
}
}
@@ -455,9 +455,9 @@ export class InsertButton extends Disposable {
this._button = dom.append(container, document.createElement('button'));
this._button.classList.add('insert-button');
this._button.textContent = 'Insert';
this._button.onclick = e => {
this._register(dom.addDisposableListener(this._button, dom.EventType.CLICK, () => {
this._onClicked.fire();
};
}));
}
public get button(): HTMLElement {
+10 -5
View File
@@ -69,13 +69,18 @@ export function getRealAndSyntheticDocumentFormattersOrdered(
return result;
}
export const enum FormattingKind {
File = 1,
Selection = 2
}
export const enum FormattingMode {
Explicit = 1,
Silent = 2
}
export interface IFormattingEditProviderSelector {
<T extends (DocumentFormattingEditProvider | DocumentRangeFormattingEditProvider)>(formatter: T[], document: ITextModel, mode: FormattingMode): Promise<T | undefined>;
<T extends (DocumentFormattingEditProvider | DocumentRangeFormattingEditProvider)>(formatter: T[], document: ITextModel, mode: FormattingMode, kind: FormattingKind): Promise<T | undefined>;
}
export abstract class FormattingConflicts {
@@ -87,13 +92,13 @@ export abstract class FormattingConflicts {
return { dispose: remove };
}
static async select<T extends (DocumentFormattingEditProvider | DocumentRangeFormattingEditProvider)>(formatter: T[], document: ITextModel, mode: FormattingMode): Promise<T | undefined> {
static async select<T extends (DocumentFormattingEditProvider | DocumentRangeFormattingEditProvider)>(formatter: T[], document: ITextModel, mode: FormattingMode, kind: FormattingKind): Promise<T | undefined> {
if (formatter.length === 0) {
return undefined;
}
const selector = Iterable.first(FormattingConflicts._selectors);
if (selector) {
return await selector(formatter, document, mode);
return await selector(formatter, document, mode, kind);
}
return undefined;
}
@@ -113,7 +118,7 @@ export async function formatDocumentRangesWithSelectedProvider(
const { documentRangeFormattingEditProvider: documentRangeFormattingEditProviderRegistry } = accessor.get(ILanguageFeaturesService);
const model = isCodeEditor(editorOrModel) ? editorOrModel.getModel() : editorOrModel;
const provider = documentRangeFormattingEditProviderRegistry.ordered(model);
const selected = await FormattingConflicts.select(provider, model, mode);
const selected = await FormattingConflicts.select(provider, model, mode, FormattingKind.Selection);
if (selected) {
progress.report(selected);
await instaService.invokeFunction(formatDocumentRangesWithProvider, selected, editorOrModel, rangeOrRanges, token, userGesture);
@@ -291,7 +296,7 @@ export async function formatDocumentWithSelectedProvider(
const languageFeaturesService = accessor.get(ILanguageFeaturesService);
const model = isCodeEditor(editorOrModel) ? editorOrModel.getModel() : editorOrModel;
const provider = getRealAndSyntheticDocumentFormattersOrdered(languageFeaturesService.documentFormattingEditProvider, languageFeaturesService.documentRangeFormattingEditProvider, model);
const selected = await FormattingConflicts.select(provider, model, mode);
const selected = await FormattingConflicts.select(provider, model, mode, FormattingKind.File);
if (selected) {
progress.report(selected);
await instaService.invokeFunction(formatDocumentWithProvider, selected, editorOrModel, mode, token, userGesture);
@@ -66,13 +66,10 @@
/** Hack to force underline to show **/
border-bottom: 1px solid transparent;
text-underline-position: under;
color: var(--vscode-textLink-foreground);
}
.monaco-editor .marker-widget .descriptioncontainer .message a.code-link > span {
color: var(--vscode-textLink-activeForeground);
}
.monaco-editor .marker-widget .descriptioncontainer .filename {
cursor: pointer;
color: var(--vscode-textLink-activeForeground);
}
@@ -782,9 +782,9 @@ export class ContentHoverWidget extends ResizableContentWidget {
this._hover.containerDomNode.focus();
}
hoverData.colorPicker?.layout();
// The aria label overrides the label, so if we add to it, add the contents of the hover
const accessibleViewHint = getHoverAccessibleViewHint(this._configurationService.getValue('accessibility.verbosity.hover') === true && this._accessibilityService.isScreenReaderOptimized(), this._keybindingService.lookupKeybinding('editor.action.accessibleView')?.getAriaLabel() ?? '');
const hoverFocused = this._hover.containerDomNode.ownerDocument.activeElement === this._hover.containerDomNode;
const accessibleViewHint = hoverFocused && getHoverAccessibleViewHint(this._configurationService.getValue('accessibility.verbosity.hover') === true && this._accessibilityService.isScreenReaderOptimized(), this._keybindingService.lookupKeybinding('editor.action.accessibleView')?.getAriaLabel() ?? '');
if (accessibleViewHint) {
this._hover.contentsDomNode.ariaLabel = this._hover.contentsDomNode.textContent + ', ' + accessibleViewHint;
}
@@ -192,7 +192,7 @@ export class MarkerHoverParticipant implements IEditorHoverParticipant<MarkerHov
this.recentMarkerCodeActionsInfo = undefined;
}
}
const updatePlaceholderDisposable = this.recentMarkerCodeActionsInfo && !this.recentMarkerCodeActionsInfo.hasCodeActions ? Disposable.None : disposables.add(disposableTimeout(() => quickfixPlaceholderElement.textContent = nls.localize('checkingForQuickFixes', "Checking for quick fixes..."), 200));
const updatePlaceholderDisposable = this.recentMarkerCodeActionsInfo && !this.recentMarkerCodeActionsInfo.hasCodeActions ? Disposable.None : disposableTimeout(() => quickfixPlaceholderElement.textContent = nls.localize('checkingForQuickFixes', "Checking for quick fixes..."), 200, disposables);
if (!quickfixPlaceholderElement.textContent) {
// Have some content in here to avoid flickering
quickfixPlaceholderElement.textContent = String.fromCharCode(0xA0); // &nbsp;
@@ -156,6 +156,37 @@ export class InlayHintsController implements IEditorContribution {
return;
}
if (options.enabled === 'on') {
// different "on" modes: always
this._activeRenderMode = RenderMode.Normal;
} else {
// different "on" modes: offUnlessPressed, or onUnlessPressed
let defaultMode: RenderMode;
let altMode: RenderMode;
if (options.enabled === 'onUnlessPressed') {
defaultMode = RenderMode.Normal;
altMode = RenderMode.Invisible;
} else {
defaultMode = RenderMode.Invisible;
altMode = RenderMode.Normal;
}
this._activeRenderMode = defaultMode;
this._sessionDisposables.add(ModifierKeyEmitter.getInstance().event(e => {
if (!this._editor.hasModel()) {
return;
}
const newRenderMode = e.altKey && e.ctrlKey && !(e.shiftKey || e.metaKey) ? altMode : defaultMode;
if (newRenderMode !== this._activeRenderMode) {
this._activeRenderMode = newRenderMode;
const model = this._editor.getModel();
const copies = this._copyInlayHintsWithCurrentAnchor(model);
this._updateHintsDecorators([model.getFullModelRange()], copies);
scheduler.schedule(0);
}
}));
}
// iff possible, quickly update from cache
const cached = this._inlayHintsCache.get(model);
if (cached) {
@@ -226,42 +257,13 @@ export class InlayHintsController implements IEditorContribution {
}
}));
this._sessionDisposables.add(this._editor.onDidChangeModelContent((e) => {
cts?.cancel();
// update less aggressive when typing
const delay = Math.max(scheduler.delay, 1250);
scheduler.schedule(delay);
}));
if (options.enabled === 'on') {
// different "on" modes: always
this._activeRenderMode = RenderMode.Normal;
} else {
// different "on" modes: offUnlessPressed, or onUnlessPressed
let defaultMode: RenderMode;
let altMode: RenderMode;
if (options.enabled === 'onUnlessPressed') {
defaultMode = RenderMode.Normal;
altMode = RenderMode.Invisible;
} else {
defaultMode = RenderMode.Invisible;
altMode = RenderMode.Normal;
}
this._activeRenderMode = defaultMode;
this._sessionDisposables.add(ModifierKeyEmitter.getInstance().event(e => {
if (!this._editor.hasModel()) {
return;
}
const newRenderMode = e.altKey && e.ctrlKey && !(e.shiftKey || e.metaKey) ? altMode : defaultMode;
if (newRenderMode !== this._activeRenderMode) {
this._activeRenderMode = newRenderMode;
const model = this._editor.getModel();
const copies = this._copyInlayHintsWithCurrentAnchor(model);
this._updateHintsDecorators([model.getFullModelRange()], copies);
scheduler.schedule(0);
}
}));
}
// mouse gestures
this._sessionDisposables.add(this._installDblClickGesture(() => scheduler.schedule(0)));
this._sessionDisposables.add(this._installLinkGesture());
@@ -83,6 +83,8 @@ function fromRange(rng: Range): number[] {
}
suite('Multicursor selection', () => {
ensureNoDisposablesAreLeakedInTestSuite();
const serviceCollection = new ServiceCollection();
serviceCollection.set(IStorageService, new InMemoryStorageService());
@@ -59,6 +59,11 @@ export class DocumentSemanticTokensFeature extends Disposable {
}
}
};
modelService.getModels().forEach(model => {
if (isSemanticColoringEnabled(model, themeService, configurationService)) {
register(model);
}
});
this._register(modelService.onModelAdded((model) => {
if (isSemanticColoringEnabled(model, themeService, configurationService)) {
register(model);
@@ -71,24 +71,24 @@
margin-right: 0.3em;
}
.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row>.contents>.main>.right>.readMore,
.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore {
.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row > .contents > .main > .right > .readMore,
.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row.focused.string-label > .contents > .main > .right > .readMore {
display: none;
}
.monaco-editor .suggest-widget.with-status-bar:not(.docs-side) .monaco-list .monaco-list-row:hover>.contents>.main>.right.can-expand-details>.details-label {
.monaco-editor .suggest-widget.with-status-bar:not(.docs-side) .monaco-list .monaco-list-row:hover > .contents > .main > .right.can-expand-details > .details-label {
width: 100%;
}
/* Styles for Message element for when widget is loading or is empty */
.monaco-editor .suggest-widget>.message {
.monaco-editor .suggest-widget > .message {
padding-left: 22px;
}
/** Styles for the list element **/
.monaco-editor .suggest-widget>.tree {
.monaco-editor .suggest-widget > .tree {
height: 100%;
width: 100%;
}
@@ -120,14 +120,14 @@
color: var(--vscode-editorSuggestWidget-selectedIconForeground);
}
.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents {
flex: 1;
height: 100%;
overflow: hidden;
padding-left: 2px;
}
.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main {
display: flex;
overflow: hidden;
text-overflow: ellipsis;
@@ -135,12 +135,12 @@
justify-content: space-between;
}
.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left,
.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left,
.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right {
display: flex;
}
.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.focused)>.contents>.main .monaco-icon-label {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.focused) > .contents > .main .monaco-icon-label {
color: var(--vscode-editorSuggestWidget-foreground);
}
@@ -148,48 +148,48 @@
font-weight: bold;
}
.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main .monaco-highlighted-label .highlight {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main .monaco-highlighted-label .highlight {
color: var(--vscode-editorSuggestWidget-highlightForeground);
}
.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused>.contents>.main .monaco-highlighted-label .highlight {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused > .contents > .main .monaco-highlighted-label .highlight {
color: var(--vscode-editorSuggestWidget-focusHighlightForeground);
}
/** ReadMore Icon styles **/
.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close,
.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore::before {
.monaco-editor .suggest-details > .monaco-scrollable-element > .body > .header > .codicon-close,
.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .readMore::before {
color: inherit;
opacity: 1;
font-size: 14px;
cursor: pointer;
}
.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close {
.monaco-editor .suggest-details > .monaco-scrollable-element > .body > .header > .codicon-close {
position: absolute;
top: 6px;
right: 2px;
}
.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close:hover,
.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:hover {
.monaco-editor .suggest-details > .monaco-scrollable-element > .body > .header > .codicon-close:hover,
.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .readMore:hover {
opacity: 1;
}
/** signature, qualifier, type/details opacity **/
.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .details-label {
opacity: 0.7;
}
.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.signature-label {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left > .signature-label {
overflow: hidden;
text-overflow: ellipsis;
opacity: 0.6;
}
.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.qualifier-label {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left > .qualifier-label {
margin-left: 12px;
opacity: 0.4;
font-size: 85%;
@@ -201,7 +201,7 @@
/** Type Info and icon next to the label in the focused completion item **/
.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .details-label {
font-size: 85%;
margin-left: 1.1em;
overflow: hidden;
@@ -209,58 +209,58 @@
white-space: nowrap;
}
.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label>.monaco-tokenized-source {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .details-label > .monaco-tokenized-source {
display: inline;
}
/** Details: if using CompletionItem#details, show on focus **/
.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .details-label {
display: none;
}
.monaco-editor .suggest-widget:not(.shows-details) .monaco-list .monaco-list-row.focused>.contents>.main>.right>.details-label {
.monaco-editor .suggest-widget:not(.shows-details) .monaco-list .monaco-list-row.focused > .contents > .main > .right > .details-label {
display: inline;
}
/** Details: if using CompletionItemLabel#details, always show **/
.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.right>.details-label,
.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused:not(.string-label)>.contents>.main>.right>.details-label {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label) > .contents > .main > .right > .details-label,
.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused:not(.string-label) > .contents > .main > .right > .details-label {
display: inline;
}
/** Ellipsis on hover **/
.monaco-editor .suggest-widget:not(.docs-side) .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right.can-expand-details>.details-label {
.monaco-editor .suggest-widget:not(.docs-side) .monaco-list .monaco-list-row.focused:hover > .contents > .main > .right.can-expand-details > .details-label {
width: calc(100% - 26px);
}
.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left {
flex-shrink: 1;
flex-grow: 1;
overflow: hidden;
}
.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.monaco-icon-label {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left > .monaco-icon-label {
flex-shrink: 0;
}
.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.left>.monaco-icon-label {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label) > .contents > .main > .left > .monaco-icon-label {
max-width: 100%;
}
.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.left>.monaco-icon-label {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label > .contents > .main > .left > .monaco-icon-label {
flex-shrink: 1;
}
.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right {
overflow: hidden;
flex-shrink: 4;
max-width: 70%;
}
.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .readMore {
display: inline-block;
position: absolute;
right: 10px;
@@ -271,23 +271,23 @@
/** Do NOT display ReadMore when docs is side/below **/
.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row>.contents>.main>.right>.readMore {
.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row > .contents > .main > .right > .readMore {
display: none !important;
}
/** Do NOT display ReadMore when using plain CompletionItemLabel (details/documentation might not be resolved) **/
.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.right>.readMore {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label > .contents > .main > .right > .readMore {
display: none;
}
/** Focused item can show ReadMore, but can't when docs is side/below **/
.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused.string-label > .contents > .main > .right > .readMore {
display: inline-block;
}
.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right>.readMore {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused:hover > .contents > .main > .right > .readMore {
visibility: visible;
}
@@ -298,7 +298,7 @@
text-decoration: unset;
}
.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated>.monaco-icon-label-container>.monaco-icon-name-container {
.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated > .monaco-icon-label-container > .monaco-icon-name-container {
text-decoration: line-through;
}
@@ -372,17 +372,17 @@
display: none;
}
.monaco-editor .suggest-details>.monaco-scrollable-element {
.monaco-editor .suggest-details > .monaco-scrollable-element {
flex: 1;
}
.monaco-editor .suggest-details>.monaco-scrollable-element>.body {
.monaco-editor .suggest-details > .monaco-scrollable-element > .body {
box-sizing: border-box;
height: 100%;
width: 100%;
}
.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type {
.monaco-editor .suggest-details > .monaco-scrollable-element > .body > .header > .type {
flex: 2;
overflow: hidden;
text-overflow: ellipsis;
@@ -392,55 +392,55 @@
padding: 4px 0 12px 5px;
}
.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type.auto-wrap {
.monaco-editor .suggest-details > .monaco-scrollable-element > .body > .header > .type.auto-wrap {
white-space: normal;
word-break: break-all;
}
.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs {
.monaco-editor .suggest-details > .monaco-scrollable-element > .body > .docs {
margin: 0;
padding: 4px 5px;
white-space: pre-wrap;
}
.monaco-editor .suggest-details.no-type>.monaco-scrollable-element>.body>.docs {
.monaco-editor .suggest-details.no-type > .monaco-scrollable-element > .body > .docs {
margin-right: 24px;
overflow: hidden;
}
.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs {
.monaco-editor .suggest-details > .monaco-scrollable-element > .body > .docs.markdown-docs {
padding: 0;
white-space: initial;
min-height: calc(1rem + 8px);
}
.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div,
.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>span:not(:empty) {
.monaco-editor .suggest-details > .monaco-scrollable-element > .body > .docs.markdown-docs > div,
.monaco-editor .suggest-details > .monaco-scrollable-element > .body > .docs.markdown-docs > span:not(:empty) {
padding: 4px 5px;
}
.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:first-child {
.monaco-editor .suggest-details > .monaco-scrollable-element > .body > .docs.markdown-docs > div > p:first-child {
margin-top: 0;
}
.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:last-child {
.monaco-editor .suggest-details > .monaco-scrollable-element > .body > .docs.markdown-docs > div > p:last-child {
margin-bottom: 0;
}
.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .monaco-tokenized-source {
.monaco-editor .suggest-details > .monaco-scrollable-element > .body > .docs.markdown-docs .monaco-tokenized-source {
white-space: pre;
}
.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs .code {
.monaco-editor .suggest-details > .monaco-scrollable-element > .body > .docs .code {
white-space: pre-wrap;
word-wrap: break-word;
}
.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .codicon {
.monaco-editor .suggest-details > .monaco-scrollable-element > .body > .docs.markdown-docs .codicon {
vertical-align: sub;
}
.monaco-editor .suggest-details>.monaco-scrollable-element>.body>p:empty {
.monaco-editor .suggest-details > .monaco-scrollable-element > .body > p:empty {
display: none;
}
@@ -353,7 +353,17 @@ export class SuggestController implements IEditorContribution {
const scrollState = StableEditorScrollState.capture(this.editor);
this.editor.executeEdits(
'suggestController.additionalTextEdits.sync',
item.completion.additionalTextEdits.map(edit => EditOperation.replaceMove(Range.lift(edit.range), edit.text))
item.completion.additionalTextEdits.map(edit => {
let range = Range.lift(edit.range);
if (range.startLineNumber === item.position.lineNumber && range.startColumn > item.position.column) {
// shift additional edit when it is "after" the completion insertion position
const columnDelta = this.editor.getPosition()!.column - item.position.column;
const startColumnDelta = columnDelta;
const endColumnDelta = Range.spansMultipleLines(range) ? 0 : columnDelta;
range = new Range(range.startLineNumber, range.startColumn + startColumnDelta, range.endLineNumber, range.endColumn + endColumnDelta);
}
return EditOperation.replaceMove(range, edit.text);
})
);
scrollState.restoreRelativeVerticalPositionOfCursor(this.editor);
@@ -45,9 +45,14 @@ const _completionItemColor = new class ColorExtractor {
out[0] = item.completion.detail;
return true;
}
if (typeof item.completion.documentation === 'string') {
const match = ColorExtractor._regexRelaxed.exec(item.completion.documentation);
if (match && (match.index === 0 || match.index + match[0].length === item.completion.documentation.length)) {
if (item.completion.documentation) {
const value = typeof item.completion.documentation === 'string'
? item.completion.documentation
: item.completion.documentation.value;
const match = ColorExtractor._regexRelaxed.exec(value);
if (match && (match.index === 0 || match.index + match[0].length === value.length)) {
out[0] = match[0];
return true;
}
@@ -616,4 +616,56 @@ suite('SuggestController', function () {
await p2;
});
test('Ranges where additionalTextEdits are applied are not appropriate when characters are typed #177591', async function () {
disposables.add(languageFeaturesService.completionProvider.register({ scheme: 'test-ctrl' }, {
_debugDisplayName: 'test',
provideCompletionItems(doc, pos) {
return {
suggestions: [{
kind: CompletionItemKind.Snippet,
label: 'aaa',
insertText: 'aaa',
range: Range.fromPositions(pos),
additionalTextEdits: [{
range: Range.fromPositions(pos.delta(0, 10)),
text: 'aaa'
}]
}]
};
}
}));
{ // PART1 - no typing
editor.setValue(`123456789123456789`);
editor.setSelection(new Selection(1, 1, 1, 1));
const p1 = Event.toPromise(controller.model.onDidSuggest);
controller.triggerSuggest();
const e = await p1;
assert.strictEqual(e.completionModel.items.length, 1);
assert.strictEqual(e.completionModel.items[0].textLabel, 'aaa');
controller.acceptSelectedSuggestion(false, false);
assert.strictEqual(editor.getValue(), 'aaa1234567891aaa23456789');
}
{ // PART2 - typing
editor.setValue(`123456789123456789`);
editor.setSelection(new Selection(1, 1, 1, 1));
const p1 = Event.toPromise(controller.model.onDidSuggest);
controller.triggerSuggest();
const e = await p1;
assert.strictEqual(e.completionModel.items.length, 1);
assert.strictEqual(e.completionModel.items[0].textLabel, 'aaa');
editor.trigger('keyboard', 'type', { text: 'aa' });
controller.acceptSelectedSuggestion(false, false);
assert.strictEqual(editor.getValue(), 'aaa1234567891aaa23456789');
}
});
});
@@ -253,9 +253,10 @@ function computeOccurencesMultiModel(registry: LanguageFeatureRegistry<MultiDocu
return new TextualOccurenceRequest(model, selection, word, wordSeparators, otherModels);
}
registerModelAndPositionCommand('_executeDocumentHighlights', (accessor, model, position) => {
registerModelAndPositionCommand('_executeDocumentHighlights', async (accessor, model, position) => {
const languageFeaturesService = accessor.get(ILanguageFeaturesService);
return getOccurrencesAtPosition(languageFeaturesService.documentHighlightProvider, model, position, CancellationToken.None);
const map = await getOccurrencesAtPosition(languageFeaturesService.documentHighlightProvider, model, position, CancellationToken.None);
return map?.get(model.uri);
});
class WordHighlighter {
@@ -50,6 +50,7 @@ class EditorScopedQuickInputService extends QuickInputService {
get onDidLayoutContainer() { return Event.map(editor.onDidLayoutChange, dimension => ({ container: widget.getDomNode(), dimension })); },
get onDidChangeActiveContainer() { return Event.None; },
get onDidAddContainer() { return Event.None; },
get whenActiveContainerStylesLoaded() { return Promise.resolve(); },
get mainContainerOffset() { return { top: 0, quickPickTop: 0 }; },
get activeContainerOffset() { return { top: 0, quickPickTop: 0 }; },
focus: () => editor.focus()
@@ -37,14 +37,19 @@
clip-path: inset(50%);
}
/*.monaco-editor.vs [tabindex="0"]:focus {
outline: 1px solid rgba(0, 122, 204, 0.4);
.monaco-editor, .monaco-diff-editor .synthetic-focus,
.monaco-editor, .monaco-diff-editor [tabindex="0"]:focus,
.monaco-editor, .monaco-diff-editor [tabindex="-1"]:focus,
.monaco-editor, .monaco-diff-editor button:focus,
.monaco-editor, .monaco-diff-editor input[type=button]:focus,
.monaco-editor, .monaco-diff-editor input[type=checkbox]:focus,
.monaco-editor, .monaco-diff-editor input[type=search]:focus,
.monaco-editor, .monaco-diff-editor input[type=text]:focus,
.monaco-editor, .monaco-diff-editor select:focus,
.monaco-editor, .monaco-diff-editor textarea:focus {
outline-width: 1px;
outline-style: solid;
outline-offset: -1px;
opacity: 1 !important;
outline-color: var(--vscode-focusBorder);
opacity: 1
}
.monaco-editor.vs-dark [tabindex="0"]:focus {
outline: 1px solid rgba(14, 99, 156, 0.6);
outline-offset: -1px;
opacity: 1 !important;
}*/
@@ -4,12 +4,12 @@
*--------------------------------------------------------------------------------------------*/
import * as dom from 'vs/base/browser/dom';
import { mainWindow } from 'vs/base/browser/window';
import { coalesce, firstOrDefault } from 'vs/base/common/arrays';
import { Event } from 'vs/base/common/event';
import { ILayoutService, ILayoutOffsetInfo } from 'vs/platform/layout/browser/layoutService';
import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService';
import { InstantiationType, registerSingleton } from 'vs/platform/instantiation/common/extensions';
import { coalesce, firstOrDefault } from 'vs/base/common/arrays';
import { mainWindow } from 'vs/base/browser/window';
import { ILayoutOffsetInfo, ILayoutService } from 'vs/platform/layout/browser/layoutService';
class StandaloneLayoutService implements ILayoutService {
declare readonly _serviceBrand: undefined;
@@ -19,6 +19,7 @@ class StandaloneLayoutService implements ILayoutService {
readonly onDidLayoutContainer = Event.None;
readonly onDidChangeActiveContainer = Event.None;
readonly onDidAddContainer = Event.None;
readonly whenActiveContainerStylesLoaded = Promise.resolve();
get mainContainer(): HTMLElement {
return firstOrDefault(this._codeEditorService.listCodeEditors())?.getContainerDomNode() ?? mainWindow.document.body;
@@ -355,4 +355,22 @@ suite('ViewModel', () => {
}
);
});
test('issue #193262: Incorrect implementation of modifyPosition', () => {
testViewModel(
[
'just some text'
],
{
wordWrap: 'wordWrapColumn',
wordWrapColumn: 5
},
(viewModel, model) => {
assert.deepStrictEqual(
new Position(3, 1),
viewModel.modifyPosition(new Position(3, 2), -1)
);
}
);
});
});
@@ -21,8 +21,12 @@
"modifiedRange": "[7,76 -> 7,80]"
},
{
"originalRange": "[12,153 -> 12,155 EOL]",
"modifiedRange": "[7,157 -> 8,1 EOL]"
"originalRange": "[12,153 -> 12,153]",
"modifiedRange": "[7,157 -> 7,181]"
},
{
"originalRange": "[13,1 -> 13,1]",
"modifiedRange": "[8,1 -> 9,1]"
},
{
"originalRange": "[13,31 -> 13,31]",
@@ -0,0 +1 @@
function x(alignments: RangeMapping[]): x[] { }
@@ -0,0 +1 @@
function x(alignments: RangeMapping[], originalLines: string[], modifiedLines: string[]): x[] { }
@@ -0,0 +1,22 @@
{
"original": {
"content": "function x(alignments: RangeMapping[]): x[] { }\n",
"fileName": "./1.tst"
},
"modified": {
"content": "function x(alignments: RangeMapping[], originalLines: string[], modifiedLines: string[]): x[] { }\n",
"fileName": "./2.tst"
},
"diffs": [
{
"originalRange": "[1,2)",
"modifiedRange": "[1,2)",
"innerChanges": [
{
"originalRange": "[1,38 -> 1,38]",
"modifiedRange": "[1,38 -> 1,88]"
}
]
}
]
}
@@ -0,0 +1,22 @@
{
"original": {
"content": "function x(alignments: RangeMapping[]): x[] { }\n",
"fileName": "./1.tst"
},
"modified": {
"content": "function x(alignments: RangeMapping[], originalLines: string[], modifiedLines: string[]): x[] { }\n",
"fileName": "./2.tst"
},
"diffs": [
{
"originalRange": "[1,2)",
"modifiedRange": "[1,2)",
"innerChanges": [
{
"originalRange": "[1,38 -> 1,38]",
"modifiedRange": "[1,38 -> 1,88]"
}
]
}
]
}
@@ -93,6 +93,8 @@ export class DropdownWithPrimaryActionViewItem extends BaseActionViewItem {
event.stopPropagation();
}
}));
this.updateEnabled();
}
override focus(fromRight?: boolean): void {
@@ -119,6 +121,11 @@ export class DropdownWithPrimaryActionViewItem extends BaseActionViewItem {
}
}
protected override updateEnabled(): void {
const disabled = !this.action.enabled;
this.element?.classList.toggle('disabled', disabled);
}
update(dropdownAction: IAction, dropdownMenuActions: IAction[], dropdownIcon?: string): void {
this._dropdown.dispose();
this._dropdown = new DropdownMenuActionViewItem(dropdownAction, dropdownMenuActions, this._contextMenuProvider, {
@@ -115,6 +115,7 @@ export interface NativeParsedArgs {
'profile'?: string;
'profile-temp'?: boolean;
'disable-chromium-sandbox'?: boolean;
sandbox?: boolean;
'enable-coi'?: boolean;
@@ -14,7 +14,7 @@ import { NativeParsedArgs } from 'vs/platform/environment/common/argv';
import { ExtensionKind, IExtensionHostDebugParams, INativeEnvironmentService } from 'vs/platform/environment/common/environment';
import { IProductService } from 'vs/platform/product/common/productService';
export const EXTENSION_IDENTIFIER_WITH_LOG_REGEX = /^([^.]+\..+):(.+)$/;
export const EXTENSION_IDENTIFIER_WITH_LOG_REGEX = /^([^.]+\..+)[:=](.+)$/;
export interface INativeEnvironmentPaths {
+1
View File
@@ -121,6 +121,7 @@ export const OPTIONS: OptionDescriptions<Required<NativeParsedArgs>> = {
'inspect-brk-extensions': { type: 'string', allowEmptyValue: true, deprecates: ['debugBrkPluginHost'], args: 'port', cat: 't', description: localize('inspect-brk-extensions', "Allow debugging and profiling of extensions with the extension host being paused after start. Check the developer tools for the connection URI.") },
'disable-gpu': { type: 'boolean', cat: 't', description: localize('disableGPU', "Disable GPU hardware acceleration.") },
'disable-chromium-sandbox': { type: 'boolean', cat: 't', description: localize('disableChromiumSandbox', "Use this option only when there is requirement to launch the application as sudo user on Linux or when running as an elevated user in an applocker environment on Windows.") },
'sandbox': { type: 'boolean' },
'ms-enable-electron-run-as-node': { type: 'boolean', global: true },
'telemetry': { type: 'boolean', cat: 't', description: localize('telemetry', "Shows all telemetry events which VS code collects.") },
@@ -112,13 +112,13 @@ suite('parseArgs', () => {
_: string[];
}
const options1: OptionDescriptions<TestArgs1> = {
const options1 = {
'testcmd': c('A test command', {
testArg: o('A test command option'),
_: { type: 'string[]' }
}),
_: { type: 'string[]' }
};
} as OptionDescriptions<TestArgs1>;
assertParse(
options1,
['testcmd', '--testArg=foo'],
@@ -142,13 +142,13 @@ suite('parseArgs', () => {
_: string[];
}
const options2: OptionDescriptions<TestArgs2> = {
const options2 = {
'testcmd': c('A test command', {
testArg: o('A test command option')
}),
testX: { type: 'boolean', global: true, description: '' },
_: { type: 'string[]' }
};
} as OptionDescriptions<TestArgs2>;
assertParse(
options2,
['testcmd', '--testArg=foo', '--testX'],

Some files were not shown because too many files have changed in this diff Show More