Pro text/hex editor
with Binary Templates

What's New in Version 9.0

SweetScape Software is pleased to announce 010 Editor v9.0 which allows Syntax Highlighters to be shared via our online Template Repository. Syntax Highlighters are more powerful and can be selected using the Syntax: section above each text editor:

Highlighters for a number of different text formats will be added to the repository in the coming months including SQL, Java, JavaScript, Bash, etc. Version 9.0 adds a number of new character sets plus characters sets can be visualized, customized, imported and exported using the Character Sets page of the Options dialog:

Scripts and Templates can now call functions in an external DLL using the #link/#endlink syntax. For example to call a custom checksum function in the MyDLL.dll library the following could be used:

Plus much more. To download the latest version please click the following link:

See also:

Version 9.0.2 - April 26th, 2019

  • Fixed icon transparency for the Windows Explorer shell extension.
  • Fixed syntax highlighting for keywords (HighlightMatchKeyword) now finds the longest matching keyword instead of the shortest (e.g. 'background-repeat' vs 'background').
  • Fixed when 010 Editor is run as administrator on Windows, files could no longer be opened from the Windows Explorer shell extension. Now a new non-admin copy of 010 Editor is opened before the files are opened.
  • Fixed on Linux the IBus IME can now be used.
  • Fixed possible crash in Memcpy, StrCat and SubStr when using very large arrays.
  • Fixed possible memory overrun when downloading news.
  • Fixed when opening a text file from the command line containing a BOM, sometimes bytes were improperly selected at the beginning of the file.

Version 9.0.1 - December 5th, 2018

  • Fixed a number of cases when a Syntax Highlighter was not properly applied when a file was opened.
  • Fixed an error running a Syntax Highlighter when the first line of a file was blank.
  • Fixed using 'return' inside a struct which was declared in a function would cause an error in the function.
  • Fixed bookmarks created while the Bookmarks panel was hidden were not properly shown when the Boomkarks panel was displayed.
  • Fixed on Linux when using a dark theme, the category headings in the Repository dialog could not be read.
  • Fixed the 'Hide Characters over 127' toggle should always be turned off when a custom character set is created.
  • Fixed passing a very long line to a Syntax Highlighter could cause the software to slow down. Syntax Highlighters now only color up to the Maximum Line Length as set in the Text Editor Options.
  • Fixed a problem running a template on a template, or a script on a script using the File Bar (right-click on the File Bar to enable this).
  • Fixed the Sleep function on Linux/macOS was using microseconds instead of milliseconds.
  • Fixed the Variables tab was not always showing the results after running a script.
  • Added a warning when a very long line was encountered (over 100,000 bytes) and word wrap was turned on. These lines cannot currently be fully wrapped and this will be improved in the future.

Version 9.0 - October 10th, 2018

The following is an overview of the new functionality in version 9.0 of 010 Editor:

  • Syntax Highlighters can now be shared via our online template repository.
  • Syntax Highlighters are implemented as a function inside a Binary Template .bt file.
  • Syntax Highlighters can be run by clicking the Syntax: section in the File Bar just above each text editor or by clicking 'Templates > Syntax' on the main menu.
  • Added a number of new character sets and simple character sets can be customized, imported, or exported.
  • Scripts and Templates can now call functions in an external library (*.dll on Windows, *.so on Linux, *.dylib on macOS) using #link.
  • Now the last cursor position and scroll position for files are restored when 010 Editor is restarted.
  • Added Delete Line (Ctrl+Shift+Backspace) and Delete Blank Lines commands to the Format menu.
  • Triple-click to select by line and drag to select multiple lines.

