Prism Changelog
1.29.0 (2022-08-23)
New components
Updated components
AsciiDoc
Bash
BBj
CSS
CSS Extras
Hoon
Java
Markup
NSIS
Scala
SCSS
Updated plugins
Line Highlight
Normalize Whitespace
Other
1.28.0 (2022-04-17)
New components
Updated components
.properties
Use key, value for token names; attr-name, attr-value as aliases (#3377 ) b94a664d
ABAP
Ada
Atmel AVR Assembly
AutoHotkey
CFScript
CMake
Erlang
Excel Formula
Use more fitting aliases for function-name, range, and cell (#3391 ) ef0ec02a
Flow
GEDCOM
Groovy
Handlebars
Java
JavaScript
Keyman
MEL
NEON
PHP
PureBasic
Razor C#
Added support for @helper and inline C# inside attribute values (#3355 ) 31a38d0c
VHDL
Add private, view keywords; Distinguish attribute from keyword (#3389 ) d1a5ce30
Wolfram language
Updated plugins
Autolinker
Command Line
Keep Markup
Other
1.27.0 (2022-02-17)
New components
Updated components
AutoIt
EditorConfig
Change alias of section from keyword to selector (#3305 ) e46501b9
Ini
MongoDB
PureBasic
Added missing keyword and fixed constants ending with $ (#3320 ) d6c53726
Scala
Systemd configuration file
Updated plugins
Other
1.26.0 (2022-01-06)
New components
Updated components
Use \d for [0-9] (#3097 ) 9fe2f93e
6502 Assembly
AppleScript
AQL
Arduino
Avro IDL
Bash
Birb
Bro
BSL (1C:Enterprise)
C
C#
Clojure
Concurnas
Content-Security-Policy
Coq
Crystal
Cypher
D
Dart
Added string interpolation and improved metadata (#3197 ) e1370357
DataWeave
EditorConfig
Eiffel
Elm
ERB
F#
G-code
GameMaker Language
Go
Added char token and improved string and number tokens (#3208 ) f11b86e2
GraphQL
Haml
Haxe
Hoon
HTTP
HTTP Public-Key-Pins
HTTP Strict-Transport-Security
Idris
Io
J
Java
Java stack trace
JavaScript
Jolie
JQ
JS stack trace
Julia
Keyman
Kotlin
Added char token and improved string interpolation (#3225 ) 563cd73e
Latte
Use standard token names and combined delimiter tokens (#3226 ) 6b168a3b
Liquid
Lisp
Makefile
Markdown
MAXScript
Monkey
N1QL
nginx
Nim
Nix
NSIS
Objective-C
OCaml
Oz
Pascal
PATROL Scripting Language
Perl
PHP
PHP Extras
PL/SQL
PowerQuery
PowerShell
Processing
Prolog
Pug
PureBasic
Python
QML
React JSX
React TSX
Reason
Regex
Ren’py
Rip
Ruby
Rust
Improved type-definition and use standard tokens correctly (#3253 ) 4049e5c6
Scheme
Smalltalk
Smarty
SQL
Squirrel
Stan
Structured Text (IEC 61131-3)
Swift
TAP
Tremor
Twig
TypeScript
URI
V
Verilog
Visual Basic
Wolfram language
Xojo (REALbasic)
Zig
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
Core
Infrastructure
Website
1.25.0 (2021-09-16)
New components
Updated components
Bicep
Added support for multiline and interpolated strings and other improvements (#3028 ) 748bb9ac
C#
C++
Clojure
Hoon
Liquid
Log file
Markup
PureScript
Python
Sass
Shell session
Swift
TypeScript
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
1.24.0 (2021-06-27)
New components
Updated components
Fixed problems reported by regexp/no-dupe-disjunctions (#2952 ) f471d2d7
Fixed some cases of quadratic worst-case runtime (#2922 ) 79d22182
Fixed 2 cases of exponential backtracking (#2774 ) d85e30da
AQL
AutoHotkey
Bash
C++
Dart
Docker
Elixir
F#
GraphQL
Handlebars
HTTP
Ini
Java
JavaScript
JS Templates
JSON
Liquid
Added Markup support, missing tokens, and other improvements (#2950 ) ac1d12f9
Log file
Markdown
Markup
nginx
PHP
React JSX
reST (reStructuredText)
Ruby
Scheme
Shell session
SQL
Swift
TypeScript
VB.Net
Xojo (REALbasic)
Updated plugins
Made Match Braces and Custom Class compatible (#2947 ) 4b55bd6a
Consistent Prism check (#2788 ) 96335642
Command Line
Copy to Clipboard
File Highlight
Line Highlight
Fixed linkable line numbers not being initialized (#2732 ) ccc73ab7
Previewers
Other
Core
Infrastructure
Website
1.23.0 (2020-12-31)
New components
Updated components
Fixed multiple vulnerable regexes (#2584 ) c2f6a644
Apache Configuration
C-like
C
Content-Security-Policy
CSS
Java
Java stack trace
Added support stack frame element class loaders and modules (#2658 ) 0bb4f096
Julia
Removed constants that are not exported by default (#2601 ) 093c8175
Kotlin
Latte
Markdown
PHP
Sass (Scss)
Scheme
Shell session
Fixed false positives because of links in command output (#2649 ) 8e76a978
TSX
Temporary fix for the collisions of JSX tags and TS generics (#2596 ) 25bdb494
Updated plugins
Made Autoloader and Diff Highlight compatible (#2580 ) 7a74497a
Copy to Clipboard Button
Set type="button" attribute for copy to clipboard plugin (#2593 ) f59a85f1
File Highlight
Line Highlight
Line Numbers
Treeview
Unescaped Markup
Other
Readme: Added alternative link for Chinese translation 071232b4
Readme: Removed broken icon for Chinese translation (#2670 ) 2ea202b9
Readme: Grammar adjustments (#2629 ) f217ab75
Core
Infrastructure
Website
1.22.0 (2020-10-10)
New components
Updated components
Removed duplicate alternatives in various languages (#2524 ) fa2225ff
Haskell
JS Extras
PHP
Processing
Regex
Rust
Scheme
Shell session
YAML
Updated plugins
Autoloader
Match braces
Show Language
Other
Tests: Added an option to accept the actual token stream (#2515 ) bafab634
Core
Infrastructure
Website
Website: Added new SB101 tutorial replacing the Crambler one (#2576 ) 655f985c
Website: Fix typo on homepage by adding missing word add (#2570 ) 8ae6a4ba
Custom class: Improved doc (#2512 ) 5ad6cb23
1.21.0 (2020-08-06)
New components
Updated components
Markup & JSON: Added new aliases (#2390 ) 9782cfe6
Fixed several cases of exponential backtracking (#2268 ) 7a554b5f
APL
AutoHotkey
Bash
Batch
C
C#
C++
Content-Security-Policy
CSS
CSS Extras
Optimized class and id patterns (#2359 ) fdbc4473
Renamed attr-{name,value} tokens and added tokens for combinators and selector lists (#2373 ) e523f5d0
Dart
Diff
Docker
EditorConfig
EJS
GLSL
GraphQL
Io
Java
JavaDoc
JavaScript
JSDoc
JSON
Julia
Kotlin
Markup
Objective-C
PowerShell
New functions pattern bases on naming conventions (#2301 ) fec39bcf
Protocol Buffers
Pug
Python
Regex
Ren’py
Ruby
Rust
SAS
Scheme
Solidity (Ethereum)
SQL
Stylus
T4 Text Templates (VB)
TypeScript
Visual Basic
Updated plugins
File Highlight & JSONP Highlight update (#1974 ) afea17d9
Added general de/activation mechanism for plugins (#2434 ) a36e96ab
Autoloader
Command Line
Line Highlight
Line Numbers
Previewers
Unescaped Markup
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
Changelog: Fixed v1.20.0 release date cb6349e2
Core
Infrastructure
Website
1.20.0 (2020-04-04)
New components
Updated components
Bash
BBcode
C/C++/OpenCL C
C
C#
C++
CSS
CSS Extras
Elixir
Added support for attributes names ending with ? (#2182 ) 5450e24c
Java
Markdown
OpenCL
PHPDoc
Ruby
SAS
Shell session
Visual Basic
Added support for comments with line continuations (#2195 ) a7d67ca3
YAML
New plugins
Updated plugins
Inline Color
Support for (semi-)transparent colors and minor improvements (#2223 ) 8d2c5a3e
Keep Markup
Toolbar
Other
Updated all String.propotype.replace calls for literal strings 5d7aab56
Core
Infrastructure
Website
1.19.0 (2020-01-13)
New components
Updated components
Handlebars
Added support for : and improved the variable pattern (#2172 ) ef4d29d9
JavaScript
Markdown
OCaml
PHP
React JSX
Reason
Ruby
SAS
Updated plugins
Updated themes
Other
1.18.0 (2020-01-04)
New components
Updated components
Minor improvements for C-like and Clojure (#2064 ) 7db0cab3
Inlined some unnecessary rest properties (#2082 ) ad3fa443
AQL
Clojure
CSS Extras
D
Groovy
Java
JavaScript
Less
Markup
Python
Robot Framework
Ruby
SAS
Smalltalk
Turtle
TypeScript
Updated plugins
Other
Issue template improvements (#2069 ) 53f07b1b
Readme: Links now use HTTPS if available (#2045 ) 6cd0738a
Core
Infrastructure
Website
1.17.1 (2019-07-21)
Other
1.17.0 (2019-07-21)
New components
New plugins
Diff Highlight : Syntax highlighting inside diff blocks (#1889 ) e7702ae1
Updated components
Bash
C#
C++
CSS
CSS Extras
F#
JavaScript
JSON
Julia
LaTeX
Markdown
Perl
Protocol Buffers
Full support for PB2 and PB3 syntax + numerous other improvements (#1948 ) de10bd1d
reST (reStructuredText)
Rust
Sass (Scss)
Scheme
TOML
Visual Basic
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
Fixed dependencies of Pug and Pure (#1759 ) c9a32674
Add file extensions support for major languages (#1478 ) 0c8f6504
Fixed patterns which can match the empty string (#1775 ) 86dd3e42
More variables for better code compression (#1489 ) bc53e093
Added missing aliases (#1830 ) 8d28c74c
Replaced all occurrences of new RegExp with RegExp (#1493 ) 44fed4d3
Added missing aliases to components.json (#1503 ) 2fb66e04
Apacheconf
AsciiDoc
Bash
Batch
C
C-like
C/C++/Java
C#
CSS
Django
F#
GraphQL
Haskell
HTTP
Ini
Java
JavaScript
JSON / JSONP
JSX
Less
Lisp
Markdown
Markup
Markup Templating
nginx
PHP
Python
Reason
Ruby
Rust
SAS
Scheme
SCSS
Smalltalk
Smarty
SQL
TypeScript
YAML
Updated plugins
Better class name detection for plugins (#1772 ) c9762c6f
Autolinker
Autoloader
Command Line
File Highlight
Prevent double-loading & add scope to File Highlight (#1586 ) 10239c14
JSONP Highlight
Keep Markup
Line Numbers
Previewers
Show Invisibles
Show Language
Show Language plugin alias support and improvements (#1683 ) 4c66d72c
Toolbar
Updated themes
Other changes
Core
Infrastructure
Website
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 :
C# :
Eiffel :
Elixir
Make regexps greedy, remove comment hacks. Update known failures and tests. [e93d61f ]
ERB :
Fortran :
Make single-line comments greedy. Update known failures and tests. [c083b78 ]
Handlebars :
Java :
JavaScript :
JSX :
Monkey :
Make comments greedy. Update known failures and tests. [d7b2b43 ]
PHP :
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
C-like :
JSX :
Allow for one level of nested curly braces inside tag attribute value. Fix #1335 [05bf67d ]
Ruby :
Ensure module syntax is not confused with symbols. Fix #1336 [31a2a69 ]
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 :
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
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 :
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 :
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 :
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 :
NSIS :
PHP :
Fix the PHP language (#1100 ) [1453fa7 ]
Check for possible pre-existing marker strings in PHP [36bc560 ]
Ruby :
Smarty :
Check for possible pre-existing marker strings in Smarty [5df26e2 ]
TypeScript :
YAML :
Updated plugins
Autolinker :
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
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 :
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 :
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 :
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# :
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