Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

prismjs

PrismJS22mMIT1.29.0TypeScript support: definitely-typed

Lightweight, robust, elegant syntax highlighting. A spin-off project from Dabblet.

prism, highlight

readme

Prism

Build Status npm

Prism is a lightweight, robust, and elegant syntax highlighting library. It's a spin-off project from Dabblet.

You can learn more on prismjs.com.

Why another syntax highlighter?

More themes for Prism!

Contribute to Prism!

Important Notice

We are currently working on Prism v2 and will only accept security-relevant PRs for the time being.

Once work on Prism v2 is sufficiently advanced, we will accept PRs again. This will be announced on our Discussion page and mentioned in the roadmap discussion.

<summary>Prism v1 contributing notes</summary>

Prism depends on community contributions to expand and cover a wider array of use cases. If you like it, consider giving back by sending a pull request. Here are a few tips:

  • Read the documentation. Prism was designed to be extensible.
  • Do not edit prism.js, it’s just the version of Prism used by the Prism website and is built automatically. Limit your changes to the unminified files in the components/ folder. prism.js and all minified files are generated by our build system (see below).
  • Use npm ci to install Prism's dependencies. Do not use npm install because it will cause non-deterministic builds.
  • The build system uses gulp to minify the files and build prism.js. With all of Prism's dependencies installed, you just need to run the command npm run build.
  • Please follow the code conventions used in the files already. For example, I use tabs for indentation and spaces for alignment. Opening braces are on the same line, closing braces on their own line regardless of construct. There is a space before the opening brace. etc etc.
  • Please try to err towards more smaller PRs rather than a few huge PRs. If a PR includes changes that I want to merge and also changes that I don't, handling it becomes difficult.
  • My time is very limited these days, so it might take a long time to review bigger PRs (small ones are usually merged very quickly), especially those modifying the Prism Core. This doesn't mean your PR is rejected.
  • If you contribute a new language definition, you will be responsible for handling bug reports about that language definition.
  • If you add a new language definition or plugin, you need to add it to components.json as well and rebuild Prism by running npm run build, so that it becomes available to the download build page. For new languages, please also add a few tests and an example in the examples/ folder.
  • Go to prism-themes if you want to add a new theme.

Thank you so much for contributing!!

Software requirements

Prism will run on almost any browser and Node.js version but you need the following software to contribute:

  • Node.js >= 10.x
  • npm >= 6.x

Translations

changelog

Prism Changelog

1.29.0 (2022-08-23)

New components

Updated components

Updated plugins

  • Line Highlight
  • Normalize Whitespace

Other

1.28.0 (2022-04-17)

New components

Updated components

Updated plugins

Other

1.27.0 (2022-02-17)

New components

Updated components

Updated plugins

