EmEditor v22.2.1 released!

Today, we are releasing EmEditor v22.2.1.

v22.2.1 includes all bug fixes from beta 1 (22.2.901) to beta 3 (22.2.903).

Please see EmEditor v22.2 New Features for details and screenshots.

If you use the Desktop Installer version, you can select Check for Updates on the Help to download the newest version. If this method fails, please download the newest version, and run the downloaded installer. If you use the Desktop portable version, you can go to the Download page to download the newest version. The Store App versions can be updated through Microsoft Store (64-bit or 32-bit) after a few days.

EmEditor v22.2.0 released (including technical review)!

Today, we are releasing EmEditor v22.2.0.

We have received many crash reports since we improved the crash reporting feature on the previous version. Those crash reports helped us improve the reliability and robustness of EmEditor. We have looked into all the crash reports we have received, and allowed us to fix many issues that we wouldn’t be able to find otherwise. We thank all the users who submit their crash reports. We noticed that many crashes were caused by memory allocation failures due to a low memory situation. This situation could have been avoided if users had increased the virtual memory on their systems. v22.2 will show a message box indicating a low memory situation as well as a clickable URL to explain how to increase the virtual memory if the situation happens.

How to deal with out-of-memory situations

In the Advanced page of the Customize dialog box, a user can specify memory sizes used to open a large file. The larger are these sizes, the faster EmEditor performs, but if it is too large, it causes memory allocation failures. For instance, if you open a 1 GB file, specifying a little larger value than 1 GB in the Maximum Memory Size per File can make EmEditor perform best. In previous versions, these default values were determined only by physical memory size. However, the system with larger virtual memory should use more memory than those with smaller virtual memory. Therefore, v22.2 added a new option called Automatically manage all memory sizes. This option is turned on by default, and will look at the available virtual memory size as well as the physical memory size to determine optimal memory sizes.

Advanced page of Customize dialog

When we looked into crash reports, we also noticed that many crashes happened in a low memory situation while saving the Undo information. For instance, if a user opens a 10 GB file and selects one of the Sort commands, the whole 10 GB file will be saved to memory before sorting to provide the Undo feature by default. 10 GB is a significant amount of memory. I don’t believe many users would want the Undo information by sacrificing such a large memory space. EmEditor has an option called Always Discard Lengthy Undo Information to Accelerate to prevent this from happening, but this option is turned off by default. v22.2 adds this same option to the Progress window so that users could notice and turn it on more easily.

Progress window

In previous versions of EmEditor, if you opened a CSV file, EmEditor did not switch to a CSV mode until it finished loading the entire CSV file contents. v22.2 switches to a CSV mode when it opens only the first 1 MB of file contents if it detects a CSV mode. Moreover, the CSV syntax check is carried out in the background while you start viewing, scrolling, and searching the file in CSV mode (editing is disabled while CSV syntax check is in progress). The new CSV detection works even if embedded newlines exist in a CSV file.

v22.2 improved the speed of adjusting CSV separator positions, CSV syntax check, switching to the normal mode from a CSV mode, and various conversion and sort commands while working on a very large file. The speed improvements are more significant with the help of the aforementioned automatic memory size management. In our test, the Sort A to Z command became 4.69 times faster compared to v21.1.4 using 10 GB random ASCII file.

If you Find in Files and save the result file, and later open the file again, the hyperlinks in the file disappear. In previous versions, you needed to run a macro document.HighlightTag = true; to turn on the hyperlinks. V22.2 allows you to turn on the hyperlinks easily with the new command called Tag Links, and it is available under the View menu.

v22.2 added the \V expression to the Replacement Expression Syntax and allowed you to use the V8 JavaScript engine for replacement expressions. However, as I wrote in my previous technical review, using V8 expressions could cause EmEditor to behave slower than the previous \J expression (JScript), so I would recommend using the \V expression only when necessary.

\V expression – JavaScript (V8)

Finally, the CommitList plug-in, developed by Makoto Emura, was improved by adding the ability to Pull, Push, and Fetch commits as well as the ability to filter commit history by a Commit message, Author, ID (hash), or Tag.

Filter History dialog

I hope you like EmEditor, whether you use the Professional or Free version. Please contact us or write in forums if you have any questions, feature requests, or any ideas in the future.

