<?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[Add VHDL to functionList.xml and interpret port map as class]]></title><description><![CDATA[<p dir="auto">Hi,</p>
<p dir="auto">I want to add VHDL support to functionList.xml.</p>
<p dir="auto">I´d like to interpret the port map as a class and the port assignments as class functions.<br />
That´s why I wrote the following expressions:</p>
<pre><code>&lt;parser
				displayName="VHDL"
				id         ="vhdl_syntax"
                                commentExpr="(?x)  
			                                  (?m-s:--.*$)"        
			                                  &gt;
            &lt;!-- within a class--&gt;
				&lt;classRange
					mainExpr="\w+\s*:(?-s:.*)\s*port"
				&gt;
					&lt;className&gt;
						&lt;nameExpr expr=".*" /&gt;
					&lt;/className&gt;
					&lt;function
						mainExpr="\s*\w+\s*=&gt;\s*\w+\s*,"
					&gt;
						&lt;functionName&gt;
							&lt;funcNameExpr expr=".*" /&gt;
						&lt;/functionName&gt;
					&lt;/function&gt;
				&lt;/classRange&gt;
</code></pre>
<p dir="auto">When I use the search function of notepad++ it finds what I want, but in the functions list does not appear any entry…</p>
<p dir="auto">A VHDL port map can be look like this (VHDL does not matter about whitespaces and newlines!)</p>
<pre><code>rst_controller_inst : rst_controller 
port map (
	reset_in0      =&gt; reset_reset_n_ports_inv,        -- reset_in0.reset
	clk            =&gt; clk_clk,                        --       clk.clk
	reset_out      =&gt; rst_controller_reset_out_reset -- reset_out.reset
);
</code></pre>
<p dir="auto">This should give me the class "rst_controller_inst " and  the class functions "reset_in0      =&gt; reset_reset_n_ports_inv, " etc.</p>
<p dir="auto">Is there any difference in the interpretation of the regex between npp search function and functionList.xml? Or do I have another issue?</p>
]]></description><link>https://community.notepad-plus-plus.org/topic/19517/add-vhdl-to-functionlist-xml-and-interpret-port-map-as-class</link><generator>RSS for Node</generator><lastBuildDate>Tue, 19 May 2026 00:13:43 GMT</lastBuildDate><atom:link href="https://community.notepad-plus-plus.org/topic/19517.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 05 Jun 2020 11:31:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Add VHDL to functionList.xml and interpret port map as class on Thu, 25 Jun 2020 14:04:48 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/mapje71" aria-label="Profile: MAPJe71">@<bdi>MAPJe71</bdi></a> Thanks a lot for your effort!<br />
So I think this topic has come to an (temporary?) end.<br />
With your last solution most of the possibilities are covered.<br />
Everyone who needs 3 &amp; 1e covered can use my last post (at least as good point to start from).</p>
<p dir="auto">If anyone else has any idea how to cover all the possibilities, feel free to post your ideas :-)</p>
]]></description><link>https://community.notepad-plus-plus.org/post/55341</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/55341</guid><dc:creator><![CDATA[el-coder-sb]]></dc:creator><pubDate>Thu, 25 Jun 2020 14:04:48 GMT</pubDate></item><item><title><![CDATA[Reply to Add VHDL to functionList.xml and interpret port map as class on Wed, 24 Jun 2020 22:11:02 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/el-coder-sb" aria-label="Profile: el-coder-sb">@<bdi>el-coder-sb</bdi></a> Please try the following parser.<br />
It should properly list your <code>doing_so_inst1</code>, <code>2</code> &amp; <code>4</code>  and my additional <code>...1b</code>, <code>1d</code>, <code>1f</code>, <code>2b</code>, <code>2c</code>, <code>4b</code> &amp; <code>4c</code>.<br />
I was not able to get <code>3</code> &amp; <code>1e</code> listed because getting incorrect “function” detections when the formal part of an association element is optional (i.e. the “identifier =&gt;”-part) and it’s not possible to filter out/remove text (i.e. remove the “embedded” comment), resp.</p>
<pre><code class="language-xml">			&lt;parser
				displayName="VHDL - Port Map"
				id         ="vhdl_syntax"
			&gt;
				&lt;classRange
					mainExpr    ="(?x)                                          # free-spacing (see `RegEx - Pattern Modifiers`)
							(?m)                                                # ^ and $ match at line-breaks
							(?(DEFINE)                                          # definition of sub-routine(s)
								(?'COMMENT'\h*-{2}[^\r\n]*(?:\r?\n|\n?\r))
								(?'VALID_ID'[A-Za-z]\w+)
							)
							^\h*
							(?&amp;amp;VALID_ID) \s*                                # instantiation identifier
							:                \s*
							(?:entity\s+(?:(?&amp;amp;VALID_ID)\.)+)?
							(?&amp;amp;VALID_ID)            (?:(?&amp;amp;COMMENT))?    # instantiated unit identifier
							(?'GENERIC_MAP'                                     # optional, generic map aspect
								\s* generic             (?:(?&amp;amp;COMMENT))?
								\s+ map                 (?:(?&amp;amp;COMMENT))?
								\s* \(                  (?:(?&amp;amp;COMMENT))?
									(?s:.*?)                                    # association list
								\s* \)                  (?:(?&amp;amp;COMMENT))?
							)?
							(?'PORT_MAP'                                        # port map aspect
								\s* port                (?:(?&amp;amp;COMMENT))?
								\s+ map                 (?:(?&amp;amp;COMMENT))?
								\s* \(                  (?:(?&amp;amp;COMMENT))?
									(?s:.*?)                                    # association list
								\s* \)                  (?:(?&amp;amp;COMMENT))?
							)
							\s*;
						"
				&gt;
					&lt;className&gt;
						&lt;nameExpr expr="\w+\s*:\s*(?:entity\s+(?:\w+\s*\.\s*)+)?\w+" /&gt;
					&lt;/className&gt;
					&lt;function
						mainExpr="(?x)                                          # free-spacing (see `RegEx - Pattern Modifiers`)
								(?'VALID_ID'[A-Za-z]\w+)                        # formal part identifier
								\s*=\x3E\s*                                     # arrow surrounded by optional white-space
								(?:
									(?&amp;amp;VALID_ID)                            # actual part identifier...
								|	all
								|	open
								|	\d+                                         # ...or value
								)
								(?=                                             # up till..
									\s*                                         # ...optional white-space
									(?:                                         # ...followed by...
										[,)]                                    #    element separator, end-of-list indicator
									|	-{2}[^\r\n]*(?:\r?\n|\n?\r)             #    or trailing comment
									)
								)
							"
					&gt;
						&lt;functionName&gt;
							&lt;funcNameExpr expr=".*" /&gt;
						&lt;/functionName&gt;
					&lt;/function&gt;
				&lt;/classRange&gt;
			&lt;/parser&gt;

