typedef enum {
    ADA,
    ASM,
    AWK,
    BATCH,
    BIBTEX,
    C, CPLUSPLUS = C,
    CLOJURE,
    CMAKE,
    COCCINELLE,
    COFFEESCRIPT,
    CONFIG,
    CSH,
    CSHARP,
    CSS,
    CSV,
    D,
    DART,
    DEVICETREE,
    DIFF,
    DOCKER,
    DOT,
    DTE,
    ELIXIR,
    ERLANG,
    FISH,
    GCODE,
    GETTEXT,
    GITCOMMIT,
    GITIGNORE,
    GITREBASE,
    GLSL,
    GNUPLOT,
    GO,
    GOMODULE,
    GPERF,
    GRADLE,
    GROOVY,
    HASKELL,
    HTML,
    INDENT,
    INI,
    JAVA,
    JAVASCRIPT,
    JSON,
    JULIA,
    KOTLIN,
    LEX,
    LISP,
    LUA,
    M4,
    MAIL,
    MAKE,
    MARKDOWN,
    MESON,
    MOONSCRIPT,
    NFTABLES,
    NGINX,
    NIM,
    NINJA,
    NIX,
    NONE,
    OBJC,
    OCAML,
    PASCAL,
    PERL,
    PHP,
    PKGCONFIG,
    POSTSCRIPT,
    POWERSHELL,
    PROTOBUF,
    PYTHON,
    RACKET,
    ROBOTSTXT,
    ROFF,
    RPMSPEC,
    RST,
    RUBY,
    RUST,
    SCALA,
    SCHEME,
    SCSS,
    SED,
    SH,
    SQL,
    SWIFT,
    TCL,
    TEX,
    TEXINFO,
    TEXMFCNF,
    TMUX,
    TOML,
    TSV,
    TYPESCRIPT,
    VALA,
    VCARD,
    VERILOG,
    VHDL,
    VIML,
    XML,
    XRESOURCES,
    YACC,
    YAML,
    ZIG,
    NR_BUILTIN_FILETYPES
} FileTypeEnum;

static const char builtin_filetype_names[NR_BUILTIN_FILETYPES][12] = {
    [ADA] = "ada",
    [ASM] = "asm",
    [AWK] = "awk",
    [BATCH] = "batch",
    [BIBTEX] = "bibtex",
    [C] = "c",
    [CLOJURE] = "clojure",
    [CMAKE] = "cmake",
    [COCCINELLE] = "coccinelle",
    [COFFEESCRIPT] = "coffee",
    [CONFIG] = "config",
    [CSH] = "csh",
    [CSHARP] = "csharp",
    [CSS] = "css",
    [CSV] = "csv",
    [D] = "d",
    [DART] = "dart",
    [DEVICETREE] = "devicetree",
    [DIFF] = "diff",
    [DOCKER] = "docker",
    [DOT] = "dot",
    [DTE] = "dte",
    [ELIXIR] = "elixir",
    [ERLANG] = "erlang",
    [FISH] = "fish",
    [GCODE] = "gcode",
    [GETTEXT] = "gettext",
    [GITCOMMIT] = "gitcommit",
    [GITIGNORE] = "gitignore",
    [GITREBASE] = "gitrebase",
    [GLSL] = "glsl",
    [GNUPLOT] = "gnuplot",
    [GO] = "go",
    [GOMODULE] = "gomod",
    [GPERF] = "gperf",
    [GRADLE] = "gradle",
    [GROOVY] = "groovy",
    [HASKELL] = "haskell",
    [HTML] = "html",
    [INDENT] = "indent",
    [INI] = "ini",
    [JAVA] = "java",
    [JAVASCRIPT] = "javascript",
    [JSON] = "json",
    [JULIA] = "julia",
    [KOTLIN] = "kotlin",
    [LEX] = "lex",
    [LISP] = "lisp",
    [LUA] = "lua",
    [M4] = "m4",
    [MAIL] = "mail",
    [MAKE] = "make",
    [MARKDOWN] = "markdown",
    [MESON] = "meson",
    [MOONSCRIPT] = "moonscript",
    [NFTABLES] = "nftables",
    [NGINX] = "nginx",
    [NIM] = "nim",
    [NINJA] = "ninja",
    [NIX] = "nix",
    [NONE] = "none",
    [OBJC] = "objc",
    [OCAML] = "ocaml",
    [PASCAL] = "pascal",
    [PERL] = "perl",
    [PHP] = "php",
    [PKGCONFIG] = "pkg-config",
    [POSTSCRIPT] = "postscript",
    [POWERSHELL] = "powershell",
    [PROTOBUF] = "protobuf",
    [PYTHON] = "python",
    [RACKET] = "racket",
    [ROBOTSTXT] = "robotstxt",
    [ROFF] = "roff",
    [RPMSPEC] = "rpmspec",
    [RST] = "rst",
    [RUBY] = "ruby",
    [RUST] = "rust",
    [SCALA] = "scala",
    [SCHEME] = "scheme",
    [SCSS] = "scss",
    [SED] = "sed",
    [SH] = "sh",
    [SQL] = "sql",
    [SWIFT] = "swift",
    [TCL] = "tcl",
    [TEXINFO] = "texinfo",
    [TEXMFCNF] = "texmfcnf",
    [TEX] = "tex",
    [TMUX] = "tmux",
    [TOML] = "toml",
    [TSV] = "tsv",
    [TYPESCRIPT] = "typescript",
    [VALA] = "vala",
    [VCARD] = "vcard",
    [VERILOG] = "verilog",
    [VHDL] = "vhdl",
    [VIML] = "viml",
    [XML] = "xml",
    [XRESOURCES] = "xresources",
    [YACC] = "yacc",
    [YAML] = "yaml",
    [ZIG] = "zig",
};