Thank you for using EmEditor!
Yutaka Emura

Please see EmEditor v22.2 New Features for details and screenshots.

This release also includes all bug fixes while developing v22.0.

If you use the Desktop Installer version, you can select Check for Updates on the Help to download the newest version. If this method fails, please download the newest version, and run the downloaded installer. If you use the Desktop portable version, you can go to the Download page to download the newest version. The Store App versions can be updated through Microsoft Store (64-bit or 32-bit) after a few days. If you use winget, you can type “winget install emeditor” to install the latest version of EmEditor (64-bit or 32-bit detected automatically).

EmEditor v22.1.4 released!

Today, we are releasing EmEditor v22.1.4.

v22.1.4 includes all bug fixes at beta 6 (22.1.906).

Please see EmEditor v22.1 New Features for details and screenshots.

If you use the Desktop Installer version, you can select Check for Updates on the Help to download the newest version. If this method fails, please download the newest version, and run the downloaded installer. If you use the Desktop portable version, you can go to the Download page to download the newest version. The Store App versions can be updated through Microsoft Store (64-bit or 32-bit) after a few days. If you use winget, you can type “winget install emeditor” to install the latest version of EmEditor (64-bit or 32-bit detected automatically).

EmEditor v22.1.3 released!

Today, we are releasing EmEditor v22.1.3.

v22.1.3 includes all bug fixes from v22.2 beta 1 (22.1.901) through beta 5 (22.1.905).

Please see EmEditor v22.1 New Features for details and screenshots.

If you use the Desktop Installer version, you can select Check for Updates on the Help to download the newest version. If this method fails, please download the newest version, and run the downloaded installer. If you use the Desktop portable version, you can go to the Download page to download the newest version. The Store App versions can be updated through Microsoft Store (64-bit or 32-bit) after a few days. If you use winget, you can type “winget install emeditor” to install the latest version of EmEditor (64-bit or 32-bit detected automatically).

EmEditor v22.1.2 released!

Today, we are releasing EmEditor v22.1.2.

v22.1.2 includes the following updates:

  • Fixed a text rending issue.

Please see EmEditor v22.1 New Features for details and screenshots.

If you use the Desktop Installer version, you can select Check for Updates on the Help to download the newest version. If this method fails, please download the newest version, and run the downloaded installer. If you use the Desktop portable version, you can go to the Download page to download the newest version. The Store App versions can be updated through Microsoft Store (64-bit or 32-bit) after a few days. If you use winget, you can type “winget install emeditor” to install the latest version of EmEditor (64-bit or 32-bit detected automatically).

EmEditor v22.1.1 released!

Today, we are releasing EmEditor v22.1.1.

v22.1.1 includes the following updates:

  • Fixed an issue where some Snippets macros did not work if the Use V8 as JavaScript engine option is set.
  • Fixed an issue where line wrapping became very slow on certain files.
  • Fixed potential crashes when opening a very large file while memory is low.
  • Reverted the text rending position change made on v22.1.0.

Please see EmEditor v22.1 New Features for details and screenshots.

If you use the Desktop Installer version, you can select Check for Updates on the Help to download the newest version. If this method fails, please download the newest version, and run the downloaded installer. If you use the Desktop portable version, you can go to the Download page to download the newest version. The Store App versions can be updated through Microsoft Store (64-bit or 32-bit) after a few days. If you use winget, you can type “winget install emeditor” to install the latest version of EmEditor (64-bit or 32-bit detected automatically).

EmEditor v22.1.0 released (including technical review)!

Today, we are releasing EmEditor v22.1.0.

A major feature of EmEditor Professional v22.1 is support for modern JavaScript (also called ECMAScript) using the V8 JavaScript engine. This feature was requested by many customers (including 1). Previous versions of EmEditor used JScript, which was implemented based on the Active Scripting technology for Internet Explorer. While this had the advantage of supporting many other Active Scripting languages such as VBScript, PerlScript, PHPScript, Python, and RubyScript, it lacked support for the latest versions of JavaScript. EmEditor Professional v22.1 now supports modern JavaScript while still supporting old JScript and other Active Scripting languages.

By default, your JavaScript macros will still run using the old JScript engine. To use the V8 engine for your JavaScript macro, you can add the following line at the top of your macro:

#language="v8"

