Releases: pygments/pygments
2.17.2
2.17.1
2.17.0
-
New lexers:
-
Updated lexers:
- Cypher: fix comment matching, add missing keywords (#2504)
- Fortran: add
elseif
keyword (#2528) - Lean: make it available as
lean3
, in preparation for a possible switch tolean
highlighting as Lean 4 (#2546) - JSON: add MIME types and file extensions for several line-delimited JSON formats (#2490)
- Nix: many improvements (#2551, #1800)
- OCaml: Add
and
keyword, removevalue
from keywords (#2521) - Python: add
starlark
andbazel
aliases (#2517, #2516) - Snowball: Treat
len
likesize
(#2508) - Spice: add
panic
keyword and->
operator (#2510) - squid.conf: fix catastrophic backtracking (#2583)
- TOML: rewritten, with many fixes (#2576)
- Turtle: support blank nodes (#2581)
- Wikitext: fix erroneous highlighting of LanguageConverter markup
(#2493), add missing variant languages (#2494) - CMake: support
[=[ bracketed arguments ]=]
(#2549)
-
Fix ctags support and tests (#2487)
-
Include
Lexer.add_filter
in the documentation (#2519) -
Add a
Lean3Lexer
alias (#2546) -
The
pygments.styles
module contains a newSTYLES
variable with a dictionary of built-in styles. The oldSTYLE_MAP
variable, which uses a different format, is kept for backwards compatibility. -
On Windows, add a new installation extra (
windows-terminal
) which pulls in dependencies for colored console output. See :doc:cmdline
for more details. (#2505) -
Support more file types in
autopygmentize
script (#2513) -
Change color of numbers in
rrt
style (#2526) -
Fix error when trying to look up plugin formatters by file extension of the output format (#2563)
-
Use Hatchling as a build backend instead of setuptools.
This change is transparent to most users. Distribution packagers who build without build isolation need to add hatchling as a build
dependency and remove setuptools. People downloading source distributions and wheels from PyPI directly should note that they now havepygments
in their file names instead ofPygments
. (#2573) -
Improve the test framework to also check for lost tokens when processing the snippets and example files (#2582.)
-
Improve the Dracula style definition to make it easier to maintain (#2575)
2.16.1
2.16.0
-
New lexers:
- ASN.1 (#2462)
- Blueprint (#2434)
- BQN (#2472)
- DNS zone files (#2464)
- GraphQL (#2428)
- Linux desktop files (following the specification of the Freedesktop group, formerly known as XDG) (#2470)
- NVIDIA PTX (#2432)
- OpenSCAD (#2449)
- systemd (#2470)
- TLS presentation language (#2455)
- Verifpal (#2430)
- YARA (#2453)
-
Updated lexers:
- ASC: Add
application/pem-certificate-chain
mimetype (#2471) - C/C++: Refine keyword lists (#2421, #2422)
- Carbon: Fix long processing times on invalid input, fix number lexing (#2454, #2456)
- Elpi: Handle quotations (#2419)
- Go: Support additional built-ins (#2481)
- HTTP: Support empty headers (#2461), support more general methods (#2460), also recognize responses in
analyse_text
implementation (#2460), and highlight URL encoded data (#2465, #1620) - Igor Pro: Update to Igor Pro 9 (#2482)
- lean: Recognize expressions nested within attributes (#1817)
- Macaulay2: Update builtins (#2457)
- Markdown: Allow extra characters after language name
in code blocks (#2437) - NestedText: Update to version 3 (#2459)
- scdoc: Improve language guessing implementation (#2402)
- Spice: Update to latest version (#2476)
- Transact SQL: Add Pre-sorted Group keyword (#2417)
- Uxntal: Update for current runes (#2424)
- Wikitext: Fix templates in wiki links; fix a language converter false positive; add bold italic markup (#2447)
- ASC: Add
-
Add
Generic.EmphStrong
token for bold italic markup (#2444) -
Add Lightbulb style (#2474)
-
Improve contrast in Monokai style (#2448)
-
Add documentation how to create terminal code highlighting commands (#2131, #2425)
-
Add support for loading TrueType fonts to the
ImageFormatter
(#1960)
2.15.1
2.15.0
-
Added lexers:
-
Updated lexers:
-
AMDGPU: Add support for
scratch_
instructions, theattr*.*
argument,
as well as theoff
modifier (#2327). -
APDL: Miscellaneous improvements (#2314)
-
bash/tcsh:
-
Chapel: Support attributes (#2376)
-
CSS: Improve lexing of numbers inside function calls (#2382, #2383)
-
diff: Support normal diff syntax, as opposed to unified diff syntax (#2321)
-
GLSL, HLSL:
-
LilyPond: minor update of builtins
-
PHP: support attributes (#2055, #2347, #2360), fix anonymous classes without
parameters (#2359), improve lexing of variable variable syntax (#2358) -
Python:
-
Spice: Update keywords (#2336)
-
SQL+Jinja (
analyse_text
method): Fix catastrophic backtracking (#2355) -
Terraform: Add
hcl
alias (#2375)
-
-
Declare support for Python 3.11 and drop support for Python 3.6 (#2324).
-
Update
native
style to improve contrast (#2325). -
Update `github-dark`` style to match latest Primer style (#2401)
-
Revert a change that made guessing lexers based on file names slower
on Python 3.10 and older (#2328). -
Fix some places where a locale-dependent encoding could unintentionally
be used instead of UTF-8 (#2326). -
Groff formatter: sort color definitions for reproducibility (#2343)
-
Move project metadata to
pyproject.toml
, removesetup.py
andsetup.cfg
(#2342) -
The top-level
Makefile
has been removed. Instead, all shortcuts
for developing are now defined and run through tox. Thedoc
folder
still contains aMakefile
as an alternative totox -e doc
.
2.14.0
-
Added lexers:
-
Updated lexers:
-
Abap: Update keywords (#2281)
-
Alloy: Update for Alloy 6 (#1963)
-
C family (C, C++ and many others):
-
CSound: Updated builtins (#2268)
-
F#: Add
.fsx
file extension (#2282) -
gas (GNU assembler): recognize braces as punctuation (#2230)
-
HTTP: Add
CONNECT
keyword (#2242) -
Inform 6: Fix lexing of properties and doubles (#2214)
-
INI: Allow comments that are not their own line (#2217, #2161)
-
Java properties: Fix issue with whitespace-delimited keys, support comments starting with
!
and escapes, no longer support undocumented;
and//
comments (#2241) -
LilyPond: Improve heuristics, add
\maxima
duration (#2283) -
LLVM: Add opaque pointer type (#2269)
-
Macaulay2: Update keywords (#2305)
-
Minecraft-related lexers (SNB and Minecraft function) moved to
pygments.lexers.minecraft
(#2276) -
Nim: General improvements (#1970)
-
Nix: Fix single quotes inside indented strings (#2289)
-
Objective J: Fix catastrophic backtracking (#2225)
-
NASM: Add support for SSE/AVX/AVX-512 registers as well as 'rel' and 'abs' address operators (#2212)
-
Powershell:
-
Solidity: Add boolean operators (#2292)
-
Spice: Add
enum
keyword and fix a bug regarding binary, hexadecimal and octal number tokens (#2227) -
YAML: Accept colons in key names (#2277)
-
-
Fix
make mapfiles
when Pygments is not installed in editable mode (#2223) -
Support more filetypes and compression types in
autopygmentize
(#2219) -
Merge consecutive tokens in Autohotkey, Clay (#2248)
-
Add
.nasm
as a recognized file type for NASM (#2280) -
Add
*Spec.hs
as a recognized file type forHSpec
(#2308) -
Add
*.pyi
(for typing stub files) as a recognized file type for Python (#2331) -
The HTML lexer no longer emits empty spans for whitespace (#2304)
-
Fix
IRCFormatter
inserting linenumbers incorrectly (#2270)
2.13.0
-
Added lexers:
-
Updated lexers:
- Ada: support Ada 2022 (#2121); disable recognition of namespaces because it disturbs lexing of aspects (#2125)
- Agda: allow straight quotes in module names (#2163)
- C family (C, C++ and many others): allow comments between elements of function headers, e.g. between the arguments and the opening brace for the body (#1891)
- C++: Resolve several cases of
Error
tokens (#2207, #2208) - Coq: add some common keywords, improve recognition of
Set
and qualified identifiers (#2158) - F*: Allow C-style comments anywhere in a line
- Fortran: fix catastrophic backtracking with backslashes in strings (#2194)
- Go: add support for generics (#2167)
- Inform: update for version 6.40 (#2190)
- Isabelle: recognize cartouches (#2089)
- Java: support multiline strings aka. text blocks (#2132)
- Kotlin: add
value
modifier (#2142) - LilyPond: add some missing builtins
- Macaulay2: update builtins (#2139)
- Matlab session: fix traceback when a line continuation ellipsis appears in the output (#2166)
- .NET: add aliases for LibreOffice Basic, OpenOfficeBasic and
StarOffice Basic (#2170) - Nim: use
Name.Builtin
instead ofKeyword.Type
(#2136) - PHP: fix
\"$var\"
inside strings (#2105) - Python: only recognize
\N
,\u
and\U
escape sequences in string literals, but not in bytes literals where they are not supported (#2204) - Tcl: support
${name}
variables (#2145) - Terraform: accept leading whitespace for
<<
heredoc delimiters (#2162) - Teraterm: Various improvements (#2165)
- Spice: add support for the recently added features including more builtin functions and bin, oct, hex number formats (#2206)
-
Added styles:
-
Pygments now tries to use the
importlib.metadata
module to discover plugins instead of the slowerpkg_resources
(#2155). In particular, this largely speeds up thepygmentize
script when the lexer is not specified.importlib.metadata
is only available in the Python standard library since Python 3.8. For older versions, there exists animportlib_metadata
backport on PyPI. For this reason, Pygments now defines a packaging extraplugins
, which adds a requirement onimportlib_metadata
if the Python version is older than 3.8. Thus, in order to install Pygments with optimal plugin support even for old Python versions, you should do:pip install pygments[plugins]
Pygments still falls back on
pkg_resources
if neitherimportlib.metadata
norimportlib_metadata
is found, but it will be slower. -
Silently ignore
BrokenPipeError
in the command-line interface (#2193). -
The
HtmlFormatter
now uses thelinespans
attribute foranchorlinenos
if thelineanchors
attribute is unset (#2026). -
The
highlight
,lex
andformat
functions no longer wrongly report "argument must be a lexer/formatter instance, not a class" in some cases where this is not the actual problem (#2123). -
Fix warnings in doc build (#2124).
-
The
codetagify
filter now recognizesFIXME
tags by default (#2150). -
The
pygmentize
command now recognizes if theCOLORTERM
environment variable is set to a value indicating that true-color support is available. In that case, it uses theTerminalTrueColorFormatter
by default (#2160) -
Remove redundant caches for filename patterns (#2153)
-
Use new non-deprecated Pillow API for text bounding box in
ImageFormatter
(#2198) -
Stop treating
DeprecationWarnings
as errors in the unit tests (#2196)
2.12.0
-
Added lexers:
-
Updated lexers:
-
Agda: Update keyword list (#2017)
-
C family: Fix identifiers after
case
statements (#2084) -
Clojure: Highlight ratios (#2042)
-
Csound: Update to 6.17 (#2064)
-
CSS: Update the list of properties (#2113)
-
Elpi:
-
Futhark: Add missing tokens (#2118)
-
Gherkin: Add
But
(#2046) -
Inform6: Update to 6.36 (#2050)
-
JSON: Support C comments in JSON (#2049). Note: This doesn't mean the JSON parser now supports JSONC or JSON5 proper, just that it doesn't error out when seeing a
/* */
or//
style comment. If you need proper comment handling, consider using theJavaScript
lexer. -
LilyPond:
-
PHP: Update builtin function and keyword list (#2054, #2056)
-
Scheme: Various improvements (#2060)
-
Spice: Update the keyword list, add new types (#2063, #2067)
-
Terraform:
-
-
Add
plugins
argument toget_all_lexers()
. -
Bump minimal Python version to 3.6 (#2059)
-
Fix multiple lexers marking whitespace as
Text
(#2025) -
Remove various redundant uses of
re.UNICODE
(#2058) -
Associate
.resource
with the Robot framework (#2047) -
Associate
.cljc
with Clojure (#2043) -
Associate
.tpp
with C++ (#2031) -
Remove traces of Python 2 from the documentation (#2039)
-
The
native
style was updated to meet the WCAG AAA contrast guidelines (#2038) -
Fix various typos (#2030)
-
Fix
Groff
formatter not inheriting token styles correctly (#2024) -
Various improvements to the CI (#2036)
-
The Ada lexer has been moved to a separate file (#2117)
-
When
linenos=table
is used, the<table>
itself is now wrapped with a<div class="highlight">
tag instead of placing it inside the<td class="code">
cell (#632.) With this change, the output matches the documented behavior.
⚠️ If you have subclassedHtmlFormatter.wrap
, you may have to adjust the logic.