Add support for css and scss (#605)

* Begin to add support for css and scss

* Continue to work on SCSS, add new selector

* Record some tests for scss

* Add more tests, move tests to correct dir level

* Handle arguments and parameters correctly, tests

* Add tests for CSS, rely on SCSS for CSS matchers

* Add tests, clean up functions for merge

- Fix edge cases in CSS functions with multiple value single args
- Add Selector scope
- Clean up function in node selector
- Remove declaration from statement scope type
- Add declaration to item scope type

* Delete single line comment test for CSS

- Not valid syntax for CSS, just SASS

* Ensure we use scssStringTextExtractor

- Fixes `"take round`" for "hello (world)" in css

* Remove failing state tests

- State redefined as a ruleset selector + block rather than single property

* Add `parameters` back to argument matcher

* Remove test with invalid CSS

* Clean up tests

* Clean up CSS selector test

* Remove `take state` test

* More test clean up

* Various Changes

- Test cases for cursor positions when selecting keys and values
- Allow for name/value selection with optional args in SASS
- Start to clean up SCSS argument matcher

* Changes to childRangeSelector

- Also fix types & clean up findAdjacentArgValues

* Fix breaking tests from node selector change.

* Include all children for import and includes

* Update src/languages/scss.ts

Update delimited function check name

Co-authored-by: Pokey Rule <755842+pokey@users.noreply.github.com>

* Update src/util/nodeSelectors.ts

Update childRange docstring for clarity

Co-authored-by: Pokey Rule <755842+pokey@users.noreply.github.com>

* Change comment to docstring, handle method rename

* Add docstring

* Fix doc comment

* formatting

Co-authored-by: Pokey Rule <755842+pokey@users.noreply.github.com>
This commit is contained in:
Will Sommers 2022-04-15 10:35:37 -04:00 committed by GitHub
parent 95890de171
commit 7378bcbb44
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
117 changed files with 3420 additions and 1 deletions

View File

@ -33,6 +33,7 @@ scope_types = {
"-four section": "sectionLevelFour", "-four section": "sectionLevelFour",
"-five section": "sectionLevelFive", "-five section": "sectionLevelFive",
"-six section": "sectionLevelSix", "-six section": "sectionLevelSix",
"selector": "selector",
"state": "statement", "state": "statement",
"string": "string", "string": "string",
"type": "type", "type": "type",

View File

@ -2,6 +2,7 @@ export const supportedLanguageIds = [
"c", "c",
"clojure", "clojure",
"cpp", "cpp",
"css",
"csharp", "csharp",
"go", "go",
"html", "html",
@ -15,6 +16,7 @@ export const supportedLanguageIds = [
"python", "python",
"ruby", "ruby",
"scala", "scala",
"scss",
"typescript", "typescript",
"typescriptreact", "typescriptreact",
"xml", "xml",

View File

@ -18,6 +18,7 @@ import php from "./php";
import python from "./python"; import python from "./python";
import markdown from "./markdown"; import markdown from "./markdown";
import scala from "./scala"; import scala from "./scala";
import { patternMatchers as scss } from "./scss";
import go from "./go"; import go from "./go";
import { patternMatchers as ruby } from "./ruby"; import { patternMatchers as ruby } from "./ruby";
import { UnsupportedLanguageError } from "../errors"; import { UnsupportedLanguageError } from "../errors";
@ -53,6 +54,7 @@ const languageMatchers: Record<
> = { > = {
c: cpp, c: cpp,
cpp, cpp,
css: scss,
csharp, csharp,
clojure, clojure,
go, go,
@ -65,8 +67,9 @@ const languageMatchers: Record<
markdown, markdown,
php, php,
python, python,
ruby, ruby,
scala, scala,
scss,
typescript, typescript,
typescriptreact: typescript, typescriptreact: typescript,
xml: html, xml: html,

View File

@ -5,6 +5,7 @@ import { stringTextFragmentExtractor as jsonStringTextFragmentExtractor } from "
import { stringTextFragmentExtractor as phpStringTextFragmentExtractor } from "./php"; import { stringTextFragmentExtractor as phpStringTextFragmentExtractor } from "./php";
import { stringTextFragmentExtractor as rubyStringTextFragmentExtractor } from "./ruby"; import { stringTextFragmentExtractor as rubyStringTextFragmentExtractor } from "./ruby";
import { stringTextFragmentExtractor as typescriptStringTextFragmentExtractor } from "./typescript"; import { stringTextFragmentExtractor as typescriptStringTextFragmentExtractor } from "./typescript";
import { stringTextFragmentExtractor as scssStringTextFragmentExtractor } from "./scss";
import { UnsupportedLanguageError } from "../errors"; import { UnsupportedLanguageError } from "../errors";
import { Range } from "vscode"; import { Range } from "vscode";
import { SupportedLanguageId } from "./constants"; import { SupportedLanguageId } from "./constants";
@ -131,6 +132,10 @@ const textFragmentExtractors: Record<
), ),
cpp: constructDefaultTextFragmentExtractor("cpp"), cpp: constructDefaultTextFragmentExtractor("cpp"),
csharp: constructDefaultTextFragmentExtractor("csharp"), csharp: constructDefaultTextFragmentExtractor("csharp"),
css: constructDefaultTextFragmentExtractor(
"css",
scssStringTextFragmentExtractor
),
go: constructDefaultTextFragmentExtractor("go"), go: constructDefaultTextFragmentExtractor("go"),
html: constructDefaultTextFragmentExtractor( html: constructDefaultTextFragmentExtractor(
"html", "html",
@ -170,6 +175,10 @@ const textFragmentExtractors: Record<
"scala", "scala",
constructHackedStringTextFragmentExtractor("scala") constructHackedStringTextFragmentExtractor("scala")
), ),
scss: constructDefaultTextFragmentExtractor(
"scss",
scssStringTextFragmentExtractor
),
typescript: constructDefaultTextFragmentExtractor( typescript: constructDefaultTextFragmentExtractor(
"typescript", "typescript",
typescriptStringTextFragmentExtractor typescriptStringTextFragmentExtractor

160
src/languages/scss.ts Normal file
View File

@ -0,0 +1,160 @@
import { SyntaxNode } from "web-tree-sitter";
import {
NodeMatcherAlternative,
ScopeType,
SelectionWithEditor,
} from "../typings/Types";
import { patternFinder } from "../util/nodeFinders";
import {
cascadingMatcher,
conditionMatcher,
createPatternMatchers,
matcher,
patternMatcher,
trailingMatcher,
} from "../util/nodeMatchers";
import {
childRangeSelector,
delimitedSelector,
getNodeRange,
} from "../util/nodeSelectors";
// curl https://raw.githubusercontent.com/serenadeai/tree-sitter-scss/c478c6868648eff49eb04a4df90d703dc45b312a/src/node-types.json \
// | jq '[.[] | select(.type =="stylesheet") | .children.types[] | select(.type !="declaration") | .type ]'
const STATEMENT_TYPES = [
"apply_statement",
"at_rule",
"charset_statement",
"debug_statement",
"each_statement",
"error_statement",
"for_statement",
"forward_statement",
"function_statement",
"if_statement",
"import_statement",
"include_statement",
"keyframes_statement",
"media_statement",
"mixin_statement",
"namespace_statement",
"placeholder",
"rule_set",
"supports_statement",
"use_statement",
"warn_statement",
"while_statement",
];
function isArgumentListDelimiter(node: SyntaxNode) {
return [",", "(", ")"].includes(node.type) || isAtDelimiter(node);
}
/**
* Determines whether the given `node` is an `at` delimiter node, used in a css
* / scss argument list. For example, the `at` in the call
* `ellipse(115px 55px at 50% 40%)`
*
* @param node The node to check
* @returns `true` if the node is an `at` delimiter node
*/
function isAtDelimiter(node: SyntaxNode) {
return node.type === "plain_value" && node.text === "at";
}
/**
* Matches adjacent nodes returned from {@link siblingFunc} until it reaches a
* delimiter node. This is intended to handle the case of multiple values
* within two delimiters. e.g. `repeating-linear-gradient(red, orange 50px)`
* @param siblingFunc returns the previous or next sibling of the current node if present.
* @returns A non-delimiter node
*/
function findAdjacentArgValues(
siblingFunc: (node: SyntaxNode) => SyntaxNode | null
) {
return (node: SyntaxNode) => {
// Handle the case where we are the cursor is placed before a delimiter, e.g. "|at"
// and we erroneously expand in both directions.
if (isAtDelimiter(node) || node.type === ",") {
node = node.previousSibling!;
}
let nextPossibleRange = siblingFunc(node);
while (nextPossibleRange && !isArgumentListDelimiter(nextPossibleRange)) {
node = nextPossibleRange;
nextPossibleRange = siblingFunc(nextPossibleRange);
}
return node;
};
}
const nodeMatchers: Partial<Record<ScopeType, NodeMatcherAlternative>> = {
ifStatement: "if_statement",
condition: conditionMatcher("condition"),
statement: cascadingMatcher(
patternMatcher(...STATEMENT_TYPES),
matcher(
patternFinder("attribute_selector"),
childRangeSelector([], ["attribute_name", "string_value"])
)
),
string: "string_value",
functionCall: "call_expression",
namedFunction: ["mixin_statement", "function_statement"],
functionName: ["mixin_statement.name!", "function_statement.name!"],
comment: ["comment", "single_line_comment"],
argumentOrParameter: cascadingMatcher(
matcher(
patternFinder("arguments.*!", "parameters.*!"),
delimitedSelector(
(node) => isArgumentListDelimiter(node),
", ",
findAdjacentArgValues((node) => node.previousSibling),
findAdjacentArgValues((node) => node.nextSibling)
)
)
),
name: [
"function_statement.name!",
"declaration.property_name!",
"declaration.variable_name!",
"mixin_statement.name!",
"attribute_selector.attribute_name!",
"parameter.variable_name!",
],
selector: ["rule_set.selectors!"],
collectionKey: trailingMatcher(["declaration.property_name!"], [":"]),
value: cascadingMatcher(
matcher(
patternFinder("declaration"),
childRangeSelector(["property_name", "variable_name"])
),
matcher(
patternFinder("include_statement", "namespace_statement"),
childRangeSelector()
),
patternMatcher(
"return_statement.*!",
"import_statement.*!",
"attribute_selector.plain_value!",
"attribute_selector.string_value!",
"parameter.default_value!"
)
),
collectionItem: "declaration",
};
export const patternMatchers = createPatternMatchers(nodeMatchers);
export function stringTextFragmentExtractor(
node: SyntaxNode,
_selection: SelectionWithEditor
) {
if (node.type === "string_value") {
return getNodeRange(node);
}
return null;
}

View File

@ -0,0 +1,31 @@
languageId: css
command:
version: 1
spokenForm: change argue
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}
initialState:
documentContents: |-
.double {
transform: translate(-50%, -50%);
}
selections:
- anchor: {line: 2, character: 25}
active: {line: 2, character: 25}
marks: {}
finalState:
documentContents: |-
.double {
transform: translate(, -50%);
}
selections:
- anchor: {line: 2, character: 23}
active: {line: 2, character: 23}
thatMark:
- anchor: {line: 2, character: 23}
active: {line: 2, character: 23}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: change argue
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}
initialState:
documentContents: |-
div {
background: repeating-linear-gradient(red, orange 50px);
}
selections:
- anchor: {line: 1, character: 47}
active: {line: 1, character: 47}
marks: {}
finalState:
documentContents: |-
div {
background: repeating-linear-gradient(red, );
}
selections:
- anchor: {line: 1, character: 45}
active: {line: 1, character: 45}
thatMark:
- anchor: {line: 1, character: 45}
active: {line: 1, character: 45}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,31 @@
languageId: css
command:
version: 1
spokenForm: change argue
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}
initialState:
documentContents: |-
a {
clip-path: polygon(50% 0%, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0% 50%, 40% 40%);
}
selections:
- anchor: {line: 1, character: 27}
active: {line: 1, character: 27}
marks: {}
finalState:
documentContents: |-
a {
clip-path: polygon(, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0% 50%, 40% 40%);
}
selections:
- anchor: {line: 1, character: 21}
active: {line: 1, character: 21}
thatMark:
- anchor: {line: 1, character: 21}
active: {line: 1, character: 21}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: change argue
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}
initialState:
documentContents: |-
a {
clip-path: ellipse(115px 55px at 50% 40%);
}
selections:
- anchor: {line: 1, character: 39}
active: {line: 1, character: 39}
marks: {}
finalState:
documentContents: |-
a {
clip-path: ellipse(115px 55px at );
}
selections:
- anchor: {line: 1, character: 35}
active: {line: 1, character: 35}
thatMark:
- anchor: {line: 1, character: 35}
active: {line: 1, character: 35}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: change argue
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}
initialState:
documentContents: |-
a {
clip-path: ellipse(115px 55px at 50% 40%);
}
selections:
- anchor: {line: 1, character: 25}
active: {line: 1, character: 25}
marks: {}
finalState:
documentContents: |-
a {
clip-path: ellipse( at 50% 40%);
}
selections:
- anchor: {line: 1, character: 21}
active: {line: 1, character: 21}
thatMark:
- anchor: {line: 1, character: 21}
active: {line: 1, character: 21}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,26 @@
languageId: css
command:
version: 1
spokenForm: change comment
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: comment, includeSiblings: false}
initialState:
documentContents: |-
/*
hello
*/
selections:
- anchor: {line: 1, character: 7}
active: {line: 1, character: 7}
marks: {}
finalState:
documentContents: ""
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: comment, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,35 @@
languageId: css
command:
version: 1
spokenForm: change every argue
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: true}
initialState:
documentContents: |-
.double {
transform: translate(-50%, -50%);
}
selections:
- anchor: {line: 2, character: 25}
active: {line: 2, character: 25}
marks: {}
finalState:
documentContents: |-
.double {
transform: translate(, );
}
selections:
- anchor: {line: 2, character: 23}
active: {line: 2, character: 23}
- anchor: {line: 2, character: 25}
active: {line: 2, character: 25}
thatMark:
- anchor: {line: 2, character: 23}
active: {line: 2, character: 23}
- anchor: {line: 2, character: 25}
active: {line: 2, character: 25}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: true}, isImplicit: false}]