Other

  • Core
    • Added better error message for missing grammars (#3311) 2cc4660b

1.26.0 (2022-01-06)

New components

Updated components

Updated plugins

  • File Highlight
  • Keep Markup
  • Line Highlight
    • Expose highlightLines function as Prism.plugins.highlightLines (#3086) 9f4c0e74
  • Toolbar

Updated themes

  • Coy: Set z-index to make shadows visible in colored table cells (#3161) 79f250f3
  • Coy: Added padding to account for box shadow (#3143) a6a4ce7e

Other

1.25.0 (2021-09-16)

New components

Updated components

Updated plugins

  • JSONP Highlight
  • Line Highlight
    • Extend highlight to full line width inside scroll container (#3011) e289ec60
  • Normalize Whitespace
  • Previewers

Updated themes

  • Twilight
    • Increase selector specificities of plugin overrides (#3081) ffb20439

Other

1.24.1 (2021-07-03)

Updated components

Updated plugins

  • Toolbar

1.24.0 (2021-06-27)

New components

Updated components

Updated plugins

Other

1.23.0 (2020-12-31)

New components

Updated components

Updated plugins

Other

1.22.0 (2020-10-10)

New components

Updated components

Updated plugins

Other

1.21.0 (2020-08-06)

New components

Updated components

Updated plugins

Updated themes

  • Coy
  • Default
    • Added a comment that declares the background color of operator tokens as intentional (#2309) 937e2691
  • Okaidia
    • Update comment text color to meet WCAG contrast recommendations to AA level (#2292) 06495f90

Other

1.20.0 (2020-04-04)

New components

Updated components

New plugins

Updated plugins

  • Inline Color
    • Support for (semi-)transparent colors and minor improvements (#2223) 8d2c5a3e
  • Keep Markup
  • Toolbar

Other

1.19.0 (2020-01-13)

New components

Updated components

Updated plugins

  • Custom Class

Updated themes

Other

1.18.0 (2020-01-04)

New components

Updated components

Updated plugins

Other

1.17.1 (2019-07-21)

Other

  • Infrastructure

1.17.0 (2019-07-21)

New components

New plugins

  • Diff Highlight: Syntax highlighting inside diff blocks (#1889) e7702ae1

Updated components

Updated plugins

  • Autolinker
  • Autoloader
  • Command Line
    • Fix for uncaught errors for empty 'commandLine' object. (#1862) c24831b5
  • Copy to Clipboard Button
  • Custom Class
    • Added mapper functions for language specific transformations (#1873) acceb3b5
  • Line Highlight
  • Toolbar

Updated themes

Other

1.16.0 (2019-03-24)

New components

Updated components

Updated plugins

Updated themes

Other changes

1.15.0 (2018-06-16)

New components

Updated components

  • HTTP
  • Kotlin
  • JavaScript
    • Improve Regexp pattern [5b043cf]
    • Add support for one level of nesting inside template strings. Fix #1397 [db2d0eb]
  • Elixir
    • Elixir: Fix attributes consuming punctuation. Fix #1392 [dac0485]
  • Bash
  • PowerShell
    • Allow for one level of nesting in expressions inside strings. Fix #1407 [9272d6f]
  • JSX
    • Allow for two levels of nesting inside JSX tags. Fix #1408 [f1cd7c5]
    • Add support for fragments short syntax. Fix #1421 [38ce121]
  • Pascal
  • Swift

Updated plugins

  • File Highlight
    • Fix issue causing the Download button to show up on every code blocks. [cd22499]
    • Simplify lang regex on File Highlight plugin (#1399) [7bc9a4a]
  • Show Language
    • Don't process language if block language not set (#1410) [c111869]
  • Autoloader
    • ASP.NET should require C# [fa328bb]
  • Line Numbers

Updated themes

Other changes

  • Website
    • Site now loads over HTTPS!
    • Use HTTPS / canonical URLs (#1390) [95146c8]
    • Added Angular tutorial link [c436a7c]
    • Use rel="icon" instead of rel="shortcut icon" (#1398) [d95f8fb]
    • Fix Download page not handling multiple dependencies when from Redownload URL [c2ff248]
    • Update documentation for node & webpack usage [1e99e96]
  • Handle optional dependencies in loadLanguages() (#1417) [84935ac]
  • Add Chinese translation [f2b1964]

1.14.0 (2018-04-11)

New components

Updated components

  • Bash:
    • Add curl to the list of common functions. Close #1160 [1bfc084]
  • C-like:
    • Make single-line comments greedy. Fix #1337. Make sure #1340 stays fixed. [571f2c5]
  • C#:
  • Eiffel:
  • Elixir
    • Make regexps greedy, remove comment hacks. Update known failures and tests. [e93d61f]
  • ERB:
    • Make highlighting work properly in NodeJS (#1367) [5f9c078]
  • Fortran:
    • Make single-line comments greedy. Update known failures and tests. [c083b78]
  • Handlebars:
    • Make highlighting work properly in NodeJS (#1367) [5f9c078]
  • Java:
  • JavaScript:
  • JSX:
  • Monkey:
    • Make comments greedy. Update known failures and tests. [d7b2b43]
  • PHP:
    • Make highlighting work properly in NodeJS (#1367) [5f9c078]
  • Puppet:
    • Make heredoc, comments, regexps and strings greedy. Update known failures and tests. [0c139d1]
  • Q:
    • Make comments greedy. Update known failures and tests. [a0f5081]
  • Ruby:
    • Make multi-line comments greedy, remove single-line comment hack. Update known failures and tests. [b0e34fb]
  • SQL:

Updated plugins

  • Command Line:
    • Command Line: Allow specifying output prefix using data-filter-output attribute. (#856) [094d546]
  • File Highlight:
    • Add option to provide a download button, when used with the Toolbar plugin. Fix #1030 [9f22952]

Updated themes

Other changes

  • Website: Remove broken third-party tutorials from homepage [0efd6e1]
  • Docs: Mention loadLanguages() function on homepage in the nodeJS section. Close #972, close #593 [4a14d20]
  • Core: Greedy patterns should always be matched against the full string. Fix #1355 [294efaa]
  • Crystal: Update known failures. [e1d2d42]
  • D: Update known failures and tests. [13d9991]
  • Markdown: Update known failures. [5b6c76d]
  • Matlab: Update known failures. [259b6fc]
  • Website: Remove non-existent anchor to failures. Reword on homepage to make is less misleading. [8c0911a]
  • Website: Add link to Keep Markup plugin in FAQ [e8cb6d4]
  • Test suite: Memory leak in vm.runInNewContext() seems fixed. Revert [9a4b6fa] to drastically improve tests execution time. [9bceece, 7c7602b]
  • Gulp: Don't minify components/index.js [689227b]
  • Website: Fix theme selection on Download page, when theme is in query string or hash. [b4d3063]
  • Update JSPM config to also include unminified components. Close #995 [218f160]
  • Core: Fix support for language alias containing dash - [659ea31]

1.13.0 (2018-03-21)

New components

Updated components

  • JSX:
  • Markup:
  • Powershell:
    • Add lookbehind to fix function interpolation inside strings. Fix #1361 [d2c026e]
  • Rust:
    • Improve char pattern so that lifetime annotations are matched better. Fix #1353 [efdccbf]

Updated themes

  • Default:
    • Add color for class names [8572474]
  • Coy:
    • Inherit pre's height on code, so it does not break on Download page. [c6c7fd1]

Other changes

  • Website: Auto-generate example headers [c3ed5b5]
  • Core: Allow cloning of circular structures. (#1345) [f90d555]
  • Core: Generate components.js from components.json and make it exportable to nodeJS. (#1354) [ba60df0]
  • Website: Improve appearance of theme selector [0460cad]
  • Website: Check stored theme by default + link both theme selectors together. Close #1038 [212dd4e]
  • Tests: Use the new components.js file directly [0e1a8b7]
  • Update .npmignore Close #1274 [a52319a]
  • Add a loadLanguages() function for easy component loading on NodeJS (#1359) [a5331a6]

1.12.2 (2018-03-08)

Other changes

  • Test against NodeJS 4, 6, 8 and 9 (#1329) [97b7d0a]
  • Stop testing against NodeJS 0.10 and 0.12 [df01b1b]

1.12.1 (2018-03-08)

Updated components

1.12.0 (2018-03-07)

New components

Updated components

  • Bash:
  • C#:
  • C-like:
    • Change order of comment patterns and make multi-line one greedy. Fix #1337 [b98e5b9]
  • NSIS:
  • PHP:
    • Add support for string interpolation inside double-quoted strings. Fix #1146 [9f1f8d6]
    • Add support for Heredoc and Nowdoc strings [5d7223c]
    • Fix shell-comment failure now that strings are greedy [ad25d22]
  • PowerShell:
    • Add support for two levels of nested brackets inside namespace pattern. Fixes #1317 [3bc3e9c]
  • Ruby:
    • Add keywords "protected", "private" and "public" [4593837]
  • Rust:
    • Add support for lifetime-annotation and => operator. Fix #1339 [926f6f8]
  • Scheme:
    • Don't highlight first number of a list as a function. Fix #1331 [51bff80]
  • SQL:
    • Add missing keywords and functions, fix numbers [de29d4a]

Updated plugins

  • Autolinker:
    • Allow more chars in query string and hash to match more URLs. Fix #1142 [109bd6f]
  • Copy to Clipboard:
    • Bump ClipboardJS to 2.0.0 and remove hack (#1314) [e9f410e]
  • Toolbar:
  • Unescaped Markup:
    • Use msMatchesSelector for IE11 and below. Fix #1302 [c246c1a]
  • WebPlatform Docs:

Other changes

  • Fix Autoloader's demo page [3dddac9]
  • Download page: Use hash instead of query-string for redownload URL. Fix #1263 [b03c02a]
  • Core: Don't thow an error if lookbehing is used without anything matching. [e0cd47f]
  • Docs: Fix link to the <code> element specification in HTML5 [a84263f]
  • Docs: Mention support for lang-xxxx class. Close #1312 [a9e76db]
  • Docs: Add note on async parameter to clarify the requirement of using a single bundled file. Closes #1249 [eba0235]

1.11.0 (2018-02-05)

New components

Updated components

  • C++:
  • TypeScript:

Other changes

  • Fix passing of non-enumerable Error properties from the child test runner (#1276) [38df653]

1.10.0 (2018-01-17)

New components

Updated components

Updated plugins

  • Autoloader:
  • Previewers:
    • New plugin combining previous plugins Previewer: Base, Previewer: Angle, Previewer: Color, Previewer: Easing, Previewer: Gradient and Previewer: Time. (#1244) [28e4b4c]
  • Unescaped Markup:

Other changes

1.9.0 (2017-12-06)

New components

Updated components

  • CSS:
  • JSX:
  • Markup:
    • Make CSS and JS inclusions in Markup greedy. Fix #1240 [7dc1e45]
  • PHP:

Updated plugins

  • Copy to clipboard:
  • Line highlight:
  • Unescaped Markup:
    • Fix ambiguity in documentation by improving examples. Fix #1197 [924784a]

Other changes

  • Allow any element being root instead of document. (#1230) [69f2e2c, 6e50d44]
  • Coy Theme: The 'height' element makes code blocks the height of the browser canvas. (#1224) [ac219d7]
  • Download page: Fix implicitly declared variable [f986551]
  • Download page: Add version number at the beginning of the generated files. Fix #788 [928790d]

1.8.4 (2017-11-05)

Updated components

  • ABAP:
  • ActionScript:
    • Fix XML regex + optimise [75d00d7]
  • Ada:
  • Apacheconf:
  • APL:
  • AppleScript:
  • Arduino:
    • Don't use captures if not needed [16b338f]
  • ASP.NET:
  • AutoHotkey:
    • Regexp simplification + don't use captures if not needed [5edfd2f]
  • Bash:
    • Regexp optimisation and simplification [75b9b29]
  • Bro:
    • Regexp simplification + don't use captures if not needed [d4b9003]
  • C:
    • Regexp optimisation + don't use captures if not needed [f61d487]
  • C++:
    • Fix operator regexp + regexp simplification + don't use captures if not needed [ffeb26e]
  • C#:
    • Remove duplicates in keywords + regexp optimisation + don't use captures if not needed [d28d178]
  • C-like:
    • Regexp simplification + don't use captures if not needed [918e0ff]
  • CoffeeScript:
    • Regexp optimisation + don't use captures if not needed [5895978]
  • Crystal:
  • CSS:
    • Regexp simplification + don't use captures if not needed + handle multi-line style attributes [43d9f36]
  • CSS Extras:
  • D:
  • Dart:
  • Django:
  • Docker:
  • Eiffel:
  • Elixir:
    • Regexp optimisation + uniform behavior between ~r and ~s [5d12e80]
  • Erlang:
  • F#:
    • Regexp optimisation + don't use captures if not needed [7753fc4]
  • Gherkin:
    • Regexp optimisation + don't use captures if not needed + added explanation comment on table-body regexp [f26197a]
  • Git:
  • GLSL:
  • Go:
    • Regexp optimisation + don't use captures if not needed [88caabb]
  • GraphQL:
    • Regexp optimisation and simplification [2474f06]
  • Groovy:
    • Regexp optimisation + don't use captures if not needed [e74e00c]
  • Haml:
    • Regexp optimisation + don't use captures if not needed + fix typo in comment [23e3b43]
  • Handlebars:
    • Regexp optimisation + don't use captures if not needed [09dbfce]
  • Haskell:
    • Regexp simplification + don't use captures if not needed [f11390a]
  • HTTP:
    • Regexp simplification + don't use captures if not needed [37ef24e]
  • Icon:
  • J:
  • Java:
    • Don't use captures if not needed [96b35c8]
  • JavaScript:
    • Regexp optimisation + don't use captures if not needed [93d4002]
  • Jolie:
    • Regexp optimisation + don't use captures if not needed + remove duplicates in keywords [a491f9e]
  • JSON:
    • Make strings greedy, remove negative look-ahead for ":". Fix #1204 [98acd2d]
    • Regexp optimisation + don't use captures if not needed [8fc1b03]
  • JSX:
    • Regexp optimisation + handle spread operator as a whole [28de4e2]
  • Julia:
    • Regexp optimisation and simplification [12684c0]
  • Keyman:
    • Regexp optimisation + don't use captures if not needed [9726087]
  • Kotlin:
  • LaTeX:
    • Regexp optimisation and simplification [aa426b0]
  • LiveScript:
    • Make interpolated strings greedy + fix variable and identifier regexps [c581049]
  • LOLCODE:
    • Don't use captures if not needed [52903af]
  • Makefile:
  • Markdown:
    • Don't use captures if not needed [f489a1e]
  • Markup:
    • Regexp optimisation + fix punctuation inside attr-value [ea380c6]
  • MATLAB:
    • Make strings greedy + handle line feeds better [4cd4f01]
  • Monkey:
    • Don't use captures if not needed [7f47140]
  • N4JS:
    • Don't use captures if not needed [2d3f9df]
  • NASM:
    • Regexp optimisation and simplification + don't use captures if not needed [9937428]
  • nginx:
    • Remove trailing comma + remove duplicates in keywords [c6e7195]
  • NSIS:
    • Regexp optimisation + don't use captures if not needed [beeb107]
  • Objective-C:
    • Don't use captures if not needed [9be0f88]
  • OCaml:
  • OpenCL:
    • Don't use captures if not needed [5e70f1d]
  • Oz:
  • PARI/GP:
  • Parser:
  • Perl:
    • Regexp optimisation and simplification + don't use captures if not needed [0fe4cf6]
  • PHP:
    • Don't use captures if not needed Golmote [5235f18]
  • PHP Extras:
    • Add word boundary after global keywords + don't use captures if not needed [9049a2a]
  • PowerShell:
    • Regexp optimisation + don't use captures if not needed [0d05957]
  • Processing:
  • .properties:
  • Protocol Buffers:
    • Don't use captures if not needed [3e256d8]
  • Pug:
    • Don't use captures if not needed [76dc925]
  • Pure:
    • Make inline-lang greedy [92318b0]
  • Python:
    • Add Python builtin function highlighting (#1205) [2169c99]
    • Python: Add highlighting to functions with space between name and parentheses (#1207) [3badd8a]
    • Make triple-quoted strings greedy + regexp optimisation and simplification [f09f9f5]
  • Qore:
  • R:
  • Reason:
    • Regexp optimisation + don't use capture if not needed [19d79b4]
  • Ren'py:
    • Make strings greedy + don't use captures if not needed [91d84d9]
  • reST:
    • Regexp simplification + don't use captures if not needed [1a8b3e9]
  • Rip:
  • Ruby:
    • Regexp optimisation and simplification + don't use captures if not needed [4902ed4]
  • Rust:
    • Regexp optimisation and simplification + don't use captures if not needed [cc9d874]
  • Sass:
    • Regexp simplification Golmote [165d957]
  • Scala:
    • Regexp optimisation Golmote [5f50c12]
  • Scheme:
  • SCSS:
  • Smalltalk:
  • Smarty:
    • Regexp optimisation and simplification [e169be9]
  • SQL:
  • Stylus:
  • Swift:
    • Don't use captures if not needed [a2d737a]
  • Tcl:
    • Regexp simplification + don't use captures if not needed [f0b8a33]
  • Textile:
    • Regexp optimisation + don't use captures if not needed [08139ad]
  • Twig:
    • Regexp optimisation and simplification + don't use captures if not needed [0b10fd0]
  • TypeScript:
    • Don't use captures if not needed [e296caf]
  • Verilog:
  • VHDL:
    • Regexp optimisation and simplification [7af36df]
  • vim:
    • Remove duplicates in keywords [700505e]
  • Wiki markup:
    • Fix escaping consistency [1fd690d]
  • YAML:
    • Regexp optimisation + don't use captures if not needed [1fd690d]

Other changes

  • Remove comments spellcheck for AMP validation (#1106) [de996d7]
  • Prevent error from throwing when element does not have a parentNode in highlightElement. [c33be19]
  • Provide a way to load Prism from inside a Worker without listening to messages. (#1188) [d09982d]

1.8.3 (2017-10-19)

Other changes

  • Fix inclusion tests for Pug [955c2ab]

1.8.2 (2017-10-19)

Updated components

Update plugins

  • Copy to clipboard:
    • Fix error occurring when using in Chrome 61+ (#1206) [b41d571]
  • Show invisibles:
    • Prevent error when using with Autoloader plugin (#1195) [ed8bdb5]

1.8.1 (2017-09-16)

Other changes

  • Add Arduino to components.js [290a3c6]

1.8.0 (2017-09-16)

New components

Updated plugins

  • Autolinker:
    • Silently catch any error thrown by decodeURIComponent. Fixes #1186 [2e43fcf]

1.7.0 (2017-09-09)

New components

Updated components

  • APL:
  • C:
  • C#:
    • Fix wrong highlighting when three slashes appear inside string. Fix #1091 [dfb6f17]
  • C-like:
    • Add support for unclosed block comments. Close #828 [3426ed1]
  • Crystal:
  • CSS Extras:
  • Docker:
    • Add dockerfile alias for docker language (#1164) [601c47f]
    • Update the list of keywords for dockerfiles (#1180) [f0d73e0]
  • Eiffel:
    • Add class-name highlighting for Eiffel (#471) [cd03587]
  • Handlebars:
    • Check for possible pre-existing marker strings in Handlebars [7a1a404]
  • JavaScript:
    • Properly match every operator as a whole token. Fix #1133 [9f649fb]
    • Allows uppercase prefixes in JS number literals (#1151) [d4ee904]
    • Reduced backtracking in regex pattern. Fix #1159 [ac09e97]
  • JSON:
    • Fix property and string patterns performance. Fix #1080 [0ca1353]
  • JSX:
    • JSX spread operator break. Fixes #1061 (#1094) [561bceb]
    • Fix highlighting of attributes containing spaces [867ea42]
    • Improved performance for tags (when not matching) Fix #1152 [b0fe103]
  • LOLCODE:
    • Make strings greedy Golmote [1a5e7a4]
  • Markup:
    • Support HTML entities in attribute values (#1143) [1d5047d]
  • NSIS:
  • PHP:
    • Fix the PHP language (#1100) [1453fa7]
    • Check for possible pre-existing marker strings in PHP [36bc560]
  • Ruby:
    • Fix slash regex performance. Fix #1083 [a708730]
    • Add support for =begin =end comments. Manual merge of #1121. [62cdaf8]
  • Smarty:
    • Check for possible pre-existing marker strings in Smarty [5df26e2]
  • TypeScript:
  • YAML:

Updated plugins

  • Autolinker:
    • Fixed an rendering issue for encoded urls (#1173) [abc007f]
  • Custom Class:
    • Add missing noCSS property for the Custom Class plugin [ba64f8d]
    • Added a default for classMap. Fixes #1137. (#1157) [5400af9]
  • Keep Markup:
    • Store highlightedCode after reinserting markup. Fix #1127 [6df2ceb]
  • Line Highlight:
    • Cleanup left-over line-highlight tags before other plugins run [79b723d]
    • Avoid conflict between line-highlight and other plugins [224fdb8]
  • Line Numbers:
    • Support soft wrap for line numbers plugin (#584) [849f1d6]
    • Plugins fixes (unescaped-markup, line-numbers) (#1012) [3fb7cf8]
  • Normalize Whitespace:
    • Add Node.js support for the normalize-whitespace plugin [6c7dae2]
  • Unescaped Markup:
    • Plugins fixes (unescaped-markup, line-numbers) (#1012) [3fb7cf8]

Updated themes

  • Coy:

Other changes

  • Initial implementation of manual highlighting (#1087) [bafc4cb]
  • Remove dead link in Third-party tutorials section. Fixes #1028 [dffadc6]
  • Most languages now use the greedy flag for better highlighting [7549ecc]
  • .npmignore: Unignore components.js (#1108) [1f699e7]
  • Run before-highlight and after-highlight hooks even when no grammar is found. Fix #1134 [70cb472]
  • Replace [\w\W] with [\s\S] and [0-9] with \d in regexes (#1107) [8aa2cc4]
  • Fix corner cases for the greedy flag (#1095) [6530709]
  • Add Third Party Tutorial (#1156) [c34e57b]
  • Add Composer support (#648) [2989633]
  • Remove IE8 plugin (#992) [25788eb]
  • Website: remove width and height on logo.svg, so it becomes scalable. Close #1005 [0621ff7]
  • Remove yarn.lock (#1098) [11eed25]

1.6.0 (2016-12-03)

New components

Updated components

  • APL:
  • AsciiDoc:
    • Optimized block regexps to prevent struggling on large files. Fixes #1001. [1a86d34]
  • Bash:
  • CSS:
  • CSS Extras:
    • Match attribute inside selectors [13fed76]
  • Groovy:
  • Ini:
    • Remove important token in ini definition (#1047) [fe8ad8b]
  • JavaScript:
  • JSON:
    • JSON: Fixed issues with properties and strings + added tests. Fix #1025 [25a541d]
  • Markup:
    • Allow for dots in Markup tag names, but not in HTML tags included in Textile. Fixes #888. [31ea66b]
    • Make doctype case-insensitive (#1009) [3dd7219]
  • NSIS:
  • PHP:
  • PowerShell:
  • Puppet:
  • Ruby:
  • SCSS:
    • Alias statement as keyword. Fix #246 [fd09391]
    • Highlight variables inside selectors and properties. [d6b5c2f]
    • Highlight parent selector [8f5f1fa]
  • TypeScript:
    • Add missing from keyword to typescript & set ts as alias. (#1042) [cba78f3]

New plugins

Updated plugins

  • Autoloader:
    • Updated documentation for Autoloader plugin [b4f3423]
    • Download all grammars as a zip from Autoloader plugin page (#981) [0d0a007, 5c815d3]
    • Removed duplicated script on Autoloader plugin page [9671996]
    • Don't try to load "none" component. Fix #1000 [f89b0b9]
  • WPD:
    • Fix at-rule detection + don't process if language is not handled [2626728]

Other changes

  • Improvement to greedy-flag (#967) [500121b, 9893489]
  • Add setTimeout fallback for requestAnimationFrame. Fixes #987. (#988) [c9bdcd3]
  • Added aria-hidden attributes on elements created by the Line Highlight and Line Numbers plugins. Fixes #574. [e5587a7]
  • Don't insert space before ">" when there is no attributes [3dc8c9e]
  • Added missing hooks-related tests for AsciiDoc, Groovy, Handlebars, Markup, PHP and Smarty [c1a0c1b]
  • Fix issue when using Line numbers plugin and Normalise whitespace plugin together with Handlebars, PHP or Smarty. Fix #1018, #997, #935. Revert #998. [86aa3d2]
  • Optimized logo (#990) (#1002) [f69e570, 218fd25]
  • Remove unneeded prefixed CSS (#989) [5e56833]
  • Optimize images (#1007) [b2fa6d5]
  • Add yarn.lock to .gitignore (#1035) [03ecf74]
  • Fix greedy flag bug. Fixes #1039 [32cd99f]
  • Ruby: Fix test after #1023 [b15d43b]
  • Ini: Fix test after #1047 [25cdd3f]
  • Reduce risk of XSS (#1051) [17e33bc]
  • env.code can be modified by before-sanity-check hook even when using language-none. Fix #1066 [83bafbd]

1.5.1 (2016-06-05)

Updated components

  • Normalize Whitespace:
    • Add class that disables the normalize whitespace plugin [9385c54]
  • JavaScript Language:
    • Rearrange the string and template-string token in JavaScript [1158e46]
  • SQL Language:
    • add delimeter and delimeters keywords to sql (#958) [a9ef24e]
    • add AUTO_INCREMENT and DATE keywords to sql (#954) [caea2af]
  • Diff Language:
    • Highlight diff lines with only + or - (#952) [4d0526f]

Other changes

1.5.0 (2016-05-01)

New components

Updated components

  • Keep Markup:
    • Fix Keep Markup plugin incorrect highlighting (#880) [24841ef]
  • Groovy Language:
    • Fix double HTML-encoding bug in Groovy language [24a0936]
  • Java Language:
  • SAS Language:
    • Add missing keywords for SAS (#922)
  • YAML Language:
    • fix hilighting of YAML keys on first line of code block (#943) [f19db81]
  • C# Language:
    • Support for generic methods in csharp [6f75735]

New plugins

Other changes

  • Add JSPM support [ad048ab]
  • update linear-gradient syntax from left to to right [cd234dc]
  • Add after-property to allow ordering of plugins [224b7a1]
  • Partial solution for the "Comment-like substrings"-problem [2705c50]
  • Add property 'aliasTitles' to components.js [54400fb]
  • Add before-highlightall hook [70a8602]
  • Fix catastrophic backtracking regex issues in JavaScript [ab65be2]

1.4.1 (2016-02-03)

Other changes

  • Fix DFS bug in Prism core [b86c727]

1.4.0 (2016-02-03)

New components

Updated components

  • Show Language:
    • Remove data-language attribute (#840) [eb9a83c]
    • Allow custom label without a language mapping (#837) [7e74aef]
  • JSX:
  • File Highlight:
    • Defer File Highlight until the full DOM has loaded. (#844) [6f995ef]
  • Coy Theme:
  • Show Invisibles:
    • Ensure show-invisibles compat with autoloader (#874) [c3cfb1f]
    • Add support for the space character for the show-invisibles plugin (#876) [05442d3]

New plugins

Other changes

  • Use document.currentScript instead of document.getElementsByTagName() [fa98743]
  • Add prefix for Firefox selection and move prefixed rule first [6d54717]
  • No background for <code> in <pre> [8c310bc]
  • Fixing to initial copyright year [69cbf7a]
  • Simplify the “lang” regex [417f54a]
  • Fix broken heading links [a7f9e62]
  • Prevent infinite recursion in DFS [02894e1]
  • Fix incorrect page title [544b56f]
  • Link scss to webplatform wiki [08d979a]
  • Revert white-space to normal when code is inline instead of in a pre [1a971b5]

1.3.0 (2015-10-26)

New components

Updated components

  • C:
    • Highlight directives in preprocessor lines (#801) [ad316a3]
  • C#:
  • F#:
    • Highlight directives in preprocessor lines (#801) [ad316a3]
  • JavaScript:
    • Highlight true and false as booleans (#801) [ad316a3]
  • Python:
    • Highlight triple-quoted strings before comments. Fix #815 [90fbf0b]

New plugins

Other changes

  • Increase mocha's timeout [f1c41db]
  • Prevent most errors in IE8. Fix #9 [9652d75]
  • Add U.S. Web Design Standards on homepage. Fix #785 [e10d48b, 79ebbf8, 2f7088d]
  • Added gulp task to autolink PRs and commits in changelog [5ec4e4d]
  • Use child processes to run each set of tests, in order to deal with the memory leak in vm.runInNewContext() [9a4b6fa]

1.2.0 (2015-10-07)

New components

Updated components

  • ASP.NET:
    • Simplified pattern for <script> [29643f4]
  • Bash:
  • CSS:
    • Simplified pattern for <style> [29643f4]
  • JavaScript:
    • Simplified pattern for <script> [29643f4]

New plugins

Updated plugins

  • Previewer: Color

    • Add support for Sass variables [3a1fb04]
  • Previewer: Easing

    • Add support for Sass variables [7c7ab4e]

Other changes

  • Test runner: Allow to run tests for only some languages [5ade8a5]
  • Download page: Fixed wrong components order raising error in generated file (#797) [7a6aed8]

1.1.0 (2015-10-04)

New components

Updated components

  • Bash:
  • C:
  • C-like:
    • Add word boundary before class-name prefixes [aa757f6]
    • Improved operator regex + add != and !== [135ee9d]
    • Optimized string regexp [792e35c]
  • F#:
    • Fixed keywords containing exclamation mark [09f2005]
    • Improved string pattern [0101c89]
    • Insert preprocessor before keyword + don't allow line feeds before # [fdc9477]
    • Fixed numbers [0aa0791]
  • Gherkin:
    • Don't allow spaces in tags [48ff8b7]
    • Handle \r\n and \r + allow feature alone + don't match blank td/th [ce1ec3b]
  • Git:
  • Go:
    • Improved operator regexp + removed punctuation from it [776ab90]
  • Haml:
    • Combine both multiline-comment regexps + handle \r\n and \r [f77b40b]
    • Handle \r\n and \r in filter regex [bbe68ac]
  • Handlebars:
    • Fix empty strings, add plus sign in exponential notation, improve block pattern and variable pattern [c477f9a]
    • Properly escape special replacement patterns ($) in Handlebars, PHP and Smarty. Fix #772 [895bf46]
  • Haskell:
    • Removed useless backslashes and parentheses + handle \r\n and \r + simplify number regexp + fix operator regexp [1cc8d8e]
  • HTTP:
    • Fix indentation + Add multiline flag for more flexibility + Fix response status + Handle \r\n and \r [aaa90f1]
  • Ini:
    • Fix some regexps + remove unused flags [53d5839]
  • Jade:
    • Add todo list + remove single-line comment pattern + simplified most patterns with m flag + handle \r\n and \r [a79e838]
  • Java:
    • Fix number regexp + simplified number regexp and optimized operator regexp [21e20b9]
  • JavaScript:
    • JavaScript: Allow for all non-ASCII characters in function names. Fix #400 [29e26dc]
  • JSX:
    • Allow for one level of nesting in scripts (Fix #717) [90c75d5]
  • Julia:
    • Simplify comment regexp + improved number regexp + improved operator regexp [bcac7d4]
  • Keyman:
    • Move header statements above keywords [23a444c]
  • LaTeX:
  • Less:
    • Remove useless part in property regexp [80d8260]
  • LOLCODE:
    • Removed useless parentheses [8147c9b]
  • Makefile:
    • Add known failures in example [e0f8984]
    • Handle \r\n in comments and strings + fix "-include" keyword
  • Markup:
    • Simplify patterns + handle \r\n and \r [4c551e8]
    • Don't allow = to appear in tag name [85d8a55]
    • Don't allow dot inside tag name [283691e]
  • MATLAB:
    • Simplify string pattern to remove lookbehind [a3cbecc]
  • NASM:
    • Converted indents to tabs, removed uneeded escapes, added lookbehinds [a92e4bd]
  • NSIS:
  • Objective-C:
    • Simplified regexps + fix strings + handle \r [1d33147]
    • Fix operator regexp [e9d382e]
  • Pascal:
  • Perl:
    • Simplified regexps + Made most string and regexp patterns multi-line + Added support for regexp's n flag + Added missing operators [71b00cc]
  • PHP:
    • Simplified patterns [f9d9452]
    • Properly escape special replacement patterns ($) in Handlebars, PHP and Smarty. Fix #772 [895bf46]
  • PHP Extras:
    • Fix $this regexp + improve global regexp [781fdad]
  • PowerShell:
    • Update definitions for command/alias/operators [14da55c]
  • Python:
    • Added async/await and @ operator (#656) [7f1ae75]
    • Added 'self' keyword and support for class names (#677) [d9d4ab2]
    • Simplified regexps + don't capture where unneeded + fixed operators [530f5f0]
  • R:
    • Fixed and simplified patterns [c20c3ec]
  • reST:
    • Simplified some patterns, fixed others, prevented blank comments to match, moved list-bullet down to prevent breaking quotes [e6c6b85]
  • Rip:
    • Fixed some regexp + moved down numbers [1093f7d]
  • Ruby:
    • Code cleaning, handle \r\n and \r, fix some regexps [dd4989f]
    • Add % notations for strings and regexps. Fix #590 [2d37800]
  • Rust:
    • Simplified patterns and fixed operators [6c8494f]
  • SAS:
    • Simplified datalines and optimized operator patterns [6ebb96f]
  • Sass:
    • Add missing require in components [35b8c50]
    • Fix comments, operators and selectors and simplified patterns [28759d0]
    • Highlight "-" as operator only if surrounded by spaces, in order to not break hyphenated values (e.g. "ease-in-out") [b2763e7]
  • Scala:
  • Scheme:
    • Add missing lookbehind on number pattern. Fix #702 [3120ff7]
    • Fixes and simplifications [068704a]
    • Don't match content of symbols starting with a parenthesis [fa7df08]
  • Scss:
    • Simplified patterns + fixed operators + don't match empty selectors [672c167]
  • Smalltalk:
  • Smarty:
    • Optimized regexps + fixed punctuation and operators [1446700]
    • Properly escape special replacement patterns ($) in Handlebars, PHP and Smarty. Fix #772 [895bf46]
  • SQL:
    • Simplified regexp + fixed keywords and operators + add CHARSET keyword [d49fec0]
  • Stylus:
    • Rewrote the component entirely [7729728]
  • Swift:
    • Optimized keywords lists and removed duplicates [936e429]
    • Add support for string interpolation. Fix #448 [89cd5d0]
  • Twig:
    • Prevent "other" pattern from matching blank strings [cae2cef]
    • Optimized regexps + fixed operators + added missing operators/keywords [2d8271f]
  • VHDL:
    • Move operator overloading before strings, don't capture if not needed, handle \r\n and \r, fix numbers [4533f17]
  • Wiki markup:
    • Fixed emphasis + merged some url patterns + added TODOs [8cf9e6a]
  • YAML:
    • Handled \r\n and \r, simplified some patterns, fixed "---" [9e33e0a]

New plugins

Updated plugins

  • Autolinker:
    • Don't process all grammars on load, process each one in before-highlight. Should fix #760 [a572495]
  • Line Highlight:
  • Line Numbers:
    • Run in complete hook [3f4d918]
    • Don't run if already exists [c89bbdb]
    • Don't run if block is empty. Fix #669 [ee463e8]
    • Correct calculation for number of lines (fix #385) [14f3f80]
    • Fix computation of line numbers for single-line code blocks. Fix #721 [02b220e]
    • Fixing word wrap on long code lines [56b3d29]
    • Fixing coy theme + line numbers plugin overflowing on long blocks of text (#762) [a0127eb]
  • Show Language:
    • Add gulp task to build languages map in Show language plugin (Fix #671) [39bd827]
    • Add reset styles to prevent bug in Coy theme (#703) [08dd500]

Other changes

  • Fixed link to David Peach article (#647) [3f679f8]
  • Added complete hook, which runs even when no grammar is found [e58b6c0, fd54995]
  • Added test suite runner (#588) [956cd85]
  • Added tests for every components
  • Added .gitattributes to prevent line ending changes in test files [45ca8c8]
  • Split plugins into 3 columns on Download page [a88936a]
  • Removed comment in components.js to make it easier to parse as JSON (#679) [2cb1326]
  • Updated README.md [1388256]
  • Updated documentation since the example was not relevant any more [80aedb2]
  • Fixed inline style for Coy theme [52829b3]
  • Prevent errors in nodeJS (#754) [9f5c93c, 0356c58]
  • Explicitly make the Worker close itself after highlighting, so that users have control on this behaviour when directly using Prism inside a Worker. Fix #492 [e42a228]
  • Added some language aliases: js for javascript, xml, html, mathml and svg for markup [2f9fe1e]
  • Download page: Add a "Select all" checkbox (#561) [9a9020b]
  • Download page: Don't add semicolon unless needed in generated code. Fix #273 [5a5eec5]
  • Add language counter on homepage [889cda5]
  • Improve performance by doing more work in the worker [1316abc]
  • Replace Typeplate with SitePoint on homepage. Fix #774 [0c54308]
  • Added basic .editorconfig [c48f55d]

1.0.1 (2015-07-26)

New components

Updated components

  • ActionScript:
    • Fix ! operator and add ++ and -- as whole operators [6bf0794]
    • Fix XML highlighting [90257b0]
    • Update examples to add inline XML [2c1626a, 3987711]
  • Apache Configuration:
    • Don't include the spaces in directive-inline [e87efd8]
  • AppleScript:
    • Allow one level of nesting in block comments [65894c5]
    • Removed duplicates between operators and keywords [1ec5a81]
    • Removed duplicates between keywords and classes [e8d09f6]
    • Move numbers up so they are not broken by operator pattern [66dac31]
  • ASP.NET:
    • Prevent Markup tags from breaking ASP tags + fix MasterType directive [1f0a336]
  • AutoHotkey:
    • Allow tags (labels) to be highlighted at the end of the code [0a1fc4b]
    • Match all operators + add comma to punctuation [f0ccb1b]
    • Removed duplicates in keywords lists [fe0a068]
  • Bash:
    • Simplify comment regex [2700981]
    • Removed duplicates in keywords + removed unneeded parentheses [903b8a4]
  • C:
    • Removed string pattern (inherited from C-like) [dcce1a7]
    • Better support for macro statements [4868635]
  • C#:
    • Fix preprocessor pattern [86311f5]
  • C++:
    • Removed delete[] and new[] broken keywords [42fbeef]
  • C-like:
    • Removed unused 'ignore' pattern [b6535dd]
    • Use look-ahead instead of inside to match functions [d4194c9]
  • CoffeeScript:
    • Prevent strings from ending with a backslash [cb6b824]
  • CSS:
    • Highlight parentheses as punctuation [cd0273e]
    • Improved highlighting of at-rules [e254088]
    • Improved URL and strings [901812c]
    • Selector regexp should not include last spaces before brace [f2e2718]
    • Handle \r\n [15760e1]
  • Eiffel:
    • Fix string patterns order + fix /= operator [7d1b8d7]
  • Erlang:
    • Fixed quoted functions, quoted atoms, variables and <= operator [fa286aa]
  • Fortran:
    • Improved pattern for comments inside strings [40ae215]
    • Fixed order in keyword pattern [8a6d32d]
  • Handlebars:
  • JavaScript:
    • Added support for 'y' and 'u' ES6 JavaScript regex flags (#596) [5d99957]
    • Added support for missing ES6 keywords in JavaScript (#596) [ca68b87]
    • Added async and await keywords (#575) [5458cec]
    • Added support for Template strings + interpolation [04f72b1]
    • Added support for octal and binary numbers (#597) [a8aa058]
    • Improve regex performance of C-like strings and JS regexps [476cbf4]
  • Markup:
    • Allow non-ASCII chars in tag names and attributes (fix #585) [52fd55e]
    • Optimized tag's regexp so that it stops crashing on large unclosed tags [75452ba]
    • Highlight single quotes in attr-value as punctuation [1ebcb8e]
    • Doctype and prolog can be multi-line [c19a238]
  • Python:
    • Added highlighting for function declaration (#601) [a88aae8]
    • Fixed wrong highlighting of variables named a, b, c... f (#601) [a88aae8]
  • Ruby:
    • Added support for string interpolation [c36b123]
  • Scss:
    • Fixed media queries highlighting [bf8e032]
    • Improved highlighting inside at-rules [eef4248]
    • Match placeholders inside selectors (fix #238) [4e42e26]
  • Swift:

Updated plugins

  • File Highlight:
    • Allow to specify the highlighting language. Fix #607 [8030db9]
  • Line Highlight:

Other changes

  • Removed moot version property from bower.json (#594) [4693499]
  • Added repository to bower.json (#600) [8e5ebcc]
  • Added .DS_Store to .gitignore [1707e4e]
  • Improve test drive page usability. Fix #591 [fe60858]
  • Fixed prism-core and prism-file-highlight to prevent errors in IE8 [5f133c8]
  • Add Ubuntu Mono font to font stack [ed9d7e3]

1.0.0 (2015-05-23)

  • First release
  • Supported languages:
    • ActionScript
    • Apache Configuration
    • AppleScript
    • ASP.NET (C#)
    • AutoHotkey
    • Bash
    • C
    • C#
    • C++
    • C-like
    • CoffeeScript
    • CSS
    • CSS Extras
    • Dart
    • Eiffel
    • Erlang
    • F#
    • Fortran
    • Gherkin
    • Git
    • Go
    • Groovy
    • Haml
    • Handlebars
    • Haskell
    • HTTP
    • Ini
    • Jade
    • Java
    • JavaScript
    • Julia
    • LaTeX
    • Less
    • LOLCODE
    • Markdown
    • Markup
    • MATLAB
    • NASM
    • NSIS
    • Objective-C
    • Pascal
    • Perl
    • PHP
    • PHP Extras
    • PowerShell
    • Python
    • R
    • React JSX
    • reST
    • Rip
    • Ruby
    • Rust
    • SAS
    • Sass (Scss)
    • Scala
    • Scheme
    • Smalltalk
    • Smarty
    • SQL
    • Stylus
    • Swift
    • Twig
    • TypeScript
    • Wiki markup
    • YAML
  • Plugins:
    • Autolinker
    • File Highlight
    • Highlight Keywords
    • Line Highlight
    • Line Numbers
    • Show Invisibles
    • Show Language
    • WebPlatform Docs