Version 2.0
-----------
(released Nov 9, 2014)
- Default lexer encoding is now "guess", i.e. UTF-8 / Locale / Latin1 is
tried in that order.
- Major update to Swift lexer (pull request #410).
- Multiple fixes to lexer guessing in conflicting cases:
* recognize HTML5 by doctype
* recognize XML by XML declaration
* don't recognize C/C++ as SystemVerilog
- Simplified regexes and builtin lists.
Version 2.0rc1
--------------
(released Oct 16, 2014)
- Dropped Python 2.4 and 2.5 compatibility. This is in favor of single-source
compatibility between Python 2.6, 2.7 and 3.3+.
- New website and documentation based on Sphinx (finally!)
- Lexers added:
* APL (#969)
* Agda and Literate Agda (pull request #203)
* Alloy (pull request #355)
* AmbientTalk
* BlitzBasic (pull request #197)
* ChaiScript (pull request #24)
* Chapel (pull request #256)
* Cirru (pull request #275)
* Clay (pull request #184)
* ColdFusion CFC (pull request #283)
* Cryptol and Literate Cryptol (pull request #344)
* Cypher (pull request #257)
* Docker config files
* EBNF (pull request #193)
* Eiffel (pull request #273)
* GAP (pull request #311)
* Golo (pull request #309)
* Handlebars (pull request #186)
* Hy (pull request #238)
* Idris and Literate Idris (pull request #210)
* Igor Pro (pull request #172)
* Inform 6/7 (pull request #281)
* Intel objdump (pull request #279)
* Isabelle (pull request #386)
* Jasmin (pull request #349)
* JSON-LD (pull request #289)
* Kal (pull request #233)
* Lean (pull request #399)
* LSL (pull request #296)
* Limbo (pull request #291)
* Liquid (#977)
* MQL (pull request #285)
* MaskJS (pull request #280)
* Mozilla preprocessors
* Mathematica (pull request #245)
* NesC (pull request #166)
* Nit (pull request #375)
* Nix (pull request #267)
* Pan
* Pawn (pull request #211)
* Perl 6 (pull request #181)
* Pig (pull request #304)
* Pike (pull request #237)
* QBasic (pull request #182)
* Red (pull request #341)
* ResourceBundle (#1038)
* Rexx (pull request #199)
* Rql (pull request #251)
* Rsl
* SPARQL (pull request #78)
* Slim (pull request #366)
* Swift (pull request #371)
* Swig (pull request #168)
* TADS 3 (pull request #407)
* Todo.txt todo lists
* Twig (pull request #404)
- Added a helper to "optimize" regular expressions that match one of many
literal words; this can save 20% and more lexing time with lexers that
highlight many keywords or builtins.
- New styles: "xcode" and "igor", similar to the default highlighting of
the respective IDEs.
- The command-line "pygmentize" tool now tries a little harder to find the
correct encoding for files and the terminal (#979).
- Added "inencoding" option for lexers to override "encoding" analogous
to "outencoding" (#800).
- Added line-by-line "streaming" mode for pygmentize with the "-s" option.
(pull request #165) Only fully works for lexers that have no constructs spanning
lines!
- Added an "envname" option to the LaTeX formatter to select a replacement
verbatim environment (pull request #235).
- Updated the Makefile lexer to yield a little more useful highlighting.
- Lexer aliases passed to ``get_lexer_by_name()`` are now case-insensitive.
- File name matching in lexers and formatters will now use a regex cache
for speed (pull request #205).
- Pygments will now recognize "vim" modelines when guessing the lexer for
a file based on content (pull request #118).
- Major restructure of the ``pygments.lexers`` module namespace. There are now
many more modules with less lexers per module. Old modules are still around
and re-export the lexers they previously contained.
- The NameHighlightFilter now works with any Name.* token type (#790).
- Python 3 lexer: add new exceptions from PEP 3151.
- Opa lexer: add new keywords (pull request #170).
- Julia lexer: add keywords and underscore-separated number
literals (pull request #176).
- Lasso lexer: fix method highlighting, update builtins. Fix
guessing so that plain XML isn't always taken as Lasso (pull request #163).
- Objective C/C++ lexers: allow "@" prefixing any expression (#871).
- Ruby lexer: fix lexing of Name::Space tokens (#860) and of symbols
in hashes (#873).
- Stan lexer: update for version 2.4.0 of the language (pull request #162, PR#255, PR#377).
- JavaScript lexer: add the "yield" keyword (pull request #196).
- HTTP lexer: support for PATCH method (pull request #190).
- Koka lexer: update to newest language spec (pull request #201).
- Haxe lexer: rewrite and support for Haxe 3 (pull request #174).
- Prolog lexer: add different kinds of numeric literals (#864).
- F# lexer: rewrite with newest spec for F# 3.0 (#842), fix a bug with
dotted chains (#948).
- Kotlin lexer: general update (pull request #271).
- Rebol lexer: fix comment detection and analyse_text (pull request #261).
- LLVM lexer: update keywords to v3.4 (pull request #258).
- PHP lexer: add new keywords and binary literals (pull request #222).
- external/markdown-processor.py updated to newest python-markdown (pull request #221).
- CSS lexer: some highlighting order fixes (pull request #231).
- Ceylon lexer: fix parsing of nested multiline comments (#915).
- C family lexers: fix parsing of indented preprocessor directives (#944).
- Rust lexer: update to 0.9 language version (pull request #270, PR#388).
- Elixir lexer: update to 0.15 language version (pull request #392).
- Fix swallowing incomplete tracebacks in Python console lexer (#874).
either because they themselves are not ready or because a
dependency isn't. This is annotated by
PYTHON_VERSIONS_INCOMPATIBLE= 33 # not yet ported as of x.y.z
or
PYTHON_VERSIONS_INCOMPATIBLE= 33 # py-foo, py-bar
respectively, please use the same style for other packages,
and check during updates.
Use versioned_dependencies.mk where applicable.
Use REPLACE_PYTHON instead of handcoded alternatives, where applicable.
Reorder Makefile sections into standard order, where applicable.
Remove PYTHON_VERSIONS_INCLUDE_3X lines since that will be default
with the next commit.
Whitespace cleanups and other nits corrected, where necessary.
Version 1.6
-----------
(released Feb 3, 2013)
- Lexers added:
* Dylan console (PR#149)
* Logos (PR#150)
* Shell sessions (PR#158)
- Fix guessed lexers not receiving lexer options (#838).
- Fix unquoted HTML attribute lexing in Opa (#841).
- Fixes to the Dart lexer (PR#160).
Version 1.6rc1
--------------
(released Jan 9, 2013)
- Lexers added:
* AspectJ (PR#90)
* AutoIt (PR#122)
* BUGS-like languages (PR#89)
* Ceylon (PR#86)
* Croc (new name for MiniD)
* CUDA (PR#75)
* Dg (PR#116)
* IDL (PR#115)
* Jags (PR#89)
* Julia (PR#61)
* Kconfig (#711)
* Lasso (PR#95, PR#113)
* LiveScript (PR#84)
* Monkey (PR#117)
* Mscgen (PR#80)
* NSIS scripts (PR#136)
* OpenCOBOL (PR#72)
* QML (PR#123)
* Puppet (PR#133)
* Racket (PR#94)
* Rdoc (PR#99)
* Robot Framework (PR#137)
* RPM spec files (PR#124)
* Rust (PR#67)
* Smali (Dalvik assembly)
* SourcePawn (PR#39)
* Stan (PR#89)
* Treetop (PR#125)
* TypeScript (PR#114)
* VGL (PR#12)
* Visual FoxPro (#762)
* Windows Registry (#819)
* Xtend (PR#68)
- The HTML formatter now supports linking to tags using CTags files, when the
python-ctags package is installed (PR#87).
- The HTML formatter now has a "linespans" option that wraps every line in a
<span> tag with a specific id (PR#82).
- When deriving a lexer from another lexer with token definitions, definitions
for states not in the child lexer are now inherited. If you override a state
in the child lexer, an "inherit" keyword has been added to insert the base
state at that position (PR#141).
- The C family lexers now inherit token definitions from a common base class,
removing code duplication (PR#141).
- Use "colorama" on Windows for console color output (PR#142).
- Fix Template Haskell highlighting (PR#63).
- Fix some S/R lexer errors (PR#91).
- Fix a bug in the Prolog lexer with names that start with 'is' (#810).
- Rewrite Dylan lexer, add Dylan LID lexer (PR#147).
- Add a Java quickstart document (PR#146).
- Add a "external/autopygmentize" file that can be used as .lessfilter (#802).
While here, add PKG_RUN_TEST support.
Version 1.4
-----------
(codename Unschärfe, released Jan 03, 2010)
- Lexers added:
* Factor (#520)
* PostScript (#486)
* Verilog (#491)
* BlitzMax Basic (#478)
* Ioke (#465)
* Java properties, split out of the INI lexer (#445)
* Scss (#509)
* Duel/JBST
* XQuery (#617)
* Mason (#615)
* GoodData (#609)
* SSP (#473)
* Autohotkey (#417)
* Google Protocol Buffers
* Hybris (#506)
- Do not fail in analyse_text methods (#618).
- Performance improvements in the HTML formatter (#523).
- With the ``noclasses`` option in the HTML formatter, some styles
present in the stylesheet were not added as inline styles.
- Four fixes to the Lua lexer (#480, #481, #482, #497).
- More context-sensitive Gherkin lexer with support for more i18n translations.
- Support new OO keywords in Matlab lexer (#521).
- Small fix in the CoffeeScript lexer (#519).
- A bugfix for backslashes in ocaml strings (#499).
- Fix unicode/raw docstrings in the Python lexer (#489).
- Allow PIL to work without PIL.pth (#502).
- Allow seconds as a unit in CSS (#496).
- Support ``application/javascript`` as a JavaScript mime type (#504).
- Support `Offload <http://offload.codeplay.com>`_ C++ Extensions as
keywords in the C++ lexer (#484).
- Escape more characters in LaTeX output (#505).
- Update Haml/Sass lexers to version 3 (#509).
- Small PHP lexer string escaping fix (#515).
- Support comments before preprocessor directives, and unsigned/
long long literals in C/C++ (#613, #616).
- Support line continuations in the INI lexer (#494).
- Fix lexing of Dylan string and char literals (#628).
- Fix class/procedure name highlighting in VB.NET lexer (#624).
While here, fixes(?) LICENSE from modified-bsd to 2-clause-bsd.
Version 1.3.1
-------------
(bugfix release, released Mar 05, 2010)
- The ``pygmentize`` script was missing from the distribution.
Version 1.3
-----------
(codename Schneeglöckchen, released Mar 01, 2010)
- Added the ``ensurenl`` lexer option, which can be used to suppress the
automatic addition of a newline to the lexer input.
- Lexers added:
* Ada
* Coldfusion
* Modula-2
* haXe
* R console
* Objective-J
* Haml and Sass
* CoffeeScript
- Enhanced reStructuredText highlighting.
- Added support for PHP 5.3 namespaces in the PHP lexer.
- Added a bash completion script for `pygmentize`, to the external/
directory (#466).
- Fixed a bug in `do_insertions()` used for multi-lexer languages.
- Fixed a Ruby regex highlighting bug (#476).
- Fixed regex highlighting bugs in Perl lexer (#258).
- Add small enhancements to the C lexer (#467) and Bash lexer (#469).
- Small fixes for the Tcl, Debian control file, Nginx config,
Smalltalk, Objective-C, Clojure, Lua lexers.
- Gherkin lexer: Fixed single apostrophe bug and added new i18n keywords.
- Various bugfixes and improvements to the lexers
- New lexers for Antlr/Ragel, Asymptote, Ba(sh), Erlang shell, Go, Gherkin,
GLSL, Prolog, Evoque, Modelica, Rebol, MXML, Cython, ABAP, ASP.net,
Vala, Newspeak, CMake and OOC
- New style: Monokai
While here, set LICENSE.
Version 1.0
-----------
(codename Dreiundzwanzig, released Nov 23, 2008)
- Don't use join(splitlines()) when converting newlines to ``\n``,
because that doesn't keep all newlines at the end when the
``stripnl`` lexer option is False.
- Add ``-N`` option to command-line interface to get a lexer name
for a given filename.
- Add Tango style, written by Andre Roberge for the Crunchy project.
- Add Python3TracebackLexer and ``python3`` option to
PythonConsoleLexer.
- Fix a few bugs in the Haskell lexer.
- Fix PythonTracebackLexer to be able to recognize SyntaxError and
KeyboardInterrupt (#360).
- Provide one formatter class per image format, so that surprises like::
pygmentize -f gif -o foo.gif foo.py
creating a PNG file are avoided.
- Actually use the `font_size` option of the image formatter.
- Fixed numpy lexer that it doesn't listen for `*.py` any longer.
- Fixed HTML formatter so that text options can be Unicode
strings (#371).
- Unified Diff lexer supports the "udiff" alias now.
- Fix a few issues in Scala lexer (#367).
- RubyConsoleLexer now supports simple prompt mode (#363).
- JavascriptLexer is smarter about what constitutes a regex (#356).
- Add Applescript lexer, thanks to Andreas Amann (#330).
- Make the codetags more strict about matching words (#368).
- NginxConfLexer is a little more accurate on mimetypes and
variables (#370).
Pygments changelog
==================
Version 0.11.1
--------------
(released Aug 24, 2008)
- Fix a Jython compatibility issue in pygments.unistring (#358).
Version 0.11
------------
(codename Straußenei, released Aug 23, 2008)
Many thanks go to Tim Hatch for writing or integrating most of the bug
fixes and new features.
- Lexers added:
* Nasm-style assembly language, thanks to delroth
* YAML, thanks to Kirill Simonov
* ActionScript 3, thanks to Pierre Bourdon
* Cheetah/Spitfire templates, thanks to Matt Good
* Lighttpd config files
* Nginx config files
* Gnuplot plotting scripts
* Clojure
* POV-Ray scene files
* Sqlite3 interactive console sessions
* Scala source files, thanks to Krzysiek Goj
- Lexers improved:
* C lexer highlights standard library functions now and supports C99
types.
* Bash lexer now correctly highlights heredocs without preceding
whitespace.
* Vim lexer now highlights hex colors properly and knows a couple
more keywords.
* Irc logs lexer now handles xchat's default time format (#340) and
correctly highlights lines ending in ``>``.
* Support more delimiters for perl regular expressions (#258).
* ObjectiveC lexer now supports 2.0 features.
- Added "Visual Studio" style.
- Updated markdown processor to Markdown 1.7.
- Support roman/sans/mono style defs and use them in the LaTeX
formatter.
- The RawTokenFormatter is no longer registered to ``*.raw`` and it's
documented that tokenization with this lexer may raise exceptions.
- New option ``hl_lines`` to HTML formatter, to highlight certain
lines.
- New option ``prestyles`` to HTML formatter.
- New option *-g* to pygmentize, to allow lexer guessing based on
filetext (can be slowish, so file extensions are still checked
first).
- ``guess_lexer()`` now makes its decision much faster due to a cache
of whether data is xml-like (a check which is used in several
versions of ``analyse_text()``. Several lexers also have more
accurate ``analyse_text()`` now.
Pygments is a syntax highlighting package written in Python.
It is a generic syntax highlighter for general use in all kinds of software
such as forum systems, wikis or other applications that need to prettify
source code. Highlights are:
* a wide range of common languages and markup formats is supported
* special attention is paid to details, increasing quality by a fair amount
* support for new languages and formats are added easily
* a number of output formats, presently HTML, LaTeX, RTF and ANSI sequences
* it is usable as a command-line tool and as a library
* ... and it highlights even Brainfuck!