View File

@ -0,0 +1,35 @@
languageId: css
command:
version: 1
spokenForm: change every argue
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: true}
initialState:
documentContents: |-
div {
background: repeating-linear-gradient(red, orange 50px);
clip-path: polygon(50% 0%, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0% 50%, 40% 40%);
}
selections:
- anchor: {line: 1, character: 50}
active: {line: 1, character: 50}
marks: {}
finalState:
documentContents: |-
div {
background: repeating-linear-gradient(, );
clip-path: polygon(50% 0%, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0% 50%, 40% 40%);
}
selections:
- anchor: {line: 1, character: 40}
active: {line: 1, character: 40}
- anchor: {line: 1, character: 42}
active: {line: 1, character: 42}
thatMark:
- anchor: {line: 1, character: 40}
active: {line: 1, character: 40}
- anchor: {line: 1, character: 42}
active: {line: 1, character: 42}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: true}, isImplicit: false}]

View File

@ -0,0 +1,37 @@
languageId: css
command:
version: 1
spokenForm: change every argue
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: true}
initialState:
documentContents: |-
a {
width: calc(100% - 80px);
clip-path: ellipse(115px 55px at 50% 40%);
}
selections:
- anchor: {line: 2, character: 25}
active: {line: 2, character: 25}
marks: {}
finalState:
documentContents: |-
a {
width: calc(100% - 80px);
clip-path: ellipse( at );
}
selections:
- anchor: {line: 2, character: 21}
active: {line: 2, character: 21}
- anchor: {line: 2, character: 25}
active: {line: 2, character: 25}
thatMark:
- anchor: {line: 2, character: 21}
active: {line: 2, character: 21}
- anchor: {line: 2, character: 25}
active: {line: 2, character: 25}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: true}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: change item
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: collectionItem, includeSiblings: false}
initialState:
documentContents: |-
a {
width: calc(100% - 80px);
}
selections:
- anchor: {line: 1, character: 12}
active: {line: 1, character: 12}
marks: {}
finalState:
documentContents: |-
a {
}
selections:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
thatMark:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: collectionItem, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: change key
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: collectionKey, includeSiblings: false}
initialState:
documentContents: |
span[hello="Cleveland"][goodbye="Columbus"] {
color: blue;
}
selections:
- anchor: {line: 1, character: 4}
active: {line: 1, character: 4}
marks: {}
finalState:
documentContents: |
span[hello="Cleveland"][goodbye="Columbus"] {
: blue;
}
selections:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
thatMark:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: collectionKey, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: change key
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: collectionKey, includeSiblings: false}
initialState:
documentContents: |-
span[hello="Cleveland"][goodbye="Columbus"] {
color: blue;
}
selections:
- anchor: {line: 1, character: 12}
active: {line: 1, character: 12}
marks: {}
finalState:
documentContents: |-
span[hello="Cleveland"][goodbye="Columbus"] {
: blue;
}
selections:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
thatMark:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: collectionKey, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,31 @@
languageId: css
command:
version: 1
spokenForm: change name
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: name, includeSiblings: false}
initialState:
documentContents: |-
a {
height: 10px;
color: red;
}
selections:
- anchor: {line: 1, character: 12}
active: {line: 1, character: 12}
marks: {}
finalState:
documentContents: |-
a {
: 10px;
color: red;
}
selections:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
thatMark:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: name, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: change name
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: name, includeSiblings: false}
initialState:
documentContents: |-
a {
height: 10px;
}
selections:
- anchor: {line: 1, character: 4}
active: {line: 1, character: 4}
marks: {}
finalState:
documentContents: |-
a {
: 10px;
}
selections:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
thatMark:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: name, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: change name
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: name, includeSiblings: false}
initialState:
documentContents: |
a {
margin: 10px 10px 10px 10px;
}
selections:
- anchor: {line: 1, character: 14}
active: {line: 1, character: 14}
marks: {}
finalState:
documentContents: |
a {
: 10px 10px 10px 10px;
}
selections:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
thatMark:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: name, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: change name
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: name, includeSiblings: false}
initialState:
documentContents: |-
a[data-lang^="tel"] {
color: rgba(0, 255, 0, 0.5);
}
selections:
- anchor: {line: 0, character: 15}
active: {line: 0, character: 15}
marks: {}
finalState:
documentContents: |-
a[^="tel"] {
color: rgba(0, 255, 0, 0.5);
}
selections:
- anchor: {line: 0, character: 2}
active: {line: 0, character: 2}
thatMark:
- anchor: {line: 0, character: 2}
active: {line: 0, character: 2}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: name, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: change round
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: surroundingPair, delimiter: parentheses}
initialState:
documentContents: |-
a {
font-family: "hello (world)";
}
selections:
- anchor: {line: 1, character: 25}
active: {line: 1, character: 25}
marks: {}
finalState:
documentContents: |-
a {
font-family: "hello ";
}
selections:
- anchor: {line: 1, character: 22}
active: {line: 1, character: 22}
thatMark:
- anchor: {line: 1, character: 22}
active: {line: 1, character: 22}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: surroundingPair, delimiter: parentheses}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: change selector
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: selector, includeSiblings: false}
initialState:
documentContents: |
span[hello="Cleveland"][goodbye="Columbus"] {
color: blue;
}
selections:
- anchor: {line: 1, character: 4}
active: {line: 1, character: 4}
marks: {}
finalState:
documentContents: |2
{
color: blue;
}
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: selector, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: change selector
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: selector, includeSiblings: false}
initialState:
documentContents: |-
a.b ~ c.d {
}
selections:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
marks: {}
finalState:
documentContents: |2-
{
}
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: selector, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: change selector
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: selector, includeSiblings: false}
initialState:
documentContents: |
#header.callout {
}
selections:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
marks: {}
finalState:
documentContents: |2
{
}
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: selector, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: change selector
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: selector, includeSiblings: false}
initialState:
documentContents: |-
#header .callout {
}
selections:
- anchor: {line: 1, character: 0}
active: {line: 1, character: 0}
marks: {}
finalState:
documentContents: |2-
{
}
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: selector, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: change selector
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: selector, includeSiblings: false}
initialState:
documentContents: |-
span[hello="Cleveland"][goodbye="Columbus"] {
color: blue;
}
selections:
- anchor: {line: 1, character: 12}
active: {line: 1, character: 12}
marks: {}
finalState:
documentContents: |2-
{
color: blue;
}
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: selector, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,25 @@
languageId: css
command:
version: 1
spokenForm: change state
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: statement, includeSiblings: false}
initialState:
documentContents: |
@import "subs.css";
selections:
- anchor: {line: 0, character: 11}
active: {line: 0, character: 11}
marks: {}
finalState:
documentContents: |+
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: statement, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,26 @@
languageId: css
command:
version: 1
spokenForm: change state
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: statement, includeSiblings: false}
initialState:
documentContents: |-
a {
width: calc(100% - 80px);
}
selections:
- anchor: {line: 1, character: 12}
active: {line: 1, character: 12}
marks: {}
finalState:
documentContents: ""
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: statement, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,31 @@
languageId: css
command:
version: 1
spokenForm: change state air
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: statement, includeSiblings: false}
mark: {type: decoratedSymbol, symbolColor: default, character: a}
initialState:
documentContents: |-
a {
height: 10px;
color: red;
}
selections:
- anchor: {line: 0, character: 3}
active: {line: 0, character: 3}
marks:
default.a:
start: {line: 0, character: 0}
end: {line: 0, character: 1}
finalState:
documentContents: ""
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: decoratedSymbol, symbolColor: default, character: a}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: statement, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,31 @@
languageId: css
command:
version: 1
spokenForm: change state harp
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: statement, includeSiblings: false}
mark: {type: decoratedSymbol, symbolColor: default, character: h}
initialState:
documentContents: |-
a .child-selector {
height: 10px;
color: red;
}
selections:
- anchor: {line: 2, character: 13}
active: {line: 2, character: 13}
marks:
default.h:
start: {line: 0, character: 3}
end: {line: 0, character: 8}
finalState:
documentContents: ""
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: decoratedSymbol, symbolColor: default, character: h}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: statement, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,25 @@
languageId: css
command:
version: 1
spokenForm: change value
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |
@import "subs.css";
selections:
- anchor: {line: 0, character: 10}
active: {line: 0, character: 10}
marks: {}
finalState:
documentContents: |
@import ;
selections:
- anchor: {line: 0, character: 8}
active: {line: 0, character: 8}
thatMark:
- anchor: {line: 0, character: 8}
active: {line: 0, character: 8}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,31 @@
languageId: css
command:
version: 1
spokenForm: change value
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |-
a {
height: 10px;
color: red;
}
selections:
- anchor: {line: 1, character: 12}
active: {line: 1, character: 12}
marks: {}
finalState:
documentContents: |-
a {
height: ;
color: red;
}
selections:
- anchor: {line: 1, character: 10}
active: {line: 1, character: 10}
thatMark:
- anchor: {line: 1, character: 10}
active: {line: 1, character: 10}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: change value
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |
a {
margin: 10px 10px 10px 10px;
}
selections:
- anchor: {line: 1, character: 4}
active: {line: 1, character: 4}
marks: {}
finalState:
documentContents: |
a {
margin: ;
}
selections:
- anchor: {line: 1, character: 10}
active: {line: 1, character: 10}
thatMark:
- anchor: {line: 1, character: 10}
active: {line: 1, character: 10}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: change value
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |
a {
background-image: url("/icons/mail.svg");
}
selections:
- anchor: {line: 1, character: 35}
active: {line: 1, character: 35}
marks: {}
finalState:
documentContents: |
a {
background-image: ;
}
selections:
- anchor: {line: 1, character: 20}
active: {line: 1, character: 20}
thatMark:
- anchor: {line: 1, character: 20}
active: {line: 1, character: 20}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: change value
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |-
a[data-lang^="tel"] {
color: rgba(0, 255, 0, 0.5);
}
selections:
- anchor: {line: 0, character: 16}
active: {line: 0, character: 16}
marks: {}
finalState:
documentContents: |-
a[data-lang^=] {
color: rgba(0, 255, 0, 0.5);
}
selections:
- anchor: {line: 0, character: 13}
active: {line: 0, character: 13}
thatMark:
- anchor: {line: 0, character: 13}
active: {line: 0, character: 13}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: chuck argue
action: remove
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}
initialState:
documentContents: |-
div {
background: repeating-linear-gradient(red, orange 50px);
}
selections:
- anchor: {line: 1, character: 46}
active: {line: 1, character: 46}
marks: {}
finalState:
documentContents: |-
div {
background: repeating-linear-gradient(red);
}
selections:
- anchor: {line: 1, character: 43}
active: {line: 1, character: 43}
thatMark:
- anchor: {line: 1, character: 43}
active: {line: 1, character: 43}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: outside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: chuck argue
action: remove
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}
initialState:
documentContents: |-
div {
clip-path: polygon(50% 0%, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0% 50%, 40% 40%);
}
selections:
- anchor: {line: 1, character: 22}
active: {line: 1, character: 22}
marks: {}
finalState:
documentContents: |-
div {
clip-path: polygon(60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0% 50%, 40% 40%);
}
selections:
- anchor: {line: 1, character: 21}
active: {line: 1, character: 21}
thatMark:
- anchor: {line: 1, character: 21}
active: {line: 1, character: 21}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: outside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: chuck argue
action: remove
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}
initialState:
documentContents: |-
a {
width: calc(100% - 80px);
}
selections:
- anchor: {line: 1, character: 23}
active: {line: 1, character: 23}
marks: {}
finalState:
documentContents: |-
a {
width: calc();
}
selections:
- anchor: {line: 1, character: 14}
active: {line: 1, character: 14}
thatMark:
- anchor: {line: 1, character: 14}
active: {line: 1, character: 14}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: outside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: chuck argue
action: remove
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}
initialState:
documentContents: |-
a {
clip-path: ellipse(115px 55px at 50% 40%);
}
selections:
- anchor: {line: 1, character: 24}
active: {line: 1, character: 24}
marks: {}
finalState:
documentContents: |-
a {
clip-path: ellipse(50% 40%);
}
selections:
- anchor: {line: 1, character: 21}
active: {line: 1, character: 21}
thatMark:
- anchor: {line: 1, character: 21}
active: {line: 1, character: 21}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: outside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: chuck argue
action: remove
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}
initialState:
documentContents: |-
.micro {
width: sum(50px, 30px, 100px);
}
selections:
- anchor: {line: 1, character: 14}
active: {line: 1, character: 14}
marks: {}
finalState:
documentContents: |-
.micro {
width: sum(30px, 100px);
}
selections:
- anchor: {line: 1, character: 13}
active: {line: 1, character: 13}
thatMark:
- anchor: {line: 1, character: 13}
active: {line: 1, character: 13}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: outside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: chuck argue
action: remove
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}
initialState:
documentContents: |-
.micro {
width: sum(50px, 30px, 100px);
}
selections:
- anchor: {line: 1, character: 27}
active: {line: 1, character: 27}
marks: {}
finalState:
documentContents: |-
.micro {
width: sum(50px, 30px);
}
selections:
- anchor: {line: 1, character: 23}
active: {line: 1, character: 23}
thatMark:
- anchor: {line: 1, character: 23}
active: {line: 1, character: 23}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: outside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: chuck argue
action: remove
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}
initialState:
documentContents: |-
div {
clip-path: polygon(50% 0%, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0% 50%, 40% 40%);
}
selections:
- anchor: {line: 1, character: 85}
active: {line: 1, character: 85}
marks: {}
finalState:
documentContents: |-
div {
clip-path: polygon(50% 0%, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0% 50%);
}
selections:
- anchor: {line: 1, character: 82}
active: {line: 1, character: 82}
thatMark:
- anchor: {line: 1, character: 82}
active: {line: 1, character: 82}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: outside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: chuck argue
action: remove
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}
initialState:
documentContents: |-
a {
clip-path: ellipse(115px 55px at 50% 40%);
}
selections:
- anchor: {line: 1, character: 41}
active: {line: 1, character: 41}
marks: {}
finalState:
documentContents: |-
a {
clip-path: ellipse(115px 55px);
}
selections:
- anchor: {line: 1, character: 31}
active: {line: 1, character: 31}
thatMark:
- anchor: {line: 1, character: 31}
active: {line: 1, character: 31}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: outside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: chuck every argue
action: remove
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: true}
initialState:
documentContents: |-
a {
clip-path: ellipse(115px 55px at 50% 40%);
}
selections:
- anchor: {line: 1, character: 36}
active: {line: 1, character: 36}
marks: {}
finalState:
documentContents: |-
a {
clip-path: ellipse();
}
selections:
- anchor: {line: 1, character: 21}
active: {line: 1, character: 21}
thatMark:
- anchor: {line: 1, character: 21}
active: {line: 1, character: 21}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: outside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: true}, isImplicit: false}]

