3 Forgejo Syntax Highlight
tengel edited this page 2024-09-04 10:12:52 -05:00

Forgejo Syntax Highlight

The Forgejo codebase leverages the Goldmark markdown galango library, which in turn leverages the Chroma syntax highlight golang library, which is based on the lexers of the Pygments python library.

Fenced code blocks in markdown can indicate which lexer to use for that content.

Lexers Definitions

The Chroma project stores the definitions in XML format:

The project offers a binary download on the releases page which will generate a list of the lexers in order to avoid having to dig through the XML manually.

Chroma Lexers

Release v2.14.0 dated 2024-05-22:

$ ./chroma --version
2.14.0-1e983e734d1c03b5d614250822984e0d62d0d654-2024-05-22T18:53:43Z

$ ./chroma --list | grep -v mimetypes

lexers:
  ABAP
    aliases: abap
    filenames: *.abap *.ABAP
  ABNF
    aliases: abnf
    filenames: *.abnf
  ActionScript
    aliases: as actionscript
    filenames: *.as
  ActionScript 3
    aliases: as3 actionscript3
    filenames: *.as
  Ada
    aliases: ada ada95 ada2005
    filenames: *.adb *.ads *.ada
  Agda
    aliases: agda
    filenames: *.agda
  AL
    aliases: al
    filenames: *.al *.dal
  Alloy
    aliases: alloy
    filenames: *.als
  Angular2
    aliases: ng2
  ANTLR
    aliases: antlr
  ApacheConf
    aliases: apacheconf aconf apache
    filenames: .htaccess apache.conf apache2.conf
  APL
    aliases: apl
    filenames: *.apl
  AppleScript
    aliases: applescript
    filenames: *.applescript
  ArangoDB AQL
    aliases: aql
    filenames: *.aql
  Arduino
    aliases: arduino
    filenames: *.ino
  ArmAsm
    aliases: armasm
    filenames: *.s *.S
  AutoHotkey
    aliases: autohotkey ahk
    filenames: *.ahk *.ahkl
  AutoIt
    aliases: autoit
    filenames: *.au3
  Awk
    aliases: awk gawk mawk nawk
    filenames: *.awk
  Ballerina
    aliases: ballerina
    filenames: *.bal
  Bash
    aliases: bash sh ksh zsh shell
    filenames: *.sh *.ksh *.bash *.ebuild *.eclass .env *.env *.exheres-0 *.exlib *.zsh *.zshrc .bashrc bashrc .bash_* bash_* zshrc .zshrc PKGBUILD
  Bash Session
    aliases: bash-session console shell-session
    filenames: *.sh-session
  Batchfile
    aliases: bat batch dosbatch winbatch
    filenames: *.bat *.cmd
  BibTeX
    aliases: bib bibtex
    filenames: *.bib
  Bicep
    aliases: bicep
    filenames: *.bicep
  BlitzBasic
    aliases: blitzbasic b3d bplus
    filenames: *.bb *.decls
  BNF
    aliases: bnf
    filenames: *.bnf
  BQN
    aliases: bqn
    filenames: *.bqn
  Brainfuck
    aliases: brainfuck bf
    filenames: *.bf *.b
  C
    aliases: c
    filenames: *.c *.h *.idc *.x[bp]m
  C#
    aliases: csharp c#
    filenames: *.cs
  C++
    aliases: cpp c++
    filenames: *.cpp *.hpp *.c++ *.h++ *.cc *.hh *.cxx *.hxx *.C *.H *.cp *.CPP *.tpp
  Caddyfile
    aliases: caddyfile caddy
    filenames: Caddyfile*
  Caddyfile Directives
    aliases: caddyfile-directives caddyfile-d caddy-d
  Cap'n Proto
    aliases: capnp
    filenames: *.capnp
  Cassandra CQL
    aliases: cassandra cql
    filenames: *.cql
  Ceylon
    aliases: ceylon
    filenames: *.ceylon
  CFEngine3
    aliases: cfengine3 cf3
    filenames: *.cf
  cfstatement
    aliases: cfs
  ChaiScript
    aliases: chai chaiscript
    filenames: *.chai
  Chapel
    aliases: chapel chpl
    filenames: *.chpl
  Cheetah
    aliases: cheetah spitfire
    filenames: *.tmpl *.spt
  Clojure
    aliases: clojure clj edn
    filenames: *.clj *.edn
  CMake
    aliases: cmake
    filenames: *.cmake CMakeLists.txt
  COBOL
    aliases: cobol
    filenames: *.cob *.COB *.cpy *.CPY
  CoffeeScript
    aliases: coffee-script coffeescript coffee
    filenames: *.coffee
  Common Lisp
    aliases: common-lisp cl lisp
    filenames: *.cl *.lisp
  Coq
    aliases: coq
    filenames: *.v
  Crystal
    aliases: cr crystal
    filenames: *.cr
  CSS
    aliases: css
    filenames: *.css
  CUE
    aliases: cue
    filenames: *.cue
  Cython
    aliases: cython pyx pyrex
    filenames: *.pyx *.pxd *.pxi
  D
    aliases: d
    filenames: *.d *.di
  Dart
    aliases: dart
    filenames: *.dart
  Dax
    aliases: dax
    filenames: *.dax
  Desktop file
    aliases: desktop desktop_entry
    filenames: *.desktop
  Diff
    aliases: diff udiff
    filenames: *.diff *.patch
  Django/Jinja
    aliases: django jinja
  dns
    aliases: zone bind
    filenames: *.zone
  Docker
    aliases: docker dockerfile
    filenames: Dockerfile Dockerfile.* *.Dockerfile *.docker
  DTD
    aliases: dtd
    filenames: *.dtd
  Dylan
    aliases: dylan
    filenames: *.dylan *.dyl *.intr
  EBNF
    aliases: ebnf
    filenames: *.ebnf
  Elixir
    aliases: elixir ex exs
    filenames: *.ex *.eex *.exs
  Elm
    aliases: elm
    filenames: *.elm
  EmacsLisp
    aliases: emacs elisp emacs-lisp
    filenames: *.el
  Erlang
    aliases: erlang
    filenames: *.erl *.hrl *.es *.escript
  Factor
    aliases: factor
    filenames: *.factor
  Fennel
    aliases: fennel fnl
    filenames: *.fennel
  Fish
    aliases: fish fishshell
    filenames: *.fish *.load
  Forth
    aliases: forth
    filenames: *.frt *.fth *.fs
  Fortran
    aliases: fortran f90
    filenames: *.f03 *.f90 *.f95 *.F03 *.F90 *.F95
  FortranFixed
    aliases: fortranfixed
    filenames: *.f *.F
  FSharp
    aliases: fsharp
    filenames: *.fs *.fsi
  GAS
    aliases: gas asm
    filenames: *.s *.S
  GDScript
    aliases: gdscript gd
    filenames: *.gd
  GDScript3
    aliases: gdscript3 gd3
    filenames: *.gd
  Genshi
    aliases: genshi kid xml+genshi xml+kid
    filenames: *.kid
  Genshi HTML
    aliases: html+genshi html+kid
  Genshi Text
    aliases: genshitext
  Gherkin
    aliases: cucumber Cucumber gherkin Gherkin
    filenames: *.feature *.FEATURE
  Gleam
    aliases: gleam>
    filenames: *.gleam
  GLSL
    aliases: glsl
    filenames: *.vert *.frag *.geo
  Gnuplot
    aliases: gnuplot
    filenames: *.plot *.plt
  Go
    aliases: go golang
    filenames: *.go
  Go HTML Template
    aliases: go-html-template
  Go Template
    aliases: go-template
    filenames: *.gotmpl *.go.tmpl
  Go Text Template
    aliases: go-text-template
  GraphQL
    aliases: graphql graphqls gql
    filenames: *.graphql *.graphqls
  Groff
    aliases: groff nroff man
    filenames: *.[1-9] *.1p *.3pm *.man
  Groovy
    aliases: groovy
    filenames: *.groovy *.gradle
  Handlebars
    aliases: handlebars hbs
    filenames: *.handlebars *.hbs
  Hare
    aliases: hare
    filenames: *.ha
  Haskell
    aliases: haskell hs
    filenames: *.hs
  Haxe
    aliases: hx haxe hxsl
    filenames: *.hx *.hxsl
  HCL
    aliases: hcl
    filenames: *.hcl
  Hexdump
    aliases: hexdump
  HLB
    aliases: hlb
    filenames: *.hlb
  HLSL
    aliases: hlsl
    filenames: *.hlsl *.hlsli *.cginc *.fx *.fxh
  HolyC
    aliases: holyc
    filenames: *.HC *.hc *.HH *.hh *.hc.z *.HC.Z
  HTML
    aliases: html
    filenames: *.html *.htm *.xhtml *.xslt
  HTTP
    aliases: http
  Hy
    aliases: hylang
    filenames: *.hy
  Idris
    aliases: idris idr
    filenames: *.idr
  Igor
    aliases: igor igorpro
    filenames: *.ipf
  INI
    aliases: ini cfg dosini
    filenames: *.ini *.cfg *.inf *.service *.socket .gitconfig .editorconfig pylintrc .pylintrc
  Io
    aliases: io
    filenames: *.io
  ISCdhcpd
    aliases: iscdhcpd
    filenames: dhcpd.conf
  J
    aliases: j
    filenames: *.ijs
  Java
    aliases: java
    filenames: *.java
  JavaScript
    aliases: js javascript
    filenames: *.js *.jsm *.mjs *.cjs
  JSON
    aliases: json
    filenames: *.json *.avsc
  Julia
    aliases: julia jl
    filenames: *.jl
  Jungle
    aliases: jungle
    filenames: *.jungle
  Kotlin
    aliases: kotlin
    filenames: *.kt
  Lighttpd configuration file
    aliases: lighty lighttpd
  LLVM
    aliases: llvm
    filenames: *.ll
  Lua
    aliases: lua
    filenames: *.lua *.wlua
  Makefile
    aliases: make makefile mf bsdmake
    filenames: *.mak *.mk Makefile makefile Makefile.* GNUmakefile BSDmakefile Justfile justfile .justfile
  Mako
    aliases: mako
    filenames: *.mao
  markdown
    aliases: md mkd
    filenames: *.md *.mkd *.markdown
  Mason
    aliases: mason
    filenames: *.m *.mhtml *.mc *.mi autohandler dhandler
  Materialize SQL dialect
    aliases: materialize mzsql
  Mathematica
    aliases: mathematica mma nb
    filenames: *.cdf *.m *.ma *.mt *.mx *.nb *.nbp *.wl
  Matlab
    aliases: matlab
    filenames: *.m
  mcfunction
    aliases: mcfunction
    filenames: *.mcfunction
  Meson
    aliases: meson meson.build
    filenames: meson.build meson_options.txt
  Metal
    aliases: metal
    filenames: *.metal
  MiniZinc
    aliases: minizinc MZN mzn
    filenames: *.mzn *.dzn *.fzn
  MLIR
    aliases: mlir
    filenames: *.mlir
  Modula-2
    aliases: modula2 m2
    filenames: *.def *.mod
  MonkeyC
    aliases: monkeyc
    filenames: *.mc
  MorrowindScript
    aliases: morrowind mwscript
  Myghty
    aliases: myghty
    filenames: *.myt autodelegate
  MySQL
    aliases: mysql mariadb
    filenames: *.sql
  NASM
    aliases: nasm
    filenames: *.asm *.ASM *.nasm
  Natural
    aliases: natural
    filenames: *.NSN *.NSP *.NSS *.NSH *.NSG *.NSL *.NSA *.NSM *.NSC *.NS7
  NDISASM
    aliases: ndisasm
  Newspeak
    aliases: newspeak
    filenames: *.ns2
  Nginx configuration file
    aliases: nginx
    filenames: nginx.conf
  Nim
    aliases: nim nimrod
    filenames: *.nim *.nimrod
  Nix
    aliases: nixos nix
    filenames: *.nix
  Objective-C
    aliases: objective-c objectivec obj-c objc
    filenames: *.m *.h
  ObjectPascal
    aliases: objectpascal
    filenames: *.pas *.pp *.inc *.dpr *.dpk *.lpr *.lpk
  OCaml
    aliases: ocaml
    filenames: *.ml *.mli *.mll *.mly
  Octave
    aliases: octave
    filenames: *.m
  Odin
    aliases: odin
    filenames: *.odin
  OnesEnterprise
    aliases: ones onesenterprise 1S 1S:Enterprise
    filenames: *.EPF *.epf *.ERF *.erf
  OpenEdge ABL
    aliases: openedge abl progress openedgeabl
    filenames: *.p *.cls *.w *.i
  OpenSCAD
    aliases: openscad
    filenames: *.scad
  Org Mode
    aliases: org orgmode
    filenames: *.org
  PacmanConf
    aliases: pacmanconf
    filenames: pacman.conf
  Perl
    aliases: perl pl
    filenames: *.pl *.pm *.t
  PHP
    aliases: php php3 php4 php5
    filenames: *.php *.php[345] *.inc
  PHTML
    aliases: phtml
    filenames: *.phtml *.php *.php[345] *.inc
  Pig
    aliases: pig
    filenames: *.pig
  PkgConfig
    aliases: pkgconfig
    filenames: *.pc
  PL/pgSQL
    aliases: plpgsql
  plaintext
    aliases: text plain no-highlight
    filenames: *.txt
  Plutus Core
    aliases: plutus-core plc
    filenames: *.plc
  Pony
    aliases: pony
    filenames: *.pony
  PostgreSQL SQL dialect
    aliases: postgresql postgres
  PostScript
    aliases: postscript postscr
    filenames: *.ps *.eps
  POVRay
    aliases: pov
    filenames: *.pov *.inc
  PowerQuery
    aliases: powerquery pq
    filenames: *.pq
  PowerShell
    aliases: powershell posh ps1 psm1 psd1 pwsh
    filenames: *.ps1 *.psm1 *.psd1
  Prolog
    aliases: prolog
    filenames: *.ecl *.prolog *.pro *.pl
  Promela
    aliases: promela
    filenames: *.pml *.prom *.prm *.promela *.pr *.pm
  PromQL
    aliases: promql
    filenames: *.promql
  properties
    aliases: java-properties
    filenames: *.properties
  Protocol Buffer
    aliases: protobuf proto
    filenames: *.proto
  PRQL
    aliases: prql
    filenames: *.prql
  PSL
    aliases: psl
    filenames: *.psl *.BATCH *.TRIG *.PROC
  Puppet
    aliases: puppet
    filenames: *.pp
  Python
    aliases: python py sage python3 py3
    filenames: *.py *.pyi *.pyw *.jy *.sage *.sc SConstruct SConscript *.bzl BUCK BUILD BUILD.bazel WORKSPACE WORKSPACE.bzlmod WORKSPACE.bazel MODULE.bazel REPO.bazel *.tac
  Python 2
    aliases: python2 py2
  QBasic
    aliases: qbasic basic
    filenames: *.BAS *.bas
  QML
    aliases: qml qbs
    filenames: *.qml *.qbs
  R
    aliases: splus s r
    filenames: *.S *.R *.r .Rhistory .Rprofile .Renviron
  Racket
    aliases: racket rkt
    filenames: *.rkt *.rktd *.rktl
  Ragel
    aliases: ragel
  Raku
    aliases: perl6 pl6 raku
    filenames: *.pl *.pm *.nqp *.p6 *.6pl *.p6l *.pl6 *.6pm *.p6m *.pm6 *.t *.raku *.rakumod *.rakutest *.rakudoc
  react
    aliases: jsx react
    filenames: *.jsx *.react
  ReasonML
    aliases: reason reasonml
    filenames: *.re *.rei
  reg
    aliases: registry
    filenames: *.reg
  Rego
    aliases: rego
    filenames: *.rego
  reStructuredText
    aliases: rst rest restructuredtext
    filenames: *.rst *.rest
  Rexx
    aliases: rexx arexx
    filenames: *.rexx *.rex *.rx *.arexx
  RPMSpec
    aliases: spec
    filenames: *.spec
  Ruby
    aliases: rb ruby duby
    filenames: *.rb *.rbw Rakefile *.rake *.gemspec *.rbx *.duby Gemfile Vagrantfile
  Rust
    aliases: rust rs
    filenames: *.rs *.rs.in
  SAS
    aliases: sas
    filenames: *.SAS *.sas
  Sass
    aliases: sass
    filenames: *.sass
  Scala
    aliases: scala
    filenames: *.scala
  Scheme
    aliases: scheme scm
    filenames: *.scm *.ss
  Scilab
    aliases: scilab
    filenames: *.sci *.sce *.tst
  SCSS
    aliases: scss
    filenames: *.scss
  Sed
    aliases: sed gsed ssed
    filenames: *.sed *.[gs]sed
  Sieve
    aliases: sieve
    filenames: *.siv *.sieve
  Smali
    aliases: smali
    filenames: *.smali
  Smalltalk
    aliases: smalltalk squeak st
    filenames: *.st
  Smarty
    aliases: smarty
    filenames: *.tpl
  Snobol
    aliases: snobol
    filenames: *.snobol
  Solidity
    aliases: sol solidity
    filenames: *.sol
  SourcePawn
    aliases: sp
    filenames: *.sp *.inc
  SPARQL
    aliases: sparql
    filenames: *.rq *.sparql
  SQL
    aliases: sql
    filenames: *.sql
  SquidConf
    aliases: squidconf squid.conf squid
    filenames: squid.conf
  Standard ML
    aliases: sml
    filenames: *.sml *.sig *.fun
  stas
    filenames: *.stas
  Stylus
    aliases: stylus
    filenames: *.styl
  Svelte
    aliases: svelte
    filenames: *.svelte
  Swift
    aliases: swift
    filenames: *.swift
  SYSTEMD
    aliases: systemd
    filenames: *.automount *.device *.dnssd *.link *.mount *.netdev *.network *.path *.scope *.service *.slice *.socket *.swap *.target *.timer
  systemverilog
    aliases: systemverilog sv
    filenames: *.sv *.svh
  TableGen
    aliases: tablegen
    filenames: *.td
  Tal
    aliases: tal uxntal
    filenames: *.tal
  TASM
    aliases: tasm
    filenames: *.asm *.ASM *.tasm
  Tcl
    aliases: tcl
    filenames: *.tcl *.rvt
  Tcsh
    aliases: tcsh csh
    filenames: *.tcsh *.csh
  Termcap
    aliases: termcap
    filenames: termcap termcap.src
  Terminfo
    aliases: terminfo
    filenames: terminfo terminfo.src
  Terraform
    aliases: terraform tf
    filenames: *.tf
  TeX
    aliases: tex latex
    filenames: *.tex *.aux *.toc
  Thrift
    aliases: thrift
    filenames: *.thrift
  TOML
    aliases: toml
    filenames: *.toml Pipfile poetry.lock
  TradingView
    aliases: tradingview tv
    filenames: *.tv
  Transact-SQL
    aliases: tsql t-sql
  Turing
    aliases: turing
    filenames: *.turing *.tu
  Turtle
    aliases: turtle
    filenames: *.ttl
  Twig
    aliases: twig
    filenames: *.twig
  TypeScript
    aliases: ts tsx typescript
    filenames: *.ts *.tsx *.mts *.cts
  TypoScript
    aliases: typoscript
    filenames: *.ts
  TypoScriptCssData
    aliases: typoscriptcssdata
  TypoScriptHtmlData
    aliases: typoscripthtmldata
  ucode
    filenames: *.uc
  V
    aliases: v vlang
    filenames: *.v *.vv v.mod
  V shell
    aliases: vsh vshell
    filenames: *.vsh
  Vala
    aliases: vala vapi
    filenames: *.vala *.vapi
  VB.net
    aliases: vb.net vbnet
    filenames: *.vb *.bas
  verilog
    aliases: verilog v
    filenames: *.v
  VHDL
    aliases: vhdl
    filenames: *.vhdl *.vhd
  VHS
    aliases: vhs tape cassette
    filenames: *.tape
  VimL
    aliases: vim
    filenames: *.vim .vimrc .exrc .gvimrc _vimrc _exrc _gvimrc vimrc gvimrc
  vue
    aliases: vue vuejs
    filenames: *.vue
  WDTE
    filenames: *.wdte
  WebGPU Shading Language
    aliases: wgsl
    filenames: *.wgsl
  Whiley
    aliases: whiley
    filenames: *.whiley
  XML
    aliases: xml
    filenames: *.xml *.xsl *.rss *.xslt *.xsd *.wsdl *.wsf *.svg *.csproj *.vcxproj *.fsproj
  Xorg
    aliases: xorg.conf
    filenames: xorg.conf
  YAML
    aliases: yaml
    filenames: *.yaml *.yml
  YANG
    aliases: yang
    filenames: *.yang
  Z80 Assembly
    aliases: z80
    filenames: *.z80 *.asm
  Zed
    aliases: zed
    filenames: *.zed
  Zig
    aliases: zig
    filenames: *.zig