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.

EmEditor v21.9.0 released (including technical review)!

Today, we are releasing EmEditor v21.9.0.

A major feature of EmEditor Professional v21.9 is the enhancement of the CommitList (Git) plug-in by Makoto Emura. If you use Git to keep track of changes in your projects, you will probably start your work by checking changes in your working folder every morning. The updated plug-in will show you the list of changed files as well as staged changes in the sidebar, and double-clicking a file in the list will show the differences by opening the file as a comparison view. The enhancement also includes the improved speed of the File History display. Please see the video showing how the CommitList plug-in works.

EmEditor Professional and Free v21.9 improved the comparison result view in several ways. For instance, if multiple characters are different at separate places on a line, previous versions of EmEditor highlight all characters from the first difference to the last difference in dark green even if an identical string exists between the first and last characters. v21.9 highlights only the different characters dark green, and leave other characters light green, which was requested by several customers including this customer. In addition, another customer asked for the Next Changed Character and Previous Changed Character commands. These new commands along with the existing Next Change and Previous Change commands can be easily accessed through new buttons added to the document title areas when comparison was viewed in a split window. Moreover, if comparison results are shown in a split window, v21.9 dynamically updates comparison highlighting as you type in either side of the compared documents.

EmEditor Professional v21.9 includes several new CSV-related features, which were previously requested by several customers (1, 2, 3).

First, the Row Heading 1Row Heading 4 commands allow you to freeze one or more left columns. Alternatively, you can select the cell below the rows and to the right of the columns you want to freeze, and then select the Toggle Headings (Freeze Panes) command to freeze columns and rows.

Second, the Hide Columns and Unhide Columns commands allow you to hide certain CSV columns. To use this feature, right-click on a column heading you want to hide to show a popup menu, and select Hide Columns. To undo, select the left and right sides of the hidden column, right-click on a heading to show a popup menu, and select Unhide Columns. You can also right-click the top-left corner area, which selects all columns and displays a popup menu, then you can select the Unhide Columns to make all columns visible.

Moreover, a customer emailed me to ask for the ability to align columns right in CSV. Thus, I added the Align Right, Align Left, and Align Center commands. To use these commands, right-click on a column heading you want to align, a popup menu will be displayed, and select the Align Right, Align Left, or Align Center command. If the Align number columns right option is set in the CSV Options page of the Customize dialog box, number columns are right-aligned automatically when a CSV file is opened or when a CSV mode is selected.

Another customer asked for the ability to record the Extract Frequent Strings command to macros. Thus, v21.9 allows you to record this command to macros, and to script by using the ExtractFrequent method or the Selection object.

Finally, the default Main menu was redesigned to include the CSV popup menu item at the top. The CSV popup menu includes frequently used CSV-related commands so that you can access these commands easily without using toolbars. Moreover, new popup menus were added when you right-click a CSV column headings as well as the top-left corner area.

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 v21.9 New Features for details and screenshots.

This release also includes all bug fixes while developing v21.9.

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).

License price update

We have not changed the price of an annual subscription since we started annual subscription licensing. However, our expense cost continues to grow, and we need to adjust the price so that we can continue development and providing services to our customers. Therefore, we are going to increase the price of licenses. Taking effect on August 1, 2022, we are changing the first year price of an annual subscription license from US$39.99 to US$40.00, and a lifetime license from US$252 to US$260. The volume license prices will also be adjusted accordingly.

Please also see How to calculate the number of licenses.

We will continue development of EmEditor and providing support to our customers.

Thank you for using EmEditor!

EmEditor v21.8.1 released!

Today, we are releasing EmEditor v21.8.1.

v21.8.1 includes all bug fixes from v21.9 beta 1 (21.8.901) through beta 6 (21.8.906).

Please see EmEditor v21.8 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 v21.8.0 released (including technical review)!

Today, we are releasing EmEditor v21.8.0.

The previous version of EmEditor (v21.7) supported comparison and synchronized scrolling results in one split window. v21.8 improves the split window by showing document titles above documents in the split window so that it is easier to identify the left and right documents. When you resize or maximize a split window, the previous version did not adjust the split border position. The new version moves the split border proportionally as you resize the window. Moreover, v21.8 allows you to show two documents side-by-side in a split window without comparing or synchronize scrolling by selecting the Split View command on the Compare menu. All the above features are supported on EmEditor Professional and EmEditor Free.

