<?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[Display markdown outline view through Functionlist]]></title><description><![CDATA[<p dir="auto">functionList.xml:</p>
<pre><code class="language-XML">&lt;associationMap&gt;
      &lt;association id=  "Markdown(Monokai)"     userDefinedLangName="Markdown(Monokai)" /&gt;
      &lt;association id=  "Markdown(Monokai)"     ext=".md"                               /&gt;
      &lt;association id=  "Markdown(Monokai)"     ext=".markdown"                         /&gt;
&lt;/associationMap&gt;
&lt;parsers&gt;
      &lt;parser
        displayName="Markdown(Monokai)"
        id         ="Markdown(Monokai)"
        commentExpr=""
      &gt;
        &lt;function
          mainExpr="(?x)((?:^|\n)[#]+\s+(.*?)(\r*|\n*)$)
                       |((?:^|\n)[-]{3,}\s*(\r*|\n*)$)"
        /&gt;
      &lt;/parser&gt;
&lt;/parsers&gt;
</code></pre>
]]></description><link>https://community.notepad-plus-plus.org/topic/18458/display-markdown-outline-view-through-functionlist</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 23:16:33 GMT</lastBuildDate><atom:link href="https://community.notepad-plus-plus.org/topic/18458.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 02 Nov 2019 14:18:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Display markdown outline view through Functionlist on Thu, 04 Sep 2025 13:58:13 GMT]]></title><description><![CDATA[<p dir="auto">New try: Now it works, like you described it. Seems I set it up wrong!</p>
]]></description><link>https://community.notepad-plus-plus.org/post/103141</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/103141</guid><dc:creator><![CDATA[amr66]]></dc:creator><pubDate>Thu, 04 Sep 2025 13:58:13 GMT</pubDate></item><item><title><![CDATA[Reply to Display markdown outline view through Functionlist on Thu, 22 May 2025 16:46:46 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> I like your solution. Unfortunately I get all comment lines from my (python) code fences into the function list. I tried some things without success, it seems that my skills in regex are limited.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/101728</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/101728</guid><dc:creator><![CDATA[amr66]]></dc:creator><pubDate>Thu, 22 May 2025 16:46:46 GMT</pubDate></item><item><title><![CDATA[Reply to Display markdown outline view through Functionlist on Sun, 05 Jan 2025 00:22:04 GMT]]></title><description><![CDATA[<p dir="auto">@Dan-Ignat-0 ,</p>
<p dir="auto">For non-programming langauges, like Markdown, there’s probably less concensus among users as whether “headers” or something else is the most likely “function” to include, which is probably why the developer hasn’t included such.  But asking the developer (follow our <a href="/topic/15741">Feature Request / Bug FAQ</a>) to include the FunctionList would be reasonable at this stage (though someone would likely have to create the unitTest for him as well, otherwise he might not include it on his own).</p>
]]></description><link>https://community.notepad-plus-plus.org/post/98975</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/98975</guid><dc:creator><![CDATA[PeterJones]]></dc:creator><pubDate>Sun, 05 Jan 2025 00:22:04 GMT</pubDate></item><item><title><![CDATA[Reply to Display markdown outline view through Functionlist on Sat, 04 Jan 2025 23:56:15 GMT]]></title><description><![CDATA[<p dir="auto">As an aside, Notepad++ really should start including all of this in a <em>markdown_preinstalled.xml</em> and associated by default in the <em>overrideMap.xml</em> that it ships with.  To ship a product with a “Markdown (preinstalled)” UDL, but not include the Function List functionality for basic navigation seems like an incomplete feature.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/98973</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/98973</guid><dc:creator><![CDATA[Theodan23]]></dc:creator><pubDate>Sat, 04 Jan 2025 23:56:15 GMT</pubDate></item><item><title><![CDATA[Reply to Display markdown outline view through Functionlist on Sat, 04 Jan 2025 23:46:43 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ernesto-saavedra" aria-label="Profile: Ernesto-Saavedra">@<bdi>Ernesto-Saavedra</bdi></a> said in <a href="/post/67876">Display markdown outline view through Functionlist</a>:</p>
<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/mapje71" aria-label="Profile: MAPJe71">@<bdi>MAPJe71</bdi></a> The parser works nicely. However indentation is lost (Subtitles, Subsubtitles, … are listed at the same level). Is there somehow a way to replace the ‘#’ with a empty space or ‘_’ but only for the visualization in the function list?<br />
Best regards and thanks for contributing and sharing</p>
</blockquote>
<p dir="auto">I found a way to prevent the indentation from being lost in <a class="plugin-mentions-user plugin-mentions-a" href="/user/mapje71" aria-label="Profile: MAPJe71">@<bdi>MAPJe71</bdi></a> 's parser (which I prefer to the others, as it seems more complete).</p>
<p dir="auto">Whatever the <code>&lt;function&gt;</code> block matches gets passed to the <code>&lt;functionName&gt;</code> block, so our problem is that the <code>&lt;function&gt;</code> block is discarding the hashes due to the two <code>\K</code> lines.  So I removed them, and pulled them up to a common point, where it should no longer discard the hashes:</p>
<pre><code>			&lt;!-- ======================================================== [ Markdown ] --&gt;

			&lt;!--
			|   Based on:
			|       https://github.com/notepad-plus-plus/notepad-plus-plus/issues/5945
			\--&gt;
			&lt;parser
				displayName="[TODO] Markdown"
				id         ="markdown_header"
				commentExpr="(?x)                                               # free-spacing (see `RegEx - Pattern Modifiers`)
						(?ms:                                                   # Code block
							^                                                   # ...at start-of-line a
							(?'BLOCK'\x7E{3}(?!\x7E)|\x60{3}(?!\x60))           #    block-start indicator
							\w*\h*$                                             #
							.*?                                                 # ...whatever,
							^\x20{0,3}                                          # ...optional indentation for a
							\k'BLOCK'                                           #    block-end indicator
							\h*$                                                #    with trailing white-space only
						)
					"
			&gt;
				&lt;function
					mainExpr="(?x)                                              # free-spacing (see `RegEx - Pattern Modifiers`)
							(?m-s)                                              # ^ and $ match at line-breaks, dot does not
							^                                                   # at start-of-line
							(?'NOCODE_INDENT'
								\x20{0,3}(?!\x20)                               # indent of 3 spaces max, otherwise it's code
							)
							\K                                                  # discard text matched so far
							(?:                                                 # ATX-style heading
								(?'LEVEL'\x23{1,6}(?!\x23))                     # nr. of hashes indicate level
								\h+                                             # at least one white-space
								(?:
									[^\r\n\x5C]
								|
									\x5C.                                       # backslash escape sequence
								)+
								(?:                                             # closing sequence
									\h+                                         # ...starts w/ at least one white-space
									\x23+                                       # ...contains only hashes, amount arbitrary
								)?                                              # ...is optional
								\h*$                                            # trailing white-space up till line-break
							|                                                   # Setext-style heading
								[^\r\n]+                                        # whatever,
								(?=                                             # ...up till
									\h*(?:\r?\n|\n?\r)                          # ...any trailing white-space and a line-break,
									(?&amp;amp;NOCODE_INDENT)                       # ...indent for header indicator
									(?:={3,}|-{3,})                             # ...H1- or H2-header indicator resp.,
									\h*$                                        # ...trailing white-space up till line-break
								)
							)
						"
				&gt;
					&lt;functionName&gt;
						&lt;nameExpr expr="(?x)
								(?|
									(?:\h+\x23+\h*$)
									[^\r\n]+
									(?=
										\h+\x23
									)
								|
									.*
								)
							"
						/&gt;
					&lt;/functionName&gt;
				&lt;/function&gt;
			&lt;/parser&gt;