</code></pre>
<p dir="auto">Some additional test cases:</p>
<pre><code>doing_so_inst_1b:doing_so                           -- comment
    generic MAP(                                    -- comment
        CLK_FREQ        =&gt; 10,                      -- comment
        SCL_FREQ        =&gt; 4                        -- comment
    )                                               -- comment
    PORT map(                                       -- comment
        Reset_s         =&gt; Reset_s,                 -- comment
        Clk_4MHz        =&gt; Clk_4MHz,                -- comment
        Signal_in       =&gt; sig_internal,            -- comment
        Signal_out      =&gt; sig_out,                 -- comment
        Signal_open     =&gt; open                     -- comment
    );

doing_so_inst_1d
:
doing_so
    generic MAP
    (
        CLK_FREQ
        =&gt;
        10
    ,
        SCL_FREQ
        =&gt;
        4
    )
    PORT map
    (
        Reset_s
        =&gt;
        Reset_s
    ,
        Clk_4MHz
        =&gt;
        Clk_4MHz
    ,
        Signal_in
        =&gt;
        sig_internal
    ,
        Signal_out
        =&gt;
        sig_out
    ,
        Signal_open
        =&gt;
        open
    )
    ;

doing_so_inst_1e                                    -- comment
:                                                   -- comment
doing_so                                            -- comment
    generic MAP                                     -- comment
    (                                               -- comment
        CLK_FREQ                                    -- comment
        =&gt;                                          -- comment
        10                                          -- comment
    ,                                               -- comment
        SCL_FREQ                                    -- comment
        =&gt;                                          -- comment
        4                                           -- comment
    )                                               -- comment
    PORT map                                        -- comment
    (                                               -- comment
        Reset_s                                     -- comment
        =&gt;                                          -- comment
        Reset_s                                     -- comment
    ,                                               -- comment
        Clk_4MHz                                    -- comment
        =&gt;                                          -- comment
        Clk_4MHz                                    -- comment
    ,                                               -- comment
        Signal_in                                   -- comment
        =&gt;                                          -- comment
        sig_internal                                -- comment
    ,                                               -- comment
        Signal_out                                  -- comment
        =&gt;                                          -- comment
        sig_out                                     -- comment
    ,                                               -- comment
        Signal_open                                 -- comment
        =&gt;                                          -- comment
        open                                        -- comment
    )                                               -- comment
    ;                                               -- comment

