diff --git a/Forgejo_Syntax_Highlight.md b/Forgejo_Syntax_Highlight.md new file mode 100644 index 0000000..254cb16 --- /dev/null +++ b/Forgejo_Syntax_Highlight.md @@ -0,0 +1,771 @@ +# Forgejo Syntax Highlight + +The Forgejo [codebase](https://codeberg.org/forgejo/forgejo) 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. + + - https://github.com/yuin/goldmark + - https://github.com/alecthomas/chroma + - https://pygments.org/ + +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: + + - https://github.com/alecthomas/chroma/tree/master/lexers/embedded + +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**: + +```bash +$ ./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 +``` +