use std::{
collections::HashMap,
path::{Path, PathBuf},
sync::LazyLock,
};
use duat_core::{
buffer::Buffer,
context::Handle,
data::{Pass, RwData},
mode::Cursor,
};
pub use prefixes::AutoPrefix;
use regex::RegexSet;
mod prefixes;
pub trait FileType {
fn filetype(&self) -> Option<&'static str>;
}
impl FileType for Buffer {
fn filetype(&self) -> Option<&'static str> {
self.path_set()?.filetype()
}
}
impl FileType for Cursor<'_> {
fn filetype(&self) -> Option<&'static str> {
self.widget().filetype()
}
}
impl FileType for String {
fn filetype(&self) -> Option<&'static str> {
AsRef::<str>::as_ref(&self).filetype()
}
}
impl FileType for &'_ str {
fn filetype(&self) -> Option<&'static str> {
Path::new(self).filetype()
}
}
impl FileType for PathBuf {
fn filetype(&self) -> Option<&'static str> {
self.as_path().filetype()
}
}
impl FileType for &'_ Path {
fn filetype(&self) -> Option<&'static str> {
self.extension()
.and_then(|ext| EXTENSIONS.get(ext.to_str()?).copied())
.or_else(|| FILENAMES.get(self.to_str()?).copied())
.or_else(|| FILENAMES.get(self.file_name()?.to_str()?).copied())
.or_else(|| {
let (patterns, langs) = &*PATTERNS;
langs
.get(patterns.matches(self.to_str()?).iter().min()?)
.copied()
})
}
}
pub trait PassFileType {
fn filetype(&self, pa: &Pass) -> Option<&'static str>;
}
impl PassFileType for RwData<Buffer> {
fn filetype(&self, pa: &Pass) -> Option<&'static str> {
self.read(pa).filetype()
}
}
impl PassFileType for Handle<Buffer> {
fn filetype(&self, pa: &Pass) -> Option<&'static str> {
self.read(pa).filetype()
}
}
macro_rules! fmt{
($($tt:tt)*) => {{
let str: &'static str = format!($($tt)*).leak();
str
}}
}
static EXTENSIONS: LazyLock<HashMap<&'static str, &'static str>> = LazyLock::new(|| {
HashMap::from_iter([
("8th", "8th"),
("a65", "a65"),
("aap", "aap"),
("abap", "abap"),
("abc", "abc"),
("abl", "abel"),
("abnf", "abnf"),
("wrm", "acedb"),
("ads", "ada"),
("ada", "ada"),
("gpr", "ada"),
("adb", "ada"),
("tdf", "ahdl"),
("aidl", "aidl"),
("aml", "aml"),
("run", "ampl"),
("g4", "antlr4"),
("scpt", "applescript"),
("ino", "arduino"),
("pde", "arduino"),
("art", "art"),
("asciidoc", "asciidoc"),
("adoc", "asciidoc"),
("asa", "aspvbs"),
("asm", "asm"),
("s", "asm"),
("S", "asm"),
("a", "asm"),
("A", "asm"),
("lst", "asm"),
("mac", "asm"),
("asn1", "asn"),
("asn", "asn"),
("asp", "aspvbs"),
("astro", "astro"),
("asy", "asy"),
("atl", "atlas"),
("as", "atlas"),
("zed", "authzed"),
("ahk", "autohotkey"),
("au3", "autoit"),
("ave", "ave"),
("gawk", "awk"),
("awk", "awk"),
("ref", "b"),
("imp", "b"),
("mch", "b"),
("bas", "basic"),
("bass", "bass"),
("bi", "basic"),
("bm", "basic"),
("bc", "bc"),
("bdf", "bdf"),
("beancount", "beancount"),
("bib", "bib"),
("com", "dcl"),
("db", "bindzone"),
("bicep", "bicep"),
("bicepparam", "bicep"),
("zone", "bindzone"),
("bb", "bitbake"),
("bbappend", "bitbake"),
("bbclass", "bitbake"),
("bl", "blank"),
("blp", "blueprint"),
("bp", "bp"),
("bsd", "bsdl"),
("bsdl", "bsdl"),
("bst", "bst"),
("btm", "btm"),
("bzl", "bzl"),
("bazel", "bzl"),
("BUILD", "bzl"),
("mdh", "c"),
("epro", "c"),
("qc", "c"),
("c3", "c3"),
("c3i", "c3"),
("c3t", "c3"),
("cabal", "cabal"),
("cairo", "cairo"),
("capnp", "capnp"),
("cdc", "cdc"),
("cdl", "cdl"),
("toc", "tex"),
("cedar", "cedar"),
("cfc", "cf"),
("cfm", "cf"),
("cfi", "cf"),
("hgrc", "cfg"),
("cfg", "cfg"),
("Cfg", "cfg"),
("CFG", "cfg"),
("chf", "ch"),
("chai", "chaiscript"),
("ch", "chill"),
("chs", "chaskell"),
("chatito", "chatito"),
("chopro", "chordpro"),
("crd", "chordpro"),
("crdpro", "chordpro"),
("cho", "chordpro"),
("chordpro", "chordpro"),
("ck", "chuck"),
("cl", "lisp"),
("eni", "cl"),
("icl", "clean"),
("cljx", "clojure"),
("clj", "clojure"),
("cljc", "clojure"),
("cljs", "clojure"),
("cook", "cook"),
("cmake", "cmake"),
("cmod", "cmod"),
("cob", "cobol"),
("cbl", "cobol"),
("atg", "coco"),
("recipe", "conaryrecipe"),
("ctags", "conf"),
("hook", "confini"),
("nmconnection", "confini"),
("mklx", "context"),
("mkiv", "context"),
("mkii", "context"),
("mkxl", "context"),
("mkvi", "context"),
("control", "debcontrol"),
("copyright", "debcopyright"),
("corn", "corn"),
("csh", "csh"),
("cpon", "cpon"),
("moc", "cpp"),
("hh", "cpp"),
("tlh", "cpp"),
("inl", "cpp"),
("ipp", "cpp"),
("c++", "cpp"),
("C", "cpp"),
("cxx", "cpp"),
("H", "cpp"),
("tcc", "cpp"),
("hxx", "cpp"),
("hpp", "cpp"),
("ixx", "cpp"),
("mpp", "cpp"),
("ccm", "cpp"),
("cppm", "cpp"),
("cxxm", "cpp"),
("c++m", "cpp"),
("cpp", "cpp"),
("cc", "cpp"),
("cql", "cqlang"),
("crm", "crm"),
("cr", "crystal"),
("cake", "cs"),
("csx", "cs"),
("cs", "cs"),
("csc", "csc"),
("csdl", "csdl"),
("cshtml", "html"),
("fdr", "csp"),
("csp", "csp"),
("css", "css"),
("csv", "csv"),
("con", "cterm"),
("feature", "cucumber"),
("cuh", "cuda"),
("cu", "cuda"),
("cue", "cue"),
("pld", "cupl"),
("si", "cuplsim"),
("cyn", "cynpp"),
("cypher", "cypher"),
("dfy", "dafny"),
("dart", "dart"),
("drt", "dart"),
("ds", "datascript"),
("dat", "upstreamdat"),
("Dat", "upstreamdat"),
("DAT", "upstreamdat"),
("dax", "dax"),
("dcd", "dcd"),
("decl", "sgmldecl"),
("dec", "sgmldecl"),
("dcl", "clean"),
("def", "def"),
("desc", "desc"),
("directory", "desktop"),
("desktop", "desktop"),
("dhall", "dhall"),
("diff", "diff"),
("rej", "diff"),
("Dockerfile", "dockerfile"),
("dockerfile", "dockerfile"),
("bat", "dosbatch"),
("wrap", "dosini"),
("ini", "dosini"),
("INI", "dosini"),
("vbp", "dosini"),
("dot", "dot"),
("gv", "dot"),
("drac", "dracula"),
("drc", "dracula"),
("lvs", "dracula"),
("lpe", "dracula"),
("dsp", "make"),
("dtd", "dtd"),
("d", "d"),
("dts", "dts"),
("dtsi", "dts"),
("dtso", "dts"),
("its", "dts"),
("keymap", "dts"),
("overlay", "dts"),
("dylan", "dylan"),
("intr", "dylanintr"),
("lid", "dylanlid"),
("e", "eiffel"),
("E", "eiffel"),
("ecd", "ecd"),
("edf", "edif"),
("edif", "edif"),
("edo", "edif"),
("edn", "closure"),
("eex", "eelixir"),
("leex", "eelixir"),
("am", "elf"),
("exs", "elixir"),
("elm", "elm"),
("lc", "elsa"),
("elv", "elvish"),
("ent", "dtd"),
("epp", "epuppet"),
("erl", "erlang"),
("hrl", "erlang"),
("yaws", "erlang"),
("erb", "eruby"),
("rhtml", "eruby"),
("esdl", "esdl"),
("ec", "esqlc"),
("EC", "esqlc"),
("strl", "esterel"),
("eu", "euphoria3"),
("EU", "euphoria3"),
("ew", "euphoria3"),
("EW", "euphoria3"),
("EX", "euphoria3"),
("exu", "euphoria3"),
("EXU", "euphoria3"),
("exw", "euphoria3"),
("EXW", "euphoria3"),
("ex", "elixir"),
("exp", "expect"),
("f", "fortran"),
("factor", "factor"),
("fal", "falcon"),
("fan", "fan"),
("fwt", "fan"),
("lib", "faust"),
("fnl", "fennel"),
("m4gl", "fgl"),
("4gl", "fgl"),
("4gh", "fgl"),
("fir", "firrtl"),
("fish", "fish"),
("focexec", "focexec"),
("fex", "focexec"),
("ft", "forth"),
("fth", "forth"),
("4th", "forth"),
("FOR", "fortran"),
("f77", "fortran"),
("f03", "fortran"),
("fortran", "fortran"),
("F95", "fortran"),
("f90", "fortran"),
("F03", "fortran"),
("fpp", "fortran"),
("FTN", "fortran"),
("ftn", "fortran"),
("for", "fortran"),
("F90", "fortran"),
("F77", "fortran"),
("f95", "fortran"),
("FPP", "fortran"),
("F", "fortran"),
("F08", "fortran"),
("f08", "fortran"),
("fpc", "fpcmake"),
("fsl", "framescript"),
("frm", "form"),
("fb", "freebasic"),
("fs", "fortran"),
("fsh", "fsh"),
("fsi", "fsharp"),
("fsx", "fsharp"),
("fc", "func"),
("fusion", "fusion"),
("gdb", "gdb"),
("gdmo", "gdmo"),
("mo", "gdmo"),
("tscn", "gdresource"),
("tres", "gdresource"),
("gd", "gdscript"),
("gdshader", "gdshader"),
("shader", "gdshader"),
("ged", "gedcom"),
("gel", "gel"),
("gmi", "gemtext"),
("gemini", "gemtext"),
("gift", "gift"),
("prettierignore", "gitignore"),
("gleam", "gleam"),
("vert", "glsl"),
("tesc", "glsl"),
("tese", "glsl"),
("glsl", "glsl"),
("geom", "glsl"),
("frag", "glsl"),
("comp", "glsl"),
("rgen", "glsl"),
("rmiss", "glsl"),
("rchit", "glsl"),
("rahit", "glsl"),
("rint", "glsl"),
("rcall", "glsl"),
("gn", "gn"),
("gni", "gn"),
("gnuplot", "gnuplot"),
("gpi", "gnuplot"),
("go", "go"),
("gp", "gp"),
("gs", "grads"),
("gql", "graphql"),
("graphql", "graphql"),
("graphqls", "graphql"),
("gretl", "gretl"),
("gradle", "groovy"),
("groovy", "groovy"),
("gsp", "gsp"),
("gjs", "javascript.glimmer"),
("gts", "typescript.glimmer"),
("gyp", "gyp"),
("gypi", "gyp"),
("hack", "hack"),
("hackpartial", "hack"),
("haml", "haml"),
("hsm", "hamster"),
("hbs", "handlebars"),
("ha", "hare"),
("hs-boot", "haskell"),
("hsig", "haskell"),
("hsc", "haskell"),
("hs", "haskell"),
("persistentmodels", "haskellpersistent"),
("ht", "haste"),
("htpp", "hastepreproc"),
("hcl", "hcl"),
("hb", "hb"),
("h", "c"),
("sum", "hercules"),
("errsum", "hercules"),
("ev", "hercules"),
("vc", "hercules"),
("heex", "heex"),
("hex", "hex"),
("a43", "hex"),
("a90", "hex"),
("h32", "hex"),
("h80", "hex"),
("h86", "hex"),
("ihex", "hex"),
("ihe", "hex"),
("ihx", "hex"),
("int", "hex"),
("mcs", "hex"),
("hjson", "hjson"),
("m3u", "hlsplaylist"),
("m3u8", "hlsplaylist"),
("hog", "hog"),
("hws", "hollywood"),
("hoon", "hoon"),
("cpt", "html"),
("dtml", "html"),
("htm", "html"),
("html", "html"),
("pt", "html"),
("shtml", "html"),
("stm", "html"),
("htt", "httest"),
("htb", "httest"),
("http", "http"),
("hurl", "hurl"),
("hw", "php"),
("module", "php"),
("pkg", "php"),
("hy", "hy"),
("iba", "ibasic"),
("ibi", "ibasic"),
("icn", "icon"),
("idl", "idl"),
("idr", "idris2"),
("inc", "php"),
("inf", "inform"),
("INF", "inform"),
("ii", "initng"),
("inko", "inko"),
("inp", "tex"),
("ms", "nroff"),
("ipkg", "ipkg"),
("iss", "iss"),
("mst", "ist"),
("ist", "ist"),
("ijs", "j"),
("JAL", "jal"),
("jal", "jal"),
("jpr", "jam"),
("jpl", "jam"),
("janet", "janet"),
("jav", "java"),
("java", "java"),
("jsh", "java"),
("jj", "javacc"),
("jjt", "javacc"),
("es", "javascript"),
("mjs", "javascript"),
("javascript", "javascript"),
("js", "javascript"),
("jsm", "javascript"),
("cjs", "javascript"),
("jsx", "javascriptreact"),
("clp", "jess"),
("jgr", "jgraph"),
("jinja", "jinja"),
("jjdescription", "jjdescription"),
("j73", "jovial"),
("jov", "jovial"),
("jovial", "jovial"),
("properties", "jproperties"),
("jq", "jq"),
("slnf", "json"),
("json", "json"),
("jsonp", "json"),
("geojson", "json"),
("mcmeta", "json"),
("webmanifest", "json"),
("ipynb", "json"),
("jupyterlab-settings", "json"),
("sublime-project", "json"),
("sublime-settings", "json"),
("sublime-workspace", "json"),
("json-patch", "json"),
("bd", "json"),
("bda", "json"),
("xci", "json"),
("json5", "json5"),
("jsonc", "jsonc"),
("jsonl", "jsonl"),
("jsonnet", "jsonnet"),
("libsonnet", "jsonnet"),
("jsp", "jsp"),
("jl", "julia"),
("just", "just"),
("Just", "just"),
("JUST", "just"),
("kl", "karel"),
("KL", "karel"),
("kdl", "kdl"),
("kv", "kivy"),
("kix", "kix"),
("kts", "kotlin"),
("kt", "kotlin"),
("ktm", "kotlin"),
("sub", "krl"),
("Sub", "krl"),
("SUB", "krl"),
("ks", "kscript"),
("k", "kwt"),
("ACE", "lace"),
("ace", "lace"),
("lalrpop", "lalrpop"),
("latte", "latte"),
("lte", "latte"),
("ld", "ld"),
("ldif", "ldif"),
("lean", "lean"),
("journal", "ledger"),
("ldg", "ledger"),
("ledger", "ledger"),
("leo", "leo"),
("less", "less"),
("lex", "lex"),
("lxx", "lex"),
("l++", "lex"),
("l", "lex"),
("lhs", "lhaskell"),
("lidr", "lidris2"),
("ly", "lilypond"),
("ily", "lilypond"),
("liquid", "liquid"),
("liq", "liquidsoap"),
("L", "lisp"),
("lisp", "lisp"),
("el", "lisp"),
("lsp", "lisp"),
("asd", "lisp"),
("lt", "lite"),
("lite", "lite"),
("livemd", "livebook"),
("ll", "llvm"),
("log", "upstreamlog"),
("Log", "upstreamlog"),
("LOG", "upstreamlog"),
("lgt", "logtalk"),
("lotos", "lotos"),
("lot", "tex"),
("lout", "lout"),
("lou", "lout"),
("ulpc", "lpc"),
("lpc", "lpc"),
("c", "c"),
("lsl", "lsl"),
("lss", "lss"),
("nse", "lua"),
("rockspec", "lua"),
("lua", "lua"),
("tlu", "lua"),
("luau", "luau"),
("lrc", "lyrics"),
("m", "matlab"),
("at", "m4"),
("mc", "m4"),
("quake", "m3quake"),
("m4", "m4"),
("eml", "mail"),
("mk", "make"),
("mak", "make"),
("page", "mallard"),
("map", "map"),
("mws", "maple"),
("mpl", "maple"),
("mv", "maple"),
("mkdn", "markdown"),
("md", "markdown"),
("mdwn", "markdown"),
("mkd", "markdown"),
("markdown", "markdown"),
("mdown", "markdown"),
("masm", "masm"),
("mhtml", "mason"),
("mason", "mason"),
("master", "master"),
("mas", "master"),
("demo", "maxima"),
("dm1", "maxima"),
("dm2", "maxima"),
("dm3", "maxima"),
("dmt", "maxima"),
("wxm", "maxima"),
("mbsyncrc", "mbsync"),
("mw", "mediawiki"),
("wiki", "mediawiki"),
("mel", "mel"),
("mmd", "mermaid"),
("mmdc", "mermaid"),
("mermaid", "mermaid"),
("mf", "mf"),
("mgl", "mgl"),
("mgp", "mgp"),
("my", "mib"),
("mib", "mib"),
("mix", "mix"),
("mixal", "mix"),
("mlir", "mlir"),
("mm", "objc"),
("nb", "mma"),
("wl", "mma"),
("mmp", "mmp"),
("mms", "make"),
("mod", "gomod"),
("Mod", "gomod"),
("MOD", "gomod"),
("DEF", "modula2"),
("m3", "modula3"),
("i3", "modula3"),
("mg", "modula3"),
("ig", "modula3"),
("lm3", "modula3"),
("mojo", "mojo"),
("🔥", "mojo"), ("ssc", "monk"),
("monk", "monk"),
("tsc", "monk"),
("isc", "monk"),
("moo", "moo"),
("moon", "moonscript"),
("move", "move"),
("mp", "mp"),
("mpiv", "mp"),
("mpvi", "mp"),
("mpxl", "mp"),
("mof", "msidl"),
("odl", "msidl"),
("msql", "msql"),
("mss", "mss"),
("mu", "mupad"),
("mush", "mush"),
("mustache", "mustache"),
("mysql", "mysql"),
("n1ql", "n1ql"),
("nql", "n1ql"),
("nanorc", "nanorc"),
("nasm", "nasm"),
("NSA", "natural"),
("NSC", "natural"),
("NSG", "natural"),
("NSL", "natural"),
("NSM", "natural"),
("NSN", "natural"),
("NSP", "natural"),
("NSS", "natural"),
("ncf", "ncf"),
("nginx", "nginx"),
("nim", "nim"),
("nims", "nim"),
("nimble", "nim"),
("ninja", "ninja"),
("nix", "nix"),
("norg", "norg"),
("nqc", "nqc"),
("0", "nroff"),
("1", "nroff"),
("2", "nroff"),
("3", "nroff"),
("4", "nroff"),
("5", "nroff"),
("6", "nroff"),
("7", "nroff"),
("8", "nroff"),
("9", "nroff"),
("0p", "nroff"),
("1p", "nroff"),
("3p", "nroff"),
("1x", "nroff"),
("2x", "nroff"),
("3x", "nroff"),
("4x", "nroff"),
("5x", "nroff"),
("6x", "nroff"),
("7x", "nroff"),
("8x", "nroff"),
("3am", "nroff"),
("3perl", "nroff"),
("3pm", "nroff"),
("3posix", "nroff"),
("3type", "nroff"),
("n", "nroff"),
("roff", "nroff"),
("tmac", "nroff"),
("man", "nroff"),
("mom", "nroff"),
("nr", "nroff"),
("tr", "nroff"),
("nsi", "nsis"),
("nsh", "nsis"),
("nt", "ntriples"),
("nu", "nu"),
("obj", "obj"),
("objdump", "objdump"),
("cppobjdump", "objdump"),
("obl", "obse"),
("obse", "obse"),
("oblivion", "obse"),
("obscript", "obse"),
("mlt", "ocaml"),
("mly", "ocaml"),
("mll", "ocaml"),
("mlp", "ocaml"),
("mlip", "ocaml"),
("mli", "ocaml"),
("ml", "ocaml"),
("occ", "occam"),
("odin", "odin"),
("xom", "omnimark"),
("xin", "omnimark"),
("opam", "opam"),
("or", "openroad"),
("scad", "openscad"),
("ovpn", "openvpn"),
("opl", "opl"),
("opL", "opl"),
("oPl", "opl"),
("oPL", "opl"),
("Opl", "opl"),
("OpL", "opl"),
("OPl", "opl"),
("OPL", "opl"),
("ora", "ora"),
("org", "org"),
("org_archive", "org"),
("pandoc", "pandoc"),
("pdk", "pandoc"),
("pd", "pandoc"),
("pdc", "pandoc"),
("pxsl", "papp"),
("papp", "papp"),
("pxml", "papp"),
("pas", "pascal"),
("lpr", "xml"),
("dpr", "pascal"),
("txtpb", "pbtxt"),
("textproto", "pbtxt"),
("textpb", "pbtxt"),
("pbtxt", "pbtxt"),
("g", "pccts"),
("pcmk", "pcmk"),
("pdf", "pdf"),
("pem", "pem"),
("cer", "pem"),
("crt", "pem"),
("csr", "pem"),
("plx", "perl"),
("prisma", "prisma"),
("psgi", "perl"),
("al", "perl"),
("ctp", "php"),
("php", "php"),
("phpt", "php"),
("php0", "php"),
("php1", "php"),
("php2", "php"),
("php3", "php"),
("php4", "php"),
("php5", "php"),
("php6", "php"),
("php7", "php"),
("php8", "php"),
("php9", "php"),
("phtml", "php"),
("theme", "php"),
("pike", "pike"),
("pmod", "pike"),
("rcp", "pilrc"),
("PL", "perl"),
("pli", "pli"),
("pl1", "pli"),
("p36", "plm"),
("plm", "plm"),
("pac", "plm"),
("plp", "plp"),
("pls", "plsql"),
("plsql", "plsql"),
("po", "po"),
("pot", "po"),
("pod", "pod"),
("filter", "poefilter"),
("pk", "poke"),
("pony", "pony"),
("ps", "postscr"),
("epsi", "postscr"),
("afm", "postscr"),
("epsf", "postscr"),
("eps", "postscr"),
("pfa", "postscr"),
("ai", "postscr"),
("pov", "pov"),
("ppd", "ppd"),
("it", "ppwiz"),
("ih", "ppwiz"),
("pq", "pq"),
("action", "privoxy"),
("prg", "rapid"),
("Prg", "rapid"),
("PRG", "rapid"),
("pc", "proc"),
("pdb", "prolog"),
("pml", "promela"),
("proto", "proto"),
("prql", "prql"),
("psd1", "ps1"),
("psm1", "ps1"),
("ps1", "ps1"),
("pssc", "ps1"),
("ps1xml", "ps1xml"),
("psf", "psf"),
("psl", "psl"),
("ptx", "ptx"),
("pug", "pug"),
("purs", "purescript"),
("arr", "pyret"),
("pxd", "pyrex"),
("pxi", "pyrex"),
("pyx", "pyrex"),
("pyx+", "pyrex"),
("pyw", "python"),
("py", "python"),
("pyi", "python"),
("ptl", "python"),
("ipy", "python"),
("ql", "ql"),
("qll", "ql"),
("qml", "qml"),
("qbs", "qml"),
("qmd", "quarto"),
("R", "r"),
("rkt", "racket"),
("rktd", "racket"),
("rktl", "racket"),
("rad", "radiance"),
("mat", "radiance"),
("pod6", "raku"),
("rakudoc", "raku"),
("rakutest", "raku"),
("rakumod", "raku"),
("pm6", "raku"),
("raku", "raku"),
("t6", "raku"),
("p6", "raku"),
("raml", "raml"),
("sysx", "rapid"),
("sysX", "rapid"),
("Sysx", "rapid"),
("SysX", "rapid"),
("SYSX", "rapid"),
("SYSx", "rapid"),
("modx", "rapid"),
("modX", "rapid"),
("Modx", "rapid"),
("ModX", "rapid"),
("MODX", "rapid"),
("MODx", "rapid"),
("rasi", "rasi"),
("rbs", "rbs"),
("rego", "rego"),
("rem", "remind"),
("remind", "remind"),
("pip", "requirements"),
("res", "rescript"),
("resi", "rescript"),
("frt", "reva"),
("testUnit", "rexx"),
("rex", "rexx"),
("orx", "rexx"),
("rexx", "rexx"),
("jrexx", "rexx"),
("rxj", "rexx"),
("rexxj", "rexx"),
("testGroup", "rexx"),
("rxo", "rexx"),
("Rd", "rhelp"),
("rd", "rhelp"),
("rib", "rib"),
("Rmd", "rmd"),
("rmd", "rmd"),
("smd", "rmd"),
("Smd", "rmd"),
("rnc", "rnc"),
("rng", "rng"),
("rnw", "rnoweb"),
("snw", "rnoweb"),
("Rnw", "rnoweb"),
("Snw", "rnoweb"),
("robot", "robot"),
("resource", "robot"),
("roc", "roc"),
("ron", "ron"),
("rsc", "routeros"),
("x", "rpcgen"),
("rpgle", "rpgle"),
("rpgleinc", "rpgle"),
("rpl", "rpl"),
("Srst", "rrst"),
("srst", "rrst"),
("Rrst", "rrst"),
("rrst", "rrst"),
("rst", "rst"),
("rtf", "rtf"),
("rjs", "ruby"),
("rxml", "ruby"),
("rb", "ruby"),
("rant", "ruby"),
("ru", "ruby"),
("rbw", "ruby"),
("gemspec", "ruby"),
("builder", "ruby"),
("rake", "ruby"),
("rs", "rust"),
("sa", "tiasm"),
("sage", "sage"),
("sls", "salt"),
("sas", "sas"),
("sass", "sass"),
("sbt", "sbt"),
("scala", "scala"),
("mill", "scala"),
("ss", "scheme"),
("scm", "scheme"),
("sld", "scheme"),
("stsg", "scheme"),
("sce", "scilab"),
("sci", "scilab"),
("scss", "scss"),
("sd", "sd"),
("sdc", "sdc"),
("pr", "sdl"),
("sdl", "sdl"),
("sed", "sed"),
("sexp", "sexplib"),
("bash", "bash"),
("bats", "bash"),
("cygport", "bash"),
("ebuild", "bash"),
("eclass", "bash"),
("env", "bash"),
("envrc", "bash"),
("ksh", "ksh"),
("sh", "bash"),
("lo", "sh"),
("la", "sh"),
("lai", "sh"),
("mdd", "sh"),
("slang", "shaderslang"),
("sieve", "sieve"),
("siv", "sieve"),
("sig", "sml"),
("sil", "sil"),
("sim", "simula"),
("s85", "sinda"),
("sin", "sinda"),
("ssm", "sisu"),
("sst", "sisu"),
("ssi", "sisu"),
("_sst", "sisu"),
("-sst", "sisu"),
("il", "skill"),
("ils", "skill"),
("cdf", "skill"),
("sl", "slang"),
("ice", "slice"),
("slint", "slint"),
("score", "slrnsc"),
("sol", "solidity"),
("smali", "smali"),
("tpl", "smarty"),
("ihlp", "smcl"),
("smcl", "smcl"),
("hlp", "smcl"),
("smith", "smith"),
("smt", "smith"),
("smithy", "smithy"),
("sml", "sml"),
("smk", "snakemake"),
("spt", "snobol4"),
("sno", "snobol4"),
("sln", "solution"),
("sparql", "sparql"),
("rq", "sparql"),
("spec", "spec"),
("spice", "spice"),
("sp", "spice"),
("spd", "spup"),
("spdata", "spup"),
("speedup", "spup"),
("spi", "spyce"),
("spy", "spyce"),
("tyc", "sql"),
("typ", "typst"),
("pkb", "sql"),
("tyb", "sql"),
("pks", "sql"),
("sqlj", "sqlj"),
("sqi", "sqr"),
("sqr", "sqr"),
("nut", "squirrel"),
("src", "krl"),
("Src", "krl"),
("SRC", "krl"),
("s28", "srec"),
("s37", "srec"),
("srec", "srec"),
("mot", "srec"),
("s19", "srec"),
("srt", "srt"),
("ssa", "ssa"),
("ass", "ssa"),
("st", "st"),
("ipd", "starlark"),
("star", "starlark"),
("starlark", "starlark"),
("imata", "stata"),
("do", "stata"),
("mata", "stata"),
("ado", "stata"),
("stp", "stp"),
("styl", "stylus"),
("stylus", "stylus"),
("quark", "supercollider"),
("sface", "surface"),
("svelte", "svelte"),
("svg", "svg"),
("sw", "sway"),
("swift", "swift"),
("swiftinterface", "swift"),
("swig", "swig"),
("swg", "swig"),
("sys", "bat"),
("Sys", "bat"),
("SYS", "bat"),
("svh", "systemverilog"),
("sv", "systemverilog"),
("cmm", "trace32"),
("cmmt", "trace32"),
("t32", "trace32"),
("td", "tablegen"),
("tak", "tak"),
("tal", "tal"),
("task", "taskedit"),
("tm", "tcl"),
("tcl", "tcl"),
("itk", "tcl"),
("itcl", "tcl"),
("tk", "tcl"),
("jacl", "tcl"),
("tl", "teal"),
("templ", "templ"),
("tmpl", "template"),
("tera", "tera"),
("ti", "terminfo"),
("dtx", "tex"),
("ltx", "tex"),
("bbl", "tex"),
("latex", "tex"),
("sty", "tex"),
("pgf", "tex"),
("nlo", "tex"),
("nls", "tex"),
("thm", "tex"),
("eps_tex", "tex"),
("pdf_tex", "tex"),
("pygtex", "tex"),
("pygstyle", "tex"),
("clo", "tex"),
("aux", "tex"),
("brf", "tex"),
("ind", "tex"),
("lof", "tex"),
("loe", "tex"),
("nav", "tex"),
("vrb", "tex"),
("ins", "tex"),
("tikz", "tex"),
("bbx", "tex"),
("cbx", "tex"),
("beamer", "tex"),
("cls", "st"),
("texi", "texinfo"),
("txi", "texinfo"),
("texinfo", "texinfo"),
("text", "text"),
("tfvars", "terraform-vars"),
("thrift", "thrift"),
("tla", "tla"),
("tli", "tli"),
("toml", "toml"),
("tpp", "tpp"),
("treetop", "treetop"),
("trig", "trig"),
("slt", "tsalt"),
("tsscl", "tsscl"),
("tssgm", "tssgm"),
("tssop", "tssop"),
("tsv", "tsv"),
("tutor", "tutor"),
("twig", "twig"),
("ts", "typescript"),
("mts", "typescript"),
("cts", "typescript"),
("tsx", "typescriptreact"),
("tsp", "typespec"),
("uc", "uc"),
("uit", "uil"),
("uil", "uil"),
("ungram", "ungrammar"),
("u", "unison"),
("uu", "unison"),
("url", "urlshortcut"),
("usd", "usd"),
("usda", "usd"),
("v", "v"),
("vsh", "v"),
("vv", "v"),
("ctl", "vb"),
("dob", "vb"),
("dsm", "vb"),
("dsr", "vb"),
("pag", "vb"),
("sba", "vb"),
("vb", "vb"),
("vbs", "vb"),
("vba", "vb"),
("vdf", "vdf"),
("vdmpp", "vdmpp"),
("vpp", "vdmpp"),
("vdmrt", "vdmrt"),
("vdmsl", "vdmsl"),
("vdm", "vdmsl"),
("vto", "vento"),
("vr", "vera"),
("vri", "vera"),
("vrh", "vera"),
("va", "verilogams"),
("vams", "verilogams"),
("vhdl", "vhdl"),
("vst", "vhdl"),
("vhd", "vhdl"),
("hdl", "vhdl"),
("vho", "vhdl"),
("vbe", "vhdl"),
("tape", "vhs"),
("vim", "vim"),
("mar", "vmasm"),
("cm", "voscm"),
("wrl", "vrml"),
("vroom", "vroom"),
("vue", "vue"),
("wast", "wat"),
("wat", "wat"),
("wdl", "wdl"),
("wm", "webmacro"),
("wgsl", "wgsl"),
("wbt", "winbatch"),
("wit", "wit"),
("wml", "wml"),
("wsf", "wsh"),
("wsc", "wsh"),
("wsml", "wsml"),
("ad", "xdefaults"),
("xhtml", "xhtml"),
("xht", "xhtml"),
("msc", "xmath"),
("msf", "xmath"),
("psc1", "xml"),
("tpm", "xml"),
("xliff", "xml"),
("atom", "xml"),
("xul", "xml"),
("cdxml", "xml"),
("mpd", "xml"),
("rss", "xml"),
("fsproj", "xml"),
("ui", "xml"),
("vbproj", "xml"),
("xlf", "xml"),
("wsdl", "xml"),
("csproj", "xml"),
("wpl", "xml"),
("xmi", "xml"),
("xpr", "xml"),
("xpfm", "xml"),
("spfm", "xml"),
("bxml", "xml"),
("mmi", "xml"),
("xcu", "xml"),
("xlb", "xml"),
("xlc", "xml"),
("xba", "xml"),
("slnx", "xml"),
("xpm", "xpm"),
("xpm2", "xpm2"),
("xqy", "xquery"),
("xqm", "xquery"),
("xquery", "xquery"),
("xq", "xquery"),
("xql", "xquery"),
("xs", "xs"),
("xsd", "xsd"),
("xsl", "xslt"),
("xslt", "xslt"),
("yy", "yacc"),
("y++", "yacc"),
("yxx", "yacc"),
("yml", "yaml"),
("yaml", "yaml"),
("eyaml", "yaml"),
("mplstyle", "yaml"),
("grc", "yaml"),
("yang", "yang"),
("yuck", "yuck"),
("z8a", "z8a"),
("zig", "zig"),
("zon", "zig"),
("ziggy", "ziggy"),
("ziggy-schema", "ziggy_schema"),
("zu", "zimbu"),
("zut", "zimbutempl"),
("zs", "zserio"),
("zsh", "zsh"),
("zunit", "zsh"),
("zsh-theme", "zsh"),
("vala", "vala"),
("web", "web"),
("pl", "perl"),
("pp", "pascal"),
("i", "progress"),
("w", "progress"),
("p", "pascal"),
("pro", "prolog"),
("patch", "diff"),
("r", "r"),
("rdf", "redif"),
("rules", "javascript"),
("sc", "scala"),
("scd", "scdoc"),
("tcsh", "tcsh"),
("sql", "sql"),
("zsql", "sql"),
("tex", "tex"),
("tf", "tf"),
("txt", "text"),
("xml", "xml"),
("y", "yacc"),
("cmd", "dosbatch"),
("rul", "ishd"),
("cpy", "python"),
("dsl", "dsl"),
("smil", "smil"),
("smi", "smil"),
("install", "bash"),
("pm", "perl"),
("me", "objcpp"),
("reg", "registry"),
("ttl", "terraterm"),
("rc", "rc"),
("rch", "rc"),
("class", "scala"),
("sgml", "sgml"),
("sgm", "sgml"),
("t", "perl"),
("bak", ""),
("dpkg-bak", ""),
("dpkg-dist", ""),
("dpkg-old", ""),
("dpkg-new", ""),
("in", ""),
("new", ""),
("old", ""),
("orig", ""),
("pacsave", ""),
("pacnew", ""),
("rpmsave", ""),
("rmpnew", ""),
])
});
static FILENAMES: LazyLock<HashMap<&str, &str>> = LazyLock::new(|| {
HashMap::from_iter([
("a2psrc", "a2ps"),
("/etc/a2ps.cfg", "a2ps"),
(".a2psrc", "a2ps"),
(".asoundrc", "alsaconf"),
("/usr/share/alsa/alsa.conf", "alsaconf"),
("/etc/asound.conf", "alsaconf"),
("build.xml", "ant"),
(".htaccess", "apache"),
("APKBUILD", "apkbuild"),
("apt.conf", "aptconf"),
("/.aptitude/config", "aptconf"),
("=tagging-method", "arch"),
(".arch-inventory", "arch"),
("makefile.am", "automake"),
("Makefile.am", "automake"),
("GNUmakefile.am", "automake"),
(".bash_aliases", "bash"),
(".bash-aliases", "bash"),
(".bash_history", "bash"),
(".bash-history", "bash"),
(".bash_logout", "bash"),
(".bash-logout", "bash"),
(".bash_profile", "bash"),
(".bash-profile", "bash"),
("named.root", "bindzone"),
("WORKSPACE", "bzl"),
("WORKSPACE.bzlmod", "bzl"),
("BUCK", "bzl"),
("BUILD", "bzl"),
("cabal.project", "cabalproject"),
("cabal.config", "cabalconfig"),
("calendar", "calendar"),
("catalog", "catalog"),
("/etc/cdrdao.conf", "cdrdaoconf"),
(".cdrdao", "cdrdaoconf"),
("/etc/default/cdrdao", "cdrdaoconf"),
("/etc/defaults/cdrdao", "cdrdaoconf"),
("cfengine.conf", "cfengine"),
("cgdbrc", "cgdbrc"),
("init.trans", "clojure"),
(".trans", "clojure"),
("CMakeLists.txt", "cmake"),
("CMakeCache.txt", "cmakecache"),
(".cling_history", "cpp"),
(".alias", "csh"),
(".cshrc", "csh"),
(".login", "csh"),
("csh.cshrc", "csh"),
("csh.login", "csh"),
("csh.logout", "csh"),
("auto.master", "conf"),
("texdoc.cnf", "conf"),
(".x11vncrc", "conf"),
(".chktexrc", "conf"),
(".ripgreprc", "conf"),
("ripgreprc", "conf"),
("configure.in", "config"),
("configure.ac", "config"),
("crontab", "crontab"),
(".cvsrc", "cvsrc"),
("/debian/changelog", "debchangelog"),
("changelog.dch", "debchangelog"),
("changelog.Debian", "debchangelog"),
("NEWS.dch", "debchangelog"),
("NEWS.Debian", "debchangelog"),
("/debian/control", "debcontrol"),
("/DEBIAN/control", "debcontrol"),
("/debian/copyright", "debcopyright"),
("/etc/apt/sources.list", "debsources"),
("denyhosts.conf", "denyhosts"),
("dict.conf", "dictconf"),
(".dictrc", "dictconf"),
("/etc/DIR_COLORS", "dircolors"),
(".dir_colors", "dircolors"),
(".dircolors", "dircolors"),
("/etc/dnsmasq.conf", "dnsmasq"),
("Containerfile", "dockerfile"),
("dockerfile", "dockerfile"),
("Dockerfile", "dockerfile"),
("npmrc", "dosini"),
("/etc/yum.conf", "dosini"),
(".npmrc", "dosini"),
("pip.conf", "dosini"),
("setup.cfg", "dosini"),
("pudb.cfg", "dosini"),
(".coveragerc", "dosini"),
(".pypirc", "dosini"),
(".pylintrc", "dosini"),
("pylintrc", "dosini"),
(".replyrc", "dosini"),
(".gitlint", "dosini"),
(".oelint.cfg", "dosini"),
("psprint.conf", "dosini"),
("sofficerc", "dosini"),
("mimeapps.list", "dosini"),
(".wakatime.cfg", "dosini"),
("nfs.conf", "dosini"),
("nfsmount.conf", "dosini"),
(".notmuch-config", "dosini"),
(".alsoftrc", "dosini"),
("alsoft.conf", "dosini"),
("alsoft.ini", "dosini"),
("alsoftrc.sample", "dosini"),
("pacman.conf", "confini"),
("paru.conf", "confini"),
("mpv.conf", "confini"),
("dune", "dune"),
("jbuild", "dune"),
("dune-workspace", "dune"),
("dune-project", "dune"),
("dune-file", "dune"),
("Earthfile", "earthfile"),
(".editorconfig", "editorconfig"),
("elinks.conf", "elinks"),
("mix.lock", "elixir"),
("filter-rules", "elmfilt"),
("exim.conf", "exim"),
("exports", "exports"),
("fennelrc", "fennel"),
(".fennelrc", "fennel"),
(".fetchmailrc", "fetchmail"),
("fvSchemes", "foam"),
("fvSolution", "foam"),
("fvConstraints", "foam"),
("fvModels", "foam"),
("fstab", "fstab"),
("mtab", "fstab"),
(".gdbinit", "gdb"),
("gdbinit", "gdb"),
(".gdbearlyinit", "gdb"),
("gdbearlyinit", "gdb"),
("lltxxxxx.txt", "gedcom"),
("TAG_EDITMSG", "gitcommit"),
("MERGE_MSG", "gitcommit"),
("COMMIT_EDITMSG", "gitcommit"),
("NOTES_EDITMSG", "gitcommit"),
("EDIT_DESCRIPTION", "gitcommit"),
(".gitconfig", "gitconfig"),
(".gitmodules", "gitconfig"),
(".gitattributes", "gitattributes"),
(".gitignore", "gitignore"),
(".ignore", "gitignore"),
(".containerignore", "gitignore"),
(".dockerignore", "gitignore"),
(".fdignore", "gitignore"),
(".npmignore", "gitignore"),
(".rgignore", "gitignore"),
(".vscodeignore", "gitignore"),
("gitolite.conf", "gitolite"),
("git-rebase-todo", "gitrebase"),
("gkrellmrc", "gkrellmrc"),
(".gnashrc", "gnash"),
(".gnashpluginrc", "gnash"),
("gnashpluginrc", "gnash"),
("gnashrc", "gnash"),
(".gnuplot_history", "gnuplot"),
("goaccess.conf", "goaccess"),
("go.sum", "gosum"),
("go.work.sum", "gosum"),
("go.work", "gowork"),
(".gprc", "gp"),
("/.gnupg/gpg.conf", "gpg"),
("/.gnupg/options", "gpg"),
("Jenkinsfile", "groovy"),
("/var/backups/gshadow.bak", "group"),
("/etc/gshadow", "group"),
("/etc/group-", "group"),
("/etc/gshadow.edit", "group"),
("/etc/gshadow-", "group"),
("/etc/group", "group"),
("/var/backups/group.bak", "group"),
("/etc/group.edit", "group"),
("/boot/grub/menu.lst", "grub"),
("/etc/grub.conf", "grub"),
("/boot/grub/grub.conf", "grub"),
(".gtkrc", "gtkrc"),
("gtkrc", "gtkrc"),
("snort.conf", "hog"),
("vision.conf", "hog"),
("/etc/host.conf", "hostconf"),
("/etc/hosts.allow", "hostsaccess"),
("/etc/hosts.deny", "hostsaccess"),
(".hy-history", "hy"),
("hyprland.conf", "hyprlang"),
("hyprpaper.conf", "hyprlang"),
("hypridle.conf", "hyprlang"),
("hyprlock.conf", "hyprlang"),
("/.icewm/menu", "icemenu"),
(".indent.pro", "indent"),
("indentrc", "indent"),
("inittab", "inittab"),
("ipf.conf", "ipfilter"),
("ipf6.conf", "ipfilter"),
("ipf.rules", "ipfilter"),
(".bun_repl_history", "javascript"),
(".node_repl_history", "javascript"),
("deno_history.txt", "javascript"),
("Pipfile.lock", "json"),
(".firebaserc", "json"),
(".prettierrc", "json"),
(".stylelintrc", "json"),
(".lintstagedrc", "json"),
("deno.lock", "json"),
("flake.lock", "json"),
(".swcrc", "json"),
(".babelrc", "jsonc"),
(".eslintrc", "jsonc"),
(".hintrc", "jsonc"),
(".jscsrc", "jsonc"),
(".jsfmtrc", "jsonc"),
(".jshintrc", "jsonc"),
(".luaurc", "jsonc"),
(".swrc", "jsonc"),
(".vsconfig", "jsonc"),
("bun.lock", "jsonc"),
(".justfile", "just"),
(".Justfile", "just"),
(".JUSTFILE", "just"),
("justfile", "just"),
("Justfile", "just"),
("JUSTFILE", "just"),
("Kconfig", "kconfig"),
("Kconfig.debug", "kconfig"),
("Config.in", "kconfig"),
("ldaprc", "ldapconf"),
(".ldaprc", "ldapconf"),
("ldap.conf", "ldapconf"),
("lfrc", "lf"),
("lftp.conf", "lftp"),
(".lftprc", "lftp"),
("/.libao", "libao"),
("/etc/libao.conf", "libao"),
("lilo.conf", "lilo"),
("/etc/limits", "limits"),
(".emacs", "lisp"),
("sbclrc", "lisp"),
(".sbclrc", "lisp"),
(".sawfishrc", "lisp"),
("/etc/login.access", "loginaccess"),
("/etc/login.defs", "logindefs"),
(".lsl", "lsl"),
(".busted", "lua"),
(".luacheckrc", "lua"),
(".lua_history", "lua"),
("config.ld", "lua"),
("rock_manifest", "lua"),
("lynx.cfg", "lynx"),
("m3overrides", "m3build"),
("m3makefile", "m3build"),
("cm3.cfg", "m3quake"),
(".m4_history", "m4"),
(".followup", "mail"),
(".article", "mail"),
(".letter", "mail"),
("/etc/aliases", "mailaliases"),
("/etc/mail/aliases", "mailaliases"),
("mailcap", "mailcap"),
(".mailcap", "mailcap"),
("Kbuild", "make"),
("/etc/man.conf", "manconf"),
("man.config", "manconf"),
("maxima-init.mac", "maxima"),
("isyncrc", "mbsync"),
("meson.build", "meson"),
("meson.options", "meson"),
("meson_options.txt", "meson"),
("/etc/conf.modules", "modconf"),
("/etc/modules", "modconf"),
("/etc/modules.conf", "modconf"),
("/.mplayer/config", "mplayerconf"),
("mplayer.conf", "mplayerconf"),
("mrxvtrc", "mrxvtrc"),
(".mrxvtrc", "mrxvtrc"),
(".msmtprc", "msmtp"),
("Muttngrc", "muttrc"),
("Muttrc", "muttrc"),
(".mysql_history", "mysql"),
("/etc/nanorc", "nanorc"),
("Neomuttrc", "neomuttrc"),
(".netrc", "netrc"),
("NEWS", "debchangelog"),
(".ocamlinit", "ocaml"),
(".octaverc", "octave"),
("octaverc", "octave"),
("octave.conf", "octave"),
(".ondirrc", "ondir"),
("opam", "opam"),
("opam.locked", "opam"),
("/etc/pam.conf", "pamconf"),
("pam_env.conf", "pamenv"),
(".pam_environment", "pamenv"),
("/var/backups/passwd.bak", "passwd"),
("/var/backups/shadow.bak", "passwd"),
("/etc/passwd", "passwd"),
("/etc/passwd-", "passwd"),
("/etc/shadow.edit", "passwd"),
("/etc/shadow-", "passwd"),
("/etc/shadow", "passwd"),
("/etc/passwd.edit", "passwd"),
(".gitolite.rc", "perl"),
("gitolite.rc", "perl"),
("example.gitolite.rc", "perl"),
("latexmkrc", "perl"),
(".latexmkrc", "perl"),
("pf.conf", "pf"),
("main.cf", "pfmain"),
("main.cf.proto", "pfmain"),
("pinerc", "pine"),
(".pinercex", "pine"),
(".pinerc", "pine"),
("pinercex", "pine"),
("/etc/pinforc", "pinfo"),
("/.pinforc", "pinfo"),
(".povrayrc", "povini"),
("printcap", "ptcap"),
("termcap", "ptcap"),
(".procmailrc", "procmail"),
(".procmail", "procmail"),
("indent.pro", "cpp"),
("/etc/protocols", "protocols"),
("INDEX", "psf"),
("INFO", "psf"),
("MANIFEST.in", "pymanifest"),
(".pythonstartup", "python"),
(".pythonrc", "python"),
(".python_history", "python"),
(".jline-jython.history", "python"),
("SConstruct", "python"),
("qmldir", "qmldir"),
(".Rhistory", "r"),
(".Rprofile", "r"),
("Rprofile", "r"),
("Rprofile.site", "r"),
("ratpoisonrc", "ratpoison"),
(".ratpoisonrc", "ratpoison"),
("inputrc", "readline"),
(".inputrc", "readline"),
(".reminders", "remind"),
("requirements.txt", "requirements"),
("constraints.txt", "requirements"),
("requirements.in", "requirements"),
("resolv.conf", "resolv"),
("robots.txt", "robots"),
("Gemfile", "ruby"),
("Puppetfile", "ruby"),
(".irbrc", "ruby"),
("irbrc", "ruby"),
(".irb_history", "ruby"),
("irb_history", "ruby"),
("rakefile", "ruby"),
("Rakefile", "ruby"),
("rantfile", "ruby"),
("Rantfile", "ruby"),
("Vagrantfile", "ruby"),
("smb.conf", "samba"),
(".lips_repl_history", "scheme"),
(".guile", "scheme"),
("screenrc", "screen"),
(".screenrc", "screen"),
("/etc/sensors3.conf", "sensors"),
("/etc/sensors.conf", "sensors"),
("/etc/services", "services"),
("/etc/serial.conf", "setserial"),
("/etc/udev/cdsymlinks.conf", "sh"),
(".ash_history", "sh"),
(".devscripts", "sh"),
("devscripts.conf", "sh"),
("makepkg.conf", "sh"),
(".makepkg.conf", "sh"),
("user-dirs.dirs", "sh"),
("user-dirs.defaults", "sh"),
(".xprofile", "sh"),
("bash.bashrc", "bash"),
("bashrc", "bash"),
(".bashrc", "bash"),
(".kshrc", "ksh"),
(".profile", "bash"),
("/etc/profile", "bash"),
("PKGBUILD", "bash"),
(".tcshrc", "tcsh"),
("tcsh.login", "tcsh"),
("tcsh.tcshrc", "tcsh"),
("/etc/slp.conf", "slpconf"),
("/etc/slp.reg", "slpreg"),
("/etc/slp.spi", "slpspi"),
(".slrnrc", "slrnrc"),
("sendmail.cf", "sm"),
("Snakefile", "snakemake"),
(".sqlite_history", "sql"),
("squid.conf", "squid"),
("ssh_config", "sshconfig"),
("sshd_config", "sshdconfig"),
("/etc/sudoers", "sudoers"),
("sudoers.tmp", "sudoers"),
("/etc/sysctl.conf", "sysctl"),
("tags", "tags"),
("pending.data", "taskdata"),
("completed.data", "taskdata"),
("undo.data", "taskdata"),
(".tclshrc", "tcl"),
(".wishrc", "tcl"),
(".tclsh-history", "tcl"),
("tclsh.rc", "tcl"),
(".xsctcmdhistory", "tcl"),
(".xsdbcmdhistory", "tcl"),
("texmf.cnf", "texmf"),
("COPYING", "text"),
("README", "text"),
("LICENSE", "text"),
("AUTHORS", "text"),
("tfrc", "tf"),
(".tfrc", "tf"),
("tidy.conf", "tidy"),
("tidyrc", "tidy"),
(".tidyrc", "tidy"),
(".tmux.conf", "tmux"),
("Cargo.lock", "toml"),
("/.cargo/config", "toml"),
("/.cargo/credentials", "toml"),
("Pipfile", "toml"),
("Gopkg.lock", "toml"),
("uv.lock", "toml"),
(".black", "toml"),
("black", ""),
("trustees.conf", "trustees"),
(".ts_node_repl_history", "typescript"),
("/etc/udev/udev.conf", "udevconf"),
("/etc/updatedb.conf", "updatedb"),
("fdrupstream.log", "upstreamlog"),
("vgrindefs", "vgrindefs"),
(".exrc", "vim"),
("_exrc", "vim"),
(".netrwhist", "vim"),
("_viminfo", "viminfo"),
(".viminfo", "viminfo"),
(".wgetrc", "wget"),
(".wget2rc", "wget2"),
("wgetrc", "wget"),
("wget2rc", "wget2"),
(".wvdialrc", "wvdial"),
("wvdial.conf", "wvdial"),
(".XCompose", "xcompose"),
("Compose", "xcompose"),
(".Xresources", "xdefaults"),
(".Xpdefaults", "xdefaults"),
("xdm-config", "xdefaults"),
(".Xdefaults", "xdefaults"),
("xorg.conf", "xf86conf"),
("xorg.conf-4", "xf86conf"),
("XF86Config", "xf86conf"),
("/etc/xinetd.conf", "xinetd"),
("fglrxrc", "xml"),
("/etc/blkid.tab", "xml"),
("/etc/blkid.tab.old", "xml"),
("fonts.conf", "xml"),
("Directory.Packages.props", "xml"),
("Directory.Build.props", "xml"),
("Directory.Build.targets", "xml"),
(".clangd", "yaml"),
(".clang-format", "yaml"),
(".clang-tidy", "yaml"),
("pixi.lock", "yaml"),
("yarn.lock", "yaml"),
("matplotlibrc", "yaml"),
(".condarc", "yaml"),
("condarc", "yaml"),
("zathurarc", "zathurarc"),
("/etc/zprofile", "zsh"),
(".zlogin", "zsh"),
(".zlogout", "zsh"),
(".zshrc", "zsh"),
(".zprofile", "zsh"),
(".zcompdump", "zsh"),
(".zsh_history", "zsh"),
(".zshenv", "zsh"),
(".zfbfmarks", "zsh"),
])
});
static PATTERNS: LazyLock<(RegexSet, Vec<&str>)> = LazyLock::new(|| {
let home = var("HOME");
let xdg_config_home = var("XDG_CONFIG_HOME");
let gnupghome = var("GNUPGHOME");
let maps = [
("/debian/changelog$", "debchangelog"),
("/debian/control$", "debcontrol"),
("/debian/copyright$", "debcopyright"),
("/debian/patches/", "dep3patch"),
(r"/etc/a2ps\.cfg$", "a2ps"),
(r"/etc/a2ps/.*\.cfg$", "a2ps"),
("/etc/aliases$", "mailaliases"),
(r"/etc/apache2/conf\..*/", "apache"),
(r"/etc/apache2/.*\.conf", "apache"),
(r"/etc/apache2/mods\..*/", "apache"),
(r"/etc/apache2/sites\..*/.*\.com$", "apache"),
(r"/etc/apache2/sites\..*/", "apache"),
(r"/etc/apt/sources\.list$", "debsources"),
(r"/etc/apt/sources\.list\.d/.*\.list$", "debsources"),
(r"/etc/apt/sources\.list\.d/.*\.sources$", "deb822sources"),
(r"/etc/asound\.conf$", "alsaconf"),
(r"/etc/blkid\.tab$", "xml"),
(r"/etc/blkid\.tab\.old$", "xml"),
(r"/etc/cdrdao\.conf$", "cdrdaoconf"),
("/etc/config/", "uci"),
(r"/etc/conf\.modules$", "modconf"),
(r"/etc/cron\.d/", "crontab"),
("/etc/default/cdrdao$", "cdrdaoconf"),
("/etc/defaults/cdrdao$", "cdrdaoconf"),
("/etc/DIR_COLORS$", "dircolors"),
(r"/etc/dnsmasq\.conf$", "dnsmasq"),
(r"/etc/dnsmasq\.d/", "dnsmasq"),
("/etc/gitattributes$", "gitattributes"),
("/etc/gitconfig$", "gitconfig"),
(r"/etc/gitconfig\.d/", "gitconfig"),
(r"/etc/group\.$", "group"),
("/etc/group$", "group"),
(r"/etc/group\.edit$", "group"),
(r"/etc/grub\.conf$", "grub"),
(r"/etc/gshadow\.$", "group"),
("/etc/gshadow$", "group"),
(r"/etc/gshadow\.edit$", "group"),
(r"/etc/host\.conf$", "hostconf"),
(r"/etc/hostname\.", "config"),
(r"/etc/hosts\.allow$", "hostsaccess"),
(r"/etc/hosts\.deny$", "hostsaccess"),
(r"/etc/httpd/.*\.conf$", "apache"),
(r"/etc/httpd/conf\.d/.*\.conf", "apache"),
(r"/etc/httpd/conf\..*/", "apache"),
(r"/etc/httpd/mods\..*/", "apache"),
(r"/etc/httpd/sites\..*/", "apache"),
(r"/etc/init/.*\.conf$", "upstart"),
(r"/etc/initng/.*/.*\.i$", "initng"),
(r"/etc/init/.*\.override$", "upstart"),
(r"/etc/libao\.conf$", "libao"),
("/etc/limits$", "limits"),
(r"/etc/.*limits\.conf$", "limits"),
(r"/etc/.*limits\.d/.*\.conf$", "limits"),
(r"/etc/logcheck/.*\.d.*/", "logcheck"),
(r"/etc/login\.access$", "loginaccess"),
(r"/etc/login\.defs$", "logindefs"),
("/etc/mail/aliases$", "mailaliases"),
(r"/etc/man\.conf$", "manconf"),
(r"/etc/modprobe\.", "modconf"),
("/etc/modules$", "modconf"),
(r"/etc/modules\.conf$", "modconf"),
("/etc/modutils/", "modconf"),
(r"/etc/Muttrc\.d/", "muttrc"),
("/etc/nanorc$", "nanorc"),
("/etc/nginx/", "nginx"),
(r"/etc/pam\.conf$", "pamconf"),
(r"/etc/pam\.d/", "pamconf"),
(r"/etc/passwd\.$", "passwd"),
("/etc/passwd$", "passwd"),
(r"/etc/passwd\.edit$", "passwd"),
("/etc/pinforc$", "pinfo"),
("/etc/profile$", "bash"),
(r"/etc/proftpd/.*\.conf", "apachestyle"),
(r"/etc/proftpd/conf\..*/", "apachestyle"),
("/etc/protocols$", "protocols"),
(r"/etc/sensors3\.conf$", "sensors"),
(r"/etc/sensors\.conf$", "sensors"),
(r"/etc/sensors\.d/[^.]", "sensors"),
(r"/etc/serial\.conf$", "setserial"),
("/etc/services$", "services"),
(r"/etc/shadow\.$", "passwd"),
("/etc/shadow$", "passwd"),
(r"/etc/shadow\.edit$", "passwd"),
(r"/etc/slp\.conf$", "slpconf"),
(r"/etc/slp\.reg$", "slpreg"),
(r"/etc/slp\.spi$", "slpspi"),
(r"/etc/ssh/ssh_config\.d/.*\.conf$", "sshconfig"),
(r"/etc/ssh/sshd_config\.d/.*\.conf$", "sshdconfig"),
("/etc/sudoers$", "sudoers"),
(r"/etc/sudoers\.d/", "sudoers"),
(r"/etc/sysctl\.conf$", "sysctl"),
(r"/etc/sysctl\.d/.*\.conf$", "sysctl"),
(r"/etc/systemd/.*\.conf\.d/.*\.conf$", "systemd"),
(r"/etc/systemd/system/.*\.d/.*\.conf$", "systemd"),
(r"/etc/systemd/system/.*\.d/\.#", "systemd"),
(r"/etc/systemd/system/\.#", "systemd"),
(r"/etc/translate\.shell$", "clojure"),
(r"/etc/udev/cdsymlinks\.conf$", "sh"),
(r"/etc/udev/permissions\.d/.*\.permissions$", "udevperm"),
(r"/etc/udev/udev\.conf$", "udevconf"),
(r"/etc/updatedb\.conf$", "updatedb"),
(r"/etc/xdg/menus/.*\.menu$", "xml"),
(r"/etc/xinetd\.conf$", "xinetd"),
(r"/etc/xinetd\.d/", "xinetd"),
(r"/etc/yum\.conf$", "dosini"),
(r"/etc/yum\.repos\.d/", "dosini"),
("/etc/zprofile$", "zsh"),
(r"/log/auth\.crit$", "messages"),
(r"/log/auth\.err$", "messages"),
(r"/log/auth\.info$", "messages"),
(r"/log/auth\.log$", "messages"),
(r"/log/auth\.notice$", "messages"),
(r"/log/auth\.warn$", "messages"),
("/log/auth$", "messages"),
(r"/log/cron\.crit$", "messages"),
(r"/log/cron\.err$", "messages"),
(r"/log/cron\.info$", "messages"),
(r"/log/cron\.log$", "messages"),
(r"/log/cron\.notice$", "messages"),
(r"/log/cron\.warn$", "messages"),
("/log/cron$", "messages"),
(r"/log/daemon\.crit$", "messages"),
(r"/log/daemon\.err$", "messages"),
(r"/log/daemon\.info$", "messages"),
(r"/log/daemon\.log$", "messages"),
(r"/log/daemon\.notice$", "messages"),
(r"/log/daemon\.warn$", "messages"),
("/log/daemon$", "messages"),
(r"/log/debug\.crit$", "messages"),
(r"/log/debug\.err$", "messages"),
(r"/log/debug\.info$", "messages"),
(r"/log/debug\.log$", "messages"),
(r"/log/debug\.notice$", "messages"),
(r"/log/debug\.warn$", "messages"),
("/log/debug$", "messages"),
(r"/log/kern\.crit$", "messages"),
(r"/log/kern\.err$", "messages"),
(r"/log/kern\.info$", "messages"),
(r"/log/kern\.log$", "messages"),
(r"/log/kern\.notice$", "messages"),
(r"/log/kern\.warn$", "messages"),
("/log/kern$", "messages"),
(r"/log/lpr\.crit$", "messages"),
(r"/log/lpr\.err$", "messages"),
(r"/log/lpr\.info$", "messages"),
(r"/log/lpr\.log$", "messages"),
(r"/log/lpr\.notice$", "messages"),
(r"/log/lpr\.warn$", "messages"),
("/log/lpr$", "messages"),
(r"/log/mail\.crit$", "messages"),
(r"/log/mail\.err$", "messages"),
(r"/log/mail\.info$", "messages"),
(r"/log/mail\.log$", "messages"),
(r"/log/mail\.notice$", "messages"),
(r"/log/mail\.warn$", "messages"),
("/log/mail$", "messages"),
(r"/log/messages\.crit$", "messages"),
(r"/log/messages\.err$", "messages"),
(r"/log/messages\.info$", "messages"),
(r"/log/messages\.log$", "messages"),
(r"/log/messages\.notice$", "messages"),
(r"/log/messages\.warn$", "messages"),
("/log/messages$", "messages"),
(r"/log/news/news\.crit$", "messages"),
(r"/log/news/news\.err$", "messages"),
(r"/log/news/news\.info$", "messages"),
(r"/log/news/news\.log$", "messages"),
(r"/log/news/news\.notice$", "messages"),
(r"/log/news/news\.warn$", "messages"),
("/log/news/news$", "messages"),
(r"/log/syslog\.crit$", "messages"),
(r"/log/syslog\.err$", "messages"),
(r"/log/syslog\.info$", "messages"),
(r"/log/syslog\.log$", "messages"),
(r"/log/syslog\.notice$", "messages"),
(r"/log/syslog\.warn$", "messages"),
("/log/syslog$", "messages"),
(r"/log/user\.crit$", "messages"),
(r"/log/user\.err$", "messages"),
(r"/log/user\.info$", "messages"),
(r"/log/user\.log$", "messages"),
(r"/log/user\.notice$", "messages"),
(r"/log/user\.warn$", "messages"),
("/log/user$", "messages"),
(r"/\.config/systemd/user/\.#", "systemd"),
(r"/\.config/systemd/user/.*\.d/\.#", "systemd"),
(r"/\.config/systemd/user/.*\.d/.*\.conf$", "systemd"),
(r"/systemd/.*\.automount$", "systemd"),
(r"/systemd/.*\.dnssd$", "systemd"),
(r"/systemd/.*\.link$", "systemd"),
(r"/systemd/.*\.mount$", "systemd"),
(r"/systemd/.*\.netdev$", "systemd"),
(r"/systemd/.*\.network$", "systemd"),
(r"/systemd/.*\.nspawn$", "systemd"),
(r"/systemd/.*\.path$", "systemd"),
(r"/systemd/.*\.service$", "systemd"),
(r"/systemd/.*\.slice$", "systemd"),
(r"/systemd/.*\.socket$", "systemd"),
(r"/systemd/.*\.swap$", "systemd"),
(r"/systemd/.*\.target$", "systemd"),
(r"/systemd/.*\.timer$", "systemd"),
(r"/usr/share/alsa/alsa\.conf$", "alsaconf"),
(r"/usr/.*/gnupg/options\.skel$", "gpg"),
(r"/usr/share/upstart/.*\.conf$", "upstart"),
(r"/usr/share/upstart/.*\.override$", "upstart"),
(r"/var/backups/group\.bak$", "group"),
(r"/var/backups/gshadow\.bak$", "group"),
(r"/var/backups/passwd\.bak$", "passwd"),
(r"/var/backups/shadow\.bak$", "passwd"),
(r"/\.aptitude/config$", "aptconf"),
(r"/build/conf/.*\.conf$", "bitbake"),
(r"/meta\..*/conf/.*\.conf$", "bitbake"),
(r"/meta/conf/.*\.conf$", "bitbake"),
(r"/project\.spec/configs/.*\.conf$", "bitbake"),
(r"/\.cabal/config$", "cabalconfig"),
("/cabal/config$", "cabalconfig"),
(r"/\.aws/config$", "confini"),
("/bpython/config$", "dosini"),
("/flatpak/repo/config$", "dosini"),
("/mypy/config$", "dosini"),
(fmt!(r"^{home}/\.config/notmuch/.*/config$"), "dosini"),
(fmt!("^{xdg_config_home}/notmuch/.*/config$"), "dosini"),
(fmt!("^{xdg_config_home}/git/config$"), "gitconfig"),
(r"\.git/config\.worktree$", "gitconfig"),
(r"\.git/config$", "gitconfig"),
(r"\.git/modules/.*/config$", "gitconfig"),
(r"\.git/modules/config$", "gitconfig"),
(r"\.git/worktrees/.*/config\.worktree$", "gitconfig"),
(r"/\.config/git/config$", "gitconfig"),
(r"/gitolite\.admin/conf/", "gitolite"),
(r"/\.i3/config$", "i3config"),
("/i3/config$", "i3config"),
(r"/\.mplayer/config$", "mplayerconf"),
("/supertux2/config$", "scheme"),
(r"/neofetch/config\.conf$", "sh"),
(r"/\.ssh/config$", "sshconfig"),
(r"/\.sway/config$", "swayconfig"),
("/sway/config$", "swayconfig"),
(r"/\.cargo/config$", "toml"),
(r"/\.bundle/config$", "yaml"),
(r"/\.kube/config$", "yaml"),
(r"/\.aws/credentials$", "confini"),
(r"/\.gitconfig\.d/", "gitconfig"),
(r"/\.gnupg/gpg\.conf$", "gpg"),
(r"/\.gnupg/options$", "gpg"),
(r"/\.icewm/menu$", "icemenu"),
(r"/\.libao$", "libao"),
(r"/\.pinforc$", "pinfo"),
(r"/\.cargo/credentials$", "toml"),
(r"/\.init/.*\.override$", "upstart"),
(r"/\.calendar/", "calendar"),
(r"/share/calendar/.*/calendar\.", "calendar"),
(r"/share/calendar/calendar\.", "calendar"),
(r"/\.?cmus/.*\.theme$", "cmusrc"),
(r"/\.?cmus/rc$", "cmusrc"),
(r"/\.cmus/autosave$", "cmusrc"),
(r"/\.cmus/command\.history$", "cmusrc"),
(r"\.git/", "git"),
(fmt!("^{xdg_config_home}/git/attributes$"), "gitattributes"),
(r"\.git/info/attributes$", "gitattributes"),
(r"/\.config/git/attributes$", "gitattributes"),
(fmt!("^{xdg_config_home}/git/ignore$"), "gitignore"),
(r"\.git/info/exclude$", "gitignore"),
(r"/\.config/git/ignore$", "gitignore"),
(r"enlightenment/.*\.cfg$", "c"),
(r"Eterm/.*\.cfg$", "eterm"),
(r"baseq[2-3/.*\.cfg$]", "quake"),
(r"id1/.*\.cfg$", "quake"),
(r"quake[1-3/.*\.cfg$]", "quake"),
(r"/tex/latex/.*\.cfg$", "tex"),
(r"^proftpd\.conf", "apachestyle"),
(r"^access\.conf", "apache"),
(r"^apache\.conf", "apache"),
(r"^apache2\.conf", "apache"),
(r"^httpd\.conf", "apache"),
(r"^httpd\..*\.conf", "apache"),
(r"^proxy\.html\.conf", "apache"),
(r"^srm\.conf", "apache"),
(r"asterisk/.*\.conf", "asterisk"),
(r"asterisk.*/.*voicemail\.conf", "asteriskvm"),
(r"^dictd.*\.conf$", "dictdconf"),
(r"/\.?gnuradio/.*\.conf$", "confini"),
(r"/gnuradio/conf\.d/.*\.conf$", "confini"),
(r"/lxqt/.*\.conf$", "dosini"),
(r"/screengrab/.*\.conf$", "dosini"),
(r"/\.config/fd/ignore$", "gitignore"),
(fmt!(r"^{gnupghome}/gpg\.conf$"), "gpg"),
(r"/boot/grub/grub\.conf$", "grub"),
(r"/hypr/.*\.conf$", "hyprlang"),
(r"^lilo\.conf", "lilo"),
(r"^named.*\.conf$", "named"),
(r"^rndc.*\.conf$", "named"),
(r"/openvpn/.*/.*\.conf$", "openvpn"),
(r"/pipewire/.*\.conf$", "spajson"),
(r"/wireplumber/.*\.conf$", "spajson"),
(r"/\.ssh/.*\.conf$", "sshconfig"),
(r"^\.?tmux.*\.conf$", "tmux"),
(r"^\.?tmux.*\.conf", "tmux"),
(r"/containers/containers\.conf$", "toml"),
(r"/containers/containers\.conf\.d/.*\.conf$", "toml"),
(r"/containers/containers\.conf\.modules/.*\.conf$", "toml"),
(r"/containers/registries\.conf$", "toml"),
(r"/containers/registries\.conf\.d/.*\.conf$", "toml"),
(r"/containers/storage\.conf$", "toml"),
(r"/\.config/upstart/.*\.conf$", "upstart"),
(r"/\.config/upstart/.*\.override$", "upstart"),
(r"/\.init/.*\.conf$", "upstart"),
(r"/xorg\.conf\.d/.*\.conf$", "xf86conf"),
(r"\.\.sst\.meta$", "sisu"),
(r"\._sst\.meta$", "sisu"),
(r"\.sst\.meta$", "sisu"),
(r"^Containerfile\.", "dockerfile"),
(r"^Dockerfile\.", "dockerfile"),
("[mM]akefile$", "make"),
("^[mM]akefile", "make"),
("^[rR]akefile", "ruby"),
(r"^\.profile", "bash"),
(r"/\.fvwm/", "fvwm"),
("fvwmrc", "fvwm"),
(r"fvwm95.*\.hook$", "fvwm"),
("fvwm2rc", "fvwm"),
(r"/nginx/.*\.conf$", "nginx"),
("/usr/local/nginx/conf/", "nginx"),
(r"nginx\.conf$", "nginx"),
(r"^nginx.*\.conf$", "nginx"),
(r"\.requirements\.txt$", "requirements"),
(r"^requirements/.*\.txt$", "requirements"),
(r"^requires/.*\.txt$", "requirements"),
("s6.*/down$", "execline"),
("s6.*/finish$", "execline"),
("s6.*/run$", "execline"),
("s6.*/up$", "execline"),
(r"^s6\.", "execline"),
(r"^mutt\..*\.\.+$", "mail"),
(r"^mutt[\._-]{6}$", "mail"),
(r"^muttng\..*\.\.+$", "mail"),
(r"^neomutt\..*\.\.+$", "mail"),
(r"^neomutt[\._-]$", "mail"),
(r"^\.?muttngrc", "muttrc"),
(r"^\.?muttrc", "muttrc"),
(r"/\.mutt/muttrc", "muttrc"),
(r"/\.muttng/muttngrc", "muttrc"),
(r"/\.muttng/muttrc", "muttrc"),
("^Muttngrc", "muttrc"),
("^Muttrc", "muttrc"),
(r"^\.?neomuttrc", "neomuttrc"),
(r"/\.neomutt/neomuttrc", "neomuttrc"),
("^Neomuttrc", "neomuttrc"),
(r"\.neomuttdebug", "neomuttlog"),
(r"/\.?xkb/compat/", "xkb"),
(r"/\.?xkb/geometry/", "xkb"),
(r"/\.?xkb/keycodes/", "xkb"),
(r"/\.?xkb/symbols/", "xkb"),
(r"/\.?xkb/types/", "xkb"),
(r"/m17n/.*\.ali$", "m17ndb"),
(r"/m17n/.*\.cs$", "m17ndb"),
(r"/m17n/.*\.dir$", "m17ndb"),
(r"/m17n/.*\.flt$", "m17ndb"),
(r"/m17n/.*\.fst$", "m17ndb"),
(r"/m17n/.*\.lnm$", "m17ndb"),
(r"/m17n/.*\.mic$", "m17ndb"),
(r"/m17n/.*\.mim$", "m17ndb"),
(r"/m17n/.*\.tbl$", "m17ndb"),
(r"/\.m17n\.d/.*\.ali$", "m17ndb"),
(r"/\.m17n\.d/.*\.cs$", "m17ndb"),
(r"/\.m17n\.d/.*\.dir$", "m17ndb"),
(r"/\.m17n\.d/.*\.flt$", "m17ndb"),
(r"/\.m17n\.d/.*\.fst$", "m17ndb"),
(r"/\.m17n\.d/.*\.lnm$", "m17ndb"),
(r"/\.m17n\.d/.*\.mic$", "m17ndb"),
(r"/\.m17n\.d/.*\.mim$", "m17ndb"),
(r"/\.m17n\.d/.*\.tbl$", "m17ndb"),
(r"/m17n\.db/.*\.ali$", "m17ndb"),
(r"/m17n\.db/.*\.cs$", "m17ndb"),
(r"/m17n\.db/.*\.dir$", "m17ndb"),
(r"/m17n\.db/.*\.flt$", "m17ndb"),
(r"/m17n\.db/.*\.fst$", "m17ndb"),
(r"/m17n\.db/.*\.lnm$", "m17ndb"),
(r"/m17n\.db/.*\.mic$", "m17ndb"),
(r"/m17n\.db/.*\.mim$", "m17ndb"),
(r"/m17n\.db/.*\.tbl$", "m17ndb"),
(r"^\.cshrc", "csh"),
(r"^\.login", "csh"),
(r"^\.notmuch\.config\.", "dosini"),
(r"^\.gitsendemail\.msg\.......$", "gitsendemail"),
(r"^\.kshrc", "ksh"),
(r"^\.article\.\.+$", "mail"),
(r"^\.letter\.\.+$", "mail"),
(r"^\.reminders", "remind"),
(r"^\.tcshrc", "tcsh"),
(r"^\.zcompdump", "zsh"),
(r"\.csproj\.user$", "xml"),
(r"\.fsproj\.user$", "xml"),
(r"\.vbproj\.user$", "xml"),
(r"^bash\.fc[\-\.]", "bash"),
(r"/bind/db\.", "bindzone"),
(r"/named/db\.", "bindzone"),
(r"\.blade\.php$", "blade"),
(r"^bzr_log\.", "bzr"),
(r"^cabal\.project\.", "cabalproject"),
(r"^sgml\.catalog", "catalog"),
("hgrc$", "cfg"),
("^[cC]hange[lL]og", "changelog"),
(r"\.\.ch$", "chill"),
(r"\.cmake\.in$", "cmake"),
(r"^crontab\.", "crontab"),
(r"^cvs\.+$", "cvs"),
("/DEBIAN/control$", "debcontrol"),
(r"^php\.ini\.", "dosini"),
(r"^php\.fpm\.conf", "dosini"),
(r"^www\.conf", "dosini"),
(r"^drac\.", "dracula"),
(r"/dtrace/.*\.d$", "dtrace"),
("esmtprc$", "esmtprc"),
(r"/0\.orig/", "foam"),
("/0/", "foam"),
("/constant/g$", "foam"),
(r"Transport\.", "foam"),
(r"^[a-zA-Z0-9].*Dict\.", "foam"),
("^[a-zA-Z0-9].*Dict$", "foam"),
(r"^[a-zA-Z].*Properties\.", "foam"),
("^[a-zA-Z].*Properties$", "foam"),
("/tmp/lltmp", "gedcom"),
("^gkrellmrc_.$", "gkrellmrc"),
(fmt!("^{gnupghome}/options$"), "gpg"),
(r"/boot/grub/menu\.lst$", "grub"),
(r"^\.?gtkrc", "gtkrc"),
(r"^hg\.editor\..*\.txt$", "hgcommit"),
(r"\.html\.m4$", "htmlm4"),
(r"^JAM.*\.", "jam"),
(r"^Prl.*\.", "jam"),
(fmt!(r"^{home}/.*/Code/User/.*\.json$"), "jsonc"),
(fmt!(r"^{home}/.*/VSCodium/User/.*\.json$"), "jsonc"),
(r"\.properties_..$", "jproperties"),
(r"\.properties_.._..$", "jproperties"),
(r"\.properties_.._.._", "jproperties"),
(r"^org\.eclipse\..*\.prefs$", "jproperties"),
(r"^[jt]sconfig.*\.json$", "jsonc"),
(r"^Config\.in\.", "kconfig"),
(r"^Kconfig\.", "kconfig"),
("/ldscripts/", "ld"),
("lftp/rc$", "lftp"),
(r"/LiteStep/.*/.*\.rc$", "litestep"),
(r"^/tmp/SLRN[0-9A-Z\.]+$", "mail"),
(r"^ae\.+\.txt$", "mail"),
(r"^pico\.\.+$", "mail"),
(r"^reportbug\.", "mail"),
(r"^snd\.\.+$", "mail"),
(r"^rndc.*\.key$", "named"),
(r"^tmac\.", "nroff"),
(r"\.ml\.cppo$", "ocaml"),
(r"\.mli\.cppo$", "ocaml"),
("/octave/history$", "octave"),
(r"\.opam\.locked$", "opam"),
(r"\.opam\.template$", "opam"),
(r"^pacman\.log", "pacmanlog"),
(r"/queries/.*\.scm$", "query"),
(",v$", "rcs"),
(r"^svn\.commit.*\.tmp$", "svn"),
(r"\.swift\.gyb$", "swiftgyb"),
(r"\.t\.html$", "tilde"),
(r"\.vhdl_[0-9]", "vhdl"),
("vimrc", "vim"),
("/Xresources/", "xdefaults"),
(r"/app\.defaults/", "xdefaults"),
("^Xresources", "xdefaults"),
(r"^XF86Config\.4", "xf86conf"),
("^XF86Config", "xf86conf"),
("Xmodmap$", "xmodmap"),
("xmodmap", "xmodmap"),
(r"^\.?zlog", "zsh"),
(r"^\.?zsh", "zsh"),
];
(
RegexSet::new(maps.iter().map(|(pat, _)| *pat)).unwrap(),
Vec::from_iter(maps.iter().map(|(_, lang)| *lang)),
)
});
fn var(str: &str) -> String {
std::env::var(str).unwrap_or_default()
}