If you want to use V8 for all your JavaScript macros by default, you can select Customize on the Macros menu, and set the Use V8 as JavaScript engine option in the Options page. If you need to run a macro in JScript while selecting V8 as default, you can add the following line at the top of your JScript macro:

#language="JScript"

For more information, please see “FAQ: How do I use the V8 engine?”.

Support for modern JavaScript made it possible to use many third-party libraries. For instance, the Luxon library allows you to deal with dates and times easily like this:

#language="v8"
#include "luxon.min.js"
alert( luxon.DateTime.now().setZone('America/New_York').minus({weeks:1}).endOf('day').toISO() );

With the Currency.js library, you can do arithmetics with currencies without worrying about common floating point errors. For example,

#language="v8"
#include "currency.min.js"
var d = currency( 0 );
for( i = 0; i != 10000; ++i ) { 
    d = d.add( 0.01 );   // 10000 times $0.01
}
alert( "$" + d );  // result is $100.00 as expected. It might not be an expected result if currency.js is not used.

Currently, EmEditor macros don’t support JavaScript modules, thus you can’t use Node.js or the import keyword to import libraries. To use third-party libraries, you will have to download a library (usually with the .min.js extension), and include it using #include. For more information about using third-party libraries, please see “FAQ: How do you import libraries to a macro?”.

If you decide to run your existing macros as V8, please make sure all keywords are case-sensitively written. If your macro included:

redraw = false

You will need to rewrite it as:

Redraw = false

V8 doesn’t support the ActiveXObject object to create an object, which was supported by JScript. However, for commonly used methods, you can use newly added methods of the Shell object included in EmEditor macros instead. For instance, if your macro included:

fso = new ActiveXObject( "Scripting.FileSystemObject" );
if( fso.FileExists( filename ) ) {
    fso.DeleteFile( filename );
}

you will need to rewrite it as:

if( shell.FileExists( filename ) ) {
    shell.DeleteFile( filename );
}

Macros always run asynchronously on V8, and could become slower than JScript in some cases. Currently, the Use V8 as JavaScript engine option is turned off by default. This is due to some incompatibility issues with old JScript macros. Nevertheless, supporting modern JavaScript is inevitable, and V8 might become the default in future versions.

The support of V8 JavaScript engine was made possible by using the Microsoft Edge WebView2 control. The WebView2 control is included in recent versions of Windows 10/11. If V8 macros do not run on your computer, update your OS to the latest version of Windows 10/11, install the latest version of Microsoft Edge, or download and install the WebView2 runtime (Evergreen Bootstrapper or Standalone Installer).

The WebPreview plug-in also supports the WebView2 control to display HTML files using the Microsoft Edge browser. Unlike macros, this option is turned on by default, and you can select the browser engine in the WebPreview plug-in Properties.

EmEditor Professional v22.1 includes several new commands. One of them is called Sort/Remove Duplicate Split Strings in Selection. Suppose you have a list of words:

orange, banana, apple, banana, pineapple, apple

You can select these words and select the Sort/Remove Duplicate Split Strings in Selection command on the Sort menu. This will bring up the Sort Selection dialog box, where you can set the Remove duplicate split strings option, and choose Sort A to Z. The result will become:

apple, banana, orange, pineapple

In many cases, this command automatically detects the separator, in this case, “, ” (a comma and a space).

Another new command was introduced to deal with CSV columns. With the Sort Columns command, you can sort CSV columns at a specified line, usually the first line or heading. Previously, you could sort lines (rows) only. You can optionally remove duplicate columns (at a specified line) or remove columns with an empty cell (at a specified line).

The last new command, the Manage Columns command supersedes the previous Move/Copy Columns command. When you select the Manage Columns command on the right-click menu on the Column Header for CSV, the Manage Columns dialog box appears with a list of column headings. You can select one or more columns from the list, then drag and drop to move or rearrange the selected columns. You can also right-click on the list and select Copy and Paste to duplicate selected columns. Moreover, you can click the Delete button to delete the selected columns or click the Sort button to sort all the columns.

You can record operations using these new commands to macros. The Sort/Remove Duplicate Split Strings in Selection command will be recorded as the Sort method of the Selection object. For instance, if a selection contains words separated by a comma, the following code will sort the selection from A to Z.

document.selection.Sort( ",", "A+" );

