<?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[Unwrap Text (Preserve Paragraphs) ― an extension for Visual Studio Code]]></title><description><![CDATA[<p dir="auto"><a href="https://www.reddit.com/r/VSCodeExtensions/comments/1vzp09x/unwrap_text_preserve_paragraphs_extension_created/" rel="nofollow ugc">https://www.reddit.com/r/VSCodeExtensions/comments/1vzp09x/unwrap_text_preserve_paragraphs_extension_created/</a></p>
<blockquote>
<p dir="auto">On various occasions I sought, but failed to find, an extension that:</p>
<ul>
<li>unwraps text (removes line endings) <strong>and</strong></li>
<li>preserves blank (empty) lines between paragraphs.</li>
</ul>
<p dir="auto">After another fruitless search today, …</p>
</blockquote>
<p dir="auto">Result:</p>
<blockquote>
<p dir="auto">I tested the extension with a selection of text that comprised three paragraphs. Success.</p>
</blockquote>
]]></description><link>https://billboard.bsd.cafe/topic/327/unwrap-text-preserve-paragraphs-an-extension-for-visual-studio-code</link><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 15:11:32 GMT</lastBuildDate><atom:link href="https://billboard.bsd.cafe/topic/327.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 27 Aug 2026 09:28:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unwrap Text (Preserve Paragraphs) ― an extension for Visual Studio Code on Fri, 28 Aug 2026 15:48:07 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/lproven%40social.vivaldi.net" aria-label="Profile: lproven@social.vivaldi.net">@<bdi>lproven@social.vivaldi.net</bdi></a> you're still missing the point.</p>
]]></description><link>https://billboard.bsd.cafe/post/984</link><guid isPermaLink="true">https://billboard.bsd.cafe/post/984</guid><dc:creator><![CDATA[grahamperrin]]></dc:creator><pubDate>Fri, 28 Aug 2026 15:48:07 GMT</pubDate></item><item><title><![CDATA[Reply to Unwrap Text (Preserve Paragraphs) ― an extension for Visual Studio Code on Fri, 28 Aug 2026 13:43:16 GMT]]></title><description><![CDATA[<p><span><a href="/user/grahamperrin">@<span>grahamperrin</span></a></span> Oh come off it. You could just record a macro, and do this in about 1kB.</p>]]></description><link>https://billboard.bsd.cafe/post/https://social.vivaldi.net/users/lproven/statuses/117173426327273636</link><guid isPermaLink="true">https://billboard.bsd.cafe/post/https://social.vivaldi.net/users/lproven/statuses/117173426327273636</guid><dc:creator><![CDATA[lproven@social.vivaldi.net]]></dc:creator><pubDate>Fri, 28 Aug 2026 13:43:16 GMT</pubDate></item><item><title><![CDATA[Reply to Unwrap Text (Preserve Paragraphs) ― an extension for Visual Studio Code on Fri, 28 Aug 2026 01:43:06 GMT]]></title><description><![CDATA[<p dir="auto">grahamperrin <a href="/post/969">said</a>:</p>
<blockquote>
<p dir="auto">A <strong>single step</strong> … instead of multiple steps.</p>
</blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/lproven%40social.vivaldi.net" aria-label="Profile: lproven@social.vivaldi.net">@<bdi>lproven@social.vivaldi.net</bdi></a> <a href="/post/https%3A%2F%2Fsocial.vivaldi.net%2Fusers%2Flproven%2Fstatuses%2F117167545021150609">said</a>:</p>
<blockquote>
<p dir="auto">… and repeat until …</p>
</blockquote>
<p dir="auto">Repetition is not a single step.</p>
]]></description><link>https://billboard.bsd.cafe/post/974</link><guid isPermaLink="true">https://billboard.bsd.cafe/post/974</guid><dc:creator><![CDATA[grahamperrin]]></dc:creator><pubDate>Fri, 28 Aug 2026 01:43:06 GMT</pubDate></item><item><title><![CDATA[Reply to Unwrap Text (Preserve Paragraphs) ― an extension for Visual Studio Code on Thu, 27 Aug 2026 12:47:34 GMT]]></title><description><![CDATA[<p><span><a href="/user/grahamperrin">@<span>grahamperrin</span></a></span> </p><p>Honestly I never knew this was something so hard that anyone wouldn't be able to just... work it out. Sorry.</p><p>There are import tools in a number of word processors that can do things like it. I don't know what you searched for, or how you searched, but I'd think this was a very FA sort of Q.</p><p>The FOSS fundies will not like me saying this, but I find MS Word one of the very best tools for search-and-replace operations like this.</p><p>It has magic character combinations. The only ones I usually use, I memorised decades ago:</p><p>^p = newline<br />^t  = tab<br />Space is just a space... so to remove extra spaces, in the "Search for" box, enter 2 spaces, and in the "Replace with" box, one. Then hit "Replace all", and repeat until it says there were no matches.</p>]]></description><link>https://billboard.bsd.cafe/post/https://social.vivaldi.net/users/lproven/statuses/117167545021150609</link><guid isPermaLink="true">https://billboard.bsd.cafe/post/https://social.vivaldi.net/users/lproven/statuses/117167545021150609</guid><dc:creator><![CDATA[lproven@social.vivaldi.net]]></dc:creator><pubDate>Thu, 27 Aug 2026 12:47:34 GMT</pubDate></item><item><title><![CDATA[Reply to Unwrap Text (Preserve Paragraphs) ― an extension for Visual Studio Code on Thu, 27 Aug 2026 12:28:26 GMT]]></title><description><![CDATA[<p dir="auto">My favourite editor last century was <a href="https://www.barebones.com/products/textwrangler/" rel="nofollow ugc">TextWrangler, which became BBEdit</a>.</p>
<p dir="auto"><a href="https://www.barebones.com/products/bbedit/featurestext.html" rel="nofollow ugc">BBEdit's Text Handling Features | Bare Bones Software</a></p>
<p dir="auto">Then, I abandoned Mac OS X, and I never found an comparable editor that did what I wanted out of the box (or with an extension).</p>
<p dir="auto">Now, eleven years later, I'm happy.</p>
]]></description><link>https://billboard.bsd.cafe/post/972</link><guid isPermaLink="true">https://billboard.bsd.cafe/post/972</guid><dc:creator><![CDATA[grahamperrin]]></dc:creator><pubDate>Thu, 27 Aug 2026 12:28:26 GMT</pubDate></item><item><title><![CDATA[Reply to Unwrap Text (Preserve Paragraphs) ― an extension for Visual Studio Code on Thu, 27 Aug 2026 11:24:11 GMT]]></title><description><![CDATA[<p><span><a href="/user/grahamperrin">@<span>grahamperrin</span></a></span> </p><p>&gt; I only have one of those</p><p>Yeah, IIRC fmt(1) tends to be more broadly available while par(1) takes some of those ideas and makes them more powerful¹ (handling quoted email text, adjusting/not-adjusting spacing after periods, and a bunch of other knobs you can twiddle) at the cost of complex options.</p><p>I just set my $PARINIT env variable (snagged from around the web to handle inter-sentence-spacing the way I want) and invoke it as "par" without needing to provide additional details.</p><p>And both work fine from any $EDITOR that allows for passing a region of text through an external process. It looks like nano has an "execute" command² that, if the first character is a pipe, will replace the buffer/region with the results, so not just vi/vim or emacs. <img src="https://billboard.bsd.cafe/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=11028b321f5" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title="🙂" alt="🙂" /> </p><p>⸻<br />¹ <a href="https://manpages.org/par" rel="nofollow noopener"><span>https://</span><span>manpages.org/par</span><span></span></a><br />² <a href="https://www.nano-editor.org/dist/latest/nano.html" rel="nofollow noopener"><span>https://www.</span><span>nano-editor.org/dist/latest/na</span><span>no.html</span></a> bound to ^T by default</p>]]></description><link>https://billboard.bsd.cafe/post/https://mastodon.bsd.cafe/users/gumnos/statuses/117167201564534327</link><guid isPermaLink="true">https://billboard.bsd.cafe/post/https://mastodon.bsd.cafe/users/gumnos/statuses/117167201564534327</guid><dc:creator><![CDATA[gumnos@mastodon.bsd.cafe]]></dc:creator><pubDate>Thu, 27 Aug 2026 11:24:11 GMT</pubDate></item><item><title><![CDATA[Reply to Unwrap Text (Preserve Paragraphs) ― an extension for Visual Studio Code on Thu, 27 Aug 2026 10:58:39 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/gumnos%40mastodon.bsd.cafe" aria-label="Profile: gumnos@mastodon.bsd.cafe">@<bdi>gumnos@mastodon.bsd.cafe</bdi></a> <a href="/post/https%3A%2F%2Fmastodon.bsd.cafe%2Fusers%2Fgumnos%2Fstatuses%2F117166982631584123">said</a>:</p>
<blockquote>
<p dir="auto">… fmt(1) or par(1)</p>
</blockquote>
<p dir="auto">I have only one of those:</p>
<pre><code class="language-text">grahamperrin@mowa219-gjp4 ~&gt; man fmt
grahamperrin@mowa219-gjp4 ~&gt; man par
No manual entry for par
grahamperrin@mowa219-gjp4 ~ [16]&gt; par
Command 'par' not found, but can be installed with:
sudo apt install par
grahamperrin@mowa219-gjp4 ~ [127]&gt; 
</code></pre>
<p dir="auto"><a href="https://manpages.ubuntu.com/manpages/resolute/man1/fmt.1.html" rel="nofollow ugc">Ubuntu Manpage: fmt - Reformat paragraphs from input (or standard input) to stdout.</a></p>
<p dir="auto">– that's too complicated for me.</p>
<blockquote>
<p dir="auto">… Vim's …</p>
</blockquote>
<p dir="auto">I was a vocal <strong>hater</strong> of <a href="https://man.freebsd.org/cgi/man.cgi?query=vi&amp;sektion=1&amp;manpath=freebsd-current" rel="nofollow ugc">vi(1)</a> before I switched from FreeBSD to Kubuntu.</p>
<p dir="auto">Ubuntu includes <a href="https://manpages.ubuntu.com/manpages/resolute/man1/nano.1.html" rel="nofollow ugc">nano</a>, which was my preferred text editor on FreeBSD (<a href="https://www.freshports.org/editors/nano/" rel="nofollow ugc">editors/nano</a> is GPLv3, so we can't expect the Project to include it with the base system).</p>
<p dir="auto">Frustration with <code>vi</code> is not an isolated incident:</p>
<ul>
<li><a href="https://www.reddit.com/r/AlpineLinux/comments/17xvgsu/how_do_i_leave_this_fucking_editor/" rel="nofollow ugc">How do I leave this fucking editor? : r/AlpineLinux</a></li>
</ul>
<p dir="auto">I ran <code>vim</code> for the first time in Kubuntu, then escaped. Naturally, my first run will be my last <img src="https://billboard.bsd.cafe/assets/plugins/nodebb-plugin-emoji/emoji/android/1f606.png?v=11028b321f5" class="not-responsive emoji emoji-android emoji--laughing" style="height:23px;width:auto;vertical-align:middle" title="😆" alt="😆" /></p>
]]></description><link>https://billboard.bsd.cafe/post/970</link><guid isPermaLink="true">https://billboard.bsd.cafe/post/970</guid><dc:creator><![CDATA[grahamperrin]]></dc:creator><pubDate>Thu, 27 Aug 2026 10:58:39 GMT</pubDate></item><item><title><![CDATA[Reply to Unwrap Text (Preserve Paragraphs) ― an extension for Visual Studio Code on Thu, 27 Aug 2026 10:41:06 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/lproven%40social.vivaldi.net" aria-label="Profile: lproven@social.vivaldi.net">@<bdi>lproven@social.vivaldi.net</bdi></a> <a href="/post/https%3A%2F%2Fsocial.vivaldi.net%2Fusers%2Flproven%2Fstatuses%2F117166812043454214">said</a>:</p>
<blockquote>
<p dir="auto">End.</p>
</blockquote>
<p dir="auto">Additional background, for readers who might not read the chat.</p>
<ol>
<li>Numerous fruitless searches over a period of many months</li>
<li>today I used Zotero on Kubuntu to make an addition to the <strong>FreeBSD</strong> collection in my shared library</li>
<li>for an abstract, I copied three paragraphs from Firefox, the result was messy</li>
<li>in VSCode, for the umpteenth time, I was frustrated by the inability to get what I want with a single step</li>
<li>more searches</li>
<li>I experimented with an extension that lacked the required feature – IIRC its description was misleading</li>
<li>I uninstalled the extension</li>
<li>more searches</li>
<li>I experimented with a different extension that did only part of what I want</li>
<li>more searches</li>
<li>thanks to Claude, which created what neither I nor Claude could find in the marketplace, I gained what was required</li>
<li>I used the new extension in VSCode</li>
<li><a href="https://www.zotero.org/groups/608/fuzzy/collections/IIG5YVX5/items/8RQDJ32G/collection" rel="nofollow ugc">the result (the abstract in Zotero) is not messy</a></li>
<li>I'm no longer frustrated.</li>
</ol>
<p dir="auto">The end? Hopefully not.</p>
<p dir="auto">Someone else might benefit, might be less frustrated, as a result of the <strong>streamlining</strong>.</p>
<p dir="auto">A <strong>single step</strong> (using the new extension), instead of multiple steps.</p>
]]></description><link>https://billboard.bsd.cafe/post/969</link><guid isPermaLink="true">https://billboard.bsd.cafe/post/969</guid><dc:creator><![CDATA[grahamperrin]]></dc:creator><pubDate>Thu, 27 Aug 2026 10:41:06 GMT</pubDate></item><item><title><![CDATA[Reply to Unwrap Text (Preserve Paragraphs) ― an extension for Visual Studio Code on Thu, 27 Aug 2026 10:24:33 GMT]]></title><description><![CDATA[<p><span><a href="/user/grahamperrin">@<span>grahamperrin</span></a></span> </p><p>so recreating fmt(1) or par(1) as a VSCode plugin? <img src="https://billboard.bsd.cafe/assets/plugins/nodebb-plugin-emoji/emoji/android/1f606.png?v=11028b321f5" class="not-responsive emoji emoji-android emoji--laughing" style="height:23px;width:auto;vertical-align:middle" title="😆" alt="😆" /></p><p>(or Vim's gq command?)</p>]]></description><link>https://billboard.bsd.cafe/post/https://mastodon.bsd.cafe/users/gumnos/statuses/117166982631584123</link><guid isPermaLink="true">https://billboard.bsd.cafe/post/https://mastodon.bsd.cafe/users/gumnos/statuses/117166982631584123</guid><dc:creator><![CDATA[gumnos@mastodon.bsd.cafe]]></dc:creator><pubDate>Thu, 27 Aug 2026 10:24:33 GMT</pubDate></item><item><title><![CDATA[Reply to Unwrap Text (Preserve Paragraphs) ― an extension for Visual Studio Code on Thu, 27 Aug 2026 09:41:10 GMT]]></title><description><![CDATA[<p><span><a href="/user/grahamperrin">@<span>grahamperrin</span></a></span> </p><p>Step 0: check your document does not contain the word "aardvark"</p><p>Step 1: replace 2 [newline]s in a row with "aardvark"</p><p>Step 2: replace [newline] with [space]</p><p>Step 3: replace [two spaces] with [1 space]</p><p>Repeat step 3 until no matches are found.</p><p>Step 4: replace "aarvark" with 2 [newline]s</p><p>End.</p>]]></description><link>https://billboard.bsd.cafe/post/https://social.vivaldi.net/users/lproven/statuses/117166812043454214</link><guid isPermaLink="true">https://billboard.bsd.cafe/post/https://social.vivaldi.net/users/lproven/statuses/117166812043454214</guid><dc:creator><![CDATA[lproven@social.vivaldi.net]]></dc:creator><pubDate>Thu, 27 Aug 2026 09:41:10 GMT</pubDate></item></channel></rss>