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

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

EmEditor v21.6.0 released (including technical review)!

Today, we are releasing EmEditor v21.6.0.

The previous version of EmEditor allowed you to visualize specified characters, but you had to specify character ranges by character code values if you selected the specified ranges option. This could become a tedious task when character code values of your interest are scattered all over the Unicode chart. The new version allows you to specify character ranges by Unicode Script and Unicode General Category. For instance, if you write only Latin text, it is a good idea to select the Latin (Latn) and Common (Zyyy) scripts, and set the Warn characters outside of the specified ranges option. You can combine Unicode Script with Unicode General Category. For instance, you can set

"Latn,Zyyy,Ll,Lu"

meaning Latin (Latn) OR Common (Zyyy) scripts AND lowercase letters (Ll) OR uppercase letters (Lu).

To make this feature possible, we have updated the Unicode database included in the EECommon.dll library to allow you to specify character ranges by Unicode Script and/or Unicode General Category. The new information is also included in a dialog box displayed when you select the Character Code Value command. The EECommon.dll library will not be loaded into memory until information is requested, so EmEditor load time will not affected by this feature addition. The EECommon.dll library was first developed by Makoto Emura.

EmEditor v21.1 supported all emoji sequences in Emoji Sequences and Emoji ZWJ Sequences, but they were not comprehensive and not future-proof if new emoji sequences are introduced in the future. The new version of EmEditor used the definition specified in Unicode Technical Standard #51 – Unicode Emoji to support all possible emoji. Supporting emoji means that these emoji characters are displayed correctly as long as they are supported by fonts, and the cursor movement around emoji is correct. While we were working on these changes, we updated the Unicode database to the latest version (Unicode v14.0.0).

A customer asked if it is possible to convert various date formats in a text file to one date format. EmEditor v21.3 supported date/time formats in Number Ranges. While this feature was useful for finding and filtering specific date/time ranges, it was useless if you need to convert them to one specific date/time format. The new version introduces \D and \T expressions to the Replace Expression Syntax. For instance, if you have a text file containing dates with various formats such as:

3/23/2022
03/23/2022
March 23,2022
Mar 23,2022
23-Mar-2022
2022-03-23
2022年3月23日

and if you want to convert all of these to one format “2022-03-22“, you can press CTRL+H to bring up the Replace dialog box, set the Number Range option, and enter:

Find:

[1/1/1900 , 1/1/2200 "M/d/yyyy|MM/dd/yyyy|MMMM d,yyyy|MMM d,yyyy|dd-MMM-yyyy|yyyy-MM-dd|yyyy年M月d日" ]

Replace with:

\Dyyyy-MM-dd

This Find expression will search for these formats between 1/1/1900 and 1/1/2200, and the matched dates are converted to the yyyy-MM-dd format.

While I was working on the replacement expression syntax, I also added new \Nc, \Nd, \NC, and \ND expressions to normalize strings, using the Unicode Normalization commands introduced on EmEditor v19.8. These new expressions are useful when you need to normalize characters that match certain search criteria.

All of the aforementioned features are supported on EmEditor Professional and EmEditor Free.

The main feature of EmEditor Professional v21.6 is significantly improved speeds of Advanced Filter and Multi-Find with many simple non-regex search strings. A customer asked if it was possible to search a file for 25 million phone numbers. This was not easy on earlier version of EmEditor because it became very slow when more than thousands of search strings are specified. I came up with a new algorithm for this situation, and optimized the code significantly so that it is now possible to accept 25 million search strings simultaneously. While I was working on this optimization, I also made it possible for Advanced Filter and Batch Find/Replace dialog boxes to accept a linked file. A linked file may contain multiple search strings separated by newlines. You can drag and drop a linked file from Explorer to the list box in Advanced Filter or Batch Find/Replace dialog box. You may also drag and drop a linked file to the Filter box on the Filter toolbar to start Advanced Filter immediately. A linked file makes it easier to maintain a set of search strings and to apply the changes instantly to Advanced Filter or Multi-Find. Since EmEditor internally sorts search strings (by length and by alphabetical order) before making searches, you can improve the speed by presorting your linked files. If you decide to presort linked files, set the Fast Binary Comparison and Stable Sort options in the Sort page of the Customize dialog box. The Ignore case option should be set if you don’t match case on Advanced Filter. Open a linked file, select Sort A to Z first, and then select Sort Shortest to Longest. Presorting linked files is not required, and will not change the search results, but will improve the speed.

Furthermore, the Extract All button on the Filter toolbar is now a drop-down button, and clicking the button will display a menu where you can select between the Extract All Lines and Extract Matched Strings commands. The Extract Matched Strings command will extract only one string per line if multiple strings are matched.

I also optimized the speed of the Join CSV command when the … contains …, … starts with …, or … ends with … conditions are selected, using the similar algorithm to the Advanced Filter command.

A customer requested a new option, which is the Selection Mode item in the Status page of the Customize dialog box. If this is set, the status bar indicates “Vertical” while the vertical selection mode is active, and “Lines” while the line selection mode is active.

A customer reported a crash while launching EmEditor, and sent me a crash report file. I looked into the crash report and found that EmEditor crashed by an out-of-memory situation due to a very large file history. This customer was setting 30000 days to the Save Cursor Position option and set the Never Clear Bookmarks option in the History page of the Customize dialog box. This caused a very large file history to be created. To prevent this kind of issue from happening, the new version removed the Never Clear Bookmarks check box, and limit the saving time of cursors and bookmarks to 100 days.

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

This release also includes the following bug/issue fix:

  • Fixed a bug where the Find Next/Previous Warning Character/Unicode command might have missed surrogate user-defined characters.
  • Fixed a bug where EmEditor could crash at the BatchReplace method if the batch array is empty.
  • Fixed issues related to Layouts.
  • Fixed a bug where the Find Next/Previous button in the Find dialog box did not work well with surrogate characters.
  • Fixed a bug where character spacing might become irregular.
  • Fixed a bug where the vertical scroll position might be at the bottom if a window is split vertically and when switching documents.
  • Fixed a bug where syntax errors appeared when opening certain CSV files but clicking the Check Syntax button cleared all the errors.
  • Fixed a v21.5 bug where EmEditor might have shown the “File changed by another program. Reload with changes?” message box sometimes when network files are opened.
  • Fixed customer-reported issues (1).

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

Today, we are releasing EmEditor v21.5.2.

Updates from v21.5.1 include:

  • Fixed a bug where EmEditor could freeze on certain emoji sequences if the Warn invisible characters option is turned on.
  • Fixed a pre-v21.5 issue where bookmarks could disappear on the Line Up/Down command.
  • The new version stops Find in Files if a regex error occurs.
  • Changed the behavior of the Word Left command when spaces following after a word.
  • Adjusted the vertical scroll position after the Encode/Decode Selection commands when lines are wrapped.
  • Fixed an issue where EmEditor could not stop macros at alert(), confirm(), prompt() methods if run asynchronously on some computers.
  • Fixed customer-reported issues (1).
  • Fixed a potential crash while opening XML files (avoided syntax check while reading a file).
  • Supported more Emoji ZWJ Sequences, and fixed behaviors of the character check.
  • Fix an issue where the In Selection Only option in the Find/Replace dialog box was set in sticky vertical selection mode even if only one line is selected.

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

Today, we are releasing EmEditor v21.5.1.

Updates from v21.5.0 include:

This release also includes the following bug/issue fix:

  • Fixed a bug where EmEditor could crash on the Find Next Warning Character/Unicode command.
  • Fixed customer-reported issues (1, 2, 3).

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