From 9d878f313984211a43f96cdafb20189a9fb2bac6 Mon Sep 17 00:00:00 2001 From: Coises Date: Sat, 28 Oct 2023 15:23:52 -0700 Subject: [PATCH] Update documentation, changelog, readme, source.txt and version info for 0.8, and rename "Clear counters and capture history" to "Clear History." --- CHANGELOG.md | 16 ++++++ README.md | 2 + help.htm | 109 ++++++++++++++++++++++++++++++++++------- source.txt | 35 ++++++++++++- src/ColumnsPlusPlus.rc | Bin 73998 -> 73990 bytes src/Search.cpp | 2 +- 6 files changed, 144 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 285e212..018ca84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Columns++ for Notepad++ -- Pre-releases +## Version 0.8-alpha -- October 28th, 2023 + +* References in formulas and sort keys to regular expression capture groups beyond 9 work now. + +* When matching regular expressions in column selections or search regions, lookbehind assertions do not recognize any text beyond the boundary of the selection within the row or the segment of the search region in which a match is attempted. (In previous versions of Columns++, as in Notepad++, the text potentially examined by lookbehind assertions always extended to the beginning of the document.) + +* Changed the way Search in indicated region behaves when no region is indicated, nothing is selected and a search is initiated; if Auto set is checked (the default), the search region is set to the entire document. The old behavior (raising a dialog requesting a rectangular selection) may be obtained by unchecking Auto set. + +* Made some refinements in how find and replace strings in Extended search mode are processed, including fixes for potential bugs and adding \U*xxxxxx* (note: capital U) accepting up to six hexadecimal digits to specify any valid Unicode code point. + +* Added dropdown arrows to the Count and Replace All buttons in Search in indicated region to support additional operations: Select All, Count Before, Count After, Select Before, Select After, Replace Before, Replace After and Clear History. + +* Regular expressions using \K will work for incremental find and replace in Search in indicated region providing focus does not leave the dialog between finding a match and replacing it. + +* Added an Align... command to the Columns++ menu to support aligning column text on any character, character string or regular expression. + ## Version 0.7.5-alpha -- October 17th, 2023 * When the user attempts to initiate a search with a multiple selection in which all selections are empty, show a message that a search region could not be constructed from the selection. Previous behavior was to become unresponsive, requiring the user to force-close Notepad++. Addresses issue #13. diff --git a/README.md b/README.md index 893d854..31a3842 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,8 @@ Like Notepad++, Columns++ is released under the GNU General Public License (eith Columns++ uses the [C++ Mathematical Expression Toolkit Library (ExprTk)](https://github.com/ArashPartow/exprtk) by Arash Partow (https://www.partow.net/), which is released under the [MIT License](https://www.opensource.org/licenses/MIT). +Columns++ uses the [Boost.Regex library](https://github.com/boostorg/regex/), which is released under the [Boost Software License, Version 1.0](https://www.boost.org/LICENSE_1_0.txt). + ## Purpose Columns++ is designed to provide some helpful functions for editing text or data that is lined up visually in columns, so that you can make a rectangular selection of the column(s) you want to process. diff --git a/help.htm b/help.htm index 1b0c12e..fd6c17f 100644 --- a/help.htm +++ b/help.htm @@ -53,7 +53,7 @@ main article section h2 {border-style: none none solid none; border-width: 0 0 1px 0;} main article section h2 {margin: 0 0 .3em -6px; padding: .2em 0 .2em 6px;} main article section h3 {border-style: none none solid none; border-width: 0 0 1px 0;} -main article section h3 {margin: .3em 0 .2em 0; padding: .2em 0 .1em 0; line-height: 1.2;} +main article section h3 {margin: .75em 0 .2em 0; padding: .2em 0 .1em 0; line-height: 1.2;} main article h1+section {margin-top: .75rem;} main article h1+p {margin-top: .6em;} main article section+p {margin-top: .75em;} @@ -88,8 +88,8 @@ table.justAlign td {border:none; padding: 0; font: inherit;} table.justAlign td+td {padding: 0 0 0 1em;} -ul.optionslist {margin-top: .5em; margin-bottom: .5em;} -ul.optionslist li {font-weight: bold;} +ul {margin: 0 0 .5em 0;} +ul li {margin: .25em 0;} span.mnemonic {color: #fff; background: #000; padding: 0 .2em; border-radius: .2em; font-size: .9em; font-weight: bold; display: inline-block;} @@ -143,6 +143,7 @@ Purpose and limitations Elastic tabstops Rectangular selections +Regular expressions Search Calculation Formulas @@ -262,9 +263,31 @@

Automatically enabling or disabling elastic tabstops

+

Regular expressions

+ +

Several commands in Columns++ can use regular expressions for matching character strings. Columns++ uses the same regular expression engine, Boost.Regex, used in Notepad++, so the syntax and behavior are mostly the same. Some considerations unique to Columns++ are described below.

+ +

Within a rectangular selection, the selection in each row is matched independently of the surrounding text. The ^ assertion matches the beginning of the selection within a row, the $ assertion matches the end of the selection, and lookahead and lookbehind assertions cannot examine text past the boundaries of the selection. (Lookbehind assertions in Notepad++ can examine all text back to the beginning of the document, even when counting or replacing in a selection.) When using the Search in indicated region dialog, the region to be searched can be made up of one or more separate segments, each of which is searched independently. When a rectangular selection initializes the search region, each row of the selection becomes a separate segment of the search region.

+ +

A rectangular selection enclosing a series of lines, or the entire document, is not the same as an ordinary selection encompassing the same series of lines, or the entire document. Rectangular selections do not include line endings, and each line is a separate selection when matching. This applies to search regions created from such selections for use in the Search in indicated region dialog, where it can be important to distinguish these two cases (which, unfortunately, appear the same visually).

+ +

Matches for regular expressions using the \K directive are never replaced when performing stepwise Find and Replace in Notepad++. In the Search in indicated region dialog in Columns++, such matches can be replaced if you do not click outside the dialog between finding the match and replacing it.

+ +

Regular expressions are matched as UTF-16 sequences for Unicode documents, and as byte sequences for other documents. (This is the same as in Notepad++.) Scintilla (the display control used in Notepad++) handles Unicode as UTF-8. When displaying Unicode documents that contain invalid UTF-8, Scintilla displays each byte that cannot be decoded as a hexadecimal code in reversed colors. When matching a regular expression, Columns++ processes each of these bytes as if it were the Unicode replacement character, U+FFFD (). Notepad++ ignores errors in Unicode text when matching regular expressions.

+ +
+