Commit: runtime(filetype): Improve filetype loading time

1 view
Skip to first unread message

Christian Brabandt

unread,
Oct 9, 2025, 4:30:16 PM (yesterday) Oct 9
to vim...@googlegroups.com
runtime(filetype): Improve filetype loading time

Commit: https://github.com/vim/vim/commit/3221a0c2f96b81a9aff40590d541fa0f51090a57
Author: bennyyip <yeb...@gmail.com>
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 <yeb...@gmail.com>
Signed-off-by: Christian Brabandt <c...@256bit.org>

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 <Br...@vim.org>

# 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 <Br...@vim.org>

+" 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
Reply all
Reply to author
Forward
0 new messages