doing_so_inst_1f : doing_so                         -- comment
    generic MAP                                     -- comment
    (                                               -- comment
        CLK_FREQ    =&gt; 10                           -- comment
    ,                                               -- comment
        SCL_FREQ    =&gt; 4                            -- comment
    )                                               -- comment
    PORT map                                        -- comment
    (                                               -- comment
        Reset_s     =&gt; Reset_s                      -- comment
    ,                                               -- comment
        Clk_4MHz    =&gt; Clk_4MHz                     -- comment
    ,                                               -- comment
        Signal_in   =&gt; sig_internal                 -- comment
    ,                                               -- comment
        Signal_out  =&gt; sig_out                      -- comment
    ,                                               -- comment
        Signal_open =&gt; open                         -- comment
    )                                               -- comment
    ;                                               -- comment

doing_so_inst_2b : doing_so                         -- comment
    PORT map(                                       -- comment
        Reset_s         =&gt; Reset_s,                 -- comment
        Clk_4MHz        =&gt; Clk_100MHz,              -- comment
        Signal_in       =&gt; sig_internal,            -- comment
        Signal_out      =&gt; open,                    -- comment
        Signal_open     =&gt; open                     -- comment
    );

doing_so_inst_2c : doing_so
    PORT map (
        Reset_s         =&gt; Reset_s,
        Clk_4MHz        =&gt; Clk_100MHz,
        Signal_in       =&gt; sig_internal,
        Signal_out      =&gt; open,
        Signal_open     =&gt; open
    );

doing_so_inst_4b : entity work.doing_so port map (  -- comment
        Reset_s         =&gt; Reset_s,                 -- comment
        Clk_4MHz        =&gt; Clk_100MHz,              -- comment
        Signal_in       =&gt; sig_internal,            -- comment
        Signal_out      =&gt; open,                    -- comment
        Signal_open     =&gt; open                     -- comment
    );

doing_so_inst_4c : entity work.doing_so port map (
        Reset_s         =&gt; Reset_s,
        Clk_4MHz        =&gt; Clk_100MHz,
        Signal_in       =&gt; sig_internal,
        Signal_out      =&gt; open,
        Signal_open     =&gt; open
    );
</code></pre>
]]></description><link>https://community.notepad-plus-plus.org/post/55313</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/55313</guid><dc:creator><![CDATA[MAPJe71]]></dc:creator><pubDate>Wed, 24 Jun 2020 22:11:02 GMT</pubDate></item><item><title><![CDATA[Reply to Add VHDL to functionList.xml and interpret port map as class on Wed, 24 Jun 2020 10:33:57 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/mapje71" aria-label="Profile: MAPJe71">@<bdi>MAPJe71</bdi></a> Thanks!</p>
<p dir="auto">That looks good.<br />
It works fine.<br />
However, it detects two class-function in the following line</p>
<pre><code>Signal_open  =&gt;open      -- this comments this port
</code></pre>
<p dir="auto">‘port’ - although it is inside the comment - is detected as a new class-function.</p>
<p dir="auto">I tried to solve this. The solution should be that the entire comment is consumed. But I was not able to do so without getting into other trouble (especially the doing_so_inst3 one liner makes trouble).<br />
My best try is:</p>
<pre><code>&lt;function
    	mainExpr="(?:\w+\s*=\x3E\s*)?\w+(?=\s*,|\s*\)|\s*-{2}|\Z)[^,)\n\r\f\v]*"
   &gt;
