From bc1a01f6ff5117c53e47ef75fd0fb774477b4683 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Mon, 20 Nov 2023 09:18:21 +0100 Subject: [PATCH] key --- .../src/languages/typescript.ts | 9 ------- .../{takeEveryKey.yml => clearEveryKey.yml} | 12 ++++----- .../{takeEveryKey2.yml => clearEveryKey2.yml} | 12 ++++----- queries/javascript.core.scm | 20 ++++++--------- queries/javascript.jsx.scm | 25 +++++++------------ queries/typescript.core.scm | 10 ++++++++ 6 files changed, 39 insertions(+), 49 deletions(-) rename packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/typescript/{takeEveryKey.yml => clearEveryKey.yml} (75%) rename packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/typescript/{takeEveryKey2.yml => clearEveryKey2.yml} (74%) diff --git a/packages/cursorless-engine/src/languages/typescript.ts b/packages/cursorless-engine/src/languages/typescript.ts index 9630ee5c32..47b5cfec52 100644 --- a/packages/cursorless-engine/src/languages/typescript.ts +++ b/packages/cursorless-engine/src/languages/typescript.ts @@ -55,15 +55,6 @@ const nodeMatchers: Partial< Record > = { collectionItem: "jsx_attribute", - collectionKey: trailingMatcher( - [ - "pair[key]", - "jsx_attribute.property_identifier!", - "object_type.property_signature[name]!", - "shorthand_property_identifier", - ], - [":"], - ), statement: cascadingMatcher( matcher( patternFinder( diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/typescript/takeEveryKey.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/typescript/clearEveryKey.yml similarity index 75% rename from packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/typescript/takeEveryKey.yml rename to packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/typescript/clearEveryKey.yml index 39840a14bf..131b05eba3 100644 --- a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/typescript/takeEveryKey.yml +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/typescript/clearEveryKey.yml @@ -1,8 +1,8 @@ languageId: typescript command: version: 1 - spokenForm: take every key - action: setSelection + spokenForm: change every key + action: clearAndSetSelection targets: - type: primitive modifier: {type: containingScope, scopeType: collectionKey, includeSiblings: true} @@ -19,11 +19,11 @@ initialState: finalState: documentContents: |- const value = { - key1: "hello", - key2: "there", + : "hello", + : "there", }; selections: - anchor: {line: 1, character: 4} - active: {line: 1, character: 8} + active: {line: 1, character: 4} - anchor: {line: 2, character: 4} - active: {line: 2, character: 8} + active: {line: 2, character: 4} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/typescript/takeEveryKey2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/typescript/clearEveryKey2.yml similarity index 74% rename from packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/typescript/takeEveryKey2.yml rename to packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/typescript/clearEveryKey2.yml index aa603ec323..eb43254758 100644 --- a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/typescript/takeEveryKey2.yml +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/typescript/clearEveryKey2.yml @@ -1,8 +1,8 @@ languageId: typescript command: version: 1 - spokenForm: take every key - action: setSelection + spokenForm: change every key + action: clearAndSetSelection targets: - type: primitive modifier: {type: containingScope, scopeType: collectionKey, includeSiblings: true} @@ -19,11 +19,11 @@ initialState: finalState: documentContents: |- { - foo: "hello", - bar, + : "hello", + , } selections: - anchor: {line: 1, character: 4} - active: {line: 1, character: 7} + active: {line: 1, character: 4} - anchor: {line: 2, character: 4} - active: {line: 2, character: 7} + active: {line: 2, character: 4} diff --git a/queries/javascript.core.scm b/queries/javascript.core.scm index 36a65901b4..dd24ff3be4 100644 --- a/queries/javascript.core.scm +++ b/queries/javascript.core.scm @@ -352,20 +352,9 @@ (#not-parent-type? @_.domain expression_statement) ) -;; Match nodes at field `value` of their parent node, setting leading delimiter -;; to be the range until the previous named node -( - (_ - (_)? @value.leading.start.endOf - . - value: (_) @value @value.leading.end.startOf - ) @_.domain - (#not-type? @_.domain variable_declarator) -) - ;;!! const aaa = {bbb}; ;;! ^^^ -(shorthand_property_identifier) @value +(shorthand_property_identifier) @collectionKey @value ;;!! return 0; ;;! ^ @@ -567,3 +556,10 @@ ) (try_statement) @branch.iteration + +(pair + key: (_) @collectionKey @collectionKey.removal.start @value.removal.start.endOf + value: (_) @value @collectionKey.removal.end.startOf @value.removal.end +) @_.domain + +(object) @collectionKey.iteration diff --git a/queries/javascript.jsx.scm b/queries/javascript.jsx.scm index fb9933f8fd..df7d0bf7a0 100644 --- a/queries/javascript.jsx.scm +++ b/queries/javascript.jsx.scm @@ -91,22 +91,15 @@ (_) @value @value.leading.end.startOf ) @_.domain -(jsx_self_closing_element - "<" @value.iteration.start.endOf - "/" @value.iteration.end.startOf -) - -(jsx_opening_element - "<" @value.iteration.start.endOf - ">" @value.iteration.end.startOf -) +(jsx_attribute + (property_identifier) @collectionKey +) @_.domain -(jsx_text) @textFragment +(jsx_attribute) @attribute -(jsx_opening_element - (jsx_attribute) @attribute -) @_.iteration +[ + (jsx_opening_element) + (jsx_self_closing_element) +] @attribute.iteration @collectionKey.iteration @value.iteration -(jsx_self_closing_element - (jsx_attribute) @attribute -) @_.iteration +(jsx_text) @textFragment diff --git a/queries/typescript.core.scm b/queries/typescript.core.scm index 519c5eea5c..defd166df8 100644 --- a/queries/typescript.core.scm +++ b/queries/typescript.core.scm @@ -242,3 +242,13 @@ (abstract_class_declaration name: (_) @name ) @_.domain + +(object_type + (property_signature + name: (_) @collectionKey @_.removal.start + type: (_ + ":" + (_) @_.removal.end.startOf + ) + ) @_.domain +) @_.iteration