The Manage Columns command will be recorded as the RearrangeColumns method of the Document object. For instance, the current CSV document contains 3 columns, the following code will move the first column to the right end of the document.

document.RearrangeColumns("2,3,1");

Finally for EmEditor Professional, the CommitList (Git) plug-in, developed by Makoto Emura, was updated by adding the ability to create commits, change branches, stage changes, and undo changes.

EmEditor Professional and Free v22.1 includes many new features from customers’ feedback. For instance, the new version supports a date format without separators (for instance, “yyyyMMdd”) in a number range. For instance, you can use a number range expression:

File[20221205 , 20221207 "yyyyMMdd" ].txt

to find, filter, or extract the following lines:

File20221205.txt
File20221206.txt
File20221207.txt

Makoto redesigned the Crash Report dialog box and added the ability to submit a crash report within from EmEditor Professional/Free. This reduces your burden to locate a crash report file and send it via email. We already feel positive about the new ability since we are already receiving many reports while developing beta versions, which allowed us to fix bugs before releasing this official version. We thank those who already sent us crash reports.

When we designed the Crash Report submission feature, we made sure that no personal information would be sent to us. In addition, you can decide whether to submit a crash report. If you don’t click or select the Submit button in the Crash Report dialog box, none of your data are submitted.

Finally, EmEditor Professional and Free v22.1 greatly improved the speed of counting the number of characters in a selection using multi-threaded code which is written by a SIMD instruction set. The number of characters in a selection is displayed in the status bar, and a Unicode surrogate pair is counted as one character.

Makoto came up with another idea which is to move our desktop installers and portable files from emeditor.com to emeditor.info. The new domain (emeditor.info) utilizes a content delivery network (CDN), which allows us to host and deliver files fast. This domain change might trigger an alert by some security software, but you can safely ignore and disable the alert due to the domain change.

I hope you like EmEditor, whether you use the Professional or Free version. Please contact us or write in forums if you have any questions, feature requests, or any ideas in the future.

Thank you for using EmEditor!
Yutaka Emura

Please see EmEditor v22.1 New Features for details and screenshots.

This release also includes all bug fixes while developing v22.0.

If you use the Desktop Installer version, you can select Check for Updates on the Help to download the newest version. If this method fails, please download the newest version, and run the downloaded installer. If you use the Desktop portable version, you can go to the Download page to download the newest version. The Store App versions can be updated through Microsoft Store (64-bit or 32-bit) after a few days. If you use winget, you can type “winget install emeditor” to install the latest version of EmEditor (64-bit or 32-bit detected automatically).

EmEditor v22.0.1 released!

Today, we are releasing EmEditor v22.0.1.

v22.0.1 includes following updates:

  • Worked around an issue where you couldn’t print only one specified page on Windows 11 Update (Version 22H2). For instance, printing while specifying page 3 in the Print dialog box actually printed page 1.
  • Fixed a bug where the Fuzzy Matching Options menu item existed in the menu displayed when you clicked on the > button in the Find/Replace dialog box in EmEditor Free. The Fuzzy Matching Options is available only on EmEditor Professional.
  • v22.0.0 always displays file extensions even if the Hide extensions for known file types option was turned on in File Explorer. This was reverted on v22.0.1.
  • Supported Emoji sequences including the variation selector (VS15) for text style (U+FE0E).
  • Fixed a pre-v22.0 issue where the Bulk Replace in CSV mode or multiple-selecitons might not have worked correctly.
  • Fixed a pre-v22.0 issue where the last newline might not have been copied if the last line is empty in the CSV cell selection mode.
  • Fixed a pre-v22.0 issue related to the Add Next Next Occurrence command while loading a very large file.
  • The new version will not display the EmEditor Launch time when the EmEditor Quick Start option is turned on.

Please see EmEditor v22.0 New Features for details and screenshots.

If you use the Desktop Installer version, you can select Check for Updates on the Help to download the newest version. If this method fails, please download the newest version, and run the downloaded installer. If you use the Desktop portable version, you can go to the Download page to download the newest version. The Store App versions can be updated through Microsoft Store (64-bit or 32-bit) after a few days. If you use winget, you can type “winget install emeditor” to install the latest version of EmEditor (64-bit or 32-bit detected automatically).

EmEditor v22.0.0 released (including technical review)!

