@@ -674,6 +674,14 @@ class TailwindIntellisense {
674
674
)
675
675
)
676
676
677
+ // @screen
678
+ this . _providers . push (
679
+ createScreenCompletionItemProvider ( {
680
+ config : tailwind . config ,
681
+ languages : [ ...CSS_TYPES , 'postcss' , 'vue' ]
682
+ } )
683
+ )
684
+
677
685
this . _disposable = vscode . Disposable . from ( ...this . _providers )
678
686
}
679
687
@@ -732,3 +740,51 @@ function getColorFromValue(value: string) {
732
740
return
733
741
}
734
742
}
743
+
744
+ function createScreenCompletionItemProvider ( {
745
+ languages,
746
+ config
747
+ } ) : vscode . Disposable {
748
+ return vscode . languages . registerCompletionItemProvider (
749
+ languages ,
750
+ {
751
+ provideCompletionItems : (
752
+ document : vscode . TextDocument ,
753
+ position : vscode . Position
754
+ ) : vscode . CompletionItem [ ] => {
755
+ let range : vscode . Range = new vscode . Range (
756
+ new vscode . Position ( 0 , 0 ) ,
757
+ position
758
+ )
759
+ let text : string = document . getText ( range )
760
+
761
+ if (
762
+ document . languageId === 'vue' &&
763
+ ! ( text . indexOf ( '<style' ) !== - 1 && text . indexOf ( '</style>' ) === - 1 )
764
+ )
765
+ return [ ]
766
+
767
+ let line = text . split ( / [ \n \r ] / ) . pop ( )
768
+
769
+ if ( / @ s c r e e n $ / . test ( line ) ) {
770
+ return Object . keys ( dlv ( config , 'screens' , { } ) ) . map ( ( screen , i ) => {
771
+ let item = new vscode . CompletionItem (
772
+ screen ,
773
+ vscode . CompletionItemKind . Constant
774
+ )
775
+ item . insertText = new vscode . SnippetString ( `${ screen } {\n\t$0\n}` )
776
+ item . detail =
777
+ typeof config . screens [ screen ] === 'string'
778
+ ? config . screens [ screen ]
779
+ : ''
780
+ item . sortText = naturalExpand ( i . toString ( ) )
781
+ return item
782
+ } )
783
+ }
784
+
785
+ return [ ]
786
+ }
787
+ } ,
788
+ ' '
789
+ )
790
+ }
0 commit comments