</code></pre>
<p dir="auto">Now the hashes show up for me in the Function List, and show the level of the heading.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/98970</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/98970</guid><dc:creator><![CDATA[Theodan23]]></dc:creator><pubDate>Sat, 04 Jan 2025 23:46:43 GMT</pubDate></item><item><title><![CDATA[Reply to Display markdown outline view through Functionlist on Wed, 14 Jul 2021 13:52:55 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ernesto-saavedra" aria-label="Profile: Ernesto-Saavedra">@<bdi>Ernesto-Saavedra</bdi></a> said in <a href="/post/67876">Display markdown outline view through Functionlist</a>:</p>
<blockquote>
<p dir="auto">Is there somehow a way to replace</p>
</blockquote>
<p dir="auto">Sorry, the functionList processing is a match-search, not a search-and-replace.</p>
<p dir="auto">You can make a single-level hierarchy by doing a “class” vs “function” in the definition, as described in the <a href="https://npp-user-manual.org/docs/function-list/" rel="nofollow ugc">function list overview</a> and <a href="https://npp-user-manual.org/docs/config-files/#function-list" rel="nofollow ugc">function list config files</a> documentation, or in <a class="plugin-mentions-user plugin-mentions-a" href="/user/mapje71" aria-label="Profile: MAPJe71">@<bdi>MAPJe71</bdi></a>’s <a href="/topic/19480">FAQ Desk: Function List Basics</a> entry.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/67887</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/67887</guid><dc:creator><![CDATA[PeterJones]]></dc:creator><pubDate>Wed, 14 Jul 2021 13:52:55 GMT</pubDate></item><item><title><![CDATA[Reply to Display markdown outline view through Functionlist on Wed, 14 Jul 2021 10:38:53 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> The parser works nicely. However indentation is lost (Subtitles, Subsubtitles, … are listed at the same level). Is there somehow a way to replace the ‘#’ with a empty space or ‘_’ but only for the visualization in the function list?<br />
Best regards and thanks for contributing and sharing</p>
]]></description><link>https://community.notepad-plus-plus.org/post/67876</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/67876</guid><dc:creator><![CDATA[Ernesto Saavedra]]></dc:creator><pubDate>Wed, 14 Jul 2021 10:38:53 GMT</pubDate></item><item><title><![CDATA[Reply to Display markdown outline view through Functionlist on Tue, 05 Nov 2019 01:12:32 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/linpengcheng" aria-label="Profile: linpengcheng">@<bdi>linpengcheng</bdi></a> said in <a href="/post/48268">Display markdown outline view through Functionlist</a>:</p>
<blockquote>
<p dir="auto">(?:^|\n)[-]{3,}\s*(\r*|\n*)$</p>
</blockquote>
<p dir="auto">This paragraph is used to write <code>Marp-markdown-Slide</code>, I use <code>marp-cli</code> to generate Slide.</p>
<p dir="auto"><a href="https://marp.app/" rel="nofollow ugc">Marp home</a></p>
<p dir="auto"><a href="https://github.com/marp-team" rel="nofollow ugc">Marp github</a></p>
]]></description><link>https://community.notepad-plus-plus.org/post/48315</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/48315</guid><dc:creator><![CDATA[linpengcheng]]></dc:creator><pubDate>Tue, 05 Nov 2019 01:12:32 GMT</pubDate></item><item><title><![CDATA[Reply to Display markdown outline view through Functionlist on Mon, 04 Nov 2019 22:04:25 GMT]]></title><description><![CDATA[<p dir="auto">Or try this one:</p>
<pre><code class="language-xml">			&lt;!-- ======================================================== [ Markdown ] --&gt;

			&lt;!--
			|   Based on:
			|       https://github.com/notepad-plus-plus/notepad-plus-plus/issues/5945
			\--&gt;
			&lt;parser
				displayName="[TODO] Markdown"
				id         ="markdown_header"
				commentExpr="(?x)                                               # free-spacing (see `RegEx - Pattern Modifiers`)
						(?ms:                                                   # Code block
							^                                                   # ...at start-of-line a
							(?'BLOCK'\x7E{3}(?!\x7E)|\x60{3}(?!\x60))           #    block-start indicator
							\w*\h*$                                             #
							.*?                                                 # ...whatever,
							^\x20{0,3}                                          # ...optional indentation for a
							\k'BLOCK'                                           #    block-end indicator
							\h*$                                                #    with trailing white-space only
						)
					"
			&gt;
				&lt;function
					mainExpr="(?x)                                              # free-spacing (see `RegEx - Pattern Modifiers`)
							(?m-s)                                              # ^ and $ match at line-breaks, dot does not
							^                                                   # at start-of-line
							(?'NOCODE_INDENT'
								\x20{0,3}(?!\x20)                               # indent of 3 spaces max, otherwise it's code
							)
							(?:                                                 # ATX-style heading
								(?'LEVEL'\x23{1,6}(?!\x23))                     # nr. of hashes indicate level
								\h+                                             # at least one white-space
								\K                                              # discard text matched so far
								(?:
									[^\r\n\x5C]
								|	\x5C.                                       # backslash escape sequence
								)+
								(?:                                             # closing sequence
									\h+                                         # ...starts w/ at least one white-space
									\x23+                                       # ...contains only hashes, amount arbitrary
								)?                                              # ...is optional
								\h*$                                            # trailing white-space up till line-break
							|                                                   # Setext-style heading
								\K                                              # discard text matched so far
								[^\r\n]+                                        # whatever,
								(?=                                             # ...up till
									\h*(?:\r?\n|\n?\r)                          # ...any trailing white-space and a line-break,
									(?&amp;amp;NOCODE_INDENT)                       # ...indent for header indicator
									(?:={3,}|-{3,})                             # ...H1- or H2-header indicator resp.,
									\h*$                                        # ...trailing white-space up till line-break
								)
							)
						"
				&gt;
					&lt;functionName&gt;
						&lt;nameExpr expr="(?x)
								(?|
									(?:\h+\x23+\h*$)
									[^\r\n]+
									(?=
										\h+\x23
									)
								|	.*
								)
							"
						/&gt;
					&lt;/functionName&gt;
				&lt;/function&gt;
			&lt;/parser&gt;
</code></pre>
]]></description><link>https://community.notepad-plus-plus.org/post/48314</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/48314</guid><dc:creator><![CDATA[MAPJe71]]></dc:creator><pubDate>Mon, 04 Nov 2019 22:04:25 GMT</pubDate></item><item><title><![CDATA[Reply to Display markdown outline view through Functionlist on Mon, 04 Nov 2019 16:30:04 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/michael-vincent" aria-label="Profile: Michael-Vincent">@<bdi>Michael-Vincent</bdi></a> said:</p>
<blockquote>
<p dir="auto">it would highlhght the line above</p>
</blockquote>
<p dir="auto">True.</p>
<p dir="auto">But the original was intended to catch the <a href="https://daringfireball.net/projects/markdown/syntax#header" rel="nofollow ugc">daring-fireball-style header-above-<code>----</code>-or-<code>====</code></a>, which yours didn’t catch.</p>
<p dir="auto">I combined both philosophies:</p>
<pre><code>    &lt;function
        mainExpr="(?x-s)(^[#]+\s*(.*?)$|^(.*)(?=[\r\n]+^([-=])\4{2,}\s*$))"
    /&gt;
</code></pre>
<pre><code># H1
Text
## H2
Blah
### H3
here
### H3.2
yo
## H2.2
something
# H1
heheheh

DaringFireballUnderline- Indicated Header Too
-----
DaringFireballUnderline= Indicated Header Too
===
Not sure that mixed =-=- should be header
=-=-=
Normal text
# END
</code></pre>
<p dir="auto">This version catches either style, doesn’t require a space after the <code>#</code> for the header (I’ve seen some markdowns that don’t require that space); for the underline style, I made the executive decision that it only counts if it’s all-hyphen or all-equal, so mixed-hyphen-equal will not trigger the header recognition</p>
<p dir="auto"><img src="/assets/uploads/files/1572884647354-5cc7b6a4-3455-4ebc-aea4-bf4eeb410f06-image.png" alt="5cc7b6a4-3455-4ebc-aea4-bf4eeb410f06-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">This could be endlessly tweaked for everyone’s markdown-interpreting preferences. :-)</p>
]]></description><link>https://community.notepad-plus-plus.org/post/48309</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/48309</guid><dc:creator><![CDATA[PeterJones]]></dc:creator><pubDate>Mon, 04 Nov 2019 16:30:04 GMT</pubDate></item><item><title><![CDATA[Reply to Display markdown outline view through Functionlist on Mon, 04 Nov 2019 15:58:54 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/linpengcheng" aria-label="Profile: linpengcheng">@<bdi>linpengcheng</bdi></a></p>
<p dir="auto">Awesome - thanks!</p>
<p dir="auto">Didn’t work exactly like I wanted - it would highlight the line above the heading so I did a slight modification:</p>
<pre><code>            &lt;parser
                displayName="Markdown"
                id         ="Markdown"
                commentExpr=""
            &gt;
                &lt;function
                    mainExpr="(?x)((?:^|\n)[#]+\s+(.*?)(\r*|\n*)$)"&gt;
                    &lt;functionName&gt;
                        &lt;nameExpr expr="(?:[#]+\s+)(.*)"/&gt;
                    &lt;/functionName&gt;
                &lt;/function&gt;
            &lt;/parser&gt;
