From 9dafad998eeb9f72a5583ace5a40799b88f43961 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Wed, 29 Nov 2023 15:17:11 +0100 Subject: [PATCH 1/6] Added yaml support --- .../languages/yaml/changeEveryItem.yml | 28 ++++++++++++ .../languages/yaml/changeEveryItem2.yml | 25 +++++++++++ .../languages/yaml/changeEveryItem3.yml | 31 +++++++++++++ .../languages/yaml/changeEveryItem4.yml | 25 +++++++++++ .../languages/yaml/changeEveryKey.yml | 29 ++++++++++++ .../languages/yaml/changeEveryKey2.yml | 25 +++++++++++ .../languages/yaml/changeEveryValue.yml | 29 ++++++++++++ .../languages/yaml/changeEveryValue2.yml | 25 +++++++++++ .../recorded/languages/yaml/changeItem.yml | 23 ++++++++++ .../recorded/languages/yaml/changeItem2.yml | 29 ++++++++++++ .../recorded/languages/yaml/changeItem3.yml | 23 ++++++++++ .../recorded/languages/yaml/changeKey.yml | 23 ++++++++++ .../languages/yaml/changeLeadingValue.yml | 24 ++++++++++ .../recorded/languages/yaml/changeList.yml | 28 ++++++++++++ .../recorded/languages/yaml/changeList2.yml | 23 ++++++++++ .../recorded/languages/yaml/changeMap.yml | 23 ++++++++++ .../languages/yaml/changeTrailingKey.yml | 24 ++++++++++ .../recorded/languages/yaml/changeValue.yml | 23 ++++++++++ queries/yaml.scm | 45 +++++++++++++++++++ 19 files changed, 505 insertions(+) create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryItem.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryItem2.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryItem3.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryItem4.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryKey.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryKey2.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryValue.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryValue2.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeItem.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeItem2.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeItem3.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeKey.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeLeadingValue.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeList.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeList2.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeMap.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeTrailingKey.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeValue.yml create mode 100644 queries/yaml.scm diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryItem.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryItem.yml new file mode 100644 index 0000000000..8206e4505b --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryItem.yml @@ -0,0 +1,28 @@ +languageId: yaml +command: + version: 6 + spokenForm: change every item + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: everyScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + foo: bar + baz: bongo + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: |+ + + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + - anchor: {line: 1, character: 0} + active: {line: 1, character: 0} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryItem2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryItem2.yml new file mode 100644 index 0000000000..b58812494e --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryItem2.yml @@ -0,0 +1,25 @@ +languageId: yaml +command: + version: 6 + spokenForm: change every item + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: everyScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: "foo: { bar: baz, bongo: 0}" + selections: + - anchor: {line: 0, character: 6} + active: {line: 0, character: 6} + marks: {} +finalState: + documentContents: "foo: { , }" + selections: + - anchor: {line: 0, character: 7} + active: {line: 0, character: 7} + - anchor: {line: 0, character: 9} + active: {line: 0, character: 9} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryItem3.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryItem3.yml new file mode 100644 index 0000000000..82bcfcb031 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryItem3.yml @@ -0,0 +1,31 @@ +languageId: yaml +command: + version: 6 + spokenForm: change every item + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: everyScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + foo: + - 0 + - 1 + selections: + - anchor: {line: 1, character: 2} + active: {line: 1, character: 2} + marks: {} +finalState: + documentContents: |- + foo: + + + selections: + - anchor: {line: 1, character: 2} + active: {line: 1, character: 2} + - anchor: {line: 2, character: 2} + active: {line: 2, character: 2} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryItem4.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryItem4.yml new file mode 100644 index 0000000000..623f6fbc51 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryItem4.yml @@ -0,0 +1,25 @@ +languageId: yaml +command: + version: 6 + spokenForm: change every item + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: everyScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: "bar: [0, 1]" + selections: + - anchor: {line: 0, character: 6} + active: {line: 0, character: 6} + marks: {} +finalState: + documentContents: "bar: [, ]" + selections: + - anchor: {line: 0, character: 6} + active: {line: 0, character: 6} + - anchor: {line: 0, character: 8} + active: {line: 0, character: 8} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryKey.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryKey.yml new file mode 100644 index 0000000000..b4d4a3f54b --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryKey.yml @@ -0,0 +1,29 @@ +languageId: yaml +command: + version: 6 + spokenForm: change every key + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: everyScope + scopeType: {type: collectionKey} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + foo: bar + baz: bongo + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: |- + : bar + : bongo + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + - anchor: {line: 1, character: 0} + active: {line: 1, character: 0} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryKey2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryKey2.yml new file mode 100644 index 0000000000..fa9c2bfc28 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryKey2.yml @@ -0,0 +1,25 @@ +languageId: yaml +command: + version: 6 + spokenForm: change every key + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: everyScope + scopeType: {type: collectionKey} + usePrePhraseSnapshot: true +initialState: + documentContents: "foo: { bar: baz, bongo: 0}" + selections: + - anchor: {line: 0, character: 6} + active: {line: 0, character: 6} + marks: {} +finalState: + documentContents: "foo: { : baz, : 0}" + selections: + - anchor: {line: 0, character: 7} + active: {line: 0, character: 7} + - anchor: {line: 0, character: 14} + active: {line: 0, character: 14} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryValue.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryValue.yml new file mode 100644 index 0000000000..cf62110af2 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryValue.yml @@ -0,0 +1,29 @@ +languageId: yaml +command: + version: 6 + spokenForm: change every value + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: everyScope + scopeType: {type: value} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + foo: bar + baz: bongo + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: |- + foo: + baz: + selections: + - anchor: {line: 0, character: 5} + active: {line: 0, character: 5} + - anchor: {line: 1, character: 5} + active: {line: 1, character: 5} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryValue2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryValue2.yml new file mode 100644 index 0000000000..fc97fb7d5b --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeEveryValue2.yml @@ -0,0 +1,25 @@ +languageId: yaml +command: + version: 6 + spokenForm: change every value + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: everyScope + scopeType: {type: value} + usePrePhraseSnapshot: true +initialState: + documentContents: "foo: { bar: baz, bongo: 0}" + selections: + - anchor: {line: 0, character: 6} + active: {line: 0, character: 6} + marks: {} +finalState: + documentContents: "foo: { bar: , bongo: }" + selections: + - anchor: {line: 0, character: 12} + active: {line: 0, character: 12} + - anchor: {line: 0, character: 21} + active: {line: 0, character: 21} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeItem.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeItem.yml new file mode 100644 index 0000000000..62571ecd7f --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeItem.yml @@ -0,0 +1,23 @@ +languageId: yaml +command: + version: 6 + spokenForm: change item + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: "foo: bar" + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: "" + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeItem2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeItem2.yml new file mode 100644 index 0000000000..42ae1cc305 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeItem2.yml @@ -0,0 +1,29 @@ +languageId: yaml +command: + version: 6 + spokenForm: change item + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + foo: + - 0 + - 1 + selections: + - anchor: {line: 1, character: 2} + active: {line: 1, character: 2} + marks: {} +finalState: + documentContents: |- + foo: + + - 1 + selections: + - anchor: {line: 1, character: 2} + active: {line: 1, character: 2} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeItem3.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeItem3.yml new file mode 100644 index 0000000000..bddafbb119 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeItem3.yml @@ -0,0 +1,23 @@ +languageId: yaml +command: + version: 6 + spokenForm: change item + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: "bar: [0, 1]" + selections: + - anchor: {line: 0, character: 6} + active: {line: 0, character: 6} + marks: {} +finalState: + documentContents: "bar: [, 1]" + selections: + - anchor: {line: 0, character: 6} + active: {line: 0, character: 6} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeKey.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeKey.yml new file mode 100644 index 0000000000..5a2719f42d --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeKey.yml @@ -0,0 +1,23 @@ +languageId: yaml +command: + version: 6 + spokenForm: change key + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionKey} + usePrePhraseSnapshot: true +initialState: + documentContents: "foo: bar" + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: ": bar" + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeLeadingValue.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeLeadingValue.yml new file mode 100644 index 0000000000..949ce201de --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeLeadingValue.yml @@ -0,0 +1,24 @@ +languageId: yaml +command: + version: 6 + spokenForm: change leading value + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - {type: leading} + - type: containingScope + scopeType: {type: value} + usePrePhraseSnapshot: true +initialState: + documentContents: "foo: bar" + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: foobar + selections: + - anchor: {line: 0, character: 3} + active: {line: 0, character: 3} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeList.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeList.yml new file mode 100644 index 0000000000..59f41444f2 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeList.yml @@ -0,0 +1,28 @@ +languageId: yaml +command: + version: 6 + spokenForm: change list + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: list} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + foo: + - 0 + - 1 + selections: + - anchor: {line: 1, character: 2} + active: {line: 1, character: 2} + marks: {} +finalState: + documentContents: |- + foo: + + selections: + - anchor: {line: 1, character: 2} + active: {line: 1, character: 2} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeList2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeList2.yml new file mode 100644 index 0000000000..d18295231a --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeList2.yml @@ -0,0 +1,23 @@ +languageId: yaml +command: + version: 6 + spokenForm: change list + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: list} + usePrePhraseSnapshot: true +initialState: + documentContents: "bar: [0, 1]" + selections: + - anchor: {line: 0, character: 6} + active: {line: 0, character: 6} + marks: {} +finalState: + documentContents: "bar: " + selections: + - anchor: {line: 0, character: 5} + active: {line: 0, character: 5} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeMap.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeMap.yml new file mode 100644 index 0000000000..0a26e04e30 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeMap.yml @@ -0,0 +1,23 @@ +languageId: yaml +command: + version: 6 + spokenForm: change map + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: map} + usePrePhraseSnapshot: true +initialState: + documentContents: "foo: { bar: baz, bongo: 0}" + selections: + - anchor: {line: 0, character: 6} + active: {line: 0, character: 6} + marks: {} +finalState: + documentContents: "foo: " + selections: + - anchor: {line: 0, character: 5} + active: {line: 0, character: 5} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeTrailingKey.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeTrailingKey.yml new file mode 100644 index 0000000000..78ba836002 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeTrailingKey.yml @@ -0,0 +1,24 @@ +languageId: yaml +command: + version: 6 + spokenForm: change trailing key + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - {type: trailing} + - type: containingScope + scopeType: {type: collectionKey} + usePrePhraseSnapshot: true +initialState: + documentContents: "foo: bar" + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: foobar + selections: + - anchor: {line: 0, character: 3} + active: {line: 0, character: 3} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeValue.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeValue.yml new file mode 100644 index 0000000000..c882b0c046 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeValue.yml @@ -0,0 +1,23 @@ +languageId: yaml +command: + version: 6 + spokenForm: change value + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: value} + usePrePhraseSnapshot: true +initialState: + documentContents: "foo: bar" + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: "foo: " + selections: + - anchor: {line: 0, character: 5} + active: {line: 0, character: 5} diff --git a/queries/yaml.scm b/queries/yaml.scm new file mode 100644 index 0000000000..ce14c65559 --- /dev/null +++ b/queries/yaml.scm @@ -0,0 +1,45 @@ +;;!! foo: bar +;;! ^^^ ^^^ +(_ + key: (_) @collectionKey @collectionKey.trailing.start.endOf @value.leading.start.endOf + value: (_) @value @collectionKey.trailing.start.startOf @value.leading.start.startOf +) @collectionItem @_.domain + +(block_mapping) @collectionItem.iteration @collectionKey.iteration @value.iteration + +(flow_pair) @collectionItem + +;;!! languageId: plauintext +;;! ^^^^^^^^^^ +(string_scalar) @string @textFragment + +;;!! # comment +;;! ^^^^^^^^^ +(comment) @comment @textFragment + +;;!! | block scalar +(block_scalar) @textFragment + +;;!! { foo: bar } +;;! ^^^^^^^^^^^^ +(flow_mapping) @map +(flow_mapping) @collectionItem.iteration @collectionKey.iteration @value.iteration + +[ + ;;!! - 0\n- 1 + ;;! ^^^^^^^^ + (block_sequence) + ;;!! [0, 1] + ;;! ^^^^^^ + (flow_sequence) +] @list @collectionItem.iteration + +;;!! - 0 +;;! ^^^ +(block_sequence_item) @collectionItem + +;;!! [0] +;;! ^ +(flow_sequence + (flow_node) @collectionItem +) From 3f0fcd4deeef9cb9a475925b9ae213d3c26bd370 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Wed, 29 Nov 2023 15:42:10 +0100 Subject: [PATCH 2/6] Improve item --- .../recorded/languages/yaml/changeMap2.yml | 25 ++++++ .../recorded/languages/yaml/chuckItem.yml | 28 +++++++ .../recorded/languages/yaml/chuckItem2.yml | 28 +++++++ .../recorded/languages/yaml/chuckItem3.yml | 23 ++++++ .../recorded/languages/yaml/chuckItem4.yml | 23 ++++++ .../recorded/languages/yaml/chuckItem5.yml | 25 ++++++ .../recorded/languages/yaml/chuckItem6.yml | 25 ++++++ .../recorded/languages/yaml/chuckItem7.yml | 25 ++++++ .../recorded/languages/yaml/chuckItem8.yml | 25 ++++++ queries/yaml.scm | 77 ++++++++++++------- 10 files changed, 275 insertions(+), 29 deletions(-) create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeMap2.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem2.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem3.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem4.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem5.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem6.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem7.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem8.yml diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeMap2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeMap2.yml new file mode 100644 index 0000000000..8811b7de67 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeMap2.yml @@ -0,0 +1,25 @@ +languageId: yaml +command: + version: 6 + spokenForm: change map + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: map} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + foo: 0 + bar: 1 + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: "" + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem.yml new file mode 100644 index 0000000000..dc2d58acbd --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem.yml @@ -0,0 +1,28 @@ +languageId: yaml +command: + version: 6 + spokenForm: chuck item + action: + name: remove + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + values: + - 0 + - 1 + selections: + - anchor: {line: 1, character: 4} + active: {line: 1, character: 4} + marks: {} +finalState: + documentContents: |- + values: + - 1 + selections: + - anchor: {line: 1, character: 4} + active: {line: 1, character: 4} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem2.yml new file mode 100644 index 0000000000..4026297556 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem2.yml @@ -0,0 +1,28 @@ +languageId: yaml +command: + version: 6 + spokenForm: chuck item + action: + name: remove + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + values: + - 0 + - 1 + selections: + - anchor: {line: 2, character: 4} + active: {line: 2, character: 4} + marks: {} +finalState: + documentContents: |- + values: + - 0 + selections: + - anchor: {line: 1, character: 7} + active: {line: 1, character: 7} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem3.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem3.yml new file mode 100644 index 0000000000..10a428d5c2 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem3.yml @@ -0,0 +1,23 @@ +languageId: yaml +command: + version: 6 + spokenForm: chuck item + action: + name: remove + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: "values: [0, 1]" + selections: + - anchor: {line: 0, character: 9} + active: {line: 0, character: 9} + marks: {} +finalState: + documentContents: "values: [1]" + selections: + - anchor: {line: 0, character: 9} + active: {line: 0, character: 9} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem4.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem4.yml new file mode 100644 index 0000000000..8db772570a --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem4.yml @@ -0,0 +1,23 @@ +languageId: yaml +command: + version: 6 + spokenForm: chuck item + action: + name: remove + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: "values: [0, 1]" + selections: + - anchor: {line: 0, character: 13} + active: {line: 0, character: 13} + marks: {} +finalState: + documentContents: "values: [0]" + selections: + - anchor: {line: 0, character: 10} + active: {line: 0, character: 10} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem5.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem5.yml new file mode 100644 index 0000000000..b90ab39977 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem5.yml @@ -0,0 +1,25 @@ +languageId: yaml +command: + version: 6 + spokenForm: chuck item + action: + name: remove + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + foo: 0 + bar: 0 + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: "bar: 0" + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem6.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem6.yml new file mode 100644 index 0000000000..1c2f2c0d48 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem6.yml @@ -0,0 +1,25 @@ +languageId: yaml +command: + version: 6 + spokenForm: chuck item + action: + name: remove + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + foo: 0 + bar: 0 + selections: + - anchor: {line: 1, character: 0} + active: {line: 1, character: 0} + marks: {} +finalState: + documentContents: "foo: 0" + selections: + - anchor: {line: 0, character: 6} + active: {line: 0, character: 6} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem7.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem7.yml new file mode 100644 index 0000000000..e40b110740 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem7.yml @@ -0,0 +1,25 @@ +languageId: yaml +command: + version: 6 + spokenForm: chuck item + action: + name: remove + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: | + values: {foo: 0, bar: 0} + selections: + - anchor: {line: 0, character: 9} + active: {line: 0, character: 9} + marks: {} +finalState: + documentContents: | + values: {bar: 0} + selections: + - anchor: {line: 0, character: 9} + active: {line: 0, character: 9} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem8.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem8.yml new file mode 100644 index 0000000000..4d2203e19b --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/chuckItem8.yml @@ -0,0 +1,25 @@ +languageId: yaml +command: + version: 6 + spokenForm: chuck item + action: + name: remove + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: | + values: {foo: 0, bar: 0} + selections: + - anchor: {line: 0, character: 17} + active: {line: 0, character: 17} + marks: {} +finalState: + documentContents: | + values: {foo: 0} + selections: + - anchor: {line: 0, character: 15} + active: {line: 0, character: 15} diff --git a/queries/yaml.scm b/queries/yaml.scm index ce14c65559..0a3b9148ce 100644 --- a/queries/yaml.scm +++ b/queries/yaml.scm @@ -1,13 +1,56 @@ -;;!! foo: bar -;;! ^^^ ^^^ +;; ;;!! foo: bar +;; ;;! ^^^ ^^^ (_ key: (_) @collectionKey @collectionKey.trailing.start.endOf @value.leading.start.endOf value: (_) @value @collectionKey.trailing.start.startOf @value.leading.start.startOf -) @collectionItem @_.domain +) @_.domain + +;;!! foo: bar +;;! ^^^^^^^^ +(block_mapping + (block_mapping_pair)? @collectionItem.leading.start.endOf + . + (block_mapping_pair) @collectionItem @collectionItem.leading.end.startOf @collectionItem.trailing.end.endOf + . + (block_mapping_pair)? @collectionItem.trailing.end.startOf +) @map + +;;!! - 0 +;;! ^^^ +(block_sequence + (block_sequence_item)? @collectionItem.leading.start.endOf + . + (block_sequence_item) @collectionItem @collectionItem.leading.end.startOf @collectionItem.trailing.end.endOf + . + (block_sequence_item)? @collectionItem.trailing.end.startOf +) @list + +;;!! [0] +;;! ^ +(flow_sequence + (flow_node)? @collectionItem.leading.start.endOf + . + (flow_node) @collectionItem @collectionItem.leading.end.startOf @collectionItem.trailing.end.endOf + . + (flow_node)? @collectionItem.trailing.end.startOf +) @list -(block_mapping) @collectionItem.iteration @collectionKey.iteration @value.iteration +;;!! { foo: bar } +;;! ^^^^^^^^ +(flow_mapping + (flow_pair)? @collectionItem.leading.start.endOf + . + (flow_pair) @collectionItem @collectionItem.leading.end.startOf @collectionItem.trailing.end.endOf + . + (flow_pair)? @collectionItem.trailing.end.startOf +) @map -(flow_pair) @collectionItem +[ + (block_mapping) + (block_sequence) + (flow_sequence) + (flow_mapping) +] @collectionItem.iteration @collectionKey.iteration @value.iteration ;;!! languageId: plauintext ;;! ^^^^^^^^^^ @@ -19,27 +62,3 @@ ;;!! | block scalar (block_scalar) @textFragment - -;;!! { foo: bar } -;;! ^^^^^^^^^^^^ -(flow_mapping) @map -(flow_mapping) @collectionItem.iteration @collectionKey.iteration @value.iteration - -[ - ;;!! - 0\n- 1 - ;;! ^^^^^^^^ - (block_sequence) - ;;!! [0, 1] - ;;! ^^^^^^ - (flow_sequence) -] @list @collectionItem.iteration - -;;!! - 0 -;;! ^^^ -(block_sequence_item) @collectionItem - -;;!! [0] -;;! ^ -(flow_sequence - (flow_node) @collectionItem -) From 4f56f3a41eb53f0e9d13642dd2b86996442a2cc6 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Wed, 29 Nov 2023 15:49:12 +0100 Subject: [PATCH 3/6] Added insertion delimiter --- .../recorded/languages/yaml/drinkItem.yml | 25 +++++++++++++++++ .../recorded/languages/yaml/drinkItem2.yml | 25 +++++++++++++++++ .../recorded/languages/yaml/drinkItem3.yml | 28 +++++++++++++++++++ .../recorded/languages/yaml/pourItem.yml | 24 ++++++++++++++++ .../recorded/languages/yaml/pourItem2.yml | 25 +++++++++++++++++ .../recorded/languages/yaml/pourItem3.yml | 25 +++++++++++++++++ .../recorded/languages/yaml/pourItem4.yml | 28 +++++++++++++++++++ queries/yaml.scm | 6 ++-- 8 files changed, 184 insertions(+), 2 deletions(-) create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/drinkItem.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/drinkItem2.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/drinkItem3.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/pourItem.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/pourItem2.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/pourItem3.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/pourItem4.yml diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/drinkItem.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/drinkItem.yml new file mode 100644 index 0000000000..44a39b9b69 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/drinkItem.yml @@ -0,0 +1,25 @@ +languageId: yaml +command: + version: 6 + spokenForm: drink item + action: + name: editNewLineBefore + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: | + values: [0] + selections: + - anchor: {line: 0, character: 10} + active: {line: 0, character: 10} + marks: {} +finalState: + documentContents: | + values: [, 0] + selections: + - anchor: {line: 0, character: 9} + active: {line: 0, character: 9} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/drinkItem2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/drinkItem2.yml new file mode 100644 index 0000000000..5d5182cdb7 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/drinkItem2.yml @@ -0,0 +1,25 @@ +languageId: yaml +command: + version: 6 + spokenForm: drink item + action: + name: editNewLineBefore + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: | + values: { foo: bar } + selections: + - anchor: {line: 0, character: 10} + active: {line: 0, character: 10} + marks: {} +finalState: + documentContents: | + values: { , foo: bar } + selections: + - anchor: {line: 0, character: 10} + active: {line: 0, character: 10} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/drinkItem3.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/drinkItem3.yml new file mode 100644 index 0000000000..eb4decd944 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/drinkItem3.yml @@ -0,0 +1,28 @@ +languageId: yaml +command: + version: 6 + spokenForm: drink item + action: + name: editNewLineBefore + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + foo: 0 + bar: 1 + selections: + - anchor: {line: 1, character: 0} + active: {line: 1, character: 0} + marks: {} +finalState: + documentContents: |- + foo: 0 + + bar: 1 + selections: + - anchor: {line: 1, character: 0} + active: {line: 1, character: 0} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/pourItem.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/pourItem.yml new file mode 100644 index 0000000000..8b87f5e3ea --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/pourItem.yml @@ -0,0 +1,24 @@ +languageId: yaml +command: + version: 6 + spokenForm: pour item + action: + name: editNewLineAfter + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: "values: [0]" + selections: + - anchor: {line: 0, character: 9} + active: {line: 0, character: 9} + marks: {} +finalState: + documentContents: | + values: [0] + selections: + - anchor: {line: 1, character: 0} + active: {line: 1, character: 0} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/pourItem2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/pourItem2.yml new file mode 100644 index 0000000000..df8b0c27f2 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/pourItem2.yml @@ -0,0 +1,25 @@ +languageId: yaml +command: + version: 6 + spokenForm: pour item + action: + name: editNewLineAfter + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: | + values: [0] + selections: + - anchor: {line: 0, character: 10} + active: {line: 0, character: 10} + marks: {} +finalState: + documentContents: | + values: [0, ] + selections: + - anchor: {line: 0, character: 12} + active: {line: 0, character: 12} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/pourItem3.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/pourItem3.yml new file mode 100644 index 0000000000..984c318ac3 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/pourItem3.yml @@ -0,0 +1,25 @@ +languageId: yaml +command: + version: 6 + spokenForm: pour item + action: + name: editNewLineAfter + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: | + values: { foo: bar } + selections: + - anchor: {line: 0, character: 10} + active: {line: 0, character: 10} + marks: {} +finalState: + documentContents: | + values: { foo: bar, } + selections: + - anchor: {line: 0, character: 20} + active: {line: 0, character: 20} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/pourItem4.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/pourItem4.yml new file mode 100644 index 0000000000..701649b0ae --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/pourItem4.yml @@ -0,0 +1,28 @@ +languageId: yaml +command: + version: 6 + spokenForm: pour item + action: + name: editNewLineAfter + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + foo: 0 + bar: 1 + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: |- + foo: 0 + + bar: 1 + selections: + - anchor: {line: 1, character: 0} + active: {line: 1, character: 0} diff --git a/queries/yaml.scm b/queries/yaml.scm index 0a3b9148ce..a6e61a3640 100644 --- a/queries/yaml.scm +++ b/queries/yaml.scm @@ -33,6 +33,7 @@ (flow_node) @collectionItem @collectionItem.leading.end.startOf @collectionItem.trailing.end.endOf . (flow_node)? @collectionItem.trailing.end.startOf + (#insertion-delimiter! @collectionItem ", ") ) @list ;;!! { foo: bar } @@ -43,6 +44,7 @@ (flow_pair) @collectionItem @collectionItem.leading.end.startOf @collectionItem.trailing.end.endOf . (flow_pair)? @collectionItem.trailing.end.startOf + (#insertion-delimiter! @collectionItem ", ") ) @map [ @@ -52,8 +54,8 @@ (flow_mapping) ] @collectionItem.iteration @collectionKey.iteration @value.iteration -;;!! languageId: plauintext -;;! ^^^^^^^^^^ +;;!! foo: bar +;;! ^^^ (string_scalar) @string @textFragment ;;!! # comment From 18d93549a5b22257571305234c38c5952b233cc4 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Wed, 29 Nov 2023 15:53:34 +0100 Subject: [PATCH 4/6] cleanup --- .../fixtures/recorded/languages/yaml/pourItem.yml | 7 +++---- queries/yaml.scm | 10 ++++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/pourItem.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/pourItem.yml index 8b87f5e3ea..728d038baa 100644 --- a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/pourItem.yml +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/pourItem.yml @@ -17,8 +17,7 @@ initialState: active: {line: 0, character: 9} marks: {} finalState: - documentContents: | - values: [0] + documentContents: "values: [0, ]" selections: - - anchor: {line: 1, character: 0} - active: {line: 1, character: 0} + - anchor: {line: 0, character: 12} + active: {line: 0, character: 12} diff --git a/queries/yaml.scm b/queries/yaml.scm index a6e61a3640..7f613c99d1 100644 --- a/queries/yaml.scm +++ b/queries/yaml.scm @@ -56,11 +56,13 @@ ;;!! foo: bar ;;! ^^^ -(string_scalar) @string @textFragment +;;!! | block scalar +;;! ^^^^^^^^^^^^^ +[ + (string_scalar) + (block_scalar) +] @string @textFragment ;;!! # comment ;;! ^^^^^^^^^ (comment) @comment @textFragment - -;;!! | block scalar -(block_scalar) @textFragment From d9d14b2183fbb470d86cc31471d9ed0b71484f54 Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Thu, 30 Nov 2023 18:05:23 +0000 Subject: [PATCH 5/6] Indentation --- queries/yaml.scm | 60 ++++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/queries/yaml.scm b/queries/yaml.scm index 7f613c99d1..ba4b0bab7d 100644 --- a/queries/yaml.scm +++ b/queries/yaml.scm @@ -1,57 +1,57 @@ ;; ;;!! foo: bar ;; ;;! ^^^ ^^^ (_ - key: (_) @collectionKey @collectionKey.trailing.start.endOf @value.leading.start.endOf - value: (_) @value @collectionKey.trailing.start.startOf @value.leading.start.startOf + key: (_) @collectionKey @collectionKey.trailing.start.endOf @value.leading.start.endOf + value: (_) @value @collectionKey.trailing.start.startOf @value.leading.start.startOf ) @_.domain ;;!! foo: bar ;;! ^^^^^^^^ (block_mapping - (block_mapping_pair)? @collectionItem.leading.start.endOf - . - (block_mapping_pair) @collectionItem @collectionItem.leading.end.startOf @collectionItem.trailing.end.endOf - . - (block_mapping_pair)? @collectionItem.trailing.end.startOf + (block_mapping_pair)? @collectionItem.leading.start.endOf + . + (block_mapping_pair) @collectionItem @collectionItem.leading.end.startOf @collectionItem.trailing.end.endOf + . + (block_mapping_pair)? @collectionItem.trailing.end.startOf ) @map ;;!! - 0 ;;! ^^^ (block_sequence - (block_sequence_item)? @collectionItem.leading.start.endOf - . - (block_sequence_item) @collectionItem @collectionItem.leading.end.startOf @collectionItem.trailing.end.endOf - . - (block_sequence_item)? @collectionItem.trailing.end.startOf + (block_sequence_item)? @collectionItem.leading.start.endOf + . + (block_sequence_item) @collectionItem @collectionItem.leading.end.startOf @collectionItem.trailing.end.endOf + . + (block_sequence_item)? @collectionItem.trailing.end.startOf ) @list ;;!! [0] ;;! ^ (flow_sequence - (flow_node)? @collectionItem.leading.start.endOf - . - (flow_node) @collectionItem @collectionItem.leading.end.startOf @collectionItem.trailing.end.endOf - . - (flow_node)? @collectionItem.trailing.end.startOf - (#insertion-delimiter! @collectionItem ", ") + (flow_node)? @collectionItem.leading.start.endOf + . + (flow_node) @collectionItem @collectionItem.leading.end.startOf @collectionItem.trailing.end.endOf + . + (flow_node)? @collectionItem.trailing.end.startOf + (#insertion-delimiter! @collectionItem ", ") ) @list ;;!! { foo: bar } ;;! ^^^^^^^^ (flow_mapping - (flow_pair)? @collectionItem.leading.start.endOf - . - (flow_pair) @collectionItem @collectionItem.leading.end.startOf @collectionItem.trailing.end.endOf - . - (flow_pair)? @collectionItem.trailing.end.startOf - (#insertion-delimiter! @collectionItem ", ") + (flow_pair)? @collectionItem.leading.start.endOf + . + (flow_pair) @collectionItem @collectionItem.leading.end.startOf @collectionItem.trailing.end.endOf + . + (flow_pair)? @collectionItem.trailing.end.startOf + (#insertion-delimiter! @collectionItem ", ") ) @map [ - (block_mapping) - (block_sequence) - (flow_sequence) - (flow_mapping) + (block_mapping) + (block_sequence) + (flow_sequence) + (flow_mapping) ] @collectionItem.iteration @collectionKey.iteration @value.iteration ;;!! foo: bar @@ -59,8 +59,8 @@ ;;!! | block scalar ;;! ^^^^^^^^^^^^^ [ - (string_scalar) - (block_scalar) + (string_scalar) + (block_scalar) ] @string @textFragment ;;!! # comment From ba0eeef92dde39e24bcbbaa42f533fab56d95a6c Mon Sep 17 00:00:00 2001 From: Pokey Rule <755842+pokey@users.noreply.github.com> Date: Thu, 30 Nov 2023 18:37:06 +0000 Subject: [PATCH 6/6] trim trailing whitespace --- .../recorded/languages/yaml/changeItem4.yml | 25 +++++++++++++++++++ .../recorded/languages/yaml/changeList3.yml | 25 +++++++++++++++++++ queries/yaml.scm | 18 +++++++------ 3 files changed, 61 insertions(+), 7 deletions(-) create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeItem4.yml create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeList3.yml diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeItem4.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeItem4.yml new file mode 100644 index 0000000000..e0df6c2ea8 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeItem4.yml @@ -0,0 +1,25 @@ +languageId: yaml +command: + version: 6 + spokenForm: change item + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: | + - aaa: bbb + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: |+ + + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeList3.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeList3.yml new file mode 100644 index 0000000000..3fbe74cf6c --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/yaml/changeList3.yml @@ -0,0 +1,25 @@ +languageId: yaml +command: + version: 6 + spokenForm: change list + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: list} + usePrePhraseSnapshot: true +initialState: + documentContents: | + - aaa: bbb + selections: + - anchor: {line: 0, character: 8} + active: {line: 0, character: 8} + marks: {} +finalState: + documentContents: |+ + + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} diff --git a/queries/yaml.scm b/queries/yaml.scm index ba4b0bab7d..10319b7137 100644 --- a/queries/yaml.scm +++ b/queries/yaml.scm @@ -17,13 +17,17 @@ ;;!! - 0 ;;! ^^^ -(block_sequence - (block_sequence_item)? @collectionItem.leading.start.endOf - . - (block_sequence_item) @collectionItem @collectionItem.leading.end.startOf @collectionItem.trailing.end.endOf - . - (block_sequence_item)? @collectionItem.trailing.end.startOf -) @list +( + (block_sequence + (block_sequence_item)? @collectionItem.leading.start.endOf + . + (block_sequence_item) @collectionItem @collectionItem.leading.end.startOf @collectionItem.trailing.end.endOf + . + (block_sequence_item)? @collectionItem.trailing.end.startOf + (#trim-end! @collectionItem) + ) @list + (#trim-end! @list) +) ;;!! [0] ;;! ^