View File

@ -0,0 +1,23 @@
languageId: css
command:
version: 1
spokenForm: chuck state
action: remove
targets:
- type: primitive
modifier: {type: containingScope, scopeType: statement, includeSiblings: false}
initialState:
documentContents: "@namespace prefix \"XML-namespace-URL\";"
selections:
- anchor: {line: 0, character: 15}
active: {line: 0, character: 15}
marks: {}
finalState:
documentContents: ""
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: outside, modifier: {type: containingScope, scopeType: statement, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: chuck state
action: remove
targets:
- type: primitive
modifier: {type: containingScope, scopeType: statement, includeSiblings: false}
initialState:
documentContents: |
@keyframes important1 {
from { margin-top: 50px; }
50% { margin-top: 150px !important; } /* ignored */
to { margin-top: 100px; }
}
selections:
- anchor: {line: 0, character: 2}
active: {line: 0, character: 2}
marks: {}
finalState:
documentContents: |+
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: outside, modifier: {type: containingScope, scopeType: statement, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,23 @@
languageId: css
command:
version: 1
spokenForm: chuck value
action: remove
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: "@namespace prefix \"XML-namespace-URL\";"
selections:
- anchor: {line: 0, character: 16}
active: {line: 0, character: 16}
marks: {}
finalState:
documentContents: "@namespace ;"
selections:
- anchor: {line: 0, character: 11}
active: {line: 0, character: 11}
thatMark:
- anchor: {line: 0, character: 11}
active: {line: 0, character: 11}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: outside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,23 @@
languageId: css
command:
version: 1
spokenForm: chuck value
action: remove
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: "@namespace url(http://www.w3.org/1999/xhtml);"
selections:
- anchor: {line: 0, character: 6}
active: {line: 0, character: 6}
marks: {}
finalState:
documentContents: "@namespace ;"
selections:
- anchor: {line: 0, character: 6}
active: {line: 0, character: 6}
thatMark:
- anchor: {line: 0, character: 11}
active: {line: 0, character: 11}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: outside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: chuck value
action: remove
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |
a {
margin-top: 150px !important;
}
selections:
- anchor: {line: 1, character: 7}
active: {line: 1, character: 7}
marks: {}
finalState:
documentContents: |
a {
margin-top: ;
}
selections:
- anchor: {line: 1, character: 7}
active: {line: 1, character: 7}
thatMark:
- anchor: {line: 1, character: 14}
active: {line: 1, character: 14}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: outside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,31 @@
languageId: scss
command:
version: 1
spokenForm: change argue
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}
initialState:
documentContents: |-
.double {
transform: translate(-50%, -50%);
}
selections:
- anchor: {line: 2, character: 25}
active: {line: 2, character: 25}
marks: {}
finalState:
documentContents: |-
.double {
transform: translate(, -50%);
}
selections:
- anchor: {line: 2, character: 23}
active: {line: 2, character: 23}
thatMark:
- anchor: {line: 2, character: 23}
active: {line: 2, character: 23}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change argue
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}
initialState:
documentContents: |-
@mixin replace-text($image, $color: red) {
text-align: left;
}
selections:
- anchor: {line: 0, character: 34}
active: {line: 0, character: 34}
marks: {}
finalState:
documentContents: |-
@mixin replace-text($image, ) {
text-align: left;
}
selections:
- anchor: {line: 0, character: 28}
active: {line: 0, character: 28}
thatMark:
- anchor: {line: 0, character: 28}
active: {line: 0, character: 28}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change argue
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}
initialState:
documentContents: |-
@mixin replace-text($image, $color: red) {
text-align: left;
}
selections:
- anchor: {line: 0, character: 24}
active: {line: 0, character: 24}
marks: {}
finalState:
documentContents: |-
@mixin replace-text(, $color: red) {
text-align: left;
}
selections:
- anchor: {line: 0, character: 20}
active: {line: 0, character: 20}
thatMark:
- anchor: {line: 0, character: 20}
active: {line: 0, character: 20}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change argue
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}
initialState:
documentContents: |-
div {
clip-path: polygon(50% 0%, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0% 50%, 40% 40%);
}
selections:
- anchor: {line: 1, character: 40}
active: {line: 1, character: 40}
marks: {}
finalState:
documentContents: |-
div {
clip-path: polygon(50% 0%, 60% 40%, , 60% 60%, 50% 100%, 40% 60%, 0% 50%, 40% 40%);
}
selections:
- anchor: {line: 1, character: 38}
active: {line: 1, character: 38}
thatMark:
- anchor: {line: 1, character: 38}
active: {line: 1, character: 38}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,31 @@
languageId: scss
command:
version: 1
spokenForm: change argue
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}
initialState:
documentContents: |-
a {
clip-path: polygon(50% 0%, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0% 50%, 40% 40%);
}
selections:
- anchor: {line: 1, character: 27}
active: {line: 1, character: 27}
marks: {}
finalState:
documentContents: |-
a {
clip-path: polygon(, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0% 50%, 40% 40%);
}
selections:
- anchor: {line: 1, character: 21}
active: {line: 1, character: 21}
thatMark:
- anchor: {line: 1, character: 21}
active: {line: 1, character: 21}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change argue
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}
initialState:
documentContents: |-
@mixin foo($foo: 123) {
}
selections:
- anchor: {line: 0, character: 18}
active: {line: 0, character: 18}
marks: {}
finalState:
documentContents: |-
@mixin foo() {
}
selections:
- anchor: {line: 0, character: 11}
active: {line: 0, character: 11}
thatMark:
- anchor: {line: 0, character: 11}
active: {line: 0, character: 11}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,23 @@
languageId: scss
command:
version: 1
spokenForm: change comment
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: comment, includeSiblings: false}
initialState:
documentContents: // comment
selections:
- anchor: {line: 0, character: 9}
active: {line: 0, character: 9}
marks: {}
finalState:
documentContents: ""
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: comment, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,26 @@
languageId: scss
command:
version: 1
spokenForm: change comment
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: comment, includeSiblings: false}
initialState:
documentContents: |-
/*
hello
*/
selections:
- anchor: {line: 1, character: 7}
active: {line: 1, character: 7}
marks: {}
finalState:
documentContents: ""
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: comment, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,35 @@
languageId: scss
command:
version: 1
spokenForm: change every argue
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: true}
initialState:
documentContents: |-
.double {
transform: translate(-50%, -50%);
}
selections:
- anchor: {line: 2, character: 25}
active: {line: 2, character: 25}
marks: {}
finalState:
documentContents: |-
.double {
transform: translate(, );
}
selections:
- anchor: {line: 2, character: 23}
active: {line: 2, character: 23}
- anchor: {line: 2, character: 25}
active: {line: 2, character: 25}
thatMark:
- anchor: {line: 2, character: 23}
active: {line: 2, character: 23}
- anchor: {line: 2, character: 25}
active: {line: 2, character: 25}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: true}, isImplicit: false}]

