diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 0000000..16cf221 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,7 @@ +## CLA + +This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com. + +When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA. + +This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments. \ No newline at end of file diff --git a/.gitignore b/.gitignore index ad46b30..f188498 100644 --- a/.gitignore +++ b/.gitignore @@ -1,61 +1,24 @@ -# Logs -logs -*.log +.DS_Store +node_modules +/dist + +/tests/e2e/videos/ +/tests/e2e/screenshots/ + +# local env files +.env.local +.env.*.local + +# Log files npm-debug.log* yarn-debug.log* yarn-error.log* -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# TypeScript v1 declaration files -typings/ - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variables file -.env - -# next.js build output -.next +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw* diff --git a/.postcssrc.js b/.postcssrc.js new file mode 100644 index 0000000..100cc01 --- /dev/null +++ b/.postcssrc.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: { + autoprefixer: {} + } +} \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..e866155 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +{ + "printWidth": 100, + "semi": false, + "singleQuote": true +} diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..2c969bb --- /dev/null +++ b/.travis.yml @@ -0,0 +1,10 @@ +language: node_js +node_js: 8 + +cache: yarn + +install: + - yarn + +script: + - yarn test \ No newline at end of file diff --git a/LICENSE b/LICENSE index 2107107..5cf7c8d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,21 @@ - MIT License +MIT License - Copyright (c) Microsoft Corporation. All rights reserved. +Copyright (c) Microsoft Corporation. All rights reserved. - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE diff --git a/README.md b/README.md index 72f1506..09d69aa 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,29 @@ +# Language Server Protocol Inspector -# Contributing +Try it at https://microsoft.github.io/language-server-protocol/inspector/. -This project welcomes contributions and suggestions. Most contributions require you to agree to a -Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us -the rights to use your contribution. For details, visit https://cla.microsoft.com. +## Motivation -When you submit a pull request, a CLA-bot will automatically determine whether you need to provide -a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions -provided by the bot. You will only need to do this once across all repos using our CLA. +When you are using [vscode-languageserver-node](https://github.com/Microsoft/vscode-languageserver-node) to develop a language server, it's possible to specify a setting `"[langId]".trace.server: "verbose"` to make the Language Client log the LSP communication. This log is useful for developing and testing the Language Server, but the log can be lengthy — 5 seconds of usage might generate 5000 lines LSP log. This makes it hard to gain insight from the logs. -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). -For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or -contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. +This inspector visualizes the logs to make it easy to understand the communication between the Language Client / Server. It also lets you filter down the logs by search query or language features, so you can quickly identify the logs you are interested in. + +![lsp-inspector](https://user-images.githubusercontent.com/4033249/41323525-ba73697a-6e63-11e8-92a3-c655b34126f6.gif) + +## Usage + +- A log file (log from html Language Server) is loaded by default. +- Click each LSP item to expand its parameters. +- Type a query into the search bar to filter the logs. +- Select a language feature area to filter the logs. +- Collect your own logs and inspect them! For example: + - Set `css.trace.server: "verbose"` in VS Code. + - Open a CSS file. + - Copy everything inside `CSS Language Server` channel into a log file `css.log`. + - Load it from the web app. +- You can try it on real-world logs file at `/tests/unit/logParser/fixture`. + +## Running & Developing + +- `yarn` +- `yarn serve` diff --git a/cypress.json b/cypress.json new file mode 100644 index 0000000..470c720 --- /dev/null +++ b/cypress.json @@ -0,0 +1,3 @@ +{ + "pluginsFile": "tests/e2e/plugins/index.js" +} diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..e393be2 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,24 @@ +module.exports = { + moduleFileExtensions: [ + 'ts', + 'tsx', + 'js', + 'jsx', + 'json', + 'vue' + ], + transform: { + '^.+\\.vue$': 'vue-jest', + '.+\\.(css|styl|less|sass|scss|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub', + '^.+\\.tsx?$': 'ts-jest' + }, + moduleNameMapper: { + '^@/(.*)$': '/src/$1' + }, + snapshotSerializers: [ + 'jest-serializer-vue' + ], + testMatch: [ + '/(tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx))' + ] +} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..5cd8b4c --- /dev/null +++ b/package.json @@ -0,0 +1,45 @@ +{ + "name": "next", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint", + "test": "vue-cli-service test:unit", + "test:e2e": "vue-cli-service test:e2e", + "format": "prettier --config .prettierrc --write {src,tests}/**/*.{vue,js,ts,json}" + }, + "gitHooks": { + "pre-commit": "yarn format" + }, + "dependencies": { + "@fortawesome/fontawesome": "^1.1.8", + "@fortawesome/fontawesome-free-solid": "^5.0.13", + "@fortawesome/vue-fontawesome": "^0.0.23", + "vue": "^2.5.16", + "vue-router": "^3.0.1", + "vuex": "^3.0.1" + }, + "devDependencies": { + "@types/fs-extra": "^5.0.3", + "@types/jest": "^22.0.1", + "@vue/cli-plugin-e2e-cypress": "^3.0.0-beta.15", + "@vue/cli-plugin-typescript": "^3.0.0-beta.15", + "@vue/cli-plugin-unit-jest": "^3.0.0-beta.15", + "@vue/cli-service": "^3.0.0-beta.15", + "@vue/test-utils": "^1.0.0-beta.16", + "fs-extra": "^6.0.1", + "node-sass": "^4.9.0", + "prettier": "^1.13.6", + "sass-loader": "^7.0.1", + "ts-jest": "^22.4.6", + "vue-template-compiler": "^2.5.16", + "yorkie": "^1.0.3" + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not ie <= 8" + ] +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..c7b9a43 Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..e3f33fb --- /dev/null +++ b/public/index.html @@ -0,0 +1,18 @@ + + + + + + + + LSP Inspector + + + +
+ + + + diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..1d212fb --- /dev/null +++ b/src/App.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/assets/logo.png b/src/assets/logo.png new file mode 100644 index 0000000..f3d2503 Binary files /dev/null and b/src/assets/logo.png differ diff --git a/src/assets/search.svg b/src/assets/search.svg new file mode 100644 index 0000000..18ed22a --- /dev/null +++ b/src/assets/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/FilePicker.vue b/src/components/FilePicker.vue new file mode 100644 index 0000000..77d1110 --- /dev/null +++ b/src/components/FilePicker.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/src/components/FilterBar.vue b/src/components/FilterBar.vue new file mode 100644 index 0000000..90b39c8 --- /dev/null +++ b/src/components/FilterBar.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/src/components/Intro.vue b/src/components/Intro.vue new file mode 100644 index 0000000..bd03c2d --- /dev/null +++ b/src/components/Intro.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/src/components/Message.vue b/src/components/Message.vue new file mode 100644 index 0000000..47396a6 --- /dev/null +++ b/src/components/Message.vue @@ -0,0 +1,135 @@ + + + + + + diff --git a/src/components/MessageDetail.vue b/src/components/MessageDetail.vue new file mode 100644 index 0000000..f8b606a --- /dev/null +++ b/src/components/MessageDetail.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/src/components/MessageList.vue b/src/components/MessageList.vue new file mode 100644 index 0000000..2b370ce --- /dev/null +++ b/src/components/MessageList.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/src/components/SearchBar.vue b/src/components/SearchBar.vue new file mode 100644 index 0000000..a74f0a8 --- /dev/null +++ b/src/components/SearchBar.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/src/logParser/rawLogParser.ts b/src/logParser/rawLogParser.ts new file mode 100644 index 0000000..b4203ab --- /dev/null +++ b/src/logParser/rawLogParser.ts @@ -0,0 +1,119 @@ +export type MsgKind = + | 'send-notification' + | 'recv-notification' + | 'send-request' + | 'recv-request' + | 'send-response' + | 'recv-response' + +export interface LspItem { + time: string + msg: string + msgKind: MsgKind + msgType: string + msgId: string + msgLatency: string + arg: any +} + +export function parseLSPLog(input: string): LspItem[] { + const lineEnding = isCRLF(input) ? '\r\n' : '\n' + + const logs = input.split(lineEnding + lineEnding + lineEnding) + + const arr: LspItem[] = [] + logs + .map(l => { + const start = l.lastIndexOf('[Trace') + return l.slice(start) + }) + .filter(l => { + return l.startsWith('[Trace') + }) + .forEach(l => { + const parsed = parseRawLog(l) + if (parsed) { + arr.push(parsed) + } + }) + + return arr +} + +function parseRawLog(log: string) { + const rawLogs = log.split('\n') + + const [trace, firstLineJson] = rawLogs + + const reTrace = /\[Trace - (.*)\] (.*)/ + const reJsonFirstLine = /(Params|Result): (.*)/ + + if (trace.match(reTrace) && firstLineJson.match(reJsonFirstLine)) { + const [time, msg] = reTrace.exec(trace).slice(1) + const [jsonIdentifier, restOfFirstLineJson] = reJsonFirstLine.exec(firstLineJson).slice(1) + const parsedArg = JSON.parse([restOfFirstLineJson, ...rawLogs.slice(2)].join('\n')) + + return { + time, + msg, + ...extractMsg(msg), + arg: parsedArg + } + } +} + +function extractMsg(msg: string) { + let msgKind + + if (msg.startsWith('Sending notification')) { + msgKind = 'send-notification' + } else if (msg.startsWith('Received notification')) { + msgKind = 'recv-notification' + } else if (msg.startsWith('Sending request')) { + msgKind = 'send-request' + } else if (msg.startsWith('Received request')) { + msgKind = 'recv-request' + } else if (msg.startsWith('Sending response')) { + msgKind = 'send-response' + } else if (msg.startsWith('Received response')) { + msgKind = 'recv-response' + } else { + return null + } + + const reSendNotification = /Sending notification '(.*)'/ + const reRecvNotification = /Received notification '(.*)'/ + const reSendRequest = /Sending request '(.*) - \((\d+)\)'/ + const reRecvRequest = /Received request '(.*) - \((\d+)\)'/ + const reSendResponse = /Sending response '(.*) - \((\d+)\)'.*took (\d+ms)/ + const reRecvResponse = /Received response '(.*) - \((\d+)\)' in (\d+ms)/ + + let msgType, msgId, msgLatency + if (msgKind === 'send-notification') { + ;[msgType] = reSendNotification.exec(msg).slice(1) + } else if (msgKind === 'recv-notification') { + ;[msgType] = reRecvNotification.exec(msg).slice(1) + } else if (msgKind === 'send-request') { + ;[msgType, msgId] = reSendRequest.exec(msg).slice(1) + } else if (msgKind === 'recv-request') { + ;[msgType, msgId] = reRecvRequest.exec(msg).slice(1) + } else if (msgKind === 'send-response') { + ;[msgType, msgId, msgLatency] = reSendResponse.exec(msg).slice(1) + } else if (msgKind === 'recv-response') { + ;[msgType, msgId, msgLatency] = reRecvResponse.exec(msg).slice(1) + } else { + return null + } + + return { + msgKind, + msgType, + msgId, + msgLatency + } +} + +function isCRLF(input: string) { + const matches = input.match(/\r\n/) + return matches && matches.length > 0 +} diff --git a/src/lsp.json b/src/lsp.json new file mode 100644 index 0000000..c45cb23 --- /dev/null +++ b/src/lsp.json @@ -0,0 +1,28226 @@ +[ + { + "time": "12:42:29 PM", + "msg": "Sending request 'initialize - (0)'.", + "msgKind": "send-request", + "msgType": "initialize", + "msgId": "0", + "arg": { + "processId": 22913, + "rootPath": "/Users/octref/Code/css-test", + "rootUri": "file:///Users/octref/Code/css-test", + "capabilities": { + "workspace": { + "applyEdit": true, + "workspaceEdit": { + "documentChanges": true + }, + "didChangeConfiguration": { + "dynamicRegistration": true + }, + "didChangeWatchedFiles": { + "dynamicRegistration": true + }, + "symbol": { + "dynamicRegistration": true, + "symbolKind": { + "valueSet": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26 + ] + } + }, + "executeCommand": { + "dynamicRegistration": true + }, + "configuration": true, + "workspaceFolders": true + }, + "textDocument": { + "publishDiagnostics": { + "relatedInformation": true + }, + "synchronization": { + "dynamicRegistration": true, + "willSave": true, + "willSaveWaitUntil": true, + "didSave": true + }, + "completion": { + "dynamicRegistration": true, + "contextSupport": true, + "completionItem": { + "snippetSupport": true, + "commitCharactersSupport": true, + "documentationFormat": ["markdown", "plaintext"], + "deprecatedSupport": true + }, + "completionItemKind": { + "valueSet": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ] + } + }, + "hover": { + "dynamicRegistration": true, + "contentFormat": ["markdown", "plaintext"] + }, + "signatureHelp": { + "dynamicRegistration": true, + "signatureInformation": { + "documentationFormat": ["markdown", "plaintext"] + } + }, + "definition": { + "dynamicRegistration": true + }, + "references": { + "dynamicRegistration": true + }, + "documentHighlight": { + "dynamicRegistration": true + }, + "documentSymbol": { + "dynamicRegistration": true, + "symbolKind": { + "valueSet": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26 + ] + } + }, + "codeAction": { + "dynamicRegistration": true + }, + "codeLens": { + "dynamicRegistration": true + }, + "formatting": { + "dynamicRegistration": true + }, + "rangeFormatting": { + "dynamicRegistration": true + }, + "onTypeFormatting": { + "dynamicRegistration": true + }, + "rename": { + "dynamicRegistration": true + }, + "documentLink": { + "dynamicRegistration": true + }, + "typeDefinition": { + "dynamicRegistration": true + }, + "implementation": { + "dynamicRegistration": true + }, + "colorProvider": { + "dynamicRegistration": true + }, + "foldingRange": { + "dynamicRegistration": false, + "rangeLimit": 5000, + "lineFoldingOnly": true + } + } + }, + "initializationOptions": {}, + "trace": "verbose", + "workspaceFolders": [ + { + "uri": "file:///Users/octref/Code/css-test", + "name": "css-test" + } + ] + } + }, + { + "time": "12:42:29 PM", + "msg": "Received response 'initialize - (0)' in 173ms.", + "msgKind": "recv-response", + "msgType": "initialize", + "msgId": "0", + "msgLatency": "173ms", + "arg": { + "capabilities": { + "textDocumentSync": 1, + "completionProvider": { + "resolveProvider": false, + "triggerCharacters": ["/"] + }, + "hoverProvider": true, + "documentSymbolProvider": true, + "referencesProvider": true, + "definitionProvider": true, + "documentHighlightProvider": true, + "codeActionProvider": true, + "renameProvider": true, + "colorProvider": {}, + "foldingRangeProvider": true + } + } + }, + { + "time": "12:42:29 PM", + "msg": "Sending notification 'initialized'.", + "msgKind": "send-notification", + "msgType": "initialized", + "arg": {} + }, + { + "time": "12:42:29 PM", + "msg": "Sending notification 'workspace/didChangeConfiguration'.", + "msgKind": "send-notification", + "msgType": "workspace/didChangeConfiguration", + "arg": { + "settings": { + "css": { + "validate": true, + "colorDecorators": { + "enable": true + }, + "lint": { + "compatibleVendorPrefixes": "ignore", + "vendorPrefix": "warning", + "duplicateProperties": "ignore", + "emptyRules": "warning", + "importStatement": "ignore", + "boxModel": "ignore", + "universalSelector": "ignore", + "zeroUnits": "ignore", + "fontFaceProperties": "warning", + "hexColorLength": "error", + "argumentsInColorFunction": "error", + "unknownProperties": "warning", + "ieHack": "ignore", + "unknownVendorSpecificProperties": "ignore", + "propertyIgnoredDueToDisplay": "warning", + "important": "ignore", + "float": "ignore", + "idSelector": "ignore" + }, + "trace": { + "server": "verbose" + } + }, + "scss": { + "validate": true, + "colorDecorators": { + "enable": true + }, + "lint": { + "compatibleVendorPrefixes": "ignore", + "vendorPrefix": "warning", + "duplicateProperties": "ignore", + "emptyRules": "warning", + "importStatement": "ignore", + "boxModel": "ignore", + "universalSelector": "ignore", + "zeroUnits": "ignore", + "fontFaceProperties": "warning", + "hexColorLength": "error", + "argumentsInColorFunction": "error", + "unknownProperties": "warning", + "ieHack": "ignore", + "unknownVendorSpecificProperties": "ignore", + "propertyIgnoredDueToDisplay": "warning", + "important": "ignore", + "float": "ignore", + "idSelector": "ignore" + }, + "scannerDepth": 30, + "scannerExclude": ["**/.git", "**/node_modules", "**/bower_components"], + "scanImportedFiles": true, + "scanImportedFilesDepth": 50, + "implicitlyLabel": "(implicitly)", + "showErrors": false, + "suggestVariables": true, + "suggestMixins": true, + "suggestFunctions": true, + "suggestFunctionsInStringContextAfterSymbols": " (+-*%" + }, + "less": { + "validate": true, + "colorDecorators": { + "enable": true + }, + "lint": { + "compatibleVendorPrefixes": "ignore", + "vendorPrefix": "warning", + "duplicateProperties": "ignore", + "emptyRules": "warning", + "importStatement": "ignore", + "boxModel": "ignore", + "universalSelector": "ignore", + "zeroUnits": "ignore", + "fontFaceProperties": "warning", + "hexColorLength": "error", + "argumentsInColorFunction": "error", + "unknownProperties": "warning", + "ieHack": "ignore", + "unknownVendorSpecificProperties": "ignore", + "propertyIgnoredDueToDisplay": "warning", + "important": "ignore", + "float": "ignore", + "idSelector": "ignore" + } + } + } + } + }, + { + "time": "12:42:29 PM", + "msg": "Sending notification 'textDocument/didOpen'.", + "msgKind": "send-notification", + "msgType": "textDocument/didOpen", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.scss", + "languageId": "scss", + "version": 1, + "text": + ".foo {\n @for $i from 0 to 4 {\n font-family: 'Courier New', Courier, monospace;\n }\n}\n" + } + } + }, + { + "time": "12:42:29 PM", + "msg": "Sending notification 'textDocument/didOpen'.", + "msgKind": "send-notification", + "msgType": "textDocument/didOpen", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.css", + "languageId": "css", + "version": 1, + "text": "@charset 'utf-8';\n\n.foo {\n font-family: 'Courier New', Courier, monospace;\n}" + } + } + }, + { + "time": "12:42:29 PM", + "msg": "Sending request 'textDocument/documentSymbol - (1)'.", + "msgKind": "send-request", + "msgType": "textDocument/documentSymbol", + "msgId": "1", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.scss" + } + } + }, + { + "time": "12:42:29 PM", + "msg": "Sending request 'textDocument/codeAction - (2)'.", + "msgKind": "send-request", + "msgType": "textDocument/codeAction", + "msgId": "2", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.scss" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 0 + } + }, + "context": { + "diagnostics": [] + } + } + }, + { + "time": "12:42:29 PM", + "msg": "Sending request 'textDocument/documentColor - (3)'.", + "msgKind": "send-request", + "msgType": "textDocument/documentColor", + "msgId": "3", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.scss" + } + } + }, + { + "time": "12:42:29 PM", + "msg": "Received response 'textDocument/documentSymbol - (1)' in 10ms.", + "msgKind": "recv-response", + "msgType": "textDocument/documentSymbol", + "msgId": "1", + "msgLatency": "10ms", + "arg": [ + { + "name": ".foo", + "kind": 5, + "location": { + "uri": "file:///Users/octref/Code/css-test/test.scss", + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 4, + "character": 1 + } + } + } + } + ] + }, + { + "time": "12:42:29 PM", + "msg": "Received response 'textDocument/codeAction - (2)' in 9ms.", + "msgKind": "recv-response", + "msgType": "textDocument/codeAction", + "msgId": "2", + "msgLatency": "9ms", + "arg": [] + }, + { + "time": "12:42:29 PM", + "msg": "Received response 'textDocument/documentColor - (3)' in 9ms.", + "msgKind": "recv-response", + "msgType": "textDocument/documentColor", + "msgId": "3", + "msgLatency": "9ms", + "arg": [] + }, + { + "time": "12:42:30 PM", + "msg": "Sending request 'textDocument/documentColor - (4)'.", + "msgKind": "send-request", + "msgType": "textDocument/documentColor", + "msgId": "4", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.css" + } + } + }, + { + "time": "12:42:30 PM", + "msg": "Sending request 'textDocument/codeAction - (5)'.", + "msgKind": "send-request", + "msgType": "textDocument/codeAction", + "msgId": "5", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.css" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 0 + } + }, + "context": { + "diagnostics": [] + } + } + }, + { + "time": "12:42:30 PM", + "msg": "Sending request 'textDocument/documentSymbol - (6)'.", + "msgKind": "send-request", + "msgType": "textDocument/documentSymbol", + "msgId": "6", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.css" + } + } + }, + { + "time": "12:42:30 PM", + "msg": "Received response 'textDocument/documentColor - (4)' in 13ms.", + "msgKind": "recv-response", + "msgType": "textDocument/documentColor", + "msgId": "4", + "msgLatency": "13ms", + "arg": [] + }, + { + "time": "12:42:30 PM", + "msg": "Received response 'textDocument/codeAction - (5)' in 12ms.", + "msgKind": "recv-response", + "msgType": "textDocument/codeAction", + "msgId": "5", + "msgLatency": "12ms", + "arg": [] + }, + { + "time": "12:42:30 PM", + "msg": "Received response 'textDocument/documentSymbol - (6)' in 7ms.", + "msgKind": "recv-response", + "msgType": "textDocument/documentSymbol", + "msgId": "6", + "msgLatency": "7ms", + "arg": [ + { + "name": ".foo", + "kind": 5, + "location": { + "uri": "file:///Users/octref/Code/css-test/test.css", + "range": { + "start": { + "line": 2, + "character": 0 + }, + "end": { + "line": 4, + "character": 1 + } + } + } + } + ] + }, + { + "time": "12:42:30 PM", + "msg": "Sending request 'textDocument/foldingRange - (7)'.", + "msgKind": "send-request", + "msgType": "textDocument/foldingRange", + "msgId": "7", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.css" + } + } + }, + { + "time": "12:42:30 PM", + "msg": "Received response 'textDocument/foldingRange - (7)' in 3ms.", + "msgKind": "recv-response", + "msgType": "textDocument/foldingRange", + "msgId": "7", + "msgLatency": "3ms", + "arg": [ + { + "startLine": 2, + "endLine": 3 + } + ] + }, + { + "time": "12:42:30 PM", + "msg": "Sending request 'textDocument/documentColor - (8)'.", + "msgKind": "send-request", + "msgType": "textDocument/documentColor", + "msgId": "8", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.scss" + } + } + }, + { + "time": "12:42:30 PM", + "msg": "Sending request 'textDocument/codeAction - (9)'.", + "msgKind": "send-request", + "msgType": "textDocument/codeAction", + "msgId": "9", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.scss" + }, + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 0 + } + }, + "context": { + "diagnostics": [] + } + } + }, + { + "time": "12:42:30 PM", + "msg": "Sending request 'textDocument/documentSymbol - (10)'.", + "msgKind": "send-request", + "msgType": "textDocument/documentSymbol", + "msgId": "10", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.scss" + } + } + }, + { + "time": "12:42:30 PM", + "msg": "Received response 'textDocument/documentColor - (8)' in 9ms.", + "msgKind": "recv-response", + "msgType": "textDocument/documentColor", + "msgId": "8", + "msgLatency": "9ms", + "arg": [] + }, + { + "time": "12:42:30 PM", + "msg": "Received response 'textDocument/codeAction - (9)' in 10ms.", + "msgKind": "recv-response", + "msgType": "textDocument/codeAction", + "msgId": "9", + "msgLatency": "10ms", + "arg": [] + }, + { + "time": "12:42:30 PM", + "msg": "Received response 'textDocument/documentSymbol - (10)' in 6ms.", + "msgKind": "recv-response", + "msgType": "textDocument/documentSymbol", + "msgId": "10", + "msgLatency": "6ms", + "arg": [ + { + "name": ".foo", + "kind": 5, + "location": { + "uri": "file:///Users/octref/Code/css-test/test.scss", + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 4, + "character": 1 + } + } + } + } + ] + }, + { + "time": "12:42:30 PM", + "msg": "Received request 'workspace/configuration - (0)'.", + "msgKind": "recv-request", + "msgType": "workspace/configuration", + "msgId": "0", + "arg": { + "items": [ + { + "scopeUri": "file:///Users/octref/Code/css-test/test.scss", + "section": "scss" + } + ] + } + }, + { + "time": "12:42:30 PM", + "msg": "Sending response 'workspace/configuration - (0)'. Processing request took 4ms", + "msgKind": "send-response", + "msgType": "workspace/configuration", + "msgId": "0", + "msgLatency": "4ms", + "arg": [ + { + "validate": true, + "colorDecorators": { + "enable": true + }, + "lint": { + "compatibleVendorPrefixes": "ignore", + "vendorPrefix": "warning", + "duplicateProperties": "ignore", + "emptyRules": "warning", + "importStatement": "ignore", + "boxModel": "ignore", + "universalSelector": "ignore", + "zeroUnits": "ignore", + "fontFaceProperties": "warning", + "hexColorLength": "error", + "argumentsInColorFunction": "error", + "unknownProperties": "warning", + "ieHack": "ignore", + "unknownVendorSpecificProperties": "ignore", + "propertyIgnoredDueToDisplay": "warning", + "important": "ignore", + "float": "ignore", + "idSelector": "ignore" + }, + "scannerDepth": 30, + "scannerExclude": ["**/.git", "**/node_modules", "**/bower_components"], + "scanImportedFiles": true, + "scanImportedFilesDepth": 50, + "implicitlyLabel": "(implicitly)", + "showErrors": false, + "suggestVariables": true, + "suggestMixins": true, + "suggestFunctions": true, + "suggestFunctionsInStringContextAfterSymbols": " (+-*%" + } + ] + }, + { + "time": "12:42:30 PM", + "msg": "Received request 'workspace/configuration - (1)'.", + "msgKind": "recv-request", + "msgType": "workspace/configuration", + "msgId": "1", + "arg": { + "items": [ + { + "scopeUri": "file:///Users/octref/Code/css-test/test.css", + "section": "css" + } + ] + } + }, + { + "time": "12:42:30 PM", + "msg": "Sending response 'workspace/configuration - (1)'. Processing request took 2ms", + "msgKind": "send-response", + "msgType": "workspace/configuration", + "msgId": "1", + "msgLatency": "2ms", + "arg": [ + { + "validate": true, + "colorDecorators": { + "enable": true + }, + "lint": { + "compatibleVendorPrefixes": "ignore", + "vendorPrefix": "warning", + "duplicateProperties": "ignore", + "emptyRules": "warning", + "importStatement": "ignore", + "boxModel": "ignore", + "universalSelector": "ignore", + "zeroUnits": "ignore", + "fontFaceProperties": "warning", + "hexColorLength": "error", + "argumentsInColorFunction": "error", + "unknownProperties": "warning", + "ieHack": "ignore", + "unknownVendorSpecificProperties": "ignore", + "propertyIgnoredDueToDisplay": "warning", + "important": "ignore", + "float": "ignore", + "idSelector": "ignore" + }, + "trace": { + "server": "verbose" + } + } + ] + }, + { + "time": "12:42:30 PM", + "msg": "Received notification 'textDocument/publishDiagnostics'.", + "msgKind": "recv-notification", + "msgType": "textDocument/publishDiagnostics", + "arg": { + "uri": "file:///Users/octref/Code/css-test/test.scss", + "diagnostics": [] + } + }, + { + "time": "12:42:30 PM", + "msg": "Received notification 'textDocument/publishDiagnostics'.", + "msgKind": "recv-notification", + "msgType": "textDocument/publishDiagnostics", + "arg": { + "uri": "file:///Users/octref/Code/css-test/test.css", + "diagnostics": [] + } + }, + { + "time": "12:42:30 PM", + "msg": "Sending request 'textDocument/foldingRange - (11)'.", + "msgKind": "send-request", + "msgType": "textDocument/foldingRange", + "msgId": "11", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.scss" + } + } + }, + { + "time": "12:42:30 PM", + "msg": "Received response 'textDocument/foldingRange - (11)' in 2ms.", + "msgKind": "recv-response", + "msgType": "textDocument/foldingRange", + "msgId": "11", + "msgLatency": "2ms", + "arg": [ + { + "startLine": 0, + "endLine": 3 + }, + { + "startLine": 1, + "endLine": 2 + } + ] + }, + { + "time": "12:42:33 PM", + "msg": "Sending notification 'textDocument/didOpen'.", + "msgKind": "send-notification", + "msgType": "textDocument/didOpen", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less", + "languageId": "less", + "version": 1, + "text": "" + } + } + }, + { + "time": "12:42:33 PM", + "msg": "Sending request 'textDocument/documentColor - (12)'.", + "msgKind": "send-request", + "msgType": "textDocument/documentColor", + "msgId": "12", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less" + } + } + }, + { + "time": "12:42:33 PM", + "msg": "Sending request 'textDocument/documentSymbol - (13)'.", + "msgKind": "send-request", + "msgType": "textDocument/documentSymbol", + "msgId": "13", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less" + } + } + }, + { + "time": "12:42:33 PM", + "msg": "Received response 'textDocument/documentColor - (12)' in 25ms.", + "msgKind": "recv-response", + "msgType": "textDocument/documentColor", + "msgId": "12", + "msgLatency": "25ms", + "arg": [] + }, + { + "time": "12:42:33 PM", + "msg": "Received response 'textDocument/documentSymbol - (13)' in 7ms.", + "msgKind": "recv-response", + "msgType": "textDocument/documentSymbol", + "msgId": "13", + "msgLatency": "7ms", + "arg": [] + }, + { + "time": "12:42:33 PM", + "msg": "Sending request 'textDocument/foldingRange - (14)'.", + "msgKind": "send-request", + "msgType": "textDocument/foldingRange", + "msgId": "14", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less" + } + } + }, + { + "time": "12:42:33 PM", + "msg": "Received response 'textDocument/foldingRange - (14)' in 0ms.", + "msgKind": "recv-response", + "msgType": "textDocument/foldingRange", + "msgId": "14", + "msgLatency": "0ms", + "arg": [] + }, + { + "time": "12:42:34 PM", + "msg": "Received request 'workspace/configuration - (2)'.", + "msgKind": "recv-request", + "msgType": "workspace/configuration", + "msgId": "2", + "arg": { + "items": [ + { + "scopeUri": "file:///Users/octref/Code/css-test/test.less", + "section": "less" + } + ] + } + }, + { + "time": "12:42:34 PM", + "msg": "Sending response 'workspace/configuration - (2)'. Processing request took 4ms", + "msgKind": "send-response", + "msgType": "workspace/configuration", + "msgId": "2", + "msgLatency": "4ms", + "arg": [ + { + "validate": true, + "colorDecorators": { + "enable": true + }, + "lint": { + "compatibleVendorPrefixes": "ignore", + "vendorPrefix": "warning", + "duplicateProperties": "ignore", + "emptyRules": "warning", + "importStatement": "ignore", + "boxModel": "ignore", + "universalSelector": "ignore", + "zeroUnits": "ignore", + "fontFaceProperties": "warning", + "hexColorLength": "error", + "argumentsInColorFunction": "error", + "unknownProperties": "warning", + "ieHack": "ignore", + "unknownVendorSpecificProperties": "ignore", + "propertyIgnoredDueToDisplay": "warning", + "important": "ignore", + "float": "ignore", + "idSelector": "ignore" + } + } + ] + }, + { + "time": "12:42:34 PM", + "msg": "Received notification 'textDocument/publishDiagnostics'.", + "msgKind": "recv-notification", + "msgType": "textDocument/publishDiagnostics", + "arg": { + "uri": "file:///Users/octref/Code/css-test/test.less", + "diagnostics": [] + } + }, + { + "time": "12:42:34 PM", + "msg": "Sending notification 'textDocument/didChange'.", + "msgKind": "send-notification", + "msgType": "textDocument/didChange", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less", + "version": 2 + }, + "contentChanges": [ + { + "text": "." + } + ] + } + }, + { + "time": "12:42:34 PM", + "msg": "Sending request 'textDocument/completion - (15)'.", + "msgKind": "send-request", + "msgType": "textDocument/completion", + "msgId": "15", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less" + }, + "position": { + "line": 0, + "character": 1 + }, + "context": { + "triggerKind": 1 + } + } + }, + { + "time": "12:42:34 PM", + "msg": "Received response 'textDocument/completion - (15)' in 35ms.", + "msgKind": "recv-response", + "msgType": "textDocument/completion", + "msgId": "15", + "msgLatency": "35ms", + "arg": { + "isIncomplete": false, + "items": [ + { + "label": ":active", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":active" + }, + "documentation": + "Applies while an element is being activated by the user. For example, between the times the user presses the mouse button and releases it.", + "kind": 3, + "sortText": "d" + }, + { + "label": ":any-link", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":any-link" + }, + "documentation": + "Represents an element that acts as the source anchor of a hyperlink. Applies to both visited and unvisited links.\n(Safari 9)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":checked", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":checked" + }, + "documentation": + "Radio and checkbox elements can be toggled by the user. Some menu items are 'checked' when the user selects them. When such elements are toggled 'on' the :checked pseudo-class applies.\n(Edge, Firefox 1, Safari 3.13, Chrome, IE 9, Opera 9)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":corner-present", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":corner-present" + }, + "documentation": + "Non-standard. Indicates whether or not a scrollbar corner is present.\n(Safari 5, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":decrement", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":decrement" + }, + "documentation": + "Non-standard. Applies to buttons and track pieces. Indicates whether or not the button or track piece will decrement the view’s position when used.\n(Safari 5, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":default", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":default" + }, + "documentation": + "Applies to the one or more UI elements that are the default among a set of similar elements. Typically applies to context menu items, buttons, and select lists/menus.\n(Firefox 3, Safari 5, Chrome, Opera 10)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":disabled", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":disabled" + }, + "documentation": + "Represents user interface elements that are in a disabled state; such elements have a corresponding enabled state.\n(Edge, Firefox 1.5, Safari 3.1, Chrome, IE 9, Opera 9)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":double-button", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":double-button" + }, + "documentation": + "Non-standard. Applies to buttons and track pieces. Applies when both buttons are displayed together at the same end of the scrollbar.\n(Safari 5, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":empty", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":empty" + }, + "documentation": + "Represents an element that has no children at all.\n(Edge, Firefox 1.5, Safari 3.1, Chrome, IE 9, Opera 9)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":enabled", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":enabled" + }, + "documentation": + "Represents user interface elements that are in an enabled state; such elements have a corresponding disabled state.\n(Edge, Firefox 1.5, Safari 3.1, Chrome, IE 9, Opera 9)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":end", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":end" + }, + "documentation": + "Non-standard. Applies to buttons and track pieces. Indicates whether the object is placed after the thumb.\n(Safari 5, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":first", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":first" + }, + "documentation": + "When printing double-sided documents, the page boxes on left and right pages may be different. This can be expressed through CSS pseudo-classes defined in the page context.", + "kind": 3, + "sortText": "d" + }, + { + "label": ":first-child", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":first-child" + }, + "documentation": + "Same as :nth-child(1). Represents an element that is the first child of some other element.\n(Edge, Firefox 3, Safari 3.1, Chrome, IE 7, Opera 9.5)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":first-of-type", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":first-of-type" + }, + "documentation": + "Same as :nth-of-type(1). Represents an element that is the first sibling of its type in the list of children of its parent element.\n(Edge, Firefox 3.5, Safari 3.2, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":focus", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":focus" + }, + "documentation": + "Applies while an element has the focus (accepts keyboard or mouse events, or other forms of input).", + "kind": 3, + "sortText": "d" + }, + { + "label": ":fullscreen", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":fullscreen" + }, + "documentation": "Matches any element that has its fullscreen flag set.\n(Edge)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":future", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":future" + }, + "documentation": + "Represents any element that is defined to occur entirely after a :current element.\n(Safari 6, Chrome, Opera 16)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":horizontal", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":horizontal" + }, + "documentation": + "Non-standard. Applies to any scrollbar pieces that have a horizontal orientation.\n(Safari 5, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":host", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":host" + }, + "documentation": + "When evaluated in the context of a shadow tree, matches the shadow tree’s host element.\n(Chrome 35, Opera 22)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":host()", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":host($1)" + }, + "documentation": + "When evaluated in the context of a shadow tree, it matches the shadow tree’s host element if the host element, in its normal context, matches the selector argument.\n(Chrome 35, Opera 22)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": ":host-context()", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":host-context($1)" + }, + "documentation": + "Tests whether there is an ancestor, outside the shadow tree, which matches a particular selector.\n(Chrome 35, Opera 22)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": ":hover", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":hover" + }, + "documentation": + "Applies while the user designates an element with a pointing device, but does not necessarily activate it. For example, a visual user agent could apply this pseudo-class when the cursor (mouse pointer) hovers over a box generated by the element.", + "kind": 3, + "sortText": "d" + }, + { + "label": ":increment", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":increment" + }, + "documentation": + "Non-standard. Applies to buttons and track pieces. Indicates whether or not the button or track piece will increment the view’s position when used.\n(Safari 5, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":indeterminate", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":indeterminate" + }, + "documentation": + "Applies to UI elements whose value is in an indeterminate state.\n(Edge, Firefox 3.6, Safari 3, Chrome, IE 9, Opera 10.6)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":in-range", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":in-range" + }, + "documentation": + "Used in conjunction with the min and max attributes, whether on a range input, a number field, or any other types that accept those attributes.\n(Edge 13, Firefox 10, Safari 5.1, Chrome, Opera 9.6)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":invalid", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":invalid" + }, + "documentation": + "An element is :valid or :invalid when it is, respectively, valid or invalid with respect to data validity semantics defined by a different specification.\n(Edge, Firefox 4, Safari 5, Chrome, IE 10, Opera 10)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":lang()", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":lang($1)" + }, + "documentation": + "Represents an element that is in language specified.\n(Edge, Firefox 1, Safari 3, Chrome, IE 8, Opera 8)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": ":last-child", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":last-child" + }, + "documentation": + "Same as :nth-last-child(1). Represents an element that is the last child of some other element.\n(Edge, Firefox 1, Safari 3.1, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":last-of-type", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":last-of-type" + }, + "documentation": + "Same as :nth-last-of-type(1). Represents an element that is the last sibling of its type in the list of children of its parent element.\n(Edge, Firefox 3.5, Safari 3.1, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":left", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":left" + }, + "documentation": + "When printing double-sided documents, the page boxes on left and right pages may be different. This can be expressed through CSS pseudo-classes defined in the page context.", + "kind": 3, + "sortText": "d" + }, + { + "label": ":link", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":link" + }, + "documentation": "Applies to links that have not yet been visited.", + "kind": 3, + "sortText": "d" + }, + { + "label": ":matches()", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":matches($1)" + }, + "documentation": + "Takes a selector list as its argument. It represents an element that is represented by its argument.\n(Safari 9)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": ":-moz-any()", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-moz-any($1)" + }, + "documentation": + "Represents an element that is represented by the selector list passed as its argument. Standardized as :matches().\n(Firefox 4)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "x" + }, + { + "label": ":-moz-any-link", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-moz-any-link" + }, + "documentation": + "Represents an element that acts as the source anchor of a hyperlink. Applies to both visited and unvisited links.\n(Firefox 1)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-broken", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-moz-broken" + }, + "documentation": + "Non-standard. Matches elements representing broken images.\n(Firefox 3)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-drag-over", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-moz-drag-over" + }, + "documentation": + "Non-standard. Matches elements when a drag-over event applies to it.\n(Firefox 1)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-first-node", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-moz-first-node" + }, + "documentation": + "Non-standard. Represents an element that is the first child node of some other element.\n(Firefox 1)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-focusring", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-moz-focusring" + }, + "documentation": + "Non-standard. Matches an element that has focus and focus ring drawing is enabled in the browser.\n(Firefox 4)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-full-screen", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-moz-full-screen" + }, + "documentation": + "Matches any element that has its fullscreen flag set. Standardized as :fullscreen.\n(Firefox 9)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-last-node", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-moz-last-node" + }, + "documentation": + "Non-standard. Represents an element that is the last child node of some other element.\n(Firefox 1)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-loading", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-moz-loading" + }, + "documentation": + "Non-standard. Matches elements, such as images, that haven’t started loading yet.\n(Firefox 3)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-only-whitespace", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-moz-only-whitespace" + }, + "documentation": + "The same as :empty, except that it additionally matches elements that only contain code points affected by whitespace processing. Standardized as :blank.\n(Firefox 1.5)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-placeholder", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-moz-placeholder" + }, + "documentation": + "Deprecated. Represents placeholder text in an input field. Use ::-moz-placeholder for Firefox 19+.\n(Firefox 4)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-submit-invalid", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-moz-submit-invalid" + }, + "documentation": + "Non-standard. Represents any submit button when the contents of the associated form are not valid.\n(Firefox 4)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-suppressed", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-moz-suppressed" + }, + "documentation": + "Non-standard. Matches elements representing images that have been blocked from loading.\n(Firefox 3)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-ui-invalid", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-moz-ui-invalid" + }, + "documentation": + "Non-standard. Represents any validated form element whose value isn't valid \n(Firefox 4)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-ui-valid", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-moz-ui-valid" + }, + "documentation": + "Non-standard. Represents any validated form element whose value is valid \n(Firefox 4)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-user-disabled", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-moz-user-disabled" + }, + "documentation": + "Non-standard. Matches elements representing images that have been disabled due to the user’s preferences.\n(Firefox 3)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-window-inactive", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-moz-window-inactive" + }, + "documentation": "Non-standard. Matches elements in an inactive window.\n(Firefox 4)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-ms-fullscreen", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-ms-fullscreen" + }, + "documentation": "Matches any element that has its fullscreen flag set.\n(IE 11)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-ms-input-placeholder", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-ms-input-placeholder" + }, + "documentation": + "Represents placeholder text in an input field. Note: for Edge use the pseudo-element ::-ms-input-placeholder. Standardized as ::placeholder.\n(IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-ms-keyboard-active", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-ms-keyboard-active" + }, + "documentation": + "Windows Store apps only. Applies one or more styles to an element when it has focus and the user presses the space bar.\n(IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-ms-lang()", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-ms-lang($1)" + }, + "documentation": + "Represents an element that is in the language specified. Accepts a comma seperated list of language tokens.\n(Edge, IE 10)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "x" + }, + { + "label": ":no-button", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":no-button" + }, + "documentation": + "Non-standard. Applies to track pieces. Applies when there is no button at that end of the track.\n(Safari 5, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":not()", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":not($1)" + }, + "documentation": + "The negation pseudo-class, :not(X), is a functional notation taking a simple selector (excluding the negation pseudo-class itself) as an argument. It represents an element that is not represented by its argument.\n(Edge, Firefox 1, Safari 2, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": ":nth-child()", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":nth-child($1)" + }, + "documentation": + "Represents an element that has an+b-1 siblings before it in the document tree, for any positive integer or zero value of n, and has a parent element.\n(Edge, Firefox 3.5, Safari 3.1, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": ":nth-last-child()", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":nth-last-child($1)" + }, + "documentation": + "Represents an element that has an+b-1 siblings after it in the document tree, for any positive integer or zero value of n, and has a parent element.\n(Edge, Firefox 3.5, Safari 3.1, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": ":nth-last-of-type()", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":nth-last-of-type($1)" + }, + "documentation": + "Represents an element that has an+b-1 siblings with the same expanded element name after it in the document tree, for any zero or positive integer value of n, and has a parent element.\n(Edge, Firefox 3.5, Safari 3.1, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": ":nth-of-type()", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":nth-of-type($1)" + }, + "documentation": + "Represents an element that has an+b-1 siblings with the same expanded element name before it in the document tree, for any zero or positive integer value of n, and has a parent element.\n(Edge, Firefox 3.5, Safari 3.1, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": ":only-child", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":only-child" + }, + "documentation": + "Represents an element that has a parent element and whose parent element has no other element children. Same as :first-child:last-child or :nth-child(1):nth-last-child(1), but with a lower specificity.\n(Edge, Firefox 1.5, Safari 3.1, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":only-of-type", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":only-of-type" + }, + "documentation": + "Matches every element that is the only child of its type, of its parent. Same as :first-of-type:last-of-type or :nth-of-type(1):nth-last-of-type(1), but with a lower specificity.\n(Edge, Firefox 3.5, Safari 3.2, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":optional", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":optional" + }, + "documentation": + "A form element is :required or :optional if a value for it is, respectively, required or optional before the form it belongs to is submitted. Elements that are not form elements are neither required nor optional.\n(Edge, Firefox 4, Safari 5, Chrome, IE 10, Opera 10)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":out-of-range", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":out-of-range" + }, + "documentation": + "Used in conjunction with the min and max attributes, whether on a range input, a number field, or any other types that accept those attributes.\n(Edge 13, Firefox 10, Safari 5.1, Chrome, Opera 9.6)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":past", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":past" + }, + "documentation": + "Represents any element that is defined to occur entirely prior to a :current element.\n(Safari 6, Chrome, Opera 16)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":read-only", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":read-only" + }, + "documentation": + "An element whose contents are not user-alterable is :read-only. However, elements whose contents are user-alterable (such as text input fields) are considered to be in a :read-write state. In typical documents, most elements are :read-only.\n(Edge 13, Firefox 10, Safari 4, Chrome, Opera 9)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":read-write", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":read-write" + }, + "documentation": + "An element whose contents are not user-alterable is :read-only. However, elements whose contents are user-alterable (such as text input fields) are considered to be in a :read-write state. In typical documents, most elements are :read-only.\n(Edge 13, Firefox 10, Safari 4, Chrome, Opera 9)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":required", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":required" + }, + "documentation": + "A form element is :required or :optional if a value for it is, respectively, required or optional before the form it belongs to is submitted. Elements that are not form elements are neither required nor optional.\n(Edge, Firefox 4, Safari 5, Chrome, IE 10, Opera 10)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":right", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":right" + }, + "documentation": + "When printing double-sided documents, the page boxes on left and right pages may be different. This can be expressed through CSS pseudo-classes defined in the page context.", + "kind": 3, + "sortText": "d" + }, + { + "label": ":root", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":root" + }, + "documentation": + "Represents an element that is the root of the document. In HTML 4, this is always the HTML element.\n(Edge, Firefox 1, Safari 1, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":scope", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":scope" + }, + "documentation": + "Represents any element that is in the contextual reference element set.\n(Firefox 32, Safari 6)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":single-button", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":single-button" + }, + "documentation": + "Non-standard. Applies to buttons and track pieces. Applies when both buttons are displayed separately at either end of the scrollbar.\n(Safari 5, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":start", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":start" + }, + "documentation": + "Non-standard. Applies to buttons and track pieces. Indicates whether the object is placed before the thumb.\n(Safari 5, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":target", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":target" + }, + "documentation": + "Some URIs refer to a location within a resource. This kind of URI ends with a 'number sign' (#) followed by an anchor identifier (called the fragment identifier).\n(Edge, Firefox 1, Safari 1, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":valid", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":valid" + }, + "documentation": + "An element is :valid or :invalid when it is, respectively, valid or invalid with respect to data validity semantics defined by a different specification.\n(Edge, Firefox 4, Safari 5, Chrome, IE 10, Opera 10)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":vertical", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":vertical" + }, + "documentation": + "Non-standard. Applies to any scrollbar pieces that have a vertical orientation.\n(Safari 5, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":visited", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":visited" + }, + "documentation": "Applies once the link has been visited by the user.", + "kind": 3, + "sortText": "d" + }, + { + "label": ":-webkit-any()", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-webkit-any($1)" + }, + "documentation": + "Represents an element that is represented by the selector list passed as its argument. Standardized as :matches().\n(Safari 5, Chrome)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "x" + }, + { + "label": ":-webkit-full-screen", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":-webkit-full-screen" + }, + "documentation": + "Matches any element that has its fullscreen flag set. Standardized as :fullscreen.\n(Safari 6, Chrome)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":window-inactive", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": ":window-inactive" + }, + "documentation": + "Non-standard. Applies to all scrollbar pieces. Indicates whether or not the window containing the scrollbar is currently active.\n(Safari 3, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": "::after", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::after" + }, + "documentation": + "Represents a styleable child pseudo-element immediately after the originating element’s actual content.\n(Edge, Firefox 1.5, Safari 4, Chrome, IE 9, Opera 9)", + "kind": 3, + "sortText": "d" + }, + { + "label": "::backdrop", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::backdrop" + }, + "documentation": + "Used to create a backdrop that hides the underlying document for an element in a top layer (such as an element that is displayed fullscreen).\n(Edge)", + "kind": 3, + "sortText": "d" + }, + { + "label": "::before", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::before" + }, + "documentation": + "Represents a styleable child pseudo-element immediately before the originating element’s actual content.\n(Edge, Firefox 1.5, Safari 4, Chrome, IE 9, Opera 9)", + "kind": 3, + "sortText": "d" + }, + { + "label": "::content", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::content" + }, + "documentation": + "Deprecated. Matches the distribution list itself, on elements that have one. Use ::slotted for forward compatibility.\n(Chrome 35, Opera 22)", + "kind": 3, + "sortText": "d" + }, + { + "label": "::cue", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::cue" + }, + "documentation": null, + "kind": 3, + "sortText": "d" + }, + { + "label": "::cue()", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::cue($1)" + }, + "documentation": null, + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": "::cue-region", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::cue-region" + }, + "documentation": null, + "kind": 3, + "sortText": "d" + }, + { + "label": "::cue-region()", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::cue-region($1)" + }, + "documentation": null, + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": "::first-letter", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::first-letter" + }, + "documentation": + "Represents the first letter of an element, if it is not preceded by any other content (such as images or inline tables) on its line.\n(Edge, Firefox 1.5, Safari 1, Chrome, IE 9, Opera 7)", + "kind": 3, + "sortText": "d" + }, + { + "label": "::first-line", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::first-line" + }, + "documentation": + "Describes the contents of the first formatted line of its originating element.\n(Edge, Firefox 1.5, Safari 1, Chrome, IE 9, Opera 7)", + "kind": 3, + "sortText": "d" + }, + { + "label": "::-moz-focus-inner", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-moz-focus-inner" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-moz-focus-outer", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-moz-focus-outer" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-moz-list-bullet", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-moz-list-bullet" + }, + "documentation": + "Used to style the bullet of a list element. Similar to the standardized ::marker.\n(Firefox 1)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-moz-list-number", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-moz-list-number" + }, + "documentation": + "Used to style the numbers of a list element. Similar to the standardized ::marker.\n(Firefox 1)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-moz-placeholder", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-moz-placeholder" + }, + "documentation": "Represents placeholder text in an input field\n(Firefox 19)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-moz-progress-bar", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-moz-progress-bar" + }, + "documentation": "Represents the bar portion of a progress bar.\n(Firefox 9)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-moz-selection", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-moz-selection" + }, + "documentation": + "Represents the portion of a document that has been highlighted by the user.\n(Firefox 1)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-backdrop", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-ms-backdrop" + }, + "documentation": + "Used to create a backdrop that hides the underlying document for an element in a top layer (such as an element that is displayed fullscreen).\n(IE 11)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-browse", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-ms-browse" + }, + "documentation": + "Represents the browse button of an input type=file control.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-check", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-ms-check" + }, + "documentation": + "Represents the check of a checkbox or radio button input control.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-clear", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-ms-clear" + }, + "documentation": "Represents the clear button of a text input control\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-expand", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-ms-expand" + }, + "documentation": "Represents the drop-down button of a select control.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-fill", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-ms-fill" + }, + "documentation": "Represents the bar portion of a progress bar.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-fill-lower", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-ms-fill-lower" + }, + "documentation": + "Represents the portion of the slider track from its smallest value up to the value currently selected by the thumb. In a left-to-right layout, this is the portion of the slider track to the left of the thumb.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-fill-upper", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-ms-fill-upper" + }, + "documentation": + "Represents the portion of the slider track from the value currently selected by the thumb up to the slider's largest value. In a left-to-right layout, this is the portion of the slider track to the right of the thumb.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-reveal", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-ms-reveal" + }, + "documentation": + "Represents the password reveal button of an input type=password control.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-thumb", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-ms-thumb" + }, + "documentation": + "Represents the portion of range input control (also known as a slider control) that the user drags.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-ticks-after", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-ms-ticks-after" + }, + "documentation": + "Represents the tick marks of a slider that begin just after the thumb and continue up to the slider's largest value. In a left-to-right layout, these are the ticks to the right of the thumb.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-ticks-before", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-ms-ticks-before" + }, + "documentation": + "Represents the tick marks of a slider that represent its smallest values up to the value currently selected by the thumb. In a left-to-right layout, these are the ticks to the left of the thumb.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-tooltip", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-ms-tooltip" + }, + "documentation": "Represents the tooltip of a slider (input type=range).\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-track", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-ms-track" + }, + "documentation": "Represents the track of a slider.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-value", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-ms-value" + }, + "documentation": + "Represents the content of a text or password input control, or a select control.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::selection", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::selection" + }, + "documentation": + "Represents the portion of a document that has been highlighted by the user.\n(Edge, Safari 1.1, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "sortText": "d" + }, + { + "label": "::shadow", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::shadow" + }, + "documentation": + "Matches the shadow root if an element has a shadow tree.\n(Chrome 35, Opera 22)", + "kind": 3, + "sortText": "d" + }, + { + "label": "::-webkit-file-upload-button", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-file-upload-button" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-inner-spin-button", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-inner-spin-button" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-input-placeholder", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-input-placeholder" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-keygen-select", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-keygen-select" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-meter-bar", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-meter-bar" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-meter-even-less-good-value", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-meter-even-less-good-value" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-meter-optimum-value", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-meter-optimum-value" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-meter-suboptimal-value", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-meter-suboptimal-value" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-outer-spin-button", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-outer-spin-button" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-progress-bar", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-progress-bar" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-progress-inner-element", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-progress-inner-element" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-progress-value", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-progress-value" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-resizer", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-resizer" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-scrollbar", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-scrollbar" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-scrollbar-button", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-scrollbar-button" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-scrollbar-corner", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-scrollbar-corner" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-scrollbar-thumb", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-scrollbar-thumb" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-scrollbar-track", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-scrollbar-track" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-scrollbar-track-piece", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-scrollbar-track-piece" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-search-cancel-button", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-search-cancel-button" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-search-decoration", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-search-decoration" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-search-results-button", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-search-results-button" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-search-results-decoration", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-search-results-decoration" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-slider-runnable-track", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-slider-runnable-track" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-slider-thumb", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-slider-thumb" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-textfield-decoration-container", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-textfield-decoration-container" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-validation-bubble", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-validation-bubble" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-validation-bubble-arrow", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-validation-bubble-arrow" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-validation-bubble-arrow-clipper", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-validation-bubble-arrow-clipper" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-validation-bubble-heading", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-validation-bubble-heading" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-validation-bubble-message", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-validation-bubble-message" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-validation-bubble-text-block", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "::-webkit-validation-bubble-text-block" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "a", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "a" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "abbr", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "abbr" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "address", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "address" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "area", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "area" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "article", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "article" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "aside", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "aside" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "audio", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "audio" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "b", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "b" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "base", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "base" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "bdi", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "bdi" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "bdo", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "bdo" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "blockquote", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "blockquote" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "body", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "body" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "br", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "br" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "button", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "button" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "canvas", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "canvas" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "caption", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "caption" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "cite", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "cite" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "code", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "code" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "col", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "col" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "colgroup", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "colgroup" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "data", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "data" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "datalist", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "datalist" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "dd", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "dd" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "del", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "del" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "details", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "details" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "dfn", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "dfn" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "dialog", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "dialog" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "div", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "div" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "dl", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "dl" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "dt", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "dt" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "em", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "em" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "embed", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "embed" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "fieldset", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "fieldset" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "figcaption", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "figcaption" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "figure", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "figure" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "footer", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "footer" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "form", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "form" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "h1", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "h1" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "h2", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "h2" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "h3", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "h3" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "h4", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "h4" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "h5", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "h5" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "h6", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "h6" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "head", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "head" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "header", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "header" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "hgroup", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "hgroup" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "hr", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "hr" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "html", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "html" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "i", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "i" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "iframe", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "iframe" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "img", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "img" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "input", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "input" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "ins", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "ins" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "kbd", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "kbd" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "keygen", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "keygen" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "label", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "label" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "legend", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "legend" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "li", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "li" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "link", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "link" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "main", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "main" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "map", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "map" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "mark", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "mark" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "menu", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "menu" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "menuitem", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "menuitem" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "meta", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "meta" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "meter", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "meter" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "nav", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "nav" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "noscript", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "noscript" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "object", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "object" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "ol", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "ol" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "optgroup", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "optgroup" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "option", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "option" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "output", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "output" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "p", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "p" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "param", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "param" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "picture", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "picture" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "pre", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "pre" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "progress", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "progress" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "q", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "q" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "rb", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "rb" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "rp", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "rp" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "rt", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "rt" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "rtc", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "rtc" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "ruby", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "ruby" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "s", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "s" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "samp", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "samp" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "script", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "script" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "section", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "section" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "select", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "select" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "small", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "small" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "source", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "source" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "span", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "span" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "strong", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "strong" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "style", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "style" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "sub", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "sub" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "summary", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "summary" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "sup", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "sup" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "table", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "table" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "tbody", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "tbody" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "td", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "td" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "template", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "template" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "textarea", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "textarea" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "tfoot", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "tfoot" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "th", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "th" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "thead", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "thead" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "time", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "time" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "title", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "title" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "tr", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "tr" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "track", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "track" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "u", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "u" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "ul", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "ul" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "let", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "let" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "video", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "video" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "wbr", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "wbr" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "circle", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "circle" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "clipPath", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "clipPath" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "cursor", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "cursor" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "defs", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "defs" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "desc", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "desc" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "ellipse", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "ellipse" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feBlend", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feBlend" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feColorMatrix", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feColorMatrix" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feComponentTransfer", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feComponentTransfer" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feComposite", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feComposite" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feConvolveMatrix", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feConvolveMatrix" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feDiffuseLighting", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feDiffuseLighting" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feDisplacementMap", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feDisplacementMap" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feDistantLight", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feDistantLight" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feDropShadow", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feDropShadow" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feFlood", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feFlood" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feFuncA", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feFuncA" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feFuncB", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feFuncB" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feFuncG", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feFuncG" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feFuncR", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feFuncR" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feGaussianBlur", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feGaussianBlur" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feImage", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feImage" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feMerge", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feMerge" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feMergeNode", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feMergeNode" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feMorphology", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feMorphology" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feOffset", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feOffset" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "fePointLight", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "fePointLight" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feSpecularLighting", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feSpecularLighting" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feSpotLight", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feSpotLight" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feTile", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feTile" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "feTurbulence", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "feTurbulence" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "filter", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "filter" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "foreignObject", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "foreignObject" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "g", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "g" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "hatch", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "hatch" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "hatchpath", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "hatchpath" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "image", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "image" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "line", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "line" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "linearGradient", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "linearGradient" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "marker", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "marker" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "mask", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "mask" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "mesh", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "mesh" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "meshpatch", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "meshpatch" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "meshrow", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "meshrow" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "metadata", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "metadata" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "mpath", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "mpath" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "path", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "path" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "pattern", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "pattern" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "polygon", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "polygon" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "polyline", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "polyline" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "radialGradient", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "radialGradient" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "rect", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "rect" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "set", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "set" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "solidcolor", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "solidcolor" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "stop", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "stop" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "svg", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "svg" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "switch", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "switch" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "symbol", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "symbol" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "text", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "text" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "textPath", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "textPath" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "tspan", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "tspan" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "use", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "use" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "view", + "textEdit": { + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "newText": "view" + }, + "kind": 14, + "sortText": "d" + } + ] + } + }, + { + "time": "12:42:34 PM", + "msg": "Sending request 'textDocument/foldingRange - (16)'.", + "msgKind": "send-request", + "msgType": "textDocument/foldingRange", + "msgId": "16", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less" + } + } + }, + { + "time": "12:42:34 PM", + "msg": "Received response 'textDocument/foldingRange - (16)' in 1ms.", + "msgKind": "recv-response", + "msgType": "textDocument/foldingRange", + "msgId": "16", + "msgLatency": "1ms", + "arg": [] + }, + { + "time": "12:42:34 PM", + "msg": "Sending request 'textDocument/codeAction - (17)'.", + "msgKind": "send-request", + "msgType": "textDocument/codeAction", + "msgId": "17", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less" + }, + "range": { + "start": { + "line": 0, + "character": 1 + }, + "end": { + "line": 0, + "character": 1 + } + }, + "context": { + "diagnostics": [] + } + } + }, + { + "time": "12:42:34 PM", + "msg": "Received response 'textDocument/codeAction - (17)' in 1ms.", + "msgKind": "recv-response", + "msgType": "textDocument/codeAction", + "msgId": "17", + "msgLatency": "1ms", + "arg": [] + }, + { + "time": "12:42:34 PM", + "msg": "Sending notification 'textDocument/didSave'.", + "msgKind": "send-notification", + "msgType": "textDocument/didSave", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less", + "version": 2 + } + } + }, + { + "time": "12:42:34 PM", + "msg": "Sending request 'textDocument/documentSymbol - (18)'.", + "msgKind": "send-request", + "msgType": "textDocument/documentSymbol", + "msgId": "18", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less" + } + } + }, + { + "time": "12:42:34 PM", + "msg": "Received response 'textDocument/documentSymbol - (18)' in 1ms.", + "msgKind": "recv-response", + "msgType": "textDocument/documentSymbol", + "msgId": "18", + "msgLatency": "1ms", + "arg": [ + { + "name": ".", + "kind": 5, + "location": { + "uri": "file:///Users/octref/Code/css-test/test.less", + "range": { + "start": { + "line": 0, + "character": 0 + }, + "end": { + "line": 0, + "character": 1 + } + } + } + } + ] + }, + { + "time": "12:42:34 PM", + "msg": "Received notification 'textDocument/publishDiagnostics'.", + "msgKind": "recv-notification", + "msgType": "textDocument/publishDiagnostics", + "arg": { + "uri": "file:///Users/octref/Code/css-test/test.less", + "diagnostics": [ + { + "code": "css-identifierexpected", + "source": "less", + "message": "identifier expected", + "severity": 1, + "range": { + "start": { + "line": 0, + "character": 1 + }, + "end": { + "line": 0, + "character": 1 + } + } + } + ] + } + }, + { + "time": "12:42:34 PM", + "msg": "Sending notification 'textDocument/didChange'.", + "msgKind": "send-notification", + "msgType": "textDocument/didChange", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less", + "version": 3 + }, + "contentChanges": [ + { + "text": ".f" + } + ] + } + }, + { + "time": "12:42:34 PM", + "msg": "Sending request 'textDocument/completion - (19)'.", + "msgKind": "send-request", + "msgType": "textDocument/completion", + "msgId": "19", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less" + }, + "position": { + "line": 0, + "character": 2 + }, + "context": { + "triggerKind": 1 + } + } + }, + { + "time": "12:42:34 PM", + "msg": "Received response 'textDocument/completion - (19)' in 2ms.", + "msgKind": "recv-response", + "msgType": "textDocument/completion", + "msgId": "19", + "msgLatency": "2ms", + "arg": { + "isIncomplete": false, + "items": [] + } + }, + { + "time": "12:42:34 PM", + "msg": "Sending notification 'textDocument/didChange'.", + "msgKind": "send-notification", + "msgType": "textDocument/didChange", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less", + "version": 4 + }, + "contentChanges": [ + { + "text": ".fo" + } + ] + } + }, + { + "time": "12:42:34 PM", + "msg": "Sending request 'textDocument/completion - (20)'.", + "msgKind": "send-request", + "msgType": "textDocument/completion", + "msgId": "20", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less" + }, + "position": { + "line": 0, + "character": 3 + }, + "context": { + "triggerKind": 1 + } + } + }, + { + "time": "12:42:34 PM", + "msg": "Received response 'textDocument/completion - (20)' in 1ms.", + "msgKind": "recv-response", + "msgType": "textDocument/completion", + "msgId": "20", + "msgLatency": "1ms", + "arg": { + "isIncomplete": false, + "items": [] + } + }, + { + "time": "12:42:35 PM", + "msg": "Sending request 'textDocument/codeAction - (21)'.", + "msgKind": "send-request", + "msgType": "textDocument/codeAction", + "msgId": "21", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less" + }, + "range": { + "start": { + "line": 0, + "character": 3 + }, + "end": { + "line": 0, + "character": 3 + } + }, + "context": { + "diagnostics": [] + } + } + }, + { + "time": "12:42:35 PM", + "msg": "Received response 'textDocument/codeAction - (21)' in 1ms.", + "msgKind": "recv-response", + "msgType": "textDocument/codeAction", + "msgId": "21", + "msgLatency": "1ms", + "arg": [] + }, + { + "time": "12:42:35 PM", + "msg": "Sending notification 'textDocument/didChange'.", + "msgKind": "send-notification", + "msgType": "textDocument/didChange", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less", + "version": 5 + }, + "contentChanges": [ + { + "text": ".foo" + } + ] + } + }, + { + "time": "12:42:35 PM", + "msg": "Sending request 'textDocument/completion - (22)'.", + "msgKind": "send-request", + "msgType": "textDocument/completion", + "msgId": "22", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less" + }, + "position": { + "line": 0, + "character": 4 + }, + "context": { + "triggerKind": 1 + } + } + }, + { + "time": "12:42:35 PM", + "msg": "Received response 'textDocument/completion - (22)' in 2ms.", + "msgKind": "recv-response", + "msgType": "textDocument/completion", + "msgId": "22", + "msgLatency": "2ms", + "arg": { + "isIncomplete": false, + "items": [] + } + }, + { + "time": "12:42:35 PM", + "msg": "Sending notification 'textDocument/didChange'.", + "msgKind": "send-notification", + "msgType": "textDocument/didChange", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less", + "version": 6 + }, + "contentChanges": [ + { + "text": ".foo " + } + ] + } + }, + { + "time": "12:42:35 PM", + "msg": "Sending request 'textDocument/documentColor - (23)'.", + "msgKind": "send-request", + "msgType": "textDocument/documentColor", + "msgId": "23", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less" + } + } + }, + { + "time": "12:42:35 PM", + "msg": "Received response 'textDocument/documentColor - (23)' in 2ms.", + "msgKind": "recv-response", + "msgType": "textDocument/documentColor", + "msgId": "23", + "msgLatency": "2ms", + "arg": [] + }, + { + "time": "12:42:35 PM", + "msg": "Sending notification 'textDocument/didChange'.", + "msgKind": "send-notification", + "msgType": "textDocument/didChange", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less", + "version": 8 + }, + "contentChanges": [ + { + "text": ".foo {\n \n}" + } + ] + } + }, + { + "time": "12:42:35 PM", + "msg": "Sending request 'textDocument/foldingRange - (24)'.", + "msgKind": "send-request", + "msgType": "textDocument/foldingRange", + "msgId": "24", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less" + } + } + }, + { + "time": "12:42:35 PM", + "msg": "Received response 'textDocument/foldingRange - (24)' in 1ms.", + "msgKind": "recv-response", + "msgType": "textDocument/foldingRange", + "msgId": "24", + "msgLatency": "1ms", + "arg": [ + { + "startLine": 0, + "endLine": 1 + } + ] + }, + { + "time": "12:42:35 PM", + "msg": "Sending notification 'textDocument/didChange'.", + "msgKind": "send-notification", + "msgType": "textDocument/didChange", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less", + "version": 9 + }, + "contentChanges": [ + { + "text": ".foo {\n f\n}" + } + ] + } + }, + { + "time": "12:42:35 PM", + "msg": "Sending request 'textDocument/completion - (25)'.", + "msgKind": "send-request", + "msgType": "textDocument/completion", + "msgId": "25", + "arg": { + "textDocument": { + "uri": "file:///Users/octref/Code/css-test/test.less" + }, + "position": { + "line": 1, + "character": 3 + }, + "context": { + "triggerKind": 1 + } + } + }, + { + "time": "12:42:35 PM", + "msg": "Received response 'textDocument/completion - (25)' in 51ms.", + "msgKind": "recv-response", + "msgType": "textDocument/completion", + "msgId": "25", + "msgLatency": "51ms", + "arg": { + "isIncomplete": false, + "items": [ + { + "label": ":active", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":active" + }, + "documentation": + "Applies while an element is being activated by the user. For example, between the times the user presses the mouse button and releases it.", + "kind": 3, + "sortText": "d" + }, + { + "label": ":any-link", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":any-link" + }, + "documentation": + "Represents an element that acts as the source anchor of a hyperlink. Applies to both visited and unvisited links.\n(Safari 9)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":checked", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":checked" + }, + "documentation": + "Radio and checkbox elements can be toggled by the user. Some menu items are 'checked' when the user selects them. When such elements are toggled 'on' the :checked pseudo-class applies.\n(Edge, Firefox 1, Safari 3.13, Chrome, IE 9, Opera 9)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":corner-present", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":corner-present" + }, + "documentation": + "Non-standard. Indicates whether or not a scrollbar corner is present.\n(Safari 5, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":decrement", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":decrement" + }, + "documentation": + "Non-standard. Applies to buttons and track pieces. Indicates whether or not the button or track piece will decrement the view’s position when used.\n(Safari 5, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":default", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":default" + }, + "documentation": + "Applies to the one or more UI elements that are the default among a set of similar elements. Typically applies to context menu items, buttons, and select lists/menus.\n(Firefox 3, Safari 5, Chrome, Opera 10)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":disabled", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":disabled" + }, + "documentation": + "Represents user interface elements that are in a disabled state; such elements have a corresponding enabled state.\n(Edge, Firefox 1.5, Safari 3.1, Chrome, IE 9, Opera 9)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":double-button", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":double-button" + }, + "documentation": + "Non-standard. Applies to buttons and track pieces. Applies when both buttons are displayed together at the same end of the scrollbar.\n(Safari 5, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":empty", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":empty" + }, + "documentation": + "Represents an element that has no children at all.\n(Edge, Firefox 1.5, Safari 3.1, Chrome, IE 9, Opera 9)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":enabled", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":enabled" + }, + "documentation": + "Represents user interface elements that are in an enabled state; such elements have a corresponding disabled state.\n(Edge, Firefox 1.5, Safari 3.1, Chrome, IE 9, Opera 9)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":end", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":end" + }, + "documentation": + "Non-standard. Applies to buttons and track pieces. Indicates whether the object is placed after the thumb.\n(Safari 5, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":first", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":first" + }, + "documentation": + "When printing double-sided documents, the page boxes on left and right pages may be different. This can be expressed through CSS pseudo-classes defined in the page context.", + "kind": 3, + "sortText": "d" + }, + { + "label": ":first-child", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":first-child" + }, + "documentation": + "Same as :nth-child(1). Represents an element that is the first child of some other element.\n(Edge, Firefox 3, Safari 3.1, Chrome, IE 7, Opera 9.5)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":first-of-type", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":first-of-type" + }, + "documentation": + "Same as :nth-of-type(1). Represents an element that is the first sibling of its type in the list of children of its parent element.\n(Edge, Firefox 3.5, Safari 3.2, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":focus", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":focus" + }, + "documentation": + "Applies while an element has the focus (accepts keyboard or mouse events, or other forms of input).", + "kind": 3, + "sortText": "d" + }, + { + "label": ":fullscreen", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":fullscreen" + }, + "documentation": "Matches any element that has its fullscreen flag set.\n(Edge)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":future", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":future" + }, + "documentation": + "Represents any element that is defined to occur entirely after a :current element.\n(Safari 6, Chrome, Opera 16)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":horizontal", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":horizontal" + }, + "documentation": + "Non-standard. Applies to any scrollbar pieces that have a horizontal orientation.\n(Safari 5, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":host", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":host" + }, + "documentation": + "When evaluated in the context of a shadow tree, matches the shadow tree’s host element.\n(Chrome 35, Opera 22)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":host()", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":host($1)" + }, + "documentation": + "When evaluated in the context of a shadow tree, it matches the shadow tree’s host element if the host element, in its normal context, matches the selector argument.\n(Chrome 35, Opera 22)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": ":host-context()", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":host-context($1)" + }, + "documentation": + "Tests whether there is an ancestor, outside the shadow tree, which matches a particular selector.\n(Chrome 35, Opera 22)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": ":hover", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":hover" + }, + "documentation": + "Applies while the user designates an element with a pointing device, but does not necessarily activate it. For example, a visual user agent could apply this pseudo-class when the cursor (mouse pointer) hovers over a box generated by the element.", + "kind": 3, + "sortText": "d" + }, + { + "label": ":increment", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":increment" + }, + "documentation": + "Non-standard. Applies to buttons and track pieces. Indicates whether or not the button or track piece will increment the view’s position when used.\n(Safari 5, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":indeterminate", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":indeterminate" + }, + "documentation": + "Applies to UI elements whose value is in an indeterminate state.\n(Edge, Firefox 3.6, Safari 3, Chrome, IE 9, Opera 10.6)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":in-range", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":in-range" + }, + "documentation": + "Used in conjunction with the min and max attributes, whether on a range input, a number field, or any other types that accept those attributes.\n(Edge 13, Firefox 10, Safari 5.1, Chrome, Opera 9.6)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":invalid", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":invalid" + }, + "documentation": + "An element is :valid or :invalid when it is, respectively, valid or invalid with respect to data validity semantics defined by a different specification.\n(Edge, Firefox 4, Safari 5, Chrome, IE 10, Opera 10)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":lang()", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":lang($1)" + }, + "documentation": + "Represents an element that is in language specified.\n(Edge, Firefox 1, Safari 3, Chrome, IE 8, Opera 8)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": ":last-child", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":last-child" + }, + "documentation": + "Same as :nth-last-child(1). Represents an element that is the last child of some other element.\n(Edge, Firefox 1, Safari 3.1, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":last-of-type", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":last-of-type" + }, + "documentation": + "Same as :nth-last-of-type(1). Represents an element that is the last sibling of its type in the list of children of its parent element.\n(Edge, Firefox 3.5, Safari 3.1, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":left", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":left" + }, + "documentation": + "When printing double-sided documents, the page boxes on left and right pages may be different. This can be expressed through CSS pseudo-classes defined in the page context.", + "kind": 3, + "sortText": "d" + }, + { + "label": ":link", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":link" + }, + "documentation": "Applies to links that have not yet been visited.", + "kind": 3, + "sortText": "d" + }, + { + "label": ":matches()", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":matches($1)" + }, + "documentation": + "Takes a selector list as its argument. It represents an element that is represented by its argument.\n(Safari 9)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": ":-moz-any()", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-moz-any($1)" + }, + "documentation": + "Represents an element that is represented by the selector list passed as its argument. Standardized as :matches().\n(Firefox 4)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "x" + }, + { + "label": ":-moz-any-link", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-moz-any-link" + }, + "documentation": + "Represents an element that acts as the source anchor of a hyperlink. Applies to both visited and unvisited links.\n(Firefox 1)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-broken", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-moz-broken" + }, + "documentation": + "Non-standard. Matches elements representing broken images.\n(Firefox 3)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-drag-over", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-moz-drag-over" + }, + "documentation": + "Non-standard. Matches elements when a drag-over event applies to it.\n(Firefox 1)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-first-node", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-moz-first-node" + }, + "documentation": + "Non-standard. Represents an element that is the first child node of some other element.\n(Firefox 1)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-focusring", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-moz-focusring" + }, + "documentation": + "Non-standard. Matches an element that has focus and focus ring drawing is enabled in the browser.\n(Firefox 4)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-full-screen", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-moz-full-screen" + }, + "documentation": + "Matches any element that has its fullscreen flag set. Standardized as :fullscreen.\n(Firefox 9)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-last-node", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-moz-last-node" + }, + "documentation": + "Non-standard. Represents an element that is the last child node of some other element.\n(Firefox 1)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-loading", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-moz-loading" + }, + "documentation": + "Non-standard. Matches elements, such as images, that haven’t started loading yet.\n(Firefox 3)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-only-whitespace", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-moz-only-whitespace" + }, + "documentation": + "The same as :empty, except that it additionally matches elements that only contain code points affected by whitespace processing. Standardized as :blank.\n(Firefox 1.5)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-placeholder", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-moz-placeholder" + }, + "documentation": + "Deprecated. Represents placeholder text in an input field. Use ::-moz-placeholder for Firefox 19+.\n(Firefox 4)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-submit-invalid", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-moz-submit-invalid" + }, + "documentation": + "Non-standard. Represents any submit button when the contents of the associated form are not valid.\n(Firefox 4)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-suppressed", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-moz-suppressed" + }, + "documentation": + "Non-standard. Matches elements representing images that have been blocked from loading.\n(Firefox 3)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-ui-invalid", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-moz-ui-invalid" + }, + "documentation": + "Non-standard. Represents any validated form element whose value isn't valid \n(Firefox 4)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-ui-valid", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-moz-ui-valid" + }, + "documentation": + "Non-standard. Represents any validated form element whose value is valid \n(Firefox 4)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-user-disabled", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-moz-user-disabled" + }, + "documentation": + "Non-standard. Matches elements representing images that have been disabled due to the user’s preferences.\n(Firefox 3)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-moz-window-inactive", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-moz-window-inactive" + }, + "documentation": "Non-standard. Matches elements in an inactive window.\n(Firefox 4)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-ms-fullscreen", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-ms-fullscreen" + }, + "documentation": "Matches any element that has its fullscreen flag set.\n(IE 11)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-ms-input-placeholder", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-ms-input-placeholder" + }, + "documentation": + "Represents placeholder text in an input field. Note: for Edge use the pseudo-element ::-ms-input-placeholder. Standardized as ::placeholder.\n(IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-ms-keyboard-active", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-ms-keyboard-active" + }, + "documentation": + "Windows Store apps only. Applies one or more styles to an element when it has focus and the user presses the space bar.\n(IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":-ms-lang()", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-ms-lang($1)" + }, + "documentation": + "Represents an element that is in the language specified. Accepts a comma seperated list of language tokens.\n(Edge, IE 10)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "x" + }, + { + "label": ":no-button", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":no-button" + }, + "documentation": + "Non-standard. Applies to track pieces. Applies when there is no button at that end of the track.\n(Safari 5, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":not()", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":not($1)" + }, + "documentation": + "The negation pseudo-class, :not(X), is a functional notation taking a simple selector (excluding the negation pseudo-class itself) as an argument. It represents an element that is not represented by its argument.\n(Edge, Firefox 1, Safari 2, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": ":nth-child()", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":nth-child($1)" + }, + "documentation": + "Represents an element that has an+b-1 siblings before it in the document tree, for any positive integer or zero value of n, and has a parent element.\n(Edge, Firefox 3.5, Safari 3.1, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": ":nth-last-child()", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":nth-last-child($1)" + }, + "documentation": + "Represents an element that has an+b-1 siblings after it in the document tree, for any positive integer or zero value of n, and has a parent element.\n(Edge, Firefox 3.5, Safari 3.1, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": ":nth-last-of-type()", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":nth-last-of-type($1)" + }, + "documentation": + "Represents an element that has an+b-1 siblings with the same expanded element name after it in the document tree, for any zero or positive integer value of n, and has a parent element.\n(Edge, Firefox 3.5, Safari 3.1, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": ":nth-of-type()", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":nth-of-type($1)" + }, + "documentation": + "Represents an element that has an+b-1 siblings with the same expanded element name before it in the document tree, for any zero or positive integer value of n, and has a parent element.\n(Edge, Firefox 3.5, Safari 3.1, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": ":only-child", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":only-child" + }, + "documentation": + "Represents an element that has a parent element and whose parent element has no other element children. Same as :first-child:last-child or :nth-child(1):nth-last-child(1), but with a lower specificity.\n(Edge, Firefox 1.5, Safari 3.1, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":only-of-type", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":only-of-type" + }, + "documentation": + "Matches every element that is the only child of its type, of its parent. Same as :first-of-type:last-of-type or :nth-of-type(1):nth-last-of-type(1), but with a lower specificity.\n(Edge, Firefox 3.5, Safari 3.2, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":optional", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":optional" + }, + "documentation": + "A form element is :required or :optional if a value for it is, respectively, required or optional before the form it belongs to is submitted. Elements that are not form elements are neither required nor optional.\n(Edge, Firefox 4, Safari 5, Chrome, IE 10, Opera 10)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":out-of-range", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":out-of-range" + }, + "documentation": + "Used in conjunction with the min and max attributes, whether on a range input, a number field, or any other types that accept those attributes.\n(Edge 13, Firefox 10, Safari 5.1, Chrome, Opera 9.6)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":past", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":past" + }, + "documentation": + "Represents any element that is defined to occur entirely prior to a :current element.\n(Safari 6, Chrome, Opera 16)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":read-only", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":read-only" + }, + "documentation": + "An element whose contents are not user-alterable is :read-only. However, elements whose contents are user-alterable (such as text input fields) are considered to be in a :read-write state. In typical documents, most elements are :read-only.\n(Edge 13, Firefox 10, Safari 4, Chrome, Opera 9)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":read-write", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":read-write" + }, + "documentation": + "An element whose contents are not user-alterable is :read-only. However, elements whose contents are user-alterable (such as text input fields) are considered to be in a :read-write state. In typical documents, most elements are :read-only.\n(Edge 13, Firefox 10, Safari 4, Chrome, Opera 9)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":required", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":required" + }, + "documentation": + "A form element is :required or :optional if a value for it is, respectively, required or optional before the form it belongs to is submitted. Elements that are not form elements are neither required nor optional.\n(Edge, Firefox 4, Safari 5, Chrome, IE 10, Opera 10)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":right", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":right" + }, + "documentation": + "When printing double-sided documents, the page boxes on left and right pages may be different. This can be expressed through CSS pseudo-classes defined in the page context.", + "kind": 3, + "sortText": "d" + }, + { + "label": ":root", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":root" + }, + "documentation": + "Represents an element that is the root of the document. In HTML 4, this is always the HTML element.\n(Edge, Firefox 1, Safari 1, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":scope", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":scope" + }, + "documentation": + "Represents any element that is in the contextual reference element set.\n(Firefox 32, Safari 6)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":single-button", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":single-button" + }, + "documentation": + "Non-standard. Applies to buttons and track pieces. Applies when both buttons are displayed separately at either end of the scrollbar.\n(Safari 5, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":start", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":start" + }, + "documentation": + "Non-standard. Applies to buttons and track pieces. Indicates whether the object is placed before the thumb.\n(Safari 5, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":target", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":target" + }, + "documentation": + "Some URIs refer to a location within a resource. This kind of URI ends with a 'number sign' (#) followed by an anchor identifier (called the fragment identifier).\n(Edge, Firefox 1, Safari 1, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":valid", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":valid" + }, + "documentation": + "An element is :valid or :invalid when it is, respectively, valid or invalid with respect to data validity semantics defined by a different specification.\n(Edge, Firefox 4, Safari 5, Chrome, IE 10, Opera 10)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":vertical", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":vertical" + }, + "documentation": + "Non-standard. Applies to any scrollbar pieces that have a vertical orientation.\n(Safari 5, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": ":visited", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":visited" + }, + "documentation": "Applies once the link has been visited by the user.", + "kind": 3, + "sortText": "d" + }, + { + "label": ":-webkit-any()", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-webkit-any($1)" + }, + "documentation": + "Represents an element that is represented by the selector list passed as its argument. Standardized as :matches().\n(Safari 5, Chrome)", + "kind": 3, + "insertTextFormat": 2, + "sortText": "x" + }, + { + "label": ":-webkit-full-screen", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":-webkit-full-screen" + }, + "documentation": + "Matches any element that has its fullscreen flag set. Standardized as :fullscreen.\n(Safari 6, Chrome)", + "kind": 3, + "sortText": "x" + }, + { + "label": ":window-inactive", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ":window-inactive" + }, + "documentation": + "Non-standard. Applies to all scrollbar pieces. Indicates whether or not the window containing the scrollbar is currently active.\n(Safari 3, Chrome)", + "kind": 3, + "sortText": "d" + }, + { + "label": "::after", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::after" + }, + "documentation": + "Represents a styleable child pseudo-element immediately after the originating element’s actual content.\n(Edge, Firefox 1.5, Safari 4, Chrome, IE 9, Opera 9)", + "kind": 3, + "sortText": "d" + }, + { + "label": "::backdrop", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::backdrop" + }, + "documentation": + "Used to create a backdrop that hides the underlying document for an element in a top layer (such as an element that is displayed fullscreen).\n(Edge)", + "kind": 3, + "sortText": "d" + }, + { + "label": "::before", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::before" + }, + "documentation": + "Represents a styleable child pseudo-element immediately before the originating element’s actual content.\n(Edge, Firefox 1.5, Safari 4, Chrome, IE 9, Opera 9)", + "kind": 3, + "sortText": "d" + }, + { + "label": "::content", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::content" + }, + "documentation": + "Deprecated. Matches the distribution list itself, on elements that have one. Use ::slotted for forward compatibility.\n(Chrome 35, Opera 22)", + "kind": 3, + "sortText": "d" + }, + { + "label": "::cue", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::cue" + }, + "documentation": null, + "kind": 3, + "sortText": "d" + }, + { + "label": "::cue()", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::cue($1)" + }, + "documentation": null, + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": "::cue-region", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::cue-region" + }, + "documentation": null, + "kind": 3, + "sortText": "d" + }, + { + "label": "::cue-region()", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::cue-region($1)" + }, + "documentation": null, + "kind": 3, + "insertTextFormat": 2, + "sortText": "d" + }, + { + "label": "::first-letter", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::first-letter" + }, + "documentation": + "Represents the first letter of an element, if it is not preceded by any other content (such as images or inline tables) on its line.\n(Edge, Firefox 1.5, Safari 1, Chrome, IE 9, Opera 7)", + "kind": 3, + "sortText": "d" + }, + { + "label": "::first-line", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::first-line" + }, + "documentation": + "Describes the contents of the first formatted line of its originating element.\n(Edge, Firefox 1.5, Safari 1, Chrome, IE 9, Opera 7)", + "kind": 3, + "sortText": "d" + }, + { + "label": "::-moz-focus-inner", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-moz-focus-inner" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-moz-focus-outer", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-moz-focus-outer" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-moz-list-bullet", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-moz-list-bullet" + }, + "documentation": + "Used to style the bullet of a list element. Similar to the standardized ::marker.\n(Firefox 1)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-moz-list-number", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-moz-list-number" + }, + "documentation": + "Used to style the numbers of a list element. Similar to the standardized ::marker.\n(Firefox 1)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-moz-placeholder", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-moz-placeholder" + }, + "documentation": "Represents placeholder text in an input field\n(Firefox 19)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-moz-progress-bar", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-moz-progress-bar" + }, + "documentation": "Represents the bar portion of a progress bar.\n(Firefox 9)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-moz-selection", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-moz-selection" + }, + "documentation": + "Represents the portion of a document that has been highlighted by the user.\n(Firefox 1)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-backdrop", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-ms-backdrop" + }, + "documentation": + "Used to create a backdrop that hides the underlying document for an element in a top layer (such as an element that is displayed fullscreen).\n(IE 11)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-browse", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-ms-browse" + }, + "documentation": + "Represents the browse button of an input type=file control.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-check", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-ms-check" + }, + "documentation": + "Represents the check of a checkbox or radio button input control.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-clear", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-ms-clear" + }, + "documentation": "Represents the clear button of a text input control\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-expand", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-ms-expand" + }, + "documentation": "Represents the drop-down button of a select control.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-fill", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-ms-fill" + }, + "documentation": "Represents the bar portion of a progress bar.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-fill-lower", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-ms-fill-lower" + }, + "documentation": + "Represents the portion of the slider track from its smallest value up to the value currently selected by the thumb. In a left-to-right layout, this is the portion of the slider track to the left of the thumb.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-fill-upper", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-ms-fill-upper" + }, + "documentation": + "Represents the portion of the slider track from the value currently selected by the thumb up to the slider's largest value. In a left-to-right layout, this is the portion of the slider track to the right of the thumb.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-reveal", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-ms-reveal" + }, + "documentation": + "Represents the password reveal button of an input type=password control.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-thumb", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-ms-thumb" + }, + "documentation": + "Represents the portion of range input control (also known as a slider control) that the user drags.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-ticks-after", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-ms-ticks-after" + }, + "documentation": + "Represents the tick marks of a slider that begin just after the thumb and continue up to the slider's largest value. In a left-to-right layout, these are the ticks to the right of the thumb.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-ticks-before", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-ms-ticks-before" + }, + "documentation": + "Represents the tick marks of a slider that represent its smallest values up to the value currently selected by the thumb. In a left-to-right layout, these are the ticks to the left of the thumb.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-tooltip", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-ms-tooltip" + }, + "documentation": "Represents the tooltip of a slider (input type=range).\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-track", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-ms-track" + }, + "documentation": "Represents the track of a slider.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::-ms-value", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-ms-value" + }, + "documentation": + "Represents the content of a text or password input control, or a select control.\n(Edge, IE 10)", + "kind": 3, + "sortText": "x" + }, + { + "label": "::selection", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::selection" + }, + "documentation": + "Represents the portion of a document that has been highlighted by the user.\n(Edge, Safari 1.1, Chrome, IE 9, Opera 9.5)", + "kind": 3, + "sortText": "d" + }, + { + "label": "::shadow", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::shadow" + }, + "documentation": + "Matches the shadow root if an element has a shadow tree.\n(Chrome 35, Opera 22)", + "kind": 3, + "sortText": "d" + }, + { + "label": "::-webkit-file-upload-button", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-file-upload-button" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-inner-spin-button", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-inner-spin-button" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-input-placeholder", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-input-placeholder" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-keygen-select", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-keygen-select" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-meter-bar", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-meter-bar" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-meter-even-less-good-value", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-meter-even-less-good-value" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-meter-optimum-value", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-meter-optimum-value" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-meter-suboptimal-value", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-meter-suboptimal-value" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-outer-spin-button", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-outer-spin-button" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-progress-bar", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-progress-bar" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-progress-inner-element", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-progress-inner-element" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-progress-value", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-progress-value" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-resizer", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-resizer" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-scrollbar", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-scrollbar" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-scrollbar-button", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-scrollbar-button" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-scrollbar-corner", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-scrollbar-corner" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-scrollbar-thumb", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-scrollbar-thumb" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-scrollbar-track", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-scrollbar-track" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-scrollbar-track-piece", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-scrollbar-track-piece" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-search-cancel-button", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-search-cancel-button" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-search-decoration", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-search-decoration" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-search-results-button", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-search-results-button" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-search-results-decoration", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-search-results-decoration" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-slider-runnable-track", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-slider-runnable-track" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-slider-thumb", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-slider-thumb" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-textfield-decoration-container", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-textfield-decoration-container" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-validation-bubble", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-validation-bubble" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-validation-bubble-arrow", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-validation-bubble-arrow" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-validation-bubble-arrow-clipper", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-validation-bubble-arrow-clipper" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-validation-bubble-heading", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-validation-bubble-heading" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-validation-bubble-message", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-validation-bubble-message" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": "::-webkit-validation-bubble-text-block", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "::-webkit-validation-bubble-text-block" + }, + "documentation": null, + "kind": 3, + "sortText": "x" + }, + { + "label": ".foo", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": ".foo" + }, + "kind": 14, + "sortText": "d" + }, + { + "label": "additive-symbols", + "documentation": + "@counter-style descriptor. Specifies the symbols used by the marker-construction algorithm specified by the system descriptor. Needs to be specified if the counter system is 'additive'.\n(Firefox 33)\n\nSyntax: [ && ]#", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "additive-symbols: " + }, + "kind": 10, + "command": { + "title": "Suggest", + "command": "editor.action.triggerSuggest" + }, + "sortText": "d" + }, + { + "label": "align-content", + "documentation": + "Aligns a flex container’s lines within the flex container when there is extra space in the cross-axis, similar to how 'justify-content' aligns individual items within the main-axis.\n(Edge, Firefox 22, Safari 9, Chrome 29, IE 11, Opera 12.1)\n\nSyntax: normal | | | ? ", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "align-content: " + }, + "kind": 10, + "command": { + "title": "Suggest", + "command": "editor.action.triggerSuggest" + }, + "sortText": "d" + }, + { + "label": "align-items", + "documentation": + "Aligns flex items along the cross axis of the current line of the flex container.\n(Edge, Firefox 22, Safari 9, Chrome 29, IE 11, Opera 12.1)\n\nSyntax: normal | stretch | | [ ? ]", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "align-items: " + }, + "kind": 10, + "command": { + "title": "Suggest", + "command": "editor.action.triggerSuggest" + }, + "sortText": "d" + }, + { + "label": "justify-items", + "documentation": + "Defines the default justify-self for all items of the box, given them the default way of justifying each box along the appropriate axi\n(Firefox 45)\n\nSyntax: normal | stretch | | ? [ | left | right ] | legacy | legacy && [ left | right | center ]", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "justify-items: " + }, + "kind": 10, + "command": { + "title": "Suggest", + "command": "editor.action.triggerSuggest" + }, + "sortText": "d" + }, + { + "label": "justify-self", + "documentation": + "Defines the way of justifying a box inside its container along the appropriate axis.\n(Firefox 45)\n\nSyntax: auto | normal | stretch | | ? [ | left | right ]", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "justify-self: " + }, + "kind": 10, + "command": { + "title": "Suggest", + "command": "editor.action.triggerSuggest" + }, + "sortText": "d" + }, + { + "label": "align-self", + "documentation": + "Allows the default alignment along the cross axis to be overridden for individual flex items.\n(Edge, Firefox 22, Safari 9, Chrome 29, IE 11, Opera 12.1)\n\nSyntax: auto | normal | stretch | | ? ", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "align-self: " + }, + "kind": 10, + "command": { + "title": "Suggest", + "command": "editor.action.triggerSuggest" + }, + "sortText": "d" + }, + { + "label": "all", + "documentation": + "Shorthand that resets all properties except 'direction' and 'unicode-bidi'.\n(Firefox 27, Chrome 37, Opera 24)\n\nSyntax: initial | inherit | unset | revert", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "all: " + }, + "kind": 10, + "command": { + "title": "Suggest", + "command": "editor.action.triggerSuggest" + }, + "sortText": "d" + }, + { + "label": "alt", + "documentation": + "Provides alternative text for assistive technology to replace the genenerated content of a ::before or ::after element.\n(Safari 9)", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "alt: " + }, + "kind": 10, + "command": { + "title": "Suggest", + "command": "editor.action.triggerSuggest" + }, + "sortText": "d" + }, + { + "label": "animation", + "documentation": + "Shorthand property combines six of the animation properties into a single property.\n(Edge, Firefox 16, Safari 9, Chrome 43, IE 10, Opera 12.1)\n\nSyntax: #", + "textEdit": { + "range": { + "start": { + "line": 1, + "character": 2 + }, + "end": { + "line": 1, + "character": 3 + } + }, + "newText": "animation: " + }, + "kind": 10, + "command": { + "title": "Suggest", + "command": "editor.action.triggerSuggest" + }, + "sortText": "d" + }, + { + "label": "animation-delay", + "documentation": + "Defines when the animation will start.\n(Edge, Firefox 16, Safari 9, Chrome 43, IE 10, Opera 12.1)\n\nSyntax: