runtime(filetype): Improve filetype loading time

Commit: 
https://github.com/vim/vim/commit/3221a0c2f96b81a9aff40590d541fa0f51090a57
Author: bennyyip <[email protected]>
Date:   Thu Oct 9 20:24:35 2025 +0000

    runtime(filetype): Improve filetype loading time
    
    closes: https://github.com/vim/vim/issues/18508
    
    Signed-off-by: bennyyip <[email protected]>
    Signed-off-by: Christian Brabandt <[email protected]>

diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim
index b0609727e..6131cf573 100644
--- a/runtime/autoload/dist/ft.vim
+++ b/runtime/autoload/dist/ft.vim
@@ -3,7 +3,7 @@ vim9script
 # Vim functions for file type detection
 #
 # Maintainer:          The Vim Project <https://github.com/vim/vim>
-# Last Change:         2025 Sep 08
+# Last Change:         2025 Oct 09
 # Former Maintainer:   Bram Moolenaar <[email protected]>
 
 # These functions are moved here from runtime/filetype.vim to make startup
@@ -1598,5 +1598,1710 @@ export def Detect_UCI_statements(): bool
   \         )
 enddef
 
+export def DetectFromName()
+  const amatch = expand("<amatch>")
+  const name = fnamemodify(amatch, ':t')
+  const ft = get(ft_from_name, name, '')
+  if ft != ''
+    execute "setf " .. ft
+  endif
+enddef
+
+export def DetectFromExt()
+  const amatch = expand("<amatch>")
+  var ext = fnamemodify(amatch, ':e')
+  const name = fnamemodify(amatch, ':t')
+  if ext == '' && name[0] == '.'
+    ext = name[1 : ]
+  endif
+  const ft =  get(ft_from_ext, ext, '')
+  if ft != ''
+    execute "setf " .. ft
+  endif
+enddef
+
+# Key: extension of the file name. without `.`
+# Value: filetype
+const ft_from_ext = {
+  # 8th (Firth-derivative)
+  "8th": "8th",
+  # A-A-P recipe
+  "aap": "aap",
+  # ABAB/4
+  "abap": "abap",
+  # ABC music notation
+  "abc": "abc",
+  # ABEL
+  "abl": "abel",
+  # ABNF
+  "abnf": "abnf",
+  # AceDB
+  "wrm": "acedb",
+  # Ada (83, 9X, 95)
+  "adb": "ada",
+  "ads": "ada",
+  "ada": "ada",
+  # AHDL
+  "tdf": "ahdl",
+  # AIDL
+  "aidl": "aidl",
+  # AMPL
+  "run": "ampl",
+  # ANTLR / PCCTS
+  "g": "pccts",
+  # ANTLR 4
+  "g4": "antlr4",
+  # Arduino
+  "ino": "arduino",
+  "pde": "arduino",
+  # Asymptote
+  "asy": "asy",
+  # XA65 MOS6510 cross assembler
+  "a65": "a65",
+  # Applescript
+  "scpt": "applescript",
+  # Applix ELF
+  "am": "elf",
+  # Arc Macro Language
+  "aml": "aml",
+  # ART*Enterprise (formerly ART-IM)
+  "art": "art",
+  # AsciiDoc
+  "asciidoc": "asciidoc",
+  "adoc": "asciidoc",
+  # ASN.1
+  "asn": "asn",
+  "asn1": "asn",
+  # Assembly - Netwide
+  "nasm": "nasm",
+  # Assembly - Microsoft
+  "masm": "masm",
+  # Assembly - Macro (VAX)
+  "mar": "vmasm",
+  # Astro
+  "astro": "astro",
+  # Atlas
+  "atl": "atlas",
+  "as": "atlas",
+  # Atom is based on XML
+  "atom": "xml",
+  # Authzed
+  "zed": "authzed",
+  # Autoit v3
+  "au3": "autoit",
+  # Autohotkey
+  "ahk": "autohotkey",
+  # Autotest .at files are actually Autoconf M4
+  "at": "config",
+  # Avenue
+  "ave": "ave",
+  # Awk
+  "awk": "awk",
+  "gawk": "awk",
+  # B
+  "mch": "b",
+  "ref": "b",
+  "imp": "b",
+  # Bass
+  "bass": "bass",
+  # IBasic file (similar to QBasic)
+  "iba": "ibasic",
+  "ibi": "ibasic",
+  # FreeBasic file (similar to QBasic)
+  "fb": "freebasic",
+  # Batch file for MSDOS. See dist#ft#FTsys for *.sys
+  "bat": "dosbatch",
+  # BC calculator
+  "bc": "bc",
+  # BDF font
+  "bdf": "bdf",
+  # Beancount
+  "beancount": "beancount",
+  # BibTeX bibliography database file
+  "bib": "bib",
+  # BibTeX Bibliography Style
+  "bst": "bst",
+  # Bicep
+  "bicep": "bicep",
+  "bicepparam": "bicep",
+  # BIND zone
+  "zone": "bindzone",
+  # Blank
+  "bl": "blank",
+  # Brighterscript
+  "bs": "brighterscript",
+  # Brightscript
+  "brs": "brightscript",
+  # BSDL
+  "bsd": "bsdl",
+  "bsdl": "bsdl",
+  # C3
+  "c3": "c3",
+  "c3i": "c3",
+  "c3t": "c3",
+  # Cairo
+  "cairo": "cairo",
+  # Cap'n Proto
+  "capnp": "capnp",
+  # C#
+  "cs": "cs",
+  "csx": "cs",
+  "cake": "cs",
+  # CSDL
+  "csdl": "csdl",
+  # Ctags
+  "ctags": "conf",
+  # Cabal
+  "cabal": "cabal",
+  # Cedar
+  "cedar": "cedar",
+  # ChaiScript
+  "chai": "chaiscript",
+  # Chatito
+  "chatito": "chatito",
+  # Chuck
+  "ck": "chuck",
+  # Comshare Dimension Definition Language
+  "cdl": "cdl",
+  # Conary Recipe
+  "recipe": "conaryrecipe",
+  # Corn config file
+  "corn": "corn",
+  # ChainPack Object Notation (CPON)
+  "cpon": "cpon",
+  # Controllable Regex Mutilator
+  "crm": "crm",
+  # Cyn++
+  "cyn": "cynpp",
+  # Cypher query language
+  "cypher": "cypher",
+  # C++
+  "cxx": "cpp",
+  "c++": "cpp",
+  "hh": "cpp",
+  "hxx": "cpp",
+  "hpp": "cpp",
+  "ipp": "cpp",
+  "moc": "cpp",
+  "tcc": "cpp",
+  "inl": "cpp",
+  # MS files (ixx: C++ module interface file, Microsoft Project file)
+  "ixx": "cpp",
+  "mpp": "cpp",
+  # C++ 20 modules (clang)
+  # 
https://clang.llvm.org/docs/StandardCPlusPlusModules.html#file-name-requirement
+  "cppm": "cpp",
+  "ccm": "cpp",
+  "cxxm": "cpp",
+  "c++m": "cpp",
+  # Ch (CHscript)
+  "chf": "ch",
+  # TLH files are C++ headers generated by Visual C++'s #import from typelibs
+  "tlh": "cpp",
+  # Cascading Style Sheets
+  "css": "css",
+  # Century Term Command Scripts (*.cmd too)
+  "con": "cterm",
+  # ChordPro
+  "chopro": "chordpro",
+  "crd": "chordpro",
+  "cho": "chordpro",
+  "crdpro": "chordpro",
+  "chordpro": "chordpro",
+  # Clean
+  "dcl": "clean",
+  "icl": "clean",
+  # Clever
+  "eni": "cl",
+  # Clojure
+  "clj": "clojure",
+  "cljs": "clojure",
+  "cljx": "clojure",
+  "cljc": "clojure",
+  # Cobol
+  "cbl": "cobol",
+  "cob": "cobol",
+  # Coco/R
+  "atg": "coco",
+  # Cold Fusion
+  "cfm": "cf",
+  "cfi": "cf",
+  "cfc": "cf",
+  # Cooklang
+  "cook": "cook",
+  # Clinical Quality Language (CQL)
+  # .cql is also mentioned as the 'XDCC Catcher queue list' file extension.
+  # If support for XDCC Catcher is needed in the future, the contents of the 
file
+  # needs to be inspected.
+  "cql": "cqlang",
+  # Crystal
+  "cr": "crystal",
+  # CSV Files
+  "csv": "csv",
+  # CUDA Compute Unified Device Architecture
+  "cu": "cuda",
+  "cuh": "cuda",
+  # Cue
+  "cue": "cue",
+  # DAX
+  "dax": "dax",
+  # WildPackets EtherPeek Decoder
+  "dcd": "dcd",
+  # Elvish
+  "elv": "elvish",
+  # Faust
+  "lib": "faust",
+  # Libreoffice config files
+  "xcu": "xml",
+  "xlb": "xml",
+  "xlc": "xml",
+  "xba": "xml",
+  # Libtool files
+  "lo": "sh",
+  "la": "sh",
+  "lai": "sh",
+  # LyRiCs
+  "lrc": "lyrics",
+  # MLIR
+  "mlir": "mlir",
+  # Quake C
+  "qc": "c",
+  # Cucumber
+  "feature": "cucumber",
+  # Communicating Sequential Processes
+  "csp": "csp",
+  "fdr": "csp",
+  # CUPL logic description and simulation
+  "pld": "cupl",
+  "si": "cuplsim",
+  # Dafny
+  "dfy": "dafny",
+  # Dart
+  "dart": "dart",
+  "drt": "dart",
+  # Dhall
+  "dhall": "dhall",
+  # ROCKLinux package description
+  "desc": "desc",
+  # Desktop files
+  "desktop": "desktop",
+  "directory": "desktop",
+  # Diff files
+  "diff": "diff",
+  "rej": "diff",
+  # DOT
+  "dot": "dot",
+  "gv": "dot",
+  # Dylan - lid files
+  "lid": "dylanlid",
+  # Dylan - intr files (melange)
+  "intr": "dylanintr",
+  # Dylan
+  "dylan": "dylan",
+  # Dracula
+  "drac": "dracula",
+  "drc": "dracula",
+  "lvs": "dracula",
+  "lpe": "dracula",
+  # Datascript
+  "ds": "datascript",
+  # DTD (Document Type Definition for XML)
+  "dtd": "dtd",
+  # Devicetree (.its for U-Boot Flattened Image Trees, .keymap for ZMK keymap, 
and
+  # .overlay for Zephyr overlay)
+  "dts": "dts",
+  "dtsi": "dts",
+  "dtso": "dts",
+  "its": "dts",
+  "keymap": "dts",
+  "overlay": "dts",
+  # Embedix Component Description
+  "ecd": "ecd",
+  # ERicsson LANGuage; Yaws is erlang too
+  "erl": "erlang",
+  "hrl": "erlang",
+  "yaws": "erlang",
+  # Elm
+  "elm": "elm",
+  # Elsa - https://github.com/ucsd-progsys/elsa
+  "lc": "elsa",
+  # EdgeDB Schema Definition Language
+  "esdl": "esdl",
+  # ESQL-C
+  "ec": "esqlc",
+  "EC": "esqlc",
+  # Esterel
+  "strl": "esterel",
+  # Essbase script
+  "csc": "csc",
+  # Expect
+  "exp": "expect",
+  # Falcon
+  "fal": "falcon",
+  # Fantom
+  "fan": "fan",
+  "fwt": "fan",
+  # Factor
+  "factor": "factor",
+  # FGA
+  "fga": "fga",
+  # FIRRTL - Flexible Internal Representation for RTL
+  "fir": "firrtl",
+  # Fish shell
+  "fish": "fish",
+  # Flix
+  "flix": "flix",
+  # Focus Executable
+  "fex": "focexec",
+  "focexec": "focexec",
+  # Focus Master file (but not for auto.master)
+  "mas": "master",
+  "master": "master",
+  # Forth
+  "ft": "forth",
+  "fth": "forth",
+  "4th": "forth",
+  # Reva Forth
+  "frt": "reva",
+  # Framescript
+  "fsl": "framescript",
+  # Func
+  "fc": "func",
+  # Fusion
+  "fusion": "fusion",
+  # FHIR Shorthand (FSH)
+  "fsh": "fsh",
+  # F#
+  "fsi": "fsharp",
+  "fsx": "fsharp",
+  # GDMO
+  "mo": "gdmo",
+  "gdmo": "gdmo",
+  # GDscript
+  "gd": "gdscript",
+  # Godot resource
+  "tscn": "gdresource",
+  "tres": "gdresource",
+  # Godot shader
+  "gdshader": "gdshader",
+  "shader": "gdshader",
+  # Gemtext
+  "gmi": "gemtext",
+  "gemini": "gemtext",
+  # Gift (Moodle)
+  "gift": "gift",
+  # Gleam
+  "gleam": "gleam",
+  # GLSL
+  # Extensions supported by Khronos reference compiler (with one exception, 
".glsl")
+  # https://github.com/KhronosGroup/glslang
+  "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 (generate ninja) files
+  "gn": "gn",
+  "gni": "gn",
+  # Glimmer-flavored TypeScript and JavaScript
+  "gts": "typescript.glimmer",
+  "gjs": "javascript.glimmer",
+  # Go (Google)
+  "go": "go",
+  # GrADS scripts
+  "gs": "grads",
+  # GraphQL
+  "graphql": "graphql",
+  "graphqls": "graphql",
+  "gql": "graphql",
+  # Gretl
+  "gretl": "gretl",
+  # GNU Server Pages
+  "gsp": "gsp",
+  # GYP
+  "gyp": "gyp",
+  "gypi": "gyp",
+  # Hack
+  "hack": "hack",
+  "hackpartial": "hack",
+  # Haml
+  "haml": "haml",
+  # Hamster Classic | Playground files
+  "hsm": "hamster",
+  # Handlebars
+  "hbs": "handlebars",
+  # Hare
+  "ha": "hare",
+  # Haskell
+  "hs": "haskell",
+  "hsc": "haskell",
+  "hs-boot": "haskell",
+  "hsig": "haskell",
+  "lhs": "lhaskell",
+  "chs": "chaskell",
+  # Haste
+  "ht": "haste",
+  "htpp": "hastepreproc",
+  # Haxe
+  "hx": "haxe",
+  # HCL
+  "hcl": "hcl",
+  # Hercules
+  "vc": "hercules",
+  "ev": "hercules",
+  "sum": "hercules",
+  "errsum": "hercules",
+  # HEEx
+  "heex": "heex",
+  # HEX (Intel)
+  "hex": "hex",
+  "ihex": "hex",
+  "int": "hex",
+  "ihe": "hex",
+  "ihx": "hex",
+  "mcs": "hex",
+  "h32": "hex",
+  "h80": "hex",
+  "h86": "hex",
+  "a43": "hex",
+  "a90": "hex",
+  # Hjson
+  "hjson": "hjson",
+  # HLS Playlist (or another form of playlist)
+  "m3u": "hlsplaylist",
+  "m3u8": "hlsplaylist",
+  # Hollywood
+  "hws": "hollywood",
+  # Hoon
+  "hoon": "hoon",
+  # TI Code Composer Studio General Extension Language
+  "gel": "gel",
+  # HTTP request files
+  "http": "http",
+  # HTML with Ruby - eRuby
+  "erb": "eruby",
+  "rhtml": "eruby",
+  # Some template.  Used to be HTML Cheetah.
+  "tmpl": "template",
+  # Hurl
+  "hurl": "hurl",
+  # Hyper Builder
+  "hb": "hb",
+  # Httest
+  "htt": "httest",
+  "htb": "httest",
+  # Icon
+  "icn": "icon",
+  # Microsoft IDL (Interface Description Language)  Also *.idl
+  # MOF = WMI (Windows Management Instrumentation) Managed Object Format
+  "odl": "msidl",
+  "mof": "msidl",
+  # Idris2
+  "idr": "idris2",
+  "lidr": "lidris2",
+  # Inform
+  "inf": "inform",
+  "INF": "inform",
+  # Ipkg for Idris 2 language
+  "ipkg": "ipkg",
+  # Informix 4GL (source - canonical, include file, I4GL+M4 preproc.)
+  "4gl": "fgl",
+  "4gh": "fgl",
+  "m4gl": "fgl",
+  # .INI file for MSDOS
+  "ini": "dosini",
+  "INI": "dosini",
+  # Inko
+  "inko": "inko",
+  # Inno Setup
+  "iss": "iss",
+  # J
+  "ijs": "j",
+  # JAL
+  "jal": "jal",
+  "JAL": "jal",
+  # Jam
+  "jpl": "jam",
+  "jpr": "jam",
+  # Janet
+  "janet": "janet",
+  # Java
+  "java": "java",
+  "jav": "java",
+  "jsh": "java",
+  # JavaCC
+  "jj": "javacc",
+  "jjt": "javacc",
+  # JavaScript, ECMAScript, ES module script, CommonJS script
+  "js": "javascript",
+  "jsm": "javascript",
+  "javascript": "javascript",
+  "es": "javascript",
+  "mjs": "javascript",
+  "cjs": "javascript",
+  # JavaScript with React
+  "jsx": "javascriptreact",
+  # Java Server Pages
+  "jsp": "jsp",
+  # Jess
+  "clp": "jess",
+  # Jgraph
+  "jgr": "jgraph",
+  # Jinja
+  "jinja": "jinja",
+  # Jujutsu
+  "jjdescription": "jjdescription",
+  # Jovial
+  "jov": "jovial",
+  "j73": "jovial",
+  "jovial": "jovial",
+  # Jq
+  "jq": "jq",
+  # JSON5
+  "json5": "json5",
+  # JSON Patch (RFC 6902)
+  "json-patch": "json",
+  # Geojson is also json
+  "geojson": "json",
+  # Jupyter Notebook and jupyterlab config is also json
+  "ipynb": "json",
+  "jupyterlab-settings": "json",
+  # Sublime config
+  "sublime-project": "json",
+  "sublime-settings": "json",
+  "sublime-workspace": "json",
+  # JSON
+  "json": "json",
+  "jsonp": "json",
+  "webmanifest": "json",
+  # JSON Lines
+  "jsonl": "jsonl",
+  # Jsonnet
+  "jsonnet": "jsonnet",
+  "libsonnet": "jsonnet",
+  # Julia
+  "jl": "julia",
+  # KAREL
+  "kl": "karel",
+  "KL": "karel",
+  # KDL
+  "kdl": "kdl",
+  # KerML
+  "kerml": "kerml",
+  # Kixtart
+  "kix": "kix",
+  # Kimwitu[++]
+  "k": "kwt",
+  # Kivy
+  "kv": "kivy",
+  # Kotlin
+  "kt": "kotlin",
+  "ktm": "kotlin",
+  "kts": "kotlin",
+  # KDE script
+  "ks": "kscript",
+  # Kyaml
+  "kyaml": "yaml",
+  "kyml": "yaml",
+  # Lace (ISE)
+  "ace": "lace",
+  "ACE": "lace",
+  # Latte
+  "latte": "latte",
+  "lte": "latte",
+  # LDAP LDIF
+  "ldif": "ldif",
+  # Lean
+  "lean": "lean",
+  # Ledger
+  "ldg": "ledger",
+  "ledger": "ledger",
+  "journal": "ledger",
+  # Leo
+  "leo": "leo",
+  # Less
+  "less": "less",
+  # Lex
+  "lex": "lex",
+  "l": "lex",
+  "lxx": "lex",
+  "l++": "lex",
+  # Lilypond
+  "ly": "lilypond",
+  "ily": "lilypond",
+  # Liquidsoap
+  "liq": "liquidsoap",
+  # Liquid
+  "liquid": "liquid",
+  # Lite
+  "lite": "lite",
+  "lt": "lite",
+  # Livebook
+  "livemd": "livebook",
+  # Logtalk
+  "lgt": "logtalk",
+  # LOTOS
+  "lotos": "lotos",
+  # Lout (also: *.lt)
+  "lou": "lout",
+  "lout": "lout",
+  # Luau
+  "luau": "luau",
+  # Lynx style file (or LotusScript!)
+  "lss": "lss",
+  # MaGic Point
+  "mgp": "mgp",
+  # MakeIndex
+  "ist": "ist",
+  "mst": "ist",
+  # Mallard
+  "page": "mallard",
+  # Manpage
+  "man": "man",
+  # Maple V
+  "mv": "maple",
+  "mpl": "maple",
+  "mws": "maple",
+  # Mason (it used to include *.comp, are those Mason files?)
+  "mason": "mason",
+  "mhtml": "mason",
+  # Mathematica notebook and package files
+  "nb": "mma",
+  "wl": "mma",
+  # Maya Extension Language
+  "mel": "mel",
+  # mcmeta
+  "mcmeta": "json",
+  # MediaWiki
+  "mw": "mediawiki",
+  "wiki": "mediawiki",
+  # Mermaid
+  "mmd": "mermaid",
+  "mmdc": "mermaid",
+  "mermaid": "mermaid",
+  # Meson Build system config
+  "wrap": "dosini",
+  # Metafont
+  "mf": "mf",
+  # MetaPost
+  "mp": "mp",
+  # MGL
+  "mgl": "mgl",
+  # MIX - Knuth assembly
+  "mix": "mix",
+  "mixal": "mix",
+  # Symbian meta-makefile definition (MMP)
+  "mmp": "mmp",
+  # Larch/Modula-3
+  "lm3": "modula3",
+  # Monk
+  "isc": "monk",
+  "monk": "monk",
+  "ssc": "monk",
+  "tsc": "monk",
+  # MOO
+  "moo": "moo",
+  # Moonscript
+  "moon": "moonscript",
+  # Move language
+  "move": "move",
+  # MPD is based on XML
+  "mpd": "xml",
+  # Motorola S record
+  "s19": "srec",
+  "s28": "srec",
+  "s37": "srec",
+  "mot": "srec",
+  "srec": "srec",
+  # Msql
+  "msql": "msql",
+  # MuPAD source
+  "mu": "mupad",
+  # Mush
+  "mush": "mush",
+  # Mustache
+  "mustache": "mustache",
+  # N1QL
+  "n1ql": "n1ql",
+  "nql": "n1ql",
+  # Nim file
+  "nim": "nim",
+  "nims": "nim",
+  "nimble": "nim",
+  # Ninja file
+  "ninja": "ninja",
+  # Nix
+  "nix": "nix",
+  # Norg
+  "norg": "norg",
+  # Novell netware batch files
+  "ncf": "ncf",
+  # Not Quite C
+  "nqc": "nqc",
+  # NSE - Nmap Script Engine - uses Lua syntax
+  "nse": "lua",
+  # NSIS
+  "nsi": "nsis",
+  "nsh": "nsis",
+  # N-Triples
+  "nt": "ntriples",
+  # Nu
+  "nu": "nu",
+  # Numbat
+  "nbt": "numbat",
+  # Oblivion Language and Oblivion Script Extender
+  "obl": "obse",
+  "obse": "obse",
+  "oblivion": "obse",
+  "obscript": "obse",
+  # Objdump
+  "objdump": "objdump",
+  "cppobjdump": "objdump",
+  # Occam
+  "occ": "occam",
+  # Odin
+  "odin": "odin",
+  # Omnimark
+  "xom": "omnimark",
+  "xin": "omnimark",
+  # OpenROAD
+  "or": "openroad",
+  # OpenSCAD
+  "scad": "openscad",
+  # Oracle config file
+  "ora": "ora",
+  # Org (Emacs' org-mode)
+  "org": "org",
+  "org_archive": "org",
+  # PApp
+  "papp": "papp",
+  "pxml": "papp",
+  "pxsl": "papp",
+  # Pascal (also *.p, *.pp, *.inc)
+  "pas": "pascal",
+  # Delphi
+  "dpr": "pascal",
+  # Free Pascal makefile definition file
+  "fpc": "fpcmake",
+  # Path of Exile item filter
+  "filter": "poefilter",
+  # PDF
+  "pdf": "pdf",
+  # PCMK - HAE - crm configure edit
+  "pcmk": "pcmk",
+  # PEM (Privacy-Enhanced Mail)
+  "pem": "pem",
+  "cer": "pem",
+  "crt": "pem",
+  "csr": "pem",
+  # Perl POD
+  "pod": "pod",
+  # Pike and Cmod
+  "pike": "pike",
+  "pmod": "pike",
+  "cmod": "cmod",
+  # Palm Resource compiler
+  "rcp": "pilrc",
+  # Pip requirements
+  "pip": "requirements",
+  # PL/1, PL/I
+  "pli": "pli",
+  "pl1": "pli",
+  # PL/M (also: *.inp)
+  "plm": "plm",
+  "p36": "plm",
+  "pac": "plm",
+  # PL/SQL
+  "pls": "plsql",
+  "plsql": "plsql",
+  # PLP
+  "plp": "plp",
+  # PO and PO template (GNU gettext)
+  "po": "po",
+  "pot": "po",
+  # Pony
+  "pony": "pony",
+  # PostScript (+ font files, encapsulated PostScript, Adobe Illustrator)
+  "ps": "postscr",
+  "pfa": "postscr",
+  "afm": "postscr",
+  "eps": "postscr",
+  "epsf": "postscr",
+  "epsi": "postscr",
+  "ai": "postscr",
+  # PostScript Printer Description
+  "ppd": "ppd",
+  # Povray
+  "pov": "pov",
+  # Power Query M
+  "pq": "pq",
+  # Prisma
+  "prisma": "prisma",
+  # PPWizard
+  "it": "ppwiz",
+  "ih": "ppwiz",
+  # Pug
+  "pug": "pug",
+  # Embedded Puppet
+  "epp": "epuppet",
+  # Obj 3D file format
+  # TODO: is there a way to avoid MS-Windows Object files?
+  "obj": "obj",
+  # Oracle Pro*C/C++
+  "pc": "proc",
+  # Privoxy actions file
+  "action": "privoxy",
+  # Software Distributor Product Specification File (POSIX 1387.2-1995)
+  "psf": "psf",
+  # Prolog
+  "pdb": "prolog",
+  # Promela
+  "pml": "promela",
+  # Property Specification Language (PSL)
+  "psl": "psl",
+  # Google protocol buffers
+  "proto": "proto",
+  "txtpb": "pbtxt",
+  "textproto": "pbtxt",
+  "textpb": "pbtxt",
+  "pbtxt": "pbtxt",
+  # Poke
+  "pk": "poke",
+  # Nvidia PTX (Parallel Thread Execution)
+  # See https://docs.nvidia.com/cuda/parallel-thread-execution/
+  "ptx": "ptx",
+  # Purescript
+  "purs": "purescript",
+  # Pyret
+  "arr": "pyret",
+  # Pyrex/Cython
+  "pyx": "pyrex",
+  "pyx+": "pyrex",
+  "pxd": "pyrex",
+  "pxi": "pyrex",
+  # QL
+  "ql": "ql",
+  "qll": "ql",
+  # QML
+  "qml": "qml",
+  "qbs": "qml",
+  # Quarto
+  "qmd": "quarto",
+  # QuickBms
+  "bms": "quickbms",
+  # Racket (formerly detected as "scheme")
+  "rkt": "racket",
+  "rktd": "racket",
+  "rktl": "racket",
+  # Radiance
+  "rad": "radiance",
+  "mat": "radiance",
+  # Raku (formerly Perl6)
+  "pm6": "raku",
+  "p6": "raku",
+  "t6": "raku",
+  "pod6": "raku",
+  "raku": "raku",
+  "rakumod": "raku",
+  "rakudoc": "raku",
+  "rakutest": "raku",
+  # Renderman Interface Bytestream
+  "rib": "rib",
+  # Rego Policy Language
+  "rego": "rego",
+  # Rexx
+  "rex": "rexx",
+  "orx": "rexx",
+  "rxo": "rexx",
+  "rxj": "rexx",
+  "jrexx": "rexx",
+  "rexxj": "rexx",
+  "rexx": "rexx",
+  "testGroup": "rexx",
+  "testUnit": "rexx",
+  # RSS looks like XML
+  "rss": "xml",
+  # ReScript
+  "res": "rescript",
+  "resi": "rescript",
+  # Relax NG Compact
+  "rnc": "rnc",
+  # Relax NG XML
+  "rng": "rng",
+  # ILE RPG
+  "rpgle": "rpgle",
+  "rpgleinc": "rpgle",
+  # RPL/2
+  "rpl": "rpl",
+  # Robot Framework
+  "robot": "robot",
+  "resource": "robot",
+  # Roc
+  "roc": "roc",
+  # RON (Rusty Object Notation)
+  "ron": "ron",
+  # MikroTik RouterOS script
+  "rsc": "routeros",
+  # Rpcgen
+  "x": "rpcgen",
+  # reStructuredText Documentation Format
+  "rst": "rst",
+  # RTF
+  "rtf": "rtf",
+  # Ruby
+  "rb": "ruby",
+  "rbw": "ruby",
+  # RubyGems
+  "gemspec": "ruby",
+  # RBS (Ruby Signature)
+  "rbs": "rbs",
+  # Rackup
+  "ru": "ruby",
+  # Ruby on Rails
+  "builder": "ruby",
+  "rxml": "ruby",
+  "rjs": "ruby",
+  # Rust
+  "rs": "rust",
+  # S-lang
+  "sl": "slang",
+  # Sage
+  "sage": "sage",
+  # SAS script
+  "sas": "sas",
+  # Sass
+  "sass": "sass",
+  # Scala
+  "scala": "scala",
+  "mill": "scala",
+  # SBT - Scala Build Tool
+  "sbt": "sbt",
+  # Slang Shading Language
+  "slang": "shaderslang",
+  # Slint
+  "slint": "slint",
+  # Scilab
+  "sci": "scilab",
+  "sce": "scilab",
+  # SCSS
+  "scss": "scss",
+  # SD: Streaming Descriptors
+  "sd": "sd",
+  # SDL
+  "sdl": "sdl",
+  "pr": "sdl",
+  # sed
+  "sed": "sed",
+  # SubRip
+  "srt": "srt",
+  # SubStation Alpha
+  "ass": "ssa",
+  "ssa": "ssa",
+  # svelte
+  "svelte": "svelte",
+  # Sieve (RFC 3028, 5228)
+  "siv": "sieve",
+  "sieve": "sieve",
+  # TriG
+  "trig": "trig",
+  # Zig and Zig Object Notation (ZON)
+  "zig": "zig",
+  "zon": "zig",
+  # Ziggy and Ziggy Schema
+  "ziggy": "ziggy",
+  "ziggy-schema": "ziggy_schema",
+  # Zserio
+  "zs": "zserio",
+  # Salt state files
+  "sls": "salt",
+  # Sexplib
+  "sexp": "sexplib",
+  # Simula
+  "sim": "simula",
+  # SINDA
+  "sin": "sinda",
+  "s85": "sinda",
+  # SiSU
+  "sst": "sisu",
+  "ssm": "sisu",
+  "ssi": "sisu",
+  "-sst": "sisu",
+  "_sst": "sisu",
+  # SKILL
+  "il": "skill",
+  "ils": "skill",
+  "cdf": "skill",
+  # Cadence
+  "cdc": "cdc",
+  # Cangjie
+  "cj": "cangjie",
+  # SLRN
+  "score": "slrnsc",
+  # Smali
+  "smali": "smali",
+  # Smalltalk
+  "st": "st",
+  # Smarty templates
+  "tpl": "smarty",
+  # SMITH
+  "smt": "smith",
+  "smith": "smith",
+  # Smithy
+  "smithy": "smithy",
+  # Snobol4 and spitbol
+  "sno": "snobol4",
+  "spt": "snobol4",
+  # SNMP MIB files
+  "mib": "mib",
+  "my": "mib",
+  # Solidity
+  "sol": "solidity",
+  # SPARQL queries
+  "rq": "sparql",
+  "sparql": "sparql",
+  # Spec (Linux RPM)
+  "spec": "spec",
+  # Speedup (AspenTech plant simulator)
+  "speedup": "spup",
+  "spdata": "spup",
+  "spd": "spup",
+  # Slice
+  "ice": "slice",
+  # Microsoft Visual Studio Solution
+  "sln": "solution",
+  "slnf": "json",
+  "slnx": "xml",
+  # Spice
+  "sp": "spice",
+  "spice": "spice",
+  # Spyce
+  "spy": "spyce",
+  "spi": "spyce",
+  # SQL for Oracle Designer
+  "tyb": "sql",
+  "tyc": "sql",
+  "pkb": "sql",
+  "pks": "sql",
+  # SQLJ
+  "sqlj": "sqlj",
+  # PRQL
+  "prql": "prql",
+  # SQR
+  "sqr": "sqr",
+  "sqi": "sqr",
+  # Squirrel
+  "nut": "squirrel",
+  # Starlark
+  "ipd": "starlark",
+  "star": "starlark",
+  "starlark": "starlark",
+  # OpenVPN configuration
+  "ovpn": "openvpn",
+  # Stata
+  "ado": "stata",
+  "do": "stata",
+  "imata": "stata",
+  "mata": "stata",
+  # SMCL
+  "hlp": "smcl",
+  "ihlp": "smcl",
+  "smcl": "smcl",
+  # Stored Procedures
+  "stp": "stp",
+  # Standard ML
+  "sml": "sml",
+  # Sratus VOS command macro
+  "cm": "voscm",
+  # Sway (programming language)
+  "sw": "sway",
+  # Swift
+  "swift": "swift",
+  "swiftinterface": "swift",
+  # Swig
+  "swg": "swig",
+  "swig": "swig",
+  # Synopsys Design Constraints
+  "sdc": "sdc",
+  # SVG (Scalable Vector Graphics)
+  "svg": "svg",
+  # Surface
+  "sface": "surface",
+  # SysML
+  "sysml": "sysml",
+  # LLVM TableGen
+  "td": "tablegen",
+  # TAK
+  "tak": "tak",
+  # Unx Tal
+  "tal": "tal",
+  # templ
+  "templ": "templ",
+  # Teal
+  "tl": "teal",
+  # TealInfo
+  "tli": "tli",
+  # Telix Salt
+  "slt": "tsalt",
+  # Terminfo
+  "ti": "terminfo",
+  # Tera
+  "tera": "tera",
+  # Terraform variables
+  "tfvars": "terraform-vars",
+  # TeX
+  "latex": "tex",
+  "sty": "tex",
+  "dtx": "tex",
+  "ltx": "tex",
+  "bbl": "tex",
+  # LaTeX files generated by Inkscape
+  "pdf_tex": "tex",
+  # ConTeXt
+  "mkii": "context",
+  "mkiv": "context",
+  "mkvi": "context",
+  "mkxl": "context",
+  "mklx": "context",
+  # Texinfo
+  "texinfo": "texinfo",
+  "texi": "texinfo",
+  "txi": "texinfo",
+  # Thrift (Apache)
+  "thrift": "thrift",
+  # TLA+
+  "tla": "tla",
+  # TPP - Text Presentation Program
+  "tpp": "tpp",
+  # TRACE32 Script Language
+  "cmm": "trace32",
+  "cmmt": "trace32",
+  "t32": "trace32",
+  # Treetop
+  "treetop": "treetop",
+  # TSS - Geometry
+  "tssgm": "tssgm",
+  # TSS - Optics
+  "tssop": "tssop",
+  # TSS - Command Line (temporary)
+  "tsscl": "tsscl",
+  # TSV Files
+  "tsv": "tsv",
+  # Tutor mode
+  "tutor": "tutor",
+  # TWIG files
+  "twig": "twig",
+  # TypeScript module and common
+  "mts": "typescript",
+  "cts": "typescript",
+  # TypeScript with React
+  "tsx": "typescriptreact",
+  # TypeSpec files
+  "tsp": "typespec",
+  # Motif UIT/UIL files
+  "uit": "uil",
+  "uil": "uil",
+  # Ungrammar, AKA Un-grammar
+  "ungram": "ungrammar",
+  # UnrealScript
+  "uc": "uc",
+  # URL shortcut
+  "url": "urlshortcut",
+  # V
+  "vsh": "v",
+  "vv": "v",
+  # Vala
+  "vala": "vala",
+  # VDF
+  "vdf": "vdf",
+  # VDM
+  "vdmpp": "vdmpp",
+  "vpp": "vdmpp",
+  "vdmrt": "vdmrt",
+  "vdmsl": "vdmsl",
+  "vdm": "vdmsl",
+  # Vento
+  "vto": "vento",
+  # Vera
+  "vr": "vera",
+  "vri": "vera",
+  "vrh": "vera",
+  # Verilog-AMS HDL
+  "va": "verilogams",
+  "vams": "verilogams",
+  # SystemVerilog
+  "sv": "systemverilog",
+  "svh": "systemverilog",
+  # VHS tape
+  # .tape is also used by TapeCalc, which we do not support ATM.  If TapeCalc
+  # support is needed the contents of the file needs to be inspected.
+  "tape": "vhs",
+  # VHDL
+  "hdl": "vhdl",
+  "vhd": "vhdl",
+  "vhdl": "vhdl",
+  "vbe": "vhdl",
+  "vst": "vhdl",
+  "vho": "vhdl",
+  # Visual Basic
+  # user control, ActiveX document form, active designer, property page
+  "ctl": "vb",
+  "dob": "vb",
+  "dsr": "vb",
+  "pag": "vb",
+  # Visual Basic Project
+  "vbp": "dosini",
+  # VBScript (close to Visual Basic)
+  "vbs": "vb",
+  # Visual Basic .NET (close to Visual Basic)
+  "vb": "vb",
+  # Visual Studio Macro
+  "dsm": "vb",
+  # SaxBasic (close to Visual Basic)
+  "sba": "vb",
+  # VRML V1.0c
+  "wrl": "vrml",
+  # Vroom (vim testing and executable documentation)
+  "vroom": "vroom",
+  # Vue.js Single File Component
+  "vue": "vue",
+  # WebAssembly
+  "wat": "wat",
+  "wast": "wat",
+  # WebAssembly Interface Type (WIT)
+  "wit": "wit",
+  # Webmacro
+  "wm": "webmacro",
+  # WebGPU Shading Language (WGSL)
+  "wgsl": "wgsl",
+  # Website MetaLanguage
+  "wml": "wml",
+  # Winbatch
+  "wbt": "winbatch",
+  # WSML
+  "wsml": "wsml",
+  # WPL
+  "wpl": "xml",
+  # XHTML
+  "xhtml": "xhtml",
+  "xht": "xhtml",
+  # Xilinx Vivado/Vitis project files and block design files
+  "xpr": "xml",
+  "xpfm": "xml",
+  "spfm": "xml",
+  "bxml": "xml",
+  "mmi": "xml",
+  "bd": "json",
+  "bda": "json",
+  "xci": "json",
+  "mss": "mss",
+  # XS Perl extension interface language
+  "xs": "xs",
+  # Xmath
+  "msc": "xmath",
+  "msf": "xmath",
+  # XMI (holding UML models) is also XML
+  "xmi": "xml",
+  # Unison Language
+  "u": "unison",
+  "uu": "unison",
+  # Qt Linguist translation source and Qt User Interface Files are XML
+  # However, for .ts TypeScript is more common.
+  "ui": "xml",
+  # TPM's are RDF-based descriptions of TeX packages (Nikolai Weibull)
+  "tpm": "xml",
+  # Web Services Description Language (WSDL)
+  "wsdl": "xml",
+  # Workflow Description Language (WDL)
+  "wdl": "wdl",
+  # XLIFF (XML Localisation Interchange File Format) is also XML
+  "xlf": "xml",
+  "xliff": "xml",
+  # XML User Interface Language
+  "xul": "xml",
+  # Xquery
+  "xq": "xquery",
+  "xql": "xquery",
+  "xqm": "xquery",
+  "xquery": "xquery",
+  "xqy": "xquery",
+  # XSD
+  "xsd": "xsd",
+  # Xslt
+  "xsl": "xslt",
+  "xslt": "xslt",
+  # Yacc
+  "yy": "yacc",
+  "yxx": "yacc",
+  "y++": "yacc",
+  # Yaml
+  "yaml": "yaml",
+  "yml": "yaml",
+  "eyaml": "yaml",
+  # Raml
+  "raml": "raml",
+  # YANG
+  "yang": "yang",
+  # Yuck
+  "yuck": "yuck",
+  # Zimbu
+  "zu": "zimbu",
+  # Zimbu Templates
+  "zut": "zimbutempl",
+  # Z80 assembler asz80
+  "z8a": "z8a",
+  # Stylus
+  "styl": "stylus",
+  "stylus": "stylus",
+  # Universal Scene Description
+  "usda": "usd",
+  "usd": "usd",
+  # Rofi stylesheet
+  "rasi": "rasi",
+  # Zsh module
+  # mdd: 
https://github.com/zsh-users/zsh/blob/57248b88830ce56adc243a40c7773fb3825cab34/Etc/zsh-development-guide#L285-L288
+  # mdh, pro: 
https://github.com/zsh-users/zsh/blob/57248b88830ce56adc243a40c7773fb3825cab34/Etc/zsh-development-guide#L268-L271
+  # *.mdd will generate *.mdh, *.pro and *.epro.
+  # module's *.c will #include *.mdh containing module dependency information 
and
+  # *.pro containing all static declarations of *.c
+  # *.epro contains all external declarations of *.c
+  "mdh": "c",
+  "epro": "c",
+  "mdd": "sh",
+  # Blueprint markup files
+  "blp": "blueprint",
+  # Blueprint build system file
+  "bp": "bp",
+}
+# Key: file name (the final path component, excluding the drive and root)
+# Value: filetype
+const ft_from_name = {
+  # Ant
+  "build.xml": "ant",
+  # Ash of busybox
+  ".ash_history": "sh",
+  # Automake (must be before the *.am pattern)
+  "makefile.am": "automake",
+  "Makefile.am": "automake",
+  "GNUmakefile.am": "automake",
+  # APT config file
+  "apt.conf": "aptconf",
+  # BIND zone
+  "named.root": "bindzone",
+  # Busted (Lua unit testing framework - configuration files)
+  ".busted": "lua",
+  # Bun history
+  ".bun_repl_history": "javascript",
+  # Calendar
+  "calendar": "calendar",
+  # Cgdb config file
+  "cgdbrc": "cgdbrc",
+  # Cfengine
+  "cfengine.conf": "cfengine",
+  # Chktex
+  ".chktexrc": "conf",
+  # Codeowners
+  "CODEOWNERS": "codeowners",
+  # Clangd
+  ".clangd": "yaml",
+  # Conda configuration file
+  ".condarc": "yaml",
+  "condarc": "yaml",
+  # Cling
+  ".cling_history": "cpp",
+  # CmakeCache
+  "CMakeCache.txt": "cmakecache",
+  # Configure scripts
+  "configure.in": "config",
+  "configure.ac": "config",
+  # Debian devscripts
+  "devscripts.conf": "sh",
+  ".devscripts": "sh",
+  # Fontconfig config files
+  "fonts.conf": "xml",
+  # Libreoffice config files
+  "psprint.conf": "dosini",
+  "sofficerc": "dosini",
+  # Lynx config files
+  "lynx.cfg": "lynx",
+  # Mamba configuration file
+  ".mambarc": "yaml",
+  "mambarc": "yaml",
+  # XDG mimeapps.list
+  "mimeapps.list": "dosini",
+  # Many tools written in Python use dosini as their config
+  # like setuptools, pudb, coverage, pypi, gitlint, oelint-adv, pylint, 
bpython, mypy
+  # (must be before *.cfg)
+  "pip.conf": "dosini",
+  "setup.cfg": "dosini",
+  "pudb.cfg": "dosini",
+  ".coveragerc": "dosini",
+  ".pypirc": "dosini",
+  ".gitlint": "dosini",
+  ".oelint.cfg": "dosini",
+  # Many tools written in Python use toml as their config, like black
+  ".black": "toml",
+  # Wakatime config
+  ".wakatime.cfg": "dosini",
+  # Deno history
+  "deno_history.txt": "javascript",
+  # Deny hosts
+  "denyhosts.conf": "denyhosts",
+  # Dict config
+  "dict.conf": "dictconf",
+  ".dictrc": "dictconf",
+  # Earthfile
+  "Earthfile": "earthfile",
+  # EditorConfig
+  ".editorconfig": "editorconfig",
+  # Elinks configuration
+  "elinks.conf": "elinks",
+  # Exim
+  "exim.conf": "exim",
+  # Exports
+  "exports": "exports",
+  # Fetchmail RC file
+  ".fetchmailrc": "fetchmail",
+  # Focus Master file (but not for auto.master)
+  "auto.master": "conf",
+  # FStab
+  "fstab": "fstab",
+  "mtab": "fstab",
+  # Git
+  "COMMIT_EDITMSG": "gitcommit",
+  "MERGE_MSG": "gitcommit",
+  "TAG_EDITMSG": "gitcommit",
+  "NOTES_EDITMSG": "gitcommit",
+  "EDIT_DESCRIPTION": "gitcommit",
+  # gnash(1) configuration files
+  "gnashrc": "gnash",
+  ".gnashrc": "gnash",
+  "gnashpluginrc": "gnash",
+  ".gnashpluginrc": "gnash",
+  # Gitolite
+  "gitolite.conf": "gitolite",
+  # Go (Google)
+  "Gopkg.lock": "toml",
+  "go.work": "gowork",
+  # GoAccess configuration
+  "goaccess.conf": "goaccess",
+  # GTK RC
+  ".gtkrc": "gtkrc",
+  "gtkrc": "gtkrc",
+  # Haskell
+  "cabal.project": "cabalproject",
+  # Go checksum file (must be before *.sum Hercules)
+  "go.sum": "gosum",
+  "go.work.sum": "gosum",
+  # Indent profile (must come before IDL *.pro!)
+  ".indent.pro": "indent",
+  # Indent RC
+  "indentrc": "indent",
+  # Ipfilter
+  "ipf.conf": "ipfilter",
+  "ipf6.conf": "ipfilter",
+  "ipf.rules": "ipfilter",
+  # SysV Inittab
+  "inittab": "inittab",
+  # JavaScript, ECMAScript, ES module script, CommonJS script
+  ".node_repl_history": "javascript",
+  # Other files that look like json
+  ".prettierrc": "json",
+  ".firebaserc": "json",
+  ".stylelintrc": "json",
+  ".lintstagedrc": "json",
+  "flake.lock": "json",
+  "deno.lock": "json",
+  ".swcrc": "json",
+  "composer.lock": "json",
+  "symfony.lock": "json",
+  # Kconfig
+  "Kconfig": "kconfig",
+  "Kconfig.debug": "kconfig",
+  "Config.in": "kconfig",
+  # Latexmkrc
+  ".latexmkrc": "perl",
+  "latexmkrc": "perl",
+  # LDAP configuration
+  "ldaprc": "ldapconf",
+  ".ldaprc": "ldapconf",
+  "ldap.conf": "ldapconf",
+  # Luadoc, Ldoc (must be before *.ld)
+  "config.ld": "lua",
+  # lf configuration (lfrc)
+  "lfrc": "lf",
+  # Lilo: Linux loader
+  "lilo.conf": "lilo",
+  # SBCL implementation of Common Lisp
+  "sbclrc": "lisp",
+  ".sbclrc": "lisp",
+  # Luau config
+  ".luaurc": "jsonc",
+  # Luacheck
+  ".luacheckrc": "lua",
+  # Mailcap configuration file
+  ".mailcap": "mailcap",
+  "mailcap": "mailcap",
+  # Meson Build system config
+  "meson.build": "meson",
+  "meson.options": "meson",
+  "meson_options.txt": "meson",
+  # msmtp
+  ".msmtprc": "msmtp",
+  # Mrxvtrc
+  "mrxvtrc": "mrxvtrc",
+  ".mrxvtrc": "mrxvtrc",
+  # Noemutt setup file
+  "Neomuttrc": "neomuttrc",
+  # Netrc
+  ".netrc": "netrc",
+  # NPM RC file
+  "npmrc": "dosini",
+  ".npmrc": "dosini",
+  # ondir
+  ".ondirrc": "ondir",
+  # OpenAL Soft config files
+  ".alsoftrc": "dosini",
+  "alsoft.conf": "dosini",
+  "alsoft.ini": "dosini",
+  "alsoftrc.sample": "dosini",
+  # Packet filter conf
+  "pf.conf": "pf",
+  # ini style config files, using # comments
+  "pacman.conf": "confini",
+  "mpv.conf": "confini",
+  # Pam environment
+  "pam_env.conf": "pamenv",
+  ".pam_environment": "pamenv",
+  # Perl Reply
+  ".replyrc": "dosini",
+  # Pine config
+  ".pinerc": "pine",
+  "pinerc": "pine",
+  ".pinercex": "pine",
+  "pinercex": "pine",
+  # Pip requirements
+  "requirements.txt": "requirements",
+  # Pipenv Pipfiles
+  "Pipfile": "toml",
+  "Pipfile.lock": "json",
+  # Pixi lock
+  "pixi.lock": "yaml",
+  # Postfix main config
+  "main.cf": "pfmain",
+  "main.cf.proto": "pfmain",
+  # Povray configuration
+  ".povrayrc": "povini",
+  # Puppet
+  "Puppetfile": "ruby",
+  # Procmail
+  ".procmail": "procmail",
+  ".procmailrc": "procmail",
+  # PyPA manifest files
+  "MANIFEST.in": "pymanifest",
+  # QMLdir
+  "qmldir": "qmldir",
+  # Ratpoison config/command files
+  ".ratpoisonrc": "ratpoison",
+  "ratpoisonrc": "ratpoison",
+  # Readline
+  ".inputrc": "readline",
+  "inputrc": "readline",
+  # R profile file
+  ".Rhistory": "r",
+  ".Rprofile": "r",
+  "Rprofile": "r",
+  "Rprofile.site": "r",
+  # Resolv.conf
+  "resolv.conf": "resolv",
+  # Robots.txt
+  "robots.txt": "robots",
+  # Interactive Ruby shell
+  ".irbrc": "ruby",
+  "irbrc": "ruby",
+  ".irb_history": "ruby",
+  "irb_history": "ruby",
+  # Bundler
+  "Gemfile": "ruby",
+  # Samba config
+  "smb.conf": "samba",
+  # Sendmail
+  "sendmail.cf": "sm",
+  # SGML catalog file
+  "catalog": "catalog",
+  # Alpine Linux APKBUILDs are actually POSIX sh scripts with special 
treatment.
+  "APKBUILD": "apkbuild",
+  # Screen RC
+  ".screenrc": "screen",
+  "screenrc": "screen",
+  # SLRN
+  ".slrnrc": "slrnrc",
+  # Squid
+  "squid.conf": "squid",
+  # OpenSSH server configuration
+  "sshd_config": "sshdconfig",
+  # Tags
+  "tags": "tags",
+  # Xilinx's xsct and xsdb use tcl
+  ".xsctcmdhistory": "tcl",
+  ".xsdbcmdhistory": "tcl",
+  # TeX configuration
+  "texmf.cnf": "texmf",
+  # Tidy config
+  ".tidyrc": "tidy",
+  "tidyrc": "tidy",
+  "tidy.conf": "tidy",
+  # TF (TinyFugue) mud client
+  ".tfrc": "tf",
+  "tfrc": "tf",
+  # Trustees
+  "trustees.conf": "trustees",
+  # Vagrant (uses Ruby syntax)
+  "Vagrantfile": "ruby",
+  # Viminfo file
+  ".viminfo": "viminfo",
+  "_viminfo": "viminfo",
+  # Vgrindefs file
+  "vgrindefs": "vgrindefs",
+  # Wget config
+  ".wgetrc": "wget",
+  "wgetrc": "wget",
+  # Wget2 config
+  ".wget2rc": "wget2",
+  "wget2rc": "wget2",
+  # WvDial
+  "wvdial.conf": "wvdial",
+  ".wvdialrc": "wvdial",
+  # CVS RC file
+  ".cvsrc": "cvsrc",
+  # X11vnc
+  ".x11vncrc": "conf",
+  # Xprofile
+  ".xprofile": "sh",
+  # X compose file
+  ".XCompose": "xcompose",
+  "Compose": "xcompose",
+  # MSBUILD configuration files are also XML
+  "Directory.Packages.props": "xml",
+  "Directory.Build.targets": "xml",
+  "Directory.Build.props": "xml",
+  # ATI graphics driver configuration
+  "fglrxrc": "xml",
+  # Nfs
+  "nfs.conf": "dosini",
+  "nfsmount.conf": "dosini",
+  # Yarn lock
+  "yarn.lock": "yaml",
+  # Zathurarc
+  "zathurarc": "zathurarc",
+}
+
 # Uncomment this line to check for compilation errors early
 # defcompile
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 688e783f0..9a6febdb2 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,9 +1,13 @@
 " Vim support file to detect file types
 "
 " Maintainer:          The Vim Project <https://github.com/vim/vim>
-" Last Change:         2025 Oct 05
+" Last Change:         2025 Oct 09
 " Former Maintainer:   Bram Moolenaar <[email protected]>
 
+" If the filetype can be detected from extension or file name(the final path 
component),
+" please update `ft_from_name` and `ft_from_ext` in 
`runtime/autoload/dist/ft.vim`.
+" Otherwise add a new autocmd in this file.
+
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
   finish
@@ -57,108 +61,36 @@ au BufNewFile,BufRead */doc/*.txt
        \|   setf help
        \| endif
 
+" Detect by name
+au BufNewFile,BufRead *                                call 
dist#ft#DetectFromName()
+
 " Abaqus or Trasys
 au BufNewFile,BufRead *.inp                    call dist#ft#Check_inp()
 
-" 8th (Firth-derivative)
-au BufNewFile,BufRead *.8th                    setf 8th
-
-" A-A-P recipe
-au BufNewFile,BufRead *.aap                    setf aap
-
 " A2ps printing utility
 au BufNewFile,BufRead */etc/a2ps.cfg,*/etc/a2ps/*.cfg,a2psrc,.a2psrc setf a2ps
 
-" ABAB/4
-au BufNewFile,BufRead *.abap                   setf abap
-
-" ABC music notation
-au BufNewFile,BufRead *.abc                    setf abc
-
-" ABEL
-au BufNewFile,BufRead *.abl                    setf abel
-
-" ABNF
-au BufNewFile,BufRead *.abnf                   setf abnf
-
-" AceDB
-au BufNewFile,BufRead *.wrm                    setf acedb
-
 " Ada (83, 9X, 95)
-au BufNewFile,BufRead *.adb,*.ads,*.ada                setf ada
 if has("vms")
   au BufNewFile,BufRead *.gpr,*.ada_m,*.adc    setf ada
 else
   au BufNewFile,BufRead *.gpr                  setf ada
 endif
 
-" AHDL
-au BufNewFile,BufRead *.tdf                    setf ahdl
-
-" AIDL
-au BufNewFile,BufRead *.aidl                   setf aidl
-
-" AMPL
-au BufNewFile,BufRead *.run                    setf ampl
-
-" Ant
-au BufNewFile,BufRead build.xml                        setf ant
-
-" ANTLR / PCCTS
-"au BufNewFile,BufRead *.g                     setf antlr
-au BufNewFile,BufRead *.g                      setf pccts
-
-" ANTLR 4
-au BufNewFile,BufRead *.g4                     setf antlr4
-
-" Arduino
-au BufNewFile,BufRead *.ino,*.pde              setf arduino
-
-" Ash of busybox
-au BufNewFile,BufRead .ash_history             setf sh
-
-" Asymptote
-au BufNewFile,BufRead *.asy            setf asy
-
 " Apache config file
 au BufNewFile,BufRead .htaccess,*/etc/httpd/*.conf             setf apache
 au BufNewFile,BufRead */etc/apache2/sites-*/*.com              setf apache
 
-" XA65 MOS6510 cross assembler
-au BufNewFile,BufRead *.a65                    setf a65
-
-" Applescript
-au BufNewFile,BufRead *.scpt                   setf applescript
-
-" Automake (must be before the *.am pattern)
-au BufNewFile,BufRead [mM]akefile.am,GNUmakefile.am    setf automake
-
-" Applix ELF
-au BufNewFile,BufRead *.am                     setf elf
-
 " ALSA configuration
 au BufNewFile,BufRead .asoundrc,*/usr/share/alsa/alsa.conf,*/etc/asound.conf 
setf alsaconf
 
-" Arc Macro Language
-au BufNewFile,BufRead *.aml                    setf aml
-
 " APT config file
-au BufNewFile,BufRead apt.conf                setf aptconf
 au BufNewFile,BufRead */.aptitude/config       setf aptconf
 " more generic pattern far down
 
 " Arch Inventory file
 au BufNewFile,BufRead .arch-inventory,=tagging-method  setf arch
 
-" ART*Enterprise (formerly ART-IM)
-au BufNewFile,BufRead *.art                    setf art
-
-" AsciiDoc
-au BufNewFile,BufRead *.asciidoc,*.adoc                setf asciidoc
-
-" ASN.1
-au BufNewFile,BufRead *.asn,*.asn1             setf asn
-
 " Active Server Pages (with Visual Basic Script)
 au BufNewFile,BufRead *.asa
        \ if exists("g:filetype_asa") |
@@ -192,60 +124,11 @@ au BufNewFile,BufRead 
*.demo,*.dm{1,2,3,t},*.wxm,maxima-init.mac setf maxima
 " *.[sS], *.[aA] usually Assembly - GNU
 au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst  call dist#ft#FTasm()
 
-" Assembly - Netwide
-au BufNewFile,BufRead *.nasm                   setf nasm
-
-" Assembly - Microsoft
-au BufNewFile,BufRead *.masm                   setf masm
-
-" Assembly - Macro (VAX)
-au BufNewFile,BufRead *.mar                    setf vmasm
-
-" Astro
-au BufNewFile,BufRead *.astro                  setf astro
-
-" Atlas
-au BufNewFile,BufRead *.atl,*.as               setf atlas
-
-" Atom is based on XML
-au BufNewFile,BufRead *.atom                   setf xml
-
-" Authzed
-au BufNewFile,BufRead *.zed                    setf authzed
-
-" Autoit v3
-au BufNewFile,BufRead *.au3                    setf autoit
-
-" Autohotkey
-au BufNewFile,BufRead *.ahk                    setf autohotkey
-
-" Autotest .at files are actually Autoconf M4
-au BufNewFile,BufRead *.at                     setf config
-
-" Avenue
-au BufNewFile,BufRead *.ave                    setf ave
-
-" Awk
-au BufNewFile,BufRead *.awk,*.gawk             setf awk
-
-" B
-au BufNewFile,BufRead *.mch,*.ref,*.imp                setf b
-
 " BASIC or Visual Basic
 au BufNewFile,BufRead *.bas                    call dist#ft#FTbas()
 au BufNewFile,BufRead *.bi,*.bm                        call dist#ft#FTbas()
 
-" Bass
-au BufNewFile,BufRead *.bass                   setf bass
-
-" IBasic file (similar to QBasic)
-au BufNewFile,BufRead *.iba,*.ibi              setf ibasic
-
-" FreeBasic file (similar to QBasic)
-au BufNewFile,BufRead *.fb                     setf freebasic
-
 " Batch file for MSDOS. See dist#ft#FTsys for *.sys
-au BufNewFile,BufRead *.bat                    setf dosbatch
 " *.cmd is close to a Batch file, but on OS/2 Rexx files and TI linker command 
files also use *.cmd.
 " lnk: `/* comment */`, `// comment`, and `--linker-option=value`
 " rexx: `/* comment */`, `-- comment`
@@ -270,67 +153,29 @@ endif
 " Batch file for 4DOS
 au BufNewFile,BufRead *.btm                    call dist#ft#FTbtm()
 
-" BC calculator
-au BufNewFile,BufRead *.bc                     setf bc
-
-" BDF font
-au BufNewFile,BufRead *.bdf                    setf bdf
-
-" Beancount
-au BufNewFile,BufRead *.beancount              setf beancount
-
-" BibTeX bibliography database file
-au BufNewFile,BufRead *.bib                    setf bib
-
-" BibTeX Bibliography Style
-au BufNewFile,BufRead *.bst                    setf bst
-
-" Bicep
-au BufNewFile,BufRead *.bicep,*.bicepparam                     setf bicep
-
 " BIND configuration
 " sudoedit uses namedXXXX.conf
 au BufNewFile,BufRead named*.conf,rndc*.conf,rndc*.key setf named
 
 " BIND zone
-au BufNewFile,BufRead named.root               setf bindzone
-au BufNewFile,BufRead *.zone                   setf bindzone
 au BufNewFile,BufRead *.db                     call dist#ft#BindzoneCheck('')
 
 " Blade
 au BufNewFile,BufRead *.blade.php              setf blade
 
-" Blank
-au BufNewFile,BufRead *.bl                     setf blank
-
 " Bitbake
 au BufNewFile,BufRead 
*.bb,*.bbappend,*.bbclass,*/build/conf/*.conf,*/meta{-*,}/conf/*.conf,*/project-spec/configs/*.conf
      setf bitbake
 
 " Blkid cache file
 au BufNewFile,BufRead */etc/blkid.tab,*/etc/blkid.tab.old   setf xml
 
-" Brighterscript
-au BufNewFile,BufRead *.bs                     setf brighterscript
-
-" Brightscript
-au BufNewFile,BufRead *.brs                    setf brightscript
-
-" BSDL
-au BufNewFile,BufRead *.bsd,*.bsdl                     setf bsdl
-
 " Bazel (https://bazel.build) and Buck2 (https://buck2.build/)
-autocmd BufRead,BufNewFile *.bzl,*.bxl,*.bazel,WORKSPACE,WORKSPACE.bzlmod      
setf bzl
+au BufNewFile,BufRead *.bzl,*.bxl,*.bazel,WORKSPACE,WORKSPACE.bzlmod   setf bzl
 if has("fname_case")
   " There is another check for BUILD and BUCK further below.
-  autocmd BufRead,BufNewFile *.BUILD,BUILD,BUCK                setf bzl
+  au BufNewFile,BufRead *.BUILD,BUILD,BUCK             setf bzl
 endif
 
-" Busted (Lua unit testing framework - configuration files)
-au BufNewFile,BufRead .busted                  setf lua
-
-" Bun history
-au BufNewFile,BufRead .bun_repl_history                setf javascript
-
 " Bundle config
 au BufNewFile,BufRead */.bundle/config                 setf yaml
 
@@ -338,38 +183,11 @@ au BufNewFile,BufRead */.bundle/config                    
setf yaml
 au BufNewFile,BufRead *.c                      call dist#ft#FTlpc()
 au BufNewFile,BufRead *.lpc,*.ulpc             setf lpc
 
-" C3
-au BufNewFile,BufRead *.c3,*.c3i,*.c3t         setf c3
-
-" Cairo
-au BufNewFile,BufRead *.cairo                  setf cairo
-
-" Calendar
-au BufNewFile,BufRead calendar                 setf calendar
-
-" Cap'n Proto
-au BufNewFile,BufRead *.capnp                  setf capnp
-
-" Cgdb config file
-au BufNewFile,BufRead cgdbrc                   setf cgdbrc
-
 " m17n database files. */m17n/* matches installed files, */.m17n.d/* matches
 " per-user config files, */m17n-db/* matches the git repo. (must be before
 " *.cs)
 au BufNewFile,BufRead 
*/{m17n,.m17n.d,m17n-db}/*.{ali,cs,dir,flt,fst,lnm,mic,mim,tbl} setf m17ndb
 
-" C#
-au BufNewFile,BufRead *.cs,*.csx,*.cake                setf cs
-
-" CSDL
-au BufNewFile,BufRead *.csdl                   setf csdl
-
-" Ctags
-au BufNewFile,BufRead *.ctags                  setf conf
-
-" Cabal
-au BufNewFile,BufRead *.cabal                  setf cabal
-
 " Cdrdao TOC or LaTeX  ableofcontents files
 au BufNewFile,BufRead *.toc
        \ if getline(1) =~# '\contentsline' |setf tex|else|setf cdrtoc|endif
@@ -377,51 +195,12 @@ au BufNewFile,BufRead *.toc
 " Cdrdao config
 au BufNewFile,BufRead 
*/etc/cdrdao.conf,*/etc/defaults/cdrdao,*/etc/default/cdrdao,.cdrdao     setf 
cdrdaoconf
 
