@@ -54,6 +54,35 @@ function invertColor(color) {
5454 return res ;
5555}
5656
57+ function getLanguageMappings ( ) {
58+ var langToExt = {
59+ 'csharp' : [ 'cs' , 'csx' ]
60+ } ;
61+
62+ var allExtensions = fs . readdirSync ( '..' ) ;
63+ for ( var i = 0 ; i < allExtensions . length ; i ++ ) {
64+ let dirPath = path . join ( '..' , allExtensions [ i ] , 'package.json' ) ;
65+ if ( ! fs . lstatSync ( path . join ( '..' , allExtensions [ i ] ) ) . isDirectory ( ) || ! fs . lstatSync ( dirPath ) . isFile ( ) ) {
66+ continue ;
67+ }
68+
69+ let content = fs . readFileSync ( dirPath ) . toString ( ) ;
70+ let jsonContent = JSON . parse ( content ) ;
71+ let languages = jsonContent . contributes && jsonContent . contributes . languages ;
72+ if ( Array . isArray ( languages ) ) {
73+ for ( var k = 0 ; k < languages . length ; k ++ ) {
74+ var extensions = languages [ k ] . extensions ;
75+ var languageId = languages [ k ] . id ;
76+ if ( Array . isArray ( extensions ) && languageId ) {
77+ langToExt [ languageId ] = extensions . map ( function ( e ) { return e . substr ( 1 ) ; } ) ;
78+ }
79+ }
80+ }
81+ }
82+
83+ return langToExt ;
84+ }
85+
5786
5887exports . update = function ( ) {
5988 var fontMappings = 'https://raw.githubusercontent.com/jesseweed/seti-ui/master/styles/_fonts/seti.less' ;
@@ -63,6 +92,7 @@ exports.update = function () {
6392 var fileName2Def = { } ;
6493 var def2ColorId = { } ;
6594 var colorId2Value = { } ;
95+ var lang2Def = { } ;
6696
6797 function writeFileIconContent ( info ) {
6898 var iconDefinitions = { } ;
@@ -106,14 +136,16 @@ exports.update = function () {
106136 file : "_default" ,
107137 fileExtensions : ext2Def ,
108138 fileNames : fileName2Def ,
139+ languageIds : lang2Def ,
109140 light : {
110141 file : "_default_light" ,
111142 fileExtensions : getInvertSet ( ext2Def ) ,
143+ languageIds : getInvertSet ( lang2Def ) ,
112144 fileNames : getInvertSet ( fileName2Def )
113145 } ,
114146 version : 'https://github.com/jesseweed/seti-ui/commit/' + info . commitSha ,
115147 } ;
116- fs . writeFileSync ( './icons/seti-icon-theme.json' , JSON . stringify ( res , null , '\t' ) ) ;
148+ fs . writeFileSync ( './icons/vs- seti-icon-theme.json' , JSON . stringify ( res , null , '\t' ) ) ;
117149
118150 }
119151
@@ -140,6 +172,26 @@ exports.update = function () {
140172 }
141173 def2ColorId [ def ] = colorId ;
142174 }
175+ // replace extensions for languageId
176+ var langToExt = getLanguageMappings ( ) ;
177+ for ( var lang in langToExt ) {
178+ var exts = langToExt [ lang ] ;
179+ var preferredDef = null ;
180+ // use the first file association for the preferred definition
181+ for ( var i1 = 0 ; i1 < exts . length && ! preferredDef ; i1 ++ ) {
182+ preferredDef = ext2Def [ exts [ i1 ] ] ;
183+ }
184+ if ( preferredDef ) {
185+ lang2Def [ lang ] = preferredDef ;
186+ for ( var i1 = 0 ; i1 < exts . length ; i1 ++ ) {
187+ // remove the extention association, unless it is different from the preferred
188+ if ( ext2Def [ exts [ i1 ] ] === preferredDef ) {
189+ delete ext2Def [ exts [ i1 ] ] ;
190+ }
191+ }
192+ }
193+ }
194+
143195 var colors = 'https://raw.githubusercontent.com/jesseweed/seti-ui/master/styles/ui-variables.less' ;
144196 return download ( colors ) . then ( function ( content ) {
145197 var regex3 = / ( @ [ \w - ] + ) : \s * ( # [ 0 - 9 a - z ] + ) / g;
@@ -156,7 +208,7 @@ exports.update = function () {
156208 console . error ( e ) ;
157209 }
158210 } ) ;
159- } ) ;
211+ } ) ;
160212 } ) ;
161213 } , console . error ) ;
162214}
0 commit comments