</code></pre>
<p dir="auto">Cheers.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/48308</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/48308</guid><dc:creator><![CDATA[Michael Vincent]]></dc:creator><pubDate>Mon, 04 Nov 2019 15:58:54 GMT</pubDate></item><item><title><![CDATA[Reply to Display markdown outline view through Functionlist on Mon, 04 Nov 2019 13:23:42 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/48277">Display markdown outline view through Functionlist</a>:</p>
<blockquote>
<p dir="auto">I think sharing hacks, tips, and tricks is a great thing to have in this forum, which is why I upvoted it.</p>
</blockquote>
<p dir="auto">I agree with that.  However, if you’re going to share something, at least put a little effort into describing what it means and how to use it.  Clearly from my earlier comment, I at least had no idea…</p>
]]></description><link>https://community.notepad-plus-plus.org/post/48305</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/48305</guid><dc:creator><![CDATA[Alan Kilborn]]></dc:creator><pubDate>Mon, 04 Nov 2019 13:23:42 GMT</pubDate></item><item><title><![CDATA[Reply to Display markdown outline view through Functionlist on Sun, 03 Nov 2019 00:16:30 GMT]]></title><description><![CDATA[<p dir="auto">See also <a href="https://github.com/notepad-plus-plus/notepad-plus-plus/issues/5986" rel="nofollow ugc">issue 5986</a> and <a href="https://github.com/notepad-plus-plus/notepad-plus-plus/issues/5945" rel="nofollow ugc">issue 5945</a>.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/48278</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/48278</guid><dc:creator><![CDATA[MAPJe71]]></dc:creator><pubDate>Sun, 03 Nov 2019 00:16:30 GMT</pubDate></item><item><title><![CDATA[Reply to Display markdown outline view through Functionlist on Sat, 02 Nov 2019 22:41:56 GMT]]></title><description><![CDATA[<p dir="auto">I interpreted it as someone sharing a hack / tip / trick to be able to use the FunctionList feature to give an outline of a markdown document.  I didn’t try it (yet), but I think sharing hacks, tips, and tricks is a great thing to have in this forum, which is why I upvoted it.</p>
<p dir="auto">It should be noted that users will need to use their association ID for markdown, if their Markdown UDL doesn’t happen to be called <code>Markdown(Monokai)</code>.  If you use the default Markdown UDL that ships with Notepad++, it’s <code>Markdown (Default)</code>.</p>
<p dir="auto">I just confirmed that replacing <code>Markdown(Monokai)</code> with <code>Markdown (Default)</code>, and doing a simple markdown file, worked as expected:</p>
<p dir="auto"><img src="/assets/uploads/files/1572734505388-c3ef918a-214c-4ac0-b1cc-d781e742d855-image.png" alt="c3ef918a-214c-4ac0-b1cc-d781e742d855-image.png" class=" img-fluid img-markdown" /></p>
]]></description><link>https://community.notepad-plus-plus.org/post/48277</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/48277</guid><dc:creator><![CDATA[PeterJones]]></dc:creator><pubDate>Sat, 02 Nov 2019 22:41:56 GMT</pubDate></item><item><title><![CDATA[Reply to Display markdown outline view through Functionlist on Sat, 02 Nov 2019 21:31:51 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/linpengcheng" aria-label="Profile: linpengcheng">@<bdi>linpengcheng</bdi></a></p>
<p dir="auto">Is there a question lurking somewhere there??</p>
]]></description><link>https://community.notepad-plus-plus.org/post/48276</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/48276</guid><dc:creator><![CDATA[Alan Kilborn]]></dc:creator><pubDate>Sat, 02 Nov 2019 21:31:51 GMT</pubDate></item></channel></rss>