@@ -983,7 +983,7 @@ defineTest({
983983} )
984984
985985defineTest ( {
986- name : 'Completions for outline and border utilities have simplified details' ,
986+ name : 'Completions for several utilities have simplified details' ,
987987 fs : {
988988 'app.css' : css `
989989 @import 'tailwindcss';
@@ -993,24 +993,59 @@ defineTest({
993993 handle : async ( { client } ) => {
994994 let document = await client . open ( {
995995 lang : 'html' ,
996- text : html `< div class ="border-0 outline-0 "> </ div > ` ,
996+ text : html `< div class =""> </ div > ` ,
997997 } )
998998
999- // <div class="border-0 outline-0"></div>
1000- // ^
1001- let completionA = await document . completions ( { line : 0 , character : 20 } )
999+ // <div class=""></div>
1000+ // ^
1001+ let list = await document . completions ( { line : 0 , character : 12 } )
1002+ let items = list ?. items ?? [ ]
1003+
1004+ let map = {
1005+ 'border-0' : 'border-width: 0px;' ,
1006+ 'outline-0' : 'outline-width: 0px;' ,
1007+ 'leading-0' : 'line-height: 0rem /* 0px */;' ,
1008+ 'duration-1000' : 'transition-duration: 1000ms;' ,
1009+ 'font-bold' : 'font-weight: 700;' ,
1010+ 'ease-linear' : 'transition-timing-function: linear;' ,
1011+ 'ease-initial' : '--tw-ease: initial;' ,
1012+
1013+ 'space-x-0' :
1014+ 'margin-inline-start: calc(0rem /* 0px */ * var(--tw-space-x-reverse)); margin-inline-end: calc(0rem /* 0px */ * calc(1 - var(--tw-space-x-reverse)));' ,
1015+ 'space-y-0' :
1016+ 'margin-block-start: calc(0rem /* 0px */ * var(--tw-space-y-reverse)); margin-block-end: calc(0rem /* 0px */ * calc(1 - var(--tw-space-y-reverse)));' ,
1017+ 'divide-x-0' :
1018+ 'border-inline-start-width: calc(0px * var(--tw-divide-x-reverse)); border-inline-end-width: calc(0px * calc(1 - var(--tw-divide-x-reverse)));' ,
1019+ 'divide-y-0' :
1020+ 'border-top-width: calc(0px * var(--tw-divide-y-reverse)); border-bottom-width: calc(0px * calc(1 - var(--tw-divide-y-reverse)));' ,
1021+
1022+ 'tracking-wide' : 'letter-spacing: 0.025em;' ,
1023+
1024+ 'from-red-500' : '--tw-gradient-from: oklch(63.7% 0.237 25.331);' ,
1025+ 'via-red-500' : '--tw-gradient-via: oklch(63.7% 0.237 25.331);' ,
1026+ 'to-red-500' : '--tw-gradient-to: oklch(63.7% 0.237 25.331);' ,
1027+
1028+ 'scale-100' : '--tw-scale-x: 100%; --tw-scale-y: 100%; --tw-scale-z: 100%;' ,
1029+ 'scale-z-100' : '--tw-scale-z: 100%;' ,
1030+
1031+ 'translate-1' : '--tw-translate-x: 0.25rem /* 4px */; --tw-translate-y: 0.25rem /* 4px */;' ,
1032+ 'translate-z-1' : '--tw-translate-z: 0.25rem /* 4px */;' ,
1033+
1034+ 'bg-conic-0' :
1035+ '--tw-gradient-position: from 0deg in oklab; background-image: conic-gradient(var(--tw-gradient-stops));' ,
1036+ }
10021037
1003- // <div class="border-0 outline-0"></div>
1004- // ^
1005- let completionB = await document . completions ( { line : 0 , character : 30 } )
1038+ let requests = await Promise . all (
1039+ Object . keys ( map ) . map ( async ( label ) => {
1040+ let item = items . find ( ( item ) => item . label === label )
1041+ if ( ! item ) throw new Error ( `Item not found for label: ${ label } ` )
10061042
1007- let border = completionA ?. items . find ( ( item ) => item . label === 'border-0' )
1008- let outline = completionB ?. items . find ( ( item ) => item . label === 'outline-0' )
1043+ let resolved = await client . conn . sendRequest ( 'completionItem/resolve' , item )
10091044
1010- let borderResolved = await client . conn . sendRequest ( 'completionItem/resolve' , border )
1011- let outlineResolved = await client . conn . sendRequest ( 'completionItem/resolve' , outline )
1045+ return [ label , resolved . detail ]
1046+ } ) ,
1047+ )
10121048
1013- expect ( borderResolved ) . toMatchObject ( { detail : 'border-width: 0px;' } )
1014- expect ( outlineResolved ) . toMatchObject ( { detail : 'outline-width: 0px;' } )
1049+ expect ( Object . fromEntries ( requests ) ) . toEqual ( map )
10151050 } ,
10161051} )
0 commit comments