-" Cedar
-au BufNewFile,BufRead *.cedar                  setf cedar
-
-" Cfengine
-au BufNewFile,BufRead cfengine.conf            setf cfengine
-
-" ChaiScript
-au BufRead,BufNewFile *.chai                   setf chaiscript
-
-" Chatito
-au BufNewFile,BufRead *.chatito                        setf chatito
-
-" Chktex
-au BufRead,BufNewFile .chktexrc                        setf conf
-
-" Chuck
-au BufNewFile,BufRead *.ck                     setf chuck
-
-" Comshare Dimension Definition Language
-au BufNewFile,BufRead *.cdl                    setf cdl
-
-" Codeowners
-au BufNewFile,BufRead CODEOWNERS               setf codeowners
-
-" Conary Recipe
-au BufNewFile,BufRead *.recipe                 setf conaryrecipe
-
 " Containers config files
 au BufNewFile,BufRead */containers/containers.conf{,.d/*.conf}         setf 
toml
 au BufNewFile,BufRead */containers/containers.conf.modules/*.conf      setf 
toml
 au BufNewFile,BufRead */containers/registries.conf{,.d/*.conf}         setf 
toml
 au BufNewFile,BufRead */containers/storage.conf                                
setf toml
 
-" Corn config file
-au BufNewFile,BufRead *.corn                   setf corn
-
-" ChainPack Object Notation (CPON)
-au BufNewFile,BufRead *.cpon                   setf cpon
-
-" Controllable Regex Mutilator
-au BufNewFile,BufRead *.crm                    setf crm
-
-" Cyn++
-au BufNewFile,BufRead *.cyn                    setf cynpp
-
 " Cynlib
 " .cc and .cpp files can be C++ or Cynlib.
 au BufNewFile,BufRead *.cc
@@ -429,38 +208,15 @@ au BufNewFile,BufRead *.cc
 au BufNewFile,BufRead *.cpp
        \ if exists("cynlib_syntax_for_cpp")|setf cynlib|else|setf cpp|endif
 
-" Cypher query language
-au BufNewFile,BufRead *.cypher                 setf cypher
-
 " C++
-au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.ipp,*.moc,*.tcc,*.inl 
setf cpp
 if has("fname_case")
        au BufNewFile,BufRead *.C,*.H if !&fileignorecase | setf cpp | endif
 endif
 
-" MS files (ixx: C++ module interface file, Microsoft Project file)
-au BufNewFile,BufRead *.ixx,*.mpp setf cpp
-
-" C++ 20 modules (clang)
-" 
https://clang.llvm.org/docs/StandardCPlusPlusModules.html#file-name-requirement
-au BufNewFile,BufRead *.cppm,*.ccm,*.cxxm,*.c++m setf cpp
-
 " .h files can be C, C++, Ch, Objective-C, or Objective-C++.
 " Set g_filetype_h to set a different filetype
 au BufNewFile,BufRead *.h                      call dist#ft#FTheader()
 
-" Ch (CHscript)
-au BufNewFile,BufRead *.chf                    setf ch
-
-" TLH files are C++ headers generated by Visual C++'s #import from typelibs
-au BufNewFile,BufRead *.tlh                    setf cpp
-
-" Cascading Style Sheets
-au BufNewFile,BufRead *.css                    setf css
-
-" Century Term Command Scripts (*.cmd too)
-au BufNewFile,BufRead *.con                    setf cterm
-
 " Changelog
 au BufNewFile,BufRead 
changelog.Debian,changelog.dch,NEWS.Debian,NEWS.dch,*/debian/changelog
                                        \       setf debchangelog
@@ -483,57 +239,32 @@ au BufNewFile,BufRead *..ch                       setf 
chill
 " Changes for WEB and CWEB or CHILL
 au BufNewFile,BufRead *.ch                     call dist#ft#FTchange()
 
-" ChordPro
-au BufNewFile,BufRead *.chopro,*.crd,*.cho,*.crdpro,*.chordpro setf chordpro
-
-" Clangd
-au BufNewFile,BufRead .clangd                  setf yaml
-
 " Clang-format
 au BufNewFile,BufRead .clang-format            setf yaml
 
 " Clang-tidy
 au BufNewFile,BufRead .clang-tidy              setf yaml
 
-" Conda configuration file
-au BufNewFile,BufRead .condarc,condarc         setf yaml
-
 " Matplotlib
 au BufNewFile,BufRead *.mplstyle,matplotlibrc  setf yaml
 
-" Clean
-au BufNewFile,BufRead *.dcl,*.icl              setf clean
-
-" Clever
-au BufNewFile,BufRead *.eni                    setf cl
-
 " Clever or dtd
 au BufNewFile,BufRead *.ent                    call dist#ft#FTent()
 
-" Cling
-au BufNewFile,BufRead .cling_history           setf cpp
-
 " Clipper, FoxPro, ABB RAPID or eviews
 au BufNewFile,BufRead *.prg                    call dist#ft#FTprg()
 if has("fname_case")
   au BufNewFile,BufRead *.Prg,*.PRG                    call dist#ft#FTprg()
 endif
 
-" Clojure
-au BufNewFile,BufRead *.clj,*.cljs,*.cljx,*.cljc               setf clojure
-
 " Cmake
 au BufNewFile,BufRead CMakeLists.txt,*.cmake,*.cmake.in                setf 
cmake
 
-" CmakeCache
-autocmd BufRead,BufNewFile CMakeCache.txt                      setf cmakecache
-
 " Cmusrc
 au BufNewFile,BufRead */.cmus/{autosave,rc,command-history,*.theme} setf cmusrc
 au BufNewFile,BufRead */cmus/{rc,*.theme}                      setf cmusrc
 
 " Cobol
-au BufNewFile,BufRead *.cbl,*.cob      setf cobol
 "   cobol or zope form controller python script? (heuristic)
 au BufNewFile,BufRead *.cpy
        \ if getline(1) =~ '^##' |
@@ -542,49 +273,10 @@ au BufNewFile,BufRead *.cpy
        \   setf cobol |
        \ endif
 
-" Coco/R
-au BufNewFile,BufRead *.atg                    setf coco
-
-" Cold Fusion
-au BufNewFile,BufRead *.cfm,*.cfi,*.cfc                setf cf
-
-" Configure scripts
-au BufNewFile,BufRead configure.in,configure.ac setf config
-
-" Cooklang
-au BufNewFile,BufRead *.cook                   setf cook
-
-" Clinical Quality Language (CQL)
-" .cql is also mentioned as the 'XDCC Catcher queue list' file extension.
-" If support for XDCC Catcher is needed in the future, the contents of the file
-" needs to be inspected.
-au BufNewFile,BufRead *.cql                    setf cqlang
-
-" Crystal
-au BufNewFile,BufRead *.cr                     setf crystal
-
-" CSV Files
-au BufNewFile,BufRead *.csv                    setf csv
-
-" CUDA Compute Unified Device Architecture
-au BufNewFile,BufRead *.cu,*.cuh               setf cuda
-
-" Cue
-au BufNewFile,BufRead *.cue                    setf cue
-
-" DAX
-au BufNewFile,BufRead *.dax                    setf dax
-
-" Debian devscripts
-au BufNewFile,BufRead devscripts.conf,.devscripts      setf sh
-
 " Dockerfile; Podman uses the same syntax with name Containerfile
 " Also see Dockerfile.* below.
 au BufNewFile,BufRead Containerfile,Dockerfile,dockerfile,*.[dD]ockerfile      
setf dockerfile
 
-" WildPackets EtherPeek Decoder
-au BufNewFile,BufRead *.dcd                    setf dcd
-
 " Enlightenment configuration files
 au BufNewFile,BufRead *enlightenment/*.cfg     setf c
 
@@ -595,11 +287,8 @@ au BufNewFile,BufRead *Eterm/*.cfg         setf eterm
 au BufNewFile,BufRead *.ex call dist#ft#ExCheck()
 
 " Elixir
-au BufRead,BufNewFile mix.lock,*.exs setf elixir
-au BufRead,BufNewFile *.eex,*.leex setf eelixir
-
-" Elvish
-au BufRead,BufNewFile *.elv setf elvish
+au BufNewFile,BufRead mix.lock,*.exs setf elixir
+au BufNewFile,BufRead *.eex,*.leex setf eelixir
 
 " Euphoria 3 or 4
 au BufNewFile,BufRead *.eu,*.ew,*.exu,*.exw  call dist#ft#EuphoriaCheck()
@@ -610,47 +299,19 @@ endif
 " Execline (s6) scripts
 au BufNewFile,BufRead *s6*/\(up\|down\|run\|finish\)    setf execline
 
-" Fontconfig config files
-au BufNewFile,BufRead fonts.conf                       setf xml
-
 " Faust
-au BufNewFile,BufRead *.lib                            setf faust
 au BufNewFile,BufRead *.dsp                            call dist#ft#FTdsp()
 
-" Libreoffice config files
-au BufNewFile,BufRead *.xcu,*.xlb,*.xlc,*.xba          setf xml
-au BufNewFile,BufRead psprint.conf,sofficerc           setf dosini
-
-" Libtool files
-au BufNewFile,BufRead *.lo,*.la,*.lai          setf sh
-
-" Lynx config files
-au BufNewFile,BufRead lynx.cfg                 setf lynx
-
-" LyRiCs
-au BufNewFile,BufRead *.lrc                    setf lyrics
-
-" Mamba configuration file
-au BufNewFile,BufRead .mambarc,mambarc         setf yaml
-
-" MLIR
-au BufNewFile,BufRead *.mlir                   setf mlir
-
 " Modula-3 configuration language (must be before *.cfg and *makefile)
 au BufNewFile,BufRead *.quake,cm3.cfg          setf m3quake
 au BufNewFile,BufRead m3makefile,m3overrides   setf m3build
 
-" XDG mimeapps.list
-au BufNewFile,BufRead mimeapps.list    setf dosini
-
 " Many tools written in Python use dosini as their config
 " like setuptools, pudb, coverage, pypi, gitlint, oelint-adv, pylint, bpython, 
mypy
 " (must be before *.cfg)
-au BufNewFile,BufRead 
pip.conf,setup.cfg,pudb.cfg,.coveragerc,.pypirc,.gitlint,.oelint.cfg     setf 
dosini
 au BufNewFile,BufRead {.,}pylintrc,*/bpython/config,*/mypy/config              
        setf dosini
 
 " Many tools written in Python use toml as their config, like black
-au BufNewFile,BufRead .black   setf toml
 au BufNewFile,BufRead black
        \  if getline(1) =~ 'tool.back'
        \|   setf toml
@@ -663,39 +324,17 @@ au BufNewFile,BufRead */{lxqt,screengrab}/*.conf  setf 
dosini
 au BufNewFile,BufRead *baseq[2-3]/*.cfg,*id1/*.cfg     setf quake
 au BufNewFile,BufRead *quake[1-3]/*.cfg                        setf quake
 
-" Quake C
-au BufNewFile,BufRead *.qc                     setf c
-
 " LaTeX packages use LaTeX as their configuration, such as:
 " ~/.texlive/texmf-config/tex/latex/hyperref/hyperref.cfg
 " ~/.texlive/texmf-config/tex/latex/docstrip/docstrip.cfg
 au BufNewFile,BufRead */tex/latex/**.cfg               setf tex
 
-" Wakatime config
-au BufNewFile,BufRead .wakatime.cfg            setf dosini
-
 " Configure files
 au BufNewFile,BufRead *.cfg                    call dist#ft#FTcfg()
 if has("fname_case")
   au BufNewFile,BufRead *.Cfg,*.CFG                    call dist#ft#FTcfg()
 endif
 
-" Cucumber
-au BufNewFile,BufRead *.feature                        setf cucumber
-
-" Communicating Sequential Processes
-au BufNewFile,BufRead *.csp,*.fdr              setf csp
-
-" CUPL logic description and simulation
-au BufNewFile,BufRead *.pld                    setf cupl
-au BufNewFile,BufRead *.si                     setf cuplsim
-
-" Dafny
-au BufNewFile,BufRead *.dfy                    setf dafny
-
-" Dart
-au BufRead,BufNewfile *.dart,*.drt             setf dart
-
 " Debian autopkgtest
 au BufNewFile,BufRead */debian/tests/control   setf autopkgtest
 
@@ -720,31 +359,13 @@ au BufNewFile,BufRead */etc/apt/sources.list              
setf debsources
 au BufNewFile,BufRead */etc/apt/sources.list.d/*.list  setf debsources
 au BufNewFile,BufRead */etc/apt/sources.list.d/*.sources       setf 
deb822sources
 
-" Deno history
-au BufNewFile,BufRead deno_history.txt         setf javascript
-
-" Deny hosts
-au BufNewFile,BufRead denyhosts.conf           setf denyhosts
-
-" Dhall
-au BufNewFile,BufRead *.dhall                  setf dhall
-
 " dnsmasq(8) configuration files
 au BufNewFile,BufRead */etc/dnsmasq.conf       setf dnsmasq
 
-" ROCKLinux package description
-au BufNewFile,BufRead *.desc                   setf desc
-
 " the D language or dtrace
 au BufNewFile,BufRead */dtrace/*.d             setf dtrace
 au BufNewFile,BufRead *.d                      call dist#ft#DtraceCheck()
 
-" Desktop files
-au BufNewFile,BufRead *.desktop,*.directory    setf desktop
-
-" Dict config
-au BufNewFile,BufRead dict.conf,.dictrc                setf dictconf
-
 " Dictd config
 au BufNewFile,BufRead dictd*.conf              setf dictdconf
 
@@ -752,7 +373,6 @@ au BufNewFile,BufRead dictd*.conf           setf dictdconf
 au BufNewFile,BufRead */debian/patches/*       call dist#ft#Dep3patch()
 
 " Diff files
-au BufNewFile,BufRead *.diff,*.rej             setf diff
 au BufNewFile,BufRead *.patch
        \ if getline(1) =~# '^From [0-9a-f]\{40,\} Mon Sep 17 00:00:00 2001$' |
        \   setf gitsendemail |
@@ -774,21 +394,9 @@ au BufNewFile,BufRead *.rul
 " DCL (Digital Command Language - vms) or DNS zone file
 au BufNewFile,BufRead *.com                    call 
dist#ft#BindzoneCheck('dcl')
 
-" DOT
-au BufNewFile,BufRead *.dot,*.gv               setf dot
-
 " Dune
 au BufNewFile,BufRead jbuild,dune,dune-project,dune-workspace,dune-file setf 
dune
 
-" Dylan - lid files
-au BufNewFile,BufRead *.lid                    setf dylanlid
-
-" Dylan - intr files (melange)
-au BufNewFile,BufRead *.intr                   setf dylanintr
-
-" Dylan
-au BufNewFile,BufRead *.dylan                  setf dylan
-
 " Microsoft Module Definition or Modula-2
 au BufNewFile,BufRead *.def                    call dist#ft#FTdef()
 
@@ -796,12 +404,6 @@ if has("fname_case")
   au BufNewFile,BufRead *.DEF                  setf modula2
 endif
 
-" Dracula
-au BufNewFile,BufRead *.drac,*.drc,*.lvs,*.lpe setf dracula
-
-" Datascript
-au BufNewFile,BufRead *.ds                     setf datascript
-
 " dsl: DSSSL or Structurizr
 au BufNewFile,BufRead *.dsl
        \ if getline(1) =~ '^\s*<\!' |
@@ -810,19 +412,6 @@ au BufNewFile,BufRead *.dsl
        \   setf structurizr |
        \ endif
 
-" DTD (Document Type Definition for XML)
-au BufNewFile,BufRead *.dtd                    setf dtd
-
-" Devicetree (.its for U-Boot Flattened Image Trees, .keymap for ZMK keymap, 
and
-" .overlay for Zephyr overlay)
-au BufNewFile,BufRead *.dts,*.dtsi,*.dtso      setf dts
-au BufNewFile,BufRead *.its                    setf dts
-au BufNewFile,BufRead *.keymap                 setf dts
-au BufNewFile,BufRead *.overlay                        setf dts
-
-" Earthfile
-au BufNewFile,BufRead Earthfile                        setf earthfile
-
 " EDIF (*.edf,*.edif,*.edn,*.edo) or edn
 au BufNewFile,BufRead *.ed\(f\|if\|o\)         setf edif
 au BufNewFile,BufRead *.edn
@@ -832,97 +421,21 @@ au BufNewFile,BufRead *.edn
        \   setf clojure |
        \ endif
 
-" EditorConfig
-au BufNewFile,BufRead .editorconfig            setf editorconfig
-
-" Embedix Component Description
-au BufNewFile,BufRead *.ecd                    setf ecd
-
 " Eiffel or Specman or Euphoria
 au BufNewFile,BufRead *.e,*.E                  call dist#ft#FTe()
 
-" Elinks configuration
-au BufNewFile,BufRead elinks.conf              setf elinks
-
-" ERicsson LANGuage; Yaws is erlang too
-au BufNewFile,BufRead *.erl,*.hrl,*.yaws       setf erlang
-
-" Elm
-au BufNewFile,BufRead *.elm                    setf elm
-
 " Elm Filter Rules file
 au BufNewFile,BufRead filter-rules             setf elmfilt
 
-" Elsa - https://github.com/ucsd-progsys/elsa
-au BufNewFile,BufRead *.lc                     setf elsa
-
-" EdgeDB Schema Definition Language
-au BufNewFile,BufRead *.esdl                   setf esdl
-
 " ESMTP rc file
 au BufNewFile,BufRead *esmtprc                 setf esmtprc
 
-" ESQL-C
-au BufNewFile,BufRead *.ec,*.EC                        setf esqlc
-
-" Esterel
-au BufNewFile,BufRead *.strl                   setf esterel
-
-" Essbase script
-au BufNewFile,BufRead *.csc                    setf csc
-
-" Exim
-au BufNewFile,BufRead exim.conf                        setf exim
-
-" Expect
-au BufNewFile,BufRead *.exp                    setf expect
-
-" Exports
-au BufNewFile,BufRead exports                  setf exports
-
-" Falcon
-au BufNewFile,BufRead *.fal                    setf falcon
-
-" Fantom
-au BufNewFile,BufRead *.fan,*.fwt              setf fan
-
-" Factor
-au BufNewFile,BufRead *.factor                 setf factor
-
 " Fennel
-autocmd BufRead,BufNewFile *.fnl,{,.}fennelrc  setf fennel
-
-" Fetchmail RC file
-au BufNewFile,BufRead .fetchmailrc             setf fetchmail
-
-" FGA
-au BufNewFile,BufRead *.fga                    setf fga
-
-" FIRRTL - Flexible Internal Representation for RTL
-au BufNewFile,BufRead *.fir                    setf firrtl
-
-" Fish shell
-au BufNewFile,BufRead *.fish                   setf fish
+au BufNewFile,BufRead *.fnl,{,.}fennelrc       setf fennel
 
 " Flatpak config
 au BufNewFile,BufRead */flatpak/repo/config    setf dosini
 
-" Flix
-au BufNewFile,BufRead *.flix                   setf flix
-
-" Focus Executable
-au BufNewFile,BufRead *.fex,*.focexec          setf focexec
-
-" Focus Master file (but not for auto.master)
-au BufNewFile,BufRead auto.master              setf conf
-au BufNewFile,BufRead *.mas,*.master           setf master
-
-" Forth
-au BufNewFile,BufRead *.ft,*.fth,*.4th         setf forth
-
-" Reva Forth
-au BufNewFile,BufRead *.frt                    setf reva
-
 " Fortran
 if has("fname_case")
   au BufNewFile,BufRead *.F,*.FOR,*.FPP,*.FTN,*.F77,*.F90,*.F95,*.F03,*.F08    
setf fortran
@@ -932,54 +445,16 @@ au BufNewFile,BufRead 
*.for,*.fortran,*.fpp,*.ftn,*.f77,*.f90,*.f95,*.f03,*.f08
 " Fortran or Forth
 au BufNewFile,BufRead *.f                      call dist#ft#FTf()
 
-" Framescript
-au BufNewFile,BufRead *.fsl                    setf framescript
-
-" FStab
-au BufNewFile,BufRead fstab,mtab               setf fstab
-
-" Func
-au BufNewFile,BufRead *.fc                     setf func
-
-" Fusion
-au BufRead,BufNewFile *.fusion                 setf fusion
-
 " F# or Forth
 au BufNewFile,BufRead *.fs                     call dist#ft#FTfs()
 
-" FHIR Shorthand (FSH)
-au BufNewFile,BufRead *.fsh                    setf fsh
-
-" F#
-au BufNewFile,BufRead *.fsi,*.fsx              setf fsharp
-
 " GDB command files
 au BufNewFile,BufRead 
.gdbinit,gdbinit,.cuda-gdbinit,cuda-gdbinit,.gdbearlyinit,gdbearlyinit,*.gdb    
         setf gdb
 
-" GDMO
-au BufNewFile,BufRead *.mo,*.gdmo              setf gdmo
-
-" GDscript
-au BufNewFile,BufRead *.gd                     setf gdscript
-
-" Godot resource
-au BufRead,BufNewFile *.tscn,*.tres            setf gdresource
-
-" Godot shader
-au BufRead,BufNewFile *.gdshader,*.shader      setf gdshader
-
 " Gedcom
 au BufNewFile,BufRead *.ged,lltxxxxx.txt       setf gedcom
 
-" Gemtext
-au BufNewFile,BufRead *.gmi,*.gemini           setf gemtext
-
-" Gift (Moodle)
-autocmd BufRead,BufNewFile *.gift              setf gift
-
 " Git
-au BufNewFile,BufRead COMMIT_EDITMSG,MERGE_MSG,TAG_EDITMSG     setf gitcommit
-au BufNewFile,BufRead NOTES_EDITMSG,EDIT_DESCRIPTION           setf gitcommit
 au BufNewFile,BufRead *.git/config,.gitconfig,*/etc/gitconfig  setf gitconfig
 au BufNewFile,BufRead */.config/git/config                     setf gitconfig
 au BufNewFile,BufRead *.git/config.worktree                    setf gitconfig
@@ -999,7 +474,7 @@ au BufNewFile,BufRead */.config/fd/ignore,.fdignore,.ignore 
setf gitignore
 au BufNewFile,BufRead .rgignore,.dockerignore,.containerignore setf gitignore
 au BufNewFile,BufRead .npmignore,.vscodeignore                 setf gitignore
 au BufNewFile,BufRead git-rebase-todo                          setf gitrebase
-au BufRead,BufNewFile .gitsendemail.msg.??????                 setf 
gitsendemail
+au BufNewFile,BufRead .gitsendemail.msg.??????                 setf 
gitsendemail
 au BufNewFile,BufRead *.git/*
       \ if getline(1) =~# '^\x\{40,\}\>\|^ref: ' |
       \   setf git |
@@ -1008,17 +483,6 @@ au BufNewFile,BufRead *.git/*
 " Gkrellmrc
 au BufNewFile,BufRead gkrellmrc,gkrellmrc_?    setf gkrellmrc
 
-" Gleam
-au BufNewFile,BufRead *.gleam                  setf gleam
-
-" GLSL
-" Extensions supported by Khronos reference compiler (with one exception, 
".glsl")
-" https://github.com/KhronosGroup/glslang
-au BufNewFile,BufRead 
*.vert,*.tesc,*.tese,*.glsl,*.geom,*.frag,*.comp,*.rgen,*.rmiss,*.rchit,*.rahit,*.rint,*.rcall
   setf glsl
-
-" GN (generate ninja) files
-au BufNewFile,BufRead *.gn,*.gni               setf gn
-
 " GP scripts (2.0 and onward)
 au BufNewFile,BufRead *.gp,.gprc               setf gp
 
@@ -1031,17 +495,9 @@ if !empty($GNUPGHOME)
   au BufNewFile,BufRead $GNUPGHOME/gpg.conf    setf gpg
 endif
 
-" gnash(1) configuration files
-au BufNewFile,BufRead gnashrc,.gnashrc,gnashpluginrc,.gnashpluginrc setf gnash
-
 " Gitolite
-au BufNewFile,BufRead gitolite.conf            setf gitolite
 au BufNewFile,BufRead {,.}gitolite.rc,example.gitolite.rc      setf perl
 
-" Glimmer-flavored TypeScript and JavaScript
-au BufNewFile,BufRead *.gts                    setf typescript.glimmer
-au BufNewFile,BufRead *.gjs                    setf javascript.glimmer
-
 " Gnuplot scripts
 au BufNewFile,BufRead *.gpi,*.gnuplot,.gnuplot_history setf gnuplot
 
@@ -1053,100 +509,20 @@ au BufNewFile,BufRead *.grc
        \   setf yaml |
        \ endif
 
-" Go (Google)
-au BufNewFile,BufRead *.go                     setf go
-au BufNewFile,BufRead Gopkg.lock               setf toml
-au BufRead,BufNewFile go.work                  setf gowork
-
-" GoAccess configuration
-au BufNewFile,BufRead goaccess.conf            setf goaccess
-
-" GrADS scripts
-au BufNewFile,BufRead *.gs                     setf grads
-
-" GraphQL
-au BufNewFile,BufRead *.graphql,*.graphqls,*.gql                       setf 
graphql
-
-" Gretl
-au BufNewFile,BufRead *.gretl                  setf gretl
-
 " Groovy
 au BufNewFile,BufRead *.gradle,*.groovy,Jenkinsfile            setf groovy
 
-" GNU Server Pages
-au BufNewFile,BufRead *.gsp                    setf gsp
-
 " Group file
 au BufNewFile,BufRead 
*/etc/group,*/etc/group-,*/etc/group.edit,*/etc/gshadow,*/etc/gshadow-,*/etc/gshadow.edit,*/var/backups/group.bak,*/var/backups/gshadow.bak
  setf group
 
-" GTK RC
-au BufNewFile,BufRead .gtkrc,gtkrc             setf gtkrc
-
-" GYP
-au BufNewFile,BufRead *.gyp,*.gypi             setf gyp
-
-" Hack
-au BufRead,BufNewFile *.hack,*.hackpartial                     setf hack
-
-" Haml
-au BufNewFile,BufRead *.haml                   setf haml
-
-" Hamster Classic | Playground files
-au BufNewFile,BufRead *.hsm                    setf hamster
-
-" Handlebars
-au BufNewFile,BufRead *.hbs                    setf handlebars
-
 " Hare
-au BufNewFile,BufRead *.ha                     setf hare
 au BufNewFile,BufRead README                   call dist#ft#FTharedoc()
 
 " Haskell
-au BufNewFile,BufRead *.hs,*.hsc,*.hs-boot,*.hsig setf haskell
-au BufNewFile,BufRead *.lhs                    setf lhaskell
-au BufNewFile,BufRead *.chs                    setf chaskell
-au BufNewFile,BufRead cabal.project            setf cabalproject
 au BufNewFile,BufRead */{.,}cabal/config       setf cabalconfig
 au BufNewFile,BufRead cabal.config             setf cabalconfig
 au BufNewFile,BufRead *.persistentmodels       setf haskellpersistent
 
-" Haste
-au BufNewFile,BufRead *.ht                     setf haste
-au BufNewFile,BufRead *.htpp                   setf hastepreproc
-
-" Haxe
-au BufNewFile,BufRead *.hx                     setf haxe
-
-" HCL
-au BufRead,BufNewFile *.hcl                    setf hcl
-
-" Go checksum file (must be before *.sum Hercules)
-au BufNewFile,BufRead go.sum,go.work.sum       setf gosum
-
-" Hercules
-au BufNewFile,BufRead *.vc,*.ev,*.sum,*.errsum setf hercules
-
-" HEEx
-au BufRead,BufNewFile *.heex                   setf heex
-
-" HEX (Intel)
-au BufNewFile,BufRead 
*.hex,*.ihex,*.int,*.ihe,*.ihx,*.mcs,*.h32,*.h80,*.h86,*.a43,*.a90       setf 
hex
-
-" Hjson
-au BufNewFile,BufRead *.hjson                  setf hjson
-
-" HLS Playlist (or another form of playlist)
-au BufNewFile,BufRead *.m3u,*.m3u8             setf hlsplaylist
-
-" Hollywood
-au BufRead,BufNewFile *.hws                    setf hollywood
-
-" Hoon
-au BufRead,BufNewFile *.hoon                   setf hoon
-
-" TI Code Composer Studio General Extension Language
-au BufNewFile,BufRead *.gel                    setf gel
-
 " Tilde (must be before HTML)
 au BufNewFile,BufRead *.t.html                 setf tilde
 
@@ -1157,36 +533,18 @@ au BufNewFile,BufRead 
init.trans,*/etc/translate-shell,.trans    setf clojure
 au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm  call dist#ft#FThtml()
 au BufNewFile,BufRead *.cshtml                 setf html
 
-" HTTP request files
-au BufNewFile,BufRead *.http                   setf http
-
-" HTML with Ruby - eRuby
-au BufNewFile,BufRead *.erb,*.rhtml            setf eruby
-
-" Some template.  Used to be HTML Cheetah.
-au BufNewFile,BufRead *.tmpl                   setf template
-
 " Host config
 au BufNewFile,BufRead */etc/host.conf          setf hostconf
 
 " Hosts access
 au BufNewFile,BufRead */etc/hosts.allow,*/etc/hosts.deny  setf hostsaccess
 
-" Hurl
-au BufRead,BufNewFile *.hurl                   setf hurl
-
 " Hy
-au BufRead,BufNewFile *.hy,.hy-history         setf hy
-
-" Hyper Builder
-au BufNewFile,BufRead *.hb                     setf hb
+au BufNewFile,BufRead *.hy,.hy-history         setf hy
 
 " Hyprland Configuration language
 au BufNewFile,BufRead */hypr/*.conf,hypr\(land\|paper\|idle\|lock\).conf setf 
hyprlang
 
-" Httest
-au BufNewFile,BufRead *.htt,*.htb              setf httest
-
 " i3
 au BufNewFile,BufRead */i3/config              setf i3config
 au BufNewFile,BufRead */.i3/config             setf i3config
@@ -1196,153 +554,38 @@ au BufNewFile,BufRead */sway/config             setf 
swayconfig
 au BufNewFile,BufRead */sway/config.d/*                setf swayconfig
 au BufNewFile,BufRead */.sway/config           setf swayconfig
 
-" Icon
-au BufNewFile,BufRead *.icn                    setf icon
-
 " IDL (Interface Description Language)
 au BufNewFile,BufRead *.idl                    call dist#ft#FTidl()
 
-" Microsoft IDL (Interface Description Language)  Also *.idl
-" MOF = WMI (Windows Management Instrumentation) Managed Object Format
-au BufNewFile,BufRead *.odl,*.mof              setf msidl
-
 " Icewm menu
 au BufNewFile,BufRead */.icewm/menu            setf icemenu
 
 " Indent profile (must come before IDL *.pro!)
-au BufNewFile,BufRead .indent.pro              setf indent
 au BufNewFile,BufRead indent.pro               call 
dist#ft#ProtoCheck('indent')
 
 " IDL (Interactive Data Language), Prolog, Cproto or zsh module C
 au BufNewFile,BufRead *.pro                    call 
dist#ft#ProtoCheck('idlang')
 
-" Idris2
-au BufNewFile,BufRead *.idr                    setf idris2
-au BufNewFile,BufRead *.lidr                   setf lidris2
-
-" Indent RC
-au BufNewFile,BufRead indentrc                 setf indent
-
-" Inform
-au BufNewFile,BufRead *.inf,*.INF              setf inform
-
 " Initng
 au BufNewFile,BufRead */etc/initng/*/*.i,*.ii  setf initng
 
 " Innovation Data Processing
-au BufRead,BufNewFile upstream.dat

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/vim_dev/E1v6xH3-004fAZ-9s%40256bit.org.

Raspunde prin e-mail lui