A major feature of EmEditor Professional is the ability to include regular expressions (RegEx) and number range expressions (NumRange) for search strings when you use the Bulk Replace All feature that was previously implemented on v21.7. Several customers including this customer asked for this improvement. It becomes useful when you have many simple strings to search for, but you want to include a few RegEx or NumRange strings. Bulk Replace All works very fast if all search strings are non-RegEx and non-NumRange (None). Adding RegEx to the list of search strings will slow down the Bulk Replace All process significantly. Nevertheless, if you have only a few RegEx, Bulk Replace All is still faster than Batch Replace All.

If you mix search strings with RegEx or NumRange, Bulk Replace All will search all these strings simultaneously, but a conflict can occur. If a conflict occurs, (None) will get the highest priority. NumRange is the second priority, and RegEx is the last priority.

For instance, if you have three strings to search for:

RegEx: [1-3] → A
NumRange: [1, 2] → B
(None): 1 → C

and if the source document is

[ 1 2 3 ]

In this example, RegEx matches all 1, 2, and 3, NumRange matches 1 and 2, and (None) matches only 1. When Bulk Replace All finds 1, all of these expressions match 1. In this case, Bulk Replace All selects (None) because it has the highest priority. Next, when it finds 2, the NumRange and RegEx match 2. Bulk Replace All selects NumRange because it has a higher priority than RegEx. When it finds 3, only RegEx can match 3.

Therefore, the result will become:

[ C B A ]

This way, EmEditor optimizes the Bulk Replace All task for the speed. To improve the speed of Bulk Replace All furthermore, we recommend reducing the number of RegEx and NumRange search strings. For instance, if you have a simple group RegEx such as:

(x|y)

To improve the speed, you should expand it to two simple search strings:

x
y

v21.8 also supported RegEx and NumRange search strings for Bulk Find in the Batch Find in Files dialog box, and Bulk Replace All in the Batch Replace in Files dialog box.

Another new feature of v21.8 is the CommitList plug-in by Makoto Emura, which shows the commit history of a Git repo. It allows easy comparisons between files of different revisions. The current minimal feature set of the plug-in leaves an opportunity for your feedback to be reflected in future versions, so we would like to hear your feedback as to which features you would like to see in the plug-in.

A customer has asked for the ability to limit search files by their time stamp while working on Find in Files. Thus, we added the Oldest date modified and Newest date modified date boxes to the Advanced dialog box (Find in Files). If only the Oldest date modified is set, EmEditor searches files newer than the specified date. If only the Newest date modified is set, EmEditor searches files older than the specified date. If neither of them is set, EmEditor searches all files regardless of file dates.

Another customer has asked for the ability to extract all matches (not just one match) per line while Filter results are displayed. Thus, we added the Extract Options command to the menu displayed when you click on the Extract All button in the Filter toolbar. Selecting this command will bring up the Filter Extract Options dialog box, where you can select the Extract All matched strings option, and the Delimiter to separate matched strings.

Another customer has asked for the ability to record the Number of Additional Visible Lines Above/Below Matched Lines to macros. Thus, we added two more parameters to the Filter method of the Document object, where you can specify these numbers. If you already have macros that use the Filter method, and you want to display additional visible lines above/below matched lines, you might need to set these parameters to non-zero values, or -1 to instruct the Filter method to not change these values.

Finally, 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 v21.8 New Features for details and screenshots.

This release also includes all bug fixes while developing v21.8.

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.7.2 released!

Today, we are releasing EmEditor v21.7.2.

v21.7.2 includes all bug fixes from v21.8 beta 7 (21.7.907) through beta 11 (21.7.911).

Please see EmEditor v21.7 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 v21.7.1 released!

Today, we are releasing EmEditor v21.7.1.

v21.7.1 includes all bug fixes from v21.8 beta 1 (21.7.901) through beta 6 (21.7.906).

Please see EmEditor v21.7 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 v21.7.0 released (including technical review)!

Today, we are releasing EmEditor v21.7.0.