View File

@ -0,0 +1,33 @@
languageId: scss
command:
version: 1
spokenForm: change every argue
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: true}
initialState:
documentContents: |-
div {
background: repeating-linear-gradient(red, orange 50px);
}
selections:
- anchor: {line: 1, character: 50}
active: {line: 1, character: 50}
marks: {}
finalState:
documentContents: |-
div {
background: repeating-linear-gradient(, );
}
selections:
- anchor: {line: 1, character: 40}
active: {line: 1, character: 40}
- anchor: {line: 1, character: 42}
active: {line: 1, character: 42}
thatMark:
- anchor: {line: 1, character: 40}
active: {line: 1, character: 40}
- anchor: {line: 1, character: 42}
active: {line: 1, character: 42}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: true}, isImplicit: false}]

View File

@ -0,0 +1,35 @@
languageId: scss
command:
version: 1
spokenForm: change every argue
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: true}
initialState:
documentContents: |-
a {
clip-path: ellipse(115px 55px at 50% 40%);
}
selections:
- anchor: {line: 1, character: 25}
active: {line: 1, character: 25}
marks: {}
finalState:
documentContents: |-
a {
clip-path: ellipse( at );
}
selections:
- anchor: {line: 1, character: 21}
active: {line: 1, character: 21}
- anchor: {line: 1, character: 25}
active: {line: 1, character: 25}
thatMark:
- anchor: {line: 1, character: 21}
active: {line: 1, character: 21}
- anchor: {line: 1, character: 25}
active: {line: 1, character: 25}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: argumentOrParameter, includeSiblings: true}, isImplicit: false}]

