Skip to content

Commit e7cf3fc

Browse files
author
fidgetingbits
committed
Add better string interpolation support
1 parent 374d7ad commit e7cf3fc

File tree

7 files changed

+202
-4
lines changed

7 files changed

+202
-4
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
languageId: shellscript
2+
command:
3+
version: 6
4+
spokenForm: change arg
5+
action:
6+
name: clearAndSetSelection
7+
target:
8+
type: primitive
9+
modifiers:
10+
- type: containingScope
11+
scopeType: {type: argumentOrParameter}
12+
usePrePhraseSnapshot: true
13+
initialState:
14+
documentContents: |
15+
echo "Foo ${BAR}"
16+
selections:
17+
- anchor: {line: 0, character: 12}
18+
active: {line: 0, character: 12}
19+
marks: {}
20+
finalState:
21+
documentContents: |
22+
echo "Foo "
23+
selections:
24+
- anchor: {line: 0, character: 10}
25+
active: {line: 0, character: 10}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
languageId: shellscript
2+
command:
3+
version: 6
4+
spokenForm: change arg bat
5+
action:
6+
name: clearAndSetSelection
7+
target:
8+
type: primitive
9+
mark: {type: decoratedSymbol, symbolColor: default, character: b}
10+
modifiers:
11+
- type: containingScope
12+
scopeType: {type: argumentOrParameter}
13+
usePrePhraseSnapshot: true
14+
initialState:
15+
documentContents: |
16+
echo "Foo ${BAR} ${BAZ} bar"
17+
selections:
18+
- anchor: {line: 0, character: 28}
19+
active: {line: 0, character: 28}
20+
marks:
21+
default.b:
22+
start: {line: 0, character: 12}
23+
end: {line: 0, character: 15}
24+
finalState:
25+
documentContents: |
26+
echo "Foo ${BAZ} bar"
27+
selections:
28+
- anchor: {line: 0, character: 10}
29+
active: {line: 0, character: 10}
30+
ide:
31+
messages:
32+
- {type: error, id: TreeSitterQuery.checkCaptures.mixRegularStartEnd}
33+
- {type: error, id: TreeSitterQuery.checkCaptures.mixRegularStartEnd}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
languageId: shellscript
2+
command:
3+
version: 6
4+
spokenForm: change arg red
5+
action:
6+
name: clearAndSetSelection
7+
target:
8+
type: primitive
9+
mark: {type: decoratedSymbol, symbolColor: default, character: r}
10+
modifiers:
11+
- type: containingScope
12+
scopeType: {type: argumentOrParameter}
13+
usePrePhraseSnapshot: true
14+
initialState:
15+
documentContents: |
16+
echo "Foo $BAR as $BAZ"
17+
selections:
18+
- anchor: {line: 0, character: 9}
19+
active: {line: 0, character: 9}
20+
marks:
21+
default.r:
22+
start: {line: 0, character: 11}
23+
end: {line: 0, character: 14}
24+
finalState:
25+
documentContents: |
26+
echo "Foo as $BAZ"
27+
selections:
28+
- anchor: {line: 0, character: 10}
29+
active: {line: 0, character: 10}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
languageId: shellscript
2+
command:
3+
version: 6
4+
spokenForm: change every arg inside fine
5+
action:
6+
name: clearAndSetSelection
7+
target:
8+
type: primitive
9+
mark: {type: decoratedSymbol, symbolColor: default, character: f}
10+
modifiers:
11+
- type: everyScope
12+
scopeType: {type: argumentOrParameter}
13+
- {type: interiorOnly}
14+
usePrePhraseSnapshot: true
15+
initialState:
16+
documentContents: |
17+
echo "Foo ${BAR} as ${BAZ}"
18+
selections:
19+
- anchor: {line: 0, character: 19}
20+
active: {line: 0, character: 19}
21+
marks:
22+
default.f:
23+
start: {line: 0, character: 6}
24+
end: {line: 0, character: 9}
25+
finalState:
26+
documentContents: |
27+
echo "Foo as "
28+
selections:
29+
- anchor: {line: 0, character: 10}
30+
active: {line: 0, character: 10}
31+
- anchor: {line: 0, character: 14}
32+
active: {line: 0, character: 14}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
languageId: shellscript
2+
command:
3+
version: 6
4+
spokenForm: change every arg inside fine
5+
action:
6+
name: clearAndSetSelection
7+
target:
8+
type: primitive
9+
mark: {type: decoratedSymbol, symbolColor: default, character: f}
10+
modifiers:
11+
- type: everyScope
12+
scopeType: {type: argumentOrParameter}
13+
- {type: interiorOnly}
14+
usePrePhraseSnapshot: true
15+
initialState:
16+
documentContents: |
17+
echo "Foo $BAR as $BAZ"
18+
selections:
19+
- anchor: {line: 0, character: 9}
20+
active: {line: 0, character: 9}
21+
marks:
22+
default.f:
23+
start: {line: 0, character: 6}
24+
end: {line: 0, character: 9}
25+
finalState:
26+
documentContents: |
27+
echo "Foo as "
28+
selections:
29+
- anchor: {line: 0, character: 10}
30+
active: {line: 0, character: 10}
31+
- anchor: {line: 0, character: 14}
32+
active: {line: 0, character: 14}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
languageId: shellscript
2+
command:
3+
version: 6
4+
spokenForm: chuck arg zip
5+
action:
6+
name: remove
7+
target:
8+
type: primitive
9+
mark: {type: decoratedSymbol, symbolColor: default, character: z}
10+
modifiers:
11+
- type: containingScope
12+
scopeType: {type: argumentOrParameter}
13+
usePrePhraseSnapshot: true
14+
initialState:
15+
documentContents: |
16+
echo "Foo ${BAR} ${BAZ} bar"
17+
selections:
18+
- anchor: {line: 0, character: 28}
19+
active: {line: 0, character: 28}
20+
marks:
21+
default.z:
22+
start: {line: 0, character: 19}
23+
end: {line: 0, character: 22}
24+
finalState:
25+
documentContents: |
26+
echo "Foo ${BAR} bar"
27+
selections:
28+
- anchor: {line: 0, character: 21}
29+
active: {line: 0, character: 21}
30+
ide:
31+
messages:
32+
- {type: error, id: TreeSitterQuery.checkCaptures.mixRegularStartEnd}
33+
- {type: error, id: TreeSitterQuery.checkCaptures.mixRegularStartEnd}

queries/shellscript.scm

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -173,13 +173,27 @@
173173
;;! ^^^^^
174174
(string) @string @textFragment
175175

176+
;; TODO: These two cases are broken as they are a single (expression), and the " " isn't recognized
177+
;; echo "Foo ${BAR} ${BAZ}"
178+
;; echo "Foo $BAR $BAZ"
176179
;;!! var="foo ${bar}"
177180
;;! ^^^^^^
181+
;;! xxxxxx
178182
(string
179-
[
180-
(expansion)
181-
(simple_expansion)
182-
] @argumentOrParameter
183+
(expansion
184+
"${" @argumentOrParameter.start.startOf
185+
.
186+
(_)
187+
.
188+
"}" @argumentOrParameter.end.endOf
189+
)
190+
)
191+
(string
192+
(simple_expansion
193+
"$" @argumentOrParameter.start.startOf
194+
.
195+
(_) @argumentOrParameter.end.endOf
196+
)
183197
)
184198

185199
;;

0 commit comments

Comments
 (0)