Reincarnation of Crayon Syntax Highlighter. Syntax Highlighter supporting multiple languages, themes, fonts, highlighting from a URL, or post text.
Reincarnation of Crayon Syntax Highlighter. Somewhere in documentation and in UI it still shows like Crayon. Don’t be scrared of this.
Use special Urvanov Syntax Highlighter block in new posts. Don’t use standard Code block.
How to use the plugin:
A Syntax Highlighter built in PHP and jQuery that supports customizable languages and themes. It can highlight from a URL, or WordPress post text. Crayon makes it easy to manage Language files and define custom language elements with regular expressions. It also supports some neat features like:
Languages are defined in language files using Regular Expressions to capture elements. See the Crayon Language File Specification to learn how to make your own.
Default Language (one size fits all, highlights generic code)
Waimanu Solutions (http://daveblog.waimanu.web44.net/), USA
Andrew McDonnell (http://blog.oldcomputerjunk.net/), Australia
Perry Bonewell (http://pointatthemoon.co.uk/), United Kingdom
Nick Weisser (http://www.openstream.ch/), Switzerland
Installation
Download the .zip of the plugin and extract the contents.
Upload it to the WordPress plugin directory and activate the plugin.
Even easier, just go to Plugins > Add New and search for “Urvanov Syntax Highlighter”.
You can change settings and view help under Settings > Crayon in the WordPress Admin.
Make sure your theme either manually specifies jQuery, or uses the version shipped with WordPress (recommended). You should NOT print out jQuery manually in the header as a script tag. Enqueueing it in WordPresss will prevent duplicate jQuery includes (also bad) and will allow other scripts to be placed AFTER jQuery in the head tag so they can use it. If you’re uncertain, just let WordPress handle it and remove any jQuery script tags you find in your theme’s header.php.
Oll old Crayon inline and blocks should work by default.
Don’t use standard Code block in new posts. Use special Urvanov Syntax Highlighter block in Gutenberg editor.
Added interpolated expressions highlighting to JavaScript language.
Warnings about global comment variable in comment highlighting.
Minified min.js files.
2.8.34
ADDED
Added “Highlight code” setting in “Code” section of plugin settings.
FIXED
CSRF vulnerability in the theme editor and the tag editor. Added nonces.
Replaced deprecated jQuery “live” to jQuery “on”
2.8.33
FIXED
Copy button should work even without “Toggle plain text” button.
2.8.32
FIXED
Enabled “Copy” button for touch screens.
2.8.31
FIXED
Removed my_custom_render
2.8.30
FIXED
Made Urvanov_Syntax_Highlighter_Plugin::my_custom_render public and static.
2.8.29
FIXED
Check HTTP_USER_AGENT existance in $_SERVER array
2.8.28
ADDED
Green White theme from Di_Skyer (http://atlocal.net/)
Brasil Portuguese translation from Eric Sornoso (https://mealfan.com)
Zidingyi theme from seouc (http://www.seouc.com/)
FIXED
rob-stoecklein fix for KnowAll theme (https://github.com/urvanov-ru/crayon-syntax-highlighter/pull/37)
2.8.27
ADDED
New japanese translation from Jin Koyama (https://tabibitojin.com/).
2.8.26
FIXED
Copy button copied incorrect code for HTML entities.
2.8.25
ADDED
Fixed some links to help page
FIXED
Copy button text.
Line numbers copied when you copied page content
2.8.24
ADDED
Updated copy button behaviour
Turned back to jQuery ready function
updated readme
2.8.23
ADDED
Kotlin support
TypeScript support
2.8.22
ADDED
Basic example for a new block
FIXED:
error in JS log function
2.8.21
ADDED
Removing jQuery. Replaced jQuery.ready to DOMContentLoaded
2.8.20
FIXED
Simple release without any changes.
2.8.19
FIXED
Replaced version_compare to standart PHP function.
2.8.18
ADDED
More detailed log to version compare.
2.8.17
FIXED
Version compare additional check is_countable.
2.8.16
FIXED
Classic editor button should exists now.
2.8.15
FIXED
A non well formed numeric value with Custom Font Size unchecked
2.8.14
FIXED
Fix save post for REST API (For Gutenberg).
2.8.13
FIXED
Some broken urls.
2.8.12
FIXED
Site and donate url in class-urvanov-syntax-highlighter-global.php
Fix mark in readme.txt
“Open Code in New Window” syntax highlighting.
2.8.11
FIXED
[BUG] Languages parsed with errors
2.8.10
FIXED
Theme editor fixed.
Crayon themes support.
2.8.9
FIXED:
Deprecated: implode(): Passing glue string after array is deprecated. Swap the parameters
Notice: A non well formed numeric value in class-urvanov-syntax-highlighter-formatter
Bug report: when add \(*) in codes. It will show {{urvanov-syntax-highlighter-internal:0}}
2.8.8
FIXED:
Fix invisible button in TinyMCE editor.
Fix readme.txt
Fix readme.md
2.8.7
FIXED:
Only bug fixes with crayon inline.
2.8.6
ADDED:
Refactored to fit WordPress Code Codex.
Renamed to Urvanov Syntax Highlighter.
PHP 7 support
2.8.5
ADDED:
Verilog language, thanks to https://github.com/gdevic.
FIXED:
Moved header() call out of CrayonWP::highlight().
Renamed MIXED to ALTERNATE to fix compatibility with PHP7, thanks to https://github.com/edwarddekker.
2.8.4
ADDED:
CrayonWP::highlight() can return plain text instead of HTML. Used for AJAX requests to prevent XSS vulnerabilities.
FIXED:
Support for tags (e.g. formatting) in the HTML for CrayonWP::highlight(). This affects bbPress. Only script tags and event attributes are stripped.
2.8.3
FIXED:
header() use in CrayonWP::highlight()
2.8.2
ADDED:
Plain white theme (thanks to http://vhbelvadi.com).
2.8.1
ADDED:
Coy theme.
FIXED:
Strip tags in output content for CrayonWP::highlight()
2.8.0
ADDED:
Qtcreator theme.
Norwegian translation.
Amity theme.
Flat-UI theme.
Powershell theme.
Mm Dark Blue theme.
Prism Like theme.
Kaderu theme.
Kayote theme.
Xcode theme.
Source Code Pro font.
FIXED:
Polish translation and other fixes (thanks to https://github.com/rob006).
2.7.1
FIXED:
Bug causing sample code to give an error due to new restriction on loading local files.
2.7.0
ADDED:
Onderka15 theme.
Obsidian Light theme.
FIXED:
Prevented using is_admin() as a security query (thanks to g0blin Research).
Removed the ability to load files from the filesystem due to security vulnerabilities (thanks to Kevin Subileau). Ensure all URLs are publicly accessible.
Fixed a bug causing tags to be removed in some cases.
2.6.10
ADDED:
Option to load crayon script in the footer to improve loading performance (thanks to sumhat).
X3Info theme
Papyrus language
FIXED:
Support for nested multi-line strings in Swift language (thanks to nicolafiorillo).
SVN issue with old versions of JS and CSS resources being deployed instead of the latest from the dev repo.
2.6.7
ADDED:
Traditional Chinese translation (thanks to Arefly)
Converting tabs to spaces setting is now off by default. The original tab size setting is used with the tab-size CSS style instead to preserve tabs in the source.
“ignore:true” setting in the class of pre tags will prevent that code block from being parsed by Crayon.
Converting legacy tags now has an “encode” option. If selected, any legacy tag where the “decode” attribute is missing (neither true or false) has its code encoded and decode=”true” specified.
FIXED:
Removed fancybox_init.js and integrated into util.js, other minor improvements in loading Tag Editor
Improved expanding with shirt
Issues with expanding a single line, other minor issues.
Merged JS and PHP debugging toggle
Moved everything towards camelCase from underscores
Minor improvements to Objective-C
Numerous bug fixes and improvements!
1.17
ADDED:
Selected text in the TinyMCE editor is now added into the code box of the Tag Editor
Retina buttons for the toolbar
Support for WordPress 3.5
FIXED:
Removed fancybox_init.js and integrated into util.js, other minor improvements in loading Tag Editor
Disabling popup now removes the JS resource
Refactored Tag Editor functions
Display Tag Editor settings on the frontend wasn’t working
Removed contextual help and added more useful links, including online help
Checkboxes have labels instead of spans thanks to https://github.com/toszcze
Undefined php variable fix thanks to https://github.com/toszcze
Dimension fixes in js on hover
On iOS the fonts appeared larger for code than for line numbers.
Expanding code shrunk instead if the toolbar was visible
Updated Turkish
1.16
ADDED:
Expanding code beyond the page border on mouseover – enable the setting under Settings > Crayon > Code.
Expanding the code is delayed in the same way using the toolbar delay setting.
French translation
Portuguese translation
FIXED:
Carriage returns and new line characters were being treated differently and not being detected correctly. I’m using a new regex which detects both and also captures the line content: (?:^|(?<=\r\n|\n))[^\r\n]*
JS variable bugs when minifying with W3 Total Cache
CSS did not load in newly opened code window if minified
Saved comments did not capture Crayons until they were updated or the post list was refreshed in settings
Posts in settings are sorted now descending based on modified date
bbPress posts showed Crayons on the bottom of posts irrespective of their position in the post content.
Toggle plain code button appeared when plain code was disabled
Updated Turkish translation
1.15
ADDED:
The settings page no longer searches through all posts looking for legacy tags until you hit a new “refresh” button. Refreshing will look through all posts for crayon tags, and also mark any that are legacy tags. The same process occurs on an individual basis when saving a post.
The settings page shows which posts contains legacy tags, and the buttons do not hide when showing the table.
Fancybox issues have been fixed: http://aramk.com/blog/2012/11/28/initialising-fancybox-with-custom-objects/
max/min-height/width didn’t work on Tag Editor
Width discrepancy before and after mouseover from 1px border
Before and after whitespace didn’t display correctly
Code opened in a new window didn’t display if the current wp theme css was included
IE 8 compatibility issues
Dropdown of languages in settings and Tag Editor are now sorted by name, not id
By default “Display the Tag Editor in any TinyMCE instances on the frontend” is disabled to reduce resources
Chinese translation updated
1.14
All AJAX functions are now using the wp_ajax action and admin-ajax.php method defined here: https://codex.wordpress.org/AJAX_in_Plugins. This means Crayon no longer passes around the wp_load path and doesn’t use it as a $_GET variable to load AJAX requests. The security vulnerability in 1.13 is no longer present and that code has been removed.
font-size and line-height has been removed from the crayon style CSS and is specified using the settings screen – the custom font size is enabled at 12px. This allows you to disable the custom font size and allow your own CSS to take control of the sizing for you. With the custom size disabled the inherited size is applied, so the code will appear at the size of its parent element based on your wordpress theme.
Update functionality has been improved so the CrayonWP update function is only called when an update is detected from a change in the version string, not every time you load the page! If using lower than 1.14 the custom font size setting is enabled for you, since this setting was disabled by default in previous versions.
Fixed a bug preventing Tag Editor from showing on the front end (related to the AJAX fix)
Moved global js variables to the init functions which are called on ready()
Fancybox now uses “fancybox” as the script name and checks if another version is already queued
Fixed a bug where post previews were not displaying any Crayon code
Fixed an issue with code wrap not reverting when disabled
Fixed a bug causing code wrap from distorting the style of the popup
Fixed a bug where languages were parsed too late to pick up language modes
Updated German translation.
1.13.1
Fixed an bug with file paths on Windows causing false positives for the security checks needed to load AJAX requests; thanks to Andreas Giemza.
Fixed a bug in list_posts.php, also thanks to Andreas.
Added a more spaced classic theme, mostly for testing at the moment.
1.13
Added line wrapping.
Fixed a bug in converting tags.
Fixed a bug preventing Tag Editor from opening in HTML editor.
From now on, only the wp-admin will reveal your wordpress install directory.
The plain code now wraps based on the toggle setting.
Fixed a potential vulnerability when loading components through AJAX and a remote PHP file path is provided. Thanks to Charlie Eriksen via Secunia SVCRP.
Spanish updated
1.12.1
Fixed a bug with bbPress preventing posts from appearing.
1.12
Added ability to convert all legacy Crayon tags in blog posts and comments to <pre> tags, retaining all attributes. These are the accepted standard for the Tag Editor and they’re backwards compatible (if Crayon is off or you’re using another highlighter).
Added a button in the settings page to display the list of posts with Crayon tags
Fixed a bug causing posts with Crayon tags only in the comments (not the post content) to be ignored.
Added CSS class and white background to popup window
Removed noConflict() that was causing jQuery to fail on scripts that used $
Fixed an issue in the German translation causing “%gt;” (should be “&”) to be recognised as an argument in printf.
The new method for using the wp_load.php path provided through a GET request from Crayon’s js to its PHP should allow redefinitions WP directories in wp_config
Added Delphi/Pascal thanks to Chris McClenny (http://squashbrain.com/)
Added AppleScript
Language is automatically selected from the Tag Editor dropdown as you type a URL with an extension (e.g. typing “cs” would select “C#”)
Fixed a preventing language being detected from extension
Fixed a bug causing crayon:false to be ignored in the class tag
Cleaned up crayon’s js so it’s not possible to overwrite the jQuery instance
Fixed bug causing repeats of Crayon due to broken tags from using Mini Tags
Fixed isses with ignoring Mini Tags with $
Added Italian translation thanks to Federico Bellucci (http://www.federicobellucci.net/)
1.9.12
Fixed a bug caused by unescaped HTML elements in the plain code breaking the page markup, reverted to escaped and uses the new sanitisation method.
1.9.11
Fixed an issue with IE 8 throwing JS errors for setStyleProperty
Fixed yet another issue with \r\n causing incorrect span tags, refactored code.
1.9.10
Another fix regarding the \r\n line breaks
1.9.9
Fixed a bug caused when ensuring “\r\n” was present in 1.9.8. It was due to using ‘\r\n’ instead of “\r\n”.
1.9.8
New API to access Crayon internals
Added TeX thanks to http://blog.keyboardplaying.org/2012/06/08/syntax-highlighting-latex/
Moved update method into settings page to improve efficiency a bit
Fixed an issue causing HTML spaces to appear in plain code
Made sure \r\n was present for all line breaks in plain code
Fixed minor bugs in settings
1.9.7
Fixed a crucial but hard to spot bug causing Crayon code to break by incorrectly handling ignored Crayons
Added functions to generate Crayons when given Crayon tags in strings like the post content
Added width:100%; so CSS float works
Removed bit.ly links from this readme
1.9.6
Fixed a bug causing wordpress wp_content path customisations to break the tag editor and live preview
Fixed a bug with marked lines using ranges
1.9.5
Fixed a bug that prevent Crayons from being captured internally, only affected on certain themes
Fixed a bug causing backquotes being changed to code within Crayon code
1.9.4
Added /util/external_use.php for an example of how to use Crayon in other PHP environments.
Fixed issues with the excerpt, now Crayons are not stripped out by default, can be changed in Settings > Misc.
Fixed font-size issues that may conflict on some themes.
Crayons in comments now have their HTML entities decoded by default, specify “decode:false” in the class attr or decode=”false” as an attr if you don’t want it to decode.
Fixed a newline bug thanks to Eugene at http://iteye.ru/
1.9.3
Added Perl
Minor bugs fixed thanks to http://hahler.de
Fixed bug in js detecting PCs as Macs
Fixed IE bug preventing code from opening in a window
Fixed bug causing comment <p> tags being removed
1.9.2
Fixed an error preventing code containing HTML tags from being added using the Tag Editor in Visual mode
Fixed CSS for Mixed Highlighting (+)
Added a new theme thanks to http://blog.phiphou.com
1.9.1
Added Assembly (x86)
Standardised the toolbar buttons, now they use CSS spriting and have the same colour
Changed Theme CSS background to avoid conflicts with themes that affect TD tags
Fixed bug caused by discrepancies in how checkbox values were handled in Tag Editor
Fixed a bug causing $root variable to change on some setups, preventing tag editor from loading
1.9.0
This update is the biggest update yet – highly recommended for all users.
Added a brand new Tag Editor in the Visual Editor toolbar! Greatly simplifies adding code to posts in the Visual Editor. You can also switch between Visual and HTML modes to verify your code before posting!
Added ability to decode HTML entities, so now you can use <, > etc. in the Visual Editor. But if you need indentation etc, you’ll want to use the HTML editor for posts with Crayons. You can also use decode=”yes/no/true/false” to set this for an individual Crayon.
Added ability to decode attributes, which is enabled by default to avoid seeing encoded strings in the title, and also to allow encoded angle/square brackets in the title that would otherwise clash with the Crayon tag brackets if left unencoded.
Added ability to use the class attribute in <pre> tags for specifying settings like url, mark, lang, toolbar and all other valid settings like in a normal [crayon] tag. This will ensure your <pre> tags remain valid XHTML markup even with Crayon disabled.
Added ability to specify hyphen-separated-values in the class attribute of a <pre> tag to make them look like actual class selectors. E.g. <pre class=”lang-objc toolbar-false”>…</pre>. The setting name is made up of letters and hyphens ONLY, the value is whatever is left between the last hyphen and the next whitespace character.
Added Scheme language thanks to https://github.com/harry75369
Added ABAP language with help from Christian Fein
Added a new setting: crayon=”false/no/0″ as an attribute or crayon:false in the class tag of a <pre>. …