</code></pre>
<p dir="auto">This works for the given example above, but will obviously fail when there is a ‘,’ etc. inside the comment.</p>
<p dir="auto">If anyone has a quick solution/idea I would appreciate.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/55301</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/55301</guid><dc:creator><![CDATA[el-coder-sb]]></dc:creator><pubDate>Wed, 24 Jun 2020 10:33:57 GMT</pubDate></item><item><title><![CDATA[Reply to Add VHDL to functionList.xml and interpret port map as class on Sun, 21 Jun 2020 17:21:53 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/el-coder-sb" aria-label="Profile: el-coder-sb">@<bdi>el-coder-sb</bdi></a> Try this one:</p>
<pre><code class="language-xml">			&lt;parser
				displayName="VHDL - Port Map"
				id         ="vhdl_syntax"
			&gt;
				&lt;classRange
					mainExpr    ="(?x)                                          # free-spacing (see `RegEx - Pattern Modifiers`)
							(?m)                                                # ^ and $ match at line-breaks
							(?(DEFINE)                                          # definition of sub-routine(s)
								(?'COMMENT'\h*-{2}[^\r\n]*(?:\r?\n|\n?\r))
								(?'VALID_ID'[A-Za-z]\w+)
							)
							^\h*
							(?&amp;amp;VALID_ID) \s*                                # instantiation identifier
							:                \s*
							(?:entity\s+(?:(?&amp;amp;VALID_ID)\.)+)?
							(?&amp;amp;VALID_ID)            (?:(?&amp;amp;COMMENT))?    # instantiated unit identifier
							(?'GENERIC_MAP'
								\s* generic             (?:(?&amp;amp;COMMENT))?
								\s+ map                 (?:(?&amp;amp;COMMENT))?
								\s* \(                  (?:(?&amp;amp;COMMENT))?
									(?s:.*?)                                    # association list
								\s* \)                  (?:(?&amp;amp;COMMENT))?
							)?
							(?'PORT_MAP'
								\s* port                (?:(?&amp;amp;COMMENT))?
								\s+ map                 (?:(?&amp;amp;COMMENT))?
								\s* \(                  (?:(?&amp;amp;COMMENT))?
									(?s:.*?)                                    # association list
								\s* \)                  (?:(?&amp;amp;COMMENT))?
							)
							\s*;
						"
				&gt;
					&lt;className&gt;
						&lt;nameExpr expr="\w+\s*:\s*(?:entity\s+(?:\w+\s*\.\s*)+)?\w+" /&gt;
					&lt;/className&gt;
					&lt;function
						mainExpr="(?:\w+\s*=\x3E\s*)?\w+(?=\s*,|\s*\)|\h*-{2}|\Z)"
					&gt;
						&lt;functionName&gt;
							&lt;funcNameExpr expr=".*" /&gt;
						&lt;/functionName&gt;
					&lt;/function&gt;
				&lt;/classRange&gt;
			&lt;/parser&gt;
</code></pre>
]]></description><link>https://community.notepad-plus-plus.org/post/55238</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/55238</guid><dc:creator><![CDATA[MAPJe71]]></dc:creator><pubDate>Sun, 21 Jun 2020 17:21:53 GMT</pubDate></item><item><title><![CDATA[Reply to Add VHDL to functionList.xml and interpret port map as class on Tue, 16 Jun 2020 14:33:15 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/mapje71" aria-label="Profile: MAPJe71">@<bdi>MAPJe71</bdi></a> Here you are :-) .<br />
There exist positional and non-positional instantiations in VHDL:</p>
<pre><code>doing_so_inst1:doing_so
    generic MAP(
         CLK_FREQ    =&gt; 10,
         SCL_FREQ    =&gt; 4
    )
     PORT map(
        Reset_s          =&gt;   Reset_s,
        Clk_4MHz         =&gt;   Clk_4MHz,
        Signal_in        =&gt;   sig_internal,
        Signal_out       =&gt;   sig_out,
        Signal_open      =&gt;   open
       );