The following is a list of all new features in version 9.0 of 010 Editor:

  • Syntax Highlighting
    • Syntax Highlighters can now be shared via our online template .
    • Syntax Highlighters are written in a different format than before and are implemented as a function inside a Binary Template bt file.
    • New Binary Templates XML.bt, CPP.bt, PHP.bt and HTML.bt are automatically installed to perform syntax highlighting for those formats and other Binary Templates will be added to the online repository soon.
    • Highlighting for 010 Editor Templates and Scripts is now performed with the 010.bt Binary Template.
    • Removed the 'View > Highlighting > Syntax Highlighting' menu.
    • Syntax Highlighters are now run by clicking the Syntax: section in the File Bar just above each text editor or by clicking 'Templates > Syntax' on the main menu.
    • Clear Syntax Highlighters from a file by clicking on the Syntax: section in the File Bar above a text editor and select '(none)'.
    • If a Syntax Highlighter is found in the repository to highlight the current file, a dialog will popup asking to install or ignore the file, similar to installing regular Binary Templates.
    • The Syntax page has been removed from the Options dialog.
    • When 010 Editor v9 is first run, any old custom Syntax Highlighters created with the Syntax page of the Options dialog are exported to XML files in the 'Documents\SweetScape\Old Syntax Highlighters' directory.
    • Old Syntax Highlighters must be converted manually to the new format and there is not yet an automated tool to do the conversion.
    • The new Syntax Highlighting method can handle a huge range of other text formats but requires some programming to implement.
    • SweetScape Software will be available to help with conversion of Syntax Highlighters for common text formats time permitting.
    • If Old Syntax Highlighters were exported, they can be exported again later by clicking the Export Old Syntax Highlighter button on the Highlights page of the Options dialog. If this button is not displayed then there are no Syntax Highlighters to export.
    • Syntax Highlighters are written by implementing the function HighlightLineRealtime inside a Binary Template. This function applies colors to a single line of text.
    • Highlighting can also be applied to binary files instead of text files by implementing the function HighlightBytesRealtime in a Binary Template.
    • Added new functions to help in the creation of Syntax Highlighters: HighlightFindStyle, HighlightGetStyleForeColor, HighlightGetStyleBackColor, HighlightAllowInstanceSharing, HighlightApplyStyle, HighlightApplyColor, HighlightGetNextToken, HighlightBuildKeywordList, HighlightMatchKeyword, HighlightMatchString, HighlightFindKeyword, HighlightFindString, HighlightCheckMultiLineRule, HighlightCheckCommentRule, HighlightCheckSingleLineRule, HighlightCheckKeywordRule, HighlightCheckTagRule, HighlightCheckTagTokenRule, HighlightColorPattern.
    • Some highlighting functions can do case insensitive matching by using the HIGHLIGHT_IGNORECASE constant.
    • Some highlighting functions can do regular expression matching by using the HIGHLIGHT_REGEX constant.
    • The HighlightFindStyle function has an option to create custom Syntax Styles if they do not yet exist.
    • Custom Syntax Styles now store separate colors for light and dark themes.
    • If instance sharing is turned on using the HighlightAllowInstanceSharing function then only one copy of the Syntax Highlighter is kept in memory and used for all open files of the target text format.
    • By default the Template Results panel is not shown when running a Binary Template that does syntax highlighting.
  • File Interfaces
    • Syntax Highlighting is no longer controlled via the current File Interface (View > Edit As).
    • Combined the old file interfaces XML and HTML into a single Tagged interface.
    • Combined the old file interfaces C/C++ and PHP into a single Code interface.
    • 'File > New' menu now controlled by clicking Manage New File Types... on the Editor page of the Options dialog.
    • Possible to show or hide different sections (e.g. Run Script, Run Template, Repository...) of the File Bar above each text or hex editor by right-clicking on the File Bar.
  • Character Sets
    • Added support for more character sets as well as custom character sets.
    • The 'View > Character Set' menu has been reorganized to show a list of common character sets, followed by a list of recently used characters, followed by the character sets sorted into Standard, International, and Custom categories.
    • Character sets can be viewed, customized, imported and exported using the new Character Sets page of the Options dialog.
    • Now per-file character sets can be set by turning off the 'View > Character Set > Use Default' toggle. If the Use Default toggle is on then the character set comes from the current File Interface.
    • When opening a file and a different character set is detected than the current File Interface has, the Use Default toggle will be turned off automatically (an example of this is opening a Unicode XML file).
    • If a different character set is chosen when the Use Default toggle is off, that character set will be remembered when the file is closed and opened again.
    • Added the following character sets:
      • Arabic (ISO) - ISO 8859-6
      • Baltic (ISO) - ISO 8859-13
      • Cyrillic (KOI8-R) - KOI8-R
      • Cyrillic (KOI8-U) - KOI8-U
      • Cyrillic (ISO) - ISO 8859-5
      • Eastern Europe (ISO) - ISO 8859-2
      • Greek (ISO) - ISO 8859-7
      • Hebrew (ISO) - ISO 8859-8
      • Japanese (EUC-JP) - EUC-JP
      • Japanese (ISO-2022-JP) - ISO 2022-JP
      • Turkish (ISO) - ISO 8859-9
    • Existing character sets Arabic, Baltic, Cyrillic, Eastern Europe, Greek, and Hebrew now have "(Windows)" appended to their name to show they are using the Windows code pages.
    • Japanese character set is now named 'Japanese (Shift_JIS)'.
    • Now just a single Korean character set EUC-KR is supported.
    • The Character Sets page of the Options dialog allows viewing character sets and creating custom character sets.
    • Character sets are displayed in a 16x16 table for easy visualization.
    • Information about different symbols is displayed in a tool tip when moving the mouse cursor over the character set table.
    • When viewing a complex (multi-byte) character set a horizontal scroll bar will appear to allow scrolling through the different pages.
    • The font of the character set table can be controlled by right-clicking on the table.
    • Simple character sets can be modified by clicking on a symbol in the character set table and selecting a different symbol using the Change Symbol dialog that pops up.
    • If attempting to modify a built-in characters set, the character set will be copied to a new custom character set before the modification is made.
    • Simple character sets can be exporting to a CSV file by clicking on the Export... button.
    • A simple character set can be imported by clicking the Import... button. The import format should be 256 numbers separated by commas, spaces, or tabs and the number -1 designates no change.
    • In the Change Symbol dialog click the Reset button to reset the character to the original value or enter a new Unicode code point U+XXXX in the edit field at the top right corner.
    • In the Character Sets page of the Options dialog enable the Show at Top Level toggle to display the character set at the top of the 'View > Character Sets' menu.
    • For custom character sets, the Encoding can be chosen to select which internal encoding this character set uses to convert bytes to characters.
    • Enable the Hide Characters over 127 toggle to hide the display of any character with Unicode code points over 127 (for example, this is used for the ASCII character set).
    • The text displayed in the status bar when a character set is active can be controlled using the Status Bar Indicator edit box.
    • An integer ID Number can be specified for custom character sets for use in scripting functions such as ConvertString.
    • New constants are available for the ConvertString function for the newly available build-in character sets.
    • Created character sets are available for conversion when using the 'Tools > Convert...' tool.
    • The Convert tool shows the character sets marked as Show at Top Level and recently used character sets at the top of the Target Character Set list.
    • After the Convert tool is run, the file may be assigned a per-file character set (i.e. the 'View > Character Set > Use Default' toggle is turned off and a different character set is assigned).
  • External Functions in DLLs
    • Templates and Scripts can now call functions in an external dynamic library.
    • Works with Windows DLLs (*.dll), Linux shared objects (*.so), or macOS DYLIB files (*.dylib).
    • All functions defined inside of a #link "<filename>" and #endlink directive are assumed to be located in an external library (note that no body can be defined for these functions).
    • The 32-bit version of 010 Editor should be used when linking to 32-bit external libraries and the 64-bit version of 010 Editor should be used when linking to 64-bit external libraries.
    • Supports passing regular integer variables, floats and doubles and arrays of these types to external functions.
    • Support passing strings or wstrings to external functions.
    • Supports return types of any regular integer variables, float, double, string or wstring.
    • Use & to pass variables as references (pointers are not currently allowed in scripts and templates).
    • Structs cannot currently be passed to external functions.
    • Templates must be granted ExecuteDLL permission before being allowed to call functions in an external library. See the Permissions page of the Options dialog.
  • Templates and Scripts
    • Templates and Scripts can now use functions in an external library (see External Functions in DLLs above).
    • Added support for time64_t including new functions StringToTime64T and Time64TToString.
    • The ImportFile function can now import Motorola with word-based addressing.
    • The default character set for Templates and Scripts for new installs of 010 Editor is now UTF-8 (the character set of existing installations of 010 Editor is not changed).
    • Syntax Highlighting is now done through Binary Templates.
    • Implement the HighlightLineRealtime function in a Template to provide syntax highlighting for a text file, or HighlightBytesRealtime function to provide highlighting for a binary file.
    • Added a variety of HighlightXXX functions to help with writing syntax highlighters.
    • Added new functions for testing the type of different characters: IsCharAlpha, IsCharAlphaW, IsCharNum, IsCharNumW, IsCharAlphaNum, IsCharAlphaNumW, IsCharSymbol, IsCharSymbolW, IsCharWhitespace, IsCharWhitespaceW.
  • General
    • Now the last cursor position and scroll position for files are restored when 010 Editor is restarted (this can be turned off using the Editor page of the Options dialog).
    • Added 'Format > Delete Line' command (Ctrl+Shift+Backspace shortcut by default).
    • Added Ctrl+Shift+N shortcut key to create a Hex file.
    • Triple-click the mouse to select a whole line in the text or hex editor.
    • Triple-click the mouse and drag to select by lines.
    • Added the 'Format > Delete Blank Lines' command to delete empty lines in a file or selection.
    • Added 'Format > Delete Left Word/Delete Right Word' to the format menu with shortcuts Ctrl+Backspace and Ctrl+Del.
    • Can export Motorola S19/S28/S37 hex data using word-based addressing (added Motorola Hex Address Format toggle to the Export Hex dialog).
    • Can import Motorola S19/S28/S37 hex data using word-based addressing (added Motorola Hex Address Format toggle to the Importing section of the Options dialog).
    • Added new 64-bit type time64_t to the Inspector (the new type has also been added to the Inspector.bt file).
    • Hid Unicode line in the Inspector as it could cause rare crashes when browsing large binary files. This can be re-enabled by choosing Use Custom Inspector in the Inspector Options and then editing the Inspector.bt file.
  • Options
    • Add new Character Sets page for organizing and customizing character sets.
    • Remove Syntax page as Syntax Highlighting is now done through Binary Templates.
    • Added Export Old Syntax Highlighter button on the Highlights page if old custom syntax highlighters are found.
    • On the Editor page added Show Startup Page when All Files are Closed toggle.
    • On the Editor page added Remember Last Cursor Position toggle.
    • 'File > New' menu is now controlled by clicking Manage New File Types... on the Editor page of the Options dialog.
    • Added ExecuteDLL permission to the Permissions page to allow Templates to execute functions in an external library.
    • On the Importing page added Motorola Hex Address Format radio buttons.
  • macOS
    • Fixed a problem on macOS opening files from the command line that contain spaces.
    • Fixed a problem using the Esc key to cancel certain operations on macOS.
    • Fixed a problem with the hex editor Auto-line width calculation on macOS.
    • Fixed an issue with the version number display in the macOS Finder on some versions of macOS.
    • Fixed on macOS the undo stack was being lost after saving a file in some cases.
  • Bugs
    • Fixed preprocessor symbol expansion was improperly expanding constants inside strings.
    • Fixed the Input Method Editor (IME) was not being displayed properly after certain operations.
    • Fixed a problem using the color picker in the Custom Colors section of the Find Bar Options dialog.
    • Fixed opening a file when a different character set is detected than is assigned in the current File Interface, then that file is assigned a per-file character set (for example if opening a Unicode XML file).
    • Fixed a crash with Copy As Text Area operation in certain cases.
    • Fixed an issue with the Portable version loading files from the command line when the application was already open.
    • Fixed an issue displaying non-printable characters in the text editor on some machines.
    • Fixed newly created Tool Bars where not being themed properly.
    • Fixed a crash assigning to structs in certain cases (should generate an error instead of crashing).
    • Fixing pressing Backspace when a selection was made and the cursor was at the beginning of the file was not deleting the selection.
    • Fixed clicking 'View > Template Results' may not properly show a hidden Template Results panel when moved to the right side.
    • Fixed an issue using Ctrl+C to copy text from the Output panel when text was selected in the main editor window.
    • Fixed name and password are now being encoded before being sent to our online server for license checks.
    • Fixed a problem using the FindAll and ReplaceAll functions using UTF-8.
    • Fixed in the Template Repository, clicking the View button does not properly focus the displayed file.
    • Fixed the Inspector when using a custom Template was not updating properly after FileNew was called in a script.
    • Fixed using unpadded bitfields could result in a zero sized variable in some cases.
    • Fixed a problem loading a custom theme that was imported.
    • Fixed a bug on Linux with unreadable white text in the help file when using a dark OS theme.
    • Fixed Copy Table command in the Checksum Results panel was only copying one column.
    • Fixed Copy as Rich Text Format now creates background colors in a format compatible with WordPad.

For a full list of changes in other versions of 010 Editor, please see the Release Notes.



Newsletter - Receive special offers, tips, tricks and news. Join now

010 Editor v15.0.1 is here!
What's new?



E-mail: info@sweetscape.com