One of many requested features was to show comparison results in one split window, rather than in two tiled windows. This is now possible with v21.7. When you select a comparison command on the Compare menu, EmEditor will show comparison results in one split window. When you finish a comparison by selecting the Reset to Normal Mode command, EmEditor will revert to a normal tabbed window. The Synchronize Scrolling command will also behave the same. This feature is available on EmEditor Professional and EmEditor Free.

The previous version of EmEditor Professional (v21.6) allowed you to search for multiple strings simultaneously and quickly. The main feature of EmEditor Professional v21.7 is the ability to replace multiple strings simultaneously, and it was requested by several customers (1, 2). We call this new feature Bulk Replace All as opposed to the existing feature of Batch Replace All. The algorithm for Bulk Replace All is significantly different from Batch Replace All. Batch Replace All searches a whole document for one string at a time, and repeats this procedure for the number of search strings. Bulk Replace All searches for all search strings simultaneously. The difference may lead to different results if search/replace string pairs contain, for instance:

1 → 5
2 → 4
4 → 2
5 → 1

and if the source document is

[1,2,3,4,5]

In this case, if Batch Replace All is used, EmEditor will replace 1 with 5 for the whole document first, and then will replace 2 with 4. At this point, the source document becomes:

[5,4,3,4,5]

Next, when it replaces 4 with 2, note that it will replace two 4’s (the second and fourth numbers). Lastly, when it replaces 5 with 1, it will replace two 5’s (the first and last numbers). Thus, the result will be

[1,2,3,2,1]

If the new Bulk Replace All is used, EmEditor will replace all strings simultaneously. Therefore, the result will be:

[5,4,3,2,1]

as you expect.

Bulk Replace All will replace much faster than Batch Replace All. In my test, Bulk Replace All completed 6310 times faster than Batch Replace All when one million search/replace pairs existed.

The improved speed of Bulk Replace All allows for more types of uses. Suppose you need to call customers in your client list. However, there are millions of phone numbers in another list, which is a do-not-call list. You will need to make sure the client list does not contain any numbers in the do-not-call list. In this case, the previous version of EmEditor (v21.6) allowed you to search quickly for any do-not-call numbers in your client list. The new version of EmEditor (v21.7) not only finds but also replaces those matched numbers with other strings (or an empty string). Thus the new feature allows you to replace or remove any unwanted strings in a document quickly. Previously, this task could take several hours, if not days, to finish, depending on the number of search strings. Currently, Bulk Replace All does not support regular expressions, number ranges, or strings including newlines.

Finally, 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 v21.7 New Features for details and screenshots.

This release also includes the following bug/issue fix:

  • Fixed a bug where selecting All in Half-Width/Full-Width Conversion dialog box converts selection only in a CSV mode.
  • Fixed an issue related to the Cell toolbar while filtered.
  • The new version shows you a message box if the Read Only in Headings is set on the Delete/Cut Columns command rather than disabling these commands.
  • The new version enables conversion commands when a column is selected and the Read Only in Headings is set.
  • Fixed a bug where the Replace Expression did not parse \x{hhhhh} values correctly.
  • Fixed a bug where editor.QueryStatusByID(EEID_TOOLBAR1 + n) did not work correctly.
  • Fixed a v21.6 bug where a certain condition on filtering could crash EmEditor.
  • Fixed a v21.6 bug where Extract Replace might not have extracted all occurrences in a line.
  • Fixed customer-reported issues (1, 2).

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.6.1 released!

Today, we are releasing EmEditor v21.6.1.

Updates from v21.6.0 include:

  • Fixed a bug related to Script/General Category selections in the Character Check page of Configuration Properties.
  • Fixed a bug related to status bar messages.
  • The new version will not make the Filter box of the Filter toolbar read-only even when the Advanced Filter is active.
  • Fixed a bug where the Underline Color was not saved to a theme in the Display page of Configuration properties.
  • Reduced the program size by optimizing the code.
  • Fixed a certain Search Colors issue on v21.6.
  • Fixed a potential incorrect behavior on the Transpose command with a large file.
  • Fixed an issue where “A critical Error occurred while operating a file” message could appear immediately after saving a very large file.
  • Fixed a potential crash on saving a non-Unicode file on a machine where the number of logical processors is 1.
  • The new version allows you to use the eeExFindLinkFile flag to the Add, AddFind, and AddReplace methods of the Filters Collection.

Please see EmEditor v21.6 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).