<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[FunctionList help]]></title><description><![CDATA[<p dir="auto">I have created structure to my code to make it easier to organize/navigate.  I would like to capture the structure within the FunctionList for easier navigation. The just cant get the functionlist syntax to create it myself wondering if you can assist.</p>
<ul>
<li><strong>class name:</strong>   SCSFExport scsf_&lt;capture this text as class&gt;(SCStudyInterfaceRef sc)</li>
<li><strong>function name:</strong>   //reg @&lt;capture this text as function to class&gt;</li>
<li><strong>comments</strong>:   // or /* */</li>
</ul>
<p dir="auto">so the code below should return this structure.</p>
<p dir="auto">ClassNameExample<br />
– chartSettings<br />
– defaultSettings<br />
– create_NewOrders<br />
AnotherClassName<br />
– BuyOrders<br />
– SellOrders</p>
<hr />
<p dir="auto">SCSFExport scsf_<strong>ClassNameExample</strong>(SCStudyInterfaceRef sc)</p>
<p dir="auto">//reg @chartSettings<br />
&lt;code to process&gt;<br />
//end</p>
<p dir="auto">//reg @defaultSettings<br />
&lt;code to process&gt;<br />
//end</p>
<p dir="auto">//reg @Create_NewOrders<br />
&lt;code to process&gt;<br />
//end</p>
<hr />
<p dir="auto">SCSFExport scsf_<strong>AnotherClassName</strong>(SCStudyInterfaceRef sc)</p>
<p dir="auto">//reg @BuyOrders<br />
&lt;code to process&gt;<br />
//end<br />
//reg @SellOrders<br />
&lt;code to process&gt;<br />
//end</p>
]]></description><link>https://community.notepad-plus-plus.org/topic/19948/functionlist-help</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 11:14:16 GMT</lastBuildDate><atom:link href="https://community.notepad-plus-plus.org/topic/19948.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Sep 2020 22:11:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to FunctionList help on Fri, 11 Sep 2020 15:31:19 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/guy038" aria-label="Profile: guy038">@<bdi>guy038</bdi></a> said in <a href="/post/57529">FunctionList help</a>:</p>
<blockquote>
<p dir="auto">I realized that my nice theory is, most of the time, rather useless</p>
</blockquote>
<p dir="auto">So I guess I am confused by this.</p>
<blockquote>
<p dir="auto">Just select all this text… (and further instructions)</p>
</blockquote>
<p dir="auto">Yes, but isn’t it often the case that you don’t have handy such an exact text you need to search for?</p>
<p dir="auto">Maybe you need to search for a certain character, and all you have is its code.  Example, the cheese wedge from before.  You may immediately know that it is <code>\x{1F9C0}</code> but that’s all you know and you want to search for it.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/57550</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/57550</guid><dc:creator><![CDATA[Alan Kilborn]]></dc:creator><pubDate>Fri, 11 Sep 2020 15:31:19 GMT</pubDate></item><item><title><![CDATA[Reply to FunctionList help on Thu, 10 Sep 2020 23:32:33 GMT]]></title><description><![CDATA[<p dir="auto">Hi, <strong>all</strong>,</p>
<p dir="auto">Arrrrrrh ! My God ! Right after posting, I realized that my nice <strong>theory</strong> is, <strong>most</strong> of the time, rather <strong>useless</strong> :-(</p>
<p dir="auto">Really, using the <strong>example</strong>, given in my <strong>previous</strong> post :</p>
<pre><code class="language-z">Here are some pictographs, with code-point over \x{FFFF} : The INITIAL U+10000 char (old Greek syllable) 𐀀 — the roman "siliqua" coin 𐆕 — An eighth note 𝅘𝅥𝅮 — the ace of spades 🂡 — the Earth globe 🌍 — Father Christmas 🎅 — a grinning face 😀 — a round target 🞋 — an upwards heavy arrow 🡅 — a cheese wedge 🧀 — the private-use U+FFFFD char 󿿽 and the FINAL private-use U+10FFFD char 􏿽
</code></pre>
<ul>
<li>
<p dir="auto">Just <strong>select</strong> all this text</p>
</li>
<li>
<p dir="auto">Open the <strong>Find</strong> dialog ( <strong><code>Ctrl + F</code></strong> )</p>
</li>
<li>
<p dir="auto">Choose the <strong><code>Normal</code></strong> search mode</p>
</li>
<li>
<p dir="auto">Click on the <strong><code>Find Next</code></strong> button to find <strong>any other</strong> occurrence of that text !</p>
</li>
</ul>
<p dir="auto">Also, the <strong>interest</strong> of my demonstration is rather <strong>limited</strong>, isn’t it?</p>
<p dir="auto">Cheers,</p>
<p dir="auto">guy038</p>
]]></description><link>https://community.notepad-plus-plus.org/post/57529</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/57529</guid><dc:creator><![CDATA[guy038]]></dc:creator><pubDate>Thu, 10 Sep 2020 23:32:33 GMT</pubDate></item><item><title><![CDATA[Reply to FunctionList help on Thu, 10 Sep 2020 22:54:59 GMT]]></title><description><![CDATA[<p dir="auto">Hi, <a class="plugin-mentions-user plugin-mentions-a" href="/user/jr" aria-label="Profile: JR">@<bdi>JR</bdi></a>, <a class="plugin-mentions-user plugin-mentions-a" href="/user/peterjones" aria-label="Profile: Peterjones">@<bdi>Peterjones</bdi></a>, <a class="plugin-mentions-user plugin-mentions-a" href="/user/alan-kilborn" aria-label="Profile: alan-kilborn">@<bdi>alan-kilborn</bdi></a> and <strong>All</strong>,</p>
<p dir="auto">While testing the <strong>regex tester</strong> software, provided by <a class="plugin-mentions-user plugin-mentions-a" href="/user/jr" aria-label="Profile: JR">@<bdi>JR</bdi></a>, I wanted to <strong>verify</strong> if it knew the <strong><code>\x{hhhhh}</code></strong> syntax in order to search any character with code-point <strong>over</strong> <strong><code>\x{FFFF}</code></strong> as I know that the <strong>N++ Boost</strong> regex engine does <strong>not</strong> know this one :-((</p>
<p dir="auto">Unfortunately, it does <strong>not</strong> know this syntax, as well ! But, then, I remembered that Notepad++ can use the <strong>surrogates</strong> mechanism, to search for <strong>all</strong> characters which lie <strong>outside</strong> the <strong>Basic Multilingual Plane</strong> ( <strong>BMP</strong> ) ! And the <strong>Boost Regex Playground</strong> software, too !</p>
<hr />
<p dir="auto">For a <strong>full</strong> explanation about the <strong>two 16-bits</strong> code units, called a <strong>surrogates pair</strong>, refer to :</p>
<p dir="auto"><a href="https://en.wikipedia.org/wiki/UTF-16#Code_points_from_U+010000_to_U+10FFFF" rel="nofollow ugc">https://en.wikipedia.org/wiki/UTF-16#Code_points_from_U+010000_to_U+10FFFF</a></p>
<p dir="auto">For the <strong>calculus</strong> of the <strong>surrogates pair</strong> of a <strong>specific</strong> character, refer, either , to  :</p>
<p dir="auto"><a href="http://www.russellcottrell.com/greek/utilities/SurrogatePairCalculator.htm" rel="nofollow ugc">http://www.russellcottrell.com/greek/utilities/SurrogatePairCalculator.htm</a></p>
<p dir="auto"><a href="http://www.cogsci.ed.ac.uk/~richard/utf-8.cgi" rel="nofollow ugc">http://www.cogsci.ed.ac.uk/~richard/utf-8.cgi</a>?</p>
<p dir="auto">The <strong>surrogate pair</strong> of a character, with code-point in  range from <strong><code>\x{10000}</code></strong> till <strong><code>\x{10FFFF}</code></strong>, can be described by the regex :</p>
<p dir="auto"><strong><code>\x{hhhh}\x{iiii}</code></strong>    where <strong><code>D800</code></strong> &lt; <strong>hhhh</strong> &lt; <strong><code>DBFF</code></strong>    and    <strong><code>DC00</code></strong> &lt; <strong>iiii</strong> &lt; <strong><code>DFFF</code></strong></p>
<p dir="auto">For instance, the <strong>pictograph</strong> 🧀 ( A cheese wedge ), of code-point <strong><code>\x{1F9C0}</code></strong> <strong>cannot</strong> be searched with this syntax. As its <strong>surrogates pair</strong> is <strong><code>D83E + DDC0</code></strong>, we can searched this <strong>specific</strong> character from within N++, with the regex syntax <strong><code>\x{D83E}\x{DDC0}</code></strong></p>
<p dir="auto">If we use the <strong>free-spacing</strong> mode, for a <strong>better</strong> visibility, we may note that <strong>two</strong> syntaxes, only, are <strong>correct</strong> !</p>
<pre><code class="language-z">(?x) [\x{D83E}] [\x{DDC0}]  #  Wrong   syntax
(?x) [\x{D83E}]  \x{DDC0}   #  Wrong   syntax
(?x)  \x{D83E}  [\x{DDC0}]  #  CORRECT syntax
(?x)  \x{D83E}   \x{DDC0}   #  CORRECT syntax
</code></pre>
<p dir="auto">In order to match <strong>any</strong> character <strong>outside</strong> the <strong>BMP</strong>, use one of the <strong>two general</strong> syntaxes, below :</p>
<ul>
<li>
<p dir="auto"><strong><code>.[\x{DC00}-\x{DFFF}]</code></strong>    which begins with a <strong>dot</strong> symbol</p>
</li>
<li>
<p dir="auto"><strong><code>[^\x{0000}-\x{D7FF}\x{E000}-\x{FFFF}]</code></strong>    as the <strong>surrogates</strong> zone lies between <strong><code>\xD800</code></strong> and <strong><code>\xDFFF</code></strong></p>
</li>
</ul>
<p dir="auto">Strangely, the <strong>more rigorous</strong> syntax <strong><code>(?x) [\x{D800}-\x{DBFF}]  [\x{DC00}-\x{DFFF}]</code></strong> does <strong>not</strong> work !?</p>
<p dir="auto">You may get some <strong>additional</strong> information, consulting these <strong>two</strong> posts :</p>
<p dir="auto"><a href="https://community.notepad-plus-plus.org/post/51068">https://community.notepad-plus-plus.org/post/51068</a></p>
<p dir="auto"><a href="https://community.notepad-plus-plus.org/post/43037">https://community.notepad-plus-plus.org/post/43037</a></p>
<hr />
<p dir="auto">So I said to myself : Is there a <strong>way</strong> to get, for instance, the <strong>surrogates</strong> syntax <strong><code>\x{D83E}\x{DDC0}</code></strong> from the <strong><code>\x{1F9C0}</code></strong> syntax ? <strong>Yes</strong>, there a method, described in the <strong>Wikipedia</strong> article, which may be solved with <strong><code>4</code></strong> <strong>consecutive</strong> regex S/R ! And the good news is that I succeeded to <strong>gather</strong> these <strong><code>4</code></strong> regex S/R in an <strong>unique</strong> macro, described, below ;-))</p>
<p dir="auto">Example :</p>
<p dir="auto">The string 𝅘𝅥𝅮 — 🧀, in <strong>theory</strong>, could be searched with the regex <strong><code>\x{1D160}\x20\x{2014}\x20\x{1F9C0}</code></strong>. ( BTW, the <strong><code>\x{2014}</code></strong> represents the <strong>EM DASH</strong> character <strong><code>—</code></strong> ! )</p>
<p dir="auto">So, starting with the regex <strong><code>\x{1D160}\x20\x{2014}\x20\x{1F9C0}</code></strong> :</p>
<p dir="auto">In the <strong>first</strong> regex S/R, we identify, <strong>exclusively</strong>, the syntaxes from <strong><code>\x{10000}</code></strong> till <strong><code>\x{10ffff}</code></strong>, adding the <strong>C1-Control</strong> code <strong><code>\x1F</code></strong>, after each code-point <strong><code>&gt; \x{FFFF}</code></strong></p>
<p dir="auto">=&gt; <strong><code>\x{1D160}\x20\x{2014}\x20\x{1F9C0}</code></strong></p>
<p dir="auto"><strong>IMPORTANT</strong> : This control code <strong><code>\x1F</code></strong> <strong>cannot</strong> be seen on our site, but is <strong>well</strong> displayed as the <strong><code>US</code></strong> char, in <strong>reverse</strong> video, from within Notepad++ !</p>
<p dir="auto">In the <strong>second</strong> S/R, we rewrite the code-points &gt; <strong><code>\x{FFFF}</code></strong>, in <strong>binary</strong>, <strong>minus</strong> the value <strong><code>\x{100000}</code></strong></p>
<p dir="auto">=&gt; <strong><code>\x{00001101000101100000}\x20\x{2014}\x20\x{00001111100111000000}</code></strong></p>
<p dir="auto">In the <strong>third</strong> S/R, we rewrite the <strong><code>20</code></strong> bytes, of each code-point, in <strong>two</strong> blocks of <strong><code>10</code></strong> bytes, adding the <strong>leading</strong> parts <strong><code>110110</code></strong> and <strong><code>110111</code></strong>, as described in the <strong>Wikipedia</strong> article</p>
<p dir="auto">=&gt; <strong><code>\x{1101100000110100}\x{1101110101100000}\x20\x{2014}\x20\x{1101100000111110}\x{1101110111000000}</code></strong></p>
<p dir="auto">In the <strong>fourth</strong> S/R  we reconstitute the <strong>surrogates pairs</strong>, of each code-point, by <strong>conversion</strong> of each <strong><code>16 bytes</code></strong> block, from <strong>binary</strong> to <strong>hexadecimal</strong> and we <strong>delete</strong> of the <strong><code>\x1F</code></strong> <strong>temporary</strong> character</p>
<p dir="auto">=&gt; <strong><code>\x{D834}\x{DD60}\x20\x{2014}\x20\x{D83E}\x{DDC0}</code></strong></p>
<hr />
<p dir="auto">The different <strong>search</strong> and <strong>replacement</strong> regexes are stored in a <strong>macro</strong>, below. Just insert it in the <strong><code>&lt;Macros&gt;....&lt;/Macros&gt;</code></strong> node of your <strong>active</strong> shortcut.xml file !</p>
<pre><code class="language-xml">        &lt;Macro name="Conversion to Surrogates Pairs" Ctrl="no" Alt="no" Shift="no" Key="0"&gt;
            &lt;Action type="3" message="1700" wParam="0" lParam="0" sParam="" /&gt;
            &lt;Action type="3" message="1601" wParam="0" lParam="0" sParam="(?-i)\\x\{(10|[[:xdigit:]])[[:xdigit:]]{4}" /&gt;
            &lt;Action type="3" message="1625" wParam="0" lParam="2" sParam="" /&gt;
            &lt;Action type="3" message="1602" wParam="0" lParam="0" sParam="$0\x1F" /&gt;
            &lt;Action type="3" message="1702" wParam="0" lParam="640" sParam="" /&gt;
            &lt;Action type="3" message="1701" wParam="0" lParam="1609" sParam="" /&gt;

            &lt;Action type="3" message="1700" wParam="0" lParam="0" sParam="" /&gt;
            &lt;Action type="3" message="1601" wParam="0" lParam="0" sParam="(?i)(?:(1)|(2)|(3)|(4)|(5)|(6)|(7)|(8)|(9)|(A)|(B)|(C)|(D)|(E)|(F)|(10))(?=[[:xdigit:]]{4}\x1F\})|(?:(0)|(1)|(2)|(3)|(4)|(5)|(6)|(7)|(8)|(9)|(A)|(B)|(C)|(D)|(E)|(F))(?=[[:xdigit:]]{0,3}\x1F\})" /&gt;
            &lt;Action type="3" message="1625" wParam="0" lParam="2" sParam="" /&gt;
            &lt;Action type="3" message="1602" wParam="0" lParam="0" sParam="(?{1}0000)(?{2}0001)(?{3}0010)(?{4}0011)(?{5}0100)(?{6}0101)(?{7}0110)(?{8}0111)(?{9}1000)(?{10}1001)(?{11}1010)(?{12}1011)(?{13}1100)(?{14}1101)(?{15}1110)(?{16}1111)(?{17}0000)(?{18}0001)(?{19}0010)(?{20}0011)(?{21}0100)(?{22}0101)(?{23}0110)(?{24}0111)(?{25}1000)(?{26}1001)(?{27}1010)(?{28}1011)(?{29}1100)(?{30}1101)(?{31}1110)(?{32}1111)" /&gt;
            &lt;Action type="3" message="1702" wParam="0" lParam="640" sParam="" /&gt;
            &lt;Action type="3" message="1701" wParam="0" lParam="1609" sParam="" /&gt;

            &lt;Action type="3" message="1700" wParam="0" lParam="0" sParam="" /&gt;
            &lt;Action type="3" message="1601" wParam="0" lParam="0" sParam="([01]{10})([01]{10})(?=\x1F)" /&gt;
            &lt;Action type="3" message="1625" wParam="0" lParam="2" sParam="" /&gt;
            &lt;Action type="3" message="1602" wParam="0" lParam="0" sParam="110110\1\x1F}\\x{110111\2" /&gt;
            &lt;Action type="3" message="1702" wParam="0" lParam="640" sParam="" /&gt;
            &lt;Action type="3" message="1701" wParam="0" lParam="1609" sParam="" /&gt;

            &lt;Action type="3" message="1700" wParam="0" lParam="0" sParam="" /&gt;
            &lt;Action type="3" message="1601" wParam="0" lParam="0" sParam="(?:(0000)|(0001)|(0010)|(0011)|(0100)|(0101)|(0110)|(0111)|(1000)|(1001)|(1010)|(1011)|(1100)|(1101)|(1110)|(1111))(?=[[:xdigit:]]*\x1F\})|\x1F" /&gt;
            &lt;Action type="3" message="1625" wParam="0" lParam="2" sParam="" /&gt;
            &lt;Action type="3" message="1602" wParam="0" lParam="0" sParam="(?{1}0)(?{2}1)(?{3}2)(?{4}3)(?{5}4)(?{6}5)(?{7}6)(?{8}7)(?{9}8)(?{10}9)(?11A)(?12B)(?13C)(?14D)(?15E)(?16F)" /&gt;
            &lt;Action type="3" message="1702" wParam="0" lParam="640" sParam="" /&gt;
            &lt;Action type="3" message="1701" wParam="0" lParam="1609" sParam="" /&gt;
        &lt;/Macro&gt;
</code></pre>
<hr />
<p dir="auto">From the <strong>table</strong>, below, where are some characters with code-point <strong>over</strong> <strong><code>\x{FFFF}</code></strong>,</p>
<pre><code class="language-z">•-----------•-----------•-----------------------------•--------------------•
|  Hex code | Character |        Unicode Name         |  Surrogates pair   |
•-----------•-----------•-----------------------------•--------------------•
|    2014   |     —     |  EM DASH                    |        N/A         |
|           |           |                             |                    |
|   10000   |     𐀀     |  LINEAR B SYLLABLE B008 A   |  \x{D800}\x{DC00}  |
|   10195   |     𐆕     |  ROMAN SILIQUA SIGN         |  \x{D800}\x{DD95}  |
|   1D160   |     𝅘𝅥𝅮     |  EIGHTH NOTE                |  \x{D834}\x{DD60}  |
|   1F0A1   |     🂡     |  ACE OF SPADES              |  \x{D83C}\x{DCA1}  |
|   1F30D   |     🌍     |  EARTH GLOBE EUROPE-AFRICA  |  \x{D83C}\x{DF0D}  |
|   1F385   |     🎅     |  FATHER CHRISTMAS           |  \x{D83C}\x{DF85}  |
|   1F600   |     😀     |  GRINNING FACE              |  \x{D83D}\x{DE00}  |
|   1F78B   |     🞋     |  ROUND TARGET               |  \x{D83D}\x{DF8B}  |
|   1F845   |     🡅     |  UPWARDS HEAVY ARROW        |  \x{D83E}\x{DC45}  |
|   1F9C0   |     🧀     |  CHEESE WEDGE               |  \x{D83E}\x{DDC0}  |
|   FFFFD   |     󿿽     |  &lt;private-use-FFFFD&gt;        |  \x{DBBF}\x{DFFD}  |
|  10FFFD   |     􏿽     |  &lt;private-use-10FFFD&gt;       |  \x{DBFF}\x{DFFD}  |
•-----------•-----------•-----------------------------•--------------------•
</code></pre>
<p dir="auto">I invented this <strong>little</strong> text :</p>
<pre><code class="language-z">Here are some pictographs, with code-point over \x{FFFF} : The INITIAL U+10000 char (old Greek syllable) 𐀀 — the roman "siliqua" coin 𐆕 — An eighth note 𝅘𝅥𝅮 — the ace of spades 🂡 — the Earth globe 🌍 — Father Christmas 🎅 — a grinning face 😀 — a round target 🞋 — an upwards heavy arrow 🡅 — a cheese wedge 🧀 — the private-use U+FFFFD char 󿿽 and the FINAL private-use U+10FFFD char 􏿽
</code></pre>
<p dir="auto">In <strong>theory</strong>, the regex :</p>
<p dir="auto"><strong><code>(?-i)Here are some pictographs, with code-point over \\x\{FFFF\} : The INITIAL U\+10000 char \(old Greek syllable\) \x{10000} \x{2014} the roman "siliqua" coin \x{10195} \x{2014} An eighth note \x{1D160} \x{2014} the ace of spades \x{1F0A1} \x{2014} the Earth globe \x{1F30D} \x{2014} Father Christmas \x{1F385} \x{2014} a grinning face \x{1F600} \x{2014} a round target \x{1F78B} \x{2014} an upwards heavy arrow \x{1F845} \x{2014} a cheese wedge \x{1F9C0} \x{2014} the private\-use U\+FFFFD char \x{FFFFD} and the FINAL private\-use U\+10FFFD char \x{10FFFD}</code></strong></p>
<p dir="auto">should <strong>match</strong> the text above ! However, as we get the <strong>error</strong> message <strong><code>FIND: Invalid regular expression</code></strong>. Then :</p>
<ul>
<li>
<p dir="auto"><strong>Select all</strong> this <strong>initial</strong> search regex expression</p>
</li>
<li>
<p dir="auto">Run the macro <strong><code>Macros &gt; Conversion to Surrogates Pairs</code></strong> and, at <strong>once</strong>, the search regex, <strong>still</strong> selected, is changed as :</p>
</li>
</ul>
<p dir="auto"><strong><code>(?-i)Here are some pictographs, with code-point over \\x\{FFFF\} : The INITIAL U\+10000 char \(old Greek syllable\) \x{D800}\x{DC00} \x{2014} the roman "siliqua" coin \x{D800}\x{DD95} \x{2014} An eighth note \x{D834}\x{DD60} \x{2014} the ace of spades \x{D83C}\x{DCA1} \x{2014} the Earth globe \x{D83C}\x{DF0D} \x{2014} Father Christmas \x{D83C}\x{DF85} \x{2014} a grinning face \x{D83D}\x{DE00} \x{2014} a round target \x{D83D}\x{DF8B} \x{2014} an upwards heavy arrow \x{D83E}\x{DC45} \x{2014} a cheese wedge \x{D83E}\x{DDC0} \x{2014} the private\-use U\+FFFFD char \x{DBBF}\x{DFFD} and the FINAL private\-use U\+10FFFD char \x{DBFF}\x{DFFD}</code></strong></p>
<ul>
<li>
<p dir="auto">Select again the <strong>search</strong>, <strong>mark</strong> or <strong>replace</strong> dialog</p>
</li>
<li>
<p dir="auto">This time, it <strong>should</strong> match, as expected, the text <strong>above</strong> ;-))</p>
</li>
</ul>
<p dir="auto"><strong>Notes</strong> :</p>
<ul>
<li>
<p dir="auto">The macro does <strong>not</strong> change any <strong><code>\xhh</code></strong>, <strong><code>\x{hh}</code></strong> or <strong><code>\x{hhhh}</code></strong> syntaxes, found in the <strong>selection</strong></p>
</li>
<li>
<p dir="auto">The <strong>hexadecimal</strong> values can be written, in either <strong>upper</strong> or <strong>lower</strong> case !</p>
</li>
<li>
<p dir="auto">Of course, you may just want to know the <strong>surrogates pair</strong> of a <strong>specific</strong> character <strong><code>\x{hhhhh}</code></strong> by <strong>selecting</strong> the string <strong><code>\x{hhhhh}</code></strong> and running the <strong><code>Conversion to Surrogates Pairs</code></strong> macro !</p>
</li>
</ul>
<p dir="auto">Best Regards,</p>
<p dir="auto">guy038</p>
]]></description><link>https://community.notepad-plus-plus.org/post/57528</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/57528</guid><dc:creator><![CDATA[guy038]]></dc:creator><pubDate>Thu, 10 Sep 2020 22:54:59 GMT</pubDate></item><item><title><![CDATA[Reply to FunctionList help on Sat, 05 Sep 2020 17:54:54 GMT]]></title><description><![CDATA[<p dir="auto">Hello <a class="plugin-mentions-user plugin-mentions-a" href="/user/jr" aria-label="Profile: JR">@<bdi>JR</bdi></a>, <a class="plugin-mentions-user plugin-mentions-a" href="/user/peterjones" aria-label="Profile: Peterjones">@<bdi>Peterjones</bdi></a>, <a class="plugin-mentions-user plugin-mentions-a" href="/user/alan-kilborn" aria-label="Profile: alan-kilborn">@<bdi>alan-kilborn</bdi></a> and <strong>All</strong>,</p>
<p dir="auto">Thank you, <a class="plugin-mentions-user plugin-mentions-a" href="/user/jr" aria-label="Profile: JR">@<bdi>JR</bdi></a>, to let us discover <strong><code>Boost Regex Playground v1.1</code></strong>, a <strong>regular</strong> expression <strong>tester</strong>, specific to the <strong>Boost</strong> library :-))</p>
<p dir="auto">After some <strong>tests</strong>, here are some notes, in <strong>any</strong> order :</p>
<ul>
<li>
<p dir="auto"><strong><code>Boost Regex Playground v1.1</code></strong> uses the <strong>Boost</strong> library with documentation version <strong><code>1.50</code></strong>. But since its <strong><code>v7.7</code></strong> version, Notepad++ uses an <strong>updated</strong> version : the <strong>Boost</strong> documentation <strong><code>1.70</code></strong>, which allow, for instance, the use of <strong>backtracking control verbs</strong>, like <strong><code>(*FAIL)</code></strong> or <strong><code>(*PRUNE)</code></strong>, not taken in account by the <strong><code>Boost Regex Playground v1.1</code></strong> software !</p>
</li>
<li>
<p dir="auto">By <strong>default</strong>, this software uses the <strong><code>mod_s</code></strong> flag, so the <strong>in-line</strong> modifier <strong><code>(?s)</code></strong>. Generally, in order that any <strong>dot</strong> char represents a <strong>single standard</strong> character <strong>only</strong>, two possibilities :</p>
<ul>
<li>
<p dir="auto">Use the <strong>in-line</strong> modifier <strong><code>(?-s)</code></strong> in the regex</p>
</li>
<li>
<p dir="auto">Tick the <strong><code>no_mod_s</code></strong> flag</p>
</li>
</ul>
</li>
<li>
<p dir="auto">As <strong>examples</strong>, try the regexes, below :</p>
<ul>
<li>
<p dir="auto"><strong><code>a     a # aa</code></strong> with the flag <strong><code>mod_x</code></strong> [ <strong><code>(?x)</code></strong> ] or <strong>without</strong></p>
</li>
<li>
<p dir="auto"><strong><code>^[a\x20\#r\n]*?$</code></strong> with the flag <strong><code>no_mod_m</code></strong> [ <strong><code>(?-m)</code></strong> ] or <strong>without</strong></p>
</li>
<li>
<p dir="auto"><strong><code>^.*</code></strong> with the flag <strong><code>no_mod_s</code></strong> [ <strong><code>(?-s)</code></strong> ] or <strong>without</strong></p>
</li>
</ul>
</li>
</ul>
<p dir="auto">Against this <strong>TWO</strong>-lines text :</p>
<pre><code class="language-z">aaaaaaaaaaaaaa     a # aaaaaaaaaa
aaaaaa          aaaaaaaa
</code></pre>
<ul>
<li>
<p dir="auto">It’s also worth to note that :</p>
<ul>
<li>
<p dir="auto">By clicking  on the <strong><code>...</code></strong> marker, you can modify the <strong>size</strong> of any <strong>sub-windows</strong></p>
</li>
<li>
<p dir="auto">After clicking  inside any <strong>sub-windows</strong>, you can <strong>zoom in</strong> or <strong>out</strong> each sub-window, by hitting the <strong><code>Ctrl</code></strong> key and moving the mouse <strong>wheel</strong>, up or down</p>
</li>
</ul>
</li>
<li>
<p dir="auto">The <strong>match flags</strong> <strong><code>format_no_copy</code></strong> and <strong><code>format_first_only</code></strong> may be <strong>interesting</strong>, too, in <strong>replacements</strong></p>
</li>
</ul>
<p dir="auto">Best Regards,</p>
<p dir="auto">guy038</p>
]]></description><link>https://community.notepad-plus-plus.org/post/57377</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/57377</guid><dc:creator><![CDATA[guy038]]></dc:creator><pubDate>Sat, 05 Sep 2020 17:54:54 GMT</pubDate></item><item><title><![CDATA[Reply to FunctionList help on Fri, 04 Sep 2020 23:44:59 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/peterjones" aria-label="Profile: PeterJones">@<bdi>PeterJones</bdi></a> thanks for taking the time…</p>
<p dir="auto">here is a pic of just the classes. using the BoostRegex playground software it captures both areas of classes, then specifically the class names.</p>
<p dir="auto">i also cant get it to work (i fixed the userLang issue, also i kept only the classes to test, removed any function expr.)</p>
<p dir="auto"><a href="https://i.imgur.com/P5nBqYP.png" rel="nofollow ugc">https://i.imgur.com/P5nBqYP.png</a></p>
]]></description><link>https://community.notepad-plus-plus.org/post/57372</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/57372</guid><dc:creator><![CDATA[JR]]></dc:creator><pubDate>Fri, 04 Sep 2020 23:44:59 GMT</pubDate></item><item><title><![CDATA[Reply to FunctionList help on Fri, 04 Sep 2020 22:13:00 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/peterjones" aria-label="Profile: PeterJones">@<bdi>PeterJones</bdi></a> thanks Peter. ill look into your posts this weekend and see what i can get done. I found a “regex playground” specific to Boost (which allegedly is the Regex engine for NPP).   here is a link to the software. its a free download</p>
<p dir="auto"><a href="http://zett42.de/software/boost-regex-playground/" rel="nofollow ugc">http://zett42.de/software/boost-regex-playground/</a></p>
]]></description><link>https://community.notepad-plus-plus.org/post/57371</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/57371</guid><dc:creator><![CDATA[JR]]></dc:creator><pubDate>Fri, 04 Sep 2020 22:13:00 GMT</pubDate></item><item><title><![CDATA[Reply to FunctionList help on Fri, 04 Sep 2020 20:51:36 GMT]]></title><description><![CDATA[<p dir="auto">Continuing, using the example code <code>functionlist.cpp</code>:</p>
<pre><code>/* not in any class */
//reg @unclassedFunction
&lt;code to process&gt;
//end

