diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/bringNameToAir.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/bringNameToAir.yml new file mode 100644 index 00000000000..dd39b270aac --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/bringNameToAir.yml @@ -0,0 +1,36 @@ +languageId: scm +command: + version: 6 + spokenForm: bring name to air + action: + name: replaceWithTarget + source: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: name} + destination: + type: primitive + insertionMode: to + target: + type: primitive + mark: {type: decoratedSymbol, symbolColor: default, character: a} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + (aaa) @bbb @ccc @ddd + (eee) @fff + selections: + - anchor: {line: 1, character: 0} + active: {line: 1, character: 0} + marks: + default.a: + start: {line: 0, character: 1} + end: {line: 0, character: 4} +finalState: + documentContents: |- + (aaa) @fff + (eee) @fff + selections: + - anchor: {line: 1, character: 0} + active: {line: 1, character: 0} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/changeEveryName.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/changeEveryName.yml new file mode 100644 index 00000000000..b30a3a3753c --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/changeEveryName.yml @@ -0,0 +1,27 @@ +languageId: scm +command: + version: 6 + spokenForm: change every name + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: everyScope + scopeType: {type: name} + usePrePhraseSnapshot: true +initialState: + documentContents: (aaa) @bbb @ccc @ddd + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: (aaa) @ @ @ + selections: + - anchor: {line: 0, character: 7} + active: {line: 0, character: 7} + - anchor: {line: 0, character: 9} + active: {line: 0, character: 9} + - anchor: {line: 0, character: 11} + active: {line: 0, character: 11} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/changeName.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/changeName.yml new file mode 100644 index 00000000000..13e3bcd9dff --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/changeName.yml @@ -0,0 +1,23 @@ +languageId: scm +command: + version: 6 + spokenForm: change name + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: name} + usePrePhraseSnapshot: true +initialState: + documentContents: (aaa) @bbb @ccc @ddd + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: (aaa) @ + selections: + - anchor: {line: 0, character: 7} + active: {line: 0, character: 7} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/changeName2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/changeName2.yml new file mode 100644 index 00000000000..8d70cd725ac --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/changeName2.yml @@ -0,0 +1,23 @@ +languageId: scm +command: + version: 6 + spokenForm: change name + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: name} + usePrePhraseSnapshot: true +initialState: + documentContents: "eee: (aaa) @bbb @ccc @ddd" + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: "eee: (aaa) @" + selections: + - anchor: {line: 0, character: 12} + active: {line: 0, character: 12} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/changeName3.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/changeName3.yml new file mode 100644 index 00000000000..8406b97e0f2 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/changeName3.yml @@ -0,0 +1,23 @@ +languageId: scm +command: + version: 6 + spokenForm: change name + action: + name: clearAndSetSelection + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: name} + usePrePhraseSnapshot: true +initialState: + documentContents: "eee: _ @bbb @ccc @ddd" + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: "eee: _ @" + selections: + - anchor: {line: 0, character: 8} + active: {line: 0, character: 8} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/chuckName.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/chuckName.yml new file mode 100644 index 00000000000..3a07b9fc756 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/chuckName.yml @@ -0,0 +1,23 @@ +languageId: scm +command: + version: 6 + spokenForm: chuck name + action: + name: remove + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: name} + usePrePhraseSnapshot: true +initialState: + documentContents: (aaa) @bbb @ccc @ddd + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: "(aaa) " + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/chuckName2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/chuckName2.yml new file mode 100644 index 00000000000..48eca2ec19a --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/chuckName2.yml @@ -0,0 +1,23 @@ +languageId: scm +command: + version: 6 + spokenForm: chuck name + action: + name: remove + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: name} + usePrePhraseSnapshot: true +initialState: + documentContents: (aaa) @bbb @ccc @ddd + selections: + - anchor: {line: 0, character: 20} + active: {line: 0, character: 20} + marks: {} +finalState: + documentContents: "(aaa) @bbb @ccc " + selections: + - anchor: {line: 0, character: 16} + active: {line: 0, character: 16} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/cloneName.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/cloneName.yml new file mode 100644 index 00000000000..9ee220639fb --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/cloneName.yml @@ -0,0 +1,23 @@ +languageId: scm +command: + version: 6 + spokenForm: clone name + action: + name: insertCopyAfter + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: name} + usePrePhraseSnapshot: true +initialState: + documentContents: "eee: _ @bbb @ccc" + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: "eee: _ @bbb @ccc @bbb @ccc" + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/drinkName.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/drinkName.yml new file mode 100644 index 00000000000..f4501138fc1 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/drinkName.yml @@ -0,0 +1,23 @@ +languageId: scm +command: + version: 6 + spokenForm: drink name + action: + name: editNewLineBefore + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: name} + usePrePhraseSnapshot: true +initialState: + documentContents: "eee: _ @bbb @ccc" + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: "eee: _ @ @bbb @ccc" + selections: + - anchor: {line: 0, character: 8} + active: {line: 0, character: 8} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/pourName.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/pourName.yml new file mode 100644 index 00000000000..61df78276b4 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/pourName.yml @@ -0,0 +1,23 @@ +languageId: scm +command: + version: 6 + spokenForm: pour name + action: + name: editNewLineAfter + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: name} + usePrePhraseSnapshot: true +initialState: + documentContents: "eee: _ @bbb @ccc" + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: "eee: _ @bbb @ccc @" + selections: + - anchor: {line: 0, character: 18} + active: {line: 0, character: 18} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/pourName2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/pourName2.yml new file mode 100644 index 00000000000..dccd9539974 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/pourName2.yml @@ -0,0 +1,23 @@ +languageId: scm +command: + version: 6 + spokenForm: pour name + action: + name: editNewLineAfter + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: name} + usePrePhraseSnapshot: true +initialState: + documentContents: "eee: _ @bbb @ccc" + selections: + - anchor: {line: 0, character: 7} + active: {line: 0, character: 7} + marks: {} +finalState: + documentContents: "eee: _ @bbb @ @ccc" + selections: + - anchor: {line: 0, character: 13} + active: {line: 0, character: 13} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/takeName.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/takeName.yml new file mode 100644 index 00000000000..6c7c8a477d4 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/scm/takeName.yml @@ -0,0 +1,23 @@ +languageId: scm +command: + version: 6 + spokenForm: take name + action: + name: setSelection + target: + type: primitive + modifiers: + - type: containingScope + scopeType: {type: name} + usePrePhraseSnapshot: true +initialState: + documentContents: (aaa) @bbb @ccc @ddd + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: (aaa) @bbb @ccc @ddd + selections: + - anchor: {line: 0, character: 7} + active: {line: 0, character: 20} diff --git a/queries/scm.name.scm b/queries/scm.name.scm index 5fdeece53fd..e3ac9c698a0 100644 --- a/queries/scm.name.scm +++ b/queries/scm.name.scm @@ -1,4 +1,7 @@ -;; Include everything leading up to the first capture in the domain for name +;;!! (aaa) @bbb @ccc +;;! ^^^^^^^^ +;;! xxxxxxxxx +;;! --------------- ( (_ _ @dummy @@ -16,7 +19,10 @@ (#insertion-delimiter! @name.start " @") ) -;; Include everything leading up to the first capture in the domain for name +;;!! eee: (aaa) @bbb @ccc +;;! ^^^^^^^^ +;;! xxxxxxxxx +;;! -------------------- ( (field_definition (_ @@ -34,7 +40,10 @@ (#insertion-delimiter! @name.start " @") ) -;; Only include the capture itself in its domain after the first capture +;;!! (aaa) @bbb @ccc +;;! ^^^ ^^^ +;;! xxxx xxxx +;;! ---- ---- ( (_ (capture @@ -47,6 +56,9 @@ (#insertion-delimiter! @name " @") ) +;;!! (aaa) @bbb @ccc +;;! ********* +;;! --------------- <~ iteration domain ( (_ _ @dummy @@ -58,6 +70,9 @@ (#not-parent-type? @name.iteration.domain field_definition) ) +;;!! ddd: (aaa) @bbb @ccc +;;! ********* +;;! -------------------- <~ iteration domain ( (field_definition [