Today, we are releasing EmEditor v22.0.0.

A major feature of EmEditor v22.0 is Fuzzy Matching, which is the ability to search, filter, and join CSV using approximate string matching, which is customizable in the Professional version. This feature was requested by several customers (1, 2, 3). The feature includes several options in EmEditor Professional while only the Match similar strings option is available in EmEditor Free. The Match similar strings option uses a string metric called Levenshtein distance or edit distance to calculate how similar two strings are. In other words, EmEditor compares two strings and counts how many steps you would need to edit from one string to reach the other string. For instance, if two strings are:

"fuzzx maching" and "fuzzy matching"

The fifth character “x” of the first string must be substituted for a “y”, and a “t” must be inserted before the 9th character “c”. Thus, the edit distance between these two strings becomes 2.

If you select the Fuzzy Matching check box in the Find dialog box of EmEditor Professional, the Fuzzy Matching Options dialog box appears, where you can use the Similarity level and Max edit distance options to determine how similar is a match. For instance, if the Similarity level is 3/4 (75%), up to the edit distance of 1 in every 4 characters is allowed to match, but not exceed the edit distance specified in the Max edit distance option. In other words, up to 1 edit distance is allowed to match if the length of a string is 4 or more, and up to 2 edit distance is allowed if the length of a string is 8 or more.

In EmEditor Professional, there are more options available in the Fuzzy Matching feature. All of the following options can be used without setting the aforementioned Match similar strings option. The Ignore nonspacing combining characters, such as diacritics, dakuten, and handakuten option is especially useful if you would like to ignore diacritics, dakuten, handakuten, and other nonspacing combining characters (except Emoji sequences which will be covered by another option). For instance, the option matches

"e" with "é"
"c" with "ç"
"ハ" with "パ"

When this option is selected, EmEditor applies Unicode Normalization Form D (Canonical Decomposition) to both strings before comparison and ignores nonspacing combining characters while comparing the strings.

The Ignore Emoji sequences option ignores Emoji sequences except the first code value of the sequence. For instance:

"👨‍🦰" (red hair man, U+1F468 U+200D U+1F9B0) 
and
"👨‍🦳" (white hair man, U+1F468 U+200D U+1F9B3) 

will not be differentiated.

The String/Character ranges option allows maximum flexibility in defining how similar strings are. For instance, if you specify a hyphen “-” to be treated as a space ” “, the following two strings will not be differentiated.

"fuzzy-matching" and "fuzzy matching"

If you specify an ampersand “&” to be ignored, the following two strings will not be differentiated.

"fuzzy" and "fu&zzy"

You may also specify a character range by selecting a Unicode script, Unicode General Category, minimum and maximum character code values, or a combination of these. For instance, if you specify Unicode General Categories “Pc,Pd,Pe,Pf,Pi,Po,Ps” to be ignored, all punctuations in strings are ignored. Thus, the following two strings will not be differentiated.

"Emurasoft, Inc." and "Emurasoft Inc"

There are more options available in the Fuzzy Matching Options dialog box. Please see the Help for more details.

If you use the Fuzzy Matching option in the Find or Filter command, the fuzzily matched but not identical strings are distinguished by blue wiggly underlines. A future version of EmEditor will display a tooltip to allow you to copy or fix these fuzzy strings if you hover the mouse pointer over these blue wiggly underlines.

You may use the Fuzzy Matching option in Find, Replace, Find in Files, Replace in Files, Batch Find, Batch Replace, Batch Find in Files, Batch Replace in Files, and Join CSV dialog boxes, and Find and Filter toolbars. The Fuzzy Matching Options are currently global app settings and shared through all these dialog boxes and toolbars.

If you use the Fuzzy Matching option in the Join CSV dialog box, you will be able to join two CSV documents with approximately matched strings. Suppose you have two CSV documents:

ID    Company
1     Emurasoft, Inc.
2     Microsoft Corporation
3     Apple Inc.
State    Company
CA       Apple Inc
WA       Microsoft Corp.
WA       Emurasoft Inc

You want to join these two CSV with the Company name. Previous versions of EmEditor could not join them correctly because “Emurasoft, Inc.” did not match “Emurasoft Inc”. The fuzzy matching allows you to specify punctuations to be ignored, and treat “Corp” as “Corporation”. Thus, the result will become:

