colors = set(file_extension_colors.values())
icons = set(file_extension_icons.values())

syntax_group = {}

for group in colors:
  syntax_group[group] = ""

for ext, color in file_extension_colors.items():
  icon = file_extension_icons.get(ext, None)
  # move on if we don't have an icon
  if icon is None:
      continue

  # yay! our first entry in the syntax_group
  if syntax_group[color] == "":
    syntax_group[color] = icon
    continue

  # don't repeat any icon across groups
  conflict = False
  for icon_string in syntax_group.values():
    if icon in icon_string:
        conflict = True
  if icon in syntax_group[color] or conflict:
    continue

  # yay new icon for new group, add it
  syntax_group[color] += f"\|{icon}"

for color, group in syntax_group.items():
    # syntax match DevIconRed "\|" containedin=NERDTreeFile
    print(f"syntax match DevIcon{color.capitalize()} \"{group}\" containedin=NERDTreeFile")
    print(f"hi DevIcon{color.capitalize()} ctermfg= ")

file_extension_colors = {
  'styl': 'green',
  'sass': 'magenta',
  'scss': 'magenta',
  'htm': 'yellow',
  'html': 'yellow',
  'erb': 'red',
  'slim': 'yellow',
  'ejs': 'yellow',
  'css': 'blue',
  'less': 'blue',
  'md': 'yellow',
  'mdx': 'yellow',
  'markdown': 'yellow',
  'rmd': 'yellow',
  'json': 'cyan',
  'js': 'cyan',
  'mjs': 'cyan',
  'jsx': 'blue',
  'rb': 'red',
  'php': 'magenta',
  'py': 'yellow',
  'pyc': 'yellow',
  'pyo': 'yellow',
  'pyd': 'yellow',
  'coffee': 'yellow',
  'mustache': 'yellow',
  'hbs': 'yellow',
  'conf': 'white',
  'ini': 'white',
  'yml': 'white',
  'yaml': 'white',
  'toml': 'white',
  'bat': 'white',
  'jpg': 'cyan',
  'jpeg': 'cyan',
  'bmp': 'cyan',
  'png': 'cyan',
  'webp': 'cyan',
  'gif': 'cyan',
  'ico': 'cyan',
  'twig': 'green',
  'cpp': 'blue',
  'c+': 'blue',
  'cxx': 'blue',
  'cc': 'blue',
  'cp': 'blue',
  'c': 'blue',
  'cs': 'blue',
  'h': 'blue',
  'hh': 'blue',
  'hpp': 'blue',
  'hxx': 'blue',
  'hs': 'cyan',
  'lhs': 'cyan',
  'lua': 'magenta',
  'java': 'magenta',
  'sh': 'magenta',
  'fish': 'green',
  'bash': 'magenta',
  'zsh': 'white',
  'ksh': 'white',
  'csh': 'white',
  'awk': 'white',
  'ps1': 'blue',
  'ml': 'yellow',
  'mli': 'yellow',
  'diff': 'white',
  'db': 'blue',
  'sql': 'blue',
  'dump': 'blue',
  'clj': 'green',
  'cljc': 'green',
  'cljs': 'green',
  'edn': 'green',
  'scala': 'red',
  'go': 'cyan',
  'dart': 'blue',
  'xul': 'yellow',
  'sln': 'magenta',
  'suo': 'magenta',
  'pl': 'blue',
  'pm': 'blue',
  't': 'blue',
  'rss': 'yellow',
  'f#': 'blue',
  'fsscript': 'blue',
  'fsx': 'blue',
  'fs': 'blue',
  'fsi': 'blue',
  'rs': 'yellow',
  'rlib': 'yellow',
  'd': 'red',
  'erl': 'magenta',
  'hrl': 'magenta',
  'ex': 'magenta',
  'exs': 'magenta',
  'eex': 'magenta',
  'leex': 'white',
  'vim': 'green',
  'ai': 'yellow',
  'psd': 'blue',
  'psb': 'blue',
  'ts': 'blue',
  'tsx': 'blue',
  'jl': 'magenta',
  'pp': 'white',
  'vue': 'white',
  'elm': 'white',
  'swift': 'yellow',
  'xcplayground': 'yellow'
}

file_extension_icons = {
  'styl': '',
  'sass': '',
  'scss': '',
  'htm': '',
  'html': '',
  'slim': '',
  'haml': '',
  'ejs': '',
  'css': '',
  'less': '',
  'md': '',
  'mdx': '',
  'markdown': '',
  'rmd': '',
  'json': '',
  'webmanifest': '',
  'js': '',
  'mjs': '',
  'jsx': '',
  'rb': '',
  'gemspec': '',
  'rake': '',
  'php': '',
  'py': '',
  'pyc': '',
  'pyo': '',
  'pyd': '',
  'coffee': '',
  'mustache': '',
  'hbs': '',
  'conf': '',
  'ini': '',
  'yml': '',
  'yaml': '',
  'toml': '',
  'bat': '',
  'jpg': '',
  'jpeg': '',
  'bmp': '',
  'png': '',
  'webp': '',
  'gif': '',
  'ico': '',
  'twig': '',
  'cpp': '',
  'c+': '',
  'cxx': '',
  'cc': '',
  'cp': '',
  'c': '',
  'cs': '',
  'h': '',
  'hh': '',
  'hpp': '',
  'hxx': '',
  'hs': '',
  'lhs': '',
  'lua': '',
  'java': '',
  'sh': '',
  'fish': '',
  'bash': '',
  'zsh': '',
  'ksh': '',
  'csh': '',
  'awk': '',
  'ps1': '',
  'ml': 'λ',
  'mli': 'λ',
  'diff': '',
  'db': '',
  'sql': '',
  'dump': '',
  'clj': '',
  'cljc': '',
  'cljs': '',
  'edn': '',
  'scala': '',
  'go': '',
  'dart': '',
  'xul': '',
  'sln': '',
  'suo': '',
  'pl': '',
  'pm': '',
  't': '',
  'rss': '',
  'f#': '',
  'fsscript': '',
  'fsx': '',
  'fs': '',
  'fsi': '',
  'rs': '',
  'rlib': '',
  'd': '',
  'erl': '',
  'hrl': '',
  'ex': '',
  'exs': '',
  'eex': '',
  'leex': '',
  'vim': '',
  'ai': '',
  'psd': '',
  'psb': '',
  'ts': '',
  'tsx': '',
  'jl': '',
  'pp': '',
  'vue': '﵂',
  'elm': '',
  'swift': '',
  'xcplayground': '',
  'tex': 'ﭨ',
  'r': 'ﳒ',
  'rproj': '鉶'
}