View File

@ -0,0 +1,30 @@
languageId: scss
command:
version: 1
spokenForm: change funk
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: namedFunction, includeSiblings: false}
initialState:
documentContents: |-
@function pow($base, $exponent) {
$result: 1;
@for $_ from 1 through $exponent {
$result: $result * $base;
}
@return $result;
}
selections:
- anchor: {line: 1, character: 13}
active: {line: 1, character: 13}
marks: {}
finalState:
documentContents: ""
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: namedFunction, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,32 @@
languageId: scss
command:
version: 1
spokenForm: change funk
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: namedFunction, includeSiblings: false}
initialState:
documentContents: |-
@mixin theme-colors($light-theme: true) {
@if $light-theme {
background-color: $light-background;
color: $light-text;
} @else {
background-color: $dark-background;
color: $dark-text;
}
}
selections:
- anchor: {line: 7, character: 3}
active: {line: 7, character: 3}
marks: {}
finalState:
documentContents: ""
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: namedFunction, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change item
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: collectionItem, includeSiblings: false}
initialState:
documentContents: |-
a {
width: calc(100% - 80px);
}
selections:
- anchor: {line: 1, character: 12}
active: {line: 1, character: 12}
marks: {}
finalState:
documentContents: |-
a {
}
selections:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
thatMark:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: collectionItem, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change key
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: collectionKey, includeSiblings: false}
initialState:
documentContents: |
span[hello="Cleveland"][goodbye="Columbus"] {
color: blue;
}
selections:
- anchor: {line: 1, character: 4}
active: {line: 1, character: 4}
marks: {}
finalState:
documentContents: |
span[hello="Cleveland"][goodbye="Columbus"] {
: blue;
}
selections:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
thatMark:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: collectionKey, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change key
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: collectionKey, includeSiblings: false}
initialState:
documentContents: |-
span[hello="Cleveland"][goodbye="Columbus"] {
color: blue;
}
selections:
- anchor: {line: 1, character: 12}
active: {line: 1, character: 12}
marks: {}
finalState:
documentContents: |-
span[hello="Cleveland"][goodbye="Columbus"] {
: blue;
}
selections:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
thatMark:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: collectionKey, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,31 @@
languageId: scss
command:
version: 1
spokenForm: change name
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: name, includeSiblings: false}
initialState:
documentContents: |-
a {
height: 10px;
color: red;
}
selections:
- anchor: {line: 1, character: 12}
active: {line: 1, character: 12}
marks: {}
finalState:
documentContents: |-
a {
: 10px;
color: red;
}
selections:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
thatMark:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: name, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,37 @@
languageId: scss
command:
version: 1
spokenForm: change name
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: name, includeSiblings: false}
initialState:
documentContents: |-
@function pow($base, $exponent) {
$result: 1;
@for $_ from 1 through $exponent {
$result: $result * $base;
}
@return $result;
}
selections:
- anchor: {line: 1, character: 13}
active: {line: 1, character: 13}
marks: {}
finalState:
documentContents: |-
@function ($base, $exponent) {
$result: 1;
@for $_ from 1 through $exponent {
$result: $result * $base;
}
@return $result;
}
selections:
- anchor: {line: 0, character: 10}
active: {line: 0, character: 10}
thatMark:
- anchor: {line: 0, character: 10}
active: {line: 0, character: 10}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: name, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change name
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: name, includeSiblings: false}
initialState:
documentContents: |
a {
margin: 10px 10px 10px 10px;
}
selections:
- anchor: {line: 1, character: 14}
active: {line: 1, character: 14}
marks: {}
finalState:
documentContents: |
a {
: 10px 10px 10px 10px;
}
selections:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
thatMark:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: name, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change name
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: name, includeSiblings: false}
initialState:
documentContents: |
@mixin move($left-start, $left-stop) {
transition: left ($left-stop - $left-start) * $transition-speed;
}
selections:
- anchor: {line: 1, character: 7}
active: {line: 1, character: 7}
marks: {}
finalState:
documentContents: |
@mixin move($left-start, $left-stop) {
: left ($left-stop - $left-start) * $transition-speed;
}
selections:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
thatMark:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: name, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change name
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: name, includeSiblings: false}
initialState:
documentContents: |-
@mixin move($left-start, $left-stop) {
transition: left ($left-stop - $left-start) * $transition-speed;
}
selections:
- anchor: {line: 0, character: 3}
active: {line: 0, character: 3}
marks: {}
finalState:
documentContents: |-
@mixin ($left-start, $left-stop) {
transition: left ($left-stop - $left-start) * $transition-speed;
}
selections:
- anchor: {line: 0, character: 7}
active: {line: 0, character: 7}
thatMark:
- anchor: {line: 0, character: 7}
active: {line: 0, character: 7}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: name, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change name
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: name, includeSiblings: false}
initialState:
documentContents: |-
a[data-lang^="tel"] {
color: rgba(0, 255, 0, 0.5);
}
selections:
- anchor: {line: 0, character: 15}
active: {line: 0, character: 15}
marks: {}
finalState:
documentContents: |-
a[^="tel"] {
color: rgba(0, 255, 0, 0.5);
}
selections:
- anchor: {line: 0, character: 2}
active: {line: 0, character: 2}
thatMark:
- anchor: {line: 0, character: 2}
active: {line: 0, character: 2}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: name, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: css
command:
version: 1
spokenForm: change name
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: name, includeSiblings: false}
initialState:
documentContents: |-
a {
height: 10px;
}
selections:
- anchor: {line: 1, character: 5}
active: {line: 1, character: 5}
marks: {}
finalState:
documentContents: |-
a {
: 10px;
}
selections:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
thatMark:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: name, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change name
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: name, includeSiblings: false}
initialState:
documentContents: |-
@mixin foo($foo: 123) {
}
selections:
- anchor: {line: 0, character: 13}
active: {line: 0, character: 13}
marks: {}
finalState:
documentContents: |-
@mixin foo(: 123) {
}
selections:
- anchor: {line: 0, character: 11}
active: {line: 0, character: 11}
thatMark:
- anchor: {line: 0, character: 11}
active: {line: 0, character: 11}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: name, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change name
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: name, includeSiblings: false}
initialState:
documentContents: |-
@mixin foo($foo: 123) {
}
selections:
- anchor: {line: 0, character: 18}
active: {line: 0, character: 18}
marks: {}
finalState:
documentContents: |-
@mixin foo(: 123) {
}
selections:
- anchor: {line: 0, character: 11}
active: {line: 0, character: 11}
thatMark:
- anchor: {line: 0, character: 11}
active: {line: 0, character: 11}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: name, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change round
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: surroundingPair, delimiter: parentheses}
initialState:
documentContents: |-
a {
font-family: "hello (world)";
}
selections:
- anchor: {line: 1, character: 25}
active: {line: 1, character: 25}
marks: {}
finalState:
documentContents: |-
a {
font-family: "hello ";
}
selections:
- anchor: {line: 1, character: 22}
active: {line: 1, character: 22}
thatMark:
- anchor: {line: 1, character: 22}
active: {line: 1, character: 22}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: surroundingPair, delimiter: parentheses}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change selector
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: selector, includeSiblings: false}
initialState:
documentContents: |
span[hello="Cleveland"][goodbye="Columbus"] {
color: blue;
}
selections:
- anchor: {line: 1, character: 4}
active: {line: 1, character: 4}
marks: {}
finalState:
documentContents: |2
{
color: blue;
}
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: selector, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change selector
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: selector, includeSiblings: false}
initialState:
documentContents: |-
a.b ~ c.d {
}
selections:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
marks: {}
finalState:
documentContents: |2-
{
}
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: selector, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change selector
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: selector, includeSiblings: false}
initialState:
documentContents: |-
span[hello="Cleveland"][goodbye="Columbus"] {
color: blue;
}
selections:
- anchor: {line: 1, character: 11}
active: {line: 1, character: 11}
marks: {}
finalState:
documentContents: |2-
{
color: blue;
}
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: selector, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,25 @@
languageId: scss
command:
version: 1
spokenForm: change state
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: statement, includeSiblings: false}
initialState:
documentContents: |
@import "subs.css";
selections:
- anchor: {line: 0, character: 11}
active: {line: 0, character: 11}
marks: {}
finalState:
documentContents: |+
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: statement, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change state
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: statement, includeSiblings: false}
initialState:
documentContents: |
a {
&:hover { cursor: pointer; }
}
selections:
- anchor: {line: 1, character: 11}
active: {line: 1, character: 11}
marks: {}
finalState:
documentContents: |
a {
}
selections:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
thatMark:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: statement, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,31 @@
languageId: scss
command:
version: 1
spokenForm: change state
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: statement, includeSiblings: false}
initialState:
documentContents: |-
div {
a {
width: calc(100% - 80px);
}
}
selections:
- anchor: {line: 2, character: 6}
active: {line: 2, character: 6}
marks: {}
finalState:
documentContents: |-
div {
}
selections:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
thatMark:
- anchor: {line: 1, character: 2}
active: {line: 1, character: 2}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: statement, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,26 @@
languageId: scss
command:
version: 1
spokenForm: change state
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: statement, includeSiblings: false}
initialState:
documentContents: |-
a {
width: calc(100% - 80px);
}
selections:
- anchor: {line: 1, character: 12}
active: {line: 1, character: 12}
marks: {}
finalState:
documentContents: ""
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: statement, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,31 @@
languageId: scss
command:
version: 1
spokenForm: change state air
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: statement, includeSiblings: false}
mark: {type: decoratedSymbol, symbolColor: default, character: a}
initialState:
documentContents: |-
a {
height: 10px;
color: red;
}
selections:
- anchor: {line: 0, character: 3}
active: {line: 0, character: 3}
marks:
default.a:
start: {line: 0, character: 0}
end: {line: 0, character: 1}
finalState:
documentContents: ""
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: decoratedSymbol, symbolColor: default, character: a}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: statement, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,31 @@
languageId: scss
command:
version: 1
spokenForm: change state harp
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: statement, includeSiblings: false}
mark: {type: decoratedSymbol, symbolColor: default, character: h}
initialState:
documentContents: |-
a .child-selector {
height: 10px;
color: red;
}
selections:
- anchor: {line: 2, character: 13}
active: {line: 2, character: 13}
marks:
default.h:
start: {line: 0, character: 3}
end: {line: 0, character: 8}
finalState:
documentContents: ""
selections:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
thatMark:
- anchor: {line: 0, character: 0}
active: {line: 0, character: 0}
fullTargets: [{type: primitive, mark: {type: decoratedSymbol, symbolColor: default, character: h}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: statement, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,25 @@
languageId: scss
command:
version: 1
spokenForm: change value
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |
@import "subs.css";
selections:
- anchor: {line: 0, character: 10}
active: {line: 0, character: 10}
marks: {}
finalState:
documentContents: |
@import ;
selections:
- anchor: {line: 0, character: 8}
active: {line: 0, character: 8}
thatMark:
- anchor: {line: 0, character: 8}
active: {line: 0, character: 8}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change value
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |
@mixin horizontal-list {
@include rtl(float, left, right);
}
selections:
- anchor: {line: 1, character: 8}
active: {line: 1, character: 8}
marks: {}
finalState:
documentContents: |
@mixin horizontal-list {
@include ;
}
selections:
- anchor: {line: 1, character: 11}
active: {line: 1, character: 11}
thatMark:
- anchor: {line: 1, character: 11}
active: {line: 1, character: 11}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change value
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |-
a[data-lang^="tel"] {
color: rgba(0, 255, 0, 0.5);
}
selections:
- anchor: {line: 0, character: 3}
active: {line: 0, character: 3}
marks: {}
finalState:
documentContents: |-
a[data-lang^=] {
color: rgba(0, 255, 0, 0.5);
}
selections:
- anchor: {line: 0, character: 13}
active: {line: 0, character: 13}
thatMark:
- anchor: {line: 0, character: 13}
active: {line: 0, character: 13}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change value
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |-
@mixin foo($foo: 123) {
}
selections:
- anchor: {line: 0, character: 13}
active: {line: 0, character: 13}
marks: {}
finalState:
documentContents: |-
@mixin foo($foo: ) {
}
selections:
- anchor: {line: 0, character: 17}
active: {line: 0, character: 17}
thatMark:
- anchor: {line: 0, character: 17}
active: {line: 0, character: 17}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change value
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |-
@mixin foo($foo: 123) {
}
selections:
- anchor: {line: 0, character: 18}
active: {line: 0, character: 18}
marks: {}
finalState:
documentContents: |-
@mixin foo($foo: ) {
}
selections:
- anchor: {line: 0, character: 17}
active: {line: 0, character: 17}
thatMark:
- anchor: {line: 0, character: 17}
active: {line: 0, character: 17}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change value
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |-
@mixin foo($foo: red) {
}
selections:
- anchor: {line: 0, character: 13}
active: {line: 0, character: 13}
marks: {}
finalState:
documentContents: |-
@mixin foo($foo: ) {
}
selections:
- anchor: {line: 0, character: 17}
active: {line: 0, character: 17}
thatMark:
- anchor: {line: 0, character: 17}
active: {line: 0, character: 17}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change value
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |-
@mixin foo($foo: red) {
}
selections:
- anchor: {line: 0, character: 19}
active: {line: 0, character: 19}
marks: {}
finalState:
documentContents: |-
@mixin foo($foo: ) {
}
selections:
- anchor: {line: 0, character: 17}
active: {line: 0, character: 17}
thatMark:
- anchor: {line: 0, character: 17}
active: {line: 0, character: 17}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,31 @@
languageId: scss
command:
version: 1
spokenForm: change value
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |-
a {
height: 10px;
color: red;
}
selections:
- anchor: {line: 1, character: 12}
active: {line: 1, character: 12}
marks: {}
finalState:
documentContents: |-
a {
height: ;
color: red;
}
selections:
- anchor: {line: 1, character: 10}
active: {line: 1, character: 10}
thatMark:
- anchor: {line: 1, character: 10}
active: {line: 1, character: 10}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,37 @@
languageId: scss
command:
version: 1
spokenForm: change value
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |-
@function pow($base, $exponent) {
$result: 1;
@for $_ from 1 through $exponent {
$result: $result * $base;
}
@return $result;
}
selections:
- anchor: {line: 5, character: 11}
active: {line: 5, character: 11}
marks: {}
finalState:
documentContents: |-
@function pow($base, $exponent) {
$result: 1;
@for $_ from 1 through $exponent {
$result: $result * $base;
}
@return ;
}
selections:
- anchor: {line: 5, character: 10}
active: {line: 5, character: 10}
thatMark:
- anchor: {line: 5, character: 10}
active: {line: 5, character: 10}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change value
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |
a {
margin: 10px 10px 10px 10px;
}
selections:
- anchor: {line: 1, character: 4}
active: {line: 1, character: 4}
marks: {}
finalState:
documentContents: |
a {
margin: ;
}
selections:
- anchor: {line: 1, character: 10}
active: {line: 1, character: 10}
thatMark:
- anchor: {line: 1, character: 10}
active: {line: 1, character: 10}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change value
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |
a {
height: $button-height;
}
selections:
- anchor: {line: 1, character: 5}
active: {line: 1, character: 5}
marks: {}
finalState:
documentContents: |
a {
height: ;
}
selections:
- anchor: {line: 1, character: 10}
active: {line: 1, character: 10}
thatMark:
- anchor: {line: 1, character: 10}
active: {line: 1, character: 10}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change value
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |
a {
background-image: url("/icons/mail.svg");
}
selections:
- anchor: {line: 1, character: 35}
active: {line: 1, character: 35}
marks: {}
finalState:
documentContents: |
a {
background-image: ;
}
selections:
- anchor: {line: 1, character: 20}
active: {line: 1, character: 20}
thatMark:
- anchor: {line: 1, character: 20}
active: {line: 1, character: 20}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change value
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |
@mixin move($left-start, $left-stop) {
transition: left ($left-stop - $left-start) * $transition-speed;
}
selections:
- anchor: {line: 1, character: 11}
active: {line: 1, character: 11}
marks: {}
finalState:
documentContents: |
@mixin move($left-start, $left-stop) {
transition: ;
}
selections:
- anchor: {line: 1, character: 14}
active: {line: 1, character: 14}
thatMark:
- anchor: {line: 1, character: 14}
active: {line: 1, character: 14}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change value
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |
@mixin horizontal-list {
@include rtl(float, left, right);
}
selections:
- anchor: {line: 1, character: 13}
active: {line: 1, character: 13}
marks: {}
finalState:
documentContents: |
@mixin horizontal-list {
@include ;
}
selections:
- anchor: {line: 1, character: 11}
active: {line: 1, character: 11}
thatMark:
- anchor: {line: 1, character: 11}
active: {line: 1, character: 11}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

View File

@ -0,0 +1,29 @@
languageId: scss
command:
version: 1
spokenForm: change value
action: clearAndSetSelection
targets:
- type: primitive
modifier: {type: containingScope, scopeType: value, includeSiblings: false}
initialState:
documentContents: |-
a[data-lang^="tel"] {
color: rgba(0, 255, 0, 0.5);
}
selections:
- anchor: {line: 0, character: 16}
active: {line: 0, character: 16}
marks: {}
finalState:
documentContents: |-
a[data-lang^=] {
color: rgba(0, 255, 0, 0.5);
}
selections:
- anchor: {line: 0, character: 13}
active: {line: 0, character: 13}
thatMark:
- anchor: {line: 0, character: 13}
active: {line: 0, character: 13}
fullTargets: [{type: primitive, mark: {type: cursor}, selectionType: token, position: contents, insideOutsideType: inside, modifier: {type: containingScope, scopeType: value, includeSiblings: false}, isImplicit: false}]

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