This log summarizes the changes in each released version of Rouge.
Rouge follows Semantic Versioning 2.0.0.
Comparison with the previous version
- General
- BPF Lexer
- Update BPF lexer (#2004 by Paul Chaignon)
- Code Owners Lexer (NEW)
- Add Code owners lexer (#1969 by Tan Le)
- Dart Lexer
- Remove
inline
from Dart declaration keywords (#1990 by Parker Lougheed)
- Remove
- Elixir Lexer
- Detect Elixir syntax by shebang (#2001 by arathunku)
- Groovy Lexer
- Update groovy for record, enum, var (#1984 by Guillaume Laforge)
- Python Lexer
- Guess .pyi files as Python (#1996 by ryderben)
- Svelte Lexer (NEW)
- add svelte lexer (#1979 by Brodie Davis)
- Xoji Lexer
Comparison with the previous version
- HCL & Terrafom Lexer
- Update HCL & Terraform Lexers (#1975 by Simon Heather)
- IRB Lexer
- Swift Lexer
- Swift 5.8 and 5.9 updates (#1948 by John Fairhurst)
- TypeScript Lexer
- XQuery Lexer
- XQuery: .xqm suffix added (#1971 by Christian Grün)
Comparison with the previous version
- Python Lexer
- Fix highlight of ellipsis in Python lexer (#1964 by Tan Le)
- Wollok Lexer
- Fix Wollok lexer: entity list is shared between lexer instances (#1954 by nsfisis)
Comparison with the previous version
- General
- Dart Lexer
- Add basic support for Dart 3 features (#1935 by Parker Lougheed)
- Dot Lexer
- Add alias
graphviz
fordot
(#1651 by Alexander Sapozhnikov)
- Add alias
- JavaScript Lexer
- javascript: Fix an issue where some keywords like "for" and "if" are mistakenly recognized as functions (#1938 by nsfisis)
- Liquid Lexer
- Liquid: update for 5.0.0 (#1681 by Eric Knibbe)
- Mosel Lexer
- Delete buggy detection for Mosel (#1936 by Cyril Brulebois)
- Openedge Lexer
- fix: improve openedge abl langage (#1843 by clement-brodu)
- PHP Lexer
- php: fix highlight of fully-qualified identifiers (fix #1718) (#1924 by nsfisis)
- Python Lexer
- Support doctest highlight in Python lexer (#1932 by Tan Le)
- Ruby Lexer
- Rust Lexer
- rust: Update builtins and sample file (fix #1922) (#1923 by nsfisis)
- Shell Lexer
- Add detection for zsh completion files (#1933 by Germán Riaño)
Comparison with the previous version
- General
- C# Lexer
- Update C# lexer: new keywords and numeric literal syntax improvements (#1660 by Dominique Schuppli)
- Cisco IOS Lexer (NEW)
- CPP Lexer
- Fix highlight of functions in CPP lexer (#1928 by Tan Le)
- JavaScript Lexer
- Recognize javascript functions & classes (#1920 by George Waters)
- PHP Lexer
- Support attributes in PHP lexer (#1915 by Tan Le)
- Python Lexer
- Improve Python lexer (#1919 by George Waters)
- YAML Lexer
- Fix already initialized constant warning in YAML (#1926 by Tan Le)
- Rouge CI
- Add Ruby 3.2 to CI build (#1912 by Tan Le)
Comparison with the previous version
- General
- Coq Lexer
- Gherkin Lexer
- Update Gherkin keywords (#1905 by Tan Le)
- HTTP Lexer
- Add support for the HTTP QUERY method (#1896 by Asbjørn Ulsberg)
- Java Lexer
- Support JEP 378 Text Blocks in Java [Closes #1687] (#1867 by Filip Procházka)
- JavaScript Lexer
- Fix template strings problem in javascript lexer (#1878 by DGCK81LNN)
- LLVM Lexer
- Update LLVM keywords (#1903 by Nikita Popov)
- Powershell Lexer
- Praat Lexer
- Replace complex rules with block matchers (#1855 by Tan Le)
- SystemD Lexer
- Allow quoteless continuations in Systemd (#1899 by Michael Herold)
- Vala Lexer
- Add .vapi extension to vala lexer (#1892 by Tan Le)
- YAML Lexer
- Accept colon(s) in YAML key names (#1888 by Greg Dubicki)
- Rouge CI
- Update GitHub actions/checkout@v3 (#1897 by Tan Le)
- Documentation
Comparison with the previous version
This is a major release and includes some breaking changes:
- General
- Drop support for Ruby < 2.7 (#1862 by Tan Le)
- Solidity Lexer
- remove support for languages related to pyramid schemes (045d7bc by Jeanine Adkisson)
- HTTP Lexer
- Add support for HTTP/2 responses to HTTP lexer (#1864 by aschmitz)
- TSX Lexer
- TOML Lexer
- Haxe Lexer
- Define missing namespace state for haxe lexer (#1858 by Tan Le)
- Praat Lexer
- Praat: support matrix and string vector type (#1820 by Syuparn)
- RML Lexer
- Add support for RML language (#1659 by Pietro Cattaneo)
- Make Lexer
- Add more directives in Makefile lexer (#1849 by Tan Le)
- Diff Lexer
- Fix angle bracket being confused as diff (#1854 by Tan Le)
- Documentation
- Add missing Isabelle Lexer entry in change log (#1853 by Tan Le)
Comparison with the previous version
- CPP Lexer
- Fix template highlight of braces in CPP lexer (#1839 by Tan Le)
- Dart Lexer
- Dart: Distinguish between punctuation and operators (#1838 by Gareth Thackeray)
- Groovy Lexer
- Support more Jenkins pipeline name variations in groovy lexer (#1836 by Danila Malyutin)
- Isabelle Lexer (NEW)
- Feature.isabelle lexer (#1682 by Dacit)
- JavaScript Lexer
- Fix highlight of nullish coalescing operator in JS (#1846 by Tan Le)
- Meson Lexer (NEW)
- Nial Lexer (NEW)
- Add Nial Lexer (feature branch) (#1844 by Raghu R)
- Pascal Lexer
- PHP Lexer
- PHP: support new syntax (constructor property promotion, readonly modifier, etc.) (#1829 by nsfisis)
- TOML Lexer
- lexer: TOML: Support more integer and floating formats (#1832 by Toru Niina)
- Documentation
Comparison with the previous version
- General
- Stop checking encoding names (#1806 by casperisfine)
- Docker Lexer
- Fix notation of named stages in multi-stage docker builds (#1809 by bartbroere)
- Idris Lexer
- Add support for Idris language (#1464 by bmwant)
- Lean Lexer (NEW)
- Initial support for lean 3 (#1798 by kunigami)
- Matlab Lexer
- Add new Matlab keywords (fixes #1589) (#1669 by siko1056)
- PLSQL Lexer (NEW)
- Oracle PLSQL lexer (suitable for Oracle SQL as well) (#1811 by lee-lindley)
- Python Lexer
- Python: Support conversion specifiers in format strings (#1801 by chvp)
- Syzlang and Syzprog Lexer (NEW)
- Rouge CI
- Documentation
Comparison with the previous version
- C Lexer
- Fix highlight of #include statement (#1770 by cdown)
- Console Lexer
- Fix issue with console line ends with backlash (#1779 by mojavelinux)
- CPP Lexer
- Add keywords and operators introduced in C++20 (#1784 by tchaikov)
- Cypher Lexer
- Support multi-line comments (#1710 by Mogztter)
- Dart Lexer
- Add new keywords and types (#1691 by parlough)
- Fluent Lexer (NEW)
- Add Fluent lexer (#1697 by rkh)
- HCL Lexer
- Add new file extensions (#1769 by maximd)
- JSX Lexer
- Allow dashes in attribute names (#1650 by bpl)
- Kotlin Lexer
- Fix highlight of interface, nullable type and generic property (#1762 by vidarh)
- Rust Lexer
- Update keywords for a new version (#1649 by nsfisis)
- SPARQL Lexer
- Support unicode names (#1654 by jakubklimek)
- Stan Lexer (NEW)
- Add Stan lexer (#1735 by jgaeb)
- Stata Lexer (NEW)
- Add Stata lexer (#1637 by reifjulian)
- TOML Lexer
- Support quoted keys (#1777 by tancnle)
- Fix visual test app on Ruby 3.0 (#1696 by rkh)
Comparison with the previous version
- Ceylon Lexer
- Backtracking fix in interpolation regex (#1773 by thewoolleyman)
- Dafny Lexer
- Add Dafny Lexer (#1647 by davidcok, mschlaipfer)
- Elixir Lexer
- Add support for HEEX templates (#1736 by sineed
- Rust Lexer
- Fix lexing of integers, escapes, identifiers, unicode idents, keywords and builtins, byte strings and multiline and doc comments (#1711 by thomcc)
- SQL Lexer
- Swift Lexer
- Add 5.5 keywords (#1715 by johnfairh))
- Rouge CI
- Migrate from Travis CI to GitHub (#1728 by Geod24)
- Documentation
Comparison with the previous version
- CPP Lexer
- Add year and date chrono literals, add std::complex literals, fix chrono literals with digit separator (#1665 by swheaton)
- Factor and GHC Core Lexer
- Fix catastrophic backtrack (#1690 by Ravlen)
- JSL Lexer
- Fix single line block comments, scoped variables and functions (#1663 by BenPH)
- YAML Lexer
- Fix YAML key containing special character (#1667 by tancnle)
- Fix Ruby 2.7 keyword parameter deprecation warning (#1597 by stanhu)
- Updated README (#1666 by dchacke)
Comparison with the previous version
- CMake Lexer
- Add missing CMake commands to CMake lexer (#1630 by gnaggnoyil)
- Crystal Lexer
- JSL Lexer
- Fix lexing of messages, nested comments, missing operators and decimals in JSL lexer (#1638 by Ben Peachey Higdon)
- OCL Lexer (NEW)
- Add OCL lexer (#1637 by Gerson Sunyé)
- Python Lexer
- Use String::Affix token for string prefixes in Python lexer (#1635 by Tan Le)
- ReasonML Lexer
- Improve support for comments in ReasonML lexer (#1641 by Amirali Esmaeili)
- ReScript Lexer (NEW)
- Add ReScript lexer (#1633 by Amirali Esmaeili)
- Rust Lexer
- Add support for octal literals to Rust lexer (#1643 by nsfisis)
Comparison with the previous version
- General
- Use
Enumerator#with_index
to detect line numbers (#1615 by takafumi.suzuki)
- Use
- Batchfile Lexer
- Add support for long options to Batchfile lexer (#1626 by Michael Camilleri)
- C++ Lexer
- Fix binary literal digit separator in C++ lexer (#1620 by swheaton)
- Docker Lexer
- Add
Dockerfile
as an alias for the Docker lexer (#1609 by Konnor Rogers)
- Add
- JavaScript Lexer
- Fix template string lexing in JavaScript lexer (#1623 by Michael Camilleri)
- Kotlin Lexer
- Ensure word break follows keywords in Kotlin lexer (#1621 by Michael Camilleri)
- Perl Lexer
- Improve support for sigils in Perl lexer (#1625 by Michael Camilleri)
- PowerShell Lexer
- Ruby Lexer
- Revert empty patterns in Ruby lexer (#1624 by Michael Camilleri)
- Rust Lexer
- Add continue to keywords in Rust lexer (#1617 by Aleksey Kladov)
- Velocity Lexer
- Fix lexing of brackets in Velocity lexer (#1605 by domRowan)
Comparison with the previous version
- General
- Fix errors from new empty regex requirements (#1606 by Michael Camilleri)
- Restrict the use of empty-matching regular expressions (#1548 by Jeanine Adkisson)
- Add a CLI debug command that provides reasonable defaults (#1593 by Jeanine Adkisson)
- Update documentation to use bundle config set path (#1583 by ComFreek)
- Add line highlighting option (#1426 by Dan Allen)
- Add Lexer#with and Lexer.lookup_fancy (#1565 by Jeanine Adkisson)
- Apex Lexer
- Fix invalid use of String#casecmp in Apex lexer (#1596 by Jeanine Adkisson)
- E-mail Lexer (NEW)
- Add e-mail lexer (#1567 by Steve Mokris)
- HTTP Lexer
- Add a :content option to HTTP lexer (#1592 by Jeanine Adkisson)
- J Lexer (NEW)
- Add J lexer (#1584 by unsigned-wrong-wrong-int)
- Janet Lexer
- Improve handling of quoted forms in Janet lexer (#1586 by Michael Camilleri)
- JavaScript Lexer
- Improve optional chaining in JavaScript lexer (#1594 by Jeanine Adkisson)
- Rust Lexer
- Fix lexing of await in Rust lexer (#1587 by nsfisis)
Comparison with the previous version
- Kotlin Lexer
- Fix handling of ::class in Kotlin lexer (#1572 by Manuel Dossinger)
- PostScript Lexer (NEW)
- Add PostScript lexer (#1578 by Liam Cooke)
- Ruby Lexer
- Handle % like / in Ruby lexer (#1563 by Jeanine Adkisson)
- Rust Lexer
- systemd Lexer (NEW)
- Add systemd lexer (#1568 by Jean-Louis Jouannic)
Comparison with the previous version
- PHP Lexer
- Rewrite PHP lexer to support use statements, function declarations and type declarations (#1489 by Michael Camilleri)
Comparison with the previous version
- General
- Batchfile Lexer
- Allow @ before REM in Batchfile lexer (#1545 by Konrad Borowski)
- BrightScript Lexer (NEW)
- Add BrightScript lexer (#1544 by domRowan)
- C++ Lexer
- Support template parameter packs in C++ lexer (#1555 by Michael Camilleri)
- Docker Lexer
- Remove docker_ file glob from Docker lexer (#1550 by Michael Camilleri)
- Janet Lexer (NEW)
- Add Janet lexer (#1558 by sogaiu)
- Jinja Lexer
- Fix nesting of raw and verbatim tags in Jinja/Twig lexers (#1552 by Michael Camilleri)
- Perl Lexer
- PowerShell Lexer
- Rego Lexer
- Fix identifier matching in Rego lexer (#1556 by Michael Camilleri)
- Sass Lexer
- Fix & selector matching in Sass/SCSS lexer (#1554 by Michael Camilleri)
- SCSS Lexer
- Fix & selector matching in Sass/SCSS lexer (#1554 by Michael Camilleri)
- SSH Config Lexer (NEW)
- Add SSH config lexer (#1543 by Chris Buckley)
- Twig Lexer
- Fix nesting of raw and verbatim tags in Jinja/Twig lexers (#1552 by Michael Camilleri)
Comparison with the previous version
- Augeas Lexer (NEW)
- Add Augeas lexer (#1521 by Raphaël Pinson)
- BibTeX Lexer (NEW)
- Add BibTeX lexer (#1360 by alexlihengwang)
- C++ Lexer
- Support scope resolution operator in C++ lexer (#1523 by Michael Camilleri)
- Diff Lexer
- Fix erroneous detection in Diff lexer (#1532 by Catalin)
- Haskell Lexer
- Improve support for single quotes in Haskell lexer (#1524 by Michael Camilleri)
- HLSL Lexer (NEW)
- Add HLSL lexer (#1520 by Mitch McClellan)
- HTML Lexer
- Add
*.cshtml
file glob to HTML lexer (#1522 by Michael Camilleri)
- Add
- JavaScript Lexer
- Fix erroneous brace matching rule in JavaScript lexer (#1526 by Michael Camilleri)
- JSX Lexer
- Simplify JSX and TSX lexers (#1492 by Michael Camilleri)
- LiveScript Lexer (NEW)
- Add LiveScript lexer (#650 by FuriousBoar)
- OpenType Feature File Lexer
- Add new keywords to and fix bugs in OpenType feature file lexer (#1519 by Zachary Quinn Scheuren)
- PowerShell Lexer
- Fix incorrect predicate usage in PowerShell lexer (#1536 by Michael Camilleri)
- TSX Lexer
- TypeScript Lexer
- Velocity Lexer (NEW)
- Add Velocity lexer (#1518 by Michael Camilleri)
- Zig Lexer (NEW)
- Add Zig lexer (#1533 by Timmy Jose)
Comparison with the previous version
- General
- JavaScript Lexer
- Add CommonJS file glob to JavaScript lexer (#1511 by Andrew)
- Kotlin Lexer
- Python Lexer
- SPARQL Lexer
- Support the 'a' keyword in SPARQL lexer (#1493 by Michael Camilleri)
- Turtle Lexer
- Allow empty prefix in Turtle lexer (#1494 by Michael Camilleri)
Comparison with the previous version
- General
- Use plain Ruby files for built-in keyword lists (#1418 by Ashwin Maroli)
- Load Rouge files using methods scoped to the Rouge module (#1481 by Michael Camilleri)
- Use module constants to store directory paths for file loading (#1416 by Ashwin Maroli)
- Fix Ruby keyword warning in check:memory Rake task (#1431 by Ashwin Maroli)
- Revert Rubocop splat expansion cop (#1461 by Michael Camilleri)
- C++ Lexer
- Make lexing of class-like identifiers more consistent in C++ lexer (#1495 by Michael Camilleri)
- CMake Lexer
- Fix handling of escaped quotes in CMake lexer (#1473 by Michael Camilleri)
- Console Lexer
- Add option to tokenise error messages in Console lexer (#1498 by Gavin Lock)
- Cypher Lexer (NEW)
- Add Cypher lexer (#1423 by Guillaume Grossetie)
- Datastudio Lexer (NEW)
- Add Datastudio lexer (#1453 by Bastien Durel)
- F# Lexer
- Support dictionary indexers on nested properties in F# lexer (#1482 by Michael Camilleri)
- GHC Cmm Lexer (NEW)
- Add GHC Cmm lexer (#1387 by Sven Tennie)
- ISBL Lexer (NEW)
- Add ISBL lexer (#891 by Dmitriy Tarasov)
- JSON Lexer
- Allow unmatched braces and brackets in JSON lexer (#1497 by Michael Camilleri)
- JSONDOC Lexer
- Add jsonc alias to JSONDOC lexer (#1440 by Michael Camilleri)
- Kotlin Lexer
- Support labels in Kotlin lexer (#1496 by Jen)
- Markdown Lexer
- Add support for multi-line links in Markdown lexer (#1465 by Marcel Amirault)
- Pascal Lexer
- Add Lazarus program file glob to Pascal lexer (#1466 by Morabaraba)
- PHP Lexer
- Python Lexer
- Racket Lexer
- Improve support for # in Racket lexer (#1472 by Michael Camilleri)
- Rego Lexer (NEW)
- Add Rego lexer (#1468 by David Ashby)
- Ruby Lexer
- Solidity Lexer (NEW)
- Add Solidity lexer (#760 by Noel Maersk)
- Terraform Lexer
- Support regular expressions in Terraform lexer (#1490 by Michael Camilleri)
- TypeScript Lexer
- Add support for optional chaining operator to TypeScript lexer (#1475 by Michael Camilleri)
- Vue Lexer
- Support slot shorthand syntax to Vue lexer (#1483 by Michael Camilleri)
- YANG Lexer (NEW)
Comparison with the previous version
- General
- Fix name of splat expansion Rubocop rule (#1451 by Hiroki Noda)
- CoffeeScript Lexer
- Improve regex and string lexing in CoffeeScript lexer (#1441 by Michael Camilleri)
- ECL Lexer (NEW)
- Add ECL lexer (#1396 by David de Hilster)
- Markdown Lexer
- NASM Lexer
- Rewrite NASM lexer (#1428 by Michael Camilleri)
- Ruby Lexer
- Support additional number literals in the Ruby lexer (#1456 by FUJI Goro)
- Scala Lexer
- Fix symbol lexing in Scala lexer (#1438 by Michael Camilleri)
- Varnish Lexer
- Add support for Fastly extensions to Varnish lexer (#1454 by FUJI Goro)
Comparison with the previous version
- General
- Update GitHub Issues settings (#1436 by Michael Camilleri)
- Add information about custom HTML formatters to README (#1415 by Jeanine Adkisson)
- Fix memoisation of Lexer.detectable? (#1425 by Ashwin Maroli)
- Update latest Ruby checked by Travis to 2.7 (#1422 by Michael Camilleri)
- Add TerminalTruecolor formatter (#1413 by Jeanine Adkisson)
- Fix escaping of term codes in Terminal256 formatter (#1404 by Jeanine Adkisson)
- Fix crash in Terminal256 formatter with escaped tokens (#1402 by Jeanine Adkisson)
- D Lexer
- Add FILE_FULL_PATH keyword to D lexer (#1394 by Hiroki Noda)
- Java Lexer
- Lua Lexer
- Add regex support to Lua lexer (#1403 by Michael Camilleri)
- NASM Lexer
- Improve the NASM visual sample (#1421 by Bernardo Sulzbach)
- Objective-C Lexer
- PowerShell Lexer
- Fix array access priority in PowerShell lexer (#1429 by Michael Camilleri)
- Rust Lexer
- Shell Lexer
- Support using '"' to identify heredoc delimiters in Shell lexer (#1411 by Michael Camilleri)
- TOML Lexer
- Improve string syntax support in TOML lexer (#1419 by Jeanine Adkisson)
- TypeScript Lexer
- Support optional props in TypeScript lexer (#1393 by Michael Camilleri)
- Varnish Lexer (NEW)
Comparison with the previous version
- General
- Fix parsing of 'false' as Boolean option value (#1382 by Michael Camilleri)
- Console Lexer
- Fix comment parsing in Console lexer (#1379 by Michael Camilleri)
- FreeFEM Lexer (NEW)
- Add FreeFEM lexer (#1356 by Simon Garnotel)
- GHC Lexer (NEW)
- Add GHC Core lexer (#1377 by Sven Tennie)
- Jinja Lexer
- LLVM Lexer
- Add addrspacecast keyword, change keyword matching system in LLVM lexer (#1376 by Michael Camilleri)
- Objective-C++ Lexer (NEW)
- Add Objective-C++ lexer (#1378 by Saagar Jha)
- Python Lexer
- Add Starlark support to Python lexer (#1369 by zoidbergwill)
- Rust Lexer
- Add division operator to Rust lexer (#1384 by Hugo Peixoto)
- Swift Lexer
- Add some keyword and key-path syntax to Swift lexer (#1332 by Jim Dovey)
Comparison with the previous version
- General
- JSONDOC Lexer
- Update state names in json-doc lexer (#1364 by Maxime Kjaer)
- Liquid Lexer
- Add pattern for matching filenames to the Liquid lexer (#1351 by Eric Knibbe)
- Magik Lexer
- Add
_finally
keyword to Magik lexer (#1365 by Steven Looman)
- Add
- NES Assembly Lexer (NEW)
- Add NES Assembly lexer (#1354 by Yury Sinev)
- Slice Lexer (NEW)
- Add Slice lexer (#867 by jolkdarr)
- TOML Lexer
- Add support for inline tables to TOML lexer (#1359 by Michael Camilleri)
Comparison with the previous version
- BPF Lexer
- Support disassembler output in BPF lexer (#1346 by Paul Chaignon)
- Q Lexer
- Fix quote escaping in Q lexer (#1355 by AngusWilson)
- TTCN-3 Lexer (NEW)
- Add TTCN-3 testing language lexer (#1337 by Garcia)
Comparison with the previous version
- General
- Embedded Elixir Lexer
- Add Phoenix Live View file glob to Embedded Elixir lexer (#1347 by Maksym Verbovyi)
- Minizinc Lexer (NEW)
- Add MiniZinc lexer (#1329 by Abe Voelker)
Comparison with the previous version
- Perl Lexer
- Fix overeager quoting constructs in Perl lexer (#1335 by Brent Laabs)
Comparison with the previous version
- Apex Lexer (NEW)
- Add Apex lexer (#1103 by Jefersson Nathan)
- Coq Lexer
- Tokenise commonly used logical symbols in Coq lexer
- CSV Schema Lexer (NEW)
- Add CSV Schema lexer (#1039 by Filipe Garcia)
- JSON Lexer
- Fix pattern for values incorporating backslashes in JSON lexer (#1331 by Michael Camilleri)
- Kotlin Lexer
- Improve support for Gradle plugin names in Kotlin lexer (#1323 by Andrew Lord)
- Simplify regular expressions used in Kotlin lexer (#1326 by Andrew Lord)
- Highlight constructors/functions in Kotlin lexer (#1321 by Andrew Lord)
- Fix type highlighting (including nested generics) in Kotlin lexer (#1322 by Andrew Lord)
- Liquid Lexer
- Rewrite large portion of Liquid lexer (#1327 by Eric Knibbe)
- Robot Framework Lexer (NEW)
- Add Robot Framework lexer (#611 by Iakov Gan)
- Shell Lexer
- Add MIME types and file globs to Shell lexer (#716 by Jan Chren)
- Swift Lexer
- Improve attribute formatting in Swift lexer (#806 by John Fairhurst)
Comparison with the previous version
- General
- Remove link to online dingus (#1317 by Michael Camilleri)
- Clean Lexer (NEW)
- Add Clean lexer (#1305 by Camil Staps)
- Common Lisp Lexer
- Add 'lisp' alias to Common Lisp lexer (#1315 by Bonnie Eisenman)
- HTTP Lexer
- Permit an empty reason-phrase element in HTTP lexer (#1313 by Michael Camilleri)
- JSL Lexer (NEW)
- Add JSL lexer (#871 by justinc11)
- Lustre Lexer(NEW)
- Lutin Lexer(NEW)
- Add Lutin lexer (#1307 by Erwan Jahier)
- SPARQL Lexer (NEW)
- Add SPARQL lexer (#872 by Stefan Daschek)
Comparison with the previous version
- EEX Lexer (NEW)
- Add EEX lexer (#874 by julp)
- Elixir Lexer
- Fix escaping/interpolating in string and charlist literals in Elixir lexer (#1308 by Michael Camilleri)
- Haxe Lexer (NEW)
- Add Haxe lexer (#815 by Josu Igoa)
- HQL Lexer (NEW)
- Add HQL lexer and add types to SQL lexer (#880 by tkluck-booking)
- HTTP Lexer
- Add support for HTTP/2 to HTTP lexer (#1296 by Michael Camilleri)
- JavaScript Lexer
- Add new regex flags to JavaScript lexer (#875 by Brad)
- MATLAB Lexer
- Change method of saving MatLab built-in keywords (#1300 by Michael Camilleri)
- Q Lexer
- Fix use of preceding whitespace in comments in Q lexer (#858 by Mark)
- SQL Lexer
- Add HQL lexer and add types to SQL lexer (#880 by tkluck-booking)
- Terraform Lexer
- Add support for first-class expressions to Terraform lexer (#1303 by Michael Camilleri)
Comparison with the previous version
- General
- Update README (#1271 by Michael Camilleri)
- Disable selection in HTML generated by HTMLLineTable formatter (#1276 by Ashwin Maroli)
- Remove sudo: false configuration from Travis settings (#1281 by Olle Jonsson)
- Improve escaping of TeX formatter (#1277 by Jeanine Adkisson)
- Change Generic::Output in Magritte theme (#1278 by Jeanine Adkisson)
- Add a Rake task to check warnings output by Ruby (#1272 by Michael Camilleri)
- Move to self-hosted documentation (#1270 by Michael Camilleri)
- ARM Assembly Lexer (NEW)
- Batchfile Lexer (NEW)
- Add Batchfile lexer (#1286 by Carlos Montiers A)
- BBC Basic Lexer (NEW)
- Add BBC Basic lexer (#1280 by bavison)
- C++ Lexer
- CMHG Lexer (NEW)
- Add CMHG lexer (#1282 by bavison)
- Console Lexer
- Use Text::Whitespace token in Console lexer (#894 by Alexander Weiss)
- Cython Lexer (NEW)
- Add Cython lexer (#1287 by Mark Waddoups)
- EPP Lexer (NEW)
- Add EPP lexer (#903 by Alexander "Ananace" Olofsson)
- JSON Lexer
- Fix escape quoting in JSON lexer (#1297 by Michael Camilleri)
- Julia Lexer
- Fix duplicating capture groups in Julia lexer (#1292 by Michael Camilleri)
- Make Lexer
- Improve Make lexer (#1285 by bavison)
- MessageTrans Lexer (NEW)
- Add a MessageTrans lexer (#1283 by bavison)
- Plist Lexer
- Simplify Plist demo and visual sample (#1275 by Jeanine Adkisson)
- Puppet Lexer
- Fix unmatched characters in Puppet lexer (#1288 by Michael Camilleri)
- R Lexer
- Fix lexing of names in R lexer (#896 by François Michonneau)
- sed Lexer
- Fix custom delimiter rule in sed lexer (#893 by Valentin Vălciu)
Comparison with the previous version
- General
- Rationalise Rake tasks (#1267 by Michael Camilleri)
- Remove italics from preprocessor style rules (#1264 by Michael Camilleri)
- Remove rubyforge_project property from gemspec (#1263 by Olle Jonsson)
- Add missing magic comments (#1258 by Ashwin Maroli)
- Replace tabs with spaces in some lexers (#1257 by Ashwin Maroli)
- Profile memory usage of Rouge::Lexer.find_fancy (#1256 by Ashwin Maroli)
- Add juxtaposing support to visual test app (#1168 by Ashwin Maroli)
- Ada Lexer (NEW)
- Add Ada lexer (#1255 by Jakob Stoklund Olesen)
- CUDA Lexer (NEW)
- Add CUDA lexer (#963 by Yuma Hiramatsu)
- GDScript Lexer (NEW)
- Add GDScript lexer (#1036 by Leonid Boykov)
- Gherkin Lexer
- Fix placeholder lexing in Gherkin lexer (#952 by Jamis Buck)
- GraphQL Lexer
- Add keywords and improve frontmatter lexing in GraphQL lexer (#1261 by Emile Bosch)
- Handlebars Lexer
- Fix Handlebars lexing with HTML attributes and whitespace (#899 by Jasper Maes)
- HOCON Lexer (NEW)
- Add HOCON lexer (#1253 by David Wood)
- HTML Lexer
- JSON Lexer
- Add key/value highlighting to JSON lexer (#1029 by María Inés Parnisari)
- Mason Lexer (NEW)
- OpenType Feature File Lexer (NEW)
- Add OpenType Feature File lexer (#864 by Thom Janssen)
- PHP Lexer
- Update keywords and fix comment bug in PHP lexer (#973 by Fred Cox)
- ReasonML Lexer (NEW)
- Add ReasonML lexer (#1248 by Sergei Azarkin)
- Rust Lexer
- SAS Lexer (NEW)
- Add SAS lexer (#1107 by tomsutch)
Comparison with the previous version
- General
- Add HTMLLineTable formatter (#1211 by Ashwin Maroli)
- Avoid unnecessary String duplication in HTML formatter (#1244 by Ashwin Maroli)
- Remove trailing whitespace (#1245 by Ashwin Maroli)
- Avoid allocating block parameters unnecessarily (#1246 by Ashwin Maroli)
- Update profile_memory task (#1243 by Ashwin Maroli)
- Clarify instructions for running a single test (#1238 by Ashwin Maroli)
- Configure Bundler to validate task dependencies (#1242 by Ashwin Maroli)
- Improve readability of lexer debug output (#1240 by Ashwin Maroli)
- Add documentation on using Docker for development (#1214 by Nicolas Guillaumin)
- Add ability to evaluate lexer similarity (#1206 by Jeanine Adkisson)
- Fix empty color bug in TeX rendering (#1224 by Jeanine Adkisson)
- Add a global 'require' option for rougify CLI tool (#1215 by Jeanine Adkisson)
- Add background colour for monokai.sublime theme (#1204 by Ashwin Maroli)
- Elixir Lexer
- Improve tokenising of numbers in Elixir lexer (#1225 by Michael Camilleri)
- JSON Lexer
- Add Pipfile filename globs to JSON and TOML lexers (#975 by Remco Haszing)
- Liquid Lexer
- Improve highlighting of for tags in Liquid lexer (#1196 by Ashwin Maroli)
- Make Lexer
- Simplify Make visual sample (#1227 by Michael Camilleri)
- Magik Lexer
- Add
_class
and_while
keywords to Magik lexer (#1251 by Steven Looman)
- Add
- OpenEdge ABL Lexer (NEW)
- Add OpenEdge ABL lexer (#1200 by Michael Camilleri)
- Perl Lexer
- Add improvements (eg. transliteration) to Perl lexer (#1250 by Brent Laabs)
- PowerShell Lexer
- Ruby Lexer
- TOML Lexer
- Add Pipfile filename globs to JSON and TOML lexers (#975 by Remco Haszing)
- XPath Lexer (NEW)
- Add XPath and XQuery lexers (#1089 by Maxime Kjaer)
- XQuery Lexer (NEW)
- Add XPath and XQuery lexers (#1089 by Maxime Kjaer)
- Xojo Lexer
- Improve comment support in Xojo lexer (#1229 by Jim McKay)
- YAML Lexer
Comparison with the previous version
- PowerShell Lexer
- Fix invalid parenthesis state in PowerShell lexer (#1222 by Michael Camilleri)
Comparison with the previous version
- General
- Correct typo in lexer development guide (#1219 by Michael Camilleri)
- Add support for TeX rendering (#1183 by Jeanine Adkisson)
- Fix deprecation of argument to Lexer.continue (#1187 by Jeanine Adkisson)
- Add development environment documentation (#1212 by Michael Camilleri)
- Correct lexer development guide (#1145 by Michael Camilleri)
- Remove unnecessary variables and fix duplicate ranges (#1197 by Masataka Pocke Kuwabara)
- Optimise creation of directory names (#1207 by Ashwin Maroli)
- Add reference to semantic versioning to README (#1205 by Michael Camilleri)
- Add pr-open to Probot's exempt labels (#1203 by Michael Camilleri)
- Adjust wording of stale issue message (#1202 by Michael Camilleri)
- Configure Probot to close stale issues (#1199 by Michael Camilleri)
- Add theme switcher to visual test app (#1198 by Ashwin Maroli)
- Add the magritte theme (#1182 by Jeanine Adkisson)
- Reduce duplicated range warnings (#1189 by Ashwin Maroli)
- Improve display of visual samples (#1181 by Ashwin Maroli)
- Remove duplicate issue templates (#1193 by Michael Camilleri)
- Add issue templates (#1190 by Michael Camilleri)
- Enable Rubocop ambiguity warnings (#1180 by Michael Camilleri)
- Allow Rake tasks to be run with warnings (#1177 by Ashwin Maroli)
- Reset instance variable only if it is defined (#1184 by Ashwin Maroli)
- Fix
escape_enabled?
predicate method (#1174 by Dan Allen) - Fix removal of
@debug_enabled
(#1173 by Dan Allen) - Fix wording and indentation in changelog Rake task (#1171 by Michael Camilleri)
- BPF Lexer (NEW)
- Add BPF lexer (#1191 by Paul Chaignon)
- Brainfuck Lexer (NEW)
- Add Brainfuck lexer (#1037 by Andrea Esposito)
- Haskell Lexer
- JSON Lexer
- Add extra mimetypes to JSON lexer (#1030 by duncangodwin)
- Jsonnet Lexer
- Add
*.libsonnet
glob to Jsonnet lexer (#972 by Tomas Virgl)
- Add
- Liquid Lexer
- Fix debug errors in Liquid lexer (#1192 by Michael Camilleri)
- LLVM Lexer
- Fix various issues in LLVM lexer (#986 by Robin Dupret)
- Magik Lexer (NEW)
- Add (Smallworld) Magik lexer (#1044 by Steven Looman)
- Prolog Lexer
- Fix comment character in Prolog lexer (#830 by Darius Foo)
- Python Lexer
- Fix shebang regex in Python lexer (#1172 by Michael Camilleri)
- Rust Lexer
- Add support for integer literal separators in Rust lexer (#984 by Linda_pp)
- Shell Lexer
- Fix interpolation and escaped backslash bugs in Shell lexer (#1216 by Jeanine Adkisson)
- Swift Lexer
- Fix Swift lexer to support Swift 4.2 (#1035 by Mattt)
Comparison with the previous version
- General
Comparison with the previous version.
- General
- Add Rake task for generating changelog entries (#1167 by Michael Camilleri)
- Tidy up changelog (#1169 by Michael Camilleri)
- Improve functionality of HTMLLinewise formatter (#1156 by Dan Allen)
- Avoid creating array on every
Lexer.all
call (#1140 by Ashwin Maroli) - Add clearer tests for
Lexer.detectable?
(#1153 by Ashwin Maroli) - Replace the
:continue
option with a#continue_lex
method (#1151 by Jeanine Adkisson) - Introduce
:detectable?
singleton method for lexers (#1149 by Ashwin Maroli) - Update HTMLTable formatter to delegate to inner formatter (#1083 by Dan Allen)
- Add basic memory usage profile (#1137 by Ashwin Maroli)
- Avoid array creation when checking if source is UTF-8 (#1141 by Ashwin Maroli)
- Add lexer development documentation (#1111 by Michael Camilleri)
- Coerce state names into symbols rather than strings (#1138 by Ashwin Maroli)
- Configure YARD to document protected code (#1133 by Michael Camilleri)
- Add missing tokens from Pygments 2.2.0 (#1034 by Leonid Boykov)
- Fix undefined instance variable warning in lexer (#1087 by Dan Allen)
- Port black and white style from Pygments (#1086 by Dan Allen)
- Reduce allocations from just loading the gem (#1104 by Ashwin Maroli)
- Update Travis to check Ruby 2.6 (#1128 by Michael Camilleri)
- Update GitHub URL in README (#1127 by Dan Allen)
- Remove bundler from the Gemfile (#1110 by Dan Allen)
- C / C++ Lexers
- Fix various issues with highlighting in C and C++ lexers (#1069 by Vidar Hokstad)
- C# Lexer
- Fix rendering of C# attributes (#1117 by Michael Camilleri)
- CoffeeScript Lexer
- Common Lisp Lexer
- Fix unbalanced parenthesis crash in Common Lisp lexer (#1129 by Michael Camilleri)
- Coq Lexer
- Fix string parsing in Coq lexer (#1116 by Michael Camilleri)
- Diff Lexer
- Add support for non-unified diffs to Diff lexer (#1068 by Vidar Hokstad)
- Docker Lexer
- Add filename extensions to Docker lexer (#1059 by webmaster777)
- Escape Lexer (NEW)
- Add escaping within lexed content (#1152 by Jeanine Adkisson)
- Go Lexer
- Fix whitespace tokenisation in Go lexer (#1122 by Michael Camilleri)
- GraphQL Lexer
- Java Lexer
- Improve specificity of tokens in Java lexer (#1124 by Michael Camilleri)
- JavaScript Lexer
- Jinja / Twig Lexers
- Julia Lexer
- Recognize more Julia types and constants (#1024 by Alex Arslan)
- Kotlin Lexer
- Markdown Lexer
- Fix code blocks in Markdown lexer (#1053 by Vidar Hokstad)
- Matlab Lexer
- Add Matlab2017a strings to Matlab lexer (#1048 by Benjamin Buch)
- Objective-C Lexer
- Fix untyped methods (#1118 by Michael Camilleri)
- Perl Lexer
- Plist Lexer
- Restore support for highlighting XML-encoded plists (#1026 by Dan Mendoza)
- PowerShell Lexer
- Add 'microsoftshell' and 'msshell' as aliases for PowerShell lexer (#1077 by Robin Schneider)
- Rust Lexer
- Fix escape sequences in Rust lexer (#1120 by Michael Camilleri)
- Scala Lexer
- Output more differentiated tokens in Scala lexer (#1040 by Alan Thomas)
- Shell Lexer
- Add APKBUILD filename glob to Shell lexer (#1099 by Oliver Smith)
- Slim Lexer
- Fix multiline Ruby code in Slim lexer (#1130 by René Klačan)
- SuperCollider Lexer (NEW)
- Add SuperCollider lexer (#749 by Brian Heim)
- XML Lexer
- Fix
<html>
tag breaking detection of XML files (#1031 by María Inés Parnisari)
- Fix
- Xojo Lexer (NEW)
- Add Xojo lexer (#1131 by Jim McKay)
Comparison with the previous version
Release Highlight: Due to #883 with the introduction of frozen string literals, Rouge memory usage and total objects dropped quite dramatically. See #883 for more details. Thanks @ashmaroli for this PR.
- General
- Add frozen_string_literal (#883 ashmaroli)
- Mathematica Lexer (NEW)
- Support for Mathematic/Wolfram (#854 by halirutan)
- Motorola 68k Lexer (NEW)
- Add m68k assembly lexer (#909 by nguillaumin)
- SQF Lexer (NEW)
- JSP Lexer (NEW)
- Add Java Server Pages lexer (#915 by miparnisari)
- Elixir Lexer
- Add
defstruct
anddefguardp
(#960 by bjfish)
- Add
- F# / FSharp Lexer
- Add
.fsi
extension (#1002 by adam-becker)
- Add
- Kotlin Lexer
- Objective-C Lexer
- Add
objectivec
as tag/alias (#951 by revolter)
- Add
- Prolog Lexer
- Add % as single-line comment (#898 by jamesnvc)
- Puppet Lexer
- Add = as Operator in Puppet lexer (#980 by alexharv074)
- Python Lexer
- Ruby Lexer
- Add
Dangerfile
as Ruby filename (#1004 by leipert)
- Add
- Rust Lexer
- Add additional aliases for Rust (#988 by LegNeato)
- Swift Lexer
- Add
convenience
method (#950 by damian-rzeszot)
- Add
Comparison with the previous version
- Perl Lexer
- Allow any non-whitespace character to delimit regexes (#974 by dblessing)
- Details: In specific cases where a previously unsupported regex delimiter was used, a later rule could cause a backtrack in the regex system. This resulted in Rouge hanging for an unspecified amount of time.
- Allow any non-whitespace character to delimit regexes (#974 by dblessing)
Comparison with the previous version
- General
- Terraform Lexer (NEW - #917 by lowjoel)
- Crystal Lexer (NEW - #441 by splattael)
- Scheme Lexer
- Allow square brackets (#849 by EFanZh)
- Haskell Lexer
- Support for Quasiquotations (#868 by enolan)
- Java Lexer
- Support for Java 10
var
keyword (#888 by lc-soft)
- Support for Java 10
- VHDL Lexer
- Fix
time_vector
keyword typo (#911 by ttobsen)
- Fix
- Perl Lexer
- Recognize
.t
as valid file extension (#918 by miparnisari)
- Recognize
- Nix Lexer
- Improved escaping sequences for indented strings (#926 by veprbl)
- Fortran Lexer
- Recognize
.f
as valid file extension (#931 by veprbl)
- Recognize
- Igor Pro Lexer
- Update functions and operations for Igor Pro 8 (#921 by t-b)
- Julia Lexer
- Various improvements and fixes (#912 by ararslan)
- Kotlin Lexer
- Recognize
.kts
as valid file extension (#908 by mkobit)
- Recognize
- CSS Lexer
- Minor fixes (#916 by miparnisari)
- HTML Lexer
- Minor fixes (#916 by miparnisari)
- Javascript Lexer
- Minor fixes (#916 by miparnisari)
- Markdown Lexer
- Images may not have alt text (#904 by Himura2la)
- ERB Lexer
- Fix greedy comment matching (#902 by ananace)
Comparison with the previous version
- Perl
- JavaScript
- Swift [Swift] Undo parsing function calls with trailing closure by dan-zheng · Pull Request #862 · rouge-ruby/rouge
- Vue
Thanks a lot for contributions; not only for the code, but also for the issues and review comments, which are vitally helpful.
Comparison with the previous version
- gemspec
- Add source code and changelog links to gemspec #785 by @timrogers
- General
- Fix #796: comments not followed by a newline are not highlighted #797 by @tyxchen
- Elem
- Add Elm language support #744 by @dmitryrogozhny
- Ruby
- Add the .erb file extension to ruby highlighting #713 by @jstumbaugh
- Hack
- Add basic Hack support #712 by @fredemmott
- F#
- Allow double backtick F# identifiers #793 by @nickbabcock
- Swift
- Python
- Add async and await keywords to Python lexer #799 by @BigChief45
- Shell
- Add missing shell commands and missing GNU coreutils executables #798 by @kernhanda
- PowerShell
- Add JEA file extensions to powershell #807 by @michaeltlombardi
- SASS / SCSS
- Don't treat
[
as a part of an attribute name in SCSS #839 by @hibariya
- Don't treat
- Haskell
- Don't treat
error
specially in Haskell #834 by @enolan
- Don't treat
- Rust
- Rust: highlight the "where" keyword #823 by @lvillani
Comparison with the previous version
There is no breaking change in the public API, but internals' is changed.
- general:
- dropped support for Ruby 1.9, requireing Ruby v2.0.0 (#775 by gfx)
- [Internal API changes] refactored disaambiguators to removes the use of analyze_text's numeric score interface (#763 by jneen)
- See rouge-ruby#763 for details
- added
rouge guess $file
sub-command to test guessers (#773 by gfx) - added
Rouge::Lexer.guess { fallback }
interface (#777 by gfx) - removes BOM and normalizes newlines in input sources before lexing (#776 by gfx)
- kotlin:
- fix errors in generic functions (#782 by gfx; thanks to @rongi for reporting it)
- haskell:
- fix escapes in char literals (#780 by gfx; thanks to @Tosainu for reporting it)
Comparison with the previous version
- powershell:
- Adding PowerShell builtin commands for version 5 (#757 thanks JacodeWeerd)
- general:
- Rouge::Guessers::Modeline#filter: reduce object allocations (#756 thanks @parkr)
Comparison with the previous version
- rougify:
- trap PIPE only when platform supports it (#700 thanks @maverickwoo)
- support null formatter (
-f tokens
) (#719 thanks @abalkin)
- kotlin:
- update for companion object rename (#702 thanks @stkent)
- igorpro:
- fix igorpro lexer errrors (#706 thanks @ukos-git)
- nix:
- support nix expression language (#732 thanks @vidbina)
- q:
- fix rules for numeric literals (#717 thanks @abalkin)
- fortran:
- add missing Fortran keywords and intrinsics (#739 thanks @pbregener)
- javascript:
- Fix lexer on
<
in<script>...</script>
(#727 thanks @cpallares)
- Fix lexer on
- general:
- speed up
shebang?
check (#738 thanks @schneems) - don't default to a hash in Lexer.format (#729)
- use the token's qualname in null formatter (#730)
- speed up
- formatter:
- fix "unknown formatter: terminal256" (#735 thanks @cuihq)
- gemspec:
- fix licenses to rubygems standard (#714 thanks @nomoon)
- rougify: display help when called with no arguments
- console: bugfix for line continuations dropping characters
- make: properly handle code that doesn't end in a newline
- fix some warnings with -w, add a rubocop configuration
- javascript:
- fix for newlines in template expressions (#570 thanks @Kovensky!)
- update keywords to ES2017 (#594 thanks @Kovensky!)
- add ES6 binary and octal literals (#619 thanks @beaufortfrancois!)
- ruby:
- require an
=
on the=end
block comment terminator - bugfix for numeric ranges (#579 thanks @kjcpaas!)
- bugfix for constants following class/module declarations
- require an
- shell: support based numbers in math mode
- html-inline formatter:
- now accepts a search string, an instance, or aliases for the theme argument
- ocaml:
- highlight variant tags
- fixes for operators vs punctuation
- fix polymorphic variants, support local open expressions, fix keywords (#643 thanks @emillon!)
- thankful-eyes theme:
- bold operators, to distinguish between punctuation
- rust:
- add support for range operators and type variables (#591 thanks @whitequark!)
- support rustdoc hidden lines that start with # (#652 thanks @seanmonstar!)
- html: allow template languages to interpolate within script or style tags
- clojure:
- finally add support for
@
- associate
*.edn
- finally add support for
- new lexer: lasso (#584 thanks @EricFromCanada!)
- ruby 1.9 support: Fix unescaped
@
in regex (#588 thanks @jiphex!) - fix comments at end of files in F# and R (#590 thanks @nickbabcock!)
- elixir: implement ruby-style sigil strings and regexes (#530 thanks @k3rni!)
- docker: add missing keywords
- add ruby 2.4 support
- coffeescript: bugfix for improper multiline comments (#604 thanks @dblessing!)
- json: make exponent signs optional (#597 thanks @HerrFolgreich!)
- terminal256 formatter: put reset characters at the end of each line (#603 thanks @deivid-rodriguez!)
- csharp:
- actually highlight interface names
- highlight splice literals
$""
and@$""
(#600 thanks @jmarianer!) - recognize
nameof
as a keyword (#626 thanks @drovani!)
- new lexer: mosel (#606 thanks @germanriano!)
- php:
- more robust ident regex that supports unicode idents
- add heuristics to determine whether to start inline
- new lexer: q (kdb+) (#655 thanks @abalkin!)
- new lexer: pony (#651 thanks @katafrakt!)
- new lexer: igor-pro (#648 thanks @ukos-git!)
- new lexer: wollok (#647 thanks @mumuki!)
- new lexer: graphql (#634 thanks @hibariya!)
- properties: allow hyphens in key names (#629 thanks @cezariuszmarek!)
- HTMLPygments formatter: (breaking) wrap tokens with div.highlight
- new lexer: console (replaces old
shell_session
lexer)- properly detects prompts and continuations
- fully configurable prompt string with
?prompt=...
- optional root-level comments with
?comments
- new lexer: irb
- xml: allow newlines in attribute values (#663 thanks @mojavelinux!)
- windows fix: use
YAML.load_file
to load apache keywords - new lexer: dot (graphviz) (#627 thanks @kAworu)
- overhaul options handling, and treat options as untrusted user content
- add global opt-in to debug mode (
Rouge::Lexer.enable_debug!
) to prevent debug mode from being activated by users - shell: more strict builtins (don't highlight
cd-hello
) (#684 thanks @alex-felix!) - new lexer: sieve (#682 thanks @kAworu!)
- new lexer: TSX (#669 thanks @timothykang!)
- fortran: update to 2008 (#667 thanks @pbregener!)
- powershell: use backtick as escape instead of backslash (#660 thanks @gmckeown!)
- new lexer: awk (#607 thanks @kAworu)
- new lexer: hylang (#623 thanks @profitware!)
- new lexer: plist (#622 thanks @segiddins!)
- groovy: support shebangs (#608 thanks @hwdegroot!)
- new lexer: pastie (#576 thanks @mojavelinux)
- sed: bugfix for dropped characters from regexes
- sml:
- bugfix for dropped keywords
- bugfix for mishighlighted keywords
- gherkin, php, lua, vim, matlab: update keyword files
- new lexer: digdag (#674 thanks @gfx!)
- json-doc: highlight bare keys
- HTMLTable: don't output a newline after the closing tag (#659 thanks @gpakosz!)
- haml: fix balanced braces in attribute curlies
- clojure:
- allow comments at EOF
- detect for
build.boot
(thanks @pandeiro)
- ruby 1.9.1 compat: escape @ signs (thanks @pille1842)
- c++
- add
*.tpp
as an extension (thanks @vser1) - add more C++11 keywords
- add
- new lexer: ABAP (thanks @mlaggner)
- rougify: properly handle SIGPIPE for downstream pipe closing (thanks @maverickwoo)
- tex: add
*.sty
and*.cls
extensions - html: bugfix for multiple style tags - was too greedy
- new lexer: vue
- perl: fix lexing of POD comments (thanks @kgoess)
- coq: better string escape handling
- javascript:
- add support for ES decorators
- fix multiline template strings with curlies (thanks @Kovensky)
- json: stop guessing based on curlies
- rust: support the
?
operator
- actionscript: emit correct tokens for positive numbers (thanks @JoeRobich!)
- json: bottom-up rewrite, massively improve string performance
- markdown: don't terminate code blocks unless there's a newline before the terminator
- tulip: rewrite lexer with updated features
- swift: update for swift 3 (thanks @radex!)
- fortran: correctly lex exponent floats (thanks @jschwab!)
- bugfix: escape
\@
for ruby 1.9.x - verilog: recognize underscores and question marks (thanks @whitequark!)
- common lisp: recognize .asd files for ASDF
- new lexer: mxml (thanks @JoeRobich!)
- new lexer: 1c (thanks @karnilaev!)
- new lexer: turtle/trig (thanks @jakubklimek!)
- new lexer: vhdl (thanks @ttobsen!)
- new lexer: jsx
- new lexer: prometheus (thanks @dblessing!)
- bugfix: don't spam stdout from the yaml lexer
- new lexer: docker (thanks @KitaitiMakoto!)
- new lexer: fsharp (thanks @raymens!)
- python: improve string escapes (thanks @di!)
- yaml: highlight keys differently than values
- guessing: ambiguous guesses now raise
Rouge::Guesser::Ambiguous
instead of a mysterious class inside a metaclass. - praat: various fixes for unconventional names (thanks @jjatria!)
- workaround for rdoc parsing bug that should fix
gem install
with rdoc parsing on. - ruby:
- best effort colon handling
- fix for heredocs with method calls at the end
- tulip: rewrite from the ground up
- markdown: fix improper greediness of backticks
- tooling: improve the debug output, and properly highlight the legend
- liquid: support variables ending in question marks (thanks @brettg!)
- new lexer: IDL (thanks @sappjw!)
- javascript:
- fix bug causing
:
error tokens (#497) - support for ES6 string interpolation with backticks (thanks @iRath96!)
- fix bug causing
- csharp: allow comments at EOF
- java: allow underscored numeric literals (thanks @vandiedakaf!)
- terminal formatter: theme changes had broken this formatter, this is fixed.
- shell: support "ansi strings" -
$'some-string\n'
- Bugfix for
Formatter#token_lines
without a block
- new formatters! see README.md for documentation, use
Rouge::Formatters::HTMLLegacy
for the old behavior.
- new guesser infrastructure, support for emacs and vim modelines (#489)
- javascript bugfix for nested objects with quoted keys (#496)
- new theme: Gruvbox (thanks @jamietanna!)
- praat: lots of improvements (thanks @jjatria)
- fix for rougify error when highlighting from stdin (#493)
- new lexer: kotlin (thanks @meleyal!)
- new lexer: cfscript (thanks @mjclemente!)
- groovy:
- remove pathological regexes and add basic support for triple-quoted strings (#485)
- add the "trait" keyword and fix project url (thanks @glaforge! #378)
- new lexer: coq (thanks @gmalecha! #389)
- gemspec license now more accurate (thanks @connorshea! #484)
- swift:
- properly support nested comments (thanks @dblessing! #479)
- support swift 2.2 features (thanks @radex #376 and @wokalski #442)
- add indirect declaration (thanks @nRewik! #326)
- new lexer: verilog (thanks @Razer6! #317)
- new lexer: typescript (thanks @Seikho! #400)
- new lexers: jinja and twig (thanks @robin850! #402)
- new lexer: pascal (thanks @alexcu!)
- css: support attribute selectors (thanks @skoji! #426)
- new lexer: shell session (thanks @sio4! #481)
- ruby: add support for <<~ heredocs (thanks @tinci! #362)
- recognize comments at EOF in SQL, Apache, and CMake (thanks @julp! #360)
- new lexer: phtml (thanks @Igloczek #366)
- recognize comments at EOF in CoffeeScript (thanks @rdavila! #370)
- c/c++:
- support c11/c++11 features (thanks @Tosainu! #371)
- Allow underscores in identifiers (thanks @coverify! #333)
- rust: add more builtin types (thanks @RalfJung! #372)
- ini: allow hyphen keys (thanks @KrzysiekJ! #380)
- r: massively improve lexing quality (thanks @klmr! #383)
- c#:
- add missing keywords (thanks @BenVlodgi #384 and @SLaks #447)
- diff: do not require newlines at the ends (thanks @AaronLasseigne! #387)
- new lexer: ceylon (thanks @bjansen! #414)
- new lexer: biml (thanks @japj! #415)
- new lexer: TAP - the test anything protocol (thanks @mblayman! #409)
- rougify bugfix: treat input as utf8 (thanks @japj! #417)
- new lexer: jsonnet (thanks @davidzchen! #420)
- clojure: associate
*.cljc
for cross-platform clojure (thanks @alesguzik! #423) - new lexer: D (thanks @nikibobi! #435)
- new lexer: smarty (thanks @tringenbach! #427)
- apache:
- add directives for v2.4 (thanks @stanhu!)
- various improvements (thanks @julp! #301)
- faster keyword lookups
- fix nil error on unknown directive (cf #246, #300)
- properly manage case-insensitive names (cf #246)
- properly handle windows CRLF
- objective-c:
- support literal dictionaries and block arguments (thanks @BenV! #443 and #444)
- Fix error tokens when defining interfaces (thanks @meleyal! #477)
- new lexer: NASM (thanks @sraboy! #457)
- new lexer: gradle (thanks @nerro! #468)
- new lexer: API Blueprint (thanks @kylef! #261)
- new lexer: ActionScript (thanks @honzabrecka! #241)
- terminal256 formatter: stop confusing token names (thanks @julp! #367)
- new lexer: julia (thanks @mpeteuil! #331)
- new lexer: cmake (thanks @julp! #302)
- new lexer: eiffel (thanks @Conaclos! #323)
- new lexer: protobuf (thanks @fqqb! #327)
- new lexer: fortran (thanks @CruzR! #328)
- php: associate
*.phpt
files (thanks @Razer6!) - python: support
raise from
andyield from
(thanks @mordervomubel! #324) - new VimL example (thanks @tpope! #315)
- diff: fix deleted lines which were not being highlighted (thanks @DouweM)
- fix warnings on files being loaded multiple times
- swift: (thanks @radex)
- new keywords
- support all
@
-prefixed attributes - add support for
try!
and#available(...)
- bugfix: Properly manage
#style_for
precedence for terminal and inline formatters (thanks @mojavelinux) - visual basic: recognize
*.vb
files (thanks @naotaco) - common-lisp:
- add
elisp
as an alias (todo: make a real elisp lexer) (thanks @tejasbubane) - bugfix: fix crash on array and structure literals
- add
- new lexer: praat (thanks @jjatria)
- rust: stop recognizing
*.rc
(thanks @maximd) - matlab: correctly highlight
'
(thanks @miicha)
- new lexer: powershell (thanks @aaroneg!)
- new lexer: tulip
- bugfix: pass opts through so lex(continue: true) retains them (thanks @stanhu!)
- c#: bugfix: don't error on unknown states in the C# lexer
- php: match drupal file extensions (thanks @rumpelsepp!)
- prolog: allow camelCase atoms (thanks @mumuki!)
- c: bugfix: was dropping text in function declarations (thanks @JonathonReinhart!)
- groovy: bugfix: allow comments at eof without newline
-
objc: add array literals (thanks @mehowte)
-
slim: reset ruby and html lexers, be less eager with guessing, detect html entities (thanks @elstgav)
-
js: add
yield
as a keyword (thanks @honzabrecka) -
elixir: add alias
exs
(thanks @ismaelga) -
json: lex object keys as
Name::Tag
(thanks @morganjbruce) -
swift: add support for
@noescape
and@autoclosure(escaping)
(thanks @radex) and makeas?
andas!
look better -
sass/scss: add support for
@each
,@return
,@media
, and@function
(thanks @i-like-robots) -
diff: make the whole thing more forgiving and less buggy (thanks @rumpelsepp)
-
c++: add arduino file mappings and also Berksfile (thanks @Razer6)
-
liquid: fix #237 which was dropping content (thanks @RadLikeWhoa)
-
json: add json-api mime type (thanks @brettchalupa)
-
new lexer: glsl (thanks @sriharshachilakapati)
-
new lexer: json-doc, which is like JSON but supports comments and ellipsis (thanks @textshell)
-
add documentation to the
--formatter
option inrougify help
(thanks @mjbshaw) -
new website! http://rouge.jneen.net/ (thanks @edwardloveall!)
- css: fix "empty range in char class" bug and improve id/class name matches (#227/#228). Thanks @elstgav!
- swift: add
@objc_block
and fix eof comments (#226). Thanks @radex! - new lexer: liquid (#224). Thanks @RadLikeWhoa!
- cli: add
-v
flag to print version (#225). Thanks @RadLikeWhoa! - ruby: add
alias_method
as a builtin (#223). Thanks @kochd! - more conservative guessing for R, eliminate the
.S
extension - new theme: molokai (#220). Thanks @kochd!
- allow literate haskell that doesn't end in eof
- add human-readable "title" attribute to lexers (#215). Thanks @edwardloveall!
- swift: add support for preprocessor macros (#201). Thanks @mipsitan!
- fix previous bad release: actually add yaml files to the gem
lexer fixes and tweaks:
- javascript: fix function literals in object literals (reported by @taye)
- css: fix for percentage values and add more units (thanks @taye)
- ruby: highlight
require_relative
as a builtin (thanks @NARKOZ)
new lexers:
- nim (thanks @singularperturbation)
- apache (thanks @iiska)
new filetype associations:
- highlight PKGBUILD as shell (thanks @rumpelsepp)
- highlight Podspec files as ruby (thanks @NARKOZ)
other:
- lots of doc work in the README (thanks @rumpelsepp)
- clojure: hotfix for namespaced keywords with
::
- background fix: add css class to pre tag instead of code tag (#191)
- new name in readme and license
- new contributor code of conduct
- ruby: hotfix for symbols in method calling position (rubyyyyy.......)
- http: add PATCH as a verb
- new lexer: Dart (thanks @R1der!)
- null formatter now prints token names and values
- ruby: hotfix for division with no space
- ruby: hotfix for the
/=
operator
- ruby: give up on trying to highlight capitalized builtin methods
- swift: updates for beta 6 (thanks @radex!) (#174, #172)
- support ASCII-8BIT encoding found on macs, as it's a subset of UTF-8 (#178)
- redcarpet plugin [BREAKING]: change
#rouge_formatter
's override pattern- it is now a method that takes a lexer and returns a formatter, instead of a hash of generated options. (thanks @vince-styling!)
- java: stop erroneously highlighting keywords within words (thanks @koron!) (#177)
- html: dash is allowed in tag names (thanks @tjgrathwell!) (#173)
- swift: updates for beta 5 (thanks @radex!)
- hotfix release for common lisp, php, objective c, and qml lexers
- haml: balance braces in interpolation
- new lexer: slim (thanks @knutaldrin and @greggroth!)
- javascript: inner tokens in regexes are now lexed, as well as improvments to the block / object distinction.
- ruby bugfixes for symbol edgecases and one-letter constants
- utf-8 all of the things
- update all builtins
- rust: add
box
keyword and associated builtins
- new lexer: swift (thanks @totocaster!)
- update elixir for new upstream features (thanks @splattael!)
- ruby bugfixes:
- add support for method calls with trailing dots
- fix for
foo[bar] / baz
being highlighted as a regex
- terminal256 formatter: re-style each line - some platforms reset on each line
- breaking: wrap code in
<pre ...><code>...</code></pre>
if:wrap
is not overridden (thanks @Arcovion) - Allow passing a theme name as a string to
:inline_theme
(thanks @Arcovion) - Add
:start_line
option for html line numbers (thanks @sencer) - List available themes in
rougify help style
- New lexers:
- QML (thanks @seanchas116)
- Applescript (thanks @joshhepworth)
- Properties (thanks @pkuczynski)
- Ruby bugfix for
{ key: /regex/ }
(#134) - JSON bugfix: properly highlight null (thanks @zsalzbank)
- Implement a noop formatter for perf testing (thanks @splattael)
- prolog bugfix: was raising an error on some inputs (#126)
- python bugfix: was inconsistently highlighting keywords/builtins mid-word (#127)
- html formatter: always end output with a newline (#125)
- Now tested in Ruby 2.1
- C family bugfix: allow exponential floats without decimals (
1e-2
) - cpp: allow single quotes as digit separators (
100'000'000
) - ruby: highlight
%=
as an operator in the right context
- fill in some lexer descriptions and add the behat alias for gherkin
- assorted CLI bugfixes: better error handling, CGI-style options, no loadpath munging
- html: support multiline doctypes
- ocaml: bugfix for OO code: allows
#
as an operator - inline some styles in tableized output instead of relying on the theme
- redcarpet: add overrideable
#rouge_formatter
for custom formatting options
- New lexers:
- MATLAB (thanks @adambard!)
- Scala (thanks @sgrif!)
- Standard ML (sml)
- OCaml
- Major performance overhaul, now ~2x faster (see #114) (thanks @korny!)
- Deprecate
RegexLexer#group
(internal). Use#groups
instead. - Updated PHP builtins
- CLI now responds to
rougify --version
- For tableized line numbers, the table is no longer surrounded by a
<pre>
tag, which is invalid HTML. This was previously causing issues with HTML post-processors such as loofah. This may break some stylesheets, as it changes the generated markup, but stylesheets only referring to the scope passed to the formatter should be unaffected. - New lexer: moonscript (thanks @nilnor!)
- New theme: monokai, for real this time! (thanks @3100!)
- Fix intermittent loading errors for good with
Lexer.load_const
, which closes the long-standing #66
- lua: encoding bugfix, and a performance tweak for string literals
- The Big 1.0! From now on, strict semver will apply, and new lexers and features will be introduced in minor releases, reserving patch releases for bugfixes.
- Cleaned up stray invalid error tokens
- Fix C++/objc loading bug in
rougify
- Guessing alg tweaks: don't give up if no filename or mimetype matches
- Rebuilt the CLI without thor (removed the thor dependency)
- objc: Bugfix for
:forward_classname
error tokens
- Critical bugfixes (#98 and #99) for Ruby and Markdown. Some inputs would throw errors. (thanks @hrysd!)
- Bugfixes for C/C++
- Major bugfix: YAML was in a broken state :\ (thanks @hrysd!)
- Implement lexer subclassing, with
append
andprepend
- new lexer: objective c (!)
- Fix non-default themes (thanks @tiroc!)
- Minor lexing bugfixes in ruby
- Various performance optimizations
- javascript:
- quoted object keys were not being highlighted correctly
- multiline comments were not being highlighted
- common lisp: fix commented forms
- golang: performance bump
- ruby: fix edge case for
def-@
- c: fix a pathological performance case
- fix line number alignment on non-newline-terminated code (#91)
Rouge::Lexers::Text
renamed toRouge::Lexers::PlainText
- Tokens are now constants, rather than strings. This only affects you if you've written a custom lexer, formatter, or theme.
- Add the
:inline_theme
option toFormatters::HTML
for environments that don't support stylesheets (like super-old email clients) - Improve documentation of
Formatters::HTML
options - bugfix: don't include subsequent whitespace in an elixir keyword. In certain fonts/themes, this can cause inconsistent indentation if bold spaces are wider than non-bold spaces. (thanks @splattael!)
- Add the
license
key in the gemspec - new lexer: R
- new lexers:
- elixir (thanks @splattael!)
- racket (thanks @greghendershott!)
- new lexers:
- erlang! (thanks @potomak!)
- http (with content-type based delegation)
- bugfix: highlight true and false in JSON
- bugfix: Add the local lib dir to the path in ./bin/rougify
so the internal
require
works properly. - php: Properly lex variables in double-quoted strings and provide the correct token for heredocs (thanks @hrysd!)
- Add a
:wrap
option to the html formatter (default true) to provide the<pre>
wrapper. This allows skipping the wrapper entirely for postprocessing. (thanks @cjohansen!)
- fixed bad release that included unfinished D and wdiff lexers :\
- Added a github theme (thanks @simonc!) (#75)
- Correctly highlight ruby 1.9-style symbols and %i() syntax (thanks @simonc!) (#74)
- Fixed a performance bug in the C++ lexer (#73) reported by @jeffgran
- New lexer: go (thanks @hashmal!)
- Clojure bugfix: allow # in keywords and symbols
- Basic prompt support in the shell lexer
- Add CSS3 attributes to CSS/Sass/SCSS lexers
- Bugfix for a crash in the vim lexer
- Another hotfix release for the Sass/SCSS lexers, because I am being dumb
- Hotfix release: fix errors loading the SCSS lexer on some systems.
- Refactor source guessing to return fewer false positives, and
to be better at disambiguating between filename matches (such as
nginx.conf
vs.*.conf
, or*.pl
for both prolog and perl) - Added
Lexer.guesses
which can return multiple or zero results for a guess. - Fix number literals in C#
- New lexers:
- Gherkin (cucumber)
- Prolog (@coffeejunk)
- LLVM (@coffeejunk)
- New lexer: lua (thanks, @nathany!)
- Add extra filetypes that map to Ruby (
Capfile
,Vagrantfile
,*.ru
and*.prawn
) (@nathany) - Bugfix: add demos for ini and toml
- The
thankful_eyes
theme now colorsLiteral.Date
- No more gigantic load list in
lib/rouge.rb
- New lexers:
- puppet
- literate coffeescript
- literate haskell
- ini
- toml (@coffeejunk)
- clojure:
cljs
alias, and make it more visually balanced by usingName
instead ofName.Variable
. - Stop trying to read /etc/bash.bashrc in the specs (@coffeejunk)
- Highlight ClojureScipt files (
*.cljs
) as Clojure (@blom) - README and doc enhancements (plus an actual wiki!) (@robin850)
- Don't open
Regexp
, especially if we're not adding anything to it.
- Python: bugfix for lone quotes in triple-quoted strings
- Ruby: bugfix for
#
in%
-delimited strings
- New lexer: C# (csharp)
- rust: better macro handling
- Python bugfix for "'" and '"' (@garybernhardt)
- New lexer: rust (rust-lang.org)
- Include rouge.gemspec with the built gem
- Update the PHP builtins
- New lexers: io, sed, conf, and nginx
- fixed an error on numbers in the shell lexer
- performance bumps for shell and ruby by prioritizing more common patterns
- (@korny) Future-proofed the regexes in the Perl lexer
rougify
now streams the formatted text to stdout as it's available instead of waiting for the lex to be done.
- Bugfix for tableized line numbers when the code doesn't end with a newline.
- Major performance improvements. 80% running time reduction for some files since v0.2.5 (thanks again @korny!)
- Deprecated
postprocess
for performance reasons - it wasn't that useful in the first place. - The shell lexer should now recognize .bashrc, .profile and friends
- coffeescript: don't yield error tokens for keywords as attributes
- add the
--scope=SELECTOR
option torougify style
- Add the
:line_numbers
option to the HTML formatter to get line numbers! The styling for the line numbers is determined by the theme's styling for'Generic.Lineno'
- Massive performance improvements by reducing calls to
option
and toRegexp#source
(@korny)
- hotfix: ship the demos with the gem.
- Several improvements to the javasript and scheme lexers
- Lexer.demo, with small demos for each lexer
- Rouge.highlight takes a string for the formatter
- Formatter.format delegates to the instance
- sass: Support the @extend syntax, fix new-style attributes, and support 3.2 placeholder syntax
- Fixed several postprocessing-related bugs
- New lexers: coffeescript, sass, smalltalk, handlebars/mustache
- In terminal256, stop highlighting backgrounds of text-like tokens
- Fix a bug which was breaking guessing with filenames beginning with .
- Fix the require path for redcarpet in the README (@JustinCampbell)
- New lexers: clojure, groovy, sass, scss
- YAML: detect files with the %YAML directive
- Fail fast for non-UTF-8 strings
- Formatter#render deprecated, renamed to Formatter#format. To be removed in v0.3.
- Lexer#tag delegates to the class
- Better keyword/builtin highlighting for CSS
- Add the
:token
option to the text lexer
- Began the changelog
- Removed several unused methods and features from Lexer and RegexLexer
- Added a lexer for SQL
- Added a lexer for VimL, along with
rake builtins:vim
- Added documentation for RegexLexer, TextAnalyzer, and the formatters
- Refactored
rake phpbuiltins
- renamed torake builtins:php
- Fixed a major bug in the Ruby lexer that prevented highlighting the
module
keyword. - Changed the default formatter for the
rougify
executable toterminal256
. - Implemented
rougify list
, and added short descriptions to all of the lexers. - Fixed a bug in the C lexer that was yielding error tokens in case statements.