2
0

FileSystemColorProvider.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452
  1. // This code is adapted from https://github.com/devblackops/Terminal-Icons (which also uses the MIT license).
  2. using System.Collections.Generic;
  3. using System.IO.Abstractions;
  4. namespace Terminal.Gui {
  5. /// <summary>
  6. /// Provides a way to get the color of a file or directory.
  7. /// </summary>
  8. public class FileSystemColorProvider {
  9. /// <summary>
  10. /// Gets the color to use.
  11. /// </summary>
  12. /// <param name="file"></param>
  13. /// <returns></returns>
  14. public Color? GetColor (IFileSystemInfo file)
  15. {
  16. if (FilenameToColor.ContainsKey (file.Name)) {
  17. return FilenameToColor [file.Name];
  18. }
  19. if (ExtensionToColor.ContainsKey (file.Extension)) {
  20. return ExtensionToColor [file.Extension];
  21. }
  22. return null;
  23. }
  24. /// <summary>
  25. /// Mapping of file/dir name to color.
  26. /// </summary>
  27. public Dictionary<string, Color> FilenameToColor { get; set; } = new ()
  28. {
  29. {"docs",StringToColor("#00BFFF")},
  30. {"documents",StringToColor("#00BFFF")},
  31. {"desktop",StringToColor("#00FBFF")},
  32. {"benchmark",StringToColor("#F08519")},
  33. {"demo",StringToColor("#5F3EC3")},
  34. {"samples",StringToColor("#5F3EC3")},
  35. {"contacts",StringToColor("#00FBFF")},
  36. {"apps",StringToColor("#FF143C")},
  37. {"applications",StringToColor("#FF143C")},
  38. {"artifacts",StringToColor("#D49653")},
  39. {"shortcuts",StringToColor("#FF143C")},
  40. {"links",StringToColor("#FF143C")},
  41. {"fonts",StringToColor("#DC143C")},
  42. {"images",StringToColor("#9ACD32")},
  43. {"photos",StringToColor("#9ACD32")},
  44. {"pictures",StringToColor("#9ACD32")},
  45. {"videos",StringToColor("#FFA500")},
  46. {"movies",StringToColor("#FFA500")},
  47. {"media",StringToColor("#D3D3D3")},
  48. {"music",StringToColor("#DB7093")},
  49. {"songs",StringToColor("#DB7093")},
  50. {"onedrive",StringToColor("#D3D3D3")},
  51. {"downloads",StringToColor("#D3D3D3")},
  52. {"src",StringToColor("#00FF7F")},
  53. {"development",StringToColor("#00FF7F")},
  54. {"projects",StringToColor("#00FF7F")},
  55. {"bin",StringToColor("#00FFF7")},
  56. {"tests",StringToColor("#87CEEB")},
  57. {"windows",StringToColor("#00A8E8")},
  58. {"users",StringToColor("#F4F4F4")},
  59. {"favorites",StringToColor("#F7D72C")},
  60. {"output",StringToColor("#00FF7F")},
  61. {".config",StringToColor("#87CEAF")},
  62. {".cache",StringToColor("#87ECAF")},
  63. {".vscode",StringToColor("#87CEFA")},
  64. {".vscode-insiders",StringToColor("#24BFA5")},
  65. {".git",StringToColor("#FF4500")},
  66. {".github",StringToColor("#C0C0C0")},
  67. {"github",StringToColor("#C0C0C0")},
  68. {"node_modules",StringToColor("#6B8E23")},
  69. {".terraform",StringToColor("#948EEC")},
  70. {".azure",StringToColor("#00BFFF")},
  71. {".aws",StringToColor("#EC912D")},
  72. {".kube",StringToColor("#326DE6")},
  73. {".docker",StringToColor("#2391E6")},
  74. {".gitattributes",StringToColor("#FF4500")},
  75. {".gitconfig",StringToColor("#FF4500")},
  76. {".gitignore",StringToColor("#FF4500")},
  77. {".gitmodules",StringToColor("#FF4500")},
  78. {".gitkeep",StringToColor("#FF4500")},
  79. {"git-history",StringToColor("#FF4500")},
  80. {"LICENSE",StringToColor("#CD5C5C")},
  81. {"LICENSE.md",StringToColor("#CD5C5C")},
  82. {"LICENSE.txt",StringToColor("#CD5C5C")},
  83. {"CHANGELOG.md",StringToColor("#98FB98")},
  84. {"CHANGELOG.txt",StringToColor("#98FB98")},
  85. {"CHANGELOG",StringToColor("#98FB98")},
  86. {"README.md",StringToColor("#00FFFF")},
  87. {"README.txt",StringToColor("#00FFFF")},
  88. {"README",StringToColor("#00FFFF")},
  89. {".DS_Store",StringToColor("#696969")},
  90. {".tsbuildinfo",StringToColor("#F4A460")},
  91. {".jscsrc",StringToColor("#F4A460")},
  92. {".jshintrc",StringToColor("#F4A460")},
  93. {"tsconfig.json",StringToColor("#F4A460")},
  94. {"tslint.json",StringToColor("#F4A460")},
  95. {"composer.lock",StringToColor("#F4A460")},
  96. {".jsbeautifyrc",StringToColor("#F4A460")},
  97. {".esformatter",StringToColor("#F4A460")},
  98. {"cdp.pid",StringToColor("#F4A460")},
  99. {".htaccess",StringToColor("#9ACD32")},
  100. {".jshintignore",StringToColor("#87CEEB")},
  101. {".buildignore",StringToColor("#87CEEB")},
  102. {".mrconfig",StringToColor("#87CEEB")},
  103. {".yardopts",StringToColor("#87CEEB")},
  104. {"manifest.mf",StringToColor("#87CEEB")},
  105. {".clang-format",StringToColor("#87CEEB")},
  106. {".clang-tidy",StringToColor("#87CEEB")},
  107. {"favicon.ico",StringToColor("#FFD700")},
  108. {".travis.yml",StringToColor("#FFE4B5")},
  109. {".gitlab-ci.yml",StringToColor("#FF4500")},
  110. {".jenkinsfile",StringToColor("#6495ED")},
  111. {"bitbucket-pipelines.yml",StringToColor("#87CEFA")},
  112. {"bitbucket-pipelines.yaml",StringToColor("#87CEFA")},
  113. {".azure-pipelines.yml",StringToColor("#00BFFF")},
  114. {"firebase.json",StringToColor("#FFA500")},
  115. {".firebaserc",StringToColor("#FFA500")},
  116. {".bowerrc",StringToColor("#CD5C5C")},
  117. {"bower.json",StringToColor("#CD5C5C")},
  118. {"code_of_conduct.md",StringToColor("#FFFFE0")},
  119. {"code_of_conduct.txt",StringToColor("#FFFFE0")},
  120. {"Dockerfile",StringToColor("#4682B4")},
  121. {"docker-compose.yml",StringToColor("#4682B4")},
  122. {"docker-compose.yaml",StringToColor("#4682B4")},
  123. {"docker-compose.dev.yml",StringToColor("#4682B4")},
  124. {"docker-compose.local.yml",StringToColor("#4682B4")},
  125. {"docker-compose.ci.yml",StringToColor("#4682B4")},
  126. {"docker-compose.override.yml",StringToColor("#4682B4")},
  127. {"docker-compose.staging.yml",StringToColor("#4682B4")},
  128. {"docker-compose.prod.yml",StringToColor("#4682B4")},
  129. {"docker-compose.production.yml",StringToColor("#4682B4")},
  130. {"docker-compose.test.yml",StringToColor("#4682B4")},
  131. {"vue.config.js",StringToColor("#778899")},
  132. {"vue.config.ts",StringToColor("#778899")},
  133. {"gulpfile.js",StringToColor("#CD5C5C")},
  134. {"gulpfile.ts",StringToColor("#CD5C5C")},
  135. {"gulpfile.babel.js",StringToColor("#CD5C5C")},
  136. {"gruntfile.js",StringToColor("#CD5C5C")},
  137. {"package.json",StringToColor("#6B8E23")},
  138. {"package-lock.json",StringToColor("#6B8E23")},
  139. {".nvmrc",StringToColor("#6B8E23")},
  140. {".esmrc",StringToColor("#6B8E23")},
  141. {".nmpignore",StringToColor("#00BFFF")},
  142. {".npmrc",StringToColor("#00BFFF")},
  143. {"authors",StringToColor("#FF6347")},
  144. {"authors.md",StringToColor("#FF6347")},
  145. {"authors.txt",StringToColor("#FF6347")},
  146. {".terraform.lock.hcl",StringToColor("#948EEC")},
  147. {"gradlew",StringToColor("#39D52D")},
  148. };
  149. /// <summary>
  150. /// Mapping of file extension to color.
  151. /// </summary>
  152. public Dictionary<string, Color> ExtensionToColor = new ()
  153. {
  154. {".7z",StringToColor("#DAA520")},
  155. {".bz",StringToColor("#DAA520")},
  156. {".tar",StringToColor("#DAA520")},
  157. {".zip",StringToColor("#DAA520")},
  158. {".gz",StringToColor("#DAA520")},
  159. {".xz",StringToColor("#DAA520")},
  160. {".br",StringToColor("#DAA520")},
  161. {".bzip2",StringToColor("#DAA520")},
  162. {".gzip",StringToColor("#DAA520")},
  163. {".brotli",StringToColor("#DAA520")},
  164. {".rar",StringToColor("#DAA520")},
  165. {".tgz",StringToColor("#DAA520")},
  166. {".bat",StringToColor("#008000")},
  167. {".cmd",StringToColor("#008000")},
  168. {".exe",StringToColor("#00FA9A")},
  169. {".pl",StringToColor("#8A2BE2")},
  170. {".sh",StringToColor("#FF4500")},
  171. {".msi",StringToColor("#FFC77A")},
  172. {".msix",StringToColor("#FFC77A")},
  173. {".msixbundle",StringToColor("#FFC77A")},
  174. {".appx",StringToColor("#FFC77A")},
  175. {".AppxBundle",StringToColor("#FFC77A")},
  176. {".deb",StringToColor("#FFC77A")},
  177. {".rpm",StringToColor("#FFC77A")},
  178. {".ps1",StringToColor("#00BFFF")},
  179. {".psm1",StringToColor("#00BFFF")},
  180. {".psd1",StringToColor("#00BFFF")},
  181. {".ps1xml",StringToColor("#00BFFF")},
  182. {".psc1",StringToColor("#00BFFF")},
  183. {".pssc",StringToColor("#00BFFF")},
  184. {".js",StringToColor("#F0E68C")},
  185. {".esx",StringToColor("#F0E68C")},
  186. {".mjs",StringToColor("#F0E68C")},
  187. {".java",StringToColor("#F89820")},
  188. {".jar",StringToColor("#F89820")},
  189. {".gradle",StringToColor("#39D52D")},
  190. {".py",StringToColor("#4B8BBE")},
  191. {".ipynb",StringToColor("#4B8BBE")},
  192. {".jsx",StringToColor("#20B2AA")},
  193. {".tsx",StringToColor("#20B2AA")},
  194. {".ts",StringToColor("#F0E68C")},
  195. {".dll",StringToColor("#87CEEB")},
  196. {".clixml",StringToColor("#00BFFF")},
  197. {".csv",StringToColor("#9ACD32")},
  198. {".tsv",StringToColor("#9ACD32")},
  199. {".ini",StringToColor("#6495ED")},
  200. {".dlc",StringToColor("#6495ED")},
  201. {".config",StringToColor("#6495ED")},
  202. {".conf",StringToColor("#6495ED")},
  203. {".properties",StringToColor("#6495ED")},
  204. {".prop",StringToColor("#6495ED")},
  205. {".settings",StringToColor("#6495ED")},
  206. {".option",StringToColor("#6495ED")},
  207. {".reg",StringToColor("#6495ED")},
  208. {".props",StringToColor("#6495ED")},
  209. {".toml",StringToColor("#6495ED")},
  210. {".prefs",StringToColor("#6495ED")},
  211. {".sln.dotsettings",StringToColor("#6495ED")},
  212. {".sln.dotsettings.user",StringToColor("#6495ED")},
  213. {".cfg",StringToColor("#6495ED")},
  214. {".c",StringToColor("#A9A9A9")},
  215. {".cpp",StringToColor("#A9A9A9")},
  216. {".go",StringToColor("#20B2AA")},
  217. {".php",StringToColor("#6A5ACD")},
  218. {".csproj",StringToColor("#EE82EE")},
  219. {".ruleset",StringToColor("#EE82EE")},
  220. {".sln",StringToColor("#EE82EE")},
  221. {".slnf",StringToColor("#EE82EE")},
  222. {".suo",StringToColor("#EE82EE")},
  223. {".vb",StringToColor("#EE82EE")},
  224. {".vbs",StringToColor("#EE82EE")},
  225. {".vcxitems",StringToColor("#EE82EE")},
  226. {".vcxitems.filters",StringToColor("#EE82EE")},
  227. {".vcxproj",StringToColor("#EE82EE")},
  228. {".vsxproj.filters",StringToColor("#EE82EE")},
  229. {".cs",StringToColor("#7B68EE")},
  230. {".csx",StringToColor("#7B68EE")},
  231. {".hs",StringToColor("#9932CC")},
  232. {".xaml",StringToColor("#87CEFA")},
  233. {".rs",StringToColor("#FF4500")},
  234. {".pdb",StringToColor("#FFD700")},
  235. {".sql",StringToColor("#FFD700")},
  236. {".pks",StringToColor("#FFD700")},
  237. {".pkb",StringToColor("#FFD700")},
  238. {".accdb",StringToColor("#FFD700")},
  239. {".mdb",StringToColor("#FFD700")},
  240. {".sqlite",StringToColor("#FFD700")},
  241. {".pgsql",StringToColor("#FFD700")},
  242. {".postgres",StringToColor("#FFD700")},
  243. {".psql",StringToColor("#FFD700")},
  244. {".patch",StringToColor("#FF4500")},
  245. {".user",StringToColor("#00BFFF")},
  246. {".code-workspace",StringToColor("#00BFFF")},
  247. {".log",StringToColor("#F0E68C")},
  248. {".txt",StringToColor("#00CED1")},
  249. {".srt",StringToColor("#00CED1")},
  250. {".lrc",StringToColor("#00CED1")},
  251. {".ass",StringToColor("#C50000")},
  252. {".html",StringToColor("#CD5C5C")},
  253. {".htm",StringToColor("#CD5C5C")},
  254. {".xhtml",StringToColor("#CD5C5C")},
  255. {".html_vm",StringToColor("#CD5C5C")},
  256. {".asp",StringToColor("#CD5C5C")},
  257. {".css",StringToColor("#87CEFA")},
  258. {".sass",StringToColor("#FF00FF")},
  259. {".scss",StringToColor("#FF00FF")},
  260. {".less",StringToColor("#6B8E23")},
  261. {".md",StringToColor("#00BFFF")},
  262. {".markdown",StringToColor("#00BFFF")},
  263. {".rst",StringToColor("#00BFFF")},
  264. {".hbs",StringToColor("#E37933")},
  265. {".json",StringToColor("#FFD700")},
  266. {".tsbuildinfo",StringToColor("#FFD700")},
  267. {".yml",StringToColor("#FF6347")},
  268. {".yaml",StringToColor("#FF6347")},
  269. {".lua",StringToColor("#87CEFA")},
  270. {".clj",StringToColor("#00FF7F")},
  271. {".cljs",StringToColor("#00FF7F")},
  272. {".cljc",StringToColor("#00FF7F")},
  273. {".groovy",StringToColor("#87CEFA")},
  274. {".vue",StringToColor("#20B2AA")},
  275. {".dart",StringToColor("#4682B4")},
  276. {".ex",StringToColor("#8B4513")},
  277. {".exs",StringToColor("#8B4513")},
  278. {".eex",StringToColor("#8B4513")},
  279. {".leex",StringToColor("#8B4513")},
  280. {".erl",StringToColor("#FF6347")},
  281. {".elm",StringToColor("#9932CC")},
  282. {".applescript",StringToColor("#4682B4")},
  283. {".xml",StringToColor("#98FB98")},
  284. {".plist",StringToColor("#98FB98")},
  285. {".xsd",StringToColor("#98FB98")},
  286. {".dtd",StringToColor("#98FB98")},
  287. {".xsl",StringToColor("#98FB98")},
  288. {".xslt",StringToColor("#98FB98")},
  289. {".resx",StringToColor("#98FB98")},
  290. {".iml",StringToColor("#98FB98")},
  291. {".xquery",StringToColor("#98FB98")},
  292. {".tmLanguage",StringToColor("#98FB98")},
  293. {".manifest",StringToColor("#98FB98")},
  294. {".project",StringToColor("#98FB98")},
  295. {".chm",StringToColor("#87CEEB")},
  296. {".pdf",StringToColor("#CD5C5C")},
  297. {".xls",StringToColor("#9ACD32")},
  298. {".xlsx",StringToColor("#9ACD32")},
  299. {".pptx",StringToColor("#DC143C")},
  300. {".ppt",StringToColor("#DC143C")},
  301. {".pptm",StringToColor("#DC143C")},
  302. {".potx",StringToColor("#DC143C")},
  303. {".potm",StringToColor("#DC143C")},
  304. {".ppsx",StringToColor("#DC143C")},
  305. {".ppsm",StringToColor("#DC143C")},
  306. {".pps",StringToColor("#DC143C")},
  307. {".ppam",StringToColor("#DC143C")},
  308. {".ppa",StringToColor("#DC143C")},
  309. {".doc",StringToColor("#00BFFF")},
  310. {".docx",StringToColor("#00BFFF")},
  311. {".rtf",StringToColor("#00BFFF")},
  312. {".mp3",StringToColor("#DB7093")},
  313. {".flac",StringToColor("#DB7093")},
  314. {".m4a",StringToColor("#DB7093")},
  315. {".wma",StringToColor("#DB7093")},
  316. {".aiff",StringToColor("#DB7093")},
  317. {".wav",StringToColor("#DB7093")},
  318. {".aac",StringToColor("#DB7093")},
  319. {".opus",StringToColor("#DB7093")},
  320. {".png",StringToColor("#20B2AA")},
  321. {".jpeg",StringToColor("#20B2AA")},
  322. {".jpg",StringToColor("#20B2AA")},
  323. {".gif",StringToColor("#20B2AA")},
  324. {".ico",StringToColor("#20B2AA")},
  325. {".tif",StringToColor("#20B2AA")},
  326. {".tiff",StringToColor("#20B2AA")},
  327. {".psd",StringToColor("#20B2AA")},
  328. {".psb",StringToColor("#20B2AA")},
  329. {".ami",StringToColor("#20B2AA")},
  330. {".apx",StringToColor("#20B2AA")},
  331. {".bmp",StringToColor("#20B2AA")},
  332. {".bpg",StringToColor("#20B2AA")},
  333. {".brk",StringToColor("#20B2AA")},
  334. {".cur",StringToColor("#20B2AA")},
  335. {".dds",StringToColor("#20B2AA")},
  336. {".dng",StringToColor("#20B2AA")},
  337. {".eps",StringToColor("#20B2AA")},
  338. {".exr",StringToColor("#20B2AA")},
  339. {".fpx",StringToColor("#20B2AA")},
  340. {".gbr",StringToColor("#20B2AA")},
  341. {".jbig2",StringToColor("#20B2AA")},
  342. {".jb2",StringToColor("#20B2AA")},
  343. {".jng",StringToColor("#20B2AA")},
  344. {".jxr",StringToColor("#20B2AA")},
  345. {".pbm",StringToColor("#20B2AA")},
  346. {".pgf",StringToColor("#20B2AA")},
  347. {".pic",StringToColor("#20B2AA")},
  348. {".raw",StringToColor("#20B2AA")},
  349. {".webp",StringToColor("#20B2AA")},
  350. {".svg",StringToColor("#F4A460")},
  351. {".webm",StringToColor("#FFA500")},
  352. {".mkv",StringToColor("#FFA500")},
  353. {".flv",StringToColor("#FFA500")},
  354. {".vob",StringToColor("#FFA500")},
  355. {".ogv",StringToColor("#FFA500")},
  356. {".ogg",StringToColor("#FFA500")},
  357. {".gifv",StringToColor("#FFA500")},
  358. {".avi",StringToColor("#FFA500")},
  359. {".mov",StringToColor("#FFA500")},
  360. {".qt",StringToColor("#FFA500")},
  361. {".wmv",StringToColor("#FFA500")},
  362. {".yuv",StringToColor("#FFA500")},
  363. {".rm",StringToColor("#FFA500")},
  364. {".rmvb",StringToColor("#FFA500")},
  365. {".mp4",StringToColor("#FFA500")},
  366. {".mpg",StringToColor("#FFA500")},
  367. {".mp2",StringToColor("#FFA500")},
  368. {".mpeg",StringToColor("#FFA500")},
  369. {".mpe",StringToColor("#FFA500")},
  370. {".mpv",StringToColor("#FFA500")},
  371. {".m2v",StringToColor("#FFA500")},
  372. {".ics",StringToColor("#00CED1")},
  373. {".cer",StringToColor("#FF6347")},
  374. {".cert",StringToColor("#FF6347")},
  375. {".crt",StringToColor("#FF6347")},
  376. {".pfx",StringToColor("#FF6347")},
  377. {".pem",StringToColor("#66CDAA")},
  378. {".pub",StringToColor("#66CDAA")},
  379. {".key",StringToColor("#66CDAA")},
  380. {".asc",StringToColor("#66CDAA")},
  381. {".gpg",StringToColor("#66CDAA")},
  382. {".woff",StringToColor("#DC143C")},
  383. {".woff2",StringToColor("#DC143C")},
  384. {".ttf",StringToColor("#DC143C")},
  385. {".eot",StringToColor("#DC143C")},
  386. {".suit",StringToColor("#DC143C")},
  387. {".otf",StringToColor("#DC143C")},
  388. {".bmap",StringToColor("#DC143C")},
  389. {".fnt",StringToColor("#DC143C")},
  390. {".odttf",StringToColor("#DC143C")},
  391. {".ttc",StringToColor("#DC143C")},
  392. {".font",StringToColor("#DC143C")},
  393. {".fonts",StringToColor("#DC143C")},
  394. {".sui",StringToColor("#DC143C")},
  395. {".ntf",StringToColor("#DC143C")},
  396. {".mrg",StringToColor("#DC143C")},
  397. {".rb",StringToColor("#FF0000")},
  398. {".erb",StringToColor("#FF0000")},
  399. {".gemfile",StringToColor("#FF0000")},
  400. {"Rakefile",StringToColor("#FF0000")},
  401. {".fs",StringToColor("#00BFFF")},
  402. {".fsx",StringToColor("#00BFFF")},
  403. {".fsi",StringToColor("#00BFFF")},
  404. {".fsproj",StringToColor("#00BFFF")},
  405. {".dockerignore",StringToColor("#4682B4")},
  406. {".dockerfile",StringToColor("#4682B4")},
  407. {".vscodeignore",StringToColor("#6495ED")},
  408. {".vsixmanifest",StringToColor("#6495ED")},
  409. {".vsix",StringToColor("#6495ED")},
  410. {".code-workplace",StringToColor("#6495ED")},
  411. {".sublime-project",StringToColor("#F4A460")},
  412. {".sublime-workspace",StringToColor("#F4A460")},
  413. {".lock",StringToColor("#DAA520")},
  414. {".tf",StringToColor("#948EEC")},
  415. {".tfvars",StringToColor("#948EEC")},
  416. {".auto.tfvars",StringToColor("#948EEC")},
  417. {".bicep",StringToColor("#00BFFF")},
  418. {".vmdk",StringToColor("#E1E3E6")},
  419. {".vhd",StringToColor("#E1E3E6")},
  420. {".vhdx",StringToColor("#E1E3E6")},
  421. {".img",StringToColor("#E1E3E6")},
  422. {".iso",StringToColor("#E1E3E6")},
  423. {".R",StringToColor("#276DC3")},
  424. {".Rmd",StringToColor("#276DC3")},
  425. {".Rproj",StringToColor("#276DC3")},
  426. {".jl",StringToColor("#9259a3")},
  427. {".vim",StringToColor("#019833")},
  428. {".pp",StringToColor("#FFA61A")},
  429. {".epp",StringToColor("#FFA61A")},
  430. {".scala",StringToColor("#DE3423")},
  431. {".sc",StringToColor("#DE3423")},
  432. {".iLogicVb",StringToColor("#A63B22")},
  433. };
  434. private static Color StringToColor (string str)
  435. {
  436. if (!Color.TryParse (str, out var c)) {
  437. throw new System.Exception ("Failed to parse Color from " + str);
  438. }
  439. return c;
  440. }
  441. }
  442. }