SCSFExport scsf_ClassNameExample(SCStudyInterfaceRef sc)

//reg @chartSettings
&lt;code to process&gt;
//end

//reg @defaultSettings
&lt;code to process&gt;
//end

//reg @Create_NewOrders
&lt;code to process&gt;
//end

SCSFExport scsf_AnotherClassName(SCStudyInterfaceRef sc)

//reg @BuyOrders
&lt;code to process&gt;
//end
//reg @SellOrders
&lt;code to process&gt;
//end
</code></pre>
<p dir="auto">When I use your regular expression for the class section, <code>(^SCSFExport) ([\s\S]+\n?) (?=SCSFExport)</code>, in the normal Find dialog, I get 0 matches in my example code:<br />
<img src="/assets/uploads/files/1599251820368-5194ed74-3e67-446a-82cd-e9cb6fca0a53-image.png" alt="5194ed74-3e67-446a-82cd-e9cb6fca0a53-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">If I tweak that to <code>(?s)(^SCSFExport)(.+?)(?=SCSFExport|\Z)</code>, I get two matches, as I would expect.  And if I highlight them, they do what I expect.</p>
<p dir="auto">However, when I plug that into the <code>functionList.xml</code> and restart,</p>
<pre><code>&lt;association id="SierraChart"  userDefinedLangName="SierraChart" /&gt;
&lt;association id="SierraChart"  ext=".cpp"                        /&gt;
		&lt;/associationMap&gt;
		&lt;parsers&gt;
