- Fixes regression with Rust grammar.
CAVEATS / POTENTIALLY BREAKING CHANGES
- Nothing yet.
Core Grammars:
- fix(rust) - adds emoji support in single quote strings [joshgoebel][]
\ [Josh Goebel][]$() expressions [aneesh98][]anchor-name, aspect-ratio, backdrop-filter, container, margin-trim, place-content, scroll-timeline, ...) [BaliBalo][]file, args, dynamic, record, required and scoped [Alvin Joy][]time and coproc [Álvaro Mondéjar][]|= operator false positives (as block arguments) [Aboobacker MK]add builtin [h7x4][]or as builtin instead of literal [h7x4][]''' string escapes [h7x4][]" and '' strings [h7x4][]concept and defer to list of Nim keywords [Jake Leahy]New Grammars:
- added 3rd party TTCN-3 grammar to SUPPORTED_LANGUAGES [Osmocom][]
Developer Tools:
- Nothing yet.
Themes:
- Added Rosé Pine theme [William Wilkinson][]
Cybertopia Cherry theme [Alexandre ZANNI][]Cybertopia Dimmer theme [Alexandre ZANNI][]Cybertopia Icecap theme [Alexandre ZANNI][]Cybertopia Saturated theme [Alexandre ZANNI][]Improvements:
- Resolve the memory leak problem when creating multiple Highlight.js instances [Imken][]
CONTRIBUTORS
[Josh Goebel]: https://github.com/joshgoebel
CAVEATS / POTENTIALLY BREAKING CHANGES
- Drops support for Node 16.x, which is no longer supported by Node.js.
Core Grammars:
- enh(typescript) add support for satisfies operator [Kisaragi Hiu][]
or conflicts with string highlighting [Mohamed Ali][]self variable [Lee Falin][]goto to be recognized as a keyword in Java [Alvin Joy][]sudo [Alvin Joy][]new keyword without capturing it within variables/class names [Cameron Taylor][]_ separators, add hex p exponents [Lisa Ugray][]justify-items and justify-self attributes [Vasily Polovnyov][]accent-color, appearance, color-scheme, rotate, scale and translate attributes [Carl Räfting][]select, option, optgroup, picture and source to list of known tags [Vasily Polovnyov][]inset, inset-, border-start--radius and border-end-*-radius attributes [Vasily Polovnyov][]text-decoration-skip-ink, text-decoration-thickness and text-underline-offset attributes [Vasily Polovnyov][]when to be recognized as a keyword in Java [Chiel van de Steeg][]New Grammars:
- added 3rd party CODEOWNERS grammar to SUPPORTED_LANGUAGES [nataliia-radina][]
Developer Tool:
- enh(tools): order CSS options picklist [David Schach][]
highlight API [Misha Kaletsky][]Themes:
- Added 1c-light theme a like in the IDE 1C:Enterprise 8 (for 1c) [Vitaly Barilko][]
[Kisaragi Hiu]: https://github.com/kisaragi-hiu
CAVEATS / POTENTIALLY BREAKING CHANGES
- Drops support for Node 14.x, which is no longer supported by Node.js.
node build styles/*.css files now ship un-minifiedstyles/*.min.css [mvorisek][]
(this makes things consistent with our cdn builds)Parser:
- (enh) prevent re-highlighting of an element [joshgoebel][]
New Grammars:
- added 3rd party Iptables grammar to SUPPORTED_LANGUAGES [Checconio][]
Core Grammars:
- fix(cpp) fixed highlighter break state [Md Saad Akhtar][]
if while for [Omar Hussein][]x0-x30 and w0-w30 ARMv8 registers [Nicholas Thompson][]final, is, macro keywords and $ identifiers [Robert Borghese][]abstract declaration from keyword [Robert Borghese][]macro keyword [Bradley Mackey][]@unchecked and @Sendable support [Bradley Mackey][]//> using foo bar [Jamie Thompson][]!assert compiler flag [idleberg][]eprintln! macro [qoheniac][]warn_unqualified_access is an attribute [Bradley Mackey][]record and var as keywords [Guillaume Laforge][]Developer Tool:
- (chore) Update dev tool to use the new highlight API. [Shah Shabbir Ahmmed][]
[Robert Borghese]: https://github.com/RobertBorghese
Parser engine:
- added a function to default export to generate a fresh highlighter instance to be used by extensions [WisamMechano][]
__emitTokens key to grammars to allow then to direct their own parsing, only using Highlight.js for the HTML rendering [Josh Goebel][]removePlugin api [faga295][]JavaScript [Cyrus Kao][]New Grammars:
- added 3rd party Lang grammar to SUPPORTED_LANGUAGES [AdamRaichu][]
Core Grammars:
- enh(sql) support _ in variable names [joshgoebel][]
proto alias for Protobuf [dimitropoulos][]base, interface, sealed, and when keywords [Sam Rawlins][]-> operator legal) [Keyacom][]select and until as keywords[arnoudbuzing]: https://github.com/arnoudbuzing
New Grammars:
- added 3rd party LookML grammar to SUPPORTED_LANGUAGES [Josh Temple][]
Grammars:
- enh(scheme) add scm alias for Scheme [matyklug18][]
are not JSX [Josh Goebel][] (( keyword [Nick Chambers][]import() as a function, rather a keyword [nathnolt][](( keyword [Nick Chambers][]Improvements:
- Documentation typo fix by [Eddymens][]
[matyklug18]: https://github.com/matyklug18
Supported Node.js versions:
- (chore) Drops support for Node 12.x, which is no longer supported by Node.js.
Default build changes:
- add wasm to default :common build (#3526) [Josh Goebel][]
graphql to default :common build (#3526) [Josh Goebel][]keyword to literal [shikhar13012001][]scoped keyword in C# (#3571) [David Pine][]transparent keyword [Matt Bovel][]:: (#3540) [Josh Goebel][]include_bytes! macro (#3541) [Serial-ATA][]== as a variable declaration [Mousetail][]any keyword (#3515) [Bradley Mackey][]distributed keyword [Marcus Ortiz][]match and case keywords [Avrumy Lunger][][shikhar13012001]: https://github.com/shikhar13012001
Themes:
Tokyo-Night-dark theme [Henri Vandersleyen][]Tokyo-Night-light theme [Henri Vandersleyen][]panda-syntax-dark theme [Annmarie Switzer][]panda-syntax-light theme [Annmarie Switzer][]New Grammars:
- Added GraphQL to SUPPORTED_LANGUAGES [John Foster][]
Grammars:
- enh(ruby) lots of small Ruby cleanups/improvements [Josh Goebel][]
type and variable.language scopes [Josh Goebel][]$pattern (numbers allowed in command names) [Martin Mattel][]meta.prompt scope for REPL prompts, etc [Josh Goebel][]Hello world without breaking [Josh Goebel][]else [Josh Goebel][][Martin Mattel]: https://github.com/mmattel
New Language:
- Added 3rd party Pine Script grammar to SUPPORTED_LANGUAGES [Jeylani B][]
Themes:
- Default is now much closer WCAG AA (contrast) (#3402) [Josh Goebel]
Dark now meets WCAG AA (contrast) (#3402) [Josh Goebel]intellij-light theme [Pegasis]felipec theme [Felipe Contreras]These changes should be for the better and should not be super noticeable but if you're super picky about your colors you may want to intervene here or copy over the older themes from 11.3 or prior.
Grammars:
- enh(twig) update keywords list for symfony (#3453) [Matthieu Lempereur][]
vector<< template false positive (#3437) [Josh Goebel][]namespace and use highlighting (#3427) [Josh Goebel][]$this is a variable.language now (#3427) [Josh Goebel][]__COMPILER_HALT_OFFSET__ (#3427) [Josh Goebel][]sealed and non-sealed keywords (#3386) [Bradley Mackey][]CLASS_REFERENCE (#3411) [Josh Goebel][]! (#3417) [idleberg][]! (#3420) [idleberg][]comment macro catches more than it should (#3395)
- fix(clojure) $ in symbol breaks highlighting
- fix(clojure) Add complete regex for number detection
- enh(clojure) Add character mode for character literals
- fix(clojure) Inconsistent namespaced map highlighting
- enh(clojure) Add regex mode to regex literal
- fix(clojure) Remove inconsistent/broken highlighting for metadata
- enh(clojure) Add punctuation mode for commas.
jldoctest alias (#3432) [Fons van der Plas][]Developer Tools:
- (chore) add gzip size compression report (#3400) [Bradley Mackey][]
Themes:
- Modified background color in css for Gradient Light and Gradient Dark themes [Samia Ali][]
[John Foster]: https://github.com/jf990
Build:
- (fix) Grammar CDN modules not generated correctly. (#3363) [Josh Goebel][]
[Josh Goebel]: https://github.com/joshgoebel
Build:
- add HighlightJS named export (#3295) [Josh Goebel][]
.default named export to CJS builds (#3333) [Josh Goebel][]Parser:
- add first rough performance testing script (#3280) [Austin Schick][]
throwUnescapedHTML to warn against potential HTML injection [Josh Goebel][]regex helper functions via hljs injection [Josh Goebel][]Grammars:
- fix(ts) some complex types would classify as JSX (#3278) [Josh Goebel][]
class X extends Y (#3278) [Josh Goebel][]Float32Array highlighted incorrectly (#3353) [Josh Goebel][]error type [Josh Goebel][]SUBST is no longer highlighted [Josh Goebel][]xor_eq keyword highlighting. [Denis Kovalchuk][]do and then keyword (#3323) [Nicolas Stucki][]enum, export and given keywords (#3328) [Nicolas Stucki][]extension soft keyword (#3326) [Nicolas Stucki][]end soft keyword (#3327) [Nicolas Stucki][]inline soft keyword (#3329) [Nicolas Stucki][]using soft keyword (#3330) [Nicolas Stucki][]f# alias (#3337) [Bahnschrift][]case_insensitive to true (#3351) [idleberg][][Austin Schick]: https://github.com/austin-schick
Build:
- fix: run Node build CSS files thru CSS processor also (#3284) [Josh Goebel][]
Parser:
- fix(csharp) Fix assignments flagging as functions [Josh Goebel][]
_ (#3283) [Josh Goebel][]__FILE__ and __LINE__ constants (#3283) [Josh Goebel][]- enh(swift) Add isolated/nonisolated keywords (#3296) [Bradley Mackey][]
New Languages:
- Added 3rd party X# grammar to SUPPORTED_LANGUAGES [Patrick Kruselburger][]
[Josh Goebel]: https://github.com/joshgoebel
Grammars:
- fix(csharp) add missing catch keyword (#3251) [Konrad Rudolph][]
pwsh alias (#3236) [tebeco][]edn alias (#3213) [Stel Abrego][][Stel Abrego]: https://github.com/stelcodes
This is a major release. As such it contains breaking changes which may require action from users. Please read VERSION_11_UPGRADE.md for a detailed summary of all breaking changes.
Unless otherwise attributed items below are thanks to Josh Goebel][] (ref: [#2558).
The below list should only be considered to be a high-level summary.
Deprecations / Removals / API Changes:
- initHighlighting() and initHighlightingOnLoad() deprecated. Use highlightAll().
highlightBlock(el) deprecated. Use highlightElement(el)before:highlightBlock & after:highlightBlock callbacks deprecated. Use equivalent highlightElement callbacks.highlight(languageName, code, ignoreIllegals, continuation) signature deprecated. Use highlight(code, {language, ignoreIllegals}).highlight() signature no longer supports continuation argument.tabReplace option removed. Consider a plugin.useBR option removed. Consider a plugin or CSS.requireLanguage() removed. Use getLanguage().endSameAsBegin mode key removed. Use hljs.END_SAME_AS_BEGIN.lexemes mode key removed. Use keywords.$pattern.Security:
- HTML auto-passthru has been removed. Consider a plugin.
Themes:
- The default padding of all themes increases (0.5em => 1em).
schoolbook has been updated to remove the lined background.github updated to better match modern GitHub (#1616) [Jan Pilzer][]github-gist has been removed in favor of github [Jan Pilzer][]nnfx updated for v11 xml styles and improved css supportLanguage Grammars:
- Default CDN build drops support for several languages.
Parser:
- enh(vala) improve language detection for Vala (#3195) [Konrad Rudolph][]
beginScope and endScope to allow separate scoping begin and end (#3159) [Josh Goebel][]endScope now supports multi-class matchers as well (#3159) [Josh Goebel][]highlightElement now always tags blocks with a consistent language-[name] class [Josh Goebel][]span tags now also always have the language- prefix added
title.class.inherited sub-scope support [Josh Goebel][]title.class sub-scope support (#3078) [Josh Goebel][]title.function sub-scope support (#3078) [Josh Goebel][]beforeMatch compiler extension (#3078) [Josh Goebel][]cssSelector configuration option (#3180) [James Edington][]Grammars:
- enh(all) .meta-keyword => .meta .keyword (nested scopes) (#3167) [Josh Goebel][]
.meta-string => .meta .string (nested scopes) (#3167) [Josh Goebel][]actor keyword (#3171) [Bradley Mackey][]@resultBuilder attribute (#3151) [Bradley Mackey][]pde alias (#3142) [Dylan McBean][]function.title => title.function (#3078) [Josh Goebel][]function.title => title.function (#3078) [Josh Goebel][]function.title => title.function (#3078) [Josh Goebel][]impl (#3078) [Josh Goebel][]New Languages:
- Added 3rd party Glimmer grammar to SUPPORTED_LANGUAGES(#3123) [NullVoxPopuli][]
Theme Improvements:
- Added all official Base16 themes (over 150 new themes) [Josh Goebel][]
builtin-name CSS class (#3119) [Josh Goebel][]New Themes:
- DeviBeans Dark by [Farzad Sadeghi][]
Dev Improvements:
- (chore) greatly improve match scope visualization in dev tool (#3126) [NullVoxPopuli][]
[Farzad Sadeghi]: https://github.com/terminaldweller
- fix(parser) Resolves issues with TypeScript types [Josh Goebel][]
Parser:
- keywords now have a maximum # of times they provide relevance (#3129) [Josh Goebel][]
unregisterLanguage method (#3009) [Antoine du Hamel][]highlightAll() now works if the library is lazy loaded [Josh Goebel][]New Languages:
- Added 3rd party RiScript grammar to SUPPORTED_LANGUAGES (#2988) [John C][]
Language grammar improvements:
- enh(js/ts) class references (CamelCase) are highlighted (#3169) [Josh Goebel][]
title.function (#3169) [Josh Goebel][]defined?() mis-highlighted as def (#3025) [Josh Goebel][]#include blocks (#3041) [Josh Goebel][]#include blocks (#3041) [Josh Goebel][]trait to class-like naming patterns (#2997) [Ayesh][]Stringable, UnhandledMatchError, and WeakMap classes/interfaces (#2997) [Ayesh][]mixed to list of keywords (#2997) [Ayesh][]kts as an alias for Kotlin (#3021) [Vaibhav Chanana][]font-smoothing to attributes list for CSS (#3027) [AndyKIron][]print and exec as a builtin (#1468) [Samuel Colvin][]Deprecations:
- highlight(languageName, code, ignoreIllegals, continuation) deprecated as of 10.7
code and then accepts options as an object
- IE: highlight(code, {language, ignoreIllegals})
- continuation is for internal use only and no longer supported
highlightBlock(el) deprecated as of 10.7.highlightElement(el) instead.
- Plugin callbacks renamed before/after:highlightBlock => before/after:highlightElement
- Plugin callback now takes el vs block attribute
- The old API and callbacks will be supported until v12.[Stef Levesque]: https://github.com/stef-levesque [Josh Goebel]: https://github.com/joshgoebel [John Cheung]: https://github.com/Real-John-Cheung [xDGameStudios]: https://github.com/xDGameStudios [Ayesh]: https://github.com/Ayesh [Vyron Vasileiadis]: https://github.com/fedonman [Antoine du Hamel]: https://github.com/aduh95 [Vaibhav Chanana]: https://github.com/il3ven [David Ostrovsky]: https://github.com/davido [AndyKIron]: https://github.com/AndyKIron [Samuel Colvin]: https://github.com/samuelcolvin
New Languages:
- Added 3rd party Laravel Blade grammar to SUPPORTED_LANGUAGES (#2944) [Michael Newton][]
Language grammar improvements:
- enh(scala) fix triple quoted strings (#2987) [Josh Goebel][]
Grammar Deprecations:
- Deprecate c-like, though you should not be using it directly anyways.
c and cpp are now wholly unique grammars that will diverge over timeParser:
- new simpler highlightAll() API (#2962) [Josh Goebel][]
initHighlighting() and initHighlightingOnLoad()
- note: it does not prevent itself from being called multiple times (as the previous API did)
beginKeyword no longer bestows double relevance (#2953) [Josh Goebel][]keywords to be an array of strings [Josh Goebel][]modes.MATCH_NOTHING_RE that will never matchend to hold a mode open (it must then be ended with endsParent in one of it's children modes) [Josh Goebel][]Deprecations:
- initHighlighting() and initHighlightingOnLoad() deprecated.
- Please use the new highlightAll() API instead.
- Deprecated as of 10.6.
- These will both be aliases to highlightAll in v11.
[Michael Newton]: https://github.com/miken32 [Steven Van Impe]: https://github.com/svanimpe/ [Josh Goebel]: https://github.com/joshgoebel [Vaibhav Chanana]: https://github.com/il3ven [davidhcefx]: https://github.com/davidhcefx [Jan Pilzer]: https://github.com/Hirse
Build:
- Add Subresource Integrity digest lists to cdn-assets [Josh Goebel][]
:common) [Josh Goebel][]Parser:
- add match as sugar for simple begin only matches (#2834) [Josh Goebel][]
illegal to also be an array of regex (#2834) [Josh Goebel][]compilerExtensions allows grammers to influence mode compilation (#2834) [Josh Goebel][]New Languages:
- Added 3rd party Red & Rebol grammar to SUPPORTED_LANGUAGES (#2872) [Oldes Huhuman][]
Language grammar improvements:
- enh: CSS grammars now share common foundation, keywords, etc. (#2937) [Josh Goebel][] - enh(css): many consistency improvements - enh(scss): many consistency improvements - enh(stylus): many consistency improvements - enh(less): many consistency improvements
make as an alias (#2883) [tripleee][][] for argument lists (#2913) [Josh Goebel][]REM comments and fixes ''' doctags (#2875) (#2851)
- Custom number mode to support VB.net specific number flags
- Hex (&H), Oct (&O), and binary (&B) prefixes
- Separating digits with underscores: 90_946
- Type suffixes: 123UI (unsigned integer)
- Improves directives detection and adds support for Enable, Disable, and Then keywords
- Adds more markup tests
Recent Deprecations:
- HTML "merging" is deprecated. (#2873) [Josh Goebel][]
blocks will no longer be magically merged back into the
highlighted code's HTML result - it will instead be silently removed.
- Consider [using a plugin][htmlPlugin] if you truly need this functionality
- Deprecated as of 10.5.0 - will be removed in v11.
tabReplace option deprecated. (#2873) [Josh Goebel][]tab-size property, or simply pre-process the
text yourself before rendering the initial HTML
- otherwise, [use a plugin][tabPlugin]
- Deprecated as of 10.5.0 - will be removed in v11.
useBR option deprecated. (#2559) [Josh Goebel][] tag
- or perhaps try CSS white-space: pre;
- otherwise, [use a plugin][brPlugin]
- Deprecated as of 10.3.0 - will be removed in v11.
requireLanguage API is deprecated, will be removed in v11.0.getLanguage (with custom error handling) or built-time dependencies.
- See Library API for more information.
- Deprecated as of 10.4.0 - will be removed in v11.[htmlPlugin]: https://github.com/highlightjs/highlight.js/issues/2889 [tabPlugin]: https://github.com/highlightjs/highlight.js/issues/2874 [brPlugin]: https://github.com/highlightjs/highlight.js/issues/2559
[Martin Dørum]: https://github.com/mortie [Jan Pilzer]: https://github.com/Hirse [Oldes Huhuman]: https://github.com/Oldes [Josh Goebel]: https://github.com/joshgoebel [tripleee]: https://github.com/tripleee [Steven Van Impe]: https://github.com/svanimpe/ [Vaibhav Chanana]: https://github.com/il3ven [Guillaume Grossetie]: https://github.com/mogztter
Security
- (fix) Exponential backtracking fixes for: [Josh Goebel][] - cpp - handlebars - gams - perl - jboss-cli - r - erlang-repl - powershell - routeros
Very grateful to [Michael Schmidt][] for all the help.
[Michael Schmidt]: https://github.com/RunDevelopment [Josh Goebel]: https://github.com/joshgoebel
A largish release with many improvements and fixes from quite a few different contributors. Enjoy!
Deprecations:
- (chore) requireLanguage is deprecated.
- Prefer getLanguage (with custom error handling) or built-time dependencies.
- See Library API for more information.
Parser:
- enh(parser) use negative look-ahead for beginKeywords support (#2813) [Josh Goebel][]
classNameAliases for more complex grammars [Josh Goebel][]classNameAliases for more complex grammars [Josh Goebel][]New Languages:
- Added 3rd party Chapel grammar to SUPPORTED_LANGUAGES (#2806) [Brad Chamberlain][]
node-repl for Node.js REPL sessions (#2792) [Marat Nagayev][]Language Improvements:
- enh(shell) Recognize prompts which contain tilde ~ (#2859) [Guillaume Grossetie][]
\ (#2861) [Guillaume Grossetie][]\[Gamma]
- Updated list of version 12.1 built-in symbols
- Matching of patterns, slots, message-names and braces
# [Marcus Ortiz][]some keyword [Marcus Ortiz][]@main attribute [Marcus Ortiz][]Dev Improvements:
- chore(dev) add theme picker to the tools/developer tool (#2770) [Josh Goebel][]
New themes:
- StackOverflow Dark by [Jan Pilzer][]
[Guillaume Grossetie]: https://github.com/mogztter
Prior version let some look-behind regex sneak in, which does not work yet on Safari. This release removes those incompatible regexes.
Fix:
- fix(Safari) Remove currently unsupported look-behind regex ([fix][187e7cfc]) [Josh Goebel][]
[Josh Goebel]: https://github.com/joshgoebel [187e7cfc]: https://github.com/highlightjs/highlight.js/commit/187e7cfcb06277ce13b5f35fb6c37ab7a7b46de9
Language Improvements:
- enh(latex) Complete ground up rewrite of LaTex grammar [schtandard][]
enum (struct|class) and union (#2752) [Josh Goebel][]{} inside template literals SUBST expression (#2748) [Josh Goebel][]constructor is now highlighted as a function title (not keyword) (#2727) [Josh Goebel][]# for private class fields (#2701) [Chris Krycho][](*) from being detected as a multi-line comment [Josh Goebel][]objective-c++ and obj-c++ aliases for Objective-C [Josh Goebel][]record (#2685) [Josh Goebel][]title (#2683) [Josh Goebel][]final) in class declaration (#2696) [Josh Goebel][]match keyword and add php8 as an alias (#2733) [Ayesh Karunaratne][]Deprecations:
- useBR option deprecated and will be removed in v11.0. (#2559) [Josh Goebel][]
[Chris Krycho]: https://github.com/chriskrycho
[Ryan Jonasson]: https://github.com/ryanjonasson [Philipp Engel]: https://github.com/interkosmos [Konrad Rudolph]: https://github.com/klmr [Melissa Geels]: https://github.com/codecat [Antoine du Hamel]: https://github.com/aduh95 [Ayesh Karunaratne]: https://github.com/Ayesh [Tom Wallace]: https://github.com/thomasmichaelwallace [schtandard]: https://github.com/schtandard
Parser Engine:
- fix(parser) complete fix for resuming matches from same index (#2678) [Josh Goebel][]
[Josh Goebel]: https://github.com/yyyc514
Parser Engine:
- (fix) When ignoring a potential match highlighting can terminate early (#2649) [Josh Goebel][]
New themes:
- Gradient Light by [Samia Ali]()
Deprecations:
- fixMarkup is now deprecated and will be removed in v11.0. (#2534) [Josh Goebel][]
Big picture:
- Add simple Vue plugin for basic use cases (#2544) [Josh Goebel][]
Language Improvements:
- fix(bash) Fewer false positives for keywords in arguments (#2669) [sirosen][]
init and record keywords for C# 9.0 (#2660) [Youssef Victor][]arguments keyword and fix enumeration keyword (#2619) [Andrew Janke][]getLanguage (#2636) [night][]enum, which will identify as a class now (#2643) [ezksd][][Youssef Victor]: https://github.com/Youssef1313
Fixes:
- Resolve issue on Node 6 due to dangling comma (#2608) [Edwin Hoogerbeets][]
index.d.ts is not a module error (#2603) [Josh Goebel][][Josh Goebel]: https://github.com/joshgoebel
New themes:
- NNFX and NNFX-dark by [Jim Mason][]
Parser Engine:
- (parser) Now escapes quotes in text content when escaping HTML (#2564) [Josh Goebel][]
keywords.$pattern key to grammar definitions (#2519) [Josh Goebel][]registerAliases method (#2540) [Taufik Nurrohman][]on:begin callback for modes (#2261) [Josh Goebel][]on:end callback for modes (#2261) [Josh Goebel][]END_SAME_AS_BEGIN mode to replace endSameAsBegin parser attribute (#2261) [Josh Goebel][]fixMarkup would rarely destroy markup when useBR was enabled (#2532) [Josh Goebel][]Deprecations:
- htmlbars grammar is now deprecated. Use handlebars instead. (#2344) [Nils Knappmeier][]
highlightBlock result.re deprecated. Use result.relevance instead. (#2552) [Josh Goebel][]result.second_best.re => result.second_best.relevance (#2552)lexemes is now deprecated in favor of keywords.$pattern key (#2519) [Josh Goebel][]endSameAsBegin is now deprecated. (#2261) [Josh Goebel][]Language Improvements:
- fix(groovy) strings are not allowed inside ternary clauses (#2217) [Josh Goebel][]
readonly keyword (#2562) [Martin (Lhoerion)][]OPTIMIZE: and HACK: to the labels highlighted inside comments [Josh Goebel][]pair, make_pair, priority_queue as built-ins (#2538) [Hankun Lin][]priority_queue pair as cpp containers (#2541) [Hankun Lin][]set keyword conflicting with setTimeout, etc. (#2514) [Vania Kucher][]=> function with nested () in params now works (#2502) [Josh Goebel][]=> function with nested () in params now works (#2502) [Josh Goebel][]@objcMembers was being partially highlighted (#2543) [Nick Randall][]late and required keywords, the Never built-in type, and nullable built-in types (#2550) [Sam Rawlins][][Josh Goebel]: https://github.com/joshgoebel
Brower build:
- Issue (bug) Fix: Version 10 fails to load as CommonJS module. (#2511) [Josh Goebel][]
Parser Engine Changes:
- Issue fix(parser) Fix freez issue with illegal 0 width matches (#2524) [Josh Goebel][]
Parser Engine Changes:
- (bug) Fix sublanguage with no relevance score (#2506) [Josh Goebel][]
[Josh Goebel]: https://github.com/joshgoebel
New languages:
- add(php-template) Explicit language to detect PHP templates (vs xml) [Josh Goebel][]
python-repl for Python REPL sessionsNew themes:
- Srcery by [Chen Bin][]
Parser Engine Changes:
- (bug) Fix beginKeywords to ignore . matches (#2434) [Josh Goebel][]
before:highlight plugin API callback (#2395) [Josh Goebel][]after:highlight plugin API callback (#2395) [Josh Goebel][]name attribute now (#2400) [Josh Goebel][]noHighlightRe and languagePrefixRe configurable (#2374) [Josh Goebel][]Language Improvements:
- enh(python) Exclude parens from functions params (#2490) [Álvaro Mondéjar][]
compactMap to keywords as built_in (#2478) [Omid Golparvar][]func keyword (#2468) [Adnan Yaqoob][]defn- properly (#2438) [Josh Goebel][]@identifier style identifiers (#2414) [Josh Goebel][]deny and allow keywords [Josh Goebel][]= syntax to meta [Taufik Nurrohman][]rpc when followed by a block (#) [Josh Goebel][]where keyword as class constraint (#2378) [Josh Goebel][]text and txt as alias (#2360) [Taufik Nurrohman][]Developer Tools:
- added Dockerfile for optionally developing with a container
[Omid Golparvar]: https://github.com/omidgolparvar
Grammar Improvements:
- bug(coffeescript) fix freezing bug due to badly behaved regex (#2376) [Josh Goebel][]
[Josh Goebel]: https://github.com/joshgoebel
New languages:
- none.
New themes:
- none.
Core Changes:
- none.
Language Improvements:
- (javascript) fix JSX self-closing tag issues (#2322) [Josh Goebel][]
block and endblock keywords (#2343) [Philipp Engel][]A::typeName func(...)) (#2332) [Josh Goebel][]A::functionName) (#2332) [Josh Goebel][]int8_t, etc.) as function types (#2332) [Josh Goebel][]Developer Tools:
- feat(developer): add button to show parsed structure (#2345) [Nils Knappmeier][]
[Jeffrey Arnold]: https://github.com/jrnold
Fixes:
- fix(parser): resolve IE 11 issue with Object.freeze() (#2319) [Josh Goebel][]
[Josh Goebel]: https://github.com/joshgoebel
New languages:
- none.
New themes:
- Gradient Dark by [Samia Ali][]
Core Improvements:
- chore(parser): switch from createElementNS to createElement (#2314) [Josh Goebel][]
self mode at the top-level of a language (#2294) [Josh Goebel][]Language Improvements:
- fix(sql): backslash is not used to escape in strings in standard SQL (#1748) [Mike Schall][]
if getting confused as an f-string (#2200) [Josh Goebel][] and [Carl Baxter][]calc(2px+3px) (#2241)[Josh Goebel]: https://github.com/joshgoebel
New languages: none.
New styles: none.
Improvements:
New languages: none.
New styles:
Improvements:
!~ method definition (#2222)@dynamicMemberLookup and @propertyWrapper (#2202)endWithParent inside starts now always works (#2201)vbscript as potential script tag subLanguagefuture built-in (#1610)[Carl Baxter]: https://github.com/cdbax
script tags (#1690)Improvements: - fix(AutoHotkey): order and extended highlighting (#1579) - fix(Go): correctly highlight hex numbers, rather than stopping at last 'd' or 'f'. (#2060) - fix(Mathematica): Improvements to language (#2065) - fix(Node): Adds SCSS build (#2079) - fix(Rust): update keywords (#2052) - fix(Stata): Added keywords for the meta-analysis suite introduced in Stata 16 (#2081) - fix(Bash): escape double quotes (#2048)
New languages: none. New styles: none. Improvements: - fix(bash): revert escaped double quotes - broke Firefox/Safari.
New languages: none.
New styles: none.
Improvements:
- Pony: Fixed keywords without spaces at line ends, highlighting of iso in class definitions, and function heads without bodies in traits and interfaces. Removed FUNCTION and CLASS modes until they are found to be needed and to provide some of the fixes.
- Support external language files in minified version of highlight.js (#1888)
New languages: none.
New styles: none.
Improvements:
- new cli tool hljs - allows easier building from command line.
- cpp: Fully support C++11 raw strings. (#1897)
- Python: Treat False None and True as literals (#1920)
New languages: none. New styles: none. Improvements:
[Scott Hyndman]: https://github.com/shyndman
New languages:
New languages:
annotation and verbatim keywords to Crystal, by [Benoit de Chezelles][]C# as an alias for CSharp language, by [Ahmed Atito][][Laurent Voullemier]: https://github.com/l-vo
Improvements:
- C# function declarations no longer include trailing whitespace, by [JeremyTCD][]
autoDetection to accept language aliases.[JeremyTCD]: https://github.com/JeremyTCD
New languages:
- ArcGIS Arcade by [John Foster][]
New styles:
- a11y-dark theme by [Eric Bailey][]
Improvements:
- New attribute endSameAsBegin for nested constructs with variable names
@objcMembers to @attributes, by [Berk Çebi][]disableAutodetect for preventing autodetection by [Egor Rogov][][Ahmad Awais]: https://github.com/ahmadawais
New language:
- MikroTik RouterOS Scripting language by [Ivan Dementev][].
New style:
- VisualStudio 2015 Dark by [Nicolas LLOBERA][]
Improvements:
[Attributes].
[Tsuyusato Kitsune]: https://github.com/MakeNowJust
New languages:
- Shell by [Tsuyusato Kitsune][]
Improvements:
- [Joël Porquet] has [greatly improved the definition of makefile][5b3e0e6].
or, and and not keywords to C++.
Apologies for missing the previous release cycle. Some thing just can't be automated… Anyway, we're back!
New languages:
- Hy by [Sergey Sobko][]
Improvements:
- Rust got updated with new keywords by [Kasper Andersen][] and then
-quoted lists thanks to [Guannan Wei]. in C++ defines.[Philipp A]: https://github.com/flying-sheep
New languages
- LLVM by [Michael Rodler][]
Improvements:
- TypeScript updated with annotations and param lists inside constructors, by [Raphael Parree][].
\, thanks to thanks to [Geoffrey Booth][].
[Raphael Parree]: https://github.com/rparree
This version is the second one that deserved a name. Because I'm in New York, and the release isn't missing the deadline only because it's still Tuesday on West Coast.
New languages:
- Clean by [Camil Staps][]
Improvements:
- [Kenton Hamaluik][] did a comprehensive update for Haxe.
[Camil Staps]: https://github.com/camilstaps [Magnus Madsen]: https://github.com/magnus-madsen [Kenton Hamaluik]: https://github.com/FuzzyWuzzie [Nicolas Le Gall]: https://github.com/darkitty [Jan T. Sott]: https://github.com/idleberg [Alexander Lichter]: https://github.com/manniL
A comprehensive bugfix release. This is one of the best things about highlight.js: even boring things keep getting better (even if slow).
- VHDL updated with PSL keywords and uses more consistent styling.
=> functions, highlighted object attributes and${...}).
in JSX.HEALTHCHECK directive in Docker.<...>.
New languages:
- ABNF and EBNF by [Alex McKibben][]
New styles:
- Atom One in both Dark and Light variants by [Daniel Gamage][]
Plus, a few smaller updates for Lasso, Elixir, C++ and SQL.
[Alex McKibben]: https://github.com/mckibbenta
New languages:
- Excel by [Victor Zhou][]
New styles:
- Ocean Dark by [Gavin Siu][]
Notable changes:
- [Minh Nguyễn][] added more built-ins to Objective C.
[Gavin Siu]: https://github.com/gavsiu
New languages:
- PureBASIC by [Tristano Ajmone][]
New styles:
- PureBASIC by [Tristano Ajmone][]
Improvements to existing languages and styles:
- We now highlight function declarations in Go.
$this is highlighted as a keyword in PHP.usize and isize are now highlighted in Rust.[Tristano Ajmone]: https://github.com/tajmone
New languages:
- Tagger Script by [Philipp Wolfer][]
New styles:
- xt256 by [Herbert Shin][]
Improvements to existing languages and styles:
- More robust handling of unquoted HTML tag attributes
move to Rust keywords\\-fenced code blocks[Philipp Wolfer]: https://github.com/phw
New languages:
- QML by [John Foster][]
New styles:
- Gruvbox by [Qeole][]
Improvements to existing languages and styles:
- We now correctly handle JSX with arbitrary node tree depth.
in Scheme is no longer highlighted as a function is now recognized as a built-in in Rust.[John Foster]: https://github.com/jf990
New languages:
- Stan by [Brendan Rocks][]
New Styles:
- Arduino Light by [Stefania Mellai][]
Improvements to existing languages and styles:
- Handle return type annotations in Python
as a class-level definition in Rust[Brendan Rocks]: http://brendanrocks.com
The new major version brings a reworked styling system. Highlight.js now defines a limited set of highlightable classes giving a consistent result across all the styles and languages. You can read a more detailed explanation and background in the [tracking issue][#348] that started this long process back in May.
This change is backwards incompatible for those who uses highlight.js with a custom stylesheet. The [new style guide][sg] explains how to write styles in this new world.
Bundled themes have also suffered a significant amount of improvements and may look different in places, but all the things now consistent and make more sense. Among others, the Default style has got a refresh and will probably be tweaked some more in next releases. Please do give your feedback in our [issue tracker][issues].
New languages in this release:
- Caché Object Script by [Nikita Savchenko][]
Improvements to existing languages and styles:
- ECMAScript 6 modules import now do not require closing semicolon.
Other notable changes:
- [Web workers support][webworkers] added bu [Jan Kühle][].
[Jan Kühle]: https://github.com/frigus02
Some last-minute changes reverted due to strange bug with minified browser build:
- Scala case classes params highlight fixed
New languages:
- crmsh by [Kristoffer Gronlund][]
[Kristoffer Gronlund]: https://github.com/krig
Notable fixes and improvements to existing languages:
- Added abstract and namespace keywords to TypeScript by [Daniel Rosenwasser][]
label support to Dockerfile by [Ladislav Prskavec][]
Other notable changes:
- ~~License added to not minified browser build~~
[Kristoffer Gronlund]: https://github.com/krig [Søren Enevoldsen]: https://github.com/senevoldsen90 [Daniel Rosenwasser]: https://github.com/DanielRosenwasser [Ladislav Prskavec]: https://github.com/abtris [Tsuyusato Kitsune]: https://github.com/MakeNowJust [Nate Cook]: https://github.com/natecook1000
New languages:
- Golo by [Philippe Charrière][]
Notable fixes and improvements to existing languages:
- JavaScript highlighting no longer fails with ES6 default parameters
and await to PythonOther notable changes:
- Change versions to X.Y.Z SemVer-compatible format
[Philippe Charrière]: https://github.com/k33g
New languages:
- Zephir by [Oleg Efimov][]
New styles:
- Hopscotch by [Jan T. Sott][]
Notable fixes and improvements to existing languages:
- Fix encoding of images when copied over in certain builds
[Oleg Efimov]: https://github.com/Sannis
New languages:
- C/AL by [Kenneth Fuglsang][]
New styles:
- Atelier Cave, Atelier Estuary,
Notable fixes and improvements to existing languages:
- Multi-line raw strings from C++11 are now supported
keyword from ES6/7 is now supported[Bram de Haan]: https://github.com/atelierbram
New languages:
- pf.conf by [Peter Piwowarski][]
New styles:
- Agate by [Taufik Nurrohman][]
Notable fixes and improvements to existing languages:
- ES6 features in JavaScript are better supported now by [Gu Yiling][].
now work in Elixir.- tabReplace and useBR that were used in different places are also unified
into the global options object and are to be set using configure(options).
This function is documented in our [API docs][]. Also note that these
parameters are gone from highlightBlock and fixMarkup which are now also
rely on configure.
- We removed public-facing (though undocumented) object hljs.LANGUAGES which
was used to register languages with the library in favor of two new methods:
registerLanguage and getLanguage. Both are documented in our [API docs][].
- Result returned from highlight and highlightAuto no longer contains two
separate attributes contributing to relevance score, relevance and
keyword_count. They are now unified in relevance.
Another technically compatible change that nonetheless might need attention:
- The structure of the NPM package was refactored, so if you had installed it
locally, you'll have to update your paths. The usual require('highlight.js')
works as before. This is contributed by [Dmitry Smolin][].
New features:
- Languages now can be recognized by multiple names like "js" for JavaScript or "html" for, well, HTML (which earlier insisted on calling it "xml"). These aliases can be specified in the class attribute of the code container in your HTML as well as in various API calls. For now there are only a few very common aliases but we'll expand it in the future. All of them are listed in the [class reference][cr].
- Language detection can now be restricted to a subset of languages relevant in
a given context — a web page or even a single highlighting call. This is
especially useful for node.js build that includes all the known languages.
Another example is a StackOverflow-style site where users specify languages
as tags rather than in the markdown-formatted code snippets. This is
documented in the [API reference][] (see methods highlightAuto and
configure).
- Language definition syntax streamlined with [variants][] and [beginKeywords][].
New languages and styles:
- Oxygene by [Carlo Kok][]
Miscellaneous improvements:
- Highlighting => prompts in Clojure.
[API reference]: http://highlightjs.readthedocs.org/en/latest/api.html
[cr]: http://highlightjs.readthedocs.org/en/latest/css-classes-reference.html [api docs]: http://highlightjs.readthedocs.org/en/latest/api.html [variants]: https://groups.google.com/d/topic/highlightjs/VoGC9-1p5vk/discussion [beginKeywords]: https://github.com/isagalaev/highlight.js/commit/6c7fdea002eb3949577a85b3f7930137c7c3038d [php-html]: https://twitter.com/highlightjs/status/408890903017689088
[Carlo Kok]: https://github.com/carlokok [Bram de Haan]: https://github.com/atelierbram [Daniel Kvasnička]: https://github.com/dkvasnicka [Dmitry Smolin]: https://github.com/dimsmol [Jeremy Hull]: https://github.com/sourrust [Seongwon Lee]: https://github.com/dlimpid [Jan T. Sott]: https://github.com/idleberg
A catch-up release dealing with some of the accumulated contributions. This one is probably will be the last before the 8.0 which will be slightly backwards incompatible regarding some advanced use-cases.
One outstanding change in this version is the addition of 6 languages to the [hosted script][d]: Markdown, ObjectiveC, CoffeeScript, Apache, Nginx and Makefile. It now weighs about 6K more but we're going to keep it under 30K.
New languages:
- OCaml by [Mehdi Dogguy][mehdid] and [Nicolas Braud-Santoni][nbraud]
Improvements:
- Ruby's got support for characters like ?A, ?1, ?\012 etc. and %r{..}
.
- Haskell's got new keywords and now recognizes more things like pragmas,
preprocessors, modules, containers, FFIs etc. Thanks to [Zena Treep][treep]
for the implementation and to [Jeremy Hull][sourrust] for guiding it.
- Miscellaneous fixes in PHP, Brainfuck, SCSS, Asciidoc, CMake, Python and F#.
[mehdid]: https://github.com/mehdid
[nbraud]: https://github.com/nbraud
[revig]: https://github.com/revig
[lcs]: http://livecode.com/developers/guides/server/
[sylvestre]: https://github.com/sylvestre
[isagalaev]: https://github.com/isagalaev
[treep]: https://github.com/treep
[sourrust]: https://github.com/sourrust
[d]: http://highlightjs.org/download/
New core developers
The latest long period of almost complete inactivity in the project coincided
with growing interest to it led to a decision that now seems completely obvious:
we need more core developers.
So without further ado let me welcome to the core team two long-time
contributors: [Jeremy Hull][] and [Oleg
Efimov][].
Hope now we'll be able to work through stuff faster!
P.S. The historical commit is [here][1] for the record.
[Jeremy Hull]: https://github.com/sourrust
[Oleg Efimov]: https://github.com/sannis
[1]: https://github.com/isagalaev/highlight.js/commit/f3056941bda56d2b72276b97bc0dd5f230f2473f
Version 7.4
This long overdue version is a snapshot of the current source tree with all the
changes that happened during the past year. Sorry for taking so long!
Along with the changes in code highlight.js has finally got its new home at
, moving from its cradle on Software Maniacs which it
outgrew a long time ago. Be sure to report any bugs about the site to
.
On to what's new…
New languages:
- Handlebars templates by [Robin Ward][]
- Oracle Rules Language by [Jason Jacobson][]
- F# by [Joans Follesø][]
- AsciiDoc and Haml by [Dan Allen][]
- Lasso by [Eric Knibbe][]
- SCSS by [Kurt Emch][]
- VB.NET by [Poren Chiang][]
- Mizar by [Kelley van Evert][]
[Robin Ward]: https://github.com/eviltrout
[Jason Jacobson]: https://github.com/jayce7
[Joans Follesø]: https://github.com/follesoe
[Dan Allen]: https://github.com/mojavelinux
[Eric Knibbe]: https://github.com/EricFromCanada
[Kurt Emch]: https://github.com/kemch
[Poren Chiang]: https://github.com/rschiang
[Kelley van Evert]: https://github.com/kelleyvanevertNew style themes:
- Monokai Sublime by [noformnocontent][]
- Railscasts by [Damien White][]
- Obsidian by [Alexander Marenin][]
- Docco by [Simon Madine][]
- Mono Blue by [Ivan Sagalaev][] (uses a single color hue for everything)
- Foundation by [Dan Allen][]
[noformnocontent]: http://nn.mit-license.org/
[Damien White]: https://github.com/visoft
[Alexander Marenin]: https://github.com/ioncreature
[Simon Madine]: https://github.com/thingsinjars
[Ivan Sagalaev]: https://github.com/isagalaevOther notable changes:
- Corrected many corner cases in CSS.
- Dropped Python 2 version of the build tool.
- Implemented building for the AMD format.
- Updated Rust keywords (thanks to [Dmitry Medvinsky][]).
- Literal regexes can now be used in language definitions.
- CoffeeScript highlighting is now significantly more robust and rich due to
input from [Cédric Néhémie][].[Dmitry Medvinsky]: https://github.com/dmedvinsky
[Cédric Néhémie]: https://github.com/abe33
Version 7.3
- Since this version highlight.js no longer works in IE version 8 and older.
It's made it possible to reduce the library size and dramatically improve code
readability and made it easier to maintain. Time to go forward!
- New languages: AppleScript (by [Nathan Grigg][ng] and [Dr. Drang][dd]) and
Brainfuck (by [Evgeny Stepanischev][bolk]).
- Improvements to existing languages:
- interpreter prompt in Python (
>>> and ...)
- @-properties and classes in CoffeeScript
- E4X in JavaScript (by [Oleg Efimov][oe])
- new keywords in Perl (by [Kirk Kimmel][kk])
- big Ruby syntax update (by [Vasily Polovnyov][vast])
- small fixes in Bash- Also Oleg Efimov did a great job of moving all the docs for language and style
developers and contributors from the old wiki under the source code in the
"docs" directory. Now these docs are nicely presented at
.
[ng]: https://github.com/nathan11g
[dd]: https://github.com/drdrang
[bolk]: https://github.com/bolknote
[oe]: https://github.com/Sannis
[kk]: https://github.com/kimmel
[vast]: https://github.com/vast
Version 7.2
A regular bug-fix release without any significant new features. Enjoy!
Version 7.1
A Summer crop:
- [Marc Fornos][mf] made the definition for Clojure along with the matching
style Rainbow (which, of course, works for other languages too).
- CoffeeScript support continues to improve getting support for regular
expressions.
- Yoshihide Jimbo ported to highlight.js [five Tomorrow styles][tm] from the
[project by Chris Kempson][tm0].
- Thanks to [Casey Duncun][cd] the library can now be built in the popular
[AMD format][amd].
- And last but not least, we've got a fair number of correctness and consistency
fixes, including a pretty significant refactoring of Ruby.[mf]: https://github.com/mfornos
[tm]: http://jmblog.github.com/color-themes-for-highlightjs/
[tm0]: https://github.com/ChrisKempson/Tomorrow-Theme
[cd]: https://github.com/caseman
[amd]: http://requirejs.org/docs/whyamd.html
Version 7.0
The reason for the new major version update is a global change of keyword syntax
which resulted in the library getting smaller once again. For example, the
hosted build is 2K less than at the previous version while supporting two new
languages.
Notable changes:
- The library now works not only in a browser but also with [node.js][]. It is
installable with
npm install highlight.js. [API][] docs are available on our
wiki.- The new unique feature (apparently) among syntax highlighters is highlighting
HTTP headers and an arbitrary language in the request body. The most useful
languages here are XML and JSON both of which highlight.js does support.
Here's [the detailed post][p] about the feature.
- Two new style themes: a dark "south" [Pojoaque][] by Jason Tate and an
emulation ofXCode IDE by [Angel Olloqui][ao].
- Three new languages: D by [Aleksandar Ružičić][ar], R by [Joe Cheng][jc]
and GLSL by [Sergey Tikhomirov][st].
- Nginx syntax has become a million times smaller and more universal thanks to
remaking it in a more generic manner that doesn't require listing all the
directives in the known universe.
- Function titles are now highlighted in PHP.
- Haskell and VHDL were significantly reworked to be more rich and correct
by their respective maintainers [Jeremy Hull][sr] and [Igor Kalnitsky][ik].
And last but not least, many bugs have been fixed around correctness and
language detection.
Overall highlight.js currently supports 51 languages and 20 style themes.
[node.js]: http://nodejs.org/
[api]: http://softwaremaniacs.org/wiki/doku.php/highlight.js:api
[p]: http://softwaremaniacs.org/blog/2012/05/10/http-and-json-in-highlight-js/en/
[pojoaque]: http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html
[ao]: https://github.com/angelolloqui
[ar]: https://github.com/raleksandar
[jc]: https://github.com/jcheng5
[st]: https://github.com/tikhomirov
[sr]: https://github.com/sourrust
[ik]: https://github.com/ikalnitsky
Version 6.2
A lot of things happened in highlight.js since the last version! We've got nine
new contributors, the discussion group came alive, and the main branch on GitHub
now counts more than 350 followers. Here are most significant results coming
from all this activity:
- 5 (five!) new languages: Rust, ActionScript, CoffeeScript, MatLab and
experimental support for markdown. Thanks go to [Andrey Vlasovskikh][av],
[Alexander Myadzel][am], [Dmytrii Nagirniak][dn], [Oleg Efimov][oe], [Denis
Bardadym][db] and [John Crepezzi][jc].
- 2 new style themes: Monokai by [Luigi Maselli][lm] and stylistic imitation of
another well-known highlighter Google Code Prettify by [Aahan Krish][ak].
- A vast number of [correctness fixes and code refactorings][log], mostly made
by [Oleg Efimov][oe] and [Evgeny Stepanischev][es].
[av]: https://github.com/vlasovskikh
[am]: https://github.com/myadzel
[dn]: https://github.com/dnagir
[oe]: https://github.com/Sannis
[db]: https://github.com/btd
[jc]: https://github.com/seejohnrun
[lm]: http://grigio.org/
[ak]: https://github.com/geekpanth3r
[es]: https://github.com/bolknote
[log]: https://github.com/isagalaev/highlight.js/commits/
Version 6.1 — Solarized
[Jeremy Hull][jh] has implemented my dream feature — a port of [Solarized][]
style theme famous for being based on the intricate color theory to achieve
correct contrast and color perception. It is now available for highlight.js in
both variants — light and dark.
This version also adds a new original style Arta. Its author pumbur maintains a
[heavily modified fork of highlight.js][pb] on GitHub.
[jh]: https://github.com/sourrust
[solarized]: http://ethanschoonover.com/solarized
[pb]: https://github.com/pumbur/highlight.js
Version 6.0
New major version of the highlighter has been built on a significantly
refactored syntax. Due to this it's even smaller than the previous one while
supporting more languages!
New languages are:
- Haskell by [Jeremy Hull][sourrust]
- Erlang in two varieties — module and REPL — made collectively by [Nikolay
Zakharov][desh], [Dmitry Kovega][arhibot] and [Sergey Ignatov][ignatov]
- Objective C by [Valerii Hiora][vhbit]
- Vala by [Antono Vasiljev][antono]
- Go by [Stephan Kountso][steplg]
[sourrust]: https://github.com/sourrust
[desh]: http://desh.su/
[arhibot]: https://github.com/arhibot
[ignatov]: https://github.com/ignatov
[vhbit]: https://github.com/vhbit
[antono]: https://github.com/antono
[steplg]: https://github.com/steplgAlso this version is marginally faster and fixes a number of small long-standing
bugs.
Developer overview of the new language syntax is available in a [blog post about
recent beta release][beta].
[beta]: http://softwaremaniacs.org/blog/2011/04/25/highlight-js-60-beta/en/
P.S. New version is not yet available on a Yandex CDN, so for now you have to
download [your own copy][d].
[d]: /soft/highlight/en/download/
Version 5.14
Fixed bugs in HTML/XML detection and relevance introduced in previous
refactoring.
Also test.html now shows the second best result of language detection by
relevance.
Version 5.13
Past weekend began with a couple of simple additions for existing languages but
ended up in a big code refactoring bringing along nice improvements for language
developers.
For users
- Description of C++ has got new keywords from the upcoming [C++ 0x][] standard.
- Description of HTML has got new tags from [HTML 5][].
- CSS-styles have been unified to use consistent padding and also have lost
pop-outs with names of detected languages.
- [Igor Kalnitsky][ik] has sent two new language descriptions: CMake & VHDL.
This makes total number of languages supported by highlight.js to reach 35.
Bug fixes:
- Custom classes on
tags are not being overridden anymore containers:[c++ 0x]: http://ru.wikipedia.org/wiki/C%2B%2B0x
The most significant change is the ability to include language submodes right
under contains instead of defining explicit named submodes in the main array:
contains: [ 'string', 'number', {begin: '\\n', end: hljs.IMMEDIATE_RE} ]
This is useful for auxiliary modes needed only in one place to define parsing.
Note that such modes often don't have className and hence won't generate a
separate in the resulting markup. This is similar in effect to
noMarkup: true. All existing languages have been refactored accordingly.
Test file test.html has at last become a real test. Now it not only puts the detected language name under the code snippet but also tests if it matches the expected one. Test summary is displayed right above all language snippets.
Fine people at [Yandex][] agreed to host highlight.js on their big fast servers. [Link up][l]!
[yandex]: http://yandex.com/ [l]: http://softwaremaniacs.org/soft/highlight/en/download/
Though I'm on a vacation in Paris, I decided to release a new version with a couple of small fixes:
- Tomas Vitvar discovered that TAB replacement doesn't always work when used with custom markup in code
A long-awaited version is finally released.
New languages:
- Andrew Fedorov made a definition for Lua
[pl]: http://kung-fu-tzu.ru/
Fixes for existing languages:
- [Loren Segal][ls] reworked the Ruby definition and added highlighting for [YARD][] inline documentation
[ls]: http://gnuu.org/ [yard]: http://yardoc.org/
The highlighter has become more usable as a library allowing to do highlighting from initialization code of JS frameworks and in ajax methods (see. readme.eng.txt).
Also this version drops support for the [WordPress][wp] plugin. Everyone is welcome to [pick up its maintenance][p] if needed.
[wp]: http://wordpress.org/ [p]: http://bazaar.launchpad.net/~isagalaev/+junk/highlight/annotate/342/src/wp_highlight.js.php
- Jan Berkel has contributed a definition for Scala. +1 to hotness!
tags to avoid
Fixed escaping of quotes in VBScript strings.
This version brings a small change: now .ini-files allow digits, underscores and square brackets in key names.
Fixed small but upsetting bug in the packer which caused incorrect highlighting of explicitly specified languages. Thanks to Andrew Fedorov for precise diagnostics!
The version to fulfil old promises.
The most significant change is that highlight.js now preserves custom user markup in code along with its own highlighting markup. This means that now it's possible to use, say, links in code. Thanks to [Vladimir Dolzhenko][vd] for the [initial proposal][1] and for making a proof-of-concept patch.
Also in this version:
- [Vasily Polovnyov][vp] has sent a GitHub-like style and has implemented support for CSS @-rules and Ruby symbols.
[1]: http://softwaremaniacs.org/forum/highlightjs/6612/
- at last it's possible to replace indentation TABs with something sensible (e.g. 2 or 4 spaces)
This is one of those nice version consisting entirely of new and shiny contributions!
- [Vladimir Ermakov][vooon] created highlighting for AVR Assembler
[vooon]: http://vehq.ru/about/ [rukeba]: http://rukeba.com/ [drake]: http://drakeguan.org/ [ke]: http://k-evdokimenko.moikrug.ru/
The main change in the new major version of highlight.js is a mechanism for packing several languages along with the library itself into a single compressed file. Now sites using several languages will load considerably faster because the library won't dynamically include additional files while loading.
Also this version fixes a long-standing bug with Javascript highlighting that couldn't distinguish between regular expressions and division operations.
And as usually there were a couple of minor correctness fixes.
Great thanks to all contributors! Keep using highlight.js.
This version comes with two contributions from [Jason Diamond][jd]:
- language definition for C# (yes! it was a long-missed thing!)
Plus there are a couple of minor bug fixes for parsing HTML and XML attributes.
[jd]: http://jason.diamond.name/weblog/
The biggest news is highlighting for Lisp, courtesy of Vasily Polovnyov. It's somewhat experimental meaning that for highlighting "keywords" it doesn't use any pre-defined set of a Lisp dialect. Instead it tries to highlight first word in parentheses wherever it makes sense. I'd like to ask people programming in Lisp to confirm if it's a good idea and send feedback to [the forum][f].
Other changes:
- Smalltalk was excluded from DEFAULT_LANGUAGES to save traffic
and
)[f]: http://softwaremaniacs.org/forum/highlightjs/
Languages:
- Bash from Vah
Styles:
- Zenburn from Vladimir Epifanov, this is an imitation of a
In other news. [One small bug][bug] was fixed, built-in keywords were added for Python and C++ which improved auto-detection for the latter (it was shame that [my wife's blog][alenacpp] had issues with it from time to time). And lastly thanks go to Sam for getting rid of my stylistic comments in code that were getting in the way of [JSMin][].
[zenburn]: http://en.wikipedia.org/wiki/Zenburn [alenacpp]: http://alenacpp.blogspot.com/ [bug]: http://softwaremaniacs.org/forum/viewtopic.php?id=1823 [jsmin]: http://code.google.com/p/jsmin-php/
New major version is a result of vast refactoring and of many contributions.
Visible new features:
- Highlighting of embedded languages. Currently is implemented highlighting of Javascript and CSS inside HTML.
Invisible new features:
- Highlight.js no longer pollutes global namespace. Only one object and one
Changing of a major version number caused by a new format of language definition
A very nice version in my opinion fixing a number of small bugs and slightly increased speed in a couple of corner cases. Thanks to everybody who reports bugs in he [forum][f] and by email!
There is also a new language — XML. A custom XML formerly was detected as HTML
and didn't highlight custom tags. In this version I tried to make custom XML to
be detected and highlighted by its own rules. Which by the way include such
things as CDATA sections and processing instructions ( ... ?>).
[f]: http://softwaremaniacs.org/forum/viewforum.php?id=6
[Vladimir Gubarkov][xonix] has provided an interesting and useful addition. File export.html contains a little program that shows and allows to copy and paste an HTML code generated by the highlighter for any code snippet. This can be useful in situations when one can't use the script itself on a site.
[xonix]: http://xonixx.blogspot.com/
- Vladimir Gubarkov has described SmallTalk
Many thanks to you all!
Three new languages are available: Django templates, SQL and Axapta. The latter two are sent by [Dmitri Roudakov][1]. However I've almost entirely rewrote an SQL definition but I'd never started it be it from the ground up :-)
The engine itself has got a long awaited feature of grouping keywords ("keyword", "built-in function", "literal"). No more hacks!
[1]: http://roudakov.ru/
It is major mainly because now highlight.js has grown large and has become modular. Now when you pass it a list of languages to highlight it will dynamically load into a browser only those languages.
Also:
- Konstantin Evdokimenko of [RibKit][] project has created a highlighting for RenderMan Shading Language and RenderMan Interface Bytestream. Yay for more languages!
There is also a small backwards incompatible change in the new version. The function initHighlighting that was used to initialize highlighting instead of initHighlightingOnLoad a long time ago no longer works. If you by chance still use it — replace it with the new one.
[RibKit]: http://ribkit.sourceforge.net/
Highlight.js is a parser, not just a couple of regular expressions. That said I'm glad to announce that in the new version 2.9 has support for:
- in-string substitutions for Ruby -- #{...}`
A maintenance release with more tuned heuristics. Fully backwards compatible.
- Nikita Ledyaev presents highlighting for VBScript, yay!
Fixed bugs were rather unpleasant so I encourage everyone to upgrade!
- Peter Leonov provides another improved highlighting for Perl
Also highlight.js homepage now lists sites that use the library. Feel free to add your site by [dropping me a message][mail] until I find the time to build a submit form.
[mail]: mailto:Maniac@SoftwareManiacs.Org
This version fixes IE breakage in previous version. My apologies to all who have already downloaded that one!
- added highlighting for Javascript
- Ruby support by [Anton Kovalyov][ak]
[ak]: http://anton.kovalyov.net/
Version 1.0 of javascript syntax highlighter is released!
It's the first version available with English description. Feel free to post your comments and question to [highlight.js forum][forum]. And don't be afraid if you find there some fancy Cyrillic letters -- it's for Russian users too :-)
[forum]: http://softwaremaniacs.org/forum/viewforum.php?id=6