Matches the previous expression zero or more times
-
-
-
\
-
Escapes special characters
-
-
-
\Q...\E
-
Matches the characters between \Q and \E literally,
- suppressing the meaning of special characters.
-
-
-
[a-c]
-
Matches a, b and c
-
-
-
\d
-
Matches all digits
-
-
-
\w
-
Matches all word characters
-
-
-
\s
-
Matches all whitespace characters
-
-
-
^
-
Matches the start of a line
-
-
-
$
-
Matches the end of a line
-
-
-
\b
-
Matches a word boundary. Use this to search for whole words, e.g. \bword\b.
-
-
-
\x{FFFF}
-
Matches the unicode character 0xFFFF. Note: this only works for text files!
-
-
-
\xFF
-
Matches the character 0xFF
-
-
-
for replacing, the following placeholders can be used
-
-
-
$&
-
Outputs what matched the whole expression
-
-
-
$` or ${^PREMATCH}
-
Outputs the text between the end of the last match found (or the start of the
- text if no previous match was found), and the start of the current match
-
-
-
$' or ${^POSTMATCH}
-
Outputs all the text following the end of the current match
-
-
-
$+
-
Outputs what matched the last marked sub-expression in the regular expression
-
-
-
-
$n or ${n}
-
Outputs what matched the n'th sub-expression
-
-
-
$$
-
Outputs a literal '$'
-
-
-
$+{NAME}
-
Outputs whatever matched the sub-expression named "NAME"
-
-
-
${count08}
-
replaced with numbers starting from 1, incrementing by 1 for every match. The
- numbers after "count" are optional and indicate how many leading spaces the output should use, or if the
- number is preceded by a zero how many leading zeros.
-
-
-
${count08(start)}
-
same as ${count}, but with "start" as the start value for counting
-
-
-
${count08(start, increment)}
-
same as ${count(start)}, but with "increment" as the increment value
- instead of the default 1
-
-
-
${filepath}
-
replaced with the path of the currently searched file
-
-
-
${filename}
-
replaced with the name of the currently searched file. The name does not include
- the file extension
-
-
-
${fileext}
-
replaced with the extension of the currently searched file
-
-
-
${now}
-
replaced with the current date and time in the locale system format
-
-
-
${now}
-
replaced with the current date and time with the specified format.
- The format string must be in the format of the strftime c++ function. See https://www.cplusplus.com/reference/ctime/strftime/
- for the specs.
- Example: ${now,%A, %B %d, %Y} would print "Saturday, March 17, 2021"
- The tooltip on the replace text box shows the expanded string.
-
-
-
\a
-
Outputs the bell character: '\a'
-
-
-
\e
-
Outputs the ANSI escape character (code point 27)
-
-
-
\f
-
Outputs a form feed character: '\f'
-
-
-
\n
-
Outputs a newline character: '\n'
-
-
-
\r
-
Outputs a carriage return character: '\r'
-
-
-
\t
-
Outputs a tab character: '\t'
-
-
-
\v
-
Outputs a vertical tab character: '\v'
-
-
-
\xDD
-
Outputs the character whose hexadecimal code point is 0xDD
-
-
-
\x{DDDD}
-
Outputs the character whose hexadecimal code point is 0xDDDDD
-
-
-
\cX
-
Outputs the ANSI escape sequence "escape-X"
-
-
-
\D
-
If D is a decimal digit in the range 1-9, then outputs the text
- that matched sub-expression D
-
-
-
\l
-
Causes the next character to be outputted, to be output in lower case
-
-
-
\u
-
Causes the next character to be outputted, to be output in upper case
-
-
-
\L
-
Causes all subsequent characters to be output in lower case, until a \E is found
-
-
-
\U
-
Causes all subsequent characters to be output in upper case, until a \E is found
-
-
-
\E
-
Terminates a \L or \U sequence
-
-
-
-
-
-
-
-
-
diff --git a/grepWinNP3/src/Resources/infodlg.rtf b/grepWinNP3/src/Resources/infodlg.rtf
new file mode 100644
index 000000000..74154c566
--- /dev/null
+++ b/grepWinNP3/src/Resources/infodlg.rtf
@@ -0,0 +1,124 @@
+{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033\deflangfe1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri;}}
+{\colortbl ;\red0\green0\blue0;\red0\green0\blue255;\red0\green0\blue238;}
+{\*\generator Riched20 10.0.22000}{\*\mmathPr\mdispDef1\mwrapIndent1440 }\viewkind4\uc1
+\pard\widctlpar\fi-10\li-5\sa138\sl240\slmult1\cf1\f0\fs24 This help file shows only the basics of a regular expression search, and it's here only to show the flavor of the used regex.\par
+
+\pard\widctlpar\fi-10\li-5\sl240\slmult1 If you're not familiar with regular expressions, please consult a tutorial like {\cf0{\field{\*\fldinst{HYPERLINK https://www.regular-expressions.info/tutorial.html }}{\fldrslt{https://www.regular-expressions.info/tutorial.html\ul0\cf0}}}}\cf0\f0\fs24\par
+
+\pard\widctlpar\fi-10\li-5\sa138\sl240\slmult1\cf1\par
+
+\pard\widctlpar\sa160\sl252\slmult1\expndtw1\charscalex110 The\expndtw8 \expndtw1 Regex\expndtw8 \expndtw1 syntax\expndtw8 \expndtw1 is\expndtw8 \expndtw1 described\expndtw8 \expndtw1 in\expndtw8 \expndtw1 detail\expndtw7 \expndtw1 here:\line {\cf0\charscalex104{\field{\*\fldinst{HYPERLINK https://www.boost.org/doc/libs/release/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html }}{\fldrslt{https://www.boost.org/doc/libs/release/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html\ul0\cf0}}}}\expndtw0\charscalex0\f0\fs24\par
+\expndtw1\charscalex109 and\expndtw8 \expndtw1 all\expndtw7 \expndtw1 the\expndtw8 \expndtw1 possible\expndtw8 \expndtw1 character\expndtw8 \expndtw1 classes\expndtw8 \expndtw1 can\expndtw8 \expndtw1 be\expndtw8 \expndtw1 found\expndtw8 \expndtw1 here:\line {\cf0\charscalex105{\field{\*\fldinst{HYPERLINK https://www.boost.org/doc/libs/release/libs/regex/doc/html/boost_regex/syntax/character_classes.html }}{\fldrslt{https://www.boost.org/doc/libs/release/libs/regex/doc/html/boost_regex/syntax/character_classes.html\ul0\cf0}}}}\expndtw0\charscalex0\f0\fs24\par
+\trowd\trgaph134\trleft12\trrh612\trpaddl134\trpaddr134\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5114
+\pard\intbl\widctlpar\sl252\slmult1\b\fs36 Regular expression examples\b0\cell\row\trowd\trgaph134\trleft12\trrh396\trpaddl134\trpaddr134\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1704\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5116
+\pard\intbl\widctlpar\sl252\slmult1\fs24 .\cell Matches all characters\cell\row\trowd\trgaph134\trleft12\trrh588\trpaddl134\trpaddr134\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1704\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5116
+\pard\intbl\widctlpar\sl252\slmult1 +\cell Matches the previous expression one or more times\cell\row\trowd\trgaph134\trleft12\trrh588\trpaddl134\trpaddr134\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1704\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5116
+\pard\intbl\widctlpar\sl252\slmult1 *\cell Matches the previous expression zero or more times\cell\row\trowd\trgaph134\trleft12\trrh516\trpaddl134\trpaddr134\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1704\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5116
+\pard\intbl\widctlpar\sl252\slmult1\\\cell Escapes special characters\cell\row\trowd\trgaph134\trleft12\trrh780\trpaddl134\trpaddr134\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1704\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5116
+\pard\intbl\widctlpar\sl252\slmult1\\Q...\\E\cell
+\pard\intbl\widctlpar\ri155\sl252\slmult1\qj Matches the characters between \\Q and \\E literally, suppressing the meaning of special characters.\cell\row\trowd\trgaph134\trleft12\trrh516\trpaddl134\trpaddr134\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1704\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5116
+\pard\intbl\widctlpar\sl252\slmult1 [a-c]\cell Matches a, b and c\cell\row\trowd\trgaph134\trleft12\trrh516\trpaddl134\trpaddr134\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1704\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5116
+\pard\intbl\widctlpar\sl252\slmult1\\d\cell Matches all digits\cell\row\trowd\trgaph134\trleft12\trrh516\trpaddl134\trpaddr134\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1704\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5116
+\pard\intbl\widctlpar\sl252\slmult1\\w\cell Matches all word characters\cell\row\trowd\trgaph134\trleft12\trrh516\trpaddl134\trpaddr134\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1704\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5116
+\pard\intbl\widctlpar\sl252\slmult1\\s\cell Matches all whitespace characters\cell\row\trowd\trgaph134\trleft12\trrh408\trpaddl134\trpaddr134\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1704\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5116
+\pard\intbl\widctlpar\sl252\slmult1 ^\cell Matches the start of a line\cell\row\trowd\trgaph134\trleft12\trrh408\trpaddl134\trpaddr134\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1704\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5116
+\pard\intbl\widctlpar\sl252\slmult1 $\cell Matches the end of a line\cell\row\trowd\trgaph134\trleft12\trrh588\trpaddl134\trpaddr134\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1704\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5116
+\pard\intbl\widctlpar\sl252\slmult1\\b\cell Matches a word boundary. Use this to search for whole words, e.g. \\bword\\b.\cell\row\trowd\trgaph134\trleft12\trrh780\trpaddl134\trpaddr134\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1704\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5116
+\pard\intbl\widctlpar\sl252\slmult1\\x\{FFFF\}\cell Matches the unicode character\par
+0xFFFF. Note: this only works for text\par
+files!\cell\row\trowd\trgaph134\trleft12\trrh408\trpaddl134\trpaddr134\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1704\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5116
+\pard\intbl\widctlpar\sl252\slmult1\\xFF\cell Matches the character 0xFF\cell\row
+\pard\widctlpar\fi-10\li-5\sa138\sl240\slmult1\par
+for replacing, the following placeholders can be used\par
+\trowd\trgaph105\trleft6\trrh408\trpaddl105\trpaddr105\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1 $&\cell Outputs what matched the whole expression\cell\row\trowd\trgaph105\trleft6\trrh780\trpaddl105\trpaddr105\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1 $` or\par
+$\{^PREMATCH\}\cell Outputs the text between the end of the last match found (or the start of the text if no previous match was found), and the start of the current match\cell\row\trowd\trgaph105\trleft6\trrh588\trpaddl105\trpaddr105\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1 $' or\par
+$\{^POSTMATCH\}\cell Outputs all the text following the end of the current\par
+match\cell\row\trowd\trgaph105\trleft6\trrh588\trpaddl105\trpaddr105\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1 $+\cell Outputs what matched the last marked subexpression in the regular expression\cell\row\trowd\trgaph105\trleft6\trrh408\trpaddl105\trpaddr105\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1 $n or $\{n\}\cell Outputs what matched the n'th sub-expression\cell\row\trowd\trgaph105\trleft6\trrh408\trpaddl105\trpaddr105\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1 $$\cell Outputs a literal '$'\cell\row\trowd\trgaph105\trleft6\trrh588\trpaddl105\trpaddr105\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1 $+\{NAME\}\cell Outputs whatever matched the sub-expression named "NAME"\cell\row\trowd\trgaph105\trleft6\trrh1356\trpaddl105\trpaddr105\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1 $\{count08\}\cell
+\pard\intbl\widctlpar\ri4\sl252\slmult1 replaced with numbers starting from 1, incrementing by 1 for every match. The numbers after "count" are optional and indicate how many leading spaces the output should use, or if the number is preceded by a zero how many leading zeros.\cell\row\trowd\trgaph105\trleft6\trrh588\trpaddl105\trpaddr105\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1 $\{count08(start)\}\cell same as $\{count\}, but with "start" as the start value for counting\cell\row\trowd\trgaph102\trleft6\trrh588\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1\tx5207 $\{count08(start, increment)\}\cell
+\pard\intbl\widctlpar\ri35\sl252\slmult1 same as $\{count(start)\}, but with "increment" as the increment value instead of the default 1\cell\row\trowd\trgaph102\trleft6\trrh408\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1 $\{filepath\}\cell replaced with the path of the currently searched file\cell\row\trowd\trgaph102\trleft6\trrh588\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1 $\{filename\}\cell replaced with the name of the currently searched file. The name does not include the file extension\cell\row\trowd\trgaph102\trleft6\trrh588\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1 $\{fileext\}\cell replaced with the extension of the currently searched file\cell\row\trowd\trgaph102\trleft6\trrh588\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1 $\{now\}\cell
+\pard\intbl\widctlpar\ri28\sl252\slmult1 replaced with the current date and time in the locale system format\cell\row\trowd\trgaph102\trleft6\trrh1932\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1 $\{now\}\cell
+\pard\intbl\widctlpar\sl240\slmult1 replaced with the current date and time with the specified format. The format string must be in the format of the strftime c++ function. See {{\field{\*\fldinst{HYPERLINK "https://www.cplusplus.com/reference/ctime/strftime/"}}{\fldrslt{\ul\cf2\cf3\ul https://www.cplusplus.com/reference/ctime/strftime/ }}}}\f0\fs24 for the specs.\par
+
+\pard\intbl\widctlpar\sl252\slmult1 Example: $\{now,%A, %B %d, %Y\} would print\par
+"Saturday, March 17, 2021"\par
+The tooltip on the replace text box shows the expanded string.\cell\row\trowd\trgaph102\trleft6\trrh408\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1\\a\cell Outputs the bell character: '\\a'\cell\row\trowd\trgaph102\trleft6\trrh408\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1\\e\cell Outputs the ANSI escape character (code point 27)\cell\row\trowd\trgaph102\trleft6\trrh408\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1\\f\cell Outputs a form feed character: '\\f'\cell\row\trowd\trgaph102\trleft6\trrh408\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1\\n\cell Outputs a newline character: '\\n'\cell\row\trowd\trgaph102\trleft6\trrh408\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1\\r\cell Outputs a carriage return character: '\\r'\cell\row\trowd\trgaph102\trleft6\trrh408\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1\\t\cell Outputs a tab character: '\\t'\cell\row\trowd\trgaph102\trleft6\trrh408\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1\\v\cell Outputs a vertical tab character: '\\v'\cell\row\trowd\trgaph102\trleft6\trrh588\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1\\xDD\cell Outputs the character whose hexadecimal code point is 0xDD\cell\row\trowd\trgaph102\trleft6\trrh588\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1\\x\{DDDD\}\cell Outputs the character whose hexadecimal code point is 0xDDDDD\cell\row\trowd\trgaph102\trleft6\trrh408\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1\\cX\cell Outputs the ANSI escape sequence "escape-X"\cell\row\trowd\trgaph102\trleft6\trrh588\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1\\D\cell If D is a decimal digit in the range 1-9, then outputs the text that matched sub-expression D\cell\row\trowd\trgaph102\trleft6\trrh588\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1\\l\cell Causes the next character to be outputted, to be output in lower case\cell\row\trowd\trgaph102\trleft6\trrh588\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1\\u\cell Causes the next character to be outputted, to be output in upper case\cell\row\trowd\trgaph102\trleft6\trrh588\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1\\L\cell Causes all subsequent characters to be output in lower case, until a \\E is found\cell\row\trowd\trgaph102\trleft6\trrh588\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1\\U\cell Causes all subsequent characters to be output in upper case, until a \\E is found\cell\row\trowd\trgaph102\trleft6\trrh408\trpaddl102\trpaddr102\trpaddfl3\trpaddfr3
+\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx1458\clvertalc\clbrdrl\brdrw12\brdrs\brdrcf1\clbrdrt\brdrw12\brdrs\brdrcf1\clbrdrr\brdrw12\brdrs\brdrcf1\clbrdrb\brdrw12\brdrs\brdrcf1 \cellx5124
+\pard\intbl\widctlpar\sl252\slmult1\\E\cell Terminates a \\L or \\U sequence\cell\row
+\pard\widctlpar\li-96\ri4713\sl252\slmult1\fs16\par
+}
+
\ No newline at end of file
diff --git a/grepWinNP3/src/SearchDlg.cpp b/grepWinNP3/src/SearchDlg.cpp
index 250dd42dd..967289bed 100644
--- a/grepWinNP3/src/SearchDlg.cpp
+++ b/grepWinNP3/src/SearchDlg.cpp
@@ -34,7 +34,6 @@
#include "BookmarksDlg.h"
#include "MultiLineEditDlg.h"
#include "AboutDlg.h"
-#include "InfoDlg.h"
#include "DropFiles.h"
#include "RegexReplaceFormatter.h"
#include "LineData.h"
@@ -138,7 +137,6 @@ CSearchDlg::CSearchDlg(HWND hParent)
, m_bCaseSensitiveC(false)
, m_bDotMatchesNewline(false)
, m_bDotMatchesNewlineC(false)
- , m_bNotSearch(false)
, m_bCaptureSearch(false)
, m_bSizeC(false)
, m_endDialog(false)
@@ -831,7 +829,11 @@ LRESULT CSearchDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
break;
case WM_HELP:
{
- CInfoDlg::ShowDialog(*this, IDR_INFODLG, hResource);
+ if (m_rtfDialog == nullptr)
+ {
+ m_rtfDialog = std::make_unique();
+ }
+ m_rtfDialog->ShowModeless(g_hInst, *this, "grepWinNP3 help", IDR_INFODLG, L"RTF", IDI_GREPWIN, 400, 600);
}
break;
case WM_SYSCOMMAND:
@@ -1089,13 +1091,6 @@ LRESULT CSearchDlg::DoCommand(int id, int msg)
m_listItems.clear();
m_listItems.reserve(500000);
s_BackupAndTmpFiles.clear();
- if (m_searchString.empty())
- {
- // switch to file view
- CheckRadioButton(*this, IDC_RESULTFILES, IDC_RESULTCONTENT, IDC_RESULTFILES);
- m_showContent = false;
- InitResultList();
- }
HWND hListControl = GetDlgItem(*this, IDC_RESULTLIST);
ListView_SetItemCount(hListControl, 0);
@@ -1159,6 +1154,14 @@ LRESULT CSearchDlg::DoCommand(int id, int msg)
m_replaceString = ExpandString(m_replaceString);
}
+ if (m_searchString.empty() || IsNOTSearch())
+ {
+ // switch to file view
+ CheckRadioButton(*this, IDC_RESULTFILES, IDC_RESULTCONTENT, IDC_RESULTFILES);
+ m_showContent = false;
+ InitResultList();
+ }
+
InterlockedExchange(&s_SearchThreadRunning, TRUE);
InterlockedExchange(&s_Cancelled, FALSE);
SetDlgItemText(*this, IDOK, TranslatedString(hResource, IDS_STOP).c_str());
diff --git a/grepWinNP3/src/SearchDlg.h b/grepWinNP3/src/SearchDlg.h
index 86943d937..19432147c 100644
--- a/grepWinNP3/src/SearchDlg.h
+++ b/grepWinNP3/src/SearchDlg.h
@@ -26,6 +26,7 @@
#include "Registry.h"
#include "EditDoubleClick.h"
#include "StringUtils.h"
+#include "InfoRtfDialog.h"
#include
#include
#include
@@ -43,6 +44,7 @@
#endif
#include
+
using namespace Microsoft::WRL;
#define SEARCH_START (WM_APP+1)
@@ -227,7 +229,6 @@ private:
bool m_bCaseSensitiveC;
bool m_bDotMatchesNewline;
bool m_bDotMatchesNewlineC;
- bool m_bNotSearch;
bool m_bCaptureSearch;
bool m_bSizeC;
bool m_endDialog;
@@ -251,6 +252,7 @@ private:
bool m_bAscending;
std::wstring m_resultString;
std::wstring m_toolTipReplaceString;
+ std::unique_ptr m_rtfDialog;
bool m_bStayOnTop;
BYTE m_OpacityNoFocus;
diff --git a/grepWinNP3/src/last/version.h b/grepWinNP3/src/last/version.h
index ef0679761..ed639ee73 100644
--- a/grepWinNP3/src/last/version.h
+++ b/grepWinNP3/src/last/version.h
@@ -6,13 +6,13 @@
//#pragma message(__LOC__"Run the NAnt script to get proper version info")
-#define FILEVER 2, 1, 8, 40
-#define PRODUCTVER 2, 1, 8, 40
-#define STRFILEVER "2.1.8.40\0"
-#define STRPRODUCTVER "2.1.8.40\0"
+#define FILEVER 2, 1, 9, 41
+#define PRODUCTVER 2, 1, 9, 41
+#define STRFILEVER "2.1.9.41\0"
+#define STRPRODUCTVER "2.1.9.41\0"
#define GREPWIN_VERMAJOR 2
#define GREPWIN_VERMINOR 1
-#define GREPWIN_VERMICRO 8
-#define GREPWIN_VERBUILD 40
-#define GREPWIN_VERDATE "2021-10-19"
+#define GREPWIN_VERMICRO 9
+#define GREPWIN_VERBUILD 41
+#define GREPWIN_VERDATE "2021-11-30"
diff --git a/grepWinNP3/src/resource.h b/grepWinNP3/src/resource.h
index aa44ecdca..d242cc581 100644
--- a/grepWinNP3/src/resource.h
+++ b/grepWinNP3/src/resource.h
@@ -39,7 +39,6 @@
#define IDS_REGEXINVALID 132
#define IDC_BKPOPUP 133
#define IDS_SIZE 133
-#define IDR_INFODLG 134
#define IDS_LINE 134
#define IDD_ABOUT 135
#define IDS_MATCHES 135
@@ -50,6 +49,8 @@
#define IDD_SETTINGS 138
#define IDS_ENCODING 138
#define IDS_DATEMODIFIED 139
+#define IDR_RTF1 139
+#define IDR_INFODLG 139
#define IDS_SELECTEDITOR 140
#define IDS_OPENWITHEDITOR 141
#define IDS_OPENCONTAININGFOLDER 142
@@ -201,7 +202,7 @@
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC 1
-#define _APS_NEXT_RESOURCE_VALUE 139
+#define _APS_NEXT_RESOURCE_VALUE 140
#define _APS_NEXT_COMMAND_VALUE 32776
#define _APS_NEXT_CONTROL_VALUE 1092
#define _APS_NEXT_SYMED_VALUE 110
diff --git a/grepWinNP3/version.build.in b/grepWinNP3/version.build.in
index 924128827..9037b49d7 100644
--- a/grepWinNP3/version.build.in
+++ b/grepWinNP3/version.build.in
@@ -4,7 +4,7 @@
-
+
diff --git a/grepWinNP3/version.txt b/grepWinNP3/version.txt
index d0f87c181..59c8b9c71 100644
--- a/grepWinNP3/version.txt
+++ b/grepWinNP3/version.txt
@@ -1,2 +1,2 @@
-2.0.8.1054
+2.0.9.1098
https://tools.stefankueng.com/grepWin.html