doing_so_inst2: doing_so                -- this comments this inst
     PORT map(                          -- this comments this port map
        Reset_s      =&gt;Reset_s,
        Clk_4MHz     =&gt;Clk_100MHz,
        Signal_in    =&gt;sig_internal,
        Signal_out   =&gt;open,
        Signal_open  =&gt;open      -- this comments this port
       );

doing_so_inst3: doing_so generic map(72, 10) port map(Reset_s, Clk_120MHz, sig_internal, sig_out2, open);

doing_so_inst4 : entity work.doing_so port map(
        Reset_s      =&gt;Reset_s,
        Clk_4MHz     =&gt;Clk_100MHz,
        Signal_in    =&gt;sig_internal,
        Signal_out   =&gt;open,
        Signal_open  =&gt;open      -- this comments this port
        );
</code></pre>
<p dir="auto">I am thinking of a list like:</p>
<pre><code>\+---doing_so_inst1: doing_so
    --- CLK_FREQ    =&gt; 10,
    --- SCL_FREQ    =&gt; 4
    --- Reset_s          =&gt;   Reset_s,
    --- Clk_4MHz         =&gt;   Clk_4MHz,
    --- Signal_in        =&gt;   sig_internal,
    --- Signal_out       =&gt;   sig_out,
    --- Signal_open      =&gt;   open

\+---doing_so_inst2: doing_so
    --- Reset_s      =&gt;Reset_s,
    --- Clk_4MHz     =&gt;Clk_100MHz,
    --- Signal_in    =&gt;sig_internal,
    --- Signal_out   =&gt;open,
    --- Signal_open  =&gt;open

\+---doing_so_inst3: doing_so
    --- 72
    --- 10
    --- Reset_s
    --- Clk_120MHz
    --- sig_internal
    --- sig_out2
    --- open

\+---doing_so_inst4: doing_so
    --- Reset_s      =&gt;Reset_s,
    --- Clk_4MHz     =&gt;Clk_100MHz,
    --- Signal_in    =&gt;sig_internal,
    --- Signal_out   =&gt;open,
    --- Signal_open  =&gt;open

</code></pre>
<p dir="auto">As mentioned before, my last posted regex works quite fine, unless there are inline comments. So in the example I get doing_so_inst1 and doing_so_inst3 as I wish, but doing_so_inst2 is not recognized at all…<br />
doing_so_inst4 is a new way to instantiate a module (which came with a language update of VHDL) which I have not tried yet to recognize. This has no prio, but should not be too hard to detect as well. It´s a “nice to have”.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/55017</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/55017</guid><dc:creator><![CDATA[el-coder-sb]]></dc:creator><pubDate>Tue, 16 Jun 2020 14:33:15 GMT</pubDate></item><item><title><![CDATA[Reply to Add VHDL to functionList.xml and interpret port map as class on Fri, 12 Jun 2020 11:28:36 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/el-coder-sb" aria-label="Profile: el-coder-sb">@<bdi>el-coder-sb</bdi></a> Could you provide a sample source file containing the different combinations and it’s expected Function List tree?</p>
]]></description><link>https://community.notepad-plus-plus.org/post/54932</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/54932</guid><dc:creator><![CDATA[MAPJe71]]></dc:creator><pubDate>Fri, 12 Jun 2020 11:28:36 GMT</pubDate></item><item><title><![CDATA[Reply to Add VHDL to functionList.xml and interpret port map as class on Wed, 10 Jun 2020 12:15:17 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/mapje71" aria-label="Profile: MAPJe71">@<bdi>MAPJe71</bdi></a>  Thanks.</p>
<p dir="auto">I modified it a bit, as I forgot to tell that there can be a “Generic map” before Portmap.<br />
(and I replaced the ‘(?&amp;PORTMAP)’ expression as I do not understand it and was not able to make it run looking for PORTMAP or GENERICMAP)<br />
Now it looks quite good. However it still suffers from not recognizing class and functions when there is a comment (‘–’) at the end of the line (as given at my first post). I tried it as you can see at function mainExpr but this way it does not work.</p>
<p dir="auto">Here is my current code:</p>
<pre><code>&lt;parser
    displayName="VHDL - Port Map"
    id         ="vhdl_syntax"
    commentExpr="(?x)                                               # free-spacing (see `RegEx - Pattern Modifiers`)
            (?-s:-{2}.*$)                                     # Single Line Comment
        "