&lt;parser id="SierraChart" displayName="SierraChart"&gt;
	&lt;classRange mainExpr="(?s)(^SCSFExport)(.+?)(?=SCSFExport|\Z)"&gt;
		&lt;className&gt;
			&lt;nameExpr expr="^SCSFExport +\K(\w+)" /&gt;
		&lt;/className&gt;
		&lt;function mainExpr="//reg @\w+"&gt;
			&lt;funcNameExpr expr="(?&lt;=//reg @)\w+" /&gt;
		&lt;/function&gt;
	&lt;/classRange&gt;
	&lt;function mainExpr="//reg @\w+"&gt;
		&lt;functionName&gt;
			&lt;nameExpr expr="(?&lt;=//reg @)\w+" /&gt;
		&lt;/functionName&gt;
	&lt;/function&gt;
&lt;/parser&gt;
</code></pre>
<p dir="auto">my function list only showed the one <code>unclassedFunction</code>, and didn’t find any of the functions inside classes (in the screenshot above)</p>
<p dir="auto">I’m not sure why it’s not finding the class names or functions within those classes.</p>
<p dir="auto">Sorry.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/57366</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/57366</guid><dc:creator><![CDATA[PeterJones]]></dc:creator><pubDate>Fri, 04 Sep 2020 20:51:36 GMT</pubDate></item><item><title><![CDATA[Reply to FunctionList help on Fri, 04 Sep 2020 20:25:01 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/jr" aria-label="Profile: JR">@<bdi>JR</bdi></a> ,</p>
<p dir="auto">At first glance, in your CLASS-enabled, I found two bugs</p>
<ol>
<li>It’s also not showing the <code>&lt;parsers&gt;...</code> open tag.  Again, that might just be your editing</li>
<li>The <code>&lt;association...&gt;</code> lines both use <code>SierraCharts</code> (with an <code>s</code> at the end), whereas your first example, and your claim about your UDL, use just <code>SierraChart</code> (with <strong>no</strong> <code>s</code>).  It <strong>will not</strong> work unless the userDefinedLang name exactly matches the UDL name, and the <code>&lt;parser id</code> exactly matches the <code>&lt;association id</code>.</li>
</ol>
<p dir="auto">I will continue to explore, correcting those two bugs.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/57364</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/57364</guid><dc:creator><![CDATA[PeterJones]]></dc:creator><pubDate>Fri, 04 Sep 2020 20:25:01 GMT</pubDate></item><item><title><![CDATA[Reply to FunctionList help on Fri, 04 Sep 2020 20:18:56 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/jr" aria-label="Profile: JR">@<bdi>JR</bdi></a> said in <a href="/post/57361">FunctionList help</a>:</p>
<blockquote>
<p dir="auto">i have copied your code and cannot get it to return the functions.  I can go to an online Regex playground and return the Class and functions, but when i try and translate it into the FunctionList.xml it fails</p>
</blockquote>
<p dir="auto">For the FUNCTION only version:</p>
<p dir="auto">I have grabbed a fresh copy of NPP.v7.8.9-64 and unzipped to a known location, and started from there.<br />
I defined a UDL called “SierraChart” with extension <code>.cpp</code>:<br />
<img src="/assets/uploads/files/1599250508488-4c90e185-c3a0-40ad-b836-744979c51d54-image.png" alt="4c90e185-c3a0-40ad-b836-744979c51d54-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">When I add the <code>&lt;association</code> entries and <code>&lt;parser</code> entry in the appropriate locations, it works for me as I would expect for functions only:<br />
<img src="/assets/uploads/files/1599250462916-42992368-a181-4f8f-9242-7b310a488d95-image.png" alt="42992368-a181-4f8f-9242-7b310a488d95-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Please note that in the code you posted for the FUNCTION-only version, you did not have the <code>&lt;parser ...&gt;</code> entry inside of the <code>&lt;parsers&gt;</code> tag: I don’t know if that was real, or a result of your pruning for the forum.  My excerpt can be seen in the screenshot, and here is a direct copy paste, where there is stuff before and after, but everything shown is exactly contiguous:</p>
<pre><code>&lt;association id="SierraChart"  userDefinedLangName="SierraChart" /&gt;
&lt;association id="SierraChart"  ext=".cpp"                        /&gt;
		&lt;/associationMap&gt;
		&lt;parsers&gt;
&lt;parser id="SierraChart" displayName="SierraChart"&gt;
	&lt;function mainExpr="//reg @\w+"&gt;
		&lt;functionName&gt;
			&lt;nameExpr expr="(?&lt;=//reg @)\w+" /&gt;
		&lt;/functionName&gt;
	&lt;/function&gt;
&lt;/parser&gt;
</code></pre>
<p dir="auto">Please remember that after you make changes to functionList.xml, you have to exit Notepad++ and reload for it to take effect.</p>
<p dir="auto">I will try to experiment with the classes next.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/57363</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/57363</guid><dc:creator><![CDATA[PeterJones]]></dc:creator><pubDate>Fri, 04 Sep 2020 20:18:56 GMT</pubDate></item><item><title><![CDATA[Reply to FunctionList help on Fri, 04 Sep 2020 18:47:57 GMT]]></title><description><![CDATA[<pre><code>&lt;!-- ======================================================================== --&gt;
&lt;association id="SierraCharts"  userDefinedLangName="SierraCharts" /&gt;
&lt;association id="SierraCharts"  ext=".cpp"                           /&gt;
&lt;!-- ======================================================================== --&gt;

&lt;/associationMap&gt;
		
&lt;parser displayName="SierraChart" id="SierraChart" 		&gt;
&lt;classRange
         mainExpr    ="(^SCSFExport) ([\s\S]+\n?) (?=SCSFExport)" &gt;

&lt;className&gt;
           &lt;nameExpr expr="([A-Z])\w+"/&gt;
&lt;/className&gt;
					
&lt;function mainExpr = "//reg @([\s\S]+?)\n"	&gt;
      &lt;functionName&gt;
               &lt;funcNameExpr expr = "\B(\@[a-zA-Z_]+\b)(?!;)" /&gt;
     &lt;/functionName&gt;

&lt;/function&gt;			
&lt;/classRange&gt;				
&lt;/parser&gt;
		
</code></pre>
]]></description><link>https://community.notepad-plus-plus.org/post/57362</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/57362</guid><dc:creator><![CDATA[JR]]></dc:creator><pubDate>Fri, 04 Sep 2020 18:47:57 GMT</pubDate></item><item><title><![CDATA[Reply to FunctionList help on Fri, 04 Sep 2020 18:29:37 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/peterjones" aria-label="Profile: PeterJones">@<bdi>PeterJones</bdi></a> thanks for the help</p>
<p dir="auto">i should of mentioned my file is ext .cpp Just like C++ file, its a software that uses C++ but they built an API off of C++ so the extension file is .cpp</p>
<p dir="auto">i have copied your code and cannot get it to return the functions.  I can go to an online Regex playground and return the Class and functions, but when i try and translate it into the FunctionList.xml it fails</p>
<pre><code>&lt;NotepadPlus&gt;
&lt;functionList&gt;
&lt;associationMap&gt;
			
&lt;!-- ======================================================================== --&gt;
&lt;association id="SierraChart"  userDefinedLangName="SierraChart" /&gt;
&lt;association id="SierraChart"  ext=".cpp"                           /&gt;
&lt;!-- ======================================================================== --&gt;

&lt;/associationMap&gt;
		
&lt;parser id="SierraChart" displayName="SierraChart"&gt;
    &lt;function mainExpr="//reg @\w+"&gt;
        &lt;functionName&gt;
            &lt;nameExpr expr="(?&lt;=//reg @)\w+" /&gt;
        &lt;/functionName&gt;
    &lt;/function&gt;
&lt;/parser&gt;
		
&lt;/parsers&gt;
&lt;/functionList&gt;
&lt;/NotepadPlus&gt;
</code></pre>
]]></description><link>https://community.notepad-plus-plus.org/post/57361</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/57361</guid><dc:creator><![CDATA[JR]]></dc:creator><pubDate>Fri, 04 Sep 2020 18:29:37 GMT</pubDate></item><item><title><![CDATA[Reply to FunctionList help on Fri, 04 Sep 2020 14:43:18 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/peterjones" aria-label="Profile: PeterJones">@<bdi>PeterJones</bdi></a> said in <a href="/post/57340">FunctionList help</a>:</p>
<blockquote>
<p dir="auto">Please see the Function List FAQ in this forum for more details.</p>
</blockquote>
<p dir="auto">I was surprised to see that that FAQ didn’t have a link to MAPJe71’s github site that was mentioned recently <a href="https://community.notepad-plus-plus.org/post/57315">HERE</a>.  It seems like that would be a great resource to know about, for people wanting to work with function-list setup.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/57345</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/57345</guid><dc:creator><![CDATA[Alan Kilborn]]></dc:creator><pubDate>Fri, 04 Sep 2020 14:43:18 GMT</pubDate></item><item><title><![CDATA[Reply to FunctionList help on Fri, 04 Sep 2020 14:31:06 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/jr" aria-label="Profile: JR">@<bdi>JR</bdi></a> ,</p>
<p dir="auto">I will help some, but it won’t answer everything.</p>
<p dir="auto">Please see the <a href="https://community.notepad-plus-plus.org/topic/19480/faq-desk-function-list-basics">Function List FAQ</a> in this forum for more details.</p>
<p dir="auto">As a first problem, your “comment” definition, which can start with <code>//</code>, is mutually exclusive with your function name definition, which starts with <code>//reg</code>. If you define commentExpr to include <code>//</code>, the parser will never see your <code>//reg</code> because it’s already matched and thrown out everything after the <code>//</code>. (*1)</p>
<p dir="auto">So, for a first attempt, I am not including a commentExpr.</p>
<p dir="auto">Ignoring classes for a moment, I was able to get it to recognize function names:</p>
<pre><code>&lt;association id="fn_scs19948"  userDefinedLangName="udl_scs19948"  /&gt;
&lt;association id="fn_scs19948"  ext=".19948"                        /&gt;
...

&lt;parser id="fn_scs19948" displayName="udl_scs19948"&gt;
    &lt;function mainExpr="//reg @\w+"&gt;
        &lt;functionName&gt;
            &lt;nameExpr expr="(?&lt;=//reg @)\w+" /&gt;
        &lt;/functionName&gt;
    &lt;/function&gt;
&lt;/parser&gt;
</code></pre>
<p dir="auto">After saving that and reloading, with a file with the udl_scs19948 active (*2), I was able to see the functions, but without class names, of course.</p>
<p dir="auto">Unfortunately, when i tried to add in the <code>&lt;classRange&gt;</code> with an expression akin to <code>SCSFExport \w+\s*\(SCStudyInterfaceRef sc\)</code>, it never seemed to match that in the parser, even though that regex found the class rows in the example code I pasted from your post.  It probably needs something in the regex or additional attributes to extend the range start and range stop, but I’m not sure how exactly that works for classes that don’t have obvious { and } to wrap them.</p>
<p dir="auto">The real expert on function list here is <a class="plugin-mentions-user plugin-mentions-a" href="/user/mapje71" aria-label="Profile: MAPJe71">@<bdi>MAPJe71</bdi></a>, the author of the <a href="https://community.notepad-plus-plus.org/topic/19480/faq-desk-function-list-basics">Function List FAQ</a>.  He might chime in, but he’s not necessarily here every day, so you might have to be patient.  Maybe someone else can expand on my work to get you closer.</p>
<p dir="auto">-–<br />
*1 I had a thought on this after my experiments were done and I had deleted them.  If you use a negative lookahead, you might be able to say that commentExpr=“//(?!reg).<em>?$|/*.</em>*/”, which I think will be close to what is needed (I tested the regexp manually, but didn’t put it back into a functionList parser)<br />
*2 the name of my UDL was chosen by the “SCS” in your class-name identifier, and from the post# in the URL of this post</p>
]]></description><link>https://community.notepad-plus-plus.org/post/57340</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/57340</guid><dc:creator><![CDATA[PeterJones]]></dc:creator><pubDate>Fri, 04 Sep 2020 14:31:06 GMT</pubDate></item></channel></rss>