Skip to content

Commit 38eed86

Browse files
committed
Add document links and completions for @source
1 parent 8e4db06 commit 38eed86

File tree

5 files changed

+100
-1
lines changed

5 files changed

+100
-1
lines changed

packages/tailwindcss-language-server/tests/completions/at-config.test.js

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,4 +225,75 @@ withFixture('v4/dependencies', (c) => {
225225
],
226226
})
227227
})
228+
229+
test.concurrent('@source', async ({ expect }) => {
230+
let result = await completion({
231+
text: '@source "',
232+
lang: 'css',
233+
position: {
234+
line: 0,
235+
character: 9,
236+
},
237+
})
238+
239+
expect(result).toEqual({
240+
isIncomplete: false,
241+
items: [
242+
{
243+
label: 'index.html',
244+
kind: 17,
245+
data: expect.anything(),
246+
textEdit: {
247+
newText: 'index.html',
248+
range: { start: { line: 0, character: 9 }, end: { line: 0, character: 9 } },
249+
},
250+
},
251+
{
252+
label: 'sub-dir/',
253+
kind: 19,
254+
command: { command: 'editor.action.triggerSuggest', title: '' },
255+
data: expect.anything(),
256+
textEdit: {
257+
newText: 'sub-dir/',
258+
range: { start: { line: 0, character: 9 }, end: { line: 0, character: 9 } },
259+
},
260+
},
261+
{
262+
label: 'tailwind.config.js',
263+
kind: 17,
264+
data: expect.anything(),
265+
textEdit: {
266+
newText: 'tailwind.config.js',
267+
range: { start: { line: 0, character: 9 }, end: { line: 0, character: 9 } },
268+
},
269+
},
270+
],
271+
})
272+
})
273+
274+
test.concurrent('@source directory', async ({ expect }) => {
275+
let result = await completion({
276+
text: '@source "./sub-dir/',
277+
lang: 'css',
278+
position: {
279+
line: 0,
280+
character: 19,
281+
},
282+
})
283+
284+
expect(result).toEqual({
285+
isIncomplete: false,
286+
items: [
287+
{
288+
label: 'colors.js',
289+
kind: 17,
290+
data: expect.anything(),
291+
textEdit: {
292+
newText: 'colors.js',
293+
range: { start: { line: 0, character: 19 }, end: { line: 0, character: 19 } },
294+
},
295+
},
296+
],
297+
})
298+
})
228299
})

packages/tailwindcss-language-server/tests/document-links/document-links.test.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,30 @@ withFixture('v4/basic', (c) => {
104104
},
105105
],
106106
})
107+
108+
testDocumentLinks('source: file exists', {
109+
text: '@source "index.html";',
110+
lang: 'css',
111+
expected: [
112+
{
113+
target: `file://${path
114+
.resolve('./tests/fixtures/v4/basic/index.html')
115+
.replace(/@/g, '%40')}`,
116+
range: { start: { line: 0, character: 8 }, end: { line: 0, character: 20 } },
117+
},
118+
],
119+
})
120+
121+
testDocumentLinks('source: file does not exist', {
122+
text: '@source "does-not-exist.html";',
123+
lang: 'css',
124+
expected: [
125+
{
126+
target: `file://${path
127+
.resolve('./tests/fixtures/v4/basic/does-not-exist.html')
128+
.replace(/@/g, '%40')}`,
129+
range: { start: { line: 0, character: 8 }, end: { line: 0, character: 29 } },
130+
},
131+
],
132+
})
107133
})
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<div class="underline">foo</div>

packages/tailwindcss-language-service/src/completionProvider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1537,7 +1537,7 @@ async function provideFileDirectiveCompletions(
15371537
}
15381538

15391539
let pattern = state.v4
1540-
? /@(config|plugin)\s*(?<partial>'[^']*|"[^"]*)$/
1540+
? /@(config|plugin|source)\s*(?<partial>'[^']*|"[^"]*)$/
15411541
: /@config\s*(?<partial>'[^']*|"[^"]*)$/
15421542

15431543
let text = document.getText({ start: { line: position.line, character: 0 }, end: position })

packages/tailwindcss-language-service/src/documentLinksProvider.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export function getDocumentLinks(
2020
if (state.v4) {
2121
patterns.push(
2222
/@plugin\s*(?<path>'[^']+'|"[^"]+")/g,
23+
/@source\s*(?<path>'[^']+'|"[^"]+")/g,
2324
)
2425
}
2526

0 commit comments

Comments
 (0)