&gt;
    &lt;classRange
        mainExpr    ="(?xi)                                          # free-spacing (see `RegEx - Pattern Modifiers`)
                (?m)                                                # ^ and $ match at line-breaks
                ^                                               # header starts at beginning of a line
                \h*\w+                                          # ...instance name
                \s*:                                            # ...separator
                \s*(component)?\s*\w+                                          # ...definition name
                ((?'GENERICMAP'
                    \s*generic\s+map                                   # ...element keyword
                )
                (?s:.*?))?                                            # whatever,
                (?'PORTMAP'
                    \s*port\s+map                                   # ...element keyword
                )
                (?s:.*?)                                            # whatever,
                \)\s*;
            "
    &gt;
        &lt;className&gt;
            &lt;nameExpr expr="\w+\s*:\s*\w+" /&gt;
        &lt;/className&gt;
        &lt;function
            mainExpr="(?&lt;=,|\()\s*\w+\s*(=&gt;\s*\w+)?(?=\s*,?)(?m-s:-{2}.*$)?"
        &gt;
            &lt;functionName&gt;
                &lt;funcNameExpr expr=".*"/&gt;
            &lt;/functionName&gt;
        &lt;/function&gt;
    &lt;/classRange&gt;
&lt;/parser&gt;
</code></pre>
]]></description><link>https://community.notepad-plus-plus.org/post/54852</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/54852</guid><dc:creator><![CDATA[el-coder-sb]]></dc:creator><pubDate>Wed, 10 Jun 2020 12:15:17 GMT</pubDate></item><item><title><![CDATA[Reply to Add VHDL to functionList.xml and interpret port map as class on Mon, 08 Jun 2020 12:36:35 GMT]]></title><description><![CDATA[<p dir="auto">Try this one:</p>
<pre><code class="language-xml">			&lt;association id="vhdl_portmap" langID="38" /&gt;

			&lt;parser
				displayName="VHDL - Port Map"
				id         ="vhdl_portmap"
				commentExpr="(?x)                                               # free-spacing (see `RegEx - Pattern Modifiers`)
						(?m-s:-{2}.*$)                                          # Single Line Comment
					"
			&gt;
				&lt;classRange
					mainExpr    ="(?x)                                          # free-spacing (see `RegEx - Pattern Modifiers`)
							(?m)                                                # ^ and $ match at line-breaks
							(?'PORTMAP'
								^                                               # header starts at beginning of a line
								\h*\w+                                          # ...instance name
								\s*:                                            # ...separator
								\s*\w+                                          # ...definition name
								\s*port\s+map                                   # ...element keyword
							)
							(?s:.*?)                                            # whatever,
							(?=                                                 # ...up till
								\s*                                             # ...optional leading white-space of
								(?:
									(?&amp;amp;PORTMAP)                             # ...next header
								|	\Z                                          # ...or end-of-text
								)
							)
						"
				&gt;
					&lt;className&gt;
						&lt;nameExpr expr="\w+\s*:\s*\w+" /&gt;
					&lt;/className&gt;
					&lt;function
						mainExpr="\w+\s*=&gt;\s*\w+(?=\s*,?)"
					&gt;
						&lt;functionName&gt;
							&lt;funcNameExpr expr=".*"/&gt;
						&lt;/functionName&gt;
					&lt;/function&gt;
				&lt;/classRange&gt;
			&lt;/parser&gt;
