diff --git a/package.json b/package.json index cbfd0244c4..929be88f2a 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "check:i18n": "tsx scripts/check-i18n.ts", "sync:i18n": "tsx scripts/sync-i18n.ts", "update:i18n": "dotenv -e .env -- tsx scripts/update-i18n.ts", + "update:languages": "tsx scripts/update-languages.ts", "test": "vitest run --silent", "test:main": "vitest run --project main", "test:renderer": "vitest run --project renderer", @@ -200,6 +201,7 @@ "jaison": "^2.0.2", "jest-styled-components": "^7.2.0", "jschardet": "^3.1.4", + "linguist-languages": "^8.0.0", "lint-staged": "^15.5.0", "lodash": "^4.17.21", "lru-cache": "^11.1.0", diff --git a/packages/shared/config/constant.ts b/packages/shared/config/constant.ts index 6aa276a7c0..8ee508cc35 100644 --- a/packages/shared/config/constant.ts +++ b/packages/shared/config/constant.ts @@ -1,312 +1,127 @@ +import { languages } from './languages' + export const imageExts = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp'] export const videoExts = ['.mp4', '.avi', '.mov', '.wmv', '.flv', '.mkv'] export const audioExts = ['.mp3', '.wav', '.ogg', '.flac', '.aac'] export const documentExts = ['.pdf', '.doc', '.docx', '.pptx', '.xlsx', '.odt', '.odp', '.ods'] export const thirdPartyApplicationExts = ['.draftsExport'] export const bookExts = ['.epub'] -const textExtsByCategory = new Map([ + +/** + * A flat array of all file extensions known by the linguist database. + * This is the primary source for identifying code files. + */ +const linguistExtSet = new Set() +for (const lang of Object.values(languages)) { + if (lang.extensions) { + for (const ext of lang.extensions) { + linguistExtSet.add(ext) + } + } +} +export const codeLangExts = Array.from(linguistExtSet) + +/** + * A categorized map of custom text-based file extensions that are NOT included + * in the linguist database. This is for special cases or project-specific files. + */ +export const customTextExts = new Map([ [ 'language', [ - '.js', - '.mjs', - '.cjs', - '.ts', - '.jsx', - '.tsx', // JavaScript/TypeScript - '.py', // Python - '.java', // Java - '.cs', // C# - '.cpp', - '.c', - '.h', - '.hpp', - '.cc', - '.cxx', - '.cppm', - '.ipp', - '.ixx', // C/C++ - '.php', // PHP - '.rb', // Ruby - '.pl', // Perl - '.go', // Go - '.rs', // Rust - '.swift', // Swift - '.kt', - '.kts', // Kotlin - '.scala', // Scala - '.lua', // Lua - '.groovy', // Groovy - '.dart', // Dart - '.hs', // Haskell - '.clj', - '.cljs', // Clojure - '.elm', // Elm - '.erl', // Erlang - '.ex', - '.exs', // Elixir - '.ml', - '.mli', // OCaml - '.fs', // F# - '.r', '.R', // R - '.sol', // Solidity - '.awk', // AWK - '.cob', // COBOL - '.asm', - '.s', // Assembly - '.lisp', - '.lsp', // Lisp - '.coffee', // CoffeeScript - '.ino', // Arduino - '.jl', // Julia - '.nim', // Nim - '.zig', // Zig - '.d', // D语言 - '.pas', // Pascal - '.vb', // Visual Basic - '.rkt', // Racket - '.scm', // Scheme - '.hx', // Haxe - '.as', // ActionScript - '.pde', // Processing - '.f90', - '.f', - '.f03', - '.for', - '.f95', // Fortran - '.adb', - '.ads', // Ada - '.pro', // Prolog - '.m', - '.mm', // Objective-C/MATLAB - '.rpy', // Ren'Py '.ets', // OpenHarmony, '.uniswap', // DeFi - '.vy', // Vyper - '.shader', - '.glsl', - '.frag', - '.vert', - '.gd' // Godot - ] - ], - [ - 'script', - [ - '.sh', // Shell - '.bat', - '.cmd', // Windows批处理 - '.ps1', // PowerShell - '.tcl', - '.do', // Tcl - '.ahk', // AutoHotkey - '.zsh', // Zsh - '.fish', // Fish shell - '.csh', // C shell - '.vbs', // VBScript - '.applescript', // AppleScript - '.au3', // AutoIt - '.bash', - '.nu' - ] - ], - [ - 'style', - [ - '.css', // CSS - '.less', // Less - '.scss', - '.sass', // Sass - '.styl', // Stylus - '.pcss', // PostCSS - '.postcss' // PostCSS + '.usf', // Unreal shader format + '.ush' // Unreal shader header ] ], [ 'template', [ - '.vue', // Vue.js - '.pug', - '.jade', // Pug/Jade - '.haml', // Haml - '.slim', // Slim - '.tpl', // 通用模板 - '.ejs', // EJS - '.hbs', // Handlebars - '.mustache', // Mustache - '.twig', // Twig - '.blade', // Blade (Laravel) - '.liquid', // Liquid - '.jinja', - '.jinja2', - '.j2', // Jinja - '.erb', // ERB - '.vm', // Velocity - '.ftl', // FreeMarker - '.svelte', // Svelte - '.astro' // Astro + '.vm' // Velocity ] ], [ 'config', [ - '.ini', // INI配置 + '.babelrc', // Babel + '.bashrc', + '.browserslistrc', '.conf', '.config', // 通用配置 - '.env', // 环境变量 - '.toml', // TOML - '.cfg', // 通用配置 - '.properties', // Java属性 - '.desktop', // Linux桌面文件 - '.service', // systemd服务 - '.rc', - '.bashrc', - '.zshrc', // Shell配置 - '.fishrc', // Fish shell配置 - '.vimrc', // Vim配置 - '.htaccess', // Apache配置 - '.robots', // robots.txt - '.editorconfig', // EditorConfig - '.eslintrc', // ESLint - '.prettierrc', // Prettier - '.babelrc', // Babel - '.npmrc', // npm '.dockerignore', // Docker ignore - '.npmignore', - '.yarnrc', - '.prettierignore', '.eslintignore', - '.browserslistrc', - '.json5', - '.tfvars' + '.eslintrc', // ESLint + '.fishrc', // Fish shell配置 + '.htaccess', // Apache配置 + '.npmignore', + '.npmrc', // npm + '.prettierignore', + '.prettierrc', // Prettier + '.rc', + '.robots', // robots.txt + '.yarnrc', + '.zshrc' ] ], [ 'document', [ - '.txt', - '.text', // 纯文本 - '.md', - '.mdx', // Markdown - '.html', - '.htm', - '.xhtml', // HTML - '.xml', // XML - '.fxml', // JavaFX XML - '.org', // Org-mode - '.wiki', // Wiki - '.tex', - '.bib', // LaTeX - '.rst', // reStructuredText - '.rtf', // 富文本 - '.nfo', // 信息文件 - '.adoc', - '.asciidoc', // AsciiDoc - '.pod', // Perl文档 - '.1', - '.2', - '.3', - '.4', - '.5', - '.6', - '.7', - '.8', - '.9', // man页面 - '.man', // man页面 - '.texi', - '.texinfo', // Texinfo - '.readme', - '.me', // README + '.authors', // 作者文件 '.changelog', // 变更日志 '.license', // 许可证 - '.authors', // 作者文件 - '.po', - '.pot' + '.nfo', // 信息文件 + '.readme', + '.text' // 纯文本 ] ], [ 'data', [ - '.json', // JSON - '.jsonc', // JSON with comments - '.yaml', - '.yml', // YAML - '.csv', - '.tsv', // 分隔值文件 - '.edn', // Clojure数据 - '.jsonl', - '.ndjson', // 换行分隔JSON - '.geojson', // GeoJSON - '.gpx', // GPS Exchange - '.kml', // Keyhole Markup - '.rss', '.atom', // Feed格式 - '.vcf', // vCard - '.ics', // iCalendar - '.ldif', // LDAP数据交换 - '.pbtxt', - '.map' + '.ldif', + '.map', + '.ndjson' // 换行分隔JSON ] ], [ 'build', [ - '.gradle', // Gradle - '.make', - '.mk', // Make - '.cmake', // CMake - '.sbt', // SBT - '.rake', // Rake - '.spec', // RPM spec - '.pom', + '.bazel', // Bazel '.build', // Meson - '.bazel' // Bazel + '.pom' ] ], [ 'database', [ - '.sql', // SQL - '.ddl', '.dml', // DDL/DML - '.plsql', // PL/SQL - '.psql', // PostgreSQL - '.cypher', // Cypher - '.sparql' // SPARQL + '.psql' // PostgreSQL ] ], [ 'web', [ - '.graphql', - '.gql', // GraphQL - '.proto', // Protocol Buffers - '.thrift', // Thrift - '.wsdl', // WSDL - '.raml', // RAML - '.swagger', - '.openapi' // API文档 + '.openapi', // API文档 + '.swagger' ] ], [ 'version', [ - '.gitignore', // Git ignore - '.gitattributes', // Git attributes - '.gitconfig', // Git config - '.hgignore', // Mercurial ignore '.bzrignore', // Bazaar ignore - '.svnignore', // SVN ignore - '.githistory' // Git history + '.gitattributes', // Git attributes + '.githistory', // Git history + '.hgignore', // Mercurial ignore + '.svnignore' // SVN ignore ] ], [ 'subtitle', [ - '.srt', - '.sub', - '.ass' // 字幕格式 + '.ass', // 字幕格式 + '.sub' ] ], [ @@ -319,55 +134,26 @@ const textExtsByCategory = new Map([ [ 'eda', [ - '.v', - '.sv', - '.svh', // Verilog/SystemVerilog - '.vhd', - '.vhdl', // VHDL - '.lef', + '.cir', '.def', // LEF/DEF '.edif', // EDIF - '.sdf', // SDF - '.sdc', - '.xdc', // 约束文件 - '.sp', - '.spi', - '.cir', - '.net', // SPICE - '.scs', // Spectre - '.asc', // LTspice - '.tf', // Technology File '.il', - '.ils' // SKILL - ] - ], - [ - 'game', - [ - '.mtl', // Material Template Library - '.x3d', // X3D文件 - '.gltf', // glTF JSON - '.prefab', // Unity预制体 (YAML格式) - '.meta', // Unity元数据文件 (YAML格式) - '.tscn' // Godot场景文件 - ] - ], - [ - 'other', - [ - '.mcfunction', // Minecraft函数 - '.jsp', // JSP - '.aspx', // ASP.NET - '.ipynb', // Jupyter Notebook - '.cake', - '.ctp', // CakePHP - '.cfm', - '.cfc' // ColdFusion + '.ils', // SKILL + '.lef', + '.net', + '.scs', // Spectre + '.sdf', // SDF + '.spi' ] ] ]) -export const textExts = Array.from(textExtsByCategory.values()).flat() +/** + * A comprehensive list of all text-based file extensions, combining the + * extensive list from the linguist database with our custom additions. + * The Set ensures there are no duplicates. + */ +export const textExts = [...new Set([...Array.from(customTextExts.values()).flat(), ...codeLangExts])] export const ZOOM_LEVELS = [0.25, 0.33, 0.5, 0.67, 0.75, 0.8, 0.9, 1, 1.1, 1.25, 1.5, 1.75, 2, 2.5, 3, 4, 5] diff --git a/packages/shared/config/languages.ts b/packages/shared/config/languages.ts index 4cd7d533b4..95b8cab587 100644 --- a/packages/shared/config/languages.ts +++ b/packages/shared/config/languages.ts @@ -1,5 +1,12 @@ /** - * 代码语言扩展名列表 + * Code language list. + * Data source: linguist-languages + * + * ⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️ + * THIS FILE IS AUTOMATICALLY GENERATED BY A SCRIPT. DO NOT EDIT IT MANUALLY! + * Run `yarn update:languages` to update this file. + * ⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️ + * */ type LanguageData = { @@ -9,383 +16,1046 @@ type LanguageData = { } export const languages: Record = { - 'c2hs haskell': { - extensions: ['.chs'], + '1C Enterprise': { type: 'programming', - aliases: ['c2hs'] + extensions: ['.bsl', '.os'] }, - tsql: { - extensions: ['.sql'], - type: 'programming' - }, - uno: { - extensions: ['.uno'], - type: 'programming' - }, - 'html+ecr': { - extensions: ['.ecr'], - type: 'markup', - aliases: ['ecr'] - }, - xpages: { - extensions: ['.xsp-config', '.xsp.metadata'], - type: 'data' - }, - 'module management system': { - extensions: ['.mms', '.mmk'], - type: 'programming' - }, - turing: { - extensions: ['.t', '.tu'], - type: 'programming' - }, - harbour: { - extensions: ['.hb'], - type: 'programming' - }, - sass: { - extensions: ['.sass'], - type: 'markup' - }, - cobol: { - extensions: ['.cob', '.cbl', '.ccp', '.cobol', '.cpy'], - type: 'programming' - }, - ioke: { - extensions: ['.ik'], - type: 'programming' - }, - 'standard ml': { - extensions: ['.ml', '.fun', '.sig', '.sml'], - type: 'programming', - aliases: ['sml'] - }, - less: { - extensions: ['.less'], - type: 'markup', - aliases: ['less-css'] - }, - cue: { - extensions: ['.cue'], - type: 'programming' - }, - 'q#': { - extensions: ['.qs'], - type: 'programming', - aliases: ['qsharp'] - }, - 'c#': { - extensions: ['.cs', '.cake', '.cs.pp', '.csx', '.linq'], - type: 'programming', - aliases: ['csharp', 'cake', 'cakescript'] - }, - 'closure templates': { - extensions: ['.soy'], - type: 'markup', - aliases: ['soy'] - }, - 'modula-2': { - extensions: ['.mod'], - type: 'programming' - }, - cirru: { - extensions: ['.cirru'], - type: 'programming' - }, - prisma: { - extensions: ['.prisma'], - type: 'data' - }, - xojo: { - extensions: ['.xojo_code', '.xojo_menu', '.xojo_report', '.xojo_script', '.xojo_toolbar', '.xojo_window'], - type: 'programming' - }, - 'vim script': { - extensions: ['.vim', '.vba', '.vimrc', '.vmb'], - type: 'programming', - aliases: ['vim', 'viml', 'nvim', 'vimscript'] - }, - unrealscript: { - extensions: ['.uc'], - type: 'programming' - }, - 'kicad layout': { - extensions: ['.kicad_pcb', '.kicad_mod', '.kicad_wks'], + '2-Dimensional Array': { type: 'data', - aliases: ['pcbnew'] + extensions: ['.2da'] }, - urweb: { - extensions: ['.ur', '.urs'], + '4D': { type: 'programming', - aliases: ['Ur/Web', 'Ur'] + extensions: ['.4dm'] }, - 'rpm spec': { - extensions: ['.spec'], + ABAP: { + type: 'programming', + extensions: ['.abap'] + }, + 'ABAP CDS': { + type: 'programming', + extensions: ['.asddls'] + }, + ABNF: { type: 'data', - aliases: ['specfile'] + extensions: ['.abnf'] }, - hcl: { - extensions: ['.hcl', '.nomad', '.tf', '.tfvars', '.workflow'], + ActionScript: { type: 'programming', - aliases: ['HashiCorp Configuration Language', 'terraform'] + extensions: ['.as'], + aliases: ['actionscript 3', 'actionscript3', 'as3'] }, - 'vim help file': { + Ada: { + type: 'programming', + extensions: ['.adb', '.ada', '.ads'], + aliases: ['ada95', 'ada2005'] + }, + 'Adblock Filter List': { + type: 'data', extensions: ['.txt'], - type: 'prose', - aliases: ['help', 'vimhelp'] + aliases: ['ad block filters', 'ad block', 'adb', 'adblock'] }, - 'component pascal': { - extensions: ['.cp', '.cps'], - type: 'programming' + 'Adobe Font Metrics': { + type: 'data', + extensions: ['.afm'], + aliases: ['acfm', 'adobe composite font metrics', 'adobe multiple font metrics', 'amfm'] }, - realbasic: { - extensions: ['.rbbas', '.rbfrm', '.rbmnu', '.rbres', '.rbtbar', '.rbuistate'], - type: 'programming' - }, - cil: { - extensions: ['.cil'], - type: 'data' - }, - nix: { - extensions: ['.nix'], + Agda: { type: 'programming', - aliases: ['nixos'] + extensions: ['.agda'] }, - mirah: { - extensions: ['.druby', '.duby', '.mirah'], - type: 'programming' - }, - red: { - extensions: ['.red', '.reds'], + 'AGS Script': { type: 'programming', - aliases: ['red/system'] + extensions: ['.asc', '.ash'], + aliases: ['ags'] }, - zimpl: { - extensions: ['.zimpl', '.zmpl', '.zpl'], - type: 'programming' - }, - 'world of warcraft addon data': { - extensions: ['.toc'], - type: 'data' - }, - logtalk: { - extensions: ['.lgt', '.logtalk'], - type: 'programming' - }, - 'digital command language': { - extensions: ['.com'], + AIDL: { type: 'programming', - aliases: ['dcl'] + extensions: ['.aidl'] }, - 'inno setup': { - extensions: ['.iss', '.isl'], - type: 'programming' - }, - ruby: { - extensions: [ - '.rb', - '.builder', - '.eye', - '.fcgi', - '.gemspec', - '.god', - '.jbuilder', - '.mspec', - '.pluginspec', - '.podspec', - '.prawn', - '.rabl', - '.rake', - '.rbi', - '.rbuild', - '.rbw', - '.rbx', - '.ru', - '.ruby', - '.spec', - '.thor', - '.watchr' - ], + Aiken: { type: 'programming', - aliases: ['jruby', 'macruby', 'rake', 'rb', 'rbx'] + extensions: ['.ak'] }, - sqlpl: { - extensions: ['.sql', '.db2'], - type: 'programming' + AL: { + type: 'programming', + extensions: ['.al'] }, - qmake: { - extensions: ['.pro', '.pri'], - type: 'programming' + Alloy: { + type: 'programming', + extensions: ['.als'] }, - faust: { - extensions: ['.dsp'], - type: 'programming' + 'Alpine Abuild': { + type: 'programming', + aliases: ['abuild', 'apkbuild'] }, - nextflow: { - extensions: ['.nf'], - type: 'programming' + 'Altium Designer': { + type: 'data', + extensions: ['.OutJob', '.PcbDoc', '.PrjPCB', '.SchDoc'], + aliases: ['altium'] }, - ox: { - extensions: ['.ox', '.oxh', '.oxo'], - type: 'programming' + AMPL: { + type: 'programming', + extensions: ['.ampl', '.mod'] }, - xproc: { - extensions: ['.xpl', '.xproc'], - type: 'programming' + AngelScript: { + type: 'programming', + extensions: ['.as', '.angelscript'] }, - 'directx 3d file': { - extensions: ['.x'], - type: 'data' + 'Answer Set Programming': { + type: 'programming', + extensions: ['.lp'] }, - 'jupyter notebook': { - extensions: ['.ipynb'], + Antlers: { type: 'markup', - aliases: ['IPython Notebook'] + extensions: ['.antlers.html', '.antlers.php', '.antlers.xml'] }, - jolie: { - extensions: ['.ol', '.iol'], - type: 'programming' - }, - cartocss: { - extensions: ['.mss'], + ANTLR: { type: 'programming', - aliases: ['Carto'] + extensions: ['.g4'] }, - 'ltspice symbol': { - extensions: ['.asy'], - type: 'data' + ApacheConf: { + type: 'data', + extensions: ['.apacheconf', '.vhost'], + aliases: ['aconf', 'apache'] }, - slash: { - extensions: ['.sl'], - type: 'programming' - }, - 'pure data': { - extensions: ['.pd'], - type: 'data' - }, - yang: { - extensions: ['.yang'], - type: 'data' - }, - prolog: { - extensions: ['.pl', '.plt', '.pro', '.prolog', '.yap'], - type: 'programming' - }, - 'g-code': { - extensions: ['.g', '.cnc', '.gco', '.gcode'], - type: 'programming' - }, - minid: { - extensions: ['.minid'], - type: 'programming' - }, - 'ecere projects': { - extensions: ['.epj'], - type: 'data' - }, - org: { - extensions: ['.org'], - type: 'prose' - }, - tcsh: { - extensions: ['.tcsh', '.csh'], - type: 'programming' - }, - scilab: { - extensions: ['.sci', '.sce', '.tst'], - type: 'programming' - }, - hack: { - extensions: ['.hack', '.hh', '.hhi', '.php'], - type: 'programming' - }, - coffeescript: { - extensions: ['.coffee', '._coffee', '.cake', '.cjsx', '.iced'], + Apex: { type: 'programming', - aliases: ['coffee', 'coffee-script'] + extensions: ['.cls', '.apex', '.trigger'] }, - 'visual basic .net': { - extensions: ['.vb', '.vbhtml'], + 'API Blueprint': { + type: 'markup', + extensions: ['.apib'] + }, + APL: { type: 'programming', - aliases: ['visual basic', 'vbnet', 'vb .net', 'vb.net'] + extensions: ['.apl', '.dyalog'] }, - opa: { - extensions: ['.opa'], - type: 'programming' - }, - clean: { - extensions: ['.icl', '.dcl'], - type: 'programming' - }, - batchfile: { - extensions: ['.bat', '.cmd'], + 'Apollo Guidance Computer': { type: 'programming', - aliases: ['bat', 'batch', 'dosbatch', 'winbatch'] + extensions: ['.agc'] }, - v: { - extensions: ['.v'], + AppleScript: { type: 'programming', - aliases: ['vlang'] - }, - vhdl: { - extensions: ['.vhdl', '.vhd', '.vhf', '.vhi', '.vho', '.vhs', '.vht', '.vhw'], - type: 'programming' - }, - pawn: { - extensions: ['.pwn', '.inc', '.sma'], - type: 'programming' - }, - abap: { - extensions: ['.abap'], - type: 'programming' - }, - 'public key': { - extensions: ['.asc', '.pub'], - type: 'data' - }, - svelte: { - extensions: ['.svelte'], - type: 'markup' - }, - xonsh: { - extensions: ['.xsh'], - type: 'programming' - }, - 'api blueprint': { - extensions: ['.apib'], - type: 'markup' - }, - 'glyph bitmap distribution format': { - extensions: ['.bdf'], - type: 'data' - }, - 'common lisp': { - extensions: ['.lisp', '.asd', '.cl', '.l', '.lsp', '.ny', '.podsl', '.sexp'], - type: 'programming', - aliases: ['lisp'] - }, - julia: { - extensions: ['.jl'], - type: 'programming' - }, - rmarkdown: { - extensions: ['.qmd', '.rmd'], - type: 'prose' - }, - applescript: { extensions: ['.applescript', '.scpt'], - type: 'programming', aliases: ['osascript'] }, - zap: { - extensions: ['.zap', '.xzap'], - type: 'programming' + Arc: { + type: 'programming', + extensions: ['.arc'] }, - filterscript: { - extensions: ['.fs'], - type: 'programming' + AsciiDoc: { + type: 'prose', + extensions: ['.asciidoc', '.adoc', '.asc'] }, - glsl: { + ASL: { + type: 'programming', + extensions: ['.asl', '.dsl'] + }, + 'ASN.1': { + type: 'data', + extensions: ['.asn', '.asn1'] + }, + 'ASP.NET': { + type: 'programming', + extensions: ['.asax', '.ascx', '.ashx', '.asmx', '.aspx', '.axd'], + aliases: ['aspx', 'aspx-vb'] + }, + AspectJ: { + type: 'programming', + extensions: ['.aj'] + }, + Assembly: { + type: 'programming', + extensions: ['.asm', '.a51', '.i', '.inc', '.nas', '.nasm', '.s'], + aliases: ['asm', 'nasm'] + }, + Astro: { + type: 'markup', + extensions: ['.astro'] + }, + Asymptote: { + type: 'programming', + extensions: ['.asy'] + }, + ATS: { + type: 'programming', + extensions: ['.dats', '.hats', '.sats'], + aliases: ['ats2'] + }, + Augeas: { + type: 'programming', + extensions: ['.aug'] + }, + AutoHotkey: { + type: 'programming', + extensions: ['.ahk', '.ahkl'], + aliases: ['ahk'] + }, + AutoIt: { + type: 'programming', + extensions: ['.au3'], + aliases: ['au3', 'AutoIt3', 'AutoItScript'] + }, + 'Avro IDL': { + type: 'data', + extensions: ['.avdl'] + }, + Awk: { + type: 'programming', + extensions: ['.awk', '.auk', '.gawk', '.mawk', '.nawk'] + }, + B4X: { + type: 'programming', + extensions: ['.bas'], + aliases: ['basic for android'] + }, + Ballerina: { + type: 'programming', + extensions: ['.bal'] + }, + BASIC: { + type: 'programming', + extensions: ['.bas'] + }, + Batchfile: { + type: 'programming', + extensions: ['.bat', '.cmd'], + aliases: ['bat', 'batch', 'dosbatch', 'winbatch'] + }, + Beef: { + type: 'programming', + extensions: ['.bf'] + }, + Befunge: { + type: 'programming', + extensions: ['.befunge', '.bf'] + }, + Berry: { + type: 'programming', + extensions: ['.be'], + aliases: ['be'] + }, + BibTeX: { + type: 'markup', + extensions: ['.bib', '.bibtex'] + }, + 'BibTeX Style': { + type: 'programming', + extensions: ['.bst'] + }, + Bicep: { + type: 'programming', + extensions: ['.bicep', '.bicepparam'] + }, + Bikeshed: { + type: 'markup', + extensions: ['.bs'] + }, + Bison: { + type: 'programming', + extensions: ['.bison'] + }, + BitBake: { + type: 'programming', + extensions: ['.bb', '.bbappend', '.bbclass', '.inc'] + }, + Blade: { + type: 'markup', + extensions: ['.blade', '.blade.php'] + }, + BlitzBasic: { + type: 'programming', + extensions: ['.bb', '.decls'], + aliases: ['b3d', 'blitz3d', 'blitzplus', 'bplus'] + }, + BlitzMax: { + type: 'programming', + extensions: ['.bmx'], + aliases: ['bmax'] + }, + Bluespec: { + type: 'programming', + extensions: ['.bsv'], + aliases: ['bluespec bsv', 'bsv'] + }, + 'Bluespec BH': { + type: 'programming', + extensions: ['.bs'], + aliases: ['bh', 'bluespec classic'] + }, + Boo: { + type: 'programming', + extensions: ['.boo'] + }, + Boogie: { + type: 'programming', + extensions: ['.bpl'] + }, + BQN: { + type: 'programming', + extensions: ['.bqn'] + }, + Brainfuck: { + type: 'programming', + extensions: ['.b', '.bf'] + }, + BrighterScript: { + type: 'programming', + extensions: ['.bs'] + }, + Brightscript: { + type: 'programming', + extensions: ['.brs'] + }, + BuildStream: { + type: 'data', + extensions: ['.bst'] + }, + C: { + type: 'programming', + extensions: ['.c', '.cats', '.h', '.h.in', '.idc'] + }, + 'C-ObjDump': { + type: 'data', + extensions: ['.c-objdump'] + }, + 'C#': { + type: 'programming', + extensions: ['.cs', '.cake', '.cs.pp', '.csx', '.linq'], + aliases: ['csharp', 'cake', 'cakescript'] + }, + 'C++': { + type: 'programming', + extensions: [ + '.cpp', + '.c++', + '.cc', + '.cp', + '.cppm', + '.cxx', + '.h', + '.h++', + '.hh', + '.hpp', + '.hxx', + '.inc', + '.inl', + '.ino', + '.ipp', + '.ixx', + '.re', + '.tcc', + '.tpp', + '.txx' + ], + aliases: ['cpp'] + }, + 'C2hs Haskell': { + type: 'programming', + extensions: ['.chs'], + aliases: ['c2hs'] + }, + 'Cabal Config': { + type: 'data', + extensions: ['.cabal'], + aliases: ['Cabal'] + }, + Caddyfile: { + type: 'data', + extensions: ['.caddyfile'], + aliases: ['Caddy'] + }, + Cadence: { + type: 'programming', + extensions: ['.cdc'] + }, + Cairo: { + type: 'programming', + extensions: ['.cairo'] + }, + 'Cairo Zero': { + type: 'programming', + extensions: ['.cairo'] + }, + CameLIGO: { + type: 'programming', + extensions: ['.mligo'] + }, + 'CAP CDS': { + type: 'programming', + extensions: ['.cds'], + aliases: ['cds'] + }, + "Cap'n Proto": { + type: 'programming', + extensions: ['.capnp'] + }, + Carbon: { + type: 'programming', + extensions: ['.carbon'] + }, + CartoCSS: { + type: 'programming', + extensions: ['.mss'], + aliases: ['Carto'] + }, + Ceylon: { + type: 'programming', + extensions: ['.ceylon'] + }, + Chapel: { + type: 'programming', + extensions: ['.chpl'], + aliases: ['chpl'] + }, + Charity: { + type: 'programming', + extensions: ['.ch'] + }, + Checksums: { + type: 'data', + extensions: [ + '.crc32', + '.md2', + '.md4', + '.md5', + '.sha1', + '.sha2', + '.sha224', + '.sha256', + '.sha256sum', + '.sha3', + '.sha384', + '.sha512' + ], + aliases: ['checksum', 'hash', 'hashes', 'sum', 'sums'] + }, + ChucK: { + type: 'programming', + extensions: ['.ck'] + }, + CIL: { + type: 'data', + extensions: ['.cil'] + }, + Circom: { + type: 'programming', + extensions: ['.circom'] + }, + Cirru: { + type: 'programming', + extensions: ['.cirru'] + }, + Clarion: { + type: 'programming', + extensions: ['.clw'] + }, + Clarity: { + type: 'programming', + extensions: ['.clar'] + }, + 'Classic ASP': { + type: 'programming', + extensions: ['.asp'], + aliases: ['asp'] + }, + Clean: { + type: 'programming', + extensions: ['.icl', '.dcl'] + }, + Click: { + type: 'programming', + extensions: ['.click'] + }, + CLIPS: { + type: 'programming', + extensions: ['.clp'] + }, + Clojure: { + type: 'programming', + extensions: ['.clj', '.bb', '.boot', '.cl2', '.cljc', '.cljs', '.cljs.hl', '.cljscm', '.cljx', '.hic'] + }, + 'Closure Templates': { + type: 'markup', + extensions: ['.soy'], + aliases: ['soy'] + }, + Clue: { + type: 'programming', + extensions: ['.clue'] + }, + CMake: { + type: 'programming', + extensions: ['.cmake', '.cmake.in'] + }, + COBOL: { + type: 'programming', + extensions: ['.cob', '.cbl', '.ccp', '.cobol', '.cpy'] + }, + CodeQL: { + type: 'programming', + extensions: ['.ql', '.qll'], + aliases: ['ql'] + }, + CoffeeScript: { + type: 'programming', + extensions: ['.coffee', '._coffee', '.cake', '.cjsx', '.iced'], + aliases: ['coffee', 'coffee-script'] + }, + ColdFusion: { + type: 'programming', + extensions: ['.cfm', '.cfml'], + aliases: ['cfm', 'cfml', 'coldfusion html'] + }, + 'ColdFusion CFC': { + type: 'programming', + extensions: ['.cfc'], + aliases: ['cfc'] + }, + COLLADA: { + type: 'data', + extensions: ['.dae'] + }, + 'Common Lisp': { + type: 'programming', + extensions: ['.lisp', '.asd', '.cl', '.l', '.lsp', '.ny', '.podsl', '.sexp'], + aliases: ['lisp'] + }, + 'Common Workflow Language': { + type: 'programming', + extensions: ['.cwl'], + aliases: ['cwl'] + }, + 'Component Pascal': { + type: 'programming', + extensions: ['.cp', '.cps'] + }, + 'CoNLL-U': { + type: 'data', + extensions: ['.conllu', '.conll'], + aliases: ['CoNLL', 'CoNLL-X'] + }, + Cool: { + type: 'programming', + extensions: ['.cl'] + }, + 'Cpp-ObjDump': { + type: 'data', + extensions: ['.cppobjdump', '.c++-objdump', '.c++objdump', '.cpp-objdump', '.cxx-objdump'], + aliases: ['c++-objdump'] + }, + Creole: { + type: 'prose', + extensions: ['.creole'] + }, + crontab: { + type: 'data', + aliases: ['cron', 'cron table'] + }, + Crystal: { + type: 'programming', + extensions: ['.cr'] + }, + CSON: { + type: 'data', + extensions: ['.cson'] + }, + Csound: { + type: 'programming', + extensions: ['.orc', '.udo'], + aliases: ['csound-orc'] + }, + 'Csound Document': { + type: 'programming', + extensions: ['.csd'], + aliases: ['csound-csd'] + }, + 'Csound Score': { + type: 'programming', + extensions: ['.sco'], + aliases: ['csound-sco'] + }, + CSS: { + type: 'markup', + extensions: ['.css'] + }, + CSV: { + type: 'data', + extensions: ['.csv'] + }, + Cuda: { + type: 'programming', + extensions: ['.cu', '.cuh'] + }, + CUE: { + type: 'programming', + extensions: ['.cue'] + }, + 'Cue Sheet': { + type: 'data', + extensions: ['.cue'] + }, + 'cURL Config': { + type: 'data', + aliases: ['curlrc'] + }, + Curry: { + type: 'programming', + extensions: ['.curry'] + }, + CWeb: { + type: 'programming', + extensions: ['.w'] + }, + Cycript: { + type: 'programming', + extensions: ['.cy'] + }, + Cylc: { + type: 'data', + extensions: ['.cylc'] + }, + Cypher: { + type: 'programming', + extensions: ['.cyp', '.cypher'] + }, + Cython: { + type: 'programming', + extensions: ['.pyx', '.pxd', '.pxi'], + aliases: ['pyrex'] + }, + D: { + type: 'programming', + extensions: ['.d', '.di'], + aliases: ['Dlang'] + }, + 'D-ObjDump': { + type: 'data', + extensions: ['.d-objdump'] + }, + D2: { + type: 'markup', + extensions: ['.d2'], + aliases: ['d2lang'] + }, + Dafny: { + type: 'programming', + extensions: ['.dfy'] + }, + 'Darcs Patch': { + type: 'data', + extensions: ['.darcspatch', '.dpatch'], + aliases: ['dpatch'] + }, + Dart: { + type: 'programming', + extensions: ['.dart'] + }, + Daslang: { + type: 'programming', + extensions: ['.das'] + }, + DataWeave: { + type: 'programming', + extensions: ['.dwl'] + }, + 'Debian Package Control File': { + type: 'data', + extensions: ['.dsc'] + }, + DenizenScript: { + type: 'programming', + extensions: ['.dsc'] + }, + desktop: { + type: 'data', + extensions: ['.desktop', '.desktop.in', '.service'] + }, + Dhall: { + type: 'programming', + extensions: ['.dhall'] + }, + Diff: { + type: 'data', + extensions: ['.diff', '.patch'], + aliases: ['udiff'] + }, + 'DIGITAL Command Language': { + type: 'programming', + extensions: ['.com'], + aliases: ['dcl'] + }, + dircolors: { + type: 'data', + extensions: ['.dircolors'] + }, + 'DirectX 3D File': { + type: 'data', + extensions: ['.x'] + }, + DM: { + type: 'programming', + extensions: ['.dm'], + aliases: ['byond'] + }, + 'DNS Zone': { + type: 'data', + extensions: ['.zone', '.arpa'] + }, + Dockerfile: { + type: 'programming', + extensions: ['.dockerfile', '.containerfile'], + aliases: ['Containerfile'] + }, + Dogescript: { + type: 'programming', + extensions: ['.djs'] + }, + Dotenv: { + type: 'data', + extensions: ['.env'] + }, + DTrace: { + type: 'programming', + extensions: ['.d'], + aliases: ['dtrace-script'] + }, + Dylan: { + type: 'programming', + extensions: ['.dylan', '.dyl', '.intr', '.lid'] + }, + E: { + type: 'programming', + extensions: ['.e'] + }, + 'E-mail': { + type: 'data', + extensions: ['.eml', '.mbox'], + aliases: ['email', 'eml', 'mail', 'mbox'] + }, + Eagle: { + type: 'data', + extensions: ['.sch', '.brd'] + }, + Earthly: { + type: 'programming', + aliases: ['Earthfile'] + }, + Easybuild: { + type: 'data', + extensions: ['.eb'] + }, + EBNF: { + type: 'data', + extensions: ['.ebnf'] + }, + eC: { + type: 'programming', + extensions: ['.ec', '.eh'] + }, + 'Ecere Projects': { + type: 'data', + extensions: ['.epj'] + }, + ECL: { + type: 'programming', + extensions: ['.ecl', '.eclxml'] + }, + ECLiPSe: { + type: 'programming', + extensions: ['.ecl'] + }, + Ecmarkup: { + type: 'markup', + extensions: ['.html'], + aliases: ['ecmarkdown'] + }, + Edge: { + type: 'markup', + extensions: ['.edge'] + }, + EdgeQL: { + type: 'programming', + extensions: ['.edgeql', '.esdl'], + aliases: ['esdl'] + }, + EditorConfig: { + type: 'data', + extensions: ['.editorconfig'], + aliases: ['editor-config'] + }, + 'Edje Data Collection': { + type: 'data', + extensions: ['.edc'] + }, + edn: { + type: 'data', + extensions: ['.edn'] + }, + Eiffel: { + type: 'programming', + extensions: ['.e'] + }, + EJS: { + type: 'markup', + extensions: ['.ejs', '.ect', '.ejs.t', '.jst'] + }, + Elixir: { + type: 'programming', + extensions: ['.ex', '.exs'] + }, + Elm: { + type: 'programming', + extensions: ['.elm'] + }, + Elvish: { + type: 'programming', + extensions: ['.elv'] + }, + 'Emacs Lisp': { + type: 'programming', + extensions: ['.el', '.emacs', '.emacs.desktop'], + aliases: ['elisp', 'emacs'] + }, + EmberScript: { + type: 'programming', + extensions: ['.em', '.emberscript'] + }, + EQ: { + type: 'programming', + extensions: ['.eq'] + }, + Erlang: { + type: 'programming', + extensions: ['.erl', '.app', '.app.src', '.es', '.escript', '.hrl', '.xrl', '.yrl'] + }, + Euphoria: { + type: 'programming', + extensions: ['.e', '.ex'] + }, + 'F*': { + type: 'programming', + extensions: ['.fst', '.fsti'], + aliases: ['fstar'] + }, + 'F#': { + type: 'programming', + extensions: ['.fs', '.fsi', '.fsx'], + aliases: ['fsharp'] + }, + Factor: { + type: 'programming', + extensions: ['.factor'] + }, + Fancy: { + type: 'programming', + extensions: ['.fy', '.fancypack'] + }, + Fantom: { + type: 'programming', + extensions: ['.fan'] + }, + Faust: { + type: 'programming', + extensions: ['.dsp'] + }, + Fennel: { + type: 'programming', + extensions: ['.fnl'] + }, + 'FIGlet Font': { + type: 'data', + extensions: ['.flf'], + aliases: ['FIGfont'] + }, + 'Filebench WML': { + type: 'programming', + extensions: ['.f'] + }, + Filterscript: { + type: 'programming', + extensions: ['.fs'] + }, + FIRRTL: { + type: 'programming', + extensions: ['.fir'] + }, + fish: { + type: 'programming', + extensions: ['.fish'] + }, + Fluent: { + type: 'programming', + extensions: ['.ftl'] + }, + FLUX: { + type: 'programming', + extensions: ['.fx', '.flux'] + }, + Formatted: { + type: 'data', + extensions: ['.for', '.eam.fs'] + }, + Forth: { + type: 'programming', + extensions: ['.fth', '.4th', '.f', '.for', '.forth', '.fr', '.frt', '.fs'] + }, + Fortran: { + type: 'programming', + extensions: ['.f', '.f77', '.for', '.fpp'] + }, + 'Fortran Free Form': { + type: 'programming', + extensions: ['.f90', '.f03', '.f08', '.f95'] + }, + FreeBASIC: { + type: 'programming', + extensions: ['.bi', '.bas'], + aliases: ['fb'] + }, + FreeMarker: { + type: 'programming', + extensions: ['.ftl'], + aliases: ['ftl'] + }, + Frege: { + type: 'programming', + extensions: ['.fr'] + }, + Futhark: { + type: 'programming', + extensions: ['.fut'] + }, + 'G-code': { + type: 'programming', + extensions: ['.g', '.cnc', '.gco', '.gcode'] + }, + 'Game Maker Language': { + type: 'programming', + extensions: ['.gml'] + }, + GAML: { + type: 'programming', + extensions: ['.gaml'] + }, + GAMS: { + type: 'programming', + extensions: ['.gms'] + }, + GAP: { + type: 'programming', + extensions: ['.g', '.gap', '.gd', '.gi', '.tst'] + }, + 'GCC Machine Description': { + type: 'programming', + extensions: ['.md'] + }, + GDB: { + type: 'programming', + extensions: ['.gdb', '.gdbinit'] + }, + GDScript: { + type: 'programming', + extensions: ['.gd'] + }, + GDShader: { + type: 'programming', + extensions: ['.gdshader', '.gdshaderinc'] + }, + GEDCOM: { + type: 'data', + extensions: ['.ged'] + }, + Gemini: { + type: 'prose', + extensions: ['.gmi'], + aliases: ['gemtext'] + }, + 'Genero 4gl': { + type: 'programming', + extensions: ['.4gl'] + }, + 'Genero per': { + type: 'markup', + extensions: ['.per'] + }, + Genie: { + type: 'programming', + extensions: ['.gs'] + }, + Genshi: { + type: 'programming', + extensions: ['.kid'], + aliases: ['xml+genshi', 'xml+kid'] + }, + 'Gentoo Ebuild': { + type: 'programming', + extensions: ['.ebuild'] + }, + 'Gentoo Eclass': { + type: 'programming', + extensions: ['.eclass'] + }, + 'Gerber Image': { + type: 'data', + extensions: [ + '.gbr', + '.cmp', + '.gbl', + '.gbo', + '.gbp', + '.gbs', + '.gko', + '.gml', + '.gpb', + '.gpt', + '.gtl', + '.gto', + '.gtp', + '.gts', + '.ncl', + '.sol' + ], + aliases: ['rs-274x'] + }, + 'Gettext Catalog': { + type: 'prose', + extensions: ['.po', '.pot'], + aliases: ['pot'] + }, + Gherkin: { + type: 'programming', + extensions: ['.feature', '.story'], + aliases: ['cucumber'] + }, + 'Git Attributes': { + type: 'data', + aliases: ['gitattributes'] + }, + 'Git Config': { + type: 'data', + extensions: ['.gitconfig'], + aliases: ['gitconfig', 'gitmodules'] + }, + 'Git Revision List': { + type: 'data', + aliases: ['Git Blame Ignore Revs'] + }, + Gleam: { + type: 'programming', + extensions: ['.gleam'] + }, + 'Glimmer JS': { + type: 'programming', + extensions: ['.gjs'] + }, + 'Glimmer TS': { + type: 'programming', + extensions: ['.gts'] + }, + GLSL: { + type: 'programming', extensions: [ '.glsl', '.fp', @@ -410,399 +1080,387 @@ export const languages: Record = { '.vs', '.vsh', '.vshader' - ], - type: 'programming' + ] }, - vcl: { - extensions: ['.vcl'], - type: 'programming' - }, - gdb: { - extensions: ['.gdb', '.gdbinit'], - type: 'programming' - }, - nanorc: { - extensions: ['.nanorc'], - type: 'data' - }, - 'parrot internal representation': { - extensions: ['.pir'], + Glyph: { type: 'programming', - aliases: ['pir'] + extensions: ['.glf'] }, - pod: { - extensions: ['.pod'], - type: 'prose' - }, - m4sugar: { - extensions: ['.m4'], - type: 'programming', - aliases: ['autoconf'] - }, - mlir: { - extensions: ['.mlir'], - type: 'programming' - }, - monkey: { - extensions: ['.monkey', '.monkey2'], - type: 'programming' - }, - nim: { - extensions: ['.nim', '.nim.cfg', '.nimble', '.nimrod', '.nims'], - type: 'programming' - }, - 'gentoo ebuild': { - extensions: ['.ebuild'], - type: 'programming' - }, - racket: { - extensions: ['.rkt', '.rktd', '.rktl', '.scrbl'], - type: 'programming' - }, - ebnf: { - extensions: ['.ebnf'], - type: 'data' - }, - charity: { - extensions: ['.ch'], - type: 'programming' - }, - groovy: { - extensions: ['.groovy', '.grt', '.gtpl', '.gvy'], - type: 'programming' - }, - hiveql: { - extensions: ['.q', '.hql'], - type: 'programming' - }, - 'f*': { - extensions: ['.fst', '.fsti'], - type: 'programming', - aliases: ['fstar'] - }, - systemverilog: { - extensions: ['.sv', '.svh', '.vh'], - type: 'programming' - }, - jison: { - extensions: ['.jison'], - type: 'programming' - }, - fantom: { - extensions: ['.fan'], - type: 'programming' - }, - scheme: { - extensions: ['.scm', '.sch', '.sld', '.sls', '.sps', '.ss'], - type: 'programming' - }, - 'cpp-objdump': { - extensions: ['.cppobjdump', '.c++-objdump', '.c++objdump', '.cpp-objdump', '.cxx-objdump'], + 'Glyph Bitmap Distribution Format': { type: 'data', - aliases: ['c++-objdump'] + extensions: ['.bdf'] }, - arc: { - extensions: ['.arc'], - type: 'programming' - }, - logos: { - extensions: ['.xm', '.x', '.xi'], - type: 'programming' - }, - assembly: { - extensions: ['.asm', '.a51', '.i', '.inc', '.nas', '.nasm', '.s'], - type: 'programming', - aliases: ['asm', 'nasm'] - }, - 'java properties': { - extensions: ['.properties'], - type: 'data' - }, - haskell: { - extensions: ['.hs', '.hs-boot', '.hsc'], - type: 'programming' - }, - ragel: { - extensions: ['.rl'], - type: 'programming', - aliases: ['ragel-rb', 'ragel-ruby'] - }, - gn: { - extensions: ['.gn', '.gni'], - type: 'data' - }, - '1c enterprise': { - extensions: ['.bsl', '.os'], - type: 'programming' - }, - diff: { - extensions: ['.diff', '.patch'], + GN: { type: 'data', - aliases: ['udiff'] + extensions: ['.gn', '.gni'] }, - http: { - extensions: ['.http'], - type: 'data' + Gnuplot: { + type: 'programming', + extensions: ['.gp', '.gnu', '.gnuplot', '.p', '.plot', '.plt'] }, - tex: { - extensions: [ - '.tex', - '.aux', - '.bbx', - '.cbx', - '.cls', - '.dtx', - '.ins', - '.lbx', - '.ltx', - '.mkii', - '.mkiv', - '.mkvi', - '.sty', - '.toc' - ], + Go: { + type: 'programming', + extensions: ['.go'], + aliases: ['golang'] + }, + 'Go Checksums': { + type: 'data', + aliases: ['go.sum', 'go sum', 'go.work.sum', 'go work sum'] + }, + 'Go Module': { + type: 'data', + aliases: ['go.mod', 'go mod'] + }, + 'Go Workspace': { + type: 'data', + aliases: ['go.work', 'go work'] + }, + 'Godot Resource': { + type: 'data', + extensions: ['.gdnlib', '.gdns', '.tres', '.tscn'] + }, + Golo: { + type: 'programming', + extensions: ['.golo'] + }, + Gosu: { + type: 'programming', + extensions: ['.gs', '.gst', '.gsx', '.vark'] + }, + Grace: { + type: 'programming', + extensions: ['.grace'] + }, + Gradle: { + type: 'data', + extensions: ['.gradle'] + }, + 'Gradle Kotlin DSL': { + type: 'data', + extensions: ['.gradle.kts'] + }, + 'Grammatical Framework': { + type: 'programming', + extensions: ['.gf'], + aliases: ['gf'] + }, + 'Graph Modeling Language': { + type: 'data', + extensions: ['.gml'] + }, + GraphQL: { + type: 'data', + extensions: ['.graphql', '.gql', '.graphqls'] + }, + 'Graphviz (DOT)': { + type: 'data', + extensions: ['.dot', '.gv'] + }, + Groovy: { + type: 'programming', + extensions: ['.groovy', '.grt', '.gtpl', '.gvy'] + }, + 'Groovy Server Pages': { + type: 'programming', + extensions: ['.gsp'], + aliases: ['gsp', 'java server page'] + }, + GSC: { + type: 'programming', + extensions: ['.gsc', '.csc', '.gsh'] + }, + Hack: { + type: 'programming', + extensions: ['.hack', '.hh', '.hhi', '.php'] + }, + Haml: { type: 'markup', - aliases: ['latex'] + extensions: ['.haml', '.haml.deface'] }, - mathematica: { - extensions: ['.mathematica', '.cdf', '.m', '.ma', '.mt', '.nb', '.nbp', '.wl', '.wlt'], - type: 'programming', - aliases: ['mma', 'wolfram', 'wolfram language', 'wolfram lang', 'wl'] + Handlebars: { + type: 'markup', + extensions: ['.handlebars', '.hbs'], + aliases: ['hbs', 'htmlbars'] }, - 'javascript+erb': { - extensions: ['.js.erb'], - type: 'programming' - }, - muse: { - extensions: ['.muse'], - type: 'prose', - aliases: ['amusewiki', 'emacs muse'] - }, - 'openedge abl': { - extensions: ['.p', '.cls', '.w'], - type: 'programming', - aliases: ['progress', 'openedge', 'abl'] - }, - ninja: { - extensions: ['.ninja'], - type: 'data' - }, - agda: { - extensions: ['.agda'], - type: 'programming' - }, - aspectj: { - extensions: ['.aj'], - type: 'programming' - }, - jq: { - extensions: ['.jq'], - type: 'programming' - }, - apex: { - extensions: ['.cls', '.apex', '.trigger'], - type: 'programming' - }, - bluespec: { - extensions: ['.bsv'], - type: 'programming', - aliases: ['bluespec bsv', 'bsv'] - }, - forth: { - extensions: ['.fth', '.4th', '.f', '.for', '.forth', '.fr', '.frt', '.fs'], - type: 'programming' - }, - xc: { - extensions: ['.xc'], - type: 'programming' - }, - fortran: { - extensions: ['.f', '.f77', '.for', '.fpp'], - type: 'programming' - }, - haxe: { - extensions: ['.hx', '.hxsl'], - type: 'programming' - }, - rust: { - extensions: ['.rs', '.rs.in'], - type: 'programming', - aliases: ['rs'] - }, - 'cabal config': { - extensions: ['.cabal'], + HAProxy: { type: 'data', - aliases: ['Cabal'] + extensions: ['.cfg'] }, - netlogo: { - extensions: ['.nlogo'], - type: 'programming' - }, - 'imagej macro': { - extensions: ['.ijm'], + Harbour: { type: 'programming', - aliases: ['ijm'] + extensions: ['.hb'] }, - autohotkey: { - extensions: ['.ahk', '.ahkl'], + Hare: { type: 'programming', - aliases: ['ahk'] + extensions: ['.ha'] }, - haproxy: { - extensions: ['.cfg'], - type: 'data' + Haskell: { + type: 'programming', + extensions: ['.hs', '.hs-boot', '.hsc'] }, - zil: { - extensions: ['.zil', '.mud'], - type: 'programming' + Haxe: { + type: 'programming', + extensions: ['.hx', '.hxsl'] }, - 'abap cds': { - extensions: ['.asddls'], - type: 'programming' + HCL: { + type: 'programming', + extensions: ['.hcl', '.nomad', '.tf', '.tfvars', '.workflow'], + aliases: ['HashiCorp Configuration Language', 'terraform'] }, - 'html+razor': { + HIP: { + type: 'programming', + extensions: ['.hip'] + }, + HiveQL: { + type: 'programming', + extensions: ['.q', '.hql'] + }, + HLSL: { + type: 'programming', + extensions: ['.hlsl', '.cginc', '.fx', '.fxh', '.hlsli'] + }, + HOCON: { + type: 'data', + extensions: ['.hocon'] + }, + HolyC: { + type: 'programming', + extensions: ['.hc'] + }, + hoon: { + type: 'programming', + extensions: ['.hoon'] + }, + 'Hosts File': { + type: 'data', + aliases: ['hosts'] + }, + HTML: { + type: 'markup', + extensions: ['.html', '.hta', '.htm', '.html.hl', '.inc', '.xht', '.xhtml'], + aliases: ['xhtml'] + }, + 'HTML+ECR': { + type: 'markup', + extensions: ['.ecr'], + aliases: ['ecr'] + }, + 'HTML+EEX': { + type: 'markup', + extensions: ['.html.eex', '.heex', '.leex'], + aliases: ['eex', 'heex', 'leex'] + }, + 'HTML+ERB': { + type: 'markup', + extensions: ['.erb', '.erb.deface', '.rhtml'], + aliases: ['erb', 'rhtml', 'html+ruby'] + }, + 'HTML+PHP': { + type: 'markup', + extensions: ['.phtml'] + }, + 'HTML+Razor': { + type: 'markup', extensions: ['.cshtml', '.razor'], - type: 'markup', aliases: ['razor'] }, - boo: { - extensions: ['.boo'], - type: 'programming' - }, - smarty: { - extensions: ['.tpl'], - type: 'programming' - }, - mako: { - extensions: ['.mako', '.mao'], - type: 'programming' - }, - nearley: { - extensions: ['.ne', '.nearley'], - type: 'programming' - }, - llvm: { - extensions: ['.ll'], - type: 'programming' - }, - piglatin: { - extensions: ['.pig'], - type: 'programming' - }, - 'unix assembly': { - extensions: ['.s', '.ms'], - type: 'programming', - aliases: ['gas', 'gnu asm', 'unix asm'] - }, - metal: { - extensions: ['.metal'], - type: 'programming' - }, - shen: { - extensions: ['.shen'], - type: 'programming' - }, - labview: { - extensions: ['.lvproj', '.lvclass', '.lvlib'], - type: 'programming' - }, - nemerle: { - extensions: ['.n'], - type: 'programming' - }, - rpc: { - extensions: ['.x'], - type: 'programming', - aliases: ['rpcgen', 'oncrpc', 'xdr'] - }, - 'python traceback': { - extensions: ['.pytb'], - type: 'data' - }, - clojure: { - extensions: ['.clj', '.bb', '.boot', '.cl2', '.cljc', '.cljs', '.cljs.hl', '.cljscm', '.cljx', '.hic'], - type: 'programming' - }, - eiffel: { - extensions: ['.e'], - type: 'programming' - }, - genie: { - extensions: ['.gs'], - type: 'programming' - }, - shaderlab: { - extensions: ['.shader'], - type: 'programming' - }, - makefile: { - extensions: ['.mak', '.d', '.make', '.makefile', '.mk', '.mkfile'], - type: 'programming', - aliases: ['bsdmake', 'make', 'mf'] - }, - rouge: { - extensions: ['.rg'], - type: 'programming' - }, - dircolors: { - extensions: ['.dircolors'], - type: 'data' - }, - ncl: { - extensions: ['.ncl'], - type: 'programming' - }, - puppet: { - extensions: ['.pp'], - type: 'programming' - }, - sparql: { - extensions: ['.sparql', '.rq'], - type: 'data' - }, - 'qt script': { - extensions: ['.qs'], - type: 'programming' - }, - golo: { - extensions: ['.golo'], - type: 'programming' - }, - lark: { - extensions: ['.lark'], - type: 'data' - }, - nginx: { - extensions: ['.nginx', '.nginxconf', '.vhost'], + HTTP: { type: 'data', - aliases: ['nginx configuration file'] + extensions: ['.http'] }, - wikitext: { - extensions: ['.mediawiki', '.wiki', '.wikitext'], - type: 'prose', - aliases: ['mediawiki', 'wiki'] + HXML: { + type: 'data', + extensions: ['.hxml'] }, - ceylon: { - extensions: ['.ceylon'], - type: 'programming' + Hy: { + type: 'programming', + extensions: ['.hy'], + aliases: ['hylang'] }, - stan: { - extensions: ['.stan'], - type: 'programming' + HyPhy: { + type: 'programming', + extensions: ['.bf'] }, - cmake: { - extensions: ['.cmake', '.cmake.in'], - type: 'programming' + iCalendar: { + type: 'data', + extensions: ['.ics', '.ical'], + aliases: ['iCal'] }, - loomscript: { - extensions: ['.ls'], - type: 'programming' + IDL: { + type: 'programming', + extensions: ['.pro', '.dlm'] }, - ooc: { - extensions: ['.ooc'], - type: 'programming' + Idris: { + type: 'programming', + extensions: ['.idr', '.lidr'] }, - json: { + 'Ignore List': { + type: 'data', + extensions: ['.gitignore'], + aliases: ['ignore', 'gitignore', 'git-ignore'] + }, + 'IGOR Pro': { + type: 'programming', + extensions: ['.ipf'], + aliases: ['igor', 'igorpro'] + }, + 'ImageJ Macro': { + type: 'programming', + extensions: ['.ijm'], + aliases: ['ijm'] + }, + Imba: { + type: 'programming', + extensions: ['.imba'] + }, + 'Inform 7': { + type: 'programming', + extensions: ['.ni', '.i7x'], + aliases: ['i7', 'inform7'] + }, + INI: { + type: 'data', + extensions: ['.ini', '.cfg', '.cnf', '.dof', '.frm', '.lektorproject', '.prefs', '.pro', '.properties', '.url'], + aliases: ['dosini'] + }, + Ink: { + type: 'programming', + extensions: ['.ink'] + }, + 'Inno Setup': { + type: 'programming', + extensions: ['.iss', '.isl'] + }, + Io: { + type: 'programming', + extensions: ['.io'] + }, + Ioke: { + type: 'programming', + extensions: ['.ik'] + }, + 'IRC log': { + type: 'data', + extensions: ['.irclog', '.weechatlog'], + aliases: ['irc', 'irc logs'] + }, + Isabelle: { + type: 'programming', + extensions: ['.thy'] + }, + ISPC: { + type: 'programming', + extensions: ['.ispc'] + }, + J: { + type: 'programming', + extensions: ['.ijs'] + }, + Jai: { + type: 'programming', + extensions: ['.jai'] + }, + Janet: { + type: 'programming', + extensions: ['.janet'] + }, + Jasmin: { + type: 'programming', + extensions: ['.j'] + }, + Java: { + type: 'programming', + extensions: ['.java', '.jav', '.jsh'] + }, + 'Java Properties': { + type: 'data', + extensions: ['.properties'] + }, + 'Java Server Pages': { + type: 'programming', + extensions: ['.jsp', '.tag'], + aliases: ['jsp'] + }, + 'Java Template Engine': { + type: 'programming', + extensions: ['.jte'], + aliases: ['jte'] + }, + JavaScript: { + type: 'programming', + extensions: [ + '.js', + '._js', + '.bones', + '.cjs', + '.es', + '.es6', + '.frag', + '.gs', + '.jake', + '.javascript', + '.jsb', + '.jscad', + '.jsfl', + '.jslib', + '.jsm', + '.jspre', + '.jss', + '.jsx', + '.mjs', + '.njs', + '.pac', + '.sjs', + '.ssjs', + '.xsjs', + '.xsjslib' + ], + aliases: ['js', 'node'] + }, + 'JavaScript+ERB': { + type: 'programming', + extensions: ['.js.erb'] + }, + JCL: { + type: 'programming', + extensions: ['.jcl'] + }, + 'Jest Snapshot': { + type: 'data', + extensions: ['.snap'] + }, + 'JetBrains MPS': { + type: 'programming', + extensions: ['.mps', '.mpl', '.msd'], + aliases: ['mps'] + }, + JFlex: { + type: 'programming', + extensions: ['.flex', '.jflex'] + }, + Jinja: { + type: 'markup', + extensions: ['.jinja', '.j2', '.jinja2'], + aliases: ['django', 'html+django', 'html+jinja', 'htmldjango'] + }, + Jison: { + type: 'programming', + extensions: ['.jison'] + }, + 'Jison Lex': { + type: 'programming', + extensions: ['.jisonlex'] + }, + Jolie: { + type: 'programming', + extensions: ['.ol', '.iol'] + }, + jq: { + type: 'programming', + extensions: ['.jq'] + }, + JSON: { + type: 'data', extensions: [ '.json', '.4DForm', @@ -826,187 +1484,1974 @@ export const languages: Record = { '.yy', '.yyp' ], - type: 'data', aliases: ['geojson', 'jsonl', 'sarif', 'topojson'] }, - formatted: { - extensions: ['.for', '.eam.fs'], - type: 'data' + 'JSON with Comments': { + type: 'data', + extensions: [ + '.jsonc', + '.code-snippets', + '.code-workspace', + '.sublime-build', + '.sublime-color-scheme', + '.sublime-commands', + '.sublime-completions', + '.sublime-keymap', + '.sublime-macro', + '.sublime-menu', + '.sublime-mousemap', + '.sublime-project', + '.sublime-settings', + '.sublime-theme', + '.sublime-workspace', + '.sublime_metrics', + '.sublime_session' + ], + aliases: ['jsonc'] }, - 'html+eex': { - extensions: ['.html.eex', '.heex', '.leex'], + JSON5: { + type: 'data', + extensions: ['.json5'] + }, + JSONiq: { + type: 'programming', + extensions: ['.jq'] + }, + JSONLD: { + type: 'data', + extensions: ['.jsonld'] + }, + Jsonnet: { + type: 'programming', + extensions: ['.jsonnet', '.libsonnet'] + }, + Julia: { + type: 'programming', + extensions: ['.jl'] + }, + 'Jupyter Notebook': { type: 'markup', - aliases: ['eex', 'heex', 'leex'] + extensions: ['.ipynb'], + aliases: ['IPython Notebook'] + }, + Just: { + type: 'programming', + extensions: ['.just'], + aliases: ['Justfile'] + }, + 'Kaitai Struct': { + type: 'programming', + extensions: ['.ksy'], + aliases: ['ksy'] + }, + KakouneScript: { + type: 'programming', + extensions: ['.kak'], + aliases: ['kak', 'kakscript'] + }, + KDL: { + type: 'data', + extensions: ['.kdl'] + }, + KerboScript: { + type: 'programming', + extensions: ['.ks'] + }, + 'KiCad Layout': { + type: 'data', + extensions: ['.kicad_pcb', '.kicad_mod', '.kicad_wks'], + aliases: ['pcbnew'] + }, + 'KiCad Legacy Layout': { + type: 'data', + extensions: ['.brd'] + }, + 'KiCad Schematic': { + type: 'data', + extensions: ['.kicad_sch', '.kicad_sym', '.sch'], + aliases: ['eeschema schematic'] + }, + Kickstart: { + type: 'data', + extensions: ['.ks'] + }, + Kit: { + type: 'markup', + extensions: ['.kit'] + }, + Koka: { + type: 'programming', + extensions: ['.kk'] + }, + Kotlin: { + type: 'programming', + extensions: ['.kt', '.ktm', '.kts'] + }, + KRL: { + type: 'programming', + extensions: ['.krl'] + }, + Kusto: { + type: 'data', + extensions: ['.csl', '.kql'] + }, + kvlang: { + type: 'markup', + extensions: ['.kv'] + }, + LabVIEW: { + type: 'programming', + extensions: ['.lvproj', '.lvclass', '.lvlib'] + }, + Lark: { + type: 'data', + extensions: ['.lark'] + }, + Lasso: { + type: 'programming', + extensions: ['.lasso', '.las', '.lasso8', '.lasso9'], + aliases: ['lassoscript'] + }, + Latte: { + type: 'markup', + extensions: ['.latte'] + }, + Lean: { + type: 'programming', + extensions: ['.lean', '.hlean'] + }, + 'Lean 4': { + type: 'programming', + extensions: ['.lean'] + }, + Leo: { + type: 'programming', + extensions: ['.leo'] + }, + Less: { + type: 'markup', + extensions: ['.less'], + aliases: ['less-css'] + }, + Lex: { + type: 'programming', + extensions: ['.l', '.lex'], + aliases: ['flex'] + }, + LFE: { + type: 'programming', + extensions: ['.lfe'] + }, + LigoLANG: { + type: 'programming', + extensions: ['.ligo'] + }, + LilyPond: { + type: 'programming', + extensions: ['.ly', '.ily'] + }, + Limbo: { + type: 'programming', + extensions: ['.b', '.m'] + }, + 'Linear Programming': { + type: 'programming', + extensions: ['.lp'] + }, + 'Linker Script': { + type: 'programming', + extensions: ['.ld', '.lds', '.x'] + }, + 'Linux Kernel Module': { + type: 'data', + extensions: ['.mod'] + }, + Liquid: { + type: 'markup', + extensions: ['.liquid'] + }, + 'Literate Agda': { + type: 'programming', + extensions: ['.lagda'] + }, + 'Literate CoffeeScript': { + type: 'programming', + extensions: ['.litcoffee', '.coffee.md'], + aliases: ['litcoffee'] + }, + 'Literate Haskell': { + type: 'programming', + extensions: ['.lhs'], + aliases: ['lhaskell', 'lhs'] + }, + 'LiveCode Script': { + type: 'programming', + extensions: ['.livecodescript'] + }, + LiveScript: { + type: 'programming', + extensions: ['.ls', '._ls'], + aliases: ['live-script', 'ls'] + }, + LLVM: { + type: 'programming', + extensions: ['.ll'] + }, + Logos: { + type: 'programming', + extensions: ['.xm', '.x', '.xi'] + }, + Logtalk: { + type: 'programming', + extensions: ['.lgt', '.logtalk'] + }, + LOLCODE: { + type: 'programming', + extensions: ['.lol'] + }, + LookML: { + type: 'programming', + extensions: ['.lkml', '.lookml'] + }, + LoomScript: { + type: 'programming', + extensions: ['.ls'] + }, + LSL: { + type: 'programming', + extensions: ['.lsl', '.lslp'] + }, + 'LTspice Symbol': { + type: 'data', + extensions: ['.asy'] + }, + Lua: { + type: 'programming', + extensions: ['.lua', '.fcgi', '.nse', '.p8', '.pd_lua', '.rbxs', '.rockspec', '.wlua'] + }, + Luau: { + type: 'programming', + extensions: ['.luau'] + }, + M: { + type: 'programming', + extensions: ['.mumps', '.m'], + aliases: ['mumps'] + }, + M3U: { + type: 'data', + extensions: ['.m3u', '.m3u8'], + aliases: ['hls playlist', 'm3u playlist'] + }, + M4: { + type: 'programming', + extensions: ['.m4', '.mc'] + }, + M4Sugar: { + type: 'programming', + extensions: ['.m4'], + aliases: ['autoconf'] + }, + Macaulay2: { + type: 'programming', + extensions: ['.m2'], + aliases: ['m2'] + }, + Makefile: { + type: 'programming', + extensions: ['.mak', '.d', '.make', '.makefile', '.mk', '.mkfile'], + aliases: ['bsdmake', 'make', 'mf'] + }, + Mako: { + type: 'programming', + extensions: ['.mako', '.mao'] + }, + Markdown: { + type: 'prose', + extensions: [ + '.md', + '.livemd', + '.markdown', + '.mdown', + '.mdwn', + '.mkd', + '.mkdn', + '.mkdown', + '.ronn', + '.scd', + '.workbook' + ], + aliases: ['md', 'pandoc'] + }, + Marko: { + type: 'markup', + extensions: ['.marko'], + aliases: ['markojs'] + }, + Mask: { + type: 'markup', + extensions: ['.mask'] + }, + Mathematica: { + type: 'programming', + extensions: ['.mathematica', '.cdf', '.m', '.ma', '.mt', '.nb', '.nbp', '.wl', '.wlt'], + aliases: ['mma', 'wolfram', 'wolfram language', 'wolfram lang', 'wl'] + }, + MATLAB: { + type: 'programming', + extensions: ['.matlab', '.m'], + aliases: ['octave'] + }, + Max: { + type: 'programming', + extensions: ['.maxpat', '.maxhelp', '.maxproj', '.mxt', '.pat'], + aliases: ['max/msp', 'maxmsp'] + }, + MAXScript: { + type: 'programming', + extensions: ['.ms', '.mcr'] + }, + mcfunction: { + type: 'programming', + extensions: ['.mcfunction'] + }, + mdsvex: { + type: 'markup', + extensions: ['.svx'] + }, + MDX: { + type: 'markup', + extensions: ['.mdx'] + }, + Mercury: { + type: 'programming', + extensions: ['.m', '.moo'] + }, + Mermaid: { + type: 'markup', + extensions: ['.mmd', '.mermaid'], + aliases: ['mermaid example'] + }, + Metal: { + type: 'programming', + extensions: ['.metal'] + }, + 'Microsoft Developer Studio Project': { + type: 'data', + extensions: ['.dsp'] + }, + 'Microsoft Visual Studio Solution': { + type: 'data', + extensions: ['.sln'] + }, + MiniD: { + type: 'programming', + extensions: ['.minid'] + }, + MiniYAML: { + type: 'data', + extensions: ['.yaml', '.yml'] + }, + MiniZinc: { + type: 'programming', + extensions: ['.mzn'] + }, + 'MiniZinc Data': { + type: 'data', + extensions: ['.dzn'] + }, + Mint: { + type: 'programming', + extensions: ['.mint'] + }, + Mirah: { + type: 'programming', + extensions: ['.druby', '.duby', '.mirah'] + }, + 'mIRC Script': { + type: 'programming', + extensions: ['.mrc'] + }, + MLIR: { + type: 'programming', + extensions: ['.mlir'] + }, + Modelica: { + type: 'programming', + extensions: ['.mo'] + }, + 'Modula-2': { + type: 'programming', + extensions: ['.mod'] + }, + 'Modula-3': { + type: 'programming', + extensions: ['.i3', '.ig', '.m3', '.mg'] + }, + 'Module Management System': { + type: 'programming', + extensions: ['.mms', '.mmk'] + }, + Mojo: { + type: 'programming', + extensions: ['.mojo'] + }, + Monkey: { + type: 'programming', + extensions: ['.monkey', '.monkey2'] + }, + 'Monkey C': { + type: 'programming', + extensions: ['.mc'] + }, + Moocode: { + type: 'programming', + extensions: ['.moo'] + }, + MoonBit: { + type: 'programming', + extensions: ['.mbt'] + }, + MoonScript: { + type: 'programming', + extensions: ['.moon'] + }, + Motoko: { + type: 'programming', + extensions: ['.mo'] + }, + 'Motorola 68K Assembly': { + type: 'programming', + extensions: ['.asm', '.i', '.inc', '.s', '.x68'], + aliases: ['m68k'] + }, + Move: { + type: 'programming', + extensions: ['.move'] + }, + MQL4: { + type: 'programming', + extensions: ['.mq4', '.mqh'] + }, + MQL5: { + type: 'programming', + extensions: ['.mq5', '.mqh'] + }, + MTML: { + type: 'markup', + extensions: ['.mtml'] + }, + MUF: { + type: 'programming', + extensions: ['.muf', '.m'] + }, + mupad: { + type: 'programming', + extensions: ['.mu'] + }, + Muse: { + type: 'prose', + extensions: ['.muse'], + aliases: ['amusewiki', 'emacs muse'] + }, + Mustache: { + type: 'markup', + extensions: ['.mustache'] + }, + Myghty: { + type: 'programming', + extensions: ['.myt'] + }, + nanorc: { + type: 'data', + extensions: ['.nanorc'] + }, + Nasal: { + type: 'programming', + extensions: ['.nas'] + }, + NASL: { + type: 'programming', + extensions: ['.nasl', '.inc'] + }, + NCL: { + type: 'programming', + extensions: ['.ncl'] + }, + Nearley: { + type: 'programming', + extensions: ['.ne', '.nearley'] + }, + Nemerle: { + type: 'programming', + extensions: ['.n'] + }, + NEON: { + type: 'data', + extensions: ['.neon'], + aliases: ['nette object notation', 'ne-on'] + }, + nesC: { + type: 'programming', + extensions: ['.nc'] + }, + NetLinx: { + type: 'programming', + extensions: ['.axs', '.axi'] + }, + 'NetLinx+ERB': { + type: 'programming', + extensions: ['.axs.erb', '.axi.erb'] + }, + NetLogo: { + type: 'programming', + extensions: ['.nlogo'] + }, + NewLisp: { + type: 'programming', + extensions: ['.nl', '.lisp', '.lsp'] + }, + Nextflow: { + type: 'programming', + extensions: ['.nf'] + }, + Nginx: { + type: 'data', + extensions: ['.nginx', '.nginxconf', '.vhost'], + aliases: ['nginx configuration file'] + }, + Nim: { + type: 'programming', + extensions: ['.nim', '.nim.cfg', '.nimble', '.nimrod', '.nims'] + }, + Ninja: { + type: 'data', + extensions: ['.ninja'] + }, + Nit: { + type: 'programming', + extensions: ['.nit'] + }, + Nix: { + type: 'programming', + extensions: ['.nix'], + aliases: ['nixos'] + }, + NL: { + type: 'data', + extensions: ['.nl'] + }, + NMODL: { + type: 'programming', + extensions: ['.mod'] + }, + Noir: { + type: 'programming', + extensions: ['.nr'], + aliases: ['nargo'] + }, + 'NPM Config': { + type: 'data', + aliases: ['npmrc'] + }, + NSIS: { + type: 'programming', + extensions: ['.nsi', '.nsh'] + }, + Nu: { + type: 'programming', + extensions: ['.nu'], + aliases: ['nush'] + }, + NumPy: { + type: 'programming', + extensions: ['.numpy', '.numpyw', '.numsc'] + }, + Nunjucks: { + type: 'markup', + extensions: ['.njk'], + aliases: ['njk'] + }, + Nushell: { + type: 'programming', + extensions: ['.nu'], + aliases: ['nu-script', 'nushell-script'] + }, + NWScript: { + type: 'programming', + extensions: ['.nss'] + }, + 'OASv2-json': { + type: 'data', + extensions: ['.json'] + }, + 'OASv2-yaml': { + type: 'data', + extensions: ['.yaml', '.yml'] + }, + 'OASv3-json': { + type: 'data', + extensions: ['.json'] + }, + 'OASv3-yaml': { + type: 'data', + extensions: ['.yaml', '.yml'] + }, + Oberon: { + type: 'programming', + extensions: ['.ob2'] + }, + ObjDump: { + type: 'data', + extensions: ['.objdump'] + }, + 'Object Data Instance Notation': { + type: 'data', + extensions: ['.odin'] + }, + 'Objective-C': { + type: 'programming', + extensions: ['.m', '.h'], + aliases: ['obj-c', 'objc', 'objectivec'] + }, + 'Objective-C++': { + type: 'programming', + extensions: ['.mm'], + aliases: ['obj-c++', 'objc++', 'objectivec++'] + }, + 'Objective-J': { + type: 'programming', + extensions: ['.j', '.sj'], + aliases: ['obj-j', 'objectivej', 'objj'] + }, + ObjectScript: { + type: 'programming', + extensions: ['.cls'] + }, + OCaml: { + type: 'programming', + extensions: ['.ml', '.eliom', '.eliomi', '.ml4', '.mli', '.mll', '.mly'] + }, + Odin: { + type: 'programming', + extensions: ['.odin'], + aliases: ['odinlang', 'odin-lang'] + }, + Omgrofl: { + type: 'programming', + extensions: ['.omgrofl'] + }, + 'OMNeT++ MSG': { + type: 'programming', + extensions: ['.msg'], + aliases: ['omnetpp-msg'] + }, + 'OMNeT++ NED': { + type: 'programming', + extensions: ['.ned'], + aliases: ['omnetpp-ned'] + }, + ooc: { + type: 'programming', + extensions: ['.ooc'] + }, + Opa: { + type: 'programming', + extensions: ['.opa'] + }, + Opal: { + type: 'programming', + extensions: ['.opal'] + }, + 'Open Policy Agent': { + type: 'programming', + extensions: ['.rego'] + }, + 'OpenAPI Specification v2': { + type: 'data', + aliases: ['oasv2'] + }, + 'OpenAPI Specification v3': { + type: 'data', + aliases: ['oasv3'] + }, + OpenCL: { + type: 'programming', + extensions: ['.cl', '.opencl'] + }, + 'OpenEdge ABL': { + type: 'programming', + extensions: ['.p', '.cls', '.w'], + aliases: ['progress', 'openedge', 'abl'] + }, + OpenQASM: { + type: 'programming', + extensions: ['.qasm'] + }, + 'OpenRC runscript': { + type: 'programming', + aliases: ['openrc'] + }, + OpenSCAD: { + type: 'programming', + extensions: ['.scad'] + }, + 'OpenStep Property List': { + type: 'data', + extensions: ['.plist', '.glyphs'] + }, + 'OpenType Feature File': { + type: 'data', + extensions: ['.fea'], + aliases: ['AFDKO'] + }, + 'Option List': { + type: 'data', + aliases: ['opts', 'ackrc'] + }, + Org: { + type: 'prose', + extensions: ['.org'] + }, + OverpassQL: { + type: 'programming', + extensions: ['.overpassql'] + }, + Ox: { + type: 'programming', + extensions: ['.ox', '.oxh', '.oxo'] + }, + Oxygene: { + type: 'programming', + extensions: ['.oxygene'] + }, + Oz: { + type: 'programming', + extensions: ['.oz'] + }, + P4: { + type: 'programming', + extensions: ['.p4'] + }, + Pact: { + type: 'programming', + extensions: ['.pact'] + }, + Pan: { + type: 'programming', + extensions: ['.pan'] + }, + Papyrus: { + type: 'programming', + extensions: ['.psc'] + }, + Parrot: { + type: 'programming', + extensions: ['.parrot'] + }, + 'Parrot Assembly': { + type: 'programming', + extensions: ['.pasm'], + aliases: ['pasm'] + }, + 'Parrot Internal Representation': { + type: 'programming', + extensions: ['.pir'], + aliases: ['pir'] + }, + Pascal: { + type: 'programming', + extensions: ['.pas', '.dfm', '.dpr', '.inc', '.lpr', '.pascal', '.pp'], + aliases: ['delphi', 'objectpascal'] + }, + Pawn: { + type: 'programming', + extensions: ['.pwn', '.inc', '.sma'] + }, + PDDL: { + type: 'programming', + extensions: ['.pddl'] + }, + 'PEG.js': { + type: 'programming', + extensions: ['.pegjs', '.peggy'] + }, + Pep8: { + type: 'programming', + extensions: ['.pep'] + }, + Perl: { + type: 'programming', + extensions: ['.pl', '.al', '.cgi', '.fcgi', '.perl', '.ph', '.plx', '.pm', '.psgi', '.t'], + aliases: ['cperl'] + }, + PHP: { + type: 'programming', + extensions: ['.php', '.aw', '.ctp', '.fcgi', '.inc', '.php3', '.php4', '.php5', '.phps', '.phpt'], + aliases: ['inc'] + }, + Pic: { + type: 'markup', + extensions: ['.pic', '.chem'], + aliases: ['pikchr'] + }, + Pickle: { + type: 'data', + extensions: ['.pkl'] + }, + PicoLisp: { + type: 'programming', + extensions: ['.l'] + }, + PigLatin: { + type: 'programming', + extensions: ['.pig'] + }, + Pike: { + type: 'programming', + extensions: ['.pike', '.pmod'] + }, + Pkl: { + type: 'programming', + extensions: ['.pkl'] + }, + PlantUML: { + type: 'data', + extensions: ['.puml', '.iuml', '.plantuml'] + }, + PLpgSQL: { + type: 'programming', + extensions: ['.pgsql', '.sql'] + }, + PLSQL: { + type: 'programming', + extensions: [ + '.pls', + '.bdy', + '.ddl', + '.fnc', + '.pck', + '.pkb', + '.pks', + '.plb', + '.plsql', + '.prc', + '.spc', + '.sql', + '.tpb', + '.tps', + '.trg', + '.vw' + ] + }, + Pod: { + type: 'prose', + extensions: ['.pod'] + }, + 'Pod 6': { + type: 'prose', + extensions: ['.pod', '.pod6'] + }, + PogoScript: { + type: 'programming', + extensions: ['.pogo'] + }, + Polar: { + type: 'programming', + extensions: ['.polar'] + }, + Pony: { + type: 'programming', + extensions: ['.pony'] + }, + Portugol: { + type: 'programming', + extensions: ['.por'] + }, + PostCSS: { + type: 'markup', + extensions: ['.pcss', '.postcss'] + }, + PostScript: { + type: 'markup', + extensions: ['.ps', '.eps', '.epsi', '.pfa'], + aliases: ['postscr'] + }, + 'POV-Ray SDL': { + type: 'programming', + extensions: ['.pov', '.inc'], + aliases: ['pov-ray', 'povray'] + }, + PowerBuilder: { + type: 'programming', + extensions: ['.pbt', '.sra', '.sru', '.srw'] + }, + PowerShell: { + type: 'programming', + extensions: ['.ps1', '.psd1', '.psm1'], + aliases: ['posh', 'pwsh'] + }, + Praat: { + type: 'programming', + extensions: ['.praat'] + }, + Prisma: { + type: 'data', + extensions: ['.prisma'] + }, + Processing: { + type: 'programming', + extensions: ['.pde'] + }, + Proguard: { + type: 'data', + extensions: ['.pro'] + }, + Prolog: { + type: 'programming', + extensions: ['.pl', '.plt', '.pro', '.prolog', '.yap'] + }, + Promela: { + type: 'programming', + extensions: ['.pml'] + }, + 'Propeller Spin': { + type: 'programming', + extensions: ['.spin'] + }, + 'Protocol Buffer': { + type: 'data', + extensions: ['.proto'], + aliases: ['proto', 'protobuf', 'Protocol Buffers'] + }, + 'Protocol Buffer Text Format': { + type: 'data', + extensions: ['.textproto', '.pbt', '.pbtxt'], + aliases: ['text proto', 'protobuf text format'] + }, + 'Public Key': { + type: 'data', + extensions: ['.asc', '.pub'] + }, + Pug: { + type: 'markup', + extensions: ['.jade', '.pug'] + }, + Puppet: { + type: 'programming', + extensions: ['.pp'] + }, + 'Pure Data': { + type: 'data', + extensions: ['.pd'] + }, + PureBasic: { + type: 'programming', + extensions: ['.pb', '.pbi'] + }, + PureScript: { + type: 'programming', + extensions: ['.purs'] + }, + Pyret: { + type: 'programming', + extensions: ['.arr'] + }, + Python: { + type: 'programming', + extensions: [ + '.py', + '.cgi', + '.fcgi', + '.gyp', + '.gypi', + '.lmi', + '.py3', + '.pyde', + '.pyi', + '.pyp', + '.pyt', + '.pyw', + '.rpy', + '.spec', + '.tac', + '.wsgi', + '.xpy' + ], + aliases: ['python3', 'rusthon'] + }, + 'Python console': { + type: 'programming', + aliases: ['pycon'] + }, + 'Python traceback': { + type: 'data', + extensions: ['.pytb'] }, q: { - extensions: ['.q'], - type: 'programming' - }, - pike: { - extensions: ['.pike', '.pmod'], - type: 'programming' - }, - robotframework: { - extensions: ['.robot', '.resource'], - type: 'programming' - }, - gedcom: { - extensions: ['.ged'], - type: 'data' - }, - rdoc: { - extensions: ['.rdoc'], - type: 'prose' - }, - 'literate agda': { - extensions: ['.lagda'], - type: 'programming' - }, - dm: { - extensions: ['.dm'], type: 'programming', - aliases: ['byond'] + extensions: ['.q'] }, - ec: { - extensions: ['.ec', '.eh'], - type: 'programming' + 'Q#': { + type: 'programming', + extensions: ['.qs'], + aliases: ['qsharp'] }, - kusto: { - extensions: ['.csl', '.kql'], - type: 'data' + QMake: { + type: 'programming', + extensions: ['.pro', '.pri'] }, - "cap'n proto": { - extensions: ['.capnp'], - type: 'programming' + QML: { + type: 'programming', + extensions: ['.qml', '.qbs'] }, - 'darcs patch': { - extensions: ['.darcspatch', '.dpatch'], + 'Qt Script': { + type: 'programming', + extensions: ['.qs'] + }, + QuickBASIC: { + type: 'programming', + extensions: ['.bas'], + aliases: ['qb', 'qbasic', 'qb64', 'classic qbasic', 'classic quickbasic'] + }, + R: { + type: 'programming', + extensions: ['.r', '.rd', '.rsx'], + aliases: ['Rscript', 'splus'] + }, + Racket: { + type: 'programming', + extensions: ['.rkt', '.rktd', '.rktl', '.scrbl'] + }, + Ragel: { + type: 'programming', + extensions: ['.rl'], + aliases: ['ragel-rb', 'ragel-ruby'] + }, + Raku: { + type: 'programming', + extensions: [ + '.6pl', + '.6pm', + '.nqp', + '.p6', + '.p6l', + '.p6m', + '.pl', + '.pl6', + '.pm', + '.pm6', + '.raku', + '.rakumod', + '.t' + ], + aliases: ['perl6', 'perl-6'] + }, + RAML: { + type: 'markup', + extensions: ['.raml'] + }, + Rascal: { + type: 'programming', + extensions: ['.rsc'] + }, + 'Raw token data': { type: 'data', - aliases: ['dpatch'] + extensions: ['.raw'], + aliases: ['raw'] }, - 'srecode template': { - extensions: ['.srt'], - type: 'markup' + RBS: { + type: 'data', + extensions: ['.rbs'] }, - factor: { - extensions: ['.factor'], - type: 'programming' - }, - tsx: { - extensions: ['.tsx'], - type: 'programming' - }, - css: { - extensions: ['.css'], - type: 'markup' - }, - json5: { - extensions: ['.json5'], - type: 'data' - }, - 'jison lex': { - extensions: ['.jisonlex'], - type: 'programming' - }, - mtml: { - extensions: ['.mtml'], - type: 'markup' - }, - ballerina: { - extensions: ['.bal'], - type: 'programming' - }, - brainfuck: { - extensions: ['.b', '.bf'], - type: 'programming' - }, - swift: { - extensions: ['.swift'], - type: 'programming' - }, - gherkin: { - extensions: ['.feature', '.story'], - type: 'programming', - aliases: ['cucumber'] - }, - textile: { - extensions: ['.textile'], - type: 'prose' - }, - mql4: { - extensions: ['.mq4', '.mqh'], - type: 'programming' - }, - ejs: { - extensions: ['.ejs', '.ect', '.ejs.t', '.jst'], - type: 'markup' - }, - 'asn.1': { - extensions: ['.asn', '.asn1'], - type: 'data' - }, - parrot: { - extensions: ['.parrot'], - type: 'programming' - }, - plantuml: { - extensions: ['.puml', '.iuml', '.plantuml'], - type: 'data' - }, - brightscript: { - extensions: ['.brs'], - type: 'programming' - }, - slim: { - extensions: ['.slim'], - type: 'markup' - }, - svg: { - extensions: ['.svg'], - type: 'data' - }, - e: { - extensions: ['.e'], - type: 'programming' - }, - text: { - extensions: ['.txt', '.fr', '.nb', '.ncl', '.no'], + RDoc: { type: 'prose', + extensions: ['.rdoc'] + }, + 'Readline Config': { + type: 'data', + aliases: ['inputrc', 'readline'] + }, + REALbasic: { + type: 'programming', + extensions: ['.rbbas', '.rbfrm', '.rbmnu', '.rbres', '.rbtbar', '.rbuistate'] + }, + Reason: { + type: 'programming', + extensions: ['.re', '.rei'] + }, + ReasonLIGO: { + type: 'programming', + extensions: ['.religo'] + }, + Rebol: { + type: 'programming', + extensions: ['.reb', '.r', '.r2', '.r3', '.rebol'] + }, + Red: { + type: 'programming', + extensions: ['.red', '.reds'], + aliases: ['red/system'] + }, + Redcode: { + type: 'programming', + extensions: ['.cw'] + }, + 'Redirect Rules': { + type: 'data', + aliases: ['redirects'] + }, + 'Regular Expression': { + type: 'data', + extensions: ['.regexp', '.regex'], + aliases: ['regexp', 'regex'] + }, + "Ren'Py": { + type: 'programming', + extensions: ['.rpy'], + aliases: ['renpy'] + }, + RenderScript: { + type: 'programming', + extensions: ['.rs', '.rsh'] + }, + ReScript: { + type: 'programming', + extensions: ['.res', '.resi'] + }, + reStructuredText: { + type: 'prose', + extensions: ['.rst', '.rest', '.rest.txt', '.rst.txt'], + aliases: ['rst'] + }, + REXX: { + type: 'programming', + extensions: ['.rexx', '.pprx', '.rex'], + aliases: ['arexx'] + }, + Rez: { + type: 'programming', + extensions: ['.r'] + }, + 'Rich Text Format': { + type: 'markup', + extensions: ['.rtf'] + }, + Ring: { + type: 'programming', + extensions: ['.ring'] + }, + Riot: { + type: 'markup', + extensions: ['.riot'] + }, + RMarkdown: { + type: 'prose', + extensions: ['.qmd', '.rmd'] + }, + RobotFramework: { + type: 'programming', + extensions: ['.robot', '.resource'] + }, + 'robots.txt': { + type: 'data', + aliases: ['robots', 'robots txt'] + }, + Roc: { + type: 'programming', + extensions: ['.roc'] + }, + 'Rocq Prover': { + type: 'programming', + extensions: ['.v', '.coq'], + aliases: ['coq', 'rocq'] + }, + Roff: { + type: 'markup', + extensions: [ + '.roff', + '.1', + '.1in', + '.1m', + '.1x', + '.2', + '.3', + '.3in', + '.3m', + '.3p', + '.3pm', + '.3qt', + '.3x', + '.4', + '.5', + '.6', + '.7', + '.8', + '.9', + '.l', + '.man', + '.mdoc', + '.me', + '.ms', + '.n', + '.nr', + '.rno', + '.tmac' + ], + aliases: ['groff', 'man', 'manpage', 'man page', 'man-page', 'mdoc', 'nroff', 'troff'] + }, + 'Roff Manpage': { + type: 'markup', + extensions: [ + '.1', + '.1in', + '.1m', + '.1x', + '.2', + '.3', + '.3in', + '.3m', + '.3p', + '.3pm', + '.3qt', + '.3x', + '.4', + '.5', + '.6', + '.7', + '.8', + '.9', + '.man', + '.mdoc' + ] + }, + RON: { + type: 'data', + extensions: ['.ron'] + }, + Rouge: { + type: 'programming', + extensions: ['.rg'] + }, + 'RouterOS Script': { + type: 'programming', + extensions: ['.rsc'] + }, + RPC: { + type: 'programming', + extensions: ['.x'], + aliases: ['rpcgen', 'oncrpc', 'xdr'] + }, + RPGLE: { + type: 'programming', + extensions: ['.rpgle', '.sqlrpgle'], + aliases: ['ile rpg', 'sqlrpgle'] + }, + 'RPM Spec': { + type: 'data', + extensions: ['.spec'], + aliases: ['specfile'] + }, + Ruby: { + type: 'programming', + extensions: [ + '.rb', + '.builder', + '.eye', + '.fcgi', + '.gemspec', + '.god', + '.jbuilder', + '.mspec', + '.pluginspec', + '.podspec', + '.prawn', + '.rabl', + '.rake', + '.rbi', + '.rbuild', + '.rbw', + '.rbx', + '.ru', + '.ruby', + '.spec', + '.thor', + '.watchr' + ], + aliases: ['jruby', 'macruby', 'rake', 'rb', 'rbx'] + }, + RUNOFF: { + type: 'markup', + extensions: ['.rnh', '.rno'] + }, + Rust: { + type: 'programming', + extensions: ['.rs', '.rs.in'], + aliases: ['rs'] + }, + Sage: { + type: 'programming', + extensions: ['.sage', '.sagews'] + }, + Sail: { + type: 'programming', + extensions: ['.sail'] + }, + SaltStack: { + type: 'programming', + extensions: ['.sls'], + aliases: ['saltstate', 'salt'] + }, + SAS: { + type: 'programming', + extensions: ['.sas'] + }, + Sass: { + type: 'markup', + extensions: ['.sass'] + }, + Scala: { + type: 'programming', + extensions: ['.scala', '.kojo', '.sbt', '.sc'] + }, + Scaml: { + type: 'markup', + extensions: ['.scaml'] + }, + Scenic: { + type: 'programming', + extensions: ['.scenic'] + }, + Scheme: { + type: 'programming', + extensions: ['.scm', '.sch', '.sld', '.sls', '.sps', '.ss'] + }, + Scilab: { + type: 'programming', + extensions: ['.sci', '.sce', '.tst'] + }, + SCSS: { + type: 'markup', + extensions: ['.scss'] + }, + sed: { + type: 'programming', + extensions: ['.sed'] + }, + Self: { + type: 'programming', + extensions: ['.self'] + }, + 'SELinux Policy': { + type: 'data', + extensions: ['.te'], + aliases: ['SELinux Kernel Policy Language', 'sepolicy'] + }, + ShaderLab: { + type: 'programming', + extensions: ['.shader'] + }, + Shell: { + type: 'programming', + extensions: [ + '.sh', + '.bash', + '.bats', + '.cgi', + '.command', + '.fcgi', + '.ksh', + '.sh.in', + '.tmux', + '.tool', + '.trigger', + '.zsh', + '.zsh-theme' + ], + aliases: ['sh', 'shell-script', 'bash', 'zsh', 'envrc'] + }, + 'ShellCheck Config': { + type: 'data', + aliases: ['shellcheckrc'] + }, + ShellSession: { + type: 'programming', + extensions: ['.sh-session'], + aliases: ['bash session', 'console'] + }, + Shen: { + type: 'programming', + extensions: ['.shen'] + }, + Sieve: { + type: 'programming', + extensions: ['.sieve'] + }, + 'Simple File Verification': { + type: 'data', + extensions: ['.sfv'], + aliases: ['sfv'] + }, + Slang: { + type: 'programming', + extensions: ['.slang'] + }, + Slash: { + type: 'programming', + extensions: ['.sl'] + }, + Slice: { + type: 'programming', + extensions: ['.ice'] + }, + Slim: { + type: 'markup', + extensions: ['.slim'] + }, + Slint: { + type: 'markup', + extensions: ['.slint'] + }, + Smali: { + type: 'programming', + extensions: ['.smali'] + }, + Smalltalk: { + type: 'programming', + extensions: ['.st', '.cs'], + aliases: ['squeak'] + }, + Smarty: { + type: 'programming', + extensions: ['.tpl'] + }, + Smithy: { + type: 'programming', + extensions: ['.smithy'] + }, + SmPL: { + type: 'programming', + extensions: ['.cocci'], + aliases: ['coccinelle'] + }, + SMT: { + type: 'programming', + extensions: ['.smt2', '.smt', '.z3'] + }, + Snakemake: { + type: 'programming', + extensions: ['.smk', '.snakefile'], + aliases: ['snakefile'] + }, + Solidity: { + type: 'programming', + extensions: ['.sol'] + }, + SourcePawn: { + type: 'programming', + extensions: ['.sp', '.inc'], + aliases: ['sourcemod'] + }, + SPARQL: { + type: 'data', + extensions: ['.sparql', '.rq'] + }, + 'Spline Font Database': { + type: 'data', + extensions: ['.sfd'] + }, + SQF: { + type: 'programming', + extensions: ['.sqf', '.hqf'] + }, + SQL: { + type: 'data', + extensions: ['.sql', '.cql', '.ddl', '.inc', '.mysql', '.prc', '.tab', '.udf', '.viw'] + }, + SQLPL: { + type: 'programming', + extensions: ['.sql', '.db2'] + }, + Squirrel: { + type: 'programming', + extensions: ['.nut'] + }, + 'SRecode Template': { + type: 'markup', + extensions: ['.srt'] + }, + 'SSH Config': { + type: 'data', + aliases: ['sshconfig', 'sshdconfig', 'ssh_config', 'sshd_config'] + }, + Stan: { + type: 'programming', + extensions: ['.stan'] + }, + 'Standard ML': { + type: 'programming', + extensions: ['.ml', '.fun', '.sig', '.sml'], + aliases: ['sml'] + }, + STAR: { + type: 'data', + extensions: ['.star'] + }, + Starlark: { + type: 'programming', + extensions: ['.bzl', '.star'], + aliases: ['bazel', 'bzl'] + }, + Stata: { + type: 'programming', + extensions: ['.do', '.ado', '.doh', '.ihlp', '.mata', '.matah', '.sthlp'] + }, + STL: { + type: 'data', + extensions: ['.stl'], + aliases: ['ascii stl', 'stla'] + }, + STON: { + type: 'data', + extensions: ['.ston'] + }, + StringTemplate: { + type: 'markup', + extensions: ['.st'] + }, + Stylus: { + type: 'markup', + extensions: ['.styl'] + }, + 'SubRip Text': { + type: 'data', + extensions: ['.srt'] + }, + SugarSS: { + type: 'markup', + extensions: ['.sss'] + }, + SuperCollider: { + type: 'programming', + extensions: ['.sc', '.scd'] + }, + 'Survex data': { + type: 'data', + extensions: ['.svx'] + }, + Svelte: { + type: 'markup', + extensions: ['.svelte'] + }, + SVG: { + type: 'data', + extensions: ['.svg'] + }, + Sway: { + type: 'programming', + extensions: ['.sw'] + }, + Sweave: { + type: 'prose', + extensions: ['.rnw'] + }, + Swift: { + type: 'programming', + extensions: ['.swift'] + }, + SWIG: { + type: 'programming', + extensions: ['.i'] + }, + SystemVerilog: { + type: 'programming', + extensions: ['.sv', '.svh', '.vh'] + }, + Tact: { + type: 'programming', + extensions: ['.tact'] + }, + Talon: { + type: 'programming', + extensions: ['.talon'] + }, + Tcl: { + type: 'programming', + extensions: ['.tcl', '.adp', '.sdc', '.tcl.in', '.tm', '.xdc'], + aliases: ['sdc', 'xdc'] + }, + Tcsh: { + type: 'programming', + extensions: ['.tcsh', '.csh'] + }, + Tea: { + type: 'markup', + extensions: ['.tea'] + }, + templ: { + type: 'markup', + extensions: ['.templ'] + }, + Terra: { + type: 'programming', + extensions: ['.t'] + }, + 'Terraform Template': { + type: 'markup', + extensions: ['.tftpl'] + }, + TeX: { + type: 'markup', + extensions: [ + '.tex', + '.aux', + '.bbx', + '.cbx', + '.cls', + '.dtx', + '.ins', + '.lbx', + '.ltx', + '.mkii', + '.mkiv', + '.mkvi', + '.sty', + '.toc' + ], + aliases: ['latex'] + }, + Texinfo: { + type: 'prose', + extensions: ['.texinfo', '.texi', '.txi'] + }, + Text: { + type: 'prose', + extensions: ['.txt', '.fr', '.nb', '.ncl', '.no'], aliases: ['fundamental', 'plain text'] }, - 'fortran free form': { - extensions: ['.f90', '.f03', '.f08', '.f95'], - type: 'programming' + TextGrid: { + type: 'data', + extensions: ['.TextGrid'] }, - grace: { - extensions: ['.grace'], - type: 'programming' + Textile: { + type: 'prose', + extensions: ['.textile'] }, - clarion: { - extensions: ['.clw'], - type: 'programming' + 'TextMate Properties': { + type: 'data', + aliases: ['tm-properties'] }, - 'kicad legacy layout': { - extensions: ['.brd'], - type: 'data' + Thrift: { + type: 'programming', + extensions: ['.thrift'] }, - asymptote: { - extensions: ['.asy'], - type: 'programming' + 'TI Program': { + type: 'programming', + extensions: ['.8xp', '.8xp.txt'] }, - kotlin: { - extensions: ['.kt', '.ktm', '.kts'], - type: 'programming' + 'TL-Verilog': { + type: 'programming', + extensions: ['.tlv'] }, - texinfo: { - extensions: ['.texinfo', '.texi', '.txi'], - type: 'prose' + TLA: { + type: 'programming', + extensions: ['.tla'] }, - pogoscript: { - extensions: ['.pogo'], - type: 'programming' + Toit: { + type: 'programming', + extensions: ['.toit'] }, - xml: { + TOML: { + type: 'data', + extensions: ['.toml'] + }, + 'Tor Config': { + type: 'data', + aliases: ['torrc'] + }, + 'Tree-sitter Query': { + type: 'programming', + extensions: ['.scm'], + aliases: ['tsq'] + }, + 'TSPLIB data': { + type: 'data', + extensions: ['.tsp'], + aliases: ['travelling salesman problem', 'traveling salesman problem'] + }, + TSQL: { + type: 'programming', + extensions: ['.sql'] + }, + TSV: { + type: 'data', + extensions: ['.tsv', '.vcf'], + aliases: ['tab-seperated values'] + }, + TSX: { + type: 'programming', + extensions: ['.tsx'] + }, + Turing: { + type: 'programming', + extensions: ['.t', '.tu'] + }, + Turtle: { + type: 'data', + extensions: ['.ttl'] + }, + Twig: { + type: 'markup', + extensions: ['.twig'] + }, + TXL: { + type: 'programming', + extensions: ['.txl'] + }, + 'Type Language': { + type: 'data', + extensions: ['.tl'], + aliases: ['tl'] + }, + TypeScript: { + type: 'programming', + extensions: ['.ts', '.cts', '.mts'], + aliases: ['ts'] + }, + TypeSpec: { + type: 'programming', + extensions: ['.tsp'], + aliases: ['tsp'] + }, + Typst: { + type: 'programming', + extensions: ['.typ'], + aliases: ['typ'] + }, + 'Unified Parallel C': { + type: 'programming', + extensions: ['.upc'] + }, + 'Unity3D Asset': { + type: 'data', + extensions: ['.anim', '.asset', '.mask', '.mat', '.meta', '.prefab', '.unity'] + }, + 'Unix Assembly': { + type: 'programming', + extensions: ['.s', '.ms'], + aliases: ['gas', 'gnu asm', 'unix asm'] + }, + Uno: { + type: 'programming', + extensions: ['.uno'] + }, + UnrealScript: { + type: 'programming', + extensions: ['.uc'] + }, + 'Untyped Plutus Core': { + type: 'programming', + extensions: ['.uplc'] + }, + UrWeb: { + type: 'programming', + extensions: ['.ur', '.urs'], + aliases: ['Ur/Web', 'Ur'] + }, + V: { + type: 'programming', + extensions: ['.v'], + aliases: ['vlang'] + }, + Vala: { + type: 'programming', + extensions: ['.vala', '.vapi'] + }, + 'Valve Data Format': { + type: 'data', + extensions: ['.vdf'], + aliases: ['keyvalues', 'vdf'] + }, + VBA: { + type: 'programming', + extensions: ['.bas', '.cls', '.frm', '.vba'], + aliases: ['visual basic for applications'] + }, + VBScript: { + type: 'programming', + extensions: ['.vbs'] + }, + vCard: { + type: 'data', + extensions: ['.vcf'], + aliases: ['virtual contact file', 'electronic business card'] + }, + VCL: { + type: 'programming', + extensions: ['.vcl'] + }, + 'Velocity Template Language': { + type: 'markup', + extensions: ['.vtl'], + aliases: ['vtl', 'velocity'] + }, + Vento: { + type: 'markup', + extensions: ['.vto'] + }, + Verilog: { + type: 'programming', + extensions: ['.v', '.veo'] + }, + VHDL: { + type: 'programming', + extensions: ['.vhdl', '.vhd', '.vhf', '.vhi', '.vho', '.vhs', '.vht', '.vhw'] + }, + 'Vim Help File': { + type: 'prose', + extensions: ['.txt'], + aliases: ['help', 'vimhelp'] + }, + 'Vim Script': { + type: 'programming', + extensions: ['.vim', '.vba', '.vimrc', '.vmb'], + aliases: ['vim', 'viml', 'nvim', 'vimscript'] + }, + 'Vim Snippet': { + type: 'markup', + extensions: ['.snip', '.snippet', '.snippets'], + aliases: ['SnipMate', 'UltiSnip', 'UltiSnips', 'NeoSnippet'] + }, + 'Visual Basic .NET': { + type: 'programming', + extensions: ['.vb', '.vbhtml'], + aliases: ['visual basic', 'vbnet', 'vb .net', 'vb.net'] + }, + 'Visual Basic 6.0': { + type: 'programming', + extensions: ['.bas', '.cls', '.ctl', '.Dsr', '.frm'], + aliases: ['vb6', 'vb 6', 'visual basic 6', 'visual basic classic', 'classic visual basic'] + }, + Volt: { + type: 'programming', + extensions: ['.volt'] + }, + Vue: { + type: 'markup', + extensions: ['.vue'] + }, + Vyper: { + type: 'programming', + extensions: ['.vy'] + }, + 'Wavefront Material': { + type: 'data', + extensions: ['.mtl'] + }, + 'Wavefront Object': { + type: 'data', + extensions: ['.obj'] + }, + WDL: { + type: 'programming', + extensions: ['.wdl'], + aliases: ['Workflow Description Language'] + }, + 'Web Ontology Language': { + type: 'data', + extensions: ['.owl'] + }, + WebAssembly: { + type: 'programming', + extensions: ['.wast', '.wat'], + aliases: ['wast', 'wasm'] + }, + 'WebAssembly Interface Type': { + type: 'data', + extensions: ['.wit'], + aliases: ['wit'] + }, + WebIDL: { + type: 'programming', + extensions: ['.webidl'] + }, + WebVTT: { + type: 'data', + extensions: ['.vtt'], + aliases: ['vtt'] + }, + 'Wget Config': { + type: 'data', + aliases: ['wgetrc'] + }, + WGSL: { + type: 'programming', + extensions: ['.wgsl'] + }, + Whiley: { + type: 'programming', + extensions: ['.whiley'] + }, + Wikitext: { + type: 'prose', + extensions: ['.mediawiki', '.wiki', '.wikitext'], + aliases: ['mediawiki', 'wiki'] + }, + 'Win32 Message File': { + type: 'data', + extensions: ['.mc'] + }, + 'Windows Registry Entries': { + type: 'data', + extensions: ['.reg'] + }, + wisp: { + type: 'programming', + extensions: ['.wisp'] + }, + 'Witcher Script': { + type: 'programming', + extensions: ['.ws'] + }, + Wollok: { + type: 'programming', + extensions: ['.wlk'] + }, + 'World of Warcraft Addon Data': { + type: 'data', + extensions: ['.toc'] + }, + Wren: { + type: 'programming', + extensions: ['.wren'], + aliases: ['wrenlang'] + }, + 'X BitMap': { + type: 'data', + extensions: ['.xbm'], + aliases: ['xbm'] + }, + 'X PixMap': { + type: 'data', + extensions: ['.xpm', '.pm'], + aliases: ['xpm'] + }, + X10: { + type: 'programming', + extensions: ['.x10'], + aliases: ['xten'] + }, + xBase: { + type: 'programming', + extensions: ['.prg', '.ch', '.prw'], + aliases: ['advpl', 'clipper', 'foxpro'] + }, + XC: { + type: 'programming', + extensions: ['.xc'] + }, + XML: { + type: 'data', extensions: [ '.xml', '.adml', @@ -1117,1414 +3562,51 @@ export const languages: Record = { '.xul', '.zcml' ], - type: 'data', aliases: ['rss', 'xsd', 'wsdl'] }, - raml: { - extensions: ['.raml'], - type: 'markup' - }, - flux: { - extensions: ['.fx', '.flux'], - type: 'programming' - }, - nasl: { - extensions: ['.nasl', '.inc'], - type: 'programming' - }, - saltstack: { - extensions: ['.sls'], - type: 'programming', - aliases: ['saltstate', 'salt'] - }, - markdown: { - extensions: [ - '.md', - '.livemd', - '.markdown', - '.mdown', - '.mdwn', - '.mkd', - '.mkdn', - '.mkdown', - '.ronn', - '.scd', - '.workbook' - ], - type: 'prose', - aliases: ['md', 'pandoc'] - }, - starlark: { - extensions: ['.bzl', '.star'], - type: 'programming', - aliases: ['bazel', 'bzl'] - }, - dylan: { - extensions: ['.dylan', '.dyl', '.intr', '.lid'], - type: 'programming' - }, - 'altium designer': { - extensions: ['.OutJob', '.PcbDoc', '.PrjPCB', '.SchDoc'], + 'XML Property List': { type: 'data', - aliases: ['altium'] + extensions: ['.plist', '.stTheme', '.tmCommand', '.tmLanguage', '.tmPreferences', '.tmSnippet', '.tmTheme'] }, - mask: { - extensions: ['.mask'], - type: 'markup' - }, - aidl: { - extensions: ['.aidl'], - type: 'programming' - }, - powerbuilder: { - extensions: ['.pbt', '.sra', '.sru', '.srw'], - type: 'programming' - }, - max: { - extensions: ['.maxpat', '.maxhelp', '.maxproj', '.mxt', '.pat'], + Xojo: { type: 'programming', - aliases: ['max/msp', 'maxmsp'] + extensions: ['.xojo_code', '.xojo_menu', '.xojo_report', '.xojo_script', '.xojo_toolbar', '.xojo_window'] }, - 'ti program': { - extensions: ['.8xp', '.8xp.txt'], - type: 'programming' + Xonsh: { + type: 'programming', + extensions: ['.xsh'] }, - moocode: { - extensions: ['.moo'], - type: 'programming' - }, - sql: { - extensions: ['.sql', '.cql', '.ddl', '.inc', '.mysql', '.prc', '.tab', '.udf', '.viw'], - type: 'data' - }, - dhall: { - extensions: ['.dhall'], - type: 'programming' - }, - befunge: { - extensions: ['.befunge', '.bf'], - type: 'programming' - }, - 'irc log': { - extensions: ['.irclog', '.weechatlog'], + XPages: { type: 'data', - aliases: ['irc', 'irc logs'] + extensions: ['.xsp-config', '.xsp.metadata'] }, - krl: { - extensions: ['.krl'], - type: 'programming' - }, - 'apollo guidance computer': { - extensions: ['.agc'], - type: 'programming' - }, - ring: { - extensions: ['.ring'], - type: 'programming' - }, - ada: { - extensions: ['.adb', '.ada', '.ads'], + XProc: { type: 'programming', - aliases: ['ada95', 'ada2005'] + extensions: ['.xpl', '.xproc'] }, - lua: { - extensions: ['.lua', '.fcgi', '.nse', '.p8', '.pd_lua', '.rbxs', '.rockspec', '.wlua'], - type: 'programming' - }, - gams: { - extensions: ['.gms'], - type: 'programming' - }, - csv: { - extensions: ['.csv'], - type: 'data' - }, - asl: { - extensions: ['.asl', '.dsl'], - type: 'programming' - }, - 'graphviz (dot)': { - extensions: ['.dot', '.gv'], - type: 'data' - }, - 'figlet font': { - extensions: ['.flf'], - type: 'data', - aliases: ['FIGfont'] - }, - edn: { - extensions: ['.edn'], - type: 'data' - }, - txl: { - extensions: ['.txl'], - type: 'programming' - }, - roff: { - extensions: [ - '.roff', - '.1', - '.1in', - '.1m', - '.1x', - '.2', - '.3', - '.3in', - '.3m', - '.3p', - '.3pm', - '.3qt', - '.3x', - '.4', - '.5', - '.6', - '.7', - '.8', - '.9', - '.l', - '.man', - '.mdoc', - '.me', - '.ms', - '.n', - '.nr', - '.rno', - '.tmac' - ], - type: 'markup', - aliases: ['groff', 'man', 'manpage', 'man page', 'man-page', 'mdoc', 'nroff', 'troff'] - }, - idl: { - extensions: ['.pro', '.dlm'], - type: 'programming' - }, - neon: { - extensions: ['.neon'], - type: 'data', - aliases: ['nette object notation', 'ne-on'] - }, - 'rich text format': { - extensions: ['.rtf'], - type: 'markup' - }, - 'peg.js': { - extensions: ['.pegjs', '.peggy'], - type: 'programming' - }, - glyph: { - extensions: ['.glf'], - type: 'programming' - }, - io: { - extensions: ['.io'], - type: 'programming' - }, - nsis: { - extensions: ['.nsi', '.nsh'], - type: 'programming' - }, - papyrus: { - extensions: ['.psc'], - type: 'programming' - }, - 'raw token data': { - extensions: ['.raw'], - type: 'data', - aliases: ['raw'] - }, - 'windows registry entries': { - extensions: ['.reg'], - type: 'data' - }, - zephir: { - extensions: ['.zep'], - type: 'programming' - }, - 'objective-c++': { - extensions: ['.mm'], + XQuery: { type: 'programming', - aliases: ['obj-c++', 'objc++', 'objectivec++'] + extensions: ['.xquery', '.xq', '.xql', '.xqm', '.xqy'] }, - wisp: { - extensions: ['.wisp'], - type: 'programming' - }, - 'protocol buffer': { - extensions: ['.proto'], - type: 'data', - aliases: ['proto', 'protobuf', 'Protocol Buffers'] - }, - 'object data instance notation': { - extensions: ['.odin'], - type: 'data' - }, - modelica: { - extensions: ['.mo'], - type: 'programming' - }, - easybuild: { - extensions: ['.eb'], - type: 'data' - }, - 'web ontology language': { - extensions: ['.owl'], - type: 'data' - }, - sage: { - extensions: ['.sage', '.sagews'], - type: 'programming' - }, - basic: { - extensions: ['.bas'], - type: 'programming' - }, - smt: { - extensions: ['.smt2', '.smt', '.z3'], - type: 'programming' - }, - tea: { - extensions: ['.tea'], - type: 'markup' - }, - powershell: { - extensions: ['.ps1', '.psd1', '.psm1'], + XS: { type: 'programming', - aliases: ['posh', 'pwsh'] + extensions: ['.xs'] }, - boogie: { - extensions: ['.bpl'], - type: 'programming' - }, - maxscript: { - extensions: ['.ms', '.mcr'], - type: 'programming' - }, - gaml: { - extensions: ['.gaml'], - type: 'programming' - }, - vbscript: { - extensions: ['.vbs'], - type: 'programming' - }, - antlr: { - extensions: ['.g4'], - type: 'programming' - }, - verilog: { - extensions: ['.v', '.veo'], - type: 'programming' - }, - limbo: { - extensions: ['.b', '.m'], - type: 'programming' - }, - j: { - extensions: ['.ijs'], - type: 'programming' - }, - fennel: { - extensions: ['.fnl'], - type: 'programming' - }, - tla: { - extensions: ['.tla'], - type: 'programming' - }, - eq: { - extensions: ['.eq'], - type: 'programming' - }, - 'igor pro': { - extensions: ['.ipf'], + XSLT: { type: 'programming', - aliases: ['igor', 'igorpro'] - }, - 'regular expression': { - extensions: ['.regexp', '.regex'], - type: 'data', - aliases: ['regexp', 'regex'] - }, - apacheconf: { - extensions: ['.apacheconf', '.vhost'], - type: 'data', - aliases: ['aconf', 'apache'] - }, - objdump: { - extensions: ['.objdump'], - type: 'data' - }, - pickle: { - extensions: ['.pkl'], - type: 'data' - }, - cweb: { - extensions: ['.w'], - type: 'programming' - }, - plsql: { - extensions: [ - '.pls', - '.bdy', - '.ddl', - '.fnc', - '.pck', - '.pkb', - '.pks', - '.plb', - '.plsql', - '.prc', - '.spc', - '.sql', - '.tpb', - '.tps', - '.trg', - '.vw' - ], - type: 'programming' - }, - shellsession: { - extensions: ['.sh-session'], - type: 'programming', - aliases: ['bash session', 'console'] - }, - x10: { - extensions: ['.x10'], - type: 'programming', - aliases: ['xten'] - }, - thrift: { - extensions: ['.thrift'], - type: 'programming' - }, - 'microsoft visual studio solution': { - extensions: ['.sln'], - type: 'data' - }, - freemarker: { - extensions: ['.ftl'], - type: 'programming', - aliases: ['ftl'] - }, - creole: { - extensions: ['.creole'], - type: 'prose' - }, - python: { - extensions: [ - '.py', - '.cgi', - '.fcgi', - '.gyp', - '.gypi', - '.lmi', - '.py3', - '.pyde', - '.pyi', - '.pyp', - '.pyt', - '.pyw', - '.rpy', - '.spec', - '.tac', - '.wsgi', - '.xpy' - ], - type: 'programming', - aliases: ['python3', 'rusthon'] - }, - livescript: { - extensions: ['.ls', '._ls'], - type: 'programming', - aliases: ['live-script', 'ls'] - }, - numpy: { - extensions: ['.numpy', '.numpyw', '.numsc'], - type: 'programming' - }, - objectscript: { - extensions: ['.cls'], - type: 'programming' - }, - 'jest snapshot': { - extensions: ['.snap'], - type: 'data' - }, - 'unified parallel c': { - extensions: ['.upc'], - type: 'programming' - }, - 'openstep property list': { - extensions: ['.plist', '.glyphs'], - type: 'data' - }, - 'conll-u': { - extensions: ['.conllu', '.conll'], - type: 'data', - aliases: ['CoNLL', 'CoNLL-X'] - }, - frege: { - extensions: ['.fr'], - type: 'programming' - }, - toml: { - extensions: ['.toml'], - type: 'data' - }, - haml: { - extensions: ['.haml', '.haml.deface'], - type: 'markup' - }, - jsoniq: { - extensions: ['.jq'], - type: 'programming' - }, - picolisp: { - extensions: ['.l'], - type: 'programming' - }, - collada: { - extensions: ['.dae'], - type: 'data' - }, - erlang: { - extensions: ['.erl', '.app', '.app.src', '.es', '.escript', '.hrl', '.xrl', '.yrl'], - type: 'programming' - }, - 'ignore list': { - extensions: ['.gitignore'], - type: 'data', - aliases: ['ignore', 'gitignore', 'git-ignore'] - }, - ini: { - extensions: ['.ini', '.cfg', '.cnf', '.dof', '.frm', '.lektorproject', '.prefs', '.pro', '.properties', '.url'], - type: 'data', - aliases: ['dosini'] - }, - '4d': { - extensions: ['.4dm'], - type: 'programming' - }, - freebasic: { - extensions: ['.bi', '.bas'], - type: 'programming', - aliases: ['fb'] - }, - 'classic asp': { - extensions: ['.asp'], - type: 'programming', - aliases: ['asp'] - }, - 'c-objdump': { - extensions: ['.c-objdump'], - type: 'data' - }, - gradle: { - extensions: ['.gradle'], - type: 'data' - }, - dataweave: { - extensions: ['.dwl'], - type: 'programming' - }, - matlab: { - extensions: ['.matlab', '.m'], - type: 'programming', - aliases: ['octave'] - }, - bicep: { - extensions: ['.bicep', '.bicepparam'], - type: 'programming' - }, - 'e-mail': { - extensions: ['.eml', '.mbox'], - type: 'data', - aliases: ['email', 'eml', 'mail', 'mbox'] - }, - rebol: { - extensions: ['.reb', '.r', '.r2', '.r3', '.rebol'], - type: 'programming' - }, - r: { - extensions: ['.r', '.rd', '.rsx'], - type: 'programming', - aliases: ['Rscript', 'splus'] - }, - restructuredtext: { - extensions: ['.rst', '.rest', '.rest.txt', '.rst.txt'], - type: 'prose', - aliases: ['rst'] - }, - pug: { - extensions: ['.jade', '.pug'], - type: 'markup' - }, - ecl: { - extensions: ['.ecl', '.eclxml'], - type: 'programming' - }, - myghty: { - extensions: ['.myt'], - type: 'programming' - }, - 'game maker language': { - extensions: ['.gml'], - type: 'programming' - }, - redcode: { - extensions: ['.cw'], - type: 'programming' - }, - 'x pixmap': { - extensions: ['.xpm', '.pm'], - type: 'data', - aliases: ['xpm'] - }, - 'propeller spin': { - extensions: ['.spin'], - type: 'programming' - }, - xslt: { extensions: ['.xslt', '.xsl'], - type: 'programming', aliases: ['xsl'] }, - dart: { - extensions: ['.dart'], - type: 'programming' - }, - astro: { - extensions: ['.astro'], - type: 'markup' - }, - java: { - extensions: ['.java', '.jav', '.jsh'], - type: 'programming' - }, - 'groovy server pages': { - extensions: ['.gsp'], + Xtend: { type: 'programming', - aliases: ['gsp', 'java server page'] + extensions: ['.xtend'] }, - postscript: { - extensions: ['.ps', '.eps', '.epsi', '.pfa'], - type: 'markup', - aliases: ['postscr'] - }, - bibtex: { - extensions: ['.bib', '.bibtex'], - type: 'markup' - }, - cython: { - extensions: ['.pyx', '.pxd', '.pxi'], + Yacc: { type: 'programming', - aliases: ['pyrex'] + extensions: ['.y', '.yacc', '.yy'] }, - gosu: { - extensions: ['.gs', '.gst', '.gsx', '.vark'], - type: 'programming' - }, - ston: { - extensions: ['.ston'], - type: 'data' - }, - renderscript: { - extensions: ['.rs', '.rsh'], - type: 'programming' - }, - lfe: { - extensions: ['.lfe'], - type: 'programming' - }, - ampl: { - extensions: ['.ampl', '.mod'], - type: 'programming' - }, - beef: { - extensions: ['.bf'], - type: 'programming' - }, - 'cue sheet': { - extensions: ['.cue'], - type: 'data' - }, - 'objective-c': { - extensions: ['.m', '.h'], - type: 'programming', - aliases: ['obj-c', 'objc', 'objectivec'] - }, - scaml: { - extensions: ['.scaml'], - type: 'markup' - }, - slice: { - extensions: ['.ice'], - type: 'programming' - }, - zig: { - extensions: ['.zig', '.zig.zon'], - type: 'programming' - }, - 'open policy agent': { - extensions: ['.rego'], - type: 'programming' - }, - opal: { - extensions: ['.opal'], - type: 'programming' - }, - macaulay2: { - extensions: ['.m2'], - type: 'programming', - aliases: ['m2'] - }, - twig: { - extensions: ['.twig'], - type: 'markup' - }, - autoit: { - extensions: ['.au3'], - type: 'programming', - aliases: ['au3', 'AutoIt3', 'AutoItScript'] - }, - mupad: { - extensions: ['.mu'], - type: 'programming' - }, - coldfusion: { - extensions: ['.cfm', '.cfml'], - type: 'programming', - aliases: ['cfm', 'cfml', 'coldfusion html'] - }, - 'valve data format': { - extensions: ['.vdf'], + YAML: { type: 'data', - aliases: ['keyvalues', 'vdf'] - }, - sourcepawn: { - extensions: ['.sp', '.inc'], - type: 'programming', - aliases: ['sourcemod'] - }, - p4: { - extensions: ['.p4'], - type: 'programming' - }, - 'spline font database': { - extensions: ['.sfd'], - type: 'data' - }, - c: { - extensions: ['.c', '.cats', '.h', '.h.in', '.idc'], - type: 'programming' - }, - 'xml property list': { - extensions: ['.plist', '.stTheme', '.tmCommand', '.tmLanguage', '.tmPreferences', '.tmSnippet', '.tmTheme'], - type: 'data' - }, - blitzmax: { - extensions: ['.bmx'], - type: 'programming', - aliases: ['bmax'] - }, - 'literate coffeescript': { - extensions: ['.litcoffee', '.coffee.md'], - type: 'programming', - aliases: ['litcoffee'] - }, - moonscript: { - extensions: ['.moon'], - type: 'programming' - }, - zenscript: { - extensions: ['.zs'], - type: 'programming' - }, - desktop: { - extensions: ['.desktop', '.desktop.in', '.service'], - type: 'data' - }, - angelscript: { - extensions: ['.as', '.angelscript'], - type: 'programming' - }, - 'csound score': { - extensions: ['.sco'], - type: 'programming', - aliases: ['csound-sco'] - }, - scss: { - extensions: ['.scss'], - type: 'markup' - }, - eagle: { - extensions: ['.sch', '.brd'], - type: 'data' - }, - jsonld: { - extensions: ['.jsonld'], - type: 'data' - }, - 'microsoft developer studio project': { - extensions: ['.dsp'], - type: 'data' - }, - liquid: { - extensions: ['.liquid'], - type: 'markup' - }, - yara: { - extensions: ['.yar', '.yara'], - type: 'programming' - }, - yasnippet: { - extensions: ['.yasnippet'], - type: 'markup', - aliases: ['snippet', 'yas'] - }, - qml: { - extensions: ['.qml', '.qbs'], - type: 'programming' - }, - newlisp: { - extensions: ['.nl', '.lisp', '.lsp'], - type: 'programming' - }, - m4: { - extensions: ['.m4', '.mc'], - type: 'programming' - }, - 'gcc machine description': { - extensions: ['.md'], - type: 'programming' - }, - odin: { - extensions: ['.odin'], - type: 'programming', - aliases: ['odinlang', 'odin-lang'] - }, - 'subrip text': { - extensions: ['.srt'], - type: 'data' - }, - nesc: { - extensions: ['.nc'], - type: 'programming' - }, - isabelle: { - extensions: ['.thy'], - type: 'programming' - }, - jsonnet: { - extensions: ['.jsonnet', '.libsonnet'], - type: 'programming' - }, - purebasic: { - extensions: ['.pb', '.pbi'], - type: 'programming' - }, - proguard: { - extensions: ['.pro'], - type: 'data' - }, - nunjucks: { - extensions: ['.njk'], - type: 'markup', - aliases: ['njk'] - }, - stringtemplate: { - extensions: ['.st'], - type: 'markup' - }, - 'roff manpage': { - extensions: [ - '.1', - '.1in', - '.1m', - '.1x', - '.2', - '.3', - '.3in', - '.3m', - '.3p', - '.3pm', - '.3qt', - '.3x', - '.4', - '.5', - '.6', - '.7', - '.8', - '.9', - '.man', - '.mdoc' - ], - type: 'markup' - }, - 'vim snippet': { - extensions: ['.snip', '.snippet', '.snippets'], - type: 'markup', - aliases: ['SnipMate', 'UltiSnip', 'UltiSnips', 'NeoSnippet'] - }, - 'html+erb': { - extensions: ['.erb', '.erb.deface', '.rhtml'], - type: 'markup', - aliases: ['erb', 'rhtml', 'html+ruby'] - }, - fluent: { - extensions: ['.ftl'], - type: 'programming' - }, - turtle: { - extensions: ['.ttl'], - type: 'data' - }, - 'objective-j': { - extensions: ['.j', '.sj'], - type: 'programming', - aliases: ['obj-j', 'objectivej', 'objj'] - }, - 'kaitai struct': { - extensions: ['.ksy'], - type: 'programming', - aliases: ['ksy'] - }, - scala: { - extensions: ['.scala', '.kojo', '.sbt', '.sc'], - type: 'programming' - }, - sas: { - extensions: ['.sas'], - type: 'programming' - }, - zeek: { - extensions: ['.zeek', '.bro'], - type: 'programming', - aliases: ['bro'] - }, - vba: { - extensions: ['.bas', '.cls', '.frm', '.vba'], - type: 'programming', - aliases: ['visual basic for applications'] - }, - go: { - extensions: ['.go'], - type: 'programming', - aliases: ['golang'] - }, - php: { - extensions: ['.php', '.aw', '.ctp', '.fcgi', '.inc', '.php3', '.php4', '.php5', '.phps', '.phpt'], - type: 'programming', - aliases: ['inc'] - }, - smali: { - extensions: ['.smali'], - type: 'programming' - }, - gnuplot: { - extensions: ['.gp', '.gnu', '.gnuplot', '.p', '.plot', '.plt'], - type: 'programming' - }, - fish: { - extensions: ['.fish'], - type: 'programming' - }, - 'selinux policy': { - extensions: ['.te'], - type: 'data', - aliases: ['SELinux Kernel Policy Language', 'sepolicy'] - }, - tcl: { - extensions: ['.tcl', '.adp', '.sdc', '.tcl.in', '.tm', '.xdc'], - type: 'programming', - aliases: ['sdc', 'xdc'] - }, - webvtt: { - extensions: ['.vtt'], - type: 'data', - aliases: ['vtt'] - }, - 'graph modeling language': { - extensions: ['.gml'], - type: 'data' - }, - netlinx: { - extensions: ['.axs', '.axi'], - type: 'programming' - }, - fancy: { - extensions: ['.fy', '.fancypack'], - type: 'programming' - }, - 'edje data collection': { - extensions: ['.edc'], - type: 'data' - }, - rascal: { - extensions: ['.rsc'], - type: 'programming' - }, - vue: { - extensions: ['.vue'], - type: 'markup' - }, - chuck: { - extensions: ['.ck'], - type: 'programming' - }, - nwscript: { - extensions: ['.nss'], - type: 'programming' - }, - eclipse: { - extensions: ['.ecl'], - type: 'programming' - }, - 'pod 6': { - extensions: ['.pod', '.pod6'], - type: 'prose' - }, - rescript: { - extensions: ['.res', '.resi'], - type: 'programming' - }, - idris: { - extensions: ['.idr', '.lidr'], - type: 'programming' - }, - hy: { - extensions: ['.hy'], - type: 'programming', - aliases: ['hylang'] - }, - apl: { - extensions: ['.apl', '.dyalog'], - type: 'programming' - }, - hlsl: { - extensions: ['.hlsl', '.cginc', '.fx', '.fxh', '.hlsli'], - type: 'programming' - }, - csound: { - extensions: ['.orc', '.udo'], - type: 'programming', - aliases: ['csound-orc'] - }, - genshi: { - extensions: ['.kid'], - type: 'programming', - aliases: ['xml+genshi', 'xml+kid'] - }, - elm: { - extensions: ['.elm'], - type: 'programming' - }, - swig: { - extensions: ['.i'], - type: 'programming' - }, - reason: { - extensions: ['.re', '.rei'], - type: 'programming' - }, - processing: { - extensions: ['.pde'], - type: 'programming' - }, - 'common workflow language': { - extensions: ['.cwl'], - type: 'programming', - aliases: ['cwl'] - }, - mustache: { - extensions: ['.mustache'], - type: 'markup' - }, - 'asp.net': { - extensions: ['.asax', '.ascx', '.ashx', '.asmx', '.aspx', '.axd'], - type: 'programming', - aliases: ['aspx', 'aspx-vb'] - }, - rexx: { - extensions: ['.rexx', '.pprx', '.rex'], - type: 'programming', - aliases: ['arexx'] - }, - lsl: { - extensions: ['.lsl', '.lslp'], - type: 'programming' - }, - 'pov-ray sdl': { - extensions: ['.pov', '.inc'], - type: 'programming', - aliases: ['pov-ray', 'povray'] - }, - pep8: { - extensions: ['.pep'], - type: 'programming' - }, - 'ags script': { - extensions: ['.asc', '.ash'], - type: 'programming', - aliases: ['ags'] - }, - dockerfile: { - extensions: ['.dockerfile', '.containerfile'], - type: 'programming', - aliases: ['Containerfile'] - }, - muf: { - extensions: ['.muf', '.m'], - type: 'programming' - }, - javascript: { - extensions: [ - '.js', - '._js', - '.bones', - '.cjs', - '.es', - '.es6', - '.frag', - '.gs', - '.jake', - '.javascript', - '.jsb', - '.jscad', - '.jsfl', - '.jslib', - '.jsm', - '.jspre', - '.jss', - '.jsx', - '.mjs', - '.njs', - '.pac', - '.sjs', - '.ssjs', - '.xsjs', - '.xsjslib' - ], - type: 'programming', - aliases: ['js', 'node'] - }, - 'type language': { - extensions: ['.tl'], - type: 'data', - aliases: ['tl'] - }, - runoff: { - extensions: ['.rnh', '.rno'], - type: 'markup' - }, - wdl: { - extensions: ['.wdl'], - type: 'programming', - aliases: ['Workflow Description Language'] - }, - blitzbasic: { - extensions: ['.bb', '.decls'], - type: 'programming', - aliases: ['b3d', 'blitz3d', 'blitzplus', 'bplus'] - }, - actionscript: { - extensions: ['.as'], - type: 'programming', - aliases: ['actionscript 3', 'actionscript3', 'as3'] - }, - pic: { - extensions: ['.pic', '.chem'], - type: 'markup', - aliases: ['pikchr'] - }, - xbase: { - extensions: ['.prg', '.ch', '.prw'], - type: 'programming', - aliases: ['advpl', 'clipper', 'foxpro'] - }, - sed: { - extensions: ['.sed'], - type: 'programming' - }, - 'gettext catalog': { - extensions: ['.po', '.pot'], - type: 'prose', - aliases: ['pot'] - }, - cool: { - extensions: ['.cl'], - type: 'programming' - }, - 'java server pages': { - extensions: ['.jsp', '.tag'], - type: 'programming', - aliases: ['jsp'] - }, - ocaml: { - extensions: ['.ml', '.eliom', '.eliomi', '.ml4', '.mli', '.mll', '.mly'], - type: 'programming' - }, - bison: { - extensions: ['.bison'], - type: 'programming' - }, - stylus: { - extensions: ['.styl'], - type: 'markup' - }, - click: { - extensions: ['.click'], - type: 'programming' - }, - marko: { - extensions: ['.marko'], - type: 'markup', - aliases: ['markojs'] - }, - clips: { - extensions: ['.clp'], - type: 'programming' - }, - wollok: { - extensions: ['.wlk'], - type: 'programming' - }, - sqf: { - extensions: ['.sqf', '.hqf'], - type: 'programming' - }, - al: { - extensions: ['.al'], - type: 'programming' - }, - alloy: { - extensions: ['.als'], - type: 'programming' - }, - futhark: { - extensions: ['.fut'], - type: 'programming' - }, - shell: { - extensions: [ - '.sh', - '.bash', - '.bats', - '.cgi', - '.command', - '.fcgi', - '.ksh', - '.sh.in', - '.tmux', - '.tool', - '.trigger', - '.zsh', - '.zsh-theme' - ], - type: 'programming', - aliases: ['sh', 'shell-script', 'bash', 'zsh', 'envrc'] - }, - codeql: { - extensions: ['.ql', '.qll'], - type: 'programming', - aliases: ['ql'] - }, - 'motorola 68k assembly': { - extensions: ['.asm', '.i', '.inc', '.s', '.x68'], - type: 'programming', - aliases: ['m68k'] - }, - postcss: { - extensions: ['.pcss', '.postcss'], - type: 'markup' - }, - xs: { - extensions: ['.xs'], - type: 'programming' - }, - pascal: { - extensions: ['.pas', '.dfm', '.dpr', '.inc', '.lpr', '.pascal', '.pp'], - type: 'programming', - aliases: ['delphi', 'objectpascal'] - }, - 'html+php': { - extensions: ['.phtml'], - type: 'markup' - }, - bitbake: { - extensions: ['.bb', '.bbappend', '.bbclass', '.inc'], - type: 'programming' - }, - 'kicad schematic': { - extensions: ['.kicad_sch', '.kicad_sym', '.sch'], - type: 'data', - aliases: ['eeschema schematic'] - }, - 'mirc script': { - extensions: ['.mrc'], - type: 'programming' - }, - emberscript: { - extensions: ['.em', '.emberscript'], - type: 'programming' - }, - oxygene: { - extensions: ['.oxygene'], - type: 'programming' - }, - awk: { - extensions: ['.awk', '.auk', '.gawk', '.mawk', '.nawk'], - type: 'programming' - }, - jinja: { - extensions: ['.jinja', '.j2', '.jinja2'], - type: 'markup', - aliases: ['django', 'html+django', 'html+jinja', 'htmldjango'] - }, - augeas: { - extensions: ['.aug'], - type: 'programming' - }, - webidl: { - extensions: ['.webidl'], - type: 'programming' - }, - 'opentype feature file': { - extensions: ['.fea'], - type: 'data', - aliases: ['AFDKO'] - }, - 'emacs lisp': { - extensions: ['.el', '.emacs', '.emacs.desktop'], - type: 'programming', - aliases: ['elisp', 'emacs'] - }, - 'gentoo eclass': { - extensions: ['.eclass'], - type: 'programming' - }, - pony: { - extensions: ['.pony'], - type: 'programming' - }, - chapel: { - extensions: ['.chpl'], - type: 'programming', - aliases: ['chpl'] - }, - ats: { - extensions: ['.dats', '.hats', '.sats'], - type: 'programming', - aliases: ['ats2'] - }, - 'git config': { - extensions: ['.gitconfig'], - type: 'data', - aliases: ['gitconfig', 'gitmodules'] - }, - 'd-objdump': { - extensions: ['.d-objdump'], - type: 'data' - }, - hxml: { - extensions: ['.hxml'], - type: 'data' - }, - 'dns zone': { - extensions: ['.zone', '.arpa'], - type: 'data' - }, - handlebars: { - extensions: ['.handlebars', '.hbs'], - type: 'markup', - aliases: ['hbs', 'htmlbars'] - }, - sieve: { - extensions: ['.sieve'], - type: 'programming' - }, - sugarss: { - extensions: ['.sss'], - type: 'markup' - }, - 'csound document': { - extensions: ['.csd'], - type: 'programming', - aliases: ['csound-csd'] - }, - tsv: { - extensions: ['.tsv', '.vcf'], - type: 'data', - aliases: ['tab-seperated values'] - }, - jasmin: { - extensions: ['.j'], - type: 'programming' - }, - 'linux kernel module': { - extensions: ['.mod'], - type: 'data' - }, - supercollider: { - extensions: ['.sc', '.scd'], - type: 'programming' - }, - 'x bitmap': { - extensions: ['.xbm'], - type: 'data', - aliases: ['xbm'] - }, - opencl: { - extensions: ['.cl', '.opencl'], - type: 'programming' - }, - 'literate haskell': { - extensions: ['.lhs'], - type: 'programming', - aliases: ['lhaskell', 'lhs'] - }, - html: { - extensions: ['.html', '.hta', '.htm', '.html.hl', '.inc', '.xht', '.xhtml'], - type: 'markup', - aliases: ['xhtml'] - }, - typescript: { - extensions: ['.ts', '.cts', '.mts'], - type: 'programming', - aliases: ['ts'] - }, - smalltalk: { - extensions: ['.st', '.cs'], - type: 'programming', - aliases: ['squeak'] - }, - cson: { - extensions: ['.cson'], - type: 'data' - }, - riot: { - extensions: ['.riot'], - type: 'markup' - }, - solidity: { - extensions: ['.sol'], - type: 'programming' - }, - volt: { - extensions: ['.volt'], - type: 'programming' - }, - lex: { - extensions: ['.l', '.lex'], - type: 'programming', - aliases: ['flex'] - }, - 'inform 7': { - extensions: ['.ni', '.i7x'], - type: 'programming', - aliases: ['i7', 'inform7'] - }, - yaml: { extensions: [ '.yml', '.mir', @@ -2537,368 +3619,56 @@ export const languages: Record = { '.yaml.sed', '.yml.mysql' ], - type: 'data', aliases: ['yml'] }, - 'avro idl': { - extensions: ['.avdl'], - type: 'data' - }, - omgrofl: { - extensions: ['.omgrofl'], - type: 'programming' - }, - kit: { - extensions: ['.kit'], - type: 'markup' - }, - 'modula-3': { - extensions: ['.i3', '.ig', '.m3', '.mg'], - type: 'programming' - }, - xquery: { - extensions: ['.xquery', '.xq', '.xql', '.xqm', '.xqy'], - type: 'programming' - }, - nu: { - extensions: ['.nu'], - type: 'programming', - aliases: ['nush'] - }, - lasso: { - extensions: ['.lasso', '.las', '.lasso8', '.lasso9'], - type: 'programming', - aliases: ['lassoscript'] - }, - openscad: { - extensions: ['.scad'], - type: 'programming' - }, - vala: { - extensions: ['.vala', '.vapi'], - type: 'programming' - }, - lookml: { - extensions: ['.lkml', '.lookml'], - type: 'programming' - }, - hyphy: { - extensions: ['.bf'], - type: 'programming' - }, - openqasm: { - extensions: ['.qasm'], - type: 'programming' - }, - 'wavefront material': { - extensions: ['.mtl'], - type: 'data' - }, - 'linker script': { - extensions: ['.ld', '.lds', '.x'], - type: 'programming' - }, - nl: { - extensions: ['.nl'], - type: 'data' - }, - dogescript: { - extensions: ['.djs'], - type: 'programming' - }, - 'adobe font metrics': { - extensions: ['.afm'], + YANG: { type: 'data', - aliases: ['acfm', 'adobe composite font metrics', 'adobe multiple font metrics', 'amfm'] + extensions: ['.yang'] }, - 'gerber image': { - extensions: [ - '.gbr', - '.cmp', - '.gbl', - '.gbo', - '.gbp', - '.gbs', - '.gko', - '.gml', - '.gpb', - '.gpt', - '.gtl', - '.gto', - '.gtp', - '.gts', - '.ncl', - '.sol' - ], + YARA: { + type: 'programming', + extensions: ['.yar', '.yara'] + }, + YASnippet: { + type: 'markup', + extensions: ['.yasnippet'], + aliases: ['snippet', 'yas'] + }, + Yul: { + type: 'programming', + extensions: ['.yul'] + }, + ZAP: { + type: 'programming', + extensions: ['.zap', '.xzap'] + }, + Zeek: { + type: 'programming', + extensions: ['.zeek', '.bro'], + aliases: ['bro'] + }, + ZenScript: { + type: 'programming', + extensions: ['.zs'] + }, + Zephir: { + type: 'programming', + extensions: ['.zep'] + }, + Zig: { + type: 'programming', + extensions: ['.zig', '.zig.zon'] + }, + ZIL: { + type: 'programming', + extensions: ['.zil', '.mud'] + }, + Zimpl: { + type: 'programming', + extensions: ['.zimpl', '.zmpl', '.zpl'] + }, + Zmodel: { type: 'data', - aliases: ['rs-274x'] - }, - nit: { - extensions: ['.nit'], - type: 'programming' - }, - 'grammatical framework': { - extensions: ['.gf'], - type: 'programming', - aliases: ['gf'] - }, - pan: { - extensions: ['.pan'], - type: 'programming' - }, - self: { - extensions: ['.self'], - type: 'programming' - }, - purescript: { - extensions: ['.purs'], - type: 'programming' - }, - latte: { - extensions: ['.latte'], - type: 'markup' - }, - blade: { - extensions: ['.blade', '.blade.php'], - type: 'markup' - }, - lolcode: { - extensions: ['.lol'], - type: 'programming' - }, - 'coldfusion cfc': { - extensions: ['.cfc'], - type: 'programming', - aliases: ['cfc'] - }, - mql5: { - extensions: ['.mq5', '.mqh'], - type: 'programming' - }, - 'wavefront object': { - extensions: ['.obj'], - type: 'data' - }, - cuda: { - extensions: ['.cu', '.cuh'], - type: 'programming' - }, - smpl: { - extensions: ['.cocci'], - type: 'programming', - aliases: ['coccinelle'] - }, - crystal: { - extensions: ['.cr'], - type: 'programming' - }, - 'netlinx+erb': { - extensions: ['.axs.erb', '.axi.erb'], - type: 'programming' - }, - xtend: { - extensions: ['.xtend'], - type: 'programming' - }, - mcfunction: { - extensions: ['.mcfunction'], - type: 'programming' - }, - 'f#': { - extensions: ['.fs', '.fsi', '.fsx'], - type: 'programming', - aliases: ['fsharp'] - }, - gdscript: { - extensions: ['.gd'], - type: 'programming' - }, - dtrace: { - extensions: ['.d'], - type: 'programming', - aliases: ['dtrace-script'] - }, - gap: { - extensions: ['.g', '.gap', '.gd', '.gi', '.tst'], - type: 'programming' - }, - oz: { - extensions: ['.oz'], - type: 'programming' - }, - "ren'py": { - extensions: ['.rpy'], - type: 'programming', - aliases: ['renpy'] - }, - elixir: { - extensions: ['.ex', '.exs'], - type: 'programming' - }, - webassembly: { - extensions: ['.wast', '.wat'], - type: 'programming', - aliases: ['wast', 'wasm'] - }, - lean: { - extensions: ['.lean', '.hlean'], - type: 'programming' - }, - lilypond: { - extensions: ['.ly', '.ily'], - type: 'programming' - }, - squirrel: { - extensions: ['.nut'], - type: 'programming' - }, - asciidoc: { - extensions: ['.asciidoc', '.adoc', '.asc'], - type: 'prose' - }, - yacc: { - extensions: ['.y', '.yacc', '.yy'], - type: 'programming' - }, - 'filebench wml': { - extensions: ['.f'], - type: 'programming' - }, - dafny: { - extensions: ['.dfy'], - type: 'programming' - }, - plpgsql: { - extensions: ['.pgsql', '.sql'], - type: 'programming' - }, - 'parrot assembly': { - extensions: ['.pasm'], - type: 'programming', - aliases: ['pasm'] - }, - kakounescript: { - extensions: ['.kak'], - type: 'programming', - aliases: ['kak', 'kakscript'] - }, - raku: { - extensions: [ - '.6pl', - '.6pm', - '.nqp', - '.p6', - '.p6l', - '.p6m', - '.pl', - '.pl6', - '.pm', - '.pm6', - '.raku', - '.rakumod', - '.t' - ], - type: 'programming', - aliases: ['perl6', 'perl-6'] - }, - stata: { - extensions: ['.do', '.ado', '.doh', '.ihlp', '.mata', '.matah', '.sthlp'], - type: 'programming' - }, - 'c++': { - extensions: [ - '.cpp', - '.c++', - '.cc', - '.cp', - '.cppm', - '.cxx', - '.h', - '.h++', - '.hh', - '.hpp', - '.hxx', - '.inc', - '.inl', - '.ino', - '.ipp', - '.ixx', - '.re', - '.tcc', - '.tpp', - '.txx' - ], - type: 'programming', - aliases: ['cpp'] - }, - holyc: { - extensions: ['.hc'], - type: 'programming' - }, - mercury: { - extensions: ['.m', '.moo'], - type: 'programming' - }, - 'unity3d asset': { - extensions: ['.anim', '.asset', '.mask', '.mat', '.meta', '.prefab', '.unity'], - type: 'data' - }, - 'json with comments': { - extensions: [ - '.jsonc', - '.code-snippets', - '.code-workspace', - '.sublime-build', - '.sublime-color-scheme', - '.sublime-commands', - '.sublime-completions', - '.sublime-keymap', - '.sublime-macro', - '.sublime-menu', - '.sublime-mousemap', - '.sublime-project', - '.sublime-settings', - '.sublime-theme', - '.sublime-workspace', - '.sublime_metrics', - '.sublime_session' - ], - type: 'data', - aliases: ['jsonc'] - }, - abnf: { - extensions: ['.abnf'], - type: 'data' - }, - perl: { - extensions: ['.pl', '.al', '.cgi', '.fcgi', '.perl', '.ph', '.plx', '.pm', '.psgi', '.t'], - type: 'programming', - aliases: ['cperl'] - }, - graphql: { - extensions: ['.graphql', '.gql', '.graphqls'], - type: 'data' - }, - d: { - extensions: ['.d', '.di'], - type: 'programming', - aliases: ['Dlang'] - }, - m: { - extensions: ['.mumps', '.m'], - type: 'programming', - aliases: ['mumps'] - }, - terra: { - extensions: ['.t'], - type: 'programming' - }, - jflex: { - extensions: ['.flex', '.jflex'], - type: 'programming' - }, - cycript: { - extensions: ['.cy'], - type: 'programming' + extensions: ['.zmodel'] } } diff --git a/scripts/check-custom-exts.ts b/scripts/check-custom-exts.ts new file mode 100644 index 0000000000..fa080e9838 --- /dev/null +++ b/scripts/check-custom-exts.ts @@ -0,0 +1,45 @@ +import { codeLangExts, customTextExts } from '../packages/shared/config/constant' + +console.log('Running sanity check for custom extensions...') + +// Create a Set for efficient lookup of extensions from the linguist database. +const linguistExtsSet = new Set(codeLangExts) + +const overlappingExtsByCategory = new Map() +let totalOverlaps = 0 + +// Iterate over each category and its extensions in our custom map. +for (const [category, exts] of customTextExts.entries()) { + const categoryOverlaps = exts.filter((ext) => linguistExtsSet.has(ext)) + + if (categoryOverlaps.length > 0) { + overlappingExtsByCategory.set(category, categoryOverlaps.sort()) + totalOverlaps += categoryOverlaps.length + } +} + +// Report the results. +if (totalOverlaps === 0) { + console.log('\n✅ Check passed!') + console.log('The `customTextExts` map contains no extensions that are already in `codeLangExts`.') + console.log('\nCustom extensions checked:') + for (const [category, exts] of customTextExts.entries()) { + console.log(` - Category '${category}' (${exts.length}):`) + console.log(` ${exts.sort().join(', ')}`) + } + console.log('\n') +} else { + console.error('\n⚠️ Check failed: Overlapping extensions found!') + console.error( + 'The following extensions in `customTextExts` are already present in `codeLangExts` (from languages.ts).' + ) + console.error('Please remove them from `customTextExts` in `packages/shared/config/constant.ts` to avoid redundancy.') + console.error(`\nFound ${totalOverlaps} overlapping extensions in ${overlappingExtsByCategory.size} categories:`) + + for (const [category, exts] of overlappingExtsByCategory.entries()) { + console.error(` - Category '${category}': ${exts.join(', ')}`) + } + + console.error('\n') + process.exit(1) // Exit with an error code for CI/CD purposes. +} diff --git a/scripts/update-languages.ts b/scripts/update-languages.ts new file mode 100644 index 0000000000..91416a9732 --- /dev/null +++ b/scripts/update-languages.ts @@ -0,0 +1,135 @@ +import { exec } from 'child_process' +import * as fs from 'fs/promises' +import linguistLanguages from 'linguist-languages' +import * as path from 'path' +import { promisify } from 'util' + +const execAsync = promisify(exec) + +type LanguageData = { + type: string + aliases?: string[] + extensions?: string[] +} + +const LANGUAGES_FILE_PATH = path.join(__dirname, '../packages/shared/config/languages.ts') + +/** + * Extracts and filters necessary language data from the linguist-languages package. + * @returns A record of language data. + */ +function extractAllLanguageData(): Record { + console.log('🔍 Extracting language data from linguist-languages...') + const languages = Object.entries(linguistLanguages).reduce( + (acc, [name, langData]) => { + const { type, extensions, aliases } = langData as any + + // Only include languages with extensions or aliases + if ((extensions && extensions.length > 0) || (aliases && aliases.length > 0)) { + acc[name] = { + type: type || 'programming', + ...(extensions && { extensions }), + ...(aliases && { aliases }) + } + } + return acc + }, + {} as Record + ) + console.log(`✅ Extracted ${Object.keys(languages).length} languages.`) + return languages +} + +/** + * Generates the content for the languages.ts file. + * @param languages The language data to include in the file. + * @returns The generated file content as a string. + */ +function generateLanguagesFileContent(languages: Record): string { + console.log('📝 Generating languages.ts file content...') + const sortedLanguages = Object.fromEntries(Object.entries(languages).sort(([a], [b]) => a.localeCompare(b))) + + const languagesObjectString = JSON.stringify(sortedLanguages, null, 2) + + const content = `/** + * Code language list. + * Data source: linguist-languages + * + * ⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️ + * THIS FILE IS AUTOMATICALLY GENERATED BY A SCRIPT. DO NOT EDIT IT MANUALLY! + * Run \`yarn update:languages\` to update this file. + * ⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️ + * + */ + +type LanguageData = { + type: string; + aliases?: string[]; + extensions?: string[]; +}; + +export const languages: Record = ${languagesObjectString}; +` + console.log('✅ File content generated.') + return content +} + +/** + * Formats a file using Prettier. + * @param filePath The path to the file to format. + */ +async function formatWithPrettier(filePath: string): Promise { + console.log('🎨 Formatting file with Prettier...') + try { + await execAsync(`yarn prettier --write ${filePath}`) + console.log('✅ Prettier formatting complete.') + } catch (e: any) { + console.error('❌ Prettier formatting failed:', e.stdout || e.stderr) + throw new Error('Prettier formatting failed.') + } +} + +/** + * Checks a file with TypeScript compiler. + * @param filePath The path to the file to check. + */ +async function checkTypeScript(filePath: string): Promise { + console.log('🧐 Checking file with TypeScript compiler...') + try { + await execAsync(`yarn tsc --noEmit --skipLibCheck ${filePath}`) + console.log('✅ TypeScript check passed.') + } catch (e: any) { + console.error('❌ TypeScript check failed:', e.stdout || e.stderr) + throw new Error('TypeScript check failed.') + } +} + +/** + * Main function to update the languages.ts file. + */ +async function updateLanguagesFile(): Promise { + console.log('🚀 Starting to update languages.ts...') + try { + const extractedLanguages = extractAllLanguageData() + const fileContent = generateLanguagesFileContent(extractedLanguages) + + await fs.writeFile(LANGUAGES_FILE_PATH, fileContent, 'utf-8') + console.log(`✅ Successfully wrote to ${LANGUAGES_FILE_PATH}`) + + await formatWithPrettier(LANGUAGES_FILE_PATH) + await checkTypeScript(LANGUAGES_FILE_PATH) + + console.log('🎉 Successfully updated languages.ts file!') + console.log(`📊 Contains ${Object.keys(extractedLanguages).length} languages.`) + } catch (error) { + console.error('❌ An error occurred during the update process:', (error as Error).message) + // No need to restore backup as we write only at the end of successful generation. + process.exit(1) + } +} + +if (require.main === module) { + updateLanguagesFile() +} + +export { updateLanguagesFile } diff --git a/src/renderer/src/i18n/translate/el-gr.json b/src/renderer/src/i18n/translate/el-gr.json index b4291fd9e9..e121398b4e 100644 --- a/src/renderer/src/i18n/translate/el-gr.json +++ b/src/renderer/src/i18n/translate/el-gr.json @@ -2608,4 +2608,4 @@ "visualization": "προβολή" } } -} \ No newline at end of file +} diff --git a/src/renderer/src/i18n/translate/es-es.json b/src/renderer/src/i18n/translate/es-es.json index d8f3369847..6815cddd66 100644 --- a/src/renderer/src/i18n/translate/es-es.json +++ b/src/renderer/src/i18n/translate/es-es.json @@ -2608,4 +2608,4 @@ "visualization": "Visualización" } } -} \ No newline at end of file +} diff --git a/src/renderer/src/i18n/translate/fr-fr.json b/src/renderer/src/i18n/translate/fr-fr.json index 50690cac6b..86bcbfb90b 100644 --- a/src/renderer/src/i18n/translate/fr-fr.json +++ b/src/renderer/src/i18n/translate/fr-fr.json @@ -2608,4 +2608,4 @@ "visualization": "Visualisation" } } -} \ No newline at end of file +} diff --git a/src/renderer/src/i18n/translate/pt-pt.json b/src/renderer/src/i18n/translate/pt-pt.json index 6b4f9a8427..441622b692 100644 --- a/src/renderer/src/i18n/translate/pt-pt.json +++ b/src/renderer/src/i18n/translate/pt-pt.json @@ -2608,4 +2608,4 @@ "visualization": "Visualização" } } -} \ No newline at end of file +} diff --git a/yarn.lock b/yarn.lock index ce3d6387b1..12ee35500d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7252,6 +7252,7 @@ __metadata: jest-styled-components: "npm:^7.2.0" jschardet: "npm:^3.1.4" jsdom: "npm:26.1.0" + linguist-languages: "npm:^8.0.0" lint-staged: "npm:^15.5.0" lodash: "npm:^4.17.21" lru-cache: "npm:^11.1.0" @@ -13713,6 +13714,13 @@ __metadata: languageName: node linkType: hard +"linguist-languages@npm:^8.0.0": + version: 8.0.0 + resolution: "linguist-languages@npm:8.0.0" + checksum: 10c0/eaae46254247b9aa5b287ac98e062e7fe859314328ce305e34e152bc7bb172d69633999320cb47dc2a710388179712a76bb1ddd6e39e249af2684a4f0a66256c + languageName: node + linkType: hard + "linkify-it@npm:^5.0.0": version: 5.0.0 resolution: "linkify-it@npm:5.0.0"