Skip to content

Commit 0004e98

Browse files
Update closuje
1 parent 99aa3d0 commit 0004e98

File tree

6 files changed

+45
-39
lines changed

6 files changed

+45
-39
lines changed

data/fixtures/recorded/languages/clojure/chuckItemZip.yml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,7 @@ finalState:
2929
documentContents: |-
3030
{
3131
:foo "bar",
32-
;; hello
33-
,
3432
}
3533
selections:
36-
- anchor: {line: 4, character: 1}
37-
active: {line: 4, character: 1}
34+
- anchor: {line: 2, character: 1}
35+
active: {line: 2, character: 1}

data/fixtures/recorded/languages/clojure/clearEveryItem.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,10 @@ finalState:
2727
2828
{
2929
,
30-
;; hello
3130
,
3231
}
3332
selections:
3433
- anchor: {line: 2, character: 4}
3534
active: {line: 2, character: 4}
36-
- anchor: {line: 4, character: 4}
37-
active: {line: 4, character: 4}
35+
- anchor: {line: 3, character: 4}
36+
active: {line: 3, character: 4}

data/fixtures/recorded/languages/clojure/clearItem.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,11 @@ initialState:
2626
finalState:
2727
documentContents: |-
2828
{
29-
29+
:bongo {
30+
:foo "bar",
31+
,
32+
}
3033
}
3134
selections:
32-
- anchor: {line: 1, character: 4}
33-
active: {line: 1, character: 4}
35+
- anchor: {line: 3, character: 8}
36+
active: {line: 3, character: 8}

data/fixtures/recorded/languages/clojure/clearItemFine.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ initialState:
2121
start: {line: 0, character: 2}
2222
end: {line: 0, character: 5}
2323
finalState:
24-
documentContents: "{ :baz \"whatever\"}"
24+
documentContents: "{}"
2525
selections:
2626
- anchor: {line: 0, character: 1}
2727
active: {line: 0, character: 1}

packages/cursorless-engine/src/languages/clojure.ts

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
1+
import type { SimpleScopeTypeType } from "@cursorless/common";
2+
import type { SyntaxNode } from "web-tree-sitter";
3+
import type { NodeFinder, NodeMatcherAlternative } from "../typings/Types";
4+
import { patternFinder } from "../util/nodeFinders";
15
import {
26
cascadingMatcher,
37
chainedMatcher,
48
createPatternMatchers,
59
matcher,
610
patternMatcher,
711
} from "../util/nodeMatchers";
8-
import type { NodeMatcherAlternative, NodeFinder } from "../typings/Types";
9-
import type { SimpleScopeTypeType } from "@cursorless/common";
10-
import type { SyntaxNode } from "web-tree-sitter";
11-
import { delimitedSelector } from "../util/nodeSelectors";
12-
import { identity } from "lodash-es";
1312
import { getChildNodesForFieldName } from "../util/treeSitterUtils";
14-
import { patternFinder } from "../util/nodeFinders";
1513

1614
/**
1715
* Picks a node by rounding down and using the given parity. This function is
@@ -73,13 +71,6 @@ function indexNodeFinder(
7371
};
7472
}
7573

76-
function itemFinder() {
77-
return indexNodeFinder(
78-
(node) => node,
79-
(nodeIndex: number) => nodeIndex,
80-
);
81-
}
82-
8374
/**
8475
* Return the "value" node children of a given node. These are the items in a list
8576
* @param node The node whose children to get
@@ -134,21 +125,6 @@ const nodeMatchers: Partial<
134125
Record<SimpleScopeTypeType, NodeMatcherAlternative>
135126
> = {
136127
collectionKey: matcher(mapParityNodeFinder(0)),
137-
collectionItem: cascadingMatcher(
138-
// Treat each key value pair as a single item if we're in a map
139-
matcher(
140-
mapParityNodeFinder(0),
141-
delimitedSelector(
142-
(node) => node.type === "{" || node.type === "}",
143-
", ",
144-
identity,
145-
mapParityNodeFinder(1) as (node: SyntaxNode) => SyntaxNode,
146-
),
147-
),
148-
149-
// Otherwise just treat every item within a list as an item
150-
matcher(itemFinder()),
151-
),
152128
value: matcher(mapParityNodeFinder(1)),
153129

154130
// FIXME: Handle formal parameters

queries/clojure.scm

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,33 @@
1111
(quoting_lit
1212
(list_lit)
1313
) @list
14+
15+
;;!! '(foo bar)
16+
;;! ^^^ ^^^
17+
(list_lit
18+
(_)? @_.leading.endOf
19+
.
20+
(_) @collectionItem.start
21+
.
22+
(_)? @_.trailing.startOf
23+
)
24+
25+
(list_lit
26+
open: "(" @collectionItem.iteration.start.startOf
27+
close: ")" @collectionItem.iteration.end.endOf
28+
) @collectionItem.iteration.domain
29+
30+
;;!! [foo bar]
31+
;;! ^^^ ^^^
32+
(vec_lit
33+
(_)? @_.leading.endOf
34+
.
35+
(_) @collectionItem.start
36+
.
37+
(_)? @_.trailing.startOf
38+
)
39+
40+
(vec_lit
41+
open: "[" @collectionItem.iteration.start.startOf
42+
close: "]" @collectionItem.iteration.end.endOf
43+
) @collectionItem.iteration.domain

0 commit comments

Comments
 (0)