</code></pre>
]]></description><link>https://community.notepad-plus-plus.org/post/54787</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/54787</guid><dc:creator><![CDATA[MAPJe71]]></dc:creator><pubDate>Mon, 08 Jun 2020 12:36:35 GMT</pubDate></item><item><title><![CDATA[Reply to Add VHDL to functionList.xml and interpret port map as class on Mon, 08 Jun 2020 09:42:01 GMT]]></title><description><![CDATA[<p dir="auto">Thanks for your help. With the FAQ I found that I had some missunderstanding about the &lt;class range&gt;.<br />
I created a regex which does what I want. However if I have more than 5 “function” entries per class it splits the functionlist entries.</p>
<p dir="auto">What runs fine as I want to</p>
<pre><code>rst_controller_inst : rst_controller
port map (
	reset_in0      =&gt; reset_reset_n_ports_inv,
	clk            =&gt; clk_clk,
	reset_out      =&gt; rst_controller_reset_out_reset
);
</code></pre>
<p dir="auto">npp function list shows:</p>
<pre><code>
\+--- rst_controller_inst : rst_controller
     --- reset_in0      =&gt; reset_reset_n_ports_inv,
     --- clk            =&gt; clk_clk,
     --- reset_out      =&gt; rst_controller_reset_out_reset
</code></pre>
<p dir="auto">When I double the entries (having &gt;5 entries) it splits the “class” in 6 entries:</p>
<pre><code>\+--- rst_controller_inst : rst_controller
     --- reset_in0      =&gt; reset_reset_n_ports_inv,
\+--- rst_controller_inst : rst_controller
     --- clk            =&gt; clk_clk,
\+--- rst_controller_inst : rst_controller
     --- reset_out      =&gt; rst_controller_reset_out_reset
...
</code></pre>
<p dir="auto">Any ideas what´s wrong? Is there a hard coded maximum for “function” entries per class?</p>
<p dir="auto">I don´t think that it matters but just in case, my mainExpr is:</p>
<pre><code>&lt;classRange
		mainExpr="(\w+\s*:(?-s:.*))?\s*port\s*(map)?\s*\(+.*?\)+\s*;"