ID    Company                 State   Company
1     Emurasoft, Inc.         WA      Emurasoft Inc
2     Microsoft Corporation   WA      Microsoft Corp.
3     Apple Inc.              CA      Apple Inc

You can also apply the Fuzzy Matching option to all search strings defined in the Batch Find or Batch Replace dialog box. To set or clear the Fuzzy Matching option to all the batch items, select all items in the batch list, right-click to display a menu, where you can toggle the Fuzzy Matching option. However, the Fuzzy Matching option slows down the search speed significantly if you have many search strings or a document is very large.

Other features of v22.0 include the ability to highlight MIME Encoded Words (Base64) used in email message headers, which was requested by a customer. For instance, if a message header contains the following lines:

Subject: =?UTF-8?B?W0VtRWRpdG9yICjjg4bjgq3jgrnjg4jjgqjjg4fjgqPjgr8pXQ==?=
 =?UTF-8?B?IOOCqOODs+OCs+ODvOODieOBruWumue+qeOBq+aXouWumuWIhui/veWKoA==?=

EmEditor will highlight these lines, and display a tooltip to allow you to reveal or copy the original string if you hover the mouse pointer over the header.

A customer asked for the ability to customize how a string in the Clipboard should be pasted. If you copy a string from a vertical selection and paste it to plain text, the result may not be exactly what you expect. In this case, click on the Clipboard icon which appears when you’ve pasted, then the Clipboard History window will appear. Right-clicking on the string you’ve just pasted will bring up a context menu, where you will be able to select the Insert as Characters, Insert as Lines, Insert as Vertical, or Insert as Cells command.

The default Main menu was redesigned again to include the Insert, Convert, Bookmarks, Sort, and Plug-ins popup menu items at the top. If your keyboard doesn’t include keys specifically used for diacritical characters, you might find the Diacritics submenu in the Insert menu useful when you need to type these characters without memorizing the corresponding shortcut keys. I hope you like these changes if you use the default Main menu, but you can always customize the menu by selecting Customize Menus on the Tools menu if you don’t like the default menu.

v22.0 supported Unicode 15.0. For instance, the following characters are new Emoji characters added to Unicode 15.0.

🫨 U+1FAE8 (SHAKING FACE)
🩷 U+1FA77 (PINK HEART)
🫎 U+1FACE (MOOSE)
🛜 U+1F6DC (WIRELESS)

While a font supporting Unicode 15.0 is necessary to display these above characters correctly, copying and pasting them into EmEditor, and using the Character Code Value command (Ctrl+I) while placing the cursor at the left side of each character will display its correct Unicode Name. The update affects the Unicode Name, Unicode Script, and Unicode General Category displayed by the Character Code Value command. It also affects the width of characters determined by East Asian Width and the Character Check feature. However, the update does NOT affect the Onigmo regular expression engine, which is currently still based on a previous version of Unicode.

Finally, the CommitList (Git) plug-in was updated by adding the ability to compare branches, and other improvements to make the plug-in easier to use.

I hope you like EmEditor, whether you use the Professional or Free version. Please contact us or write in forums if you have any questions, feature requests, or any ideas in the future.)

Thank you for using EmEditor!
Yutaka Emura

Please see EmEditor v22.0 New Features for details and screenshots.

This release also includes all bug fixes while developing v22.0.

If you use the Desktop Installer version, you can select Check for Updates on the Help to download the newest version. If this method fails, please download the newest version, and run the downloaded installer. If you use the Desktop portable version, you can go to the Download page to download the newest version. The Store App versions can be updated through Microsoft Store (64-bit or 32-bit) after a few days. If you use winget, you can type “winget install emeditor” to install the latest version of EmEditor (64-bit or 32-bit detected automatically).

EmEditor v21.9.1 released!

Today, we are releasing EmEditor v21.9.1.

v21.9.1 includes all bug fixes from v22.0 beta 1 (21.9.901) through beta 2 (21.9.902).

Please see EmEditor v21.9 New Features for details and screenshots.

If you use the Desktop Installer version, you can select Check for Updates on the Help to download the newest version. If this method fails, please download the newest version, and run the downloaded installer. If you use the Desktop portable version, you can go to the Download page to download the newest version. The Store App versions can be updated through Microsoft Store (64-bit or 32-bit) after a few days.