&gt;
</code></pre>
]]></description><link>https://community.notepad-plus-plus.org/post/54778</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/54778</guid><dc:creator><![CDATA[el-coder-sb]]></dc:creator><pubDate>Mon, 08 Jun 2020 09:42:01 GMT</pubDate></item><item><title><![CDATA[Reply to Add VHDL to functionList.xml and interpret port map as class on Fri, 05 Jun 2020 20:58:17 GMT]]></title><description><![CDATA[<p dir="auto">In addition this might be of help to you, it is what I found in the past and worked on:</p>
<pre><code>			&lt;!-- ======================================================== [ VHDL ] --&gt;

			&lt;!--
			|
			|		\b(?!(?-i:
			|			a(?:bs|ccess|fter|l(?:ias|l)|nd|r(?:chitecture|ray)|ssert|ttribute)
			|		|	b(?:egin|lock|ody|u(?:ffer|s))
			|		|	c(?:ase|o(?:mponent|n(?:figuration|stant)))
			|		|	d(?:isconnect|ownto)
			|		|	e(?:ls(?:e|if)|n(?:d|tity)|xit)
			|		|	f(?:ile|or|unction)
			|		|	g(?:ener(?:ate|ic)|roup|uarded)
			|		|	i(?:[fs]|mpure|n(?:ertial|out)?)
			|		|	l(?:abel|i(?:brary|nkage|teral)|oop)
			|		|	m(?:ap|od)
			|		|	n(?:and|e(?:w|xt)|o[rt]|ull)
			|		|	o(?:[fnr]|pen|thers|ut)
			|		|	p(?:ackage|o(?:rt|stponed)|roce(?:dure|ss)|ure)
			|		|	r(?:ange|e(?:cord|gister|ject|m|port|turn)|o[lr])
			|		|	s(?:e(?:lect|verity)|hared|ignal|[lr][al]|ubtype)
			|		|	t(?:hen|o|ransport|ype)
			|		|	u(?:n(?:affected|its|til)|se)
			|		|	variable
			|		|	w(?:ait|h(?:en|ile)|ith)
			|		|	xn?or
			|		)
			|
			\--&gt;
			&lt;parser
				displayName="[TODO] VHDL - VHSIC (Very High Speed Integrated Circuit) Hardware Description Language"
				id         ="vhdl_entities"
				commentExpr="(?x)                                               # free-spacing (see `RegEx - Pattern Modifiers`)
						(?m-s:-{2}.*$)                                          # Single Line Comment
					"
			&gt;
				&lt;function
					mainExpr="(?x)                                              # free-spacing (see `RegEx - Pattern Modifiers`)
							^
								\h*  \w+
								\s*  :
								\s*  (?:entity\s+)?  (?:\w+\.)?  \w+
							(?:	\s+  \w+)?
								\s+  (?:generic|port)
								\s+  map
						"
				&gt;
					&lt;functionName&gt;
						&lt;nameExpr expr="\w+" /&gt;
					&lt;/functionName&gt;
				&lt;/function&gt;
			&lt;/parser&gt;
			&lt;!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			|   https://community.notepad-plus-plus.org/topic/11554/function-list-for-vhdl
			\--&gt;
			&lt;parser
				displayName="[TODO] VHDL by Claudia Frank"
				id         ="vhdl_syntax_v1"
			&gt;
				&lt;function
					mainExpr="(?x)                                              # free-spacing (see `RegEx - Pattern Modifiers`)
							\h*
							(?:
								entity
							|	architecture
							|	component
							|	instance
								\d*
								\h*
								:
							|	(?&amp;lt;=
									name
									:
									\h+
								)
								PROCESS
							)
							\h+
							\w*
							(?=
								is
							|	\h
							|	\(
							)
						"
				&gt;
					&lt;functionName&gt;
						&lt;nameExpr expr=".+" /&gt;
					&lt;/functionName&gt;
				&lt;/function&gt;
			&lt;/parser&gt;
			&lt;!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
			|   https://community.notepad-plus-plus.org/topic/11554/function-list-for-vhdl
			\--&gt;
			&lt;parser
				displayName="[TODO] VHDL by Dirk Hoelscher"
				id         ="vhdl_syntax_v2"
			&gt;
				&lt;function
					mainExpr="(?x)                                              # free-spacing (see `RegEx - Pattern Modifiers`)
							^
							\h*
							(?:  \w+  \h*  :  \h*)?
							(?:  \w+          \h+)*
							(?: COMPONENT | PROCESS | ENTITY | ARCHITECTURE )
							\h*
							[\w(),\x20]*
							(?!
								;
							)
							$
						"
				&gt;
					&lt;functionName&gt;
						&lt;nameExpr expr="\w.*" /&gt;
					&lt;/functionName&gt;
				&lt;/function&gt;
			&lt;/parser&gt;

</code></pre>
]]></description><link>https://community.notepad-plus-plus.org/post/54718</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/54718</guid><dc:creator><![CDATA[MAPJe71]]></dc:creator><pubDate>Fri, 05 Jun 2020 20:58:17 GMT</pubDate></item><item><title><![CDATA[Reply to Add VHDL to functionList.xml and interpret port map as class on Fri, 05 Jun 2020 11:35:43 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/el-coder-sb" aria-label="Profile: el-coder-sb">@<bdi>el-coder-sb</bdi></a></p>
<p dir="auto">personally I don’t have any experience with function list but,<br />
<a class="plugin-mentions-user plugin-mentions-a" href="/user/mapje71" aria-label="Profile: MAPJe71">@<bdi>MAPJe71</bdi></a> recently <a href="https://community.notepad-plus-plus.org/topic/19480/faq-desk-function-list-basics">added a FAQ</a> which might help you in this case.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/54684</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/54684</guid><dc:creator><![CDATA[Ekopalypse]]></dc:creator><pubDate>Fri, 05 Jun 2020 11:35:43 